ETH Price: $3,047.98 (+4.49%)

Token

eobo (EOBO)
 

Overview

Max Total Supply

1,000,000,000 EOBO

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,451,954.972197712379819497 EOBO

Value
$0.00
0xDD12822361790b6584Cb03EdAa11B02Ed4622dDC
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
EOBO

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-23
*/

/**
 *EARN ONE, BURN ONE
*/

// SPDX-License-Identifier: MIT
/**
—
**/
pragma solidity >=0.8.7;

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

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

abstract contract Ownable is Context {
    address private _owner;
    address private creator;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    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);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

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

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            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;
        }
    }
}

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

contract EOBO is ERC20, Ownable {
    event SwapBackSuccess(
        uint256 tokenAmount,
        uint256 ethAmountReceived,
        bool success
    );
    bool private swapping;

    address public teamWallet=0x4a13E94d7fd25d94462039f7d8918c09b8E35E66;//ADD Team Wallet FWD

    uint256 _totalSupply = 100_000_000 * 1e19; // 
    uint256 _lp = (_totalSupply* 370)/1000; // 

    uint256 public maxTransactionAmount = (_totalSupply * 10) / 1000; // 1% from total supply maxTransactionAmountTxn;
    uint256 public swapTokensAtAmount = (_totalSupply * 5) / 100000; // 0.005% swap tokens at this amount. (10_000_000 * 10) / 10000 = 0.1%(10000 tokens) of the total supply
    uint256 public maxWallet = (_totalSupply * 10) / 1000; // 1% from total supply maxWallet

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

    uint256 public buyFees = 400; //init 40% buy tax
    uint256 public sellFees = 990; //init 99% sell tax
    uint256 public launchBlock;

    using SafeMath for uint256;

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

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    //blacklist bots
    mapping(address => bool) private blacklists;

    constructor() ERC20("eobo", "EOBO") {
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, true);
        excludeFromFees(address(teamWallet), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(teamWallet), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, true);
        
        _mint(address(this), _lp);
        _mint(owner(),(_totalSupply-_lp));

    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchBlock = block.number;
    }

    // remove limits after token is stable (sets sell fees to 5%)
    function removeLimits(uint256 s,uint256 b) external onlyOwner returns (bool) {
        limitsInEffect = false;
        sellFees = s;
        buyFees = b;
        return true;
    }

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

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

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

    function addLiquidity() external payable onlyOwner {
        // approve token transfer to cover all possible scenarios
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        _approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
        // add the liquidity
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this), //token address
            balanceOf(address(this)), // liquidity amount
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(), // LP tokens are sent to the owner
            block.timestamp
        );
        limitsInEffect=true;
    }

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

    function updateFeeWallet(
        address devWallet_
    ) public onlyOwner {
        teamWallet = devWallet_;

    }

    function updateMaxTransaction(uint amount) external onlyOwner{
        maxTransactionAmount = amount;
    }

    function updateSwapTokenTreshold(uint amount) external onlyOwner{
        swapTokensAtAmount = amount;
    }

    function updateMaxWallet(uint amount) external onlyOwner{
        maxWallet = amount;
    }

    function updateLimits(bool value) external onlyOwner{
        limitsInEffect = value;
    }


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

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

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

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

                //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 && //if this is true
            !swapping && //if this is false
            !automatedMarketMakerPairs[from] && //if this is false
            !_isExcludedFromFees[from] && //if this is false
            !_isExcludedFromFees[to] //if this is false
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellFees > 0) {
                fees = amount.mul(sellFees).div(1000);
            }
            // on buy
                      
            else if (automatedMarketMakerPairs[from] && buyFees > 0) {
                // DEAD BLOCKS
                if (block.number - launchBlock == 0){
                    fees = amount.mul(900).div(1000);
                } else if (block.number - launchBlock <= 3) {
                    fees = amount.mul(690).div(1000);
                } else {
                    fees = amount.mul(buyFees).div(1000);
                }
            }

            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));
    
        if (contractBalance == 0) {
            return;
        }
        if (contractBalance >= swapTokensAtAmount) {
            uint256 amountToSwapForETH = swapTokensAtAmount;
            swapTokensForEth(amountToSwapForETH);
            uint256 amountEthToSend = address(this).balance;

            
            if(amountEthToSend>0){
                (bool success, ) = address(teamWallet).call{value: amountEthToSend}("");
                require(success,"unable to trf" );
            }
            
            emit SwapBackSuccess(amountToSwapForETH, amountEthToSend, true);
        }

    

    }

    function blacklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
        blacklists[_address[i]] = true;
        }
    }
    function unblacklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
        blacklists[_address[i]] = false;
        }
    }


    function manualSwap() external onlyOwner {
        
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0) {
            
           (bool success, ) = address(teamWallet).call{value: ethBalance}("");
            require(success,"unable to trf" );
        }
    }


}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountReceived","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SwapBackSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToExclude","type":"address"},{"internalType":"bool","name":"isExcluded","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":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"s","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","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":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"unblacklist","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":"address","name":"devWallet_","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokenTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052734a13e94d7fd25d94462039f7d8918c09b8e35e66600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce80000006008556103e86101726008546200007e919062000a1f565b6200008a9190620009e7565b6009556103e8600a600854620000a1919062000a1f565b620000ad9190620009e7565b600a55620186a06005600854620000c5919062000a1f565b620000d19190620009e7565b600b556103e8600a600854620000e8919062000a1f565b620000f49190620009e7565b600c556000600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff021916908315150217905550610190600e556103de600f553480156200016157600080fd5b506040518060400160405280600481526020017f656f626f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f454f424f000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001e692919062000809565b508060049080519060200190620001ff92919062000809565b5050506200022262000216620003ba60201b60201c565b620003c260201b60201c565b62000244620002366200048860201b60201c565b6001620004b260201b60201c565b6200026b737a250d5630b4cf539739df2c5dacb4c659f2488d6001620004b260201b60201c565b620002a0600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620004b260201b60201c565b620002b3306001620004b260201b60201c565b620002c861dead6001620004b260201b60201c565b620002ea620002dc6200048860201b60201c565b60016200059c60201b60201c565b6200031f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200059c60201b60201c565b620003323060016200059c60201b60201c565b6200034761dead60016200059c60201b60201c565b6200036e737a250d5630b4cf539739df2c5dacb4c659f2488d60016200059c60201b60201c565b62000382306009546200068660201b60201c565b620003b4620003966200048860201b60201c565b600954600854620003a8919062000a80565b6200068660201b60201c565b62000bda565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004c2620003ba60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004e86200048860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000541576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005389062000918565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620005ac620003ba60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005d26200048860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200062b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006229062000918565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f0906200093a565b60405180910390fd5b6200070d60008383620007ff60201b60201c565b80600260008282546200072191906200098a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200077891906200098a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007df91906200095c565b60405180910390a3620007fb600083836200080460201b60201c565b5050565b505050565b505050565b828054620008179062000ac5565b90600052602060002090601f0160209004810192826200083b576000855562000887565b82601f106200085657805160ff191683800117855562000887565b8280016001018555821562000887579182015b828111156200088657825182559160200191906001019062000869565b5b5090506200089691906200089a565b5090565b5b80821115620008b55760008160009055506001016200089b565b5090565b6000620008c860208362000979565b9150620008d58262000b88565b602082019050919050565b6000620008ef601f8362000979565b9150620008fc8262000bb1565b602082019050919050565b620009128162000abb565b82525050565b600060208201905081810360008301526200093381620008b9565b9050919050565b600060208201905081810360008301526200095581620008e0565b9050919050565b600060208201905062000973600083018462000907565b92915050565b600082825260208201905092915050565b6000620009978262000abb565b9150620009a48362000abb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620009dc57620009db62000afb565b5b828201905092915050565b6000620009f48262000abb565b915062000a018362000abb565b92508262000a145762000a1362000b2a565b5b828204905092915050565b600062000a2c8262000abb565b915062000a398362000abb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a755762000a7462000afb565b5b828202905092915050565b600062000a8d8262000abb565b915062000a9a8362000abb565b92508282101562000ab05762000aaf62000afb565b5b828203905092915050565b6000819050919050565b6000600282049050600182168062000ade57607f821691505b6020821081141562000af55762000af462000b59565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b614a038062000bea6000396000f3fe6080604052600436106102765760003560e01c806374326f531161014f578063bbc0c742116100c1578063e0f3ccf51161007a578063e0f3ccf514610983578063e2f45605146109ae578063e4748b9e146109d9578063e8078d9414610a04578063f2fde38b14610a0e578063f8b45b0514610a375761027d565b8063bbc0c74214610873578063bfab65351461089e578063c0246668146108c7578063c8c8ebe4146108f0578063d00efb2f1461091b578063dd62ed3e146109465761027d565b806395d89b411161011357806395d89b411461073f5780639a7a23d61461076a5780639bed058914610793578063a457c2d7146107bc578063a9059cbb146107f9578063b62496f5146108365761027d565b806374326f53146106825780637571336a146106ab5780638a8c523c146106d45780638da5cb5b146106eb578063924de9b7146107165761027d565b806339509351116101e857806359927044116101ac578063599270441461057257806359bd962a1461059d57806366718524146105da5780636ddd17131461060357806370a082311461062e578063715018a61461066b5761027d565b8063395093511461048b57806349bd5a5e146104c85780634a62bb65146104f35780634fbee1931461051e57806351bc3c851461055b5761027d565b80631694505e1161023a5780631694505e1461037957806318160ddd146103a45780631c499ab0146103cf57806323b872dd146103f857806327c8f83514610435578063313ce567146104605761027d565b8063041f173f146102825780630517d13d146102ab57806306fdde03146102d4578063095ea7b3146102ff57806310d5de531461033c5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a491906138a6565b610a62565b005b3480156102b757600080fd5b506102d260048036038101906102cd919061391c565b610b79565b005b3480156102e057600080fd5b506102e9610bff565b6040516102f69190613e37565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190613866565b610c91565b6040516103339190613e01565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613739565b610caf565b6040516103709190613e01565b60405180910390f35b34801561038557600080fd5b5061038e610ccf565b60405161039b9190613e1c565b60405180910390f35b3480156103b057600080fd5b506103b9610cf5565b6040516103c69190614059565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f1919061391c565b610cff565b005b34801561040457600080fd5b5061041f600480360381019061041a91906137d3565b610d85565b60405161042c9190613e01565b60405180910390f35b34801561044157600080fd5b5061044a610e7d565b6040516104579190613d5c565b60405180910390f35b34801561046c57600080fd5b50610475610e83565b6040516104829190614105565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190613866565b610e8c565b6040516104bf9190613e01565b60405180910390f35b3480156104d457600080fd5b506104dd610f38565b6040516104ea9190613d5c565b60405180910390f35b3480156104ff57600080fd5b50610508610f5e565b6040516105159190613e01565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613739565b610f71565b6040516105529190613e01565b60405180910390f35b34801561056757600080fd5b50610570610fc7565b005b34801561057e57600080fd5b50610587611145565b6040516105949190613d5c565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613949565b61116b565b6040516105d19190613e01565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190613739565b61121c565b005b34801561060f57600080fd5b506106186112dc565b6040516106259190613e01565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613739565b6112ef565b6040516106629190614059565b60405180910390f35b34801561067757600080fd5b50610680611337565b005b34801561068e57600080fd5b506106a960048036038101906106a491906138ef565b6113bf565b005b3480156106b757600080fd5b506106d260048036038101906106cd9190613826565b611458565b005b3480156106e057600080fd5b506106e961152f565b005b3480156106f757600080fd5b506107006115ea565b60405161070d9190613d5c565b60405180910390f35b34801561072257600080fd5b5061073d600480360381019061073891906138ef565b611614565b005b34801561074b57600080fd5b506107546116ad565b6040516107619190613e37565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190613826565b61173f565b005b34801561079f57600080fd5b506107ba60048036038101906107b5919061391c565b61185a565b005b3480156107c857600080fd5b506107e360048036038101906107de9190613866565b6118e0565b6040516107f09190613e01565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b9190613866565b6119cb565b60405161082d9190613e01565b60405180910390f35b34801561084257600080fd5b5061085d60048036038101906108589190613739565b6119e9565b60405161086a9190613e01565b60405180910390f35b34801561087f57600080fd5b50610888611a09565b6040516108959190613e01565b60405180910390f35b3480156108aa57600080fd5b506108c560048036038101906108c091906138a6565b611a1c565b005b3480156108d357600080fd5b506108ee60048036038101906108e99190613826565b611b33565b005b3480156108fc57600080fd5b50610905611c0a565b6040516109129190614059565b60405180910390f35b34801561092757600080fd5b50610930611c10565b60405161093d9190614059565b60405180910390f35b34801561095257600080fd5b5061096d60048036038101906109689190613793565b611c16565b60405161097a9190614059565b60405180910390f35b34801561098f57600080fd5b50610998611c9d565b6040516109a59190614059565b60405180910390f35b3480156109ba57600080fd5b506109c3611ca3565b6040516109d09190614059565b60405180910390f35b3480156109e557600080fd5b506109ee611ca9565b6040516109fb9190614059565b60405180910390f35b610a0c611caf565b005b348015610a1a57600080fd5b50610a356004803603810190610a309190613739565b6120cf565b005b348015610a4357600080fd5b50610a4c6121c7565b604051610a599190614059565b60405180910390f35b610a6a6121cd565b73ffffffffffffffffffffffffffffffffffffffff16610a886115ea565b73ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590613f79565b60405180910390fd5b60005b81518160ff161015610b7557600160166000848460ff1681518110610b0957610b086144d0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b6d90614419565b915050610ae1565b5050565b610b816121cd565b73ffffffffffffffffffffffffffffffffffffffff16610b9f6115ea565b73ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90613f79565b60405180910390fd5b80600a8190555050565b606060038054610c0e906143b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3a906143b6565b8015610c875780601f10610c5c57610100808354040283529160200191610c87565b820191906000526020600020905b815481529060010190602001808311610c6a57829003601f168201915b5050505050905090565b6000610ca5610c9e6121cd565b84846121d5565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610d076121cd565b73ffffffffffffffffffffffffffffffffffffffff16610d256115ea565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290613f79565b60405180910390fd5b80600c8190555050565b6000610d928484846123a0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ddd6121cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490613f59565b60405180910390fd5b610e7185610e696121cd565b8584036121d5565b60019150509392505050565b61dead81565b60006012905090565b6000610f2e610e996121cd565b848460016000610ea76121cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2991906141d1565b6121d5565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610fcf6121cd565b73ffffffffffffffffffffffffffffffffffffffff16610fed6115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90613f79565b60405180910390fd5b600061104e306112ef565b905060008111156110635761106281612eb2565b5b60004790506000811115611141576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516110b990613d47565b60006040518083038185875af1925050503d80600081146110f6576040519150601f19603f3d011682016040523d82523d6000602084013e6110fb565b606091505b505090508061113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690613f19565b60405180910390fd5b505b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111756121cd565b73ffffffffffffffffffffffffffffffffffffffff166111936115ea565b73ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613f79565b60405180910390fd5b6000600d60006101000a81548160ff02191690831515021790555082600f8190555081600e819055506001905092915050565b6112246121cd565b73ffffffffffffffffffffffffffffffffffffffff166112426115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613f79565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61133f6121cd565b73ffffffffffffffffffffffffffffffffffffffff1661135d6115ea565b73ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90613f79565b60405180910390fd5b6113bd6000613104565b565b6113c76121cd565b73ffffffffffffffffffffffffffffffffffffffff166113e56115ea565b73ffffffffffffffffffffffffffffffffffffffff161461143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290613f79565b60405180910390fd5b80600d60006101000a81548160ff02191690831515021790555050565b6114606121cd565b73ffffffffffffffffffffffffffffffffffffffff1661147e6115ea565b73ffffffffffffffffffffffffffffffffffffffff16146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90613f79565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6115376121cd565b73ffffffffffffffffffffffffffffffffffffffff166115556115ea565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613f79565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601081905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61161c6121cd565b73ffffffffffffffffffffffffffffffffffffffff1661163a6115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168790613f79565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b6060600480546116bc906143b6565b80601f01602080910402602001604051908101604052809291908181526020018280546116e8906143b6565b80156117355780601f1061170a57610100808354040283529160200191611735565b820191906000526020600020905b81548152906001019060200180831161171857829003601f168201915b5050505050905090565b6117476121cd565b73ffffffffffffffffffffffffffffffffffffffff166117656115ea565b73ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290613f79565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390613eb9565b60405180910390fd5b61185682826131ca565b5050565b6118626121cd565b73ffffffffffffffffffffffffffffffffffffffff166118806115ea565b73ffffffffffffffffffffffffffffffffffffffff16146118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd90613f79565b60405180910390fd5b80600b8190555050565b600080600160006118ef6121cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390614019565b60405180910390fd5b6119c06119b76121cd565b858584036121d5565b600191505092915050565b60006119df6119d86121cd565b84846123a0565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611a246121cd565b73ffffffffffffffffffffffffffffffffffffffff16611a426115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f90613f79565b60405180910390fd5b60005b81518160ff161015611b2f57600060166000848460ff1681518110611ac357611ac26144d0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b2790614419565b915050611a9b565b5050565b611b3b6121cd565b73ffffffffffffffffffffffffffffffffffffffff16611b596115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690613f79565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600b5481565b600e5481565b611cb76121cd565b73ffffffffffffffffffffffffffffffffffffffff16611cd56115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290613f79565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d90816001611458565b611dc530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611dc0306112ef565b6121d5565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0b57600080fd5b505afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190613766565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea557600080fd5b505afa158015611eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edd9190613766565b6040518363ffffffff1660e01b8152600401611efa929190613d77565b602060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4c9190613766565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611fb9601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611458565b611fe6601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016131ca565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061202f306112ef565b60008061203a6115ea565b426040518863ffffffff1660e01b815260040161205c96959493929190613da0565b6060604051808303818588803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120ae9190613989565b5050506001600d60006101000a81548160ff02191690831515021790555050565b6120d76121cd565b73ffffffffffffffffffffffffffffffffffffffff166120f56115ea565b73ffffffffffffffffffffffffffffffffffffffff161461214b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214290613f79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613e79565b60405180910390fd5b6121c481613104565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c90613fd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90613e99565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123939190614059565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240790613fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247790613e59565b60405180910390fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125245750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255a90614039565b60405180910390fd5b600081141561257d5761257883836000613225565b612ead565b600d60009054906101000a900460ff1615612a785761259a6115ea565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561260857506125d86115ea565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126415750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561267b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126945750600660149054906101000a900460ff16155b15612a7757600d60019054906101000a900460ff1661278e57601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061274e5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278490613f99565b60405180910390fd5b5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128315750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d857600a5481111561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613f39565b60405180910390fd5b600c54612887836112ef565b8261289291906141d1565b11156128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca90613ff9565b60405180910390fd5b612a76565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561297b5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129ca57600a548111156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90613ef9565b60405180910390fd5b612a75565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a7457600c54612a27836112ef565b82612a3291906141d1565b1115612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a90613ff9565b60405180910390fd5b5b5b5b5b5b6000612a83306112ef565b90506000600b548210159050808015612aa85750600d60029054906101000a900460ff165b8015612ac15750600660149054906101000a900460ff16155b8015612b175750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b6d5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612bc35750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c07576001600660146101000a81548160ff021916908315150217905550612beb6134a6565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cbd5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cc757600090505b60008115612e9d57601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d2a57506000600f54115b15612d5f57612d586103e8612d4a600f54886135fc90919063ffffffff16565b61361290919063ffffffff16565b9050612e79565b601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dba57506000600e54115b15612e7857600060105443612dcf91906142b2565b1415612e0557612dfe6103e8612df0610384886135fc90919063ffffffff16565b61361290919063ffffffff16565b9050612e77565b600360105443612e1591906142b2565b11612e4a57612e436103e8612e356102b2886135fc90919063ffffffff16565b61361290919063ffffffff16565b9050612e76565b612e736103e8612e65600e54886135fc90919063ffffffff16565b61361290919063ffffffff16565b90505b5b5b5b6000811115612e8e57612e8d873083613225565b5b8085612e9a91906142b2565b94505b612ea8878787613225565b505050505b505050565b6000600267ffffffffffffffff811115612ecf57612ece6144ff565b5b604051908082528060200260200182016040528015612efd5781602001602082028036833780820191505090505b5090503081600081518110612f1557612f146144d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612fb757600080fd5b505afa158015612fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fef9190613766565b81600181518110613003576130026144d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061306a30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121d5565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ce959493929190614074565b600060405180830381600087803b1580156130e857600080fd5b505af11580156130fc573d6000803e3d6000fd5b505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328c90613fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fc90613e59565b60405180910390fd5b613310838383613628565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338d90613ed9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342991906141d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161348d9190614059565b60405180910390a36134a084848461362d565b50505050565b60006134b1306112ef565b905060008114156134c257506135fa565b600b5481106135f8576000600b5490506134db81612eb2565b600047905060008111156135b9576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161353190613d47565b60006040518083038185875af1925050503d806000811461356e576040519150601f19603f3d011682016040523d82523d6000602084013e613573565b606091505b50509050806135b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ae90613f19565b60405180910390fd5b505b7fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff828260016040516135ed939291906140ce565b60405180910390a150505b505b565b6000818361360a9190614258565b905092915050565b600081836136209190614227565b905092915050565b505050565b505050565b600061364561364084614145565b614120565b9050808382526020820190508285602086028201111561366857613667614533565b5b60005b85811015613698578161367e88826136a2565b84526020840193506020830192505060018101905061366b565b5050509392505050565b6000813590506136b181614988565b92915050565b6000815190506136c681614988565b92915050565b600082601f8301126136e1576136e061452e565b5b81356136f1848260208601613632565b91505092915050565b6000813590506137098161499f565b92915050565b60008135905061371e816149b6565b92915050565b600081519050613733816149b6565b92915050565b60006020828403121561374f5761374e61453d565b5b600061375d848285016136a2565b91505092915050565b60006020828403121561377c5761377b61453d565b5b600061378a848285016136b7565b91505092915050565b600080604083850312156137aa576137a961453d565b5b60006137b8858286016136a2565b92505060206137c9858286016136a2565b9150509250929050565b6000806000606084860312156137ec576137eb61453d565b5b60006137fa868287016136a2565b935050602061380b868287016136a2565b925050604061381c8682870161370f565b9150509250925092565b6000806040838503121561383d5761383c61453d565b5b600061384b858286016136a2565b925050602061385c858286016136fa565b9150509250929050565b6000806040838503121561387d5761387c61453d565b5b600061388b858286016136a2565b925050602061389c8582860161370f565b9150509250929050565b6000602082840312156138bc576138bb61453d565b5b600082013567ffffffffffffffff8111156138da576138d9614538565b5b6138e6848285016136cc565b91505092915050565b6000602082840312156139055761390461453d565b5b6000613913848285016136fa565b91505092915050565b6000602082840312156139325761393161453d565b5b60006139408482850161370f565b91505092915050565b600080604083850312156139605761395f61453d565b5b600061396e8582860161370f565b925050602061397f8582860161370f565b9150509250929050565b6000806000606084860312156139a2576139a161453d565b5b60006139b086828701613724565b93505060206139c186828701613724565b92505060406139d286828701613724565b9150509250925092565b60006139e883836139f4565b60208301905092915050565b6139fd816142e6565b82525050565b613a0c816142e6565b82525050565b6000613a1d82614181565b613a2781856141a4565b9350613a3283614171565b8060005b83811015613a63578151613a4a88826139dc565b9750613a5583614197565b925050600181019050613a36565b5085935050505092915050565b613a79816142f8565b82525050565b613a888161433b565b82525050565b613a978161434d565b82525050565b6000613aa88261418c565b613ab281856141c0565b9350613ac2818560208601614383565b613acb81614542565b840191505092915050565b6000613ae36023836141c0565b9150613aee82614553565b604082019050919050565b6000613b066026836141c0565b9150613b11826145a2565b604082019050919050565b6000613b296022836141c0565b9150613b34826145f1565b604082019050919050565b6000613b4c6039836141c0565b9150613b5782614640565b604082019050919050565b6000613b6f6026836141c0565b9150613b7a8261468f565b604082019050919050565b6000613b926036836141c0565b9150613b9d826146de565b604082019050919050565b6000613bb5600d836141c0565b9150613bc08261472d565b602082019050919050565b6000613bd86035836141c0565b9150613be382614756565b604082019050919050565b6000613bfb6028836141c0565b9150613c06826147a5565b604082019050919050565b6000613c1e6020836141c0565b9150613c29826147f4565b602082019050919050565b6000613c41601b836141c0565b9150613c4c8261481d565b602082019050919050565b6000613c646025836141c0565b9150613c6f82614846565b604082019050919050565b6000613c876000836141b5565b9150613c9282614895565b600082019050919050565b6000613caa6024836141c0565b9150613cb582614898565b604082019050919050565b6000613ccd6013836141c0565b9150613cd8826148e7565b602082019050919050565b6000613cf06025836141c0565b9150613cfb82614910565b604082019050919050565b6000613d13600b836141c0565b9150613d1e8261495f565b602082019050919050565b613d3281614324565b82525050565b613d418161432e565b82525050565b6000613d5282613c7a565b9150819050919050565b6000602082019050613d716000830184613a03565b92915050565b6000604082019050613d8c6000830185613a03565b613d996020830184613a03565b9392505050565b600060c082019050613db56000830189613a03565b613dc26020830188613d29565b613dcf6040830187613a8e565b613ddc6060830186613a8e565b613de96080830185613a03565b613df660a0830184613d29565b979650505050505050565b6000602082019050613e166000830184613a70565b92915050565b6000602082019050613e316000830184613a7f565b92915050565b60006020820190508181036000830152613e518184613a9d565b905092915050565b60006020820190508181036000830152613e7281613ad6565b9050919050565b60006020820190508181036000830152613e9281613af9565b9050919050565b60006020820190508181036000830152613eb281613b1c565b9050919050565b60006020820190508181036000830152613ed281613b3f565b9050919050565b60006020820190508181036000830152613ef281613b62565b9050919050565b60006020820190508181036000830152613f1281613b85565b9050919050565b60006020820190508181036000830152613f3281613ba8565b9050919050565b60006020820190508181036000830152613f5281613bcb565b9050919050565b60006020820190508181036000830152613f7281613bee565b9050919050565b60006020820190508181036000830152613f9281613c11565b9050919050565b60006020820190508181036000830152613fb281613c34565b9050919050565b60006020820190508181036000830152613fd281613c57565b9050919050565b60006020820190508181036000830152613ff281613c9d565b9050919050565b6000602082019050818103600083015261401281613cc0565b9050919050565b6000602082019050818103600083015261403281613ce3565b9050919050565b6000602082019050818103600083015261405281613d06565b9050919050565b600060208201905061406e6000830184613d29565b92915050565b600060a0820190506140896000830188613d29565b6140966020830187613a8e565b81810360408301526140a88186613a12565b90506140b76060830185613a03565b6140c46080830184613d29565b9695505050505050565b60006060820190506140e36000830186613d29565b6140f06020830185613d29565b6140fd6040830184613a70565b949350505050565b600060208201905061411a6000830184613d38565b92915050565b600061412a61413b565b905061413682826143e8565b919050565b6000604051905090565b600067ffffffffffffffff8211156141605761415f6144ff565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006141dc82614324565b91506141e783614324565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561421c5761421b614443565b5b828201905092915050565b600061423282614324565b915061423d83614324565b92508261424d5761424c614472565b5b828204905092915050565b600061426382614324565b915061426e83614324565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142a7576142a6614443565b5b828202905092915050565b60006142bd82614324565b91506142c883614324565b9250828210156142db576142da614443565b5b828203905092915050565b60006142f182614304565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006143468261435f565b9050919050565b600061435882614324565b9050919050565b600061436a82614371565b9050919050565b600061437c82614304565b9050919050565b60005b838110156143a1578082015181840152602081019050614386565b838111156143b0576000848401525b50505050565b600060028204905060018216806143ce57607f821691505b602082108114156143e2576143e16144a1565b5b50919050565b6143f182614542565b810181811067ffffffffffffffff821117156144105761440f6144ff565b5b80604052505050565b60006144248261432e565b915060ff82141561443857614437614443565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f756e61626c6520746f2074726600000000000000000000000000000000000000600082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54726164696e67206973206e6f7420656e61626c6564207965742e0000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b614991816142e6565b811461499c57600080fd5b50565b6149a8816142f8565b81146149b357600080fd5b50565b6149bf81614324565b81146149ca57600080fd5b5056fea26469706673582212203d91e84b0fcd9d9e25a7a4999060d70ce62718c3de181bc671bc289228abfa9d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102765760003560e01c806374326f531161014f578063bbc0c742116100c1578063e0f3ccf51161007a578063e0f3ccf514610983578063e2f45605146109ae578063e4748b9e146109d9578063e8078d9414610a04578063f2fde38b14610a0e578063f8b45b0514610a375761027d565b8063bbc0c74214610873578063bfab65351461089e578063c0246668146108c7578063c8c8ebe4146108f0578063d00efb2f1461091b578063dd62ed3e146109465761027d565b806395d89b411161011357806395d89b411461073f5780639a7a23d61461076a5780639bed058914610793578063a457c2d7146107bc578063a9059cbb146107f9578063b62496f5146108365761027d565b806374326f53146106825780637571336a146106ab5780638a8c523c146106d45780638da5cb5b146106eb578063924de9b7146107165761027d565b806339509351116101e857806359927044116101ac578063599270441461057257806359bd962a1461059d57806366718524146105da5780636ddd17131461060357806370a082311461062e578063715018a61461066b5761027d565b8063395093511461048b57806349bd5a5e146104c85780634a62bb65146104f35780634fbee1931461051e57806351bc3c851461055b5761027d565b80631694505e1161023a5780631694505e1461037957806318160ddd146103a45780631c499ab0146103cf57806323b872dd146103f857806327c8f83514610435578063313ce567146104605761027d565b8063041f173f146102825780630517d13d146102ab57806306fdde03146102d4578063095ea7b3146102ff57806310d5de531461033c5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a491906138a6565b610a62565b005b3480156102b757600080fd5b506102d260048036038101906102cd919061391c565b610b79565b005b3480156102e057600080fd5b506102e9610bff565b6040516102f69190613e37565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190613866565b610c91565b6040516103339190613e01565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613739565b610caf565b6040516103709190613e01565b60405180910390f35b34801561038557600080fd5b5061038e610ccf565b60405161039b9190613e1c565b60405180910390f35b3480156103b057600080fd5b506103b9610cf5565b6040516103c69190614059565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f1919061391c565b610cff565b005b34801561040457600080fd5b5061041f600480360381019061041a91906137d3565b610d85565b60405161042c9190613e01565b60405180910390f35b34801561044157600080fd5b5061044a610e7d565b6040516104579190613d5c565b60405180910390f35b34801561046c57600080fd5b50610475610e83565b6040516104829190614105565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190613866565b610e8c565b6040516104bf9190613e01565b60405180910390f35b3480156104d457600080fd5b506104dd610f38565b6040516104ea9190613d5c565b60405180910390f35b3480156104ff57600080fd5b50610508610f5e565b6040516105159190613e01565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613739565b610f71565b6040516105529190613e01565b60405180910390f35b34801561056757600080fd5b50610570610fc7565b005b34801561057e57600080fd5b50610587611145565b6040516105949190613d5c565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613949565b61116b565b6040516105d19190613e01565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190613739565b61121c565b005b34801561060f57600080fd5b506106186112dc565b6040516106259190613e01565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613739565b6112ef565b6040516106629190614059565b60405180910390f35b34801561067757600080fd5b50610680611337565b005b34801561068e57600080fd5b506106a960048036038101906106a491906138ef565b6113bf565b005b3480156106b757600080fd5b506106d260048036038101906106cd9190613826565b611458565b005b3480156106e057600080fd5b506106e961152f565b005b3480156106f757600080fd5b506107006115ea565b60405161070d9190613d5c565b60405180910390f35b34801561072257600080fd5b5061073d600480360381019061073891906138ef565b611614565b005b34801561074b57600080fd5b506107546116ad565b6040516107619190613e37565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190613826565b61173f565b005b34801561079f57600080fd5b506107ba60048036038101906107b5919061391c565b61185a565b005b3480156107c857600080fd5b506107e360048036038101906107de9190613866565b6118e0565b6040516107f09190613e01565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b9190613866565b6119cb565b60405161082d9190613e01565b60405180910390f35b34801561084257600080fd5b5061085d60048036038101906108589190613739565b6119e9565b60405161086a9190613e01565b60405180910390f35b34801561087f57600080fd5b50610888611a09565b6040516108959190613e01565b60405180910390f35b3480156108aa57600080fd5b506108c560048036038101906108c091906138a6565b611a1c565b005b3480156108d357600080fd5b506108ee60048036038101906108e99190613826565b611b33565b005b3480156108fc57600080fd5b50610905611c0a565b6040516109129190614059565b60405180910390f35b34801561092757600080fd5b50610930611c10565b60405161093d9190614059565b60405180910390f35b34801561095257600080fd5b5061096d60048036038101906109689190613793565b611c16565b60405161097a9190614059565b60405180910390f35b34801561098f57600080fd5b50610998611c9d565b6040516109a59190614059565b60405180910390f35b3480156109ba57600080fd5b506109c3611ca3565b6040516109d09190614059565b60405180910390f35b3480156109e557600080fd5b506109ee611ca9565b6040516109fb9190614059565b60405180910390f35b610a0c611caf565b005b348015610a1a57600080fd5b50610a356004803603810190610a309190613739565b6120cf565b005b348015610a4357600080fd5b50610a4c6121c7565b604051610a599190614059565b60405180910390f35b610a6a6121cd565b73ffffffffffffffffffffffffffffffffffffffff16610a886115ea565b73ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590613f79565b60405180910390fd5b60005b81518160ff161015610b7557600160166000848460ff1681518110610b0957610b086144d0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b6d90614419565b915050610ae1565b5050565b610b816121cd565b73ffffffffffffffffffffffffffffffffffffffff16610b9f6115ea565b73ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90613f79565b60405180910390fd5b80600a8190555050565b606060038054610c0e906143b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3a906143b6565b8015610c875780601f10610c5c57610100808354040283529160200191610c87565b820191906000526020600020905b815481529060010190602001808311610c6a57829003601f168201915b5050505050905090565b6000610ca5610c9e6121cd565b84846121d5565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610d076121cd565b73ffffffffffffffffffffffffffffffffffffffff16610d256115ea565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290613f79565b60405180910390fd5b80600c8190555050565b6000610d928484846123a0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ddd6121cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490613f59565b60405180910390fd5b610e7185610e696121cd565b8584036121d5565b60019150509392505050565b61dead81565b60006012905090565b6000610f2e610e996121cd565b848460016000610ea76121cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2991906141d1565b6121d5565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610fcf6121cd565b73ffffffffffffffffffffffffffffffffffffffff16610fed6115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90613f79565b60405180910390fd5b600061104e306112ef565b905060008111156110635761106281612eb2565b5b60004790506000811115611141576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516110b990613d47565b60006040518083038185875af1925050503d80600081146110f6576040519150601f19603f3d011682016040523d82523d6000602084013e6110fb565b606091505b505090508061113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690613f19565b60405180910390fd5b505b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111756121cd565b73ffffffffffffffffffffffffffffffffffffffff166111936115ea565b73ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613f79565b60405180910390fd5b6000600d60006101000a81548160ff02191690831515021790555082600f8190555081600e819055506001905092915050565b6112246121cd565b73ffffffffffffffffffffffffffffffffffffffff166112426115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613f79565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61133f6121cd565b73ffffffffffffffffffffffffffffffffffffffff1661135d6115ea565b73ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90613f79565b60405180910390fd5b6113bd6000613104565b565b6113c76121cd565b73ffffffffffffffffffffffffffffffffffffffff166113e56115ea565b73ffffffffffffffffffffffffffffffffffffffff161461143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290613f79565b60405180910390fd5b80600d60006101000a81548160ff02191690831515021790555050565b6114606121cd565b73ffffffffffffffffffffffffffffffffffffffff1661147e6115ea565b73ffffffffffffffffffffffffffffffffffffffff16146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90613f79565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6115376121cd565b73ffffffffffffffffffffffffffffffffffffffff166115556115ea565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613f79565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601081905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61161c6121cd565b73ffffffffffffffffffffffffffffffffffffffff1661163a6115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168790613f79565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b6060600480546116bc906143b6565b80601f01602080910402602001604051908101604052809291908181526020018280546116e8906143b6565b80156117355780601f1061170a57610100808354040283529160200191611735565b820191906000526020600020905b81548152906001019060200180831161171857829003601f168201915b5050505050905090565b6117476121cd565b73ffffffffffffffffffffffffffffffffffffffff166117656115ea565b73ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290613f79565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390613eb9565b60405180910390fd5b61185682826131ca565b5050565b6118626121cd565b73ffffffffffffffffffffffffffffffffffffffff166118806115ea565b73ffffffffffffffffffffffffffffffffffffffff16146118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd90613f79565b60405180910390fd5b80600b8190555050565b600080600160006118ef6121cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390614019565b60405180910390fd5b6119c06119b76121cd565b858584036121d5565b600191505092915050565b60006119df6119d86121cd565b84846123a0565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611a246121cd565b73ffffffffffffffffffffffffffffffffffffffff16611a426115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f90613f79565b60405180910390fd5b60005b81518160ff161015611b2f57600060166000848460ff1681518110611ac357611ac26144d0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b2790614419565b915050611a9b565b5050565b611b3b6121cd565b73ffffffffffffffffffffffffffffffffffffffff16611b596115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690613f79565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600b5481565b600e5481565b611cb76121cd565b73ffffffffffffffffffffffffffffffffffffffff16611cd56115ea565b73ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290613f79565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d90816001611458565b611dc530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611dc0306112ef565b6121d5565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0b57600080fd5b505afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190613766565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea557600080fd5b505afa158015611eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edd9190613766565b6040518363ffffffff1660e01b8152600401611efa929190613d77565b602060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4c9190613766565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611fb9601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611458565b611fe6601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016131ca565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061202f306112ef565b60008061203a6115ea565b426040518863ffffffff1660e01b815260040161205c96959493929190613da0565b6060604051808303818588803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120ae9190613989565b5050506001600d60006101000a81548160ff02191690831515021790555050565b6120d76121cd565b73ffffffffffffffffffffffffffffffffffffffff166120f56115ea565b73ffffffffffffffffffffffffffffffffffffffff161461214b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214290613f79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613e79565b60405180910390fd5b6121c481613104565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c90613fd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90613e99565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123939190614059565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240790613fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247790613e59565b60405180910390fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125245750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255a90614039565b60405180910390fd5b600081141561257d5761257883836000613225565b612ead565b600d60009054906101000a900460ff1615612a785761259a6115ea565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561260857506125d86115ea565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126415750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561267b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126945750600660149054906101000a900460ff16155b15612a7757600d60019054906101000a900460ff1661278e57601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061274e5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278490613f99565b60405180910390fd5b5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128315750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d857600a5481111561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613f39565b60405180910390fd5b600c54612887836112ef565b8261289291906141d1565b11156128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca90613ff9565b60405180910390fd5b612a76565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561297b5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129ca57600a548111156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90613ef9565b60405180910390fd5b612a75565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a7457600c54612a27836112ef565b82612a3291906141d1565b1115612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a90613ff9565b60405180910390fd5b5b5b5b5b5b6000612a83306112ef565b90506000600b548210159050808015612aa85750600d60029054906101000a900460ff165b8015612ac15750600660149054906101000a900460ff16155b8015612b175750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b6d5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612bc35750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c07576001600660146101000a81548160ff021916908315150217905550612beb6134a6565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cbd5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cc757600090505b60008115612e9d57601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d2a57506000600f54115b15612d5f57612d586103e8612d4a600f54886135fc90919063ffffffff16565b61361290919063ffffffff16565b9050612e79565b601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dba57506000600e54115b15612e7857600060105443612dcf91906142b2565b1415612e0557612dfe6103e8612df0610384886135fc90919063ffffffff16565b61361290919063ffffffff16565b9050612e77565b600360105443612e1591906142b2565b11612e4a57612e436103e8612e356102b2886135fc90919063ffffffff16565b61361290919063ffffffff16565b9050612e76565b612e736103e8612e65600e54886135fc90919063ffffffff16565b61361290919063ffffffff16565b90505b5b5b5b6000811115612e8e57612e8d873083613225565b5b8085612e9a91906142b2565b94505b612ea8878787613225565b505050505b505050565b6000600267ffffffffffffffff811115612ecf57612ece6144ff565b5b604051908082528060200260200182016040528015612efd5781602001602082028036833780820191505090505b5090503081600081518110612f1557612f146144d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612fb757600080fd5b505afa158015612fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fef9190613766565b81600181518110613003576130026144d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061306a30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121d5565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ce959493929190614074565b600060405180830381600087803b1580156130e857600080fd5b505af11580156130fc573d6000803e3d6000fd5b505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328c90613fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fc90613e59565b60405180910390fd5b613310838383613628565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338d90613ed9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342991906141d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161348d9190614059565b60405180910390a36134a084848461362d565b50505050565b60006134b1306112ef565b905060008114156134c257506135fa565b600b5481106135f8576000600b5490506134db81612eb2565b600047905060008111156135b9576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161353190613d47565b60006040518083038185875af1925050503d806000811461356e576040519150601f19603f3d011682016040523d82523d6000602084013e613573565b606091505b50509050806135b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ae90613f19565b60405180910390fd5b505b7fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff828260016040516135ed939291906140ce565b60405180910390a150505b505b565b6000818361360a9190614258565b905092915050565b600081836136209190614227565b905092915050565b505050565b505050565b600061364561364084614145565b614120565b9050808382526020820190508285602086028201111561366857613667614533565b5b60005b85811015613698578161367e88826136a2565b84526020840193506020830192505060018101905061366b565b5050509392505050565b6000813590506136b181614988565b92915050565b6000815190506136c681614988565b92915050565b600082601f8301126136e1576136e061452e565b5b81356136f1848260208601613632565b91505092915050565b6000813590506137098161499f565b92915050565b60008135905061371e816149b6565b92915050565b600081519050613733816149b6565b92915050565b60006020828403121561374f5761374e61453d565b5b600061375d848285016136a2565b91505092915050565b60006020828403121561377c5761377b61453d565b5b600061378a848285016136b7565b91505092915050565b600080604083850312156137aa576137a961453d565b5b60006137b8858286016136a2565b92505060206137c9858286016136a2565b9150509250929050565b6000806000606084860312156137ec576137eb61453d565b5b60006137fa868287016136a2565b935050602061380b868287016136a2565b925050604061381c8682870161370f565b9150509250925092565b6000806040838503121561383d5761383c61453d565b5b600061384b858286016136a2565b925050602061385c858286016136fa565b9150509250929050565b6000806040838503121561387d5761387c61453d565b5b600061388b858286016136a2565b925050602061389c8582860161370f565b9150509250929050565b6000602082840312156138bc576138bb61453d565b5b600082013567ffffffffffffffff8111156138da576138d9614538565b5b6138e6848285016136cc565b91505092915050565b6000602082840312156139055761390461453d565b5b6000613913848285016136fa565b91505092915050565b6000602082840312156139325761393161453d565b5b60006139408482850161370f565b91505092915050565b600080604083850312156139605761395f61453d565b5b600061396e8582860161370f565b925050602061397f8582860161370f565b9150509250929050565b6000806000606084860312156139a2576139a161453d565b5b60006139b086828701613724565b93505060206139c186828701613724565b92505060406139d286828701613724565b9150509250925092565b60006139e883836139f4565b60208301905092915050565b6139fd816142e6565b82525050565b613a0c816142e6565b82525050565b6000613a1d82614181565b613a2781856141a4565b9350613a3283614171565b8060005b83811015613a63578151613a4a88826139dc565b9750613a5583614197565b925050600181019050613a36565b5085935050505092915050565b613a79816142f8565b82525050565b613a888161433b565b82525050565b613a978161434d565b82525050565b6000613aa88261418c565b613ab281856141c0565b9350613ac2818560208601614383565b613acb81614542565b840191505092915050565b6000613ae36023836141c0565b9150613aee82614553565b604082019050919050565b6000613b066026836141c0565b9150613b11826145a2565b604082019050919050565b6000613b296022836141c0565b9150613b34826145f1565b604082019050919050565b6000613b4c6039836141c0565b9150613b5782614640565b604082019050919050565b6000613b6f6026836141c0565b9150613b7a8261468f565b604082019050919050565b6000613b926036836141c0565b9150613b9d826146de565b604082019050919050565b6000613bb5600d836141c0565b9150613bc08261472d565b602082019050919050565b6000613bd86035836141c0565b9150613be382614756565b604082019050919050565b6000613bfb6028836141c0565b9150613c06826147a5565b604082019050919050565b6000613c1e6020836141c0565b9150613c29826147f4565b602082019050919050565b6000613c41601b836141c0565b9150613c4c8261481d565b602082019050919050565b6000613c646025836141c0565b9150613c6f82614846565b604082019050919050565b6000613c876000836141b5565b9150613c9282614895565b600082019050919050565b6000613caa6024836141c0565b9150613cb582614898565b604082019050919050565b6000613ccd6013836141c0565b9150613cd8826148e7565b602082019050919050565b6000613cf06025836141c0565b9150613cfb82614910565b604082019050919050565b6000613d13600b836141c0565b9150613d1e8261495f565b602082019050919050565b613d3281614324565b82525050565b613d418161432e565b82525050565b6000613d5282613c7a565b9150819050919050565b6000602082019050613d716000830184613a03565b92915050565b6000604082019050613d8c6000830185613a03565b613d996020830184613a03565b9392505050565b600060c082019050613db56000830189613a03565b613dc26020830188613d29565b613dcf6040830187613a8e565b613ddc6060830186613a8e565b613de96080830185613a03565b613df660a0830184613d29565b979650505050505050565b6000602082019050613e166000830184613a70565b92915050565b6000602082019050613e316000830184613a7f565b92915050565b60006020820190508181036000830152613e518184613a9d565b905092915050565b60006020820190508181036000830152613e7281613ad6565b9050919050565b60006020820190508181036000830152613e9281613af9565b9050919050565b60006020820190508181036000830152613eb281613b1c565b9050919050565b60006020820190508181036000830152613ed281613b3f565b9050919050565b60006020820190508181036000830152613ef281613b62565b9050919050565b60006020820190508181036000830152613f1281613b85565b9050919050565b60006020820190508181036000830152613f3281613ba8565b9050919050565b60006020820190508181036000830152613f5281613bcb565b9050919050565b60006020820190508181036000830152613f7281613bee565b9050919050565b60006020820190508181036000830152613f9281613c11565b9050919050565b60006020820190508181036000830152613fb281613c34565b9050919050565b60006020820190508181036000830152613fd281613c57565b9050919050565b60006020820190508181036000830152613ff281613c9d565b9050919050565b6000602082019050818103600083015261401281613cc0565b9050919050565b6000602082019050818103600083015261403281613ce3565b9050919050565b6000602082019050818103600083015261405281613d06565b9050919050565b600060208201905061406e6000830184613d29565b92915050565b600060a0820190506140896000830188613d29565b6140966020830187613a8e565b81810360408301526140a88186613a12565b90506140b76060830185613a03565b6140c46080830184613d29565b9695505050505050565b60006060820190506140e36000830186613d29565b6140f06020830185613d29565b6140fd6040830184613a70565b949350505050565b600060208201905061411a6000830184613d38565b92915050565b600061412a61413b565b905061413682826143e8565b919050565b6000604051905090565b600067ffffffffffffffff8211156141605761415f6144ff565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006141dc82614324565b91506141e783614324565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561421c5761421b614443565b5b828201905092915050565b600061423282614324565b915061423d83614324565b92508261424d5761424c614472565b5b828204905092915050565b600061426382614324565b915061426e83614324565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142a7576142a6614443565b5b828202905092915050565b60006142bd82614324565b91506142c883614324565b9250828210156142db576142da614443565b5b828203905092915050565b60006142f182614304565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006143468261435f565b9050919050565b600061435882614324565b9050919050565b600061436a82614371565b9050919050565b600061437c82614304565b9050919050565b60005b838110156143a1578082015181840152602081019050614386565b838111156143b0576000848401525b50505050565b600060028204905060018216806143ce57607f821691505b602082108114156143e2576143e16144a1565b5b50919050565b6143f182614542565b810181811067ffffffffffffffff821117156144105761440f6144ff565b5b80604052505050565b60006144248261432e565b915060ff82141561443857614437614443565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f756e61626c6520746f2074726600000000000000000000000000000000000000600082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54726164696e67206973206e6f7420656e61626c6564207965742e0000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b614991816142e6565b811461499c57600080fd5b50565b6149a8816142f8565b81146149b357600080fd5b50565b6149bf81614324565b81146149ca57600080fd5b5056fea26469706673582212203d91e84b0fcd9d9e25a7a4999060d70ce62718c3de181bc671bc289228abfa9d64736f6c63430008070033

Deployed Bytecode Sourcemap

18353:11817:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29359:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23479:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4724:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6326:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19696:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19439:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5213:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23714:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6528:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19522:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5055:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7065:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19487:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19138:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23918:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29722:441;;;;;;;;;;;;;:::i;:::-;;18546:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21009:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23349:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19219:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5384:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1472:103;;;;;;;;;;;;;:::i;:::-;;23815:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21202:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20785:149;;;;;;;;;;;;;:::i;:::-;;821:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21499:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4943:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21747:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23596:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7363:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5740:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19766:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19179:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29537:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21607:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18747:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19369:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6003:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19313:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18867:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19259:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22059:1144;;;:::i;:::-;;1730:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19042:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29359:172;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29439:7:::1;29435:89;29451:8;:15;29449:1;:17;;;29435:89;;;29508:4;29482:10;:23;29493:8;29502:1;29493:11;;;;;;;;;;:::i;:::-;;;;;;;;29482:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;29467:3;;;;;:::i;:::-;;;;29435:89;;;;29359:172:::0;:::o;23479:109::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23574:6:::1;23551:20;:29;;;;23479:109:::0;:::o;4724:100::-;4778:13;4811:5;4804:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4724:100;:::o;6326:194::-;6434:4;6451:39;6460:12;:10;:12::i;:::-;6474:7;6483:6;6451:8;:39::i;:::-;6508:4;6501:11;;6326:194;;;;:::o;19696:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;19439:41::-;;;;;;;;;;;;;:::o;5213:108::-;5274:7;5301:12;;5294:19;;5213:108;:::o;23714:93::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23793:6:::1;23781:9;:18;;;;23714:93:::0;:::o;6528:529::-;6668:4;6685:36;6695:6;6703:9;6714:6;6685:9;:36::i;:::-;6734:24;6761:11;:19;6773:6;6761:19;;;;;;;;;;;;;;;:33;6781:12;:10;:12::i;:::-;6761:33;;;;;;;;;;;;;;;;6734:60;;6847:6;6827:16;:26;;6805:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6957:57;6966:6;6974:12;:10;:12::i;:::-;7007:6;6988:16;:25;6957:8;:57::i;:::-;7045:4;7038:11;;;6528:529;;;;;:::o;19522:53::-;19568:6;19522:53;:::o;5055:93::-;5113:5;5138:2;5131:9;;5055:93;:::o;7065:290::-;7178:4;7195:130;7218:12;:10;:12::i;:::-;7245:7;7304:10;7267:11;:25;7279:12;:10;:12::i;:::-;7267:25;;;;;;;;;;;;;;;:34;7293:7;7267:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7195:8;:130::i;:::-;7343:4;7336:11;;7065:290;;;;:::o;19487:28::-;;;;;;;;;;;;;:::o;19138:34::-;;;;;;;;;;;;;:::o;23918:126::-;23984:4;24008:19;:28;24028:7;24008:28;;;;;;;;;;;;;;;;;;;;;;;;;24001:35;;23918:126;;;:::o;29722:441::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29784:20:::1;29807:24;29825:4;29807:9;:24::i;:::-;29784:47;;29860:1;29845:12;:16;29842:78;;;29878:30;29895:12;29878:16;:30::i;:::-;29842:78;29930:18;29951:21;29930:42;;29999:1;29986:10;:14;29983:173;;;30031:12;30057:10;;;;;;;;;;;30049:24;;30081:10;30049:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30030:66;;;30119:7;30111:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;30002:154;29983:173;29763:400;;29722:441::o:0;18546:68::-;;;;;;;;;;;;;:::o;21009:185::-;21080:4;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21114:5:::1;21097:14;;:22;;;;;;;;;;;;;;;;;;21141:1;21130:8;:12;;;;21163:1;21153:7;:11;;;;21182:4;21175:11;;21009:185:::0;;;;:::o;23349:122::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23451:10:::1;23438;;:23;;;;;;;;;;;;;;;;;;23349:122:::0;:::o;19219:31::-;;;;;;;;;;;;;:::o;5384:143::-;5474:7;5501:9;:18;5511:7;5501:18;;;;;;;;;;;;;;;;5494:25;;5384:143;;;:::o;1472:103::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1537:30:::1;1564:1;1537:18;:30::i;:::-;1472:103::o:0;23815:93::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23895:5:::1;23878:14;;:22;;;;;;;;;;;;;;;;;;23815:93:::0;:::o;21202:201::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21385:10:::1;21333:31;:49;21365:16;21333:49;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;21202:201:::0;;:::o;20785:149::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20856:4:::1;20840:13;;:20;;;;;;;;;;;;;;;;;;20885:4;20871:11;;:18;;;;;;;;;;;;;;;;;;20914:12;20900:11;:26;;;;20785:149::o:0;821:87::-;867:7;894:6;;;;;;;;;;;887:13;;821:87;:::o;21499:100::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21584:7:::1;21570:11;;:21;;;;;;;;;;;;;;;;;;21499:100:::0;:::o;4943:104::-;4999:13;5032:7;5025:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4943:104;:::o;21747:304::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21893:13:::1;;;;;;;;;;;21885:21;;:4;:21;;;;21863:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;22002:41;22031:4;22037:5;22002:28;:41::i;:::-;21747:304:::0;;:::o;23596:110::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23692:6:::1;23671:18;:27;;;;23596:110:::0;:::o;7363:475::-;7481:4;7498:24;7525:11;:25;7537:12;:10;:12::i;:::-;7525:25;;;;;;;;;;;;;;;:34;7551:7;7525:34;;;;;;;;;;;;;;;;7498:61;;7612:15;7592:16;:35;;7570:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7728:67;7737:12;:10;:12::i;:::-;7751:7;7779:15;7760:16;:34;7728:8;:67::i;:::-;7826:4;7819:11;;;7363:475;;;;:::o;5740:200::-;5851:4;5868:42;5878:12;:10;:12::i;:::-;5892:9;5903:6;5868:9;:42::i;:::-;5928:4;5921:11;;5740:200;;;;:::o;19766:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19179:33::-;;;;;;;;;;;;;:::o;29537:175::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29619:7:::1;29615:90;29631:8;:15;29629:1;:17;;;29615:90;;;29688:5;29662:10;:23;29673:8;29682:1;29673:11;;;;;;;;;;:::i;:::-;;;;;;;;29662:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29647:3;;;;;:::i;:::-;;;;29615:90;;;;29537:175:::0;:::o;21607:132::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21723:8:::1;21692:19;:28;21712:7;21692:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21607:132:::0;;:::o;18747:64::-;;;;:::o;19369:26::-;;;;:::o;6003:176::-;6117:7;6144:11;:18;6156:5;6144:18;;;;;;;;;;;;;;;:27;6163:7;6144:27;;;;;;;;;;;;;;;;6137:34;;6003:176;;;;:::o;19313:29::-;;;;:::o;18867:63::-;;;;:::o;19259:28::-;;;;:::o;22059:1144::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22188:35:::1;22259:42;22188:124;;22343:16;22325:15;;:34;;;;;;;;;;;;;;;;;;22370:58;22404:16;22423:4;22370:25;:58::i;:::-;22439:75;22456:4;22471:15;;;;;;;;;;;22489:24;22507:4;22489:9;:24::i;:::-;22439:8;:75::i;:::-;22589:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22571:70;;;22650:4;22657:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22571:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22555:13;;:126;;;;;;;;;;;;;;;;;;22692:55;22726:13;;;;;;;;;;;22742:4;22692:25;:55::i;:::-;22758:58;22795:13;;;;;;;;;;;22811:4;22758:28;:58::i;:::-;22829:15;;;;;;;;;;;:31;;;22868:9;22901:4;22937:24;22955:4;22937:9;:24::i;:::-;22996:1;23039::::0;23082:7:::1;:5;:7::i;:::-;23139:15;22829:336;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23191:4;23176:14;;:19;;;;;;;;;;;;;;;;;;22110:1093;22059:1144::o:0;1730:238::-;1052:12;:10;:12::i;:::-;1041:23;;:7;:5;:7::i;:::-;:23;;;1033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1853:1:::1;1833:22;;:8;:22;;;;1811:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;1932:28;1951:8;1932:18;:28::i;:::-;1730:238:::0;:::o;19042:53::-;;;;:::o;142:98::-;195:7;222:10;215:17;;142:98;:::o;9630:380::-;9783:1;9766:19;;:5;:19;;;;9758:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9864:1;9845:21;;:7;:21;;;;9837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9948:6;9918:11;:18;9930:5;9918:18;;;;;;;;;;;;;;;:27;9937:7;9918:27;;;;;;;;;;;;;;;:36;;;;9986:7;9970:32;;9979:5;9970:32;;;9995:6;9970:32;;;;;;:::i;:::-;;;;;;;;9630:380;;;:::o;24052:3949::-;24200:1;24184:18;;:4;:18;;;;24176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24277:1;24263:16;;:2;:16;;;;24255:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24339:10;:14;24350:2;24339:14;;;;;;;;;;;;;;;;;;;;;;;;;24338:15;:36;;;;;24358:10;:16;24369:4;24358:16;;;;;;;;;;;;;;;;;;;;;;;;;24357:17;24338:36;24330:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24417:1;24407:6;:11;24403:93;;;24435:28;24451:4;24457:2;24461:1;24435:15;:28::i;:::-;24478:7;;24403:93;24512:14;;;;;;;;;;;24508:1723;;;24573:7;:5;:7::i;:::-;24565:15;;:4;:15;;;;:49;;;;;24607:7;:5;:7::i;:::-;24601:13;;:2;:13;;;;24565:49;:86;;;;;24649:1;24635:16;;:2;:16;;;;24565:86;:128;;;;;24686:6;24672:21;;:2;:21;;;;24565:128;:158;;;;;24715:8;;;;;;;;;;;24714:9;24565:158;24543:1677;;;24763:13;;;;;;;;;;;24758:228;;24835:19;:25;24855:4;24835:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24864:19;:23;24884:2;24864:23;;;;;;;;;;;;;;;;;;;;;;;;;24835:52;24801:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;24758:228;25060:25;:31;25086:4;25060:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25117:31;:35;25149:2;25117:35;;;;;;;;;;;;;;;;;;;;;;;;;25116:36;25060:92;25034:1171;;;25239:20;;25229:6;:30;;25195:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;25447:9;;25430:13;25440:2;25430:9;:13::i;:::-;25421:6;:22;;;;:::i;:::-;:35;;25387:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25034:1171;;;25625:25;:29;25651:2;25625:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25680:31;:37;25712:4;25680:37;;;;;;;;;;;;;;;;;;;;;;;;;25679:38;25625:92;25599:606;;;25804:20;;25794:6;:30;;25760:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;25599:606;;;25983:31;:35;26015:2;25983:35;;;;;;;;;;;;;;;;;;;;;;;;;25978:227;;26103:9;;26086:13;26096:2;26086:9;:13::i;:::-;26077:6;:22;;;;:::i;:::-;:35;;26043:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25978:227;25599:606;25034:1171;24543:1677;24508:1723;26241:28;26272:24;26290:4;26272:9;:24::i;:::-;26241:55;;26309:12;26348:18;;26324:20;:42;;26309:57;;26385:7;:35;;;;;26409:11;;;;;;;;;;;26385:35;:79;;;;;26456:8;;;;;;;;;;;26455:9;26385:79;:147;;;;;26501:25;:31;26527:4;26501:31;;;;;;;;;;;;;;;;;;;;;;;;;26500:32;26385:147;:209;;;;;26569:19;:25;26589:4;26569:25;;;;;;;;;;;;;;;;;;;;;;;;;26568:26;26385:209;:269;;;;;26631:19;:23;26651:2;26631:23;;;;;;;;;;;;;;;;;;;;;;;;;26630:24;26385:269;26381:402;;;26711:4;26700:8;;:15;;;;;;;;;;;;;;;;;;26730:10;:8;:10::i;:::-;26766:5;26755:8;;:16;;;;;;;;;;;;;;;;;;26381:402;26795:12;26811:8;;;;;;;;;;;26810:9;26795:24;;26921:19;:25;26941:4;26921:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26950:19;:23;26970:2;26950:23;;;;;;;;;;;;;;;;;;;;;;;;;26921:52;26917:100;;;27000:5;26990:15;;26917:100;27029:12;27134:7;27130:820;;;27186:25;:29;27212:2;27186:29;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;27230:1;27219:8;;:12;27186:45;27182:621;;;27259:30;27284:4;27259:20;27270:8;;27259:6;:10;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;27252:37;;27182:621;;;27375:25;:31;27401:4;27375:31;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27420:1;27410:7;;:11;27375:46;27371:432;;;27508:1;27493:11;;27478:12;:26;;;;:::i;:::-;:31;27474:314;;;27540:25;27560:4;27540:15;27551:3;27540:6;:10;;:15;;;;:::i;:::-;:19;;:25;;;;:::i;:::-;27533:32;;27474:314;;;27625:1;27610:11;;27595:12;:26;;;;:::i;:::-;:31;27591:197;;27658:25;27678:4;27658:15;27669:3;27658:6;:10;;:15;;;;:::i;:::-;:19;;:25;;;;:::i;:::-;27651:32;;27591:197;;;27739:29;27763:4;27739:19;27750:7;;27739:6;:10;;:19;;;;:::i;:::-;:23;;:29;;;;:::i;:::-;27732:36;;27591:197;27474:314;27371:432;27182:621;27830:1;27823:4;:8;27819:91;;;27852:42;27868:4;27882;27889;27852:15;:42::i;:::-;27819:91;27934:4;27924:14;;;;;:::i;:::-;;;27130:820;27960:33;27976:4;27982:2;27986:6;27960:15;:33::i;:::-;24165:3836;;;;24052:3949;;;;:::o;28009:611::-;28135:21;28173:1;28159:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28135:40;;28204:4;28186;28191:1;28186:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28230:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28220:4;28225:1;28220:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28263:62;28280:4;28295:15;;;;;;;;;;;28313:11;28263:8;:62::i;:::-;28362:15;;;;;;;;;;;:66;;;28443:11;28469:1;28513:4;28540;28560:15;28362:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28064:556;28009:611;:::o;2128:191::-;2202:16;2221:6;;;;;;;;;;;2202:25;;2247:8;2238:6;;:17;;;;;;;;;;;;;;;;;;2302:8;2271:40;;2292:8;2271:40;;;;;;;;;;;;2191:128;2128:191;:::o;23211:130::-;23328:5;23294:25;:31;23320:4;23294:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23211:130;;:::o;7846:770::-;8004:1;7986:20;;:6;:20;;;;7978:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8088:1;8067:23;;:9;:23;;;;8059:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8143:47;8164:6;8172:9;8183:6;8143:20;:47::i;:::-;8203:21;8227:9;:17;8237:6;8227:17;;;;;;;;;;;;;;;;8203:41;;8294:6;8277:13;:23;;8255:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8438:6;8422:13;:22;8402:9;:17;8412:6;8402:17;;;;;;;;;;;;;;;:42;;;;8490:6;8466:9;:20;8476:9;8466:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8531:9;8514:35;;8523:6;8514:35;;;8542:6;8514:35;;;;;;:::i;:::-;;;;;;;;8562:46;8582:6;8590:9;8601:6;8562:19;:46::i;:::-;7967:649;7846:770;;;:::o;28628:723::-;28667:23;28693:24;28711:4;28693:9;:24::i;:::-;28667:50;;28757:1;28738:15;:20;28734:59;;;28775:7;;;28734:59;28826:18;;28807:15;:37;28803:531;;28861:26;28890:18;;28861:47;;28923:36;28940:18;28923:16;:36::i;:::-;28974:23;29000:21;28974:47;;29071:1;29055:15;:17;29052:179;;;29093:12;29119:10;;;;;;;;;;;29111:24;;29143:15;29111:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29092:71;;;29190:7;29182:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;29073:158;29052:179;29264:58;29280:18;29300:15;29317:4;29264:58;;;;;;;;:::i;:::-;;;;;;;;28846:488;;28803:531;28656:695;28628:723;:::o;11992:98::-;12050:7;12081:1;12077;:5;;;;:::i;:::-;12070:12;;11992:98;;;;:::o;12098:::-;12156:7;12187:1;12183;:5;;;;:::i;:::-;12176:12;;12098:98;;;;:::o;10018:125::-;;;;:::o;10151:124::-;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:139::-;1624:5;1662:6;1649:20;1640:29;;1678:33;1705:5;1678:33;:::i;:::-;1578:139;;;;:::o;1723:143::-;1780:5;1811:6;1805:13;1796:22;;1827:33;1854:5;1827:33;:::i;:::-;1723:143;;;;:::o;1872:329::-;1931:6;1980:2;1968:9;1959:7;1955:23;1951:32;1948:119;;;1986:79;;:::i;:::-;1948:119;2106:1;2131:53;2176:7;2167:6;2156:9;2152:22;2131:53;:::i;:::-;2121:63;;2077:117;1872:329;;;;:::o;2207:351::-;2277:6;2326:2;2314:9;2305:7;2301:23;2297:32;2294:119;;;2332:79;;:::i;:::-;2294:119;2452:1;2477:64;2533:7;2524:6;2513:9;2509:22;2477:64;:::i;:::-;2467:74;;2423:128;2207:351;;;;:::o;2564:474::-;2632:6;2640;2689:2;2677:9;2668:7;2664:23;2660:32;2657:119;;;2695:79;;:::i;:::-;2657:119;2815:1;2840:53;2885:7;2876:6;2865:9;2861:22;2840:53;:::i;:::-;2830:63;;2786:117;2942:2;2968:53;3013:7;3004:6;2993:9;2989:22;2968:53;:::i;:::-;2958:63;;2913:118;2564:474;;;;;:::o;3044:619::-;3121:6;3129;3137;3186:2;3174:9;3165:7;3161:23;3157:32;3154:119;;;3192:79;;:::i;:::-;3154:119;3312:1;3337:53;3382:7;3373:6;3362:9;3358:22;3337:53;:::i;:::-;3327:63;;3283:117;3439:2;3465:53;3510:7;3501:6;3490:9;3486:22;3465:53;:::i;:::-;3455:63;;3410:118;3567:2;3593:53;3638:7;3629:6;3618:9;3614:22;3593:53;:::i;:::-;3583:63;;3538:118;3044:619;;;;;:::o;3669:468::-;3734:6;3742;3791:2;3779:9;3770:7;3766:23;3762:32;3759:119;;;3797:79;;:::i;:::-;3759:119;3917:1;3942:53;3987:7;3978:6;3967:9;3963:22;3942:53;:::i;:::-;3932:63;;3888:117;4044:2;4070:50;4112:7;4103:6;4092:9;4088:22;4070:50;:::i;:::-;4060:60;;4015:115;3669:468;;;;;:::o;4143:474::-;4211:6;4219;4268:2;4256:9;4247:7;4243:23;4239:32;4236:119;;;4274:79;;:::i;:::-;4236:119;4394:1;4419:53;4464:7;4455:6;4444:9;4440:22;4419:53;:::i;:::-;4409:63;;4365:117;4521:2;4547:53;4592:7;4583:6;4572:9;4568:22;4547:53;:::i;:::-;4537:63;;4492:118;4143:474;;;;;:::o;4623:539::-;4707:6;4756:2;4744:9;4735:7;4731:23;4727:32;4724:119;;;4762:79;;:::i;:::-;4724:119;4910:1;4899:9;4895:17;4882:31;4940:18;4932:6;4929:30;4926:117;;;4962:79;;:::i;:::-;4926:117;5067:78;5137:7;5128:6;5117:9;5113:22;5067:78;:::i;:::-;5057:88;;4853:302;4623:539;;;;:::o;5168:323::-;5224:6;5273:2;5261:9;5252:7;5248:23;5244:32;5241:119;;;5279:79;;:::i;:::-;5241:119;5399:1;5424:50;5466:7;5457:6;5446:9;5442:22;5424:50;:::i;:::-;5414:60;;5370:114;5168:323;;;;:::o;5497:329::-;5556:6;5605:2;5593:9;5584:7;5580:23;5576:32;5573:119;;;5611:79;;:::i;:::-;5573:119;5731:1;5756:53;5801:7;5792:6;5781:9;5777:22;5756:53;:::i;:::-;5746:63;;5702:117;5497:329;;;;:::o;5832:474::-;5900:6;5908;5957:2;5945:9;5936:7;5932:23;5928:32;5925:119;;;5963:79;;:::i;:::-;5925:119;6083:1;6108:53;6153:7;6144:6;6133:9;6129:22;6108:53;:::i;:::-;6098:63;;6054:117;6210:2;6236:53;6281:7;6272:6;6261:9;6257:22;6236:53;:::i;:::-;6226:63;;6181:118;5832:474;;;;;:::o;6312:663::-;6400:6;6408;6416;6465:2;6453:9;6444:7;6440:23;6436:32;6433:119;;;6471:79;;:::i;:::-;6433:119;6591:1;6616:64;6672:7;6663:6;6652:9;6648:22;6616:64;:::i;:::-;6606:74;;6562:128;6729:2;6755:64;6811:7;6802:6;6791:9;6787:22;6755:64;:::i;:::-;6745:74;;6700:129;6868:2;6894:64;6950:7;6941:6;6930:9;6926:22;6894:64;:::i;:::-;6884:74;;6839:129;6312:663;;;;;:::o;6981:179::-;7050:10;7071:46;7113:3;7105:6;7071:46;:::i;:::-;7149:4;7144:3;7140:14;7126:28;;6981:179;;;;:::o;7166:108::-;7243:24;7261:5;7243:24;:::i;:::-;7238:3;7231:37;7166:108;;:::o;7280:118::-;7367:24;7385:5;7367:24;:::i;:::-;7362:3;7355:37;7280:118;;:::o;7434:732::-;7553:3;7582:54;7630:5;7582:54;:::i;:::-;7652:86;7731:6;7726:3;7652:86;:::i;:::-;7645:93;;7762:56;7812:5;7762:56;:::i;:::-;7841:7;7872:1;7857:284;7882:6;7879:1;7876:13;7857:284;;;7958:6;7952:13;7985:63;8044:3;8029:13;7985:63;:::i;:::-;7978:70;;8071:60;8124:6;8071:60;:::i;:::-;8061:70;;7917:224;7904:1;7901;7897:9;7892:14;;7857:284;;;7861:14;8157:3;8150:10;;7558:608;;;7434:732;;;;:::o;8172:109::-;8253:21;8268:5;8253:21;:::i;:::-;8248:3;8241:34;8172:109;;:::o;8287:185::-;8401:64;8459:5;8401:64;:::i;:::-;8396:3;8389:77;8287:185;;:::o;8478:147::-;8573:45;8612:5;8573:45;:::i;:::-;8568:3;8561:58;8478:147;;:::o;8631:364::-;8719:3;8747:39;8780:5;8747:39;:::i;:::-;8802:71;8866:6;8861:3;8802:71;:::i;:::-;8795:78;;8882:52;8927:6;8922:3;8915:4;8908:5;8904:16;8882:52;:::i;:::-;8959:29;8981:6;8959:29;:::i;:::-;8954:3;8950:39;8943:46;;8723:272;8631:364;;;;:::o;9001:366::-;9143:3;9164:67;9228:2;9223:3;9164:67;:::i;:::-;9157:74;;9240:93;9329:3;9240:93;:::i;:::-;9358:2;9353:3;9349:12;9342:19;;9001:366;;;:::o;9373:::-;9515:3;9536:67;9600:2;9595:3;9536:67;:::i;:::-;9529:74;;9612:93;9701:3;9612:93;:::i;:::-;9730:2;9725:3;9721:12;9714:19;;9373:366;;;:::o;9745:::-;9887:3;9908:67;9972:2;9967:3;9908:67;:::i;:::-;9901:74;;9984:93;10073:3;9984:93;:::i;:::-;10102:2;10097:3;10093:12;10086:19;;9745:366;;;:::o;10117:::-;10259:3;10280:67;10344:2;10339:3;10280:67;:::i;:::-;10273:74;;10356:93;10445:3;10356:93;:::i;:::-;10474:2;10469:3;10465:12;10458:19;;10117:366;;;:::o;10489:::-;10631:3;10652:67;10716:2;10711:3;10652:67;:::i;:::-;10645:74;;10728:93;10817:3;10728:93;:::i;:::-;10846:2;10841:3;10837:12;10830:19;;10489:366;;;:::o;10861:::-;11003:3;11024:67;11088:2;11083:3;11024:67;:::i;:::-;11017:74;;11100:93;11189:3;11100:93;:::i;:::-;11218:2;11213:3;11209:12;11202:19;;10861:366;;;:::o;11233:::-;11375:3;11396:67;11460:2;11455:3;11396:67;:::i;:::-;11389:74;;11472:93;11561:3;11472:93;:::i;:::-;11590:2;11585:3;11581:12;11574:19;;11233:366;;;:::o;11605:::-;11747:3;11768:67;11832:2;11827:3;11768:67;:::i;:::-;11761:74;;11844:93;11933:3;11844:93;:::i;:::-;11962:2;11957:3;11953:12;11946:19;;11605:366;;;:::o;11977:::-;12119:3;12140:67;12204:2;12199:3;12140:67;:::i;:::-;12133:74;;12216:93;12305:3;12216:93;:::i;:::-;12334:2;12329:3;12325:12;12318:19;;11977:366;;;:::o;12349:::-;12491:3;12512:67;12576:2;12571:3;12512:67;:::i;:::-;12505:74;;12588:93;12677:3;12588:93;:::i;:::-;12706:2;12701:3;12697:12;12690:19;;12349:366;;;:::o;12721:::-;12863:3;12884:67;12948:2;12943:3;12884:67;:::i;:::-;12877:74;;12960:93;13049:3;12960:93;:::i;:::-;13078:2;13073:3;13069:12;13062:19;;12721:366;;;:::o;13093:::-;13235:3;13256:67;13320:2;13315:3;13256:67;:::i;:::-;13249:74;;13332:93;13421:3;13332:93;:::i;:::-;13450:2;13445:3;13441:12;13434:19;;13093:366;;;:::o;13465:398::-;13624:3;13645:83;13726:1;13721:3;13645:83;:::i;:::-;13638:90;;13737:93;13826:3;13737:93;:::i;:::-;13855:1;13850:3;13846:11;13839:18;;13465:398;;;:::o;13869:366::-;14011:3;14032:67;14096:2;14091:3;14032:67;:::i;:::-;14025:74;;14108:93;14197:3;14108:93;:::i;:::-;14226:2;14221:3;14217:12;14210:19;;13869:366;;;:::o;14241:::-;14383:3;14404:67;14468:2;14463:3;14404:67;:::i;:::-;14397:74;;14480:93;14569:3;14480:93;:::i;:::-;14598:2;14593:3;14589:12;14582:19;;14241:366;;;:::o;14613:::-;14755:3;14776:67;14840:2;14835:3;14776:67;:::i;:::-;14769:74;;14852:93;14941:3;14852:93;:::i;:::-;14970:2;14965:3;14961:12;14954:19;;14613:366;;;:::o;14985:::-;15127:3;15148:67;15212:2;15207:3;15148:67;:::i;:::-;15141:74;;15224:93;15313:3;15224:93;:::i;:::-;15342:2;15337:3;15333:12;15326:19;;14985:366;;;:::o;15357:118::-;15444:24;15462:5;15444:24;:::i;:::-;15439:3;15432:37;15357:118;;:::o;15481:112::-;15564:22;15580:5;15564:22;:::i;:::-;15559:3;15552:35;15481:112;;:::o;15599:379::-;15783:3;15805:147;15948:3;15805:147;:::i;:::-;15798:154;;15969:3;15962:10;;15599:379;;;:::o;15984:222::-;16077:4;16115:2;16104:9;16100:18;16092:26;;16128:71;16196:1;16185:9;16181:17;16172:6;16128:71;:::i;:::-;15984:222;;;;:::o;16212:332::-;16333:4;16371:2;16360:9;16356:18;16348:26;;16384:71;16452:1;16441:9;16437:17;16428:6;16384:71;:::i;:::-;16465:72;16533:2;16522:9;16518:18;16509:6;16465:72;:::i;:::-;16212:332;;;;;:::o;16550:807::-;16799:4;16837:3;16826:9;16822:19;16814:27;;16851:71;16919:1;16908:9;16904:17;16895:6;16851:71;:::i;:::-;16932:72;17000:2;16989:9;16985:18;16976:6;16932:72;:::i;:::-;17014:80;17090:2;17079:9;17075:18;17066:6;17014:80;:::i;:::-;17104;17180:2;17169:9;17165:18;17156:6;17104:80;:::i;:::-;17194:73;17262:3;17251:9;17247:19;17238:6;17194:73;:::i;:::-;17277;17345:3;17334:9;17330:19;17321:6;17277:73;:::i;:::-;16550:807;;;;;;;;;:::o;17363:210::-;17450:4;17488:2;17477:9;17473:18;17465:26;;17501:65;17563:1;17552:9;17548:17;17539:6;17501:65;:::i;:::-;17363:210;;;;:::o;17579:276::-;17699:4;17737:2;17726:9;17722:18;17714:26;;17750:98;17845:1;17834:9;17830:17;17821:6;17750:98;:::i;:::-;17579:276;;;;:::o;17861:313::-;17974:4;18012:2;18001:9;17997:18;17989:26;;18061:9;18055:4;18051:20;18047:1;18036:9;18032:17;18025:47;18089:78;18162:4;18153:6;18089:78;:::i;:::-;18081:86;;17861:313;;;;:::o;18180:419::-;18346:4;18384:2;18373:9;18369:18;18361:26;;18433:9;18427:4;18423:20;18419:1;18408:9;18404:17;18397:47;18461:131;18587:4;18461:131;:::i;:::-;18453:139;;18180:419;;;:::o;18605:::-;18771:4;18809:2;18798:9;18794:18;18786:26;;18858:9;18852:4;18848:20;18844:1;18833:9;18829:17;18822:47;18886:131;19012:4;18886:131;:::i;:::-;18878:139;;18605:419;;;:::o;19030:::-;19196:4;19234:2;19223:9;19219:18;19211:26;;19283:9;19277:4;19273:20;19269:1;19258:9;19254:17;19247:47;19311:131;19437:4;19311:131;:::i;:::-;19303:139;;19030:419;;;:::o;19455:::-;19621:4;19659:2;19648:9;19644:18;19636:26;;19708:9;19702:4;19698:20;19694:1;19683:9;19679:17;19672:47;19736:131;19862:4;19736:131;:::i;:::-;19728:139;;19455:419;;;:::o;19880:::-;20046:4;20084:2;20073:9;20069:18;20061:26;;20133:9;20127:4;20123:20;20119:1;20108:9;20104:17;20097:47;20161:131;20287:4;20161:131;:::i;:::-;20153:139;;19880:419;;;:::o;20305:::-;20471:4;20509:2;20498:9;20494:18;20486:26;;20558:9;20552:4;20548:20;20544:1;20533:9;20529:17;20522:47;20586:131;20712:4;20586:131;:::i;:::-;20578:139;;20305:419;;;:::o;20730:::-;20896:4;20934:2;20923:9;20919:18;20911:26;;20983:9;20977:4;20973:20;20969:1;20958:9;20954:17;20947:47;21011:131;21137:4;21011:131;:::i;:::-;21003:139;;20730:419;;;:::o;21155:::-;21321:4;21359:2;21348:9;21344:18;21336:26;;21408:9;21402:4;21398:20;21394:1;21383:9;21379:17;21372:47;21436:131;21562:4;21436:131;:::i;:::-;21428:139;;21155:419;;;:::o;21580:::-;21746:4;21784:2;21773:9;21769:18;21761:26;;21833:9;21827:4;21823:20;21819:1;21808:9;21804:17;21797:47;21861:131;21987:4;21861:131;:::i;:::-;21853:139;;21580:419;;;:::o;22005:::-;22171:4;22209:2;22198:9;22194:18;22186:26;;22258:9;22252:4;22248:20;22244:1;22233:9;22229:17;22222:47;22286:131;22412:4;22286:131;:::i;:::-;22278:139;;22005:419;;;:::o;22430:::-;22596:4;22634:2;22623:9;22619:18;22611:26;;22683:9;22677:4;22673:20;22669:1;22658:9;22654:17;22647:47;22711:131;22837:4;22711:131;:::i;:::-;22703:139;;22430:419;;;:::o;22855:::-;23021:4;23059:2;23048:9;23044:18;23036:26;;23108:9;23102:4;23098:20;23094:1;23083:9;23079:17;23072:47;23136:131;23262:4;23136:131;:::i;:::-;23128:139;;22855:419;;;:::o;23280:::-;23446:4;23484:2;23473:9;23469:18;23461:26;;23533:9;23527:4;23523:20;23519:1;23508:9;23504:17;23497:47;23561:131;23687:4;23561:131;:::i;:::-;23553:139;;23280:419;;;:::o;23705:::-;23871:4;23909:2;23898:9;23894:18;23886:26;;23958:9;23952:4;23948:20;23944:1;23933:9;23929:17;23922:47;23986:131;24112:4;23986:131;:::i;:::-;23978:139;;23705:419;;;:::o;24130:::-;24296:4;24334:2;24323:9;24319:18;24311:26;;24383:9;24377:4;24373:20;24369:1;24358:9;24354:17;24347:47;24411:131;24537:4;24411:131;:::i;:::-;24403:139;;24130:419;;;:::o;24555:::-;24721:4;24759:2;24748:9;24744:18;24736:26;;24808:9;24802:4;24798:20;24794:1;24783:9;24779:17;24772:47;24836:131;24962:4;24836:131;:::i;:::-;24828:139;;24555:419;;;:::o;24980:222::-;25073:4;25111:2;25100:9;25096:18;25088:26;;25124:71;25192:1;25181:9;25177:17;25168:6;25124:71;:::i;:::-;24980:222;;;;:::o;25208:831::-;25471:4;25509:3;25498:9;25494:19;25486:27;;25523:71;25591:1;25580:9;25576:17;25567:6;25523:71;:::i;:::-;25604:80;25680:2;25669:9;25665:18;25656:6;25604:80;:::i;:::-;25731:9;25725:4;25721:20;25716:2;25705:9;25701:18;25694:48;25759:108;25862:4;25853:6;25759:108;:::i;:::-;25751:116;;25877:72;25945:2;25934:9;25930:18;25921:6;25877:72;:::i;:::-;25959:73;26027:3;26016:9;26012:19;26003:6;25959:73;:::i;:::-;25208:831;;;;;;;;:::o;26045:430::-;26188:4;26226:2;26215:9;26211:18;26203:26;;26239:71;26307:1;26296:9;26292:17;26283:6;26239:71;:::i;:::-;26320:72;26388:2;26377:9;26373:18;26364:6;26320:72;:::i;:::-;26402:66;26464:2;26453:9;26449:18;26440:6;26402:66;:::i;:::-;26045:430;;;;;;:::o;26481:214::-;26570:4;26608:2;26597:9;26593:18;26585:26;;26621:67;26685:1;26674:9;26670:17;26661:6;26621:67;:::i;:::-;26481:214;;;;:::o;26701:129::-;26735:6;26762:20;;:::i;:::-;26752:30;;26791:33;26819:4;26811:6;26791:33;:::i;:::-;26701:129;;;:::o;26836:75::-;26869:6;26902:2;26896:9;26886:19;;26836:75;:::o;26917:311::-;26994:4;27084:18;27076:6;27073:30;27070:56;;;27106:18;;:::i;:::-;27070:56;27156:4;27148:6;27144:17;27136:25;;27216:4;27210;27206:15;27198:23;;26917:311;;;:::o;27234:132::-;27301:4;27324:3;27316:11;;27354:4;27349:3;27345:14;27337:22;;27234:132;;;:::o;27372:114::-;27439:6;27473:5;27467:12;27457:22;;27372:114;;;:::o;27492:99::-;27544:6;27578:5;27572:12;27562:22;;27492:99;;;:::o;27597:113::-;27667:4;27699;27694:3;27690:14;27682:22;;27597:113;;;:::o;27716:184::-;27815:11;27849:6;27844:3;27837:19;27889:4;27884:3;27880:14;27865:29;;27716:184;;;;:::o;27906:147::-;28007:11;28044:3;28029:18;;27906:147;;;;:::o;28059:169::-;28143:11;28177:6;28172:3;28165:19;28217:4;28212:3;28208:14;28193:29;;28059:169;;;;:::o;28234:305::-;28274:3;28293:20;28311:1;28293:20;:::i;:::-;28288:25;;28327:20;28345:1;28327:20;:::i;:::-;28322:25;;28481:1;28413:66;28409:74;28406:1;28403:81;28400:107;;;28487:18;;:::i;:::-;28400:107;28531:1;28528;28524:9;28517:16;;28234:305;;;;:::o;28545:185::-;28585:1;28602:20;28620:1;28602:20;:::i;:::-;28597:25;;28636:20;28654:1;28636:20;:::i;:::-;28631:25;;28675:1;28665:35;;28680:18;;:::i;:::-;28665:35;28722:1;28719;28715:9;28710:14;;28545:185;;;;:::o;28736:348::-;28776:7;28799:20;28817:1;28799:20;:::i;:::-;28794:25;;28833:20;28851:1;28833:20;:::i;:::-;28828:25;;29021:1;28953:66;28949:74;28946:1;28943:81;28938:1;28931:9;28924:17;28920:105;28917:131;;;29028:18;;:::i;:::-;28917:131;29076:1;29073;29069:9;29058:20;;28736:348;;;;:::o;29090:191::-;29130:4;29150:20;29168:1;29150:20;:::i;:::-;29145:25;;29184:20;29202:1;29184:20;:::i;:::-;29179:25;;29223:1;29220;29217:8;29214:34;;;29228:18;;:::i;:::-;29214:34;29273:1;29270;29266:9;29258:17;;29090:191;;;;:::o;29287:96::-;29324:7;29353:24;29371:5;29353:24;:::i;:::-;29342:35;;29287:96;;;:::o;29389:90::-;29423:7;29466:5;29459:13;29452:21;29441:32;;29389:90;;;:::o;29485:126::-;29522:7;29562:42;29555:5;29551:54;29540:65;;29485:126;;;:::o;29617:77::-;29654:7;29683:5;29672:16;;29617:77;;;:::o;29700:86::-;29735:7;29775:4;29768:5;29764:16;29753:27;;29700:86;;;:::o;29792:153::-;29869:9;29902:37;29933:5;29902:37;:::i;:::-;29889:50;;29792:153;;;:::o;29951:121::-;30009:9;30042:24;30060:5;30042:24;:::i;:::-;30029:37;;29951:121;;;:::o;30078:126::-;30128:9;30161:37;30192:5;30161:37;:::i;:::-;30148:50;;30078:126;;;:::o;30210:113::-;30260:9;30293:24;30311:5;30293:24;:::i;:::-;30280:37;;30210:113;;;:::o;30329:307::-;30397:1;30407:113;30421:6;30418:1;30415:13;30407:113;;;30506:1;30501:3;30497:11;30491:18;30487:1;30482:3;30478:11;30471:39;30443:2;30440:1;30436:10;30431:15;;30407:113;;;30538:6;30535:1;30532:13;30529:101;;;30618:1;30609:6;30604:3;30600:16;30593:27;30529:101;30378:258;30329:307;;;:::o;30642:320::-;30686:6;30723:1;30717:4;30713:12;30703:22;;30770:1;30764:4;30760:12;30791:18;30781:81;;30847:4;30839:6;30835:17;30825:27;;30781:81;30909:2;30901:6;30898:14;30878:18;30875:38;30872:84;;;30928:18;;:::i;:::-;30872:84;30693:269;30642:320;;;:::o;30968:281::-;31051:27;31073:4;31051:27;:::i;:::-;31043:6;31039:40;31181:6;31169:10;31166:22;31145:18;31133:10;31130:34;31127:62;31124:88;;;31192:18;;:::i;:::-;31124:88;31232:10;31228:2;31221:22;31011:238;30968:281;;:::o;31255:167::-;31292:3;31315:22;31331:5;31315:22;:::i;:::-;31306:31;;31359:4;31352:5;31349:15;31346:41;;;31367:18;;:::i;:::-;31346:41;31414:1;31407:5;31403:13;31396:20;;31255:167;;;:::o;31428:180::-;31476:77;31473:1;31466:88;31573:4;31570:1;31563:15;31597:4;31594:1;31587:15;31614:180;31662:77;31659:1;31652:88;31759:4;31756:1;31749:15;31783:4;31780:1;31773:15;31800:180;31848:77;31845:1;31838:88;31945:4;31942:1;31935:15;31969:4;31966:1;31959:15;31986:180;32034:77;32031:1;32024:88;32131:4;32128:1;32121:15;32155:4;32152:1;32145:15;32172:180;32220:77;32217:1;32210:88;32317:4;32314:1;32307:15;32341:4;32338:1;32331:15;32358:117;32467:1;32464;32457:12;32481:117;32590:1;32587;32580:12;32604:117;32713:1;32710;32703:12;32727:117;32836:1;32833;32826:12;32850:102;32891:6;32942:2;32938:7;32933:2;32926:5;32922:14;32918:28;32908:38;;32850:102;;;:::o;32958:222::-;33098:34;33094:1;33086:6;33082:14;33075:58;33167:5;33162:2;33154:6;33150:15;33143:30;32958:222;:::o;33186:225::-;33326:34;33322:1;33314:6;33310:14;33303:58;33395:8;33390:2;33382:6;33378:15;33371:33;33186:225;:::o;33417:221::-;33557:34;33553:1;33545:6;33541:14;33534:58;33626:4;33621:2;33613:6;33609:15;33602:29;33417:221;:::o;33644:244::-;33784:34;33780:1;33772:6;33768:14;33761:58;33853:27;33848:2;33840:6;33836:15;33829:52;33644:244;:::o;33894:225::-;34034:34;34030:1;34022:6;34018:14;34011:58;34103:8;34098:2;34090:6;34086:15;34079:33;33894:225;:::o;34125:241::-;34265:34;34261:1;34253:6;34249:14;34242:58;34334:24;34329:2;34321:6;34317:15;34310:49;34125:241;:::o;34372:163::-;34512:15;34508:1;34500:6;34496:14;34489:39;34372:163;:::o;34541:240::-;34681:34;34677:1;34669:6;34665:14;34658:58;34750:23;34745:2;34737:6;34733:15;34726:48;34541:240;:::o;34787:227::-;34927:34;34923:1;34915:6;34911:14;34904:58;34996:10;34991:2;34983:6;34979:15;34972:35;34787:227;:::o;35020:182::-;35160:34;35156:1;35148:6;35144:14;35137:58;35020:182;:::o;35208:177::-;35348:29;35344:1;35336:6;35332:14;35325:53;35208:177;:::o;35391:224::-;35531:34;35527:1;35519:6;35515:14;35508:58;35600:7;35595:2;35587:6;35583:15;35576:32;35391:224;:::o;35621:114::-;;:::o;35741:223::-;35881:34;35877:1;35869:6;35865:14;35858:58;35950:6;35945:2;35937:6;35933:15;35926:31;35741:223;:::o;35970:169::-;36110:21;36106:1;36098:6;36094:14;36087:45;35970:169;:::o;36145:224::-;36285:34;36281:1;36273:6;36269:14;36262:58;36354:7;36349:2;36341:6;36337:15;36330:32;36145:224;:::o;36375:161::-;36515:13;36511:1;36503:6;36499:14;36492:37;36375:161;:::o;36542:122::-;36615:24;36633:5;36615:24;:::i;:::-;36608:5;36605:35;36595:63;;36654:1;36651;36644:12;36595:63;36542:122;:::o;36670:116::-;36740:21;36755:5;36740:21;:::i;:::-;36733:5;36730:32;36720:60;;36776:1;36773;36766:12;36720:60;36670:116;:::o;36792:122::-;36865:24;36883:5;36865:24;:::i;:::-;36858:5;36855:35;36845:63;;36904:1;36901;36894:12;36845:63;36792:122;:::o

Swarm Source

ipfs://3d91e84b0fcd9d9e25a7a4999060d70ce62718c3de181bc671bc289228abfa9d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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