ETH Price: $2,720.71 (+12.31%)
 

Overview

Max Total Supply

150,000,000 $NOTMN

Holders

71

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
833,826.000867796869659276 $NOTMN

Value
$0.00
0xB53Be7dcF7C0Ce925c780bcFB270a4c8836DEC30
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:
NOTMINE

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-28
*/

/*

'##::: ##::'#######::'########::::'##::::'##:'####:'##::: ##:'########:
 ###:: ##:'##.... ##:... ##..::::: ###::'###:. ##:: ###:: ##: ##.....::
 ####: ##: ##:::: ##:::: ##::::::: ####'####:: ##:: ####: ##: ##:::::::
 ## ## ##: ##:::: ##:::: ##::::::: ## ### ##:: ##:: ## ## ##: ######:::
 ##. ####: ##:::: ##:::: ##::::::: ##. #: ##:: ##:: ##. ####: ##...::::
 ##:. ###: ##:::: ##:::: ##::::::: ##:.:: ##:: ##:: ##:. ###: ##:::::::
 ##::. ##:. #######::::: ##::::::: ##:::: ##:'####: ##::. ##: ########:
..::::..:::.......::::::..::::::::..:::::..::....::..::::..::........::
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
pragma experimental ABIEncoderV2;

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

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

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _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");
        _;
    }

    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;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    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];
    }

    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 {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

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

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

    uint256 public launchedAt;
    uint256 public launchedAtTimestamp;
    uint256 antiSnipingTime = 60 seconds;

    uint256 public buyTotalFees = 90;
    uint256 public buyMarketingFee = 45;
    uint256 public buyLiquidityFee = 0;
    uint256 public buyBurnFee = 0;
    uint256 public buyDevFee = 45;

    uint256 public sellTotalFees = 90;
    uint256 public sellMarketingFee = 45;
    uint256 public sellLiquidityFee = 0;
    uint256 public sellBurnFee = 0;
    uint256 public sellDevFee = 45;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokenForBurn;

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

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

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

    constructor() ERC20("NOT MINE", "$NOTMN") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 totalSupply = 150_000_000 * 1e18;

        maxTransactionAmount = 3968000 * 1e18; // 2% from total supply maxTransactionAmountTxn
        maxWallet = 5952000 * 1e18; // 3% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 2) / 10000; // 0.02% swap wallet

        marketingWallet = address(0xe82866444c37b72788657a679366a3071f7308d5); // set as marketing wallet
        devWallet = address(0xf835E1427715A1F4Cb1CA3ec6245841edA17d880); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        

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

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

    receive() external payable {}

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() public onlyOwner {
        require(launchedAt == 0, "Already launched boi");
        launchedAt = block.number;
        launchedAtTimestamp = block.timestamp;
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

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

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

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

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee,
        uint256 _burnfee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyBurnFee = _burnfee;
        buyTotalFees =
            buyMarketingFee +
            buyLiquidityFee +
            buyDevFee +
            buyBurnFee;
        require(buyTotalFees <= 30, "Must keep fees at 11% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee,
        uint256 _burnFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellBurnFee = _burnFee;
        sellTotalFees =
            sellMarketingFee +
            sellLiquidityFee +
            sellDevFee +
            sellBurnFee;
        require(sellTotalFees <= 30, "Must keep fees at 11% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    function addSniperInList(address _account) external onlyOwner {
        require(
            _account != address(uniswapV2Router),
            "We can not blacklist router"
        );
        require(!isSniper[_account], "Sniper already exist");
        isSniper[_account] = true;
    }

    function removeSniperFromList(address _account) external onlyOwner {
        require(isSniper[_account], "Not a sniper");
        isSniper[_account] = false;
    }

    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(!isSniper[to], "Sniper detected");
        require(!isSniper[from], "Sniper detected");

        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 active."
                    );
                }
                // antibot
                if (
                    block.timestamp < launchedAtTimestamp + antiSnipingTime &&
                    from != address(uniswapV2Router)
                ) {
                    if (from == uniswapV2Pair) {
                        isSniper[to] = true;
                    } else if (to == uniswapV2Pair) {
                        isSniper[from] = true;
                    }
                }
                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            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] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
                tokenForBurn = (fees * sellBurnFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                tokenForBurn = (fees * buyBurnFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addSniperInList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeSniperFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"tokenForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnfee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff021916908315150217905550603c600e55605a600f55602d60105560006011556000601255602d601355605a601455602d60155560006016556000601755602d6018553480156200009957600080fd5b506040518060400160405280600881526020017f4e4f54204d494e450000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f244e4f544d4e0000000000000000000000000000000000000000000000000000815250816003908162000117919062000ceb565b50806004908162000129919062000ceb565b5050506200014c620001406200053260201b60201c565b6200053a60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001788160016200060060201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021e919062000e3c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000e3c565b6040518363ffffffff1660e01b8152600401620002cb92919062000e7f565b6020604051808303816000875af1158015620002eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000311919062000e3c565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035960a05160016200060060201b60201c565b6200036e60a0516001620006ea60201b60201c565b60006a7c13bc4b2c133c5600000090506a034841b6057afab00000006008819055506a04ec629108387808000000600a81905550612710600282620003b4919062000edb565b620003c0919062000f6b565b60098190555073e82866444c37b72788657a679366a3071f7308d5600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f835e1427715a1f4cb1ca3ec6245841eda17d880600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000492620004846200078b60201b60201c565b6001620007b560201b60201c565b620004a5306001620007b560201b60201c565b620004ba61dead6001620007b560201b60201c565b620004dc620004ce6200078b60201b60201c565b60016200060060201b60201c565b620004ef3060016200060060201b60201c565b6200050461dead60016200060060201b60201c565b6200052a73e82866444c37b72788657a679366a3071f7308d582620008ef60201b60201c565b50506200115d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006106200053260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006366200078b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200068f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006869062001004565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007c56200053260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007eb6200078b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000844576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083b9062001004565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008e3919062001043565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000961576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095890620010b0565b60405180910390fd5b620009756000838362000a6760201b60201c565b8060026000828254620009899190620010d2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e09190620010d2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a47919062001140565b60405180910390a362000a636000838362000a6c60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000af357607f821691505b60208210810362000b095762000b0862000aab565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b34565b62000b7f868362000b34565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bcc62000bc662000bc08462000b97565b62000ba1565b62000b97565b9050919050565b6000819050919050565b62000be88362000bab565b62000c0062000bf78262000bd3565b84845462000b41565b825550505050565b600090565b62000c1762000c08565b62000c2481848462000bdd565b505050565b5b8181101562000c4c5762000c4060008262000c0d565b60018101905062000c2a565b5050565b601f82111562000c9b5762000c658162000b0f565b62000c708462000b24565b8101602085101562000c80578190505b62000c9862000c8f8562000b24565b83018262000c29565b50505b505050565b600082821c905092915050565b600062000cc06000198460080262000ca0565b1980831691505092915050565b600062000cdb838362000cad565b9150826002028217905092915050565b62000cf68262000a71565b67ffffffffffffffff81111562000d125762000d1162000a7c565b5b62000d1e825462000ada565b62000d2b82828562000c50565b600060209050601f83116001811462000d63576000841562000d4e578287015190505b62000d5a858262000ccd565b86555062000dca565b601f19841662000d738662000b0f565b60005b8281101562000d9d5784890151825560018201915060208501945060208101905062000d76565b8683101562000dbd578489015162000db9601f89168262000cad565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e048262000dd7565b9050919050565b62000e168162000df7565b811462000e2257600080fd5b50565b60008151905062000e368162000e0b565b92915050565b60006020828403121562000e555762000e5462000dd2565b5b600062000e658482850162000e25565b91505092915050565b62000e798162000df7565b82525050565b600060408201905062000e96600083018562000e6e565b62000ea5602083018462000e6e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ee88262000b97565b915062000ef58362000b97565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f315762000f3062000eac565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f788262000b97565b915062000f858362000b97565b92508262000f985762000f9762000f3c565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fec60208362000fa3565b915062000ff98262000fb4565b602082019050919050565b600060208201905081810360008301526200101f8162000fdd565b9050919050565b60008115159050919050565b6200103d8162001026565b82525050565b60006020820190506200105a600083018462001032565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001098601f8362000fa3565b9150620010a58262001060565b602082019050919050565b60006020820190508181036000830152620010cb8162001089565b9050919050565b6000620010df8262000b97565b9150620010ec8362000b97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001124576200112362000eac565b5b828201905092915050565b6200113a8162000b97565b82525050565b60006020820190506200115760008301846200112f565b92915050565b60805160a051615ada620011c96000396000818161178801528181611ca401528181612de50152612e9501526000818161104a0152818161156601528181612d8f015281816140e4015281816141c5015281816141ec0152818161428801526142af0152615ada6000f3fe60806040526004361061039b5760003560e01c80638ea5220f116101dc578063c024666811610102578063dd7bd775116100a0578063f11a24d31161006f578063f11a24d314610da7578063f2fde38b14610dd2578063f637434214610dfb578063f8b45b0514610e26576103a2565b8063dd7bd77514610cff578063e2f4560514610d28578063e71dc3f514610d53578063e7ad9fcd14610d7e576103a2565b8063c8c8ebe4116100dc578063c8c8ebe414610c2f578063d257b34f14610c5a578063d85ba06314610c97578063dd62ed3e14610cc2576103a2565b8063c024666814610bb2578063c18bc19514610bdb578063c6d2577d14610c04576103a2565b8063a0d82dc51161017a578063adb873bd11610149578063adb873bd14610af4578063b62496f514610b1f578063bbc0c74214610b5c578063bf56b37114610b87576103a2565b8063a0d82dc514610a26578063a457c2d714610a51578063a9059cbb14610a8e578063aacebbe314610acb576103a2565b806395d89b41116101b657806395d89b411461097c5780639a7a23d6146109a75780639c3b4fdc146109d05780639fccce32146109fb576103a2565b80638ea5220f146108fd5780639213691314610928578063924de9b714610953576103a2565b806338d6f847116102c15780636ddd17131161025f5780637571336a1161022e5780637571336a1461085357806375f0a8741461087c5780637bce5a04146108a75780638da5cb5b146108d2576103a2565b80636ddd1713146107a957806370a08231146107d4578063715018a614610811578063751039fc14610828576103a2565b80634a62bb651161029b5780634a62bb65146106eb5780634fbee1931461071657806352cf29b2146107535780636a486a8e1461077e576103a2565b806338d6f8471461065a578063395093511461068357806349bd5a5e146106c0576103a2565b80631816467f1161033957806323b872dd1161030857806323b872dd1461059e57806327c8f835146105db5780632e6ed7ef14610606578063313ce5671461062f576103a2565b80631816467f146104f65780631a8145bb1461051f5780631f3fed8f1461054a578063203e727e14610575576103a2565b80630f3a325f116103755780630f3a325f1461042657806310d5de53146104635780631694505e146104a057806318160ddd146104cb576103a2565b806301339c21146103a757806306fdde03146103be578063095ea7b3146103e9576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e51565b005b3480156103ca57600080fd5b506103d3610f58565b6040516103e091906143f7565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b91906144b2565b610fea565b60405161041d919061450d565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190614528565b611008565b60405161045a919061450d565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190614528565b611028565b604051610497919061450d565b60405180910390f35b3480156104ac57600080fd5b506104b5611048565b6040516104c291906145b4565b60405180910390f35b3480156104d757600080fd5b506104e061106c565b6040516104ed91906145de565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190614528565b611076565b005b34801561052b57600080fd5b506105346111b2565b60405161054191906145de565b60405180910390f35b34801561055657600080fd5b5061055f6111b8565b60405161056c91906145de565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906145f9565b6111be565b005b3480156105aa57600080fd5b506105c560048036038101906105c09190614626565b6112cd565b6040516105d2919061450d565b60405180910390f35b3480156105e757600080fd5b506105f06113c5565b6040516105fd9190614688565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906146a3565b6113cb565b005b34801561063b57600080fd5b506106446114df565b6040516106519190614726565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190614528565b6114e8565b005b34801561068f57600080fd5b506106aa60048036038101906106a591906144b2565b6116da565b6040516106b7919061450d565b60405180910390f35b3480156106cc57600080fd5b506106d5611786565b6040516106e29190614688565b60405180910390f35b3480156106f757600080fd5b506107006117aa565b60405161070d919061450d565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190614528565b6117bd565b60405161074a919061450d565b60405180910390f35b34801561075f57600080fd5b50610768611813565b60405161077591906145de565b60405180910390f35b34801561078a57600080fd5b50610793611819565b6040516107a091906145de565b60405180910390f35b3480156107b557600080fd5b506107be61181f565b6040516107cb919061450d565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f69190614528565b611832565b60405161080891906145de565b60405180910390f35b34801561081d57600080fd5b5061082661187a565b005b34801561083457600080fd5b5061083d611902565b60405161084a919061450d565b60405180910390f35b34801561085f57600080fd5b5061087a6004803603810190610875919061476d565b6119a2565b005b34801561088857600080fd5b50610891611a79565b60405161089e9190614688565b60405180910390f35b3480156108b357600080fd5b506108bc611a9f565b6040516108c991906145de565b60405180910390f35b3480156108de57600080fd5b506108e7611aa5565b6040516108f49190614688565b60405180910390f35b34801561090957600080fd5b50610912611acf565b60405161091f9190614688565b60405180910390f35b34801561093457600080fd5b5061093d611af5565b60405161094a91906145de565b60405180910390f35b34801561095f57600080fd5b5061097a600480360381019061097591906147ad565b611afb565b005b34801561098857600080fd5b50610991611b94565b60405161099e91906143f7565b60405180910390f35b3480156109b357600080fd5b506109ce60048036038101906109c9919061476d565b611c26565b005b3480156109dc57600080fd5b506109e5611d3e565b6040516109f291906145de565b60405180910390f35b348015610a0757600080fd5b50610a10611d44565b604051610a1d91906145de565b60405180910390f35b348015610a3257600080fd5b50610a3b611d4a565b604051610a4891906145de565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603810190610a7391906144b2565b611d50565b604051610a85919061450d565b60405180910390f35b348015610a9a57600080fd5b50610ab56004803603810190610ab091906144b2565b611e3b565b604051610ac2919061450d565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614528565b611e59565b005b348015610b0057600080fd5b50610b09611f95565b604051610b1691906145de565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b419190614528565b611f9b565b604051610b53919061450d565b60405180910390f35b348015610b6857600080fd5b50610b71611fba565b604051610b7e919061450d565b60405180910390f35b348015610b9357600080fd5b50610b9c611fcd565b604051610ba991906145de565b60405180910390f35b348015610bbe57600080fd5b50610bd96004803603810190610bd4919061476d565b611fd3565b005b348015610be757600080fd5b50610c026004803603810190610bfd91906145f9565b6120f8565b005b348015610c1057600080fd5b50610c19612207565b604051610c2691906145de565b60405180910390f35b348015610c3b57600080fd5b50610c4461220d565b604051610c5191906145de565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c91906145f9565b612213565b604051610c8e919061450d565b60405180910390f35b348015610ca357600080fd5b50610cac612368565b604051610cb991906145de565b60405180910390f35b348015610cce57600080fd5b50610ce96004803603810190610ce491906147da565b61236e565b604051610cf691906145de565b60405180910390f35b348015610d0b57600080fd5b50610d266004803603810190610d219190614528565b6123f5565b005b348015610d3457600080fd5b50610d3d612558565b604051610d4a91906145de565b60405180910390f35b348015610d5f57600080fd5b50610d6861255e565b604051610d7591906145de565b60405180910390f35b348015610d8a57600080fd5b50610da56004803603810190610da091906146a3565b612564565b005b348015610db357600080fd5b50610dbc612678565b604051610dc991906145de565b60405180910390f35b348015610dde57600080fd5b50610df96004803603810190610df49190614528565b61267e565b005b348015610e0757600080fd5b50610e10612775565b604051610e1d91906145de565b60405180910390f35b348015610e3257600080fd5b50610e3b61277b565b604051610e4891906145de565b60405180910390f35b610e59612781565b73ffffffffffffffffffffffffffffffffffffffff16610e77611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec490614866565b60405180910390fd5b6000600c5414610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f09906148d2565b60405180910390fd5b43600c8190555042600d819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b606060038054610f6790614921565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9390614921565b8015610fe05780601f10610fb557610100808354040283529160200191610fe0565b820191906000526020600020905b815481529060010190602001808311610fc357829003601f168201915b5050505050905090565b6000610ffe610ff7612781565b8484612789565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b61107e612781565b73ffffffffffffffffffffffffffffffffffffffff1661109c611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990614866565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b60195481565b6111c6612781565b73ffffffffffffffffffffffffffffffffffffffff166111e4611aa5565b73ffffffffffffffffffffffffffffffffffffffff161461123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190614866565b60405180910390fd5b670de0b6b3a76400006103e8600161125061106c565b61125a9190614981565b6112649190614a0a565b61126e9190614a0a565b8110156112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790614aad565b60405180910390fd5b670de0b6b3a7640000816112c49190614981565b60088190555050565b60006112da848484612952565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611325612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90614b3f565b60405180910390fd5b6113b9856113b1612781565b858403612789565b60019150509392505050565b61dead81565b6113d3612781565b73ffffffffffffffffffffffffffffffffffffffff166113f1611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90614866565b60405180910390fd5b836010819055508260118190555081601381905550806012819055506012546013546011546010546114799190614b5f565b6114839190614b5f565b61148d9190614b5f565b600f81905550601e600f5411156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d090614c01565b60405180910390fd5b50505050565b60006012905090565b6114f0612781565b73ffffffffffffffffffffffffffffffffffffffff1661150e611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b90614866565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e990614c6d565b60405180910390fd5b601f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690614cd9565b60405180910390fd5b6001601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061177c6116e7612781565b8484600160006116f5612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117779190614b5f565b612789565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601c5481565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611882612781565b73ffffffffffffffffffffffffffffffffffffffff166118a0611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90614866565b60405180910390fd5b6119006000613756565b565b600061190c612781565b73ffffffffffffffffffffffffffffffffffffffff1661192a611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790614866565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6119aa612781565b73ffffffffffffffffffffffffffffffffffffffff166119c8611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590614866565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611b03612781565b73ffffffffffffffffffffffffffffffffffffffff16611b21611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e90614866565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611ba390614921565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcf90614921565b8015611c1c5780601f10611bf157610100808354040283529160200191611c1c565b820191906000526020600020905b815481529060010190602001808311611bff57829003601f168201915b5050505050905090565b611c2e612781565b73ffffffffffffffffffffffffffffffffffffffff16611c4c611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9990614866565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790614d6b565b60405180910390fd5b611d3a828261381c565b5050565b60135481565b601b5481565b60185481565b60008060016000611d5f612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390614dfd565b60405180910390fd5b611e30611e27612781565b85858403612789565b600191505092915050565b6000611e4f611e48612781565b8484612952565b6001905092915050565b611e61612781565b73ffffffffffffffffffffffffffffffffffffffff16611e7f611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecc90614866565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b602080528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b600c5481565b611fdb612781565b73ffffffffffffffffffffffffffffffffffffffff16611ff9611aa5565b73ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690614866565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120ec919061450d565b60405180910390a25050565b612100612781565b73ffffffffffffffffffffffffffffffffffffffff1661211e611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90614866565b60405180910390fd5b670de0b6b3a76400006103e8600561218a61106c565b6121949190614981565b61219e9190614a0a565b6121a89190614a0a565b8110156121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e190614e8f565b60405180910390fd5b670de0b6b3a7640000816121fe9190614981565b600a8190555050565b600d5481565b60085481565b600061221d612781565b73ffffffffffffffffffffffffffffffffffffffff1661223b611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614866565b60405180910390fd5b620186a0600161229f61106c565b6122a99190614981565b6122b39190614a0a565b8210156122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec90614f21565b60405180910390fd5b6103e8600561230261106c565b61230c9190614981565b6123169190614a0a565b821115612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f90614fb3565b60405180910390fd5b8160098190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123fd612781565b73ffffffffffffffffffffffffffffffffffffffff1661241b611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246890614866565b60405180910390fd5b601f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f49061501f565b60405180910390fd5b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b60125481565b61256c612781565b73ffffffffffffffffffffffffffffffffffffffff1661258a611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790614866565b60405180910390fd5b836015819055508260168190555081601881905550806017819055506017546018546016546015546126129190614b5f565b61261c9190614b5f565b6126269190614b5f565b601481905550601e6014541115612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614c01565b60405180910390fd5b50505050565b60115481565b612686612781565b73ffffffffffffffffffffffffffffffffffffffff166126a4611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f190614866565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612760906150b1565b60405180910390fd5b61277281613756565b50565b60165481565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90615143565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285e906151d5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161294591906145de565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b890615267565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a27906152f9565b60405180910390fd5b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab490615365565b60405180910390fd5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4190615365565b60405180910390fd5b60008103612b6357612b5e838360006138bd565b613751565b600b60009054906101000a900460ff161561322b57612b80611aa5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bee5750612bbe611aa5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c275750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c61575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c7a5750600560149054906101000a900460ff16155b1561322a57600b60019054906101000a900460ff16612d7457601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d345750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a906153d1565b60405180910390fd5b5b600e54600d54612d849190614b5f565b42108015612dde57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f41577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e93576001601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f40565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f3f576001601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe45750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561308b5760085481111561302e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302590615463565b60405180910390fd5b600a5461303a83611832565b826130459190614b5f565b1115613086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307d906154cf565b60405180910390fd5b613229565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561312e5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317d57600854811115613178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316f90615561565b60405180910390fd5b613228565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661322757600a546131da83611832565b826131e59190614b5f565b1115613226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321d906154cf565b60405180910390fd5b5b5b5b5b5b600061323630611832565b90506000600954821015905080801561325b5750600b60029054906101000a900460ff165b80156132745750600560149054906101000a900460ff16155b80156132ca5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133205750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133765750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ba576001600560146101000a81548160ff02191690831515021790555061339e613b3c565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134705750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561347a57600090505b6000811561374157602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134dd57506000601454115b156135cb5761350a60646134fc60145488613e2390919063ffffffff16565b613e3990919063ffffffff16565b90506014546016548261351d9190614981565b6135279190614a0a565b601a60008282546135389190614b5f565b92505081905550601454601854826135509190614981565b61355a9190614a0a565b601b600082825461356b9190614b5f565b92505081905550601454601554826135839190614981565b61358d9190614a0a565b6019600082825461359e9190614b5f565b92505081905550601454601754826135b69190614981565b6135c09190614a0a565b601c81905550613711565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362657506000600f54115b15613710576136536064613645600f5488613e2390919063ffffffff16565b613e3990919063ffffffff16565b9050600f54601154826136669190614981565b6136709190614a0a565b601a60008282546136819190614b5f565b92505081905550600f54601354826136999190614981565b6136a39190614a0a565b601b60008282546136b49190614b5f565b92505081905550600f54601054826136cc9190614981565b6136d69190614a0a565b601960008282546136e79190614b5f565b92505081905550600f54601254826136ff9190614981565b6137099190614a0a565b601c819055505b5b60008111156137325761372687601c54613e4f565b6137318730836138bd565b5b808561373e9190615581565b94505b61374c8787876138bd565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361392c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392390615267565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361399b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613992906152f9565b60405180910390fd5b6139a6838383614025565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2390615627565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613abf9190614b5f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b2391906145de565b60405180910390a3613b3684848461402a565b50505050565b6000613b4730611832565b90506000601b54601954601a54613b5e9190614b5f565b613b689190614b5f565b9050600080831480613b7a5750600082145b15613b8757505050613e21565b6014600954613b969190614981565b831115613baf576014600954613bac9190614981565b92505b6000600283601a5486613bc29190614981565b613bcc9190614a0a565b613bd69190614a0a565b90506000613bed828661402f90919063ffffffff16565b90506000479050613bfd82614045565b6000613c12824761402f90919063ffffffff16565b90506000613c3d87613c2f60195485613e2390919063ffffffff16565b613e3990919063ffffffff16565b90506000613c6888613c5a601b5486613e2390919063ffffffff16565b613e3990919063ffffffff16565b90506000818385613c799190615581565b613c839190615581565b90506000601a8190555060006019819055506000601b81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613ce390615678565b60006040518083038185875af1925050503d8060008114613d20576040519150601f19603f3d011682016040523d82523d6000602084013e613d25565b606091505b505080985050600087118015613d3b5750600081115b15613d8857613d4a8782614282565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601a54604051613d7f9392919061568d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dce90615678565b60006040518083038185875af1925050503d8060008114613e0b576040519150601f19603f3d011682016040523d82523d6000602084013e613e10565b606091505b505080985050505050505050505050505b565b60008183613e319190614981565b905092915050565b60008183613e479190614a0a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eb590615736565b60405180910390fd5b613eca82600083614025565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f47906157c8565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613fa79190615581565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161400c91906145de565b60405180910390a36140208360008461402a565b505050565b505050565b505050565b6000818361403d9190615581565b905092915050565b6000600267ffffffffffffffff811115614062576140616157e8565b5b6040519080825280602002602001820160405280156140905781602001602082028036833780820191505090505b50905030816000815181106140a8576140a7615817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561414d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614171919061585b565b8160018151811061418557614184615817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141ea307f000000000000000000000000000000000000000000000000000000000000000084612789565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161424c959493929190615981565b600060405180830381600087803b15801561426657600080fd5b505af115801561427a573d6000803e3d6000fd5b505050505050565b6142ad307f000000000000000000000000000000000000000000000000000000000000000084612789565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401614314969594939291906159db565b60606040518083038185885af1158015614332573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143579190615a51565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561439857808201518184015260208101905061437d565b838111156143a7576000848401525b50505050565b6000601f19601f8301169050919050565b60006143c98261435e565b6143d38185614369565b93506143e381856020860161437a565b6143ec816143ad565b840191505092915050565b6000602082019050818103600083015261441181846143be565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144498261441e565b9050919050565b6144598161443e565b811461446457600080fd5b50565b60008135905061447681614450565b92915050565b6000819050919050565b61448f8161447c565b811461449a57600080fd5b50565b6000813590506144ac81614486565b92915050565b600080604083850312156144c9576144c8614419565b5b60006144d785828601614467565b92505060206144e88582860161449d565b9150509250929050565b60008115159050919050565b614507816144f2565b82525050565b600060208201905061452260008301846144fe565b92915050565b60006020828403121561453e5761453d614419565b5b600061454c84828501614467565b91505092915050565b6000819050919050565b600061457a6145756145708461441e565b614555565b61441e565b9050919050565b600061458c8261455f565b9050919050565b600061459e82614581565b9050919050565b6145ae81614593565b82525050565b60006020820190506145c960008301846145a5565b92915050565b6145d88161447c565b82525050565b60006020820190506145f360008301846145cf565b92915050565b60006020828403121561460f5761460e614419565b5b600061461d8482850161449d565b91505092915050565b60008060006060848603121561463f5761463e614419565b5b600061464d86828701614467565b935050602061465e86828701614467565b925050604061466f8682870161449d565b9150509250925092565b6146828161443e565b82525050565b600060208201905061469d6000830184614679565b92915050565b600080600080608085870312156146bd576146bc614419565b5b60006146cb8782880161449d565b94505060206146dc8782880161449d565b93505060406146ed8782880161449d565b92505060606146fe8782880161449d565b91505092959194509250565b600060ff82169050919050565b6147208161470a565b82525050565b600060208201905061473b6000830184614717565b92915050565b61474a816144f2565b811461475557600080fd5b50565b60008135905061476781614741565b92915050565b6000806040838503121561478457614783614419565b5b600061479285828601614467565b92505060206147a385828601614758565b9150509250929050565b6000602082840312156147c3576147c2614419565b5b60006147d184828501614758565b91505092915050565b600080604083850312156147f1576147f0614419565b5b60006147ff85828601614467565b925050602061481085828601614467565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614850602083614369565b915061485b8261481a565b602082019050919050565b6000602082019050818103600083015261487f81614843565b9050919050565b7f416c7265616479206c61756e6368656420626f69000000000000000000000000600082015250565b60006148bc601483614369565b91506148c782614886565b602082019050919050565b600060208201905081810360008301526148eb816148af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061493957607f821691505b60208210810361494c5761494b6148f2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061498c8261447c565b91506149978361447c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149d0576149cf614952565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a158261447c565b9150614a208361447c565b925082614a3057614a2f6149db565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614a97602f83614369565b9150614aa282614a3b565b604082019050919050565b60006020820190508181036000830152614ac681614a8a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614b29602883614369565b9150614b3482614acd565b604082019050919050565b60006020820190508181036000830152614b5881614b1c565b9050919050565b6000614b6a8261447c565b9150614b758361447c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614baa57614ba9614952565b5b828201905092915050565b7f4d757374206b656570206665657320617420313125206f72206c657373000000600082015250565b6000614beb601d83614369565b9150614bf682614bb5565b602082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f57652063616e206e6f7420626c61636b6c69737420726f757465720000000000600082015250565b6000614c57601b83614369565b9150614c6282614c21565b602082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f536e6970657220616c7265616479206578697374000000000000000000000000600082015250565b6000614cc3601483614369565b9150614cce82614c8d565b602082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d55603983614369565b9150614d6082614cf9565b604082019050919050565b60006020820190508181036000830152614d8481614d48565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614de7602583614369565b9150614df282614d8b565b604082019050919050565b60006020820190508181036000830152614e1681614dda565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614e79602483614369565b9150614e8482614e1d565b604082019050919050565b60006020820190508181036000830152614ea881614e6c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614f0b603583614369565b9150614f1682614eaf565b604082019050919050565b60006020820190508181036000830152614f3a81614efe565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614f9d603483614369565b9150614fa882614f41565b604082019050919050565b60006020820190508181036000830152614fcc81614f90565b9050919050565b7f4e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000615009600c83614369565b915061501482614fd3565b602082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061509b602683614369565b91506150a68261503f565b604082019050919050565b600060208201905081810360008301526150ca8161508e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061512d602483614369565b9150615138826150d1565b604082019050919050565b6000602082019050818103600083015261515c81615120565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151bf602283614369565b91506151ca82615163565b604082019050919050565b600060208201905081810360008301526151ee816151b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615251602583614369565b915061525c826151f5565b604082019050919050565b6000602082019050818103600083015261528081615244565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006152e3602383614369565b91506152ee82615287565b604082019050919050565b60006020820190508181036000830152615312816152d6565b9050919050565b7f536e697065722064657465637465640000000000000000000000000000000000600082015250565b600061534f600f83614369565b915061535a82615319565b602082019050919050565b6000602082019050818103600083015261537e81615342565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006153bb601683614369565b91506153c682615385565b602082019050919050565b600060208201905081810360008301526153ea816153ae565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061544d603583614369565b9150615458826153f1565b604082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006154b9601383614369565b91506154c482615483565b602082019050919050565b600060208201905081810360008301526154e8816154ac565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061554b603683614369565b9150615556826154ef565b604082019050919050565b6000602082019050818103600083015261557a8161553e565b9050919050565b600061558c8261447c565b91506155978361447c565b9250828210156155aa576155a9614952565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615611602683614369565b915061561c826155b5565b604082019050919050565b6000602082019050818103600083015261564081615604565b9050919050565b600081905092915050565b50565b6000615662600083615647565b915061566d82615652565b600082019050919050565b600061568382615655565b9150819050919050565b60006060820190506156a260008301866145cf565b6156af60208301856145cf565b6156bc60408301846145cf565b949350505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615720602183614369565b915061572b826156c4565b604082019050919050565b6000602082019050818103600083015261574f81615713565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157b2602283614369565b91506157bd82615756565b604082019050919050565b600060208201905081810360008301526157e1816157a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061585581614450565b92915050565b60006020828403121561587157615870614419565b5b600061587f84828501615846565b91505092915050565b6000819050919050565b60006158ad6158a86158a384615888565b614555565b61447c565b9050919050565b6158bd81615892565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6158f88161443e565b82525050565b600061590a83836158ef565b60208301905092915050565b6000602082019050919050565b600061592e826158c3565b61593881856158ce565b9350615943836158df565b8060005b8381101561597457815161595b88826158fe565b975061596683615916565b925050600181019050615947565b5085935050505092915050565b600060a08201905061599660008301886145cf565b6159a360208301876158b4565b81810360408301526159b58186615923565b90506159c46060830185614679565b6159d160808301846145cf565b9695505050505050565b600060c0820190506159f06000830189614679565b6159fd60208301886145cf565b615a0a60408301876158b4565b615a1760608301866158b4565b615a246080830185614679565b615a3160a08301846145cf565b979650505050505050565b600081519050615a4b81614486565b92915050565b600080600060608486031215615a6a57615a69614419565b5b6000615a7886828701615a3c565b9350506020615a8986828701615a3c565b9250506040615a9a86828701615a3c565b915050925092509256fea26469706673582212202e2378dabb715f6b0f474d8d4492cb814699eb2a37e33cfa8e356f517286364264736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80638ea5220f116101dc578063c024666811610102578063dd7bd775116100a0578063f11a24d31161006f578063f11a24d314610da7578063f2fde38b14610dd2578063f637434214610dfb578063f8b45b0514610e26576103a2565b8063dd7bd77514610cff578063e2f4560514610d28578063e71dc3f514610d53578063e7ad9fcd14610d7e576103a2565b8063c8c8ebe4116100dc578063c8c8ebe414610c2f578063d257b34f14610c5a578063d85ba06314610c97578063dd62ed3e14610cc2576103a2565b8063c024666814610bb2578063c18bc19514610bdb578063c6d2577d14610c04576103a2565b8063a0d82dc51161017a578063adb873bd11610149578063adb873bd14610af4578063b62496f514610b1f578063bbc0c74214610b5c578063bf56b37114610b87576103a2565b8063a0d82dc514610a26578063a457c2d714610a51578063a9059cbb14610a8e578063aacebbe314610acb576103a2565b806395d89b41116101b657806395d89b411461097c5780639a7a23d6146109a75780639c3b4fdc146109d05780639fccce32146109fb576103a2565b80638ea5220f146108fd5780639213691314610928578063924de9b714610953576103a2565b806338d6f847116102c15780636ddd17131161025f5780637571336a1161022e5780637571336a1461085357806375f0a8741461087c5780637bce5a04146108a75780638da5cb5b146108d2576103a2565b80636ddd1713146107a957806370a08231146107d4578063715018a614610811578063751039fc14610828576103a2565b80634a62bb651161029b5780634a62bb65146106eb5780634fbee1931461071657806352cf29b2146107535780636a486a8e1461077e576103a2565b806338d6f8471461065a578063395093511461068357806349bd5a5e146106c0576103a2565b80631816467f1161033957806323b872dd1161030857806323b872dd1461059e57806327c8f835146105db5780632e6ed7ef14610606578063313ce5671461062f576103a2565b80631816467f146104f65780631a8145bb1461051f5780631f3fed8f1461054a578063203e727e14610575576103a2565b80630f3a325f116103755780630f3a325f1461042657806310d5de53146104635780631694505e146104a057806318160ddd146104cb576103a2565b806301339c21146103a757806306fdde03146103be578063095ea7b3146103e9576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e51565b005b3480156103ca57600080fd5b506103d3610f58565b6040516103e091906143f7565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b91906144b2565b610fea565b60405161041d919061450d565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190614528565b611008565b60405161045a919061450d565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190614528565b611028565b604051610497919061450d565b60405180910390f35b3480156104ac57600080fd5b506104b5611048565b6040516104c291906145b4565b60405180910390f35b3480156104d757600080fd5b506104e061106c565b6040516104ed91906145de565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190614528565b611076565b005b34801561052b57600080fd5b506105346111b2565b60405161054191906145de565b60405180910390f35b34801561055657600080fd5b5061055f6111b8565b60405161056c91906145de565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906145f9565b6111be565b005b3480156105aa57600080fd5b506105c560048036038101906105c09190614626565b6112cd565b6040516105d2919061450d565b60405180910390f35b3480156105e757600080fd5b506105f06113c5565b6040516105fd9190614688565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906146a3565b6113cb565b005b34801561063b57600080fd5b506106446114df565b6040516106519190614726565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190614528565b6114e8565b005b34801561068f57600080fd5b506106aa60048036038101906106a591906144b2565b6116da565b6040516106b7919061450d565b60405180910390f35b3480156106cc57600080fd5b506106d5611786565b6040516106e29190614688565b60405180910390f35b3480156106f757600080fd5b506107006117aa565b60405161070d919061450d565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190614528565b6117bd565b60405161074a919061450d565b60405180910390f35b34801561075f57600080fd5b50610768611813565b60405161077591906145de565b60405180910390f35b34801561078a57600080fd5b50610793611819565b6040516107a091906145de565b60405180910390f35b3480156107b557600080fd5b506107be61181f565b6040516107cb919061450d565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f69190614528565b611832565b60405161080891906145de565b60405180910390f35b34801561081d57600080fd5b5061082661187a565b005b34801561083457600080fd5b5061083d611902565b60405161084a919061450d565b60405180910390f35b34801561085f57600080fd5b5061087a6004803603810190610875919061476d565b6119a2565b005b34801561088857600080fd5b50610891611a79565b60405161089e9190614688565b60405180910390f35b3480156108b357600080fd5b506108bc611a9f565b6040516108c991906145de565b60405180910390f35b3480156108de57600080fd5b506108e7611aa5565b6040516108f49190614688565b60405180910390f35b34801561090957600080fd5b50610912611acf565b60405161091f9190614688565b60405180910390f35b34801561093457600080fd5b5061093d611af5565b60405161094a91906145de565b60405180910390f35b34801561095f57600080fd5b5061097a600480360381019061097591906147ad565b611afb565b005b34801561098857600080fd5b50610991611b94565b60405161099e91906143f7565b60405180910390f35b3480156109b357600080fd5b506109ce60048036038101906109c9919061476d565b611c26565b005b3480156109dc57600080fd5b506109e5611d3e565b6040516109f291906145de565b60405180910390f35b348015610a0757600080fd5b50610a10611d44565b604051610a1d91906145de565b60405180910390f35b348015610a3257600080fd5b50610a3b611d4a565b604051610a4891906145de565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603810190610a7391906144b2565b611d50565b604051610a85919061450d565b60405180910390f35b348015610a9a57600080fd5b50610ab56004803603810190610ab091906144b2565b611e3b565b604051610ac2919061450d565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614528565b611e59565b005b348015610b0057600080fd5b50610b09611f95565b604051610b1691906145de565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b419190614528565b611f9b565b604051610b53919061450d565b60405180910390f35b348015610b6857600080fd5b50610b71611fba565b604051610b7e919061450d565b60405180910390f35b348015610b9357600080fd5b50610b9c611fcd565b604051610ba991906145de565b60405180910390f35b348015610bbe57600080fd5b50610bd96004803603810190610bd4919061476d565b611fd3565b005b348015610be757600080fd5b50610c026004803603810190610bfd91906145f9565b6120f8565b005b348015610c1057600080fd5b50610c19612207565b604051610c2691906145de565b60405180910390f35b348015610c3b57600080fd5b50610c4461220d565b604051610c5191906145de565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c91906145f9565b612213565b604051610c8e919061450d565b60405180910390f35b348015610ca357600080fd5b50610cac612368565b604051610cb991906145de565b60405180910390f35b348015610cce57600080fd5b50610ce96004803603810190610ce491906147da565b61236e565b604051610cf691906145de565b60405180910390f35b348015610d0b57600080fd5b50610d266004803603810190610d219190614528565b6123f5565b005b348015610d3457600080fd5b50610d3d612558565b604051610d4a91906145de565b60405180910390f35b348015610d5f57600080fd5b50610d6861255e565b604051610d7591906145de565b60405180910390f35b348015610d8a57600080fd5b50610da56004803603810190610da091906146a3565b612564565b005b348015610db357600080fd5b50610dbc612678565b604051610dc991906145de565b60405180910390f35b348015610dde57600080fd5b50610df96004803603810190610df49190614528565b61267e565b005b348015610e0757600080fd5b50610e10612775565b604051610e1d91906145de565b60405180910390f35b348015610e3257600080fd5b50610e3b61277b565b604051610e4891906145de565b60405180910390f35b610e59612781565b73ffffffffffffffffffffffffffffffffffffffff16610e77611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec490614866565b60405180910390fd5b6000600c5414610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f09906148d2565b60405180910390fd5b43600c8190555042600d819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b606060038054610f6790614921565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9390614921565b8015610fe05780601f10610fb557610100808354040283529160200191610fe0565b820191906000526020600020905b815481529060010190602001808311610fc357829003601f168201915b5050505050905090565b6000610ffe610ff7612781565b8484612789565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b61107e612781565b73ffffffffffffffffffffffffffffffffffffffff1661109c611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990614866565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b60195481565b6111c6612781565b73ffffffffffffffffffffffffffffffffffffffff166111e4611aa5565b73ffffffffffffffffffffffffffffffffffffffff161461123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190614866565b60405180910390fd5b670de0b6b3a76400006103e8600161125061106c565b61125a9190614981565b6112649190614a0a565b61126e9190614a0a565b8110156112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790614aad565b60405180910390fd5b670de0b6b3a7640000816112c49190614981565b60088190555050565b60006112da848484612952565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611325612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90614b3f565b60405180910390fd5b6113b9856113b1612781565b858403612789565b60019150509392505050565b61dead81565b6113d3612781565b73ffffffffffffffffffffffffffffffffffffffff166113f1611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90614866565b60405180910390fd5b836010819055508260118190555081601381905550806012819055506012546013546011546010546114799190614b5f565b6114839190614b5f565b61148d9190614b5f565b600f81905550601e600f5411156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d090614c01565b60405180910390fd5b50505050565b60006012905090565b6114f0612781565b73ffffffffffffffffffffffffffffffffffffffff1661150e611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b90614866565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e990614c6d565b60405180910390fd5b601f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690614cd9565b60405180910390fd5b6001601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061177c6116e7612781565b8484600160006116f5612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117779190614b5f565b612789565b6001905092915050565b7f00000000000000000000000095dcbd97812ea269403bb02b0f03f29bacabb3cd81565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601c5481565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611882612781565b73ffffffffffffffffffffffffffffffffffffffff166118a0611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90614866565b60405180910390fd5b6119006000613756565b565b600061190c612781565b73ffffffffffffffffffffffffffffffffffffffff1661192a611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790614866565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6119aa612781565b73ffffffffffffffffffffffffffffffffffffffff166119c8611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590614866565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611b03612781565b73ffffffffffffffffffffffffffffffffffffffff16611b21611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e90614866565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611ba390614921565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcf90614921565b8015611c1c5780601f10611bf157610100808354040283529160200191611c1c565b820191906000526020600020905b815481529060010190602001808311611bff57829003601f168201915b5050505050905090565b611c2e612781565b73ffffffffffffffffffffffffffffffffffffffff16611c4c611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9990614866565b60405180910390fd5b7f00000000000000000000000095dcbd97812ea269403bb02b0f03f29bacabb3cd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790614d6b565b60405180910390fd5b611d3a828261381c565b5050565b60135481565b601b5481565b60185481565b60008060016000611d5f612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390614dfd565b60405180910390fd5b611e30611e27612781565b85858403612789565b600191505092915050565b6000611e4f611e48612781565b8484612952565b6001905092915050565b611e61612781565b73ffffffffffffffffffffffffffffffffffffffff16611e7f611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecc90614866565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b602080528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b600c5481565b611fdb612781565b73ffffffffffffffffffffffffffffffffffffffff16611ff9611aa5565b73ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690614866565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120ec919061450d565b60405180910390a25050565b612100612781565b73ffffffffffffffffffffffffffffffffffffffff1661211e611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90614866565b60405180910390fd5b670de0b6b3a76400006103e8600561218a61106c565b6121949190614981565b61219e9190614a0a565b6121a89190614a0a565b8110156121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e190614e8f565b60405180910390fd5b670de0b6b3a7640000816121fe9190614981565b600a8190555050565b600d5481565b60085481565b600061221d612781565b73ffffffffffffffffffffffffffffffffffffffff1661223b611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614866565b60405180910390fd5b620186a0600161229f61106c565b6122a99190614981565b6122b39190614a0a565b8210156122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec90614f21565b60405180910390fd5b6103e8600561230261106c565b61230c9190614981565b6123169190614a0a565b821115612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f90614fb3565b60405180910390fd5b8160098190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123fd612781565b73ffffffffffffffffffffffffffffffffffffffff1661241b611aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246890614866565b60405180910390fd5b601f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f49061501f565b60405180910390fd5b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b60125481565b61256c612781565b73ffffffffffffffffffffffffffffffffffffffff1661258a611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790614866565b60405180910390fd5b836015819055508260168190555081601881905550806017819055506017546018546016546015546126129190614b5f565b61261c9190614b5f565b6126269190614b5f565b601481905550601e6014541115612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614c01565b60405180910390fd5b50505050565b60115481565b612686612781565b73ffffffffffffffffffffffffffffffffffffffff166126a4611aa5565b73ffffffffffffffffffffffffffffffffffffffff16146126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f190614866565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612760906150b1565b60405180910390fd5b61277281613756565b50565b60165481565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90615143565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285e906151d5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161294591906145de565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b890615267565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a27906152f9565b60405180910390fd5b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab490615365565b60405180910390fd5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4190615365565b60405180910390fd5b60008103612b6357612b5e838360006138bd565b613751565b600b60009054906101000a900460ff161561322b57612b80611aa5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bee5750612bbe611aa5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c275750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c61575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c7a5750600560149054906101000a900460ff16155b1561322a57600b60019054906101000a900460ff16612d7457601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d345750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a906153d1565b60405180910390fd5b5b600e54600d54612d849190614b5f565b42108015612dde57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f41577f00000000000000000000000095dcbd97812ea269403bb02b0f03f29bacabb3cd73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e93576001601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f40565b7f00000000000000000000000095dcbd97812ea269403bb02b0f03f29bacabb3cd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f3f576001601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe45750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561308b5760085481111561302e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302590615463565b60405180910390fd5b600a5461303a83611832565b826130459190614b5f565b1115613086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307d906154cf565b60405180910390fd5b613229565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561312e5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317d57600854811115613178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316f90615561565b60405180910390fd5b613228565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661322757600a546131da83611832565b826131e59190614b5f565b1115613226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321d906154cf565b60405180910390fd5b5b5b5b5b5b600061323630611832565b90506000600954821015905080801561325b5750600b60029054906101000a900460ff165b80156132745750600560149054906101000a900460ff16155b80156132ca5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133205750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133765750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ba576001600560146101000a81548160ff02191690831515021790555061339e613b3c565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134705750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561347a57600090505b6000811561374157602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134dd57506000601454115b156135cb5761350a60646134fc60145488613e2390919063ffffffff16565b613e3990919063ffffffff16565b90506014546016548261351d9190614981565b6135279190614a0a565b601a60008282546135389190614b5f565b92505081905550601454601854826135509190614981565b61355a9190614a0a565b601b600082825461356b9190614b5f565b92505081905550601454601554826135839190614981565b61358d9190614a0a565b6019600082825461359e9190614b5f565b92505081905550601454601754826135b69190614981565b6135c09190614a0a565b601c81905550613711565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362657506000600f54115b15613710576136536064613645600f5488613e2390919063ffffffff16565b613e3990919063ffffffff16565b9050600f54601154826136669190614981565b6136709190614a0a565b601a60008282546136819190614b5f565b92505081905550600f54601354826136999190614981565b6136a39190614a0a565b601b60008282546136b49190614b5f565b92505081905550600f54601054826136cc9190614981565b6136d69190614a0a565b601960008282546136e79190614b5f565b92505081905550600f54601254826136ff9190614981565b6137099190614a0a565b601c819055505b5b60008111156137325761372687601c54613e4f565b6137318730836138bd565b5b808561373e9190615581565b94505b61374c8787876138bd565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361392c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392390615267565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361399b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613992906152f9565b60405180910390fd5b6139a6838383614025565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2390615627565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613abf9190614b5f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b2391906145de565b60405180910390a3613b3684848461402a565b50505050565b6000613b4730611832565b90506000601b54601954601a54613b5e9190614b5f565b613b689190614b5f565b9050600080831480613b7a5750600082145b15613b8757505050613e21565b6014600954613b969190614981565b831115613baf576014600954613bac9190614981565b92505b6000600283601a5486613bc29190614981565b613bcc9190614a0a565b613bd69190614a0a565b90506000613bed828661402f90919063ffffffff16565b90506000479050613bfd82614045565b6000613c12824761402f90919063ffffffff16565b90506000613c3d87613c2f60195485613e2390919063ffffffff16565b613e3990919063ffffffff16565b90506000613c6888613c5a601b5486613e2390919063ffffffff16565b613e3990919063ffffffff16565b90506000818385613c799190615581565b613c839190615581565b90506000601a8190555060006019819055506000601b81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613ce390615678565b60006040518083038185875af1925050503d8060008114613d20576040519150601f19603f3d011682016040523d82523d6000602084013e613d25565b606091505b505080985050600087118015613d3b5750600081115b15613d8857613d4a8782614282565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601a54604051613d7f9392919061568d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dce90615678565b60006040518083038185875af1925050503d8060008114613e0b576040519150601f19603f3d011682016040523d82523d6000602084013e613e10565b606091505b505080985050505050505050505050505b565b60008183613e319190614981565b905092915050565b60008183613e479190614a0a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eb590615736565b60405180910390fd5b613eca82600083614025565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f47906157c8565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613fa79190615581565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161400c91906145de565b60405180910390a36140208360008461402a565b505050565b505050565b505050565b6000818361403d9190615581565b905092915050565b6000600267ffffffffffffffff811115614062576140616157e8565b5b6040519080825280602002602001820160405280156140905781602001602082028036833780820191505090505b50905030816000815181106140a8576140a7615817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561414d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614171919061585b565b8160018151811061418557614184615817565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141ea307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612789565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161424c959493929190615981565b600060405180830381600087803b15801561426657600080fd5b505af115801561427a573d6000803e3d6000fd5b505050505050565b6142ad307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612789565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401614314969594939291906159db565b60606040518083038185885af1158015614332573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143579190615a51565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561439857808201518184015260208101905061437d565b838111156143a7576000848401525b50505050565b6000601f19601f8301169050919050565b60006143c98261435e565b6143d38185614369565b93506143e381856020860161437a565b6143ec816143ad565b840191505092915050565b6000602082019050818103600083015261441181846143be565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144498261441e565b9050919050565b6144598161443e565b811461446457600080fd5b50565b60008135905061447681614450565b92915050565b6000819050919050565b61448f8161447c565b811461449a57600080fd5b50565b6000813590506144ac81614486565b92915050565b600080604083850312156144c9576144c8614419565b5b60006144d785828601614467565b92505060206144e88582860161449d565b9150509250929050565b60008115159050919050565b614507816144f2565b82525050565b600060208201905061452260008301846144fe565b92915050565b60006020828403121561453e5761453d614419565b5b600061454c84828501614467565b91505092915050565b6000819050919050565b600061457a6145756145708461441e565b614555565b61441e565b9050919050565b600061458c8261455f565b9050919050565b600061459e82614581565b9050919050565b6145ae81614593565b82525050565b60006020820190506145c960008301846145a5565b92915050565b6145d88161447c565b82525050565b60006020820190506145f360008301846145cf565b92915050565b60006020828403121561460f5761460e614419565b5b600061461d8482850161449d565b91505092915050565b60008060006060848603121561463f5761463e614419565b5b600061464d86828701614467565b935050602061465e86828701614467565b925050604061466f8682870161449d565b9150509250925092565b6146828161443e565b82525050565b600060208201905061469d6000830184614679565b92915050565b600080600080608085870312156146bd576146bc614419565b5b60006146cb8782880161449d565b94505060206146dc8782880161449d565b93505060406146ed8782880161449d565b92505060606146fe8782880161449d565b91505092959194509250565b600060ff82169050919050565b6147208161470a565b82525050565b600060208201905061473b6000830184614717565b92915050565b61474a816144f2565b811461475557600080fd5b50565b60008135905061476781614741565b92915050565b6000806040838503121561478457614783614419565b5b600061479285828601614467565b92505060206147a385828601614758565b9150509250929050565b6000602082840312156147c3576147c2614419565b5b60006147d184828501614758565b91505092915050565b600080604083850312156147f1576147f0614419565b5b60006147ff85828601614467565b925050602061481085828601614467565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614850602083614369565b915061485b8261481a565b602082019050919050565b6000602082019050818103600083015261487f81614843565b9050919050565b7f416c7265616479206c61756e6368656420626f69000000000000000000000000600082015250565b60006148bc601483614369565b91506148c782614886565b602082019050919050565b600060208201905081810360008301526148eb816148af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061493957607f821691505b60208210810361494c5761494b6148f2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061498c8261447c565b91506149978361447c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149d0576149cf614952565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a158261447c565b9150614a208361447c565b925082614a3057614a2f6149db565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614a97602f83614369565b9150614aa282614a3b565b604082019050919050565b60006020820190508181036000830152614ac681614a8a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614b29602883614369565b9150614b3482614acd565b604082019050919050565b60006020820190508181036000830152614b5881614b1c565b9050919050565b6000614b6a8261447c565b9150614b758361447c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614baa57614ba9614952565b5b828201905092915050565b7f4d757374206b656570206665657320617420313125206f72206c657373000000600082015250565b6000614beb601d83614369565b9150614bf682614bb5565b602082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f57652063616e206e6f7420626c61636b6c69737420726f757465720000000000600082015250565b6000614c57601b83614369565b9150614c6282614c21565b602082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f536e6970657220616c7265616479206578697374000000000000000000000000600082015250565b6000614cc3601483614369565b9150614cce82614c8d565b602082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d55603983614369565b9150614d6082614cf9565b604082019050919050565b60006020820190508181036000830152614d8481614d48565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614de7602583614369565b9150614df282614d8b565b604082019050919050565b60006020820190508181036000830152614e1681614dda565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614e79602483614369565b9150614e8482614e1d565b604082019050919050565b60006020820190508181036000830152614ea881614e6c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614f0b603583614369565b9150614f1682614eaf565b604082019050919050565b60006020820190508181036000830152614f3a81614efe565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614f9d603483614369565b9150614fa882614f41565b604082019050919050565b60006020820190508181036000830152614fcc81614f90565b9050919050565b7f4e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000615009600c83614369565b915061501482614fd3565b602082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061509b602683614369565b91506150a68261503f565b604082019050919050565b600060208201905081810360008301526150ca8161508e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061512d602483614369565b9150615138826150d1565b604082019050919050565b6000602082019050818103600083015261515c81615120565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151bf602283614369565b91506151ca82615163565b604082019050919050565b600060208201905081810360008301526151ee816151b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615251602583614369565b915061525c826151f5565b604082019050919050565b6000602082019050818103600083015261528081615244565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006152e3602383614369565b91506152ee82615287565b604082019050919050565b60006020820190508181036000830152615312816152d6565b9050919050565b7f536e697065722064657465637465640000000000000000000000000000000000600082015250565b600061534f600f83614369565b915061535a82615319565b602082019050919050565b6000602082019050818103600083015261537e81615342565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006153bb601683614369565b91506153c682615385565b602082019050919050565b600060208201905081810360008301526153ea816153ae565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061544d603583614369565b9150615458826153f1565b604082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006154b9601383614369565b91506154c482615483565b602082019050919050565b600060208201905081810360008301526154e8816154ac565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061554b603683614369565b9150615556826154ef565b604082019050919050565b6000602082019050818103600083015261557a8161553e565b9050919050565b600061558c8261447c565b91506155978361447c565b9250828210156155aa576155a9614952565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615611602683614369565b915061561c826155b5565b604082019050919050565b6000602082019050818103600083015261564081615604565b9050919050565b600081905092915050565b50565b6000615662600083615647565b915061566d82615652565b600082019050919050565b600061568382615655565b9150819050919050565b60006060820190506156a260008301866145cf565b6156af60208301856145cf565b6156bc60408301846145cf565b949350505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615720602183614369565b915061572b826156c4565b604082019050919050565b6000602082019050818103600083015261574f81615713565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157b2602283614369565b91506157bd82615756565b604082019050919050565b600060208201905081810360008301526157e1816157a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061585581614450565b92915050565b60006020828403121561587157615870614419565b5b600061587f84828501615846565b91505092915050565b6000819050919050565b60006158ad6158a86158a384615888565b614555565b61447c565b9050919050565b6158bd81615892565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6158f88161443e565b82525050565b600061590a83836158ef565b60208301905092915050565b6000602082019050919050565b600061592e826158c3565b61593881856158ce565b9350615943836158df565b8060005b8381101561597457815161595b88826158fe565b975061596683615916565b925050600181019050615947565b5085935050505092915050565b600060a08201905061599660008301886145cf565b6159a360208301876158b4565b81810360408301526159b58186615923565b90506159c46060830185614679565b6159d160808301846145cf565b9695505050505050565b600060c0820190506159f06000830189614679565b6159fd60208301886145cf565b615a0a60408301876158b4565b615a1760608301866158b4565b615a246080830185614679565b615a3160a08301846145cf565b979650505050505050565b600081519050615a4b81614486565b92915050565b600080600060608486031215615a6a57615a69614419565b5b6000615a7886828701615a3c565b9350506020615a8986828701615a3c565b9250506040615a9a86828701615a3c565b915050925092509256fea26469706673582212202e2378dabb715f6b0f474d8d4492cb814699eb2a37e33cfa8e356f517286364264736f6c634300080f0033

Deployed Bytecode Sourcemap

19492:16436:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23679:246;;;;;;;;;;;;;:::i;:::-;;5235:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6707:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20944:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20874:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19569:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5724:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27609:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20624:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20584;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24673:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6925:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19672:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25591:527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5566:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27908:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7462:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19627:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19949:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27774:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20698:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20383:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20029:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5895:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1672:103;;;;;;;;;;;;;:::i;:::-;;23977:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25220:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19764:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20226:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1364:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19801:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20423:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25483:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5454:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26862:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20345:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20664:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20545:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7767:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6080:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27370:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20508:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21142:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19989:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20069:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26672:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24956:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20101:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19834:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24168:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20187:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6359:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28209:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19876:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20309:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26126:538;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20268:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1930:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20466:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19916:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23679:246;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23747:1:::1;23733:10;;:15;23725:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23797:12;23784:10;:25;;;;23842:15;23820:19;:37;;;;23884:4;23868:13;;:20;;;;;;;;;;;;;;;;;;23913:4;23899:11;;:18;;;;;;;;;;;;;;;;;;23679:246::o:0;5235:100::-;5289:13;5322:5;5315:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5235:100;:::o;6707:210::-;6826:4;6848:39;6857:12;:10;:12::i;:::-;6871:7;6880:6;6848:8;:39::i;:::-;6905:4;6898:11;;6707:210;;;;:::o;20944:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;20874:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;19569:51::-;;;:::o;5724:108::-;5785:7;5812:12;;5805:19;;5724:108;:::o;27609:157::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27716:9:::1;;;;;;;;;;;27688:38;;27705:9;27688:38;;;;;;;;;;;;27749:9;27737;;:21;;;;;;;;;;;;;;;;;;27609:157:::0;:::o;20624:33::-;;;;:::o;20584:::-;;;;:::o;24673:275::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24810:4:::1;24802;24797:1;24781:13;:11;:13::i;:::-;:17;;;;:::i;:::-;24780:26;;;;:::i;:::-;24779:35;;;;:::i;:::-;24769:6;:45;;24747:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;24933:6;24923;:17;;;;:::i;:::-;24900:20;:40;;;;24673:275:::0;:::o;6925:529::-;7065:4;7082:36;7092:6;7100:9;7111:6;7082:9;:36::i;:::-;7131:24;7158:11;:19;7170:6;7158:19;;;;;;;;;;;;;;;:33;7178:12;:10;:12::i;:::-;7158:33;;;;;;;;;;;;;;;;7131:60;;7244:6;7224:16;:26;;7202:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;7354:57;7363:6;7371:12;:10;:12::i;:::-;7404:6;7385:16;:25;7354:8;:57::i;:::-;7442:4;7435:11;;;6925:529;;;;;:::o;19672:53::-;19718:6;19672:53;:::o;25591:527::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25786:13:::1;25768:15;:31;;;;25828:13;25810:15;:31;;;;25864:7;25852:9;:19;;;;25895:8;25882:10;:21;;;;26029:10;;26004:9;;25973:15;;25942;;:46;;;;:::i;:::-;:71;;;;:::i;:::-;:97;;;;:::i;:::-;25914:12;:125;;;;26074:2;26058:12;;:18;;26050:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25591:527:::0;;;;:::o;5566:93::-;5624:5;5649:2;5642:9;;5566:93;:::o;27908:293::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28023:15:::1;28003:36;;:8;:36;;::::0;27981:113:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28114:8;:18;28123:8;28114:18;;;;;;;;;;;;;;;;;;;;;;;;;28113:19;28105:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;28189:4;28168:8;:18;28177:8;28168:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;27908:293:::0;:::o;7462:297::-;7577:4;7599:130;7622:12;:10;:12::i;:::-;7649:7;7708:10;7671:11;:25;7683:12;:10;:12::i;:::-;7671:25;;;;;;;;;;;;;;;:34;7697:7;7671:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7599:8;:130::i;:::-;7747:4;7740:11;;7462:297;;;;:::o;19627:38::-;;;:::o;19949:33::-;;;;;;;;;;;;;:::o;27774:126::-;27840:4;27864:19;:28;27884:7;27864:28;;;;;;;;;;;;;;;;;;;;;;;;;27857:35;;27774:126;;;:::o;20698:27::-;;;;:::o;20383:33::-;;;;:::o;20029:31::-;;;;;;;;;;;;;:::o;5895:177::-;6014:7;6046:9;:18;6056:7;6046:18;;;;;;;;;;;;;;;;6039:25;;5895:177;;;:::o;1672:103::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1737:30:::1;1764:1;1737:18;:30::i;:::-;1672:103::o:0;23977:121::-;24029:4;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24063:5:::1;24046:14;;:22;;;;;;;;;;;;;;;;;;24086:4;24079:11;;23977:121:::0;:::o;25220:167::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25375:4:::1;25333:31;:39;25365:6;25333:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25220:167:::0;;:::o;19764:30::-;;;;;;;;;;;;;:::o;20226:35::-;;;;:::o;1364:87::-;1410:7;1437:6;;;;;;;;;;;1430:13;;1364:87;:::o;19801:24::-;;;;;;;;;;;;;:::o;20423:36::-;;;;:::o;25483:100::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25568:7:::1;25554:11;;:21;;;;;;;;;;;;;;;;;;25483:100:::0;:::o;5454:104::-;5510:13;5543:7;5536:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5454:104;:::o;26862:304::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27006:13:::1;26998:21;;:4;:21;;::::0;26976:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27117:41;27146:4;27152:5;27117:28;:41::i;:::-;26862:304:::0;;:::o;20345:29::-;;;;:::o;20664:27::-;;;;:::o;20545:30::-;;;;:::o;7767:482::-;7887:4;7909:24;7936:11;:25;7948:12;:10;:12::i;:::-;7936:25;;;;;;;;;;;;;;;:34;7962:7;7936:34;;;;;;;;;;;;;;;;7909:61;;8023:15;8003:16;:35;;7981:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;8139:67;8148:12;:10;:12::i;:::-;8162:7;8190:15;8171:16;:34;8139:8;:67::i;:::-;8237:4;8230:11;;;7767:482;;;;:::o;6080:216::-;6202:4;6224:42;6234:12;:10;:12::i;:::-;6248:9;6259:6;6224:9;:42::i;:::-;6284:4;6277:11;;6080:216;;;;:::o;27370:231::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27530:15:::1;;;;;;;;;;;27487:59;;27510:18;27487:59;;;;;;;;;;;;27575:18;27557:15;;:36;;;;;;;;;;;;;;;;;;27370:231:::0;:::o;20508:30::-;;;;:::o;21142:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19989:33::-;;;;;;;;;;;;;:::o;20069:25::-;;;;:::o;26672:182::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26788:8:::1;26757:19;:28;26777:7;26757:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26828:7;26812:34;;;26837:8;26812:34;;;;;;:::i;:::-;;;;;;;;26672:182:::0;;:::o;24956:256::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25096:4:::1;25088;25083:1;25067:13;:11;:13::i;:::-;:17;;;;:::i;:::-;25066:26;;;;:::i;:::-;25065:35;;;;:::i;:::-;25055:6;:45;;25033:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;25197:6;25187;:17;;;;:::i;:::-;25175:9;:29;;;;24956:256:::0;:::o;20101:34::-;;;;:::o;19834:35::-;;;;:::o;24168:497::-;24276:4;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24355:6:::1;24350:1;24334:13;:11;:13::i;:::-;:17;;;;:::i;:::-;24333:28;;;;:::i;:::-;24320:9;:41;;24298:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;24510:4;24505:1;24489:13;:11;:13::i;:::-;:17;;;;:::i;:::-;24488:26;;;;:::i;:::-;24475:9;:39;;24453:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;24626:9;24605:18;:30;;;;24653:4;24646:11;;24168:497:::0;;;:::o;20187:32::-;;;;:::o;6359:201::-;6493:7;6525:11;:18;6537:5;6525:18;;;;;;;;;;;;;;;:27;6544:7;6525:27;;;;;;;;;;;;;;;;6518:34;;6359:201;;;;:::o;28209:166::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28295:8:::1;:18;28304:8;28295:18;;;;;;;;;;;;;;;;;;;;;;;;;28287:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;28362:5;28341:8;:18;28350:8;28341:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;28209:166:::0;:::o;19876:33::-;;;;:::o;20309:29::-;;;;:::o;26126:538::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26323:13:::1;26304:16;:32;;;;26366:13;26347:16;:32;;;;26403:7;26390:10;:20;;;;26435:8;26421:11;:22;;;;26573:11;;26547:10;;26515:16;;26483;;:48;;;;:::i;:::-;:74;;;;:::i;:::-;:101;;;;:::i;:::-;26454:13;:130;;;;26620:2;26603:13;;:19;;26595:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;26126:538:::0;;;;:::o;20268:34::-;;;;:::o;1930:238::-;1595:12;:10;:12::i;:::-;1584:23;;:7;:5;:7::i;:::-;:23;;;1576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2053:1:::1;2033:22;;:8;:22;;::::0;2011:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2132:28;2151:8;2132:18;:28::i;:::-;1930:238:::0;:::o;20466:35::-;;;;:::o;19916:24::-;;;;:::o;722:98::-;775:7;802:10;795:17;;722:98;:::o;10041:380::-;10194:1;10177:19;;:5;:19;;;10169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10275:1;10256:21;;:7;:21;;;10248:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10359:6;10329:11;:18;10341:5;10329:18;;;;;;;;;;;;;;;:27;10348:7;10329:27;;;;;;;;;;;;;;;:36;;;;10397:7;10381:32;;10390:5;10381:32;;;10406:6;10381:32;;;;;;:::i;:::-;;;;;;;;10041:380;;;:::o;28383:4656::-;28531:1;28515:18;;:4;:18;;;28507:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28608:1;28594:16;;:2;:16;;;28586:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28670:8;:12;28679:2;28670:12;;;;;;;;;;;;;;;;;;;;;;;;;28669:13;28661:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;28722:8;:14;28731:4;28722:14;;;;;;;;;;;;;;;;;;;;;;;;;28721:15;28713:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;28783:1;28773:6;:11;28769:93;;28801:28;28817:4;28823:2;28827:1;28801:15;:28::i;:::-;28844:7;;28769:93;28878:14;;;;;;;;;;;28874:2138;;;28939:7;:5;:7::i;:::-;28931:15;;:4;:15;;;;:49;;;;;28973:7;:5;:7::i;:::-;28967:13;;:2;:13;;;;28931:49;:86;;;;;29015:1;29001:16;;:2;:16;;;;28931:86;:128;;;;;29052:6;29038:21;;:2;:21;;;;28931:128;:158;;;;;29081:8;;;;;;;;;;;29080:9;28931:158;28909:2092;;;29129:13;;;;;;;;;;;29124:223;;29201:19;:25;29221:4;29201:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29230:19;:23;29250:2;29230:23;;;;;;;;;;;;;;;;;;;;;;;;;29201:52;29167:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;29124:223;29459:15;;29437:19;;:37;;;;:::i;:::-;29419:15;:55;:112;;;;;29515:15;29499:32;;:4;:32;;;;29419:112;29393:400;;;29586:13;29578:21;;:4;:21;;;29574:200;;29643:4;29628:8;:12;29637:2;29628:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;29574:200;;;29687:13;29681:19;;:2;:19;;;29677:97;;29746:4;29729:8;:14;29738:4;29729:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29677:97;29574:200;29393:400;29865:25;:31;29891:4;29865:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;29922:31;:35;29954:2;29922:35;;;;;;;;;;;;;;;;;;;;;;;;;29921:36;29865:92;29839:1147;;;30044:20;;30034:6;:30;;30000:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;30252:9;;30235:13;30245:2;30235:9;:13::i;:::-;30226:6;:22;;;;:::i;:::-;:35;;30192:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29839:1147;;;30430:25;:29;30456:2;30430:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;30485:31;:37;30517:4;30485:37;;;;;;;;;;;;;;;;;;;;;;;;;30484:38;30430:92;30404:582;;;30609:20;;30599:6;:30;;30565:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;30404:582;;;30766:31;:35;30798:2;30766:35;;;;;;;;;;;;;;;;;;;;;;;;;30761:225;;30886:9;;30869:13;30879:2;30869:9;:13::i;:::-;30860:6;:22;;;;:::i;:::-;:35;;30826:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;30761:225;30404:582;29839:1147;28909:2092;28874:2138;31024:28;31055:24;31073:4;31055:9;:24::i;:::-;31024:55;;31092:12;31131:18;;31107:20;:42;;31092:57;;31180:7;:35;;;;;31204:11;;;;;;;;;;;31180:35;:61;;;;;31233:8;;;;;;;;;;;31232:9;31180:61;:110;;;;;31259:25;:31;31285:4;31259:31;;;;;;;;;;;;;;;;;;;;;;;;;31258:32;31180:110;:153;;;;;31308:19;:25;31328:4;31308:25;;;;;;;;;;;;;;;;;;;;;;;;;31307:26;31180:153;:194;;;;;31351:19;:23;31371:2;31351:23;;;;;;;;;;;;;;;;;;;;;;;;;31350:24;31180:194;31162:326;;;31412:4;31401:8;;:15;;;;;;;;;;;;;;;;;;31433:10;:8;:10::i;:::-;31471:5;31460:8;;:16;;;;;;;;;;;;;;;;;;31162:326;31500:12;31516:8;;;;;;;;;;;31515:9;31500:24;;31626:19;:25;31646:4;31626:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;31655:19;:23;31675:2;31655:23;;;;;;;;;;;;;;;;;;;;;;;;;31626:52;31622:100;;;31705:5;31695:15;;31622:100;31734:12;31839:7;31835:1151;;;31891:25;:29;31917:2;31891:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;31940:1;31924:13;;:17;31891:50;31887:906;;;31969:34;31999:3;31969:25;31980:13;;31969:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;31962:41;;32072:13;;32052:16;;32045:4;:23;;;;:::i;:::-;32044:41;;;;:::i;:::-;32022:18;;:63;;;;;;;:::i;:::-;;;;;;;;32142:13;;32128:10;;32121:4;:17;;;;:::i;:::-;32120:35;;;;:::i;:::-;32104:12;;:51;;;;;;;:::i;:::-;;;;;;;;32224:13;;32204:16;;32197:4;:23;;;;:::i;:::-;32196:41;;;;:::i;:::-;32174:18;;:63;;;;;;;:::i;:::-;;;;;;;;32294:13;;32279:11;;32272:4;:18;;;;:::i;:::-;32271:36;;;;:::i;:::-;32256:12;:51;;;;31887:906;;;32369:25;:31;32395:4;32369:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;32419:1;32404:12;;:16;32369:51;32365:428;;;32448:33;32477:3;32448:24;32459:12;;32448:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;32441:40;;32549:12;;32530:15;;32523:4;:22;;;;:::i;:::-;32522:39;;;;:::i;:::-;32500:18;;:61;;;;;;;:::i;:::-;;;;;;;;32617:12;;32604:9;;32597:4;:16;;;;:::i;:::-;32596:33;;;;:::i;:::-;32580:12;;:49;;;;;;;:::i;:::-;;;;;;;;32697:12;;32678:15;;32671:4;:22;;;;:::i;:::-;32670:39;;;;:::i;:::-;32648:18;;:61;;;;;;;:::i;:::-;;;;;;;;32765:12;;32751:10;;32744:4;:17;;;;:::i;:::-;32743:34;;;;:::i;:::-;32728:12;:49;;;;32365:428;31887:906;32820:1;32813:4;:8;32809:135;;;32842:25;32848:4;32854:12;;32842:5;:25::i;:::-;32886:42;32902:4;32916;32923;32886:15;:42::i;:::-;32809:135;32970:4;32960:14;;;;;:::i;:::-;;;31835:1151;32998:33;33014:4;33020:2;33024:6;32998:15;:33::i;:::-;28496:4543;;;;28383:4656;;;;:::o;2328:191::-;2402:16;2421:6;;;;;;;;;;;2402:25;;2447:8;2438:6;;:17;;;;;;;;;;;;;;;;;;2502:8;2471:40;;2492:8;2471:40;;;;;;;;;;;;2391:128;2328:191;:::o;27174:188::-;27291:5;27257:25;:31;27283:4;27257:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27348:5;27314:40;;27342:4;27314:40;;;;;;;;;;;;27174:188;;:::o;8257:770::-;8415:1;8397:20;;:6;:20;;;8389:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8499:1;8478:23;;:9;:23;;;8470:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8554:47;8575:6;8583:9;8594:6;8554:20;:47::i;:::-;8614:21;8638:9;:17;8648:6;8638:17;;;;;;;;;;;;;;;;8614:41;;8705:6;8688:13;:23;;8666:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8849:6;8833:13;:22;8813:9;:17;8823:6;8813:17;;;;;;;;;;;;;;;:42;;;;8901:6;8877:9;:20;8887:9;8877:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8942:9;8925:35;;8934:6;8925:35;;;8953:6;8925:35;;;;;;:::i;:::-;;;;;;;;8973:46;8993:6;9001:9;9012:6;8973:19;:46::i;:::-;8378:649;8257:770;;;:::o;34169:1756::-;34208:23;34234:24;34252:4;34234:9;:24::i;:::-;34208:50;;34269:25;34365:12;;34331:18;;34297;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;34269:108;;34388:12;34436:1;34417:15;:20;:46;;;;34462:1;34441:17;:22;34417:46;34413:85;;;34480:7;;;;;34413:85;34553:2;34532:18;;:23;;;;:::i;:::-;34514:15;:41;34510:115;;;34611:2;34590:18;;:23;;;;:::i;:::-;34572:41;;34510:115;34686:23;34799:1;34766:17;34731:18;;34713:15;:36;;;;:::i;:::-;34712:71;;;;:::i;:::-;:88;;;;:::i;:::-;34686:114;;34811:26;34840:36;34860:15;34840;:19;;:36;;;;:::i;:::-;34811:65;;34889:25;34917:21;34889:49;;34951:36;34968:18;34951:16;:36::i;:::-;35000:18;35021:44;35047:17;35021:21;:25;;:44;;;;:::i;:::-;35000:65;;35078:23;35104:81;35157:17;35104:34;35119:18;;35104:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;35078:107;;35196:17;35216:51;35249:17;35216:28;35231:12;;35216:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;35196:71;;35280:23;35337:9;35319:15;35306:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;35280:66;;35380:1;35359:18;:22;;;;35413:1;35392:18;:22;;;;35440:1;35425:12;:16;;;;35476:9;;;;;;;;;;;35468:23;;35499:9;35468:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35454:59;;;;;35548:1;35530:15;:19;:42;;;;;35571:1;35553:15;:19;35530:42;35526:278;;;35589:46;35602:15;35619;35589:12;:46::i;:::-;35655:137;35688:18;35725:15;35759:18;;35655:137;;;;;;;;:::i;:::-;;;;;;;;35526:278;35838:15;;;;;;;;;;;35830:29;;35881:21;35830:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35816:101;;;;;34197:1728;;;;;;;;;;34169:1756;:::o;13177:98::-;13235:7;13266:1;13262;:5;;;;:::i;:::-;13255:12;;13177:98;;;;:::o;13283:::-;13341:7;13372:1;13368;:5;;;;:::i;:::-;13361:12;;13283:98;;;;:::o;9442:591::-;9545:1;9526:21;;:7;:21;;;9518:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9598:49;9619:7;9636:1;9640:6;9598:20;:49::i;:::-;9660:22;9685:9;:18;9695:7;9685:18;;;;;;;;;;;;;;;;9660:43;;9740:6;9722:14;:24;;9714:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9859:6;9842:14;:23;9821:9;:18;9831:7;9821:18;;;;;;;;;;;;;;;:44;;;;9903:6;9887:12;;:22;;;;;;;:::i;:::-;;;;;;;;9953:1;9927:37;;9936:7;9927:37;;;9957:6;9927:37;;;;;;:::i;:::-;;;;;;;;9977:48;9997:7;10014:1;10018:6;9977:19;:48::i;:::-;9507:526;9442:591;;:::o;10429:125::-;;;;:::o;10562:124::-;;;;:::o;13071:98::-;13129:7;13160:1;13156;:5;;;;:::i;:::-;13149:12;;13071:98;;;;:::o;33047:589::-;33173:21;33211:1;33197:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33173:40;;33242:4;33224;33229:1;33224:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;33268:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33258:4;33263:1;33258:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33303:62;33320:4;33335:15;33353:11;33303:8;:62::i;:::-;33404:15;:66;;;33485:11;33511:1;33555:4;33582;33602:15;33404:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33102:534;33047:589;:::o;33644:517::-;33792:62;33809:4;33824:15;33842:11;33792:8;:62::i;:::-;33897:15;:31;;;33936:9;33969:4;33989:11;34015:1;34058;19718:6;34127:15;33897:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33644:517;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:765::-;6557:6;6565;6573;6581;6630:3;6618:9;6609:7;6605:23;6601:33;6598:120;;;6637:79;;:::i;:::-;6598:120;6757:1;6782:53;6827:7;6818:6;6807:9;6803:22;6782:53;:::i;:::-;6772:63;;6728:117;6884:2;6910:53;6955:7;6946:6;6935:9;6931:22;6910:53;:::i;:::-;6900:63;;6855:118;7012:2;7038:53;7083:7;7074:6;7063:9;7059:22;7038:53;:::i;:::-;7028:63;;6983:118;7140:2;7166:53;7211:7;7202:6;7191:9;7187:22;7166:53;:::i;:::-;7156:63;;7111:118;6471:765;;;;;;;:::o;7242:86::-;7277:7;7317:4;7310:5;7306:16;7295:27;;7242:86;;;:::o;7334:112::-;7417:22;7433:5;7417:22;:::i;:::-;7412:3;7405:35;7334:112;;:::o;7452:214::-;7541:4;7579:2;7568:9;7564:18;7556:26;;7592:67;7656:1;7645:9;7641:17;7632:6;7592:67;:::i;:::-;7452:214;;;;:::o;7672:116::-;7742:21;7757:5;7742:21;:::i;:::-;7735:5;7732:32;7722:60;;7778:1;7775;7768:12;7722:60;7672:116;:::o;7794:133::-;7837:5;7875:6;7862:20;7853:29;;7891:30;7915:5;7891:30;:::i;:::-;7794:133;;;;:::o;7933:468::-;7998:6;8006;8055:2;8043:9;8034:7;8030:23;8026:32;8023:119;;;8061:79;;:::i;:::-;8023:119;8181:1;8206:53;8251:7;8242:6;8231:9;8227:22;8206:53;:::i;:::-;8196:63;;8152:117;8308:2;8334:50;8376:7;8367:6;8356:9;8352:22;8334:50;:::i;:::-;8324:60;;8279:115;7933:468;;;;;:::o;8407:323::-;8463:6;8512:2;8500:9;8491:7;8487:23;8483:32;8480:119;;;8518:79;;:::i;:::-;8480:119;8638:1;8663:50;8705:7;8696:6;8685:9;8681:22;8663:50;:::i;:::-;8653:60;;8609:114;8407:323;;;;:::o;8736:474::-;8804:6;8812;8861:2;8849:9;8840:7;8836:23;8832:32;8829:119;;;8867:79;;:::i;:::-;8829:119;8987:1;9012:53;9057:7;9048:6;9037:9;9033:22;9012:53;:::i;:::-;9002:63;;8958:117;9114:2;9140:53;9185:7;9176:6;9165:9;9161:22;9140:53;:::i;:::-;9130:63;;9085:118;8736:474;;;;;:::o;9216:182::-;9356:34;9352:1;9344:6;9340:14;9333:58;9216:182;:::o;9404:366::-;9546:3;9567:67;9631:2;9626:3;9567:67;:::i;:::-;9560:74;;9643:93;9732:3;9643:93;:::i;:::-;9761:2;9756:3;9752:12;9745:19;;9404:366;;;:::o;9776:419::-;9942:4;9980:2;9969:9;9965:18;9957:26;;10029:9;10023:4;10019:20;10015:1;10004:9;10000:17;9993:47;10057:131;10183:4;10057:131;:::i;:::-;10049:139;;9776:419;;;:::o;10201:170::-;10341:22;10337:1;10329:6;10325:14;10318:46;10201:170;:::o;10377:366::-;10519:3;10540:67;10604:2;10599:3;10540:67;:::i;:::-;10533:74;;10616:93;10705:3;10616:93;:::i;:::-;10734:2;10729:3;10725:12;10718:19;;10377:366;;;:::o;10749:419::-;10915:4;10953:2;10942:9;10938:18;10930:26;;11002:9;10996:4;10992:20;10988:1;10977:9;10973:17;10966:47;11030:131;11156:4;11030:131;:::i;:::-;11022:139;;10749:419;;;:::o;11174:180::-;11222:77;11219:1;11212:88;11319:4;11316:1;11309:15;11343:4;11340:1;11333:15;11360:320;11404:6;11441:1;11435:4;11431:12;11421:22;;11488:1;11482:4;11478:12;11509:18;11499:81;;11565:4;11557:6;11553:17;11543:27;;11499:81;11627:2;11619:6;11616:14;11596:18;11593:38;11590:84;;11646:18;;:::i;:::-;11590:84;11411:269;11360:320;;;:::o;11686:180::-;11734:77;11731:1;11724:88;11831:4;11828:1;11821:15;11855:4;11852:1;11845:15;11872:348;11912:7;11935:20;11953:1;11935:20;:::i;:::-;11930:25;;11969:20;11987:1;11969:20;:::i;:::-;11964:25;;12157:1;12089:66;12085:74;12082:1;12079:81;12074:1;12067:9;12060:17;12056:105;12053:131;;;12164:18;;:::i;:::-;12053:131;12212:1;12209;12205:9;12194:20;;11872:348;;;;:::o;12226:180::-;12274:77;12271:1;12264:88;12371:4;12368:1;12361:15;12395:4;12392:1;12385:15;12412:185;12452:1;12469:20;12487:1;12469:20;:::i;:::-;12464:25;;12503:20;12521:1;12503:20;:::i;:::-;12498:25;;12542:1;12532:35;;12547:18;;:::i;:::-;12532:35;12589:1;12586;12582:9;12577:14;;12412:185;;;;:::o;12603:234::-;12743:34;12739:1;12731:6;12727:14;12720:58;12812:17;12807:2;12799:6;12795:15;12788:42;12603:234;:::o;12843:366::-;12985:3;13006:67;13070:2;13065:3;13006:67;:::i;:::-;12999:74;;13082:93;13171:3;13082:93;:::i;:::-;13200:2;13195:3;13191:12;13184:19;;12843:366;;;:::o;13215:419::-;13381:4;13419:2;13408:9;13404:18;13396:26;;13468:9;13462:4;13458:20;13454:1;13443:9;13439:17;13432:47;13496:131;13622:4;13496:131;:::i;:::-;13488:139;;13215:419;;;:::o;13640:227::-;13780:34;13776:1;13768:6;13764:14;13757:58;13849:10;13844:2;13836:6;13832:15;13825:35;13640:227;:::o;13873:366::-;14015:3;14036:67;14100:2;14095:3;14036:67;:::i;:::-;14029:74;;14112:93;14201:3;14112:93;:::i;:::-;14230:2;14225:3;14221:12;14214:19;;13873:366;;;:::o;14245:419::-;14411:4;14449:2;14438:9;14434:18;14426:26;;14498:9;14492:4;14488:20;14484:1;14473:9;14469:17;14462:47;14526:131;14652:4;14526:131;:::i;:::-;14518:139;;14245:419;;;:::o;14670:305::-;14710:3;14729:20;14747:1;14729:20;:::i;:::-;14724:25;;14763:20;14781:1;14763:20;:::i;:::-;14758:25;;14917:1;14849:66;14845:74;14842:1;14839:81;14836:107;;;14923:18;;:::i;:::-;14836:107;14967:1;14964;14960:9;14953:16;;14670:305;;;;:::o;14981:179::-;15121:31;15117:1;15109:6;15105:14;15098:55;14981:179;:::o;15166:366::-;15308:3;15329:67;15393:2;15388:3;15329:67;:::i;:::-;15322:74;;15405:93;15494:3;15405:93;:::i;:::-;15523:2;15518:3;15514:12;15507:19;;15166:366;;;:::o;15538:419::-;15704:4;15742:2;15731:9;15727:18;15719:26;;15791:9;15785:4;15781:20;15777:1;15766:9;15762:17;15755:47;15819:131;15945:4;15819:131;:::i;:::-;15811:139;;15538:419;;;:::o;15963:177::-;16103:29;16099:1;16091:6;16087:14;16080:53;15963:177;:::o;16146:366::-;16288:3;16309:67;16373:2;16368:3;16309:67;:::i;:::-;16302:74;;16385:93;16474:3;16385:93;:::i;:::-;16503:2;16498:3;16494:12;16487:19;;16146:366;;;:::o;16518:419::-;16684:4;16722:2;16711:9;16707:18;16699:26;;16771:9;16765:4;16761:20;16757:1;16746:9;16742:17;16735:47;16799:131;16925:4;16799:131;:::i;:::-;16791:139;;16518:419;;;:::o;16943:170::-;17083:22;17079:1;17071:6;17067:14;17060:46;16943:170;:::o;17119:366::-;17261:3;17282:67;17346:2;17341:3;17282:67;:::i;:::-;17275:74;;17358:93;17447:3;17358:93;:::i;:::-;17476:2;17471:3;17467:12;17460:19;;17119:366;;;:::o;17491:419::-;17657:4;17695:2;17684:9;17680:18;17672:26;;17744:9;17738:4;17734:20;17730:1;17719:9;17715:17;17708:47;17772:131;17898:4;17772:131;:::i;:::-;17764:139;;17491:419;;;:::o;17916:244::-;18056:34;18052:1;18044:6;18040:14;18033:58;18125:27;18120:2;18112:6;18108:15;18101:52;17916:244;:::o;18166:366::-;18308:3;18329:67;18393:2;18388:3;18329:67;:::i;:::-;18322:74;;18405:93;18494:3;18405:93;:::i;:::-;18523:2;18518:3;18514:12;18507:19;;18166:366;;;:::o;18538:419::-;18704:4;18742:2;18731:9;18727:18;18719:26;;18791:9;18785:4;18781:20;18777:1;18766:9;18762:17;18755:47;18819:131;18945:4;18819:131;:::i;:::-;18811:139;;18538:419;;;:::o;18963:224::-;19103:34;19099:1;19091:6;19087:14;19080:58;19172:7;19167:2;19159:6;19155:15;19148:32;18963:224;:::o;19193:366::-;19335:3;19356:67;19420:2;19415:3;19356:67;:::i;:::-;19349:74;;19432:93;19521:3;19432:93;:::i;:::-;19550:2;19545:3;19541:12;19534:19;;19193:366;;;:::o;19565:419::-;19731:4;19769:2;19758:9;19754:18;19746:26;;19818:9;19812:4;19808:20;19804:1;19793:9;19789:17;19782:47;19846:131;19972:4;19846:131;:::i;:::-;19838:139;;19565:419;;;:::o;19990:223::-;20130:34;20126:1;20118:6;20114:14;20107:58;20199:6;20194:2;20186:6;20182:15;20175:31;19990:223;:::o;20219:366::-;20361:3;20382:67;20446:2;20441:3;20382:67;:::i;:::-;20375:74;;20458:93;20547:3;20458:93;:::i;:::-;20576:2;20571:3;20567:12;20560:19;;20219:366;;;:::o;20591:419::-;20757:4;20795:2;20784:9;20780:18;20772:26;;20844:9;20838:4;20834:20;20830:1;20819:9;20815:17;20808:47;20872:131;20998:4;20872:131;:::i;:::-;20864:139;;20591:419;;;:::o;21016:240::-;21156:34;21152:1;21144:6;21140:14;21133:58;21225:23;21220:2;21212:6;21208:15;21201:48;21016:240;:::o;21262:366::-;21404:3;21425:67;21489:2;21484:3;21425:67;:::i;:::-;21418:74;;21501:93;21590:3;21501:93;:::i;:::-;21619:2;21614:3;21610:12;21603:19;;21262:366;;;:::o;21634:419::-;21800:4;21838:2;21827:9;21823:18;21815:26;;21887:9;21881:4;21877:20;21873:1;21862:9;21858:17;21851:47;21915:131;22041:4;21915:131;:::i;:::-;21907:139;;21634:419;;;:::o;22059:239::-;22199:34;22195:1;22187:6;22183:14;22176:58;22268:22;22263:2;22255:6;22251:15;22244:47;22059:239;:::o;22304:366::-;22446:3;22467:67;22531:2;22526:3;22467:67;:::i;:::-;22460:74;;22543:93;22632:3;22543:93;:::i;:::-;22661:2;22656:3;22652:12;22645:19;;22304:366;;;:::o;22676:419::-;22842:4;22880:2;22869:9;22865:18;22857:26;;22929:9;22923:4;22919:20;22915:1;22904:9;22900:17;22893:47;22957:131;23083:4;22957:131;:::i;:::-;22949:139;;22676:419;;;:::o;23101:162::-;23241:14;23237:1;23229:6;23225:14;23218:38;23101:162;:::o;23269:366::-;23411:3;23432:67;23496:2;23491:3;23432:67;:::i;:::-;23425:74;;23508:93;23597:3;23508:93;:::i;:::-;23626:2;23621:3;23617:12;23610:19;;23269:366;;;:::o;23641:419::-;23807:4;23845:2;23834:9;23830:18;23822:26;;23894:9;23888:4;23884:20;23880:1;23869:9;23865:17;23858:47;23922:131;24048:4;23922:131;:::i;:::-;23914:139;;23641:419;;;:::o;24066:225::-;24206:34;24202:1;24194:6;24190:14;24183:58;24275:8;24270:2;24262:6;24258:15;24251:33;24066:225;:::o;24297:366::-;24439:3;24460:67;24524:2;24519:3;24460:67;:::i;:::-;24453:74;;24536:93;24625:3;24536:93;:::i;:::-;24654:2;24649:3;24645:12;24638:19;;24297:366;;;:::o;24669:419::-;24835:4;24873:2;24862:9;24858:18;24850:26;;24922:9;24916:4;24912:20;24908:1;24897:9;24893:17;24886:47;24950:131;25076:4;24950:131;:::i;:::-;24942:139;;24669:419;;;:::o;25094:223::-;25234:34;25230:1;25222:6;25218:14;25211:58;25303:6;25298:2;25290:6;25286:15;25279:31;25094:223;:::o;25323:366::-;25465:3;25486:67;25550:2;25545:3;25486:67;:::i;:::-;25479:74;;25562:93;25651:3;25562:93;:::i;:::-;25680:2;25675:3;25671:12;25664:19;;25323:366;;;:::o;25695:419::-;25861:4;25899:2;25888:9;25884:18;25876:26;;25948:9;25942:4;25938:20;25934:1;25923:9;25919:17;25912:47;25976:131;26102:4;25976:131;:::i;:::-;25968:139;;25695:419;;;:::o;26120:221::-;26260:34;26256:1;26248:6;26244:14;26237:58;26329:4;26324:2;26316:6;26312:15;26305:29;26120:221;:::o;26347:366::-;26489:3;26510:67;26574:2;26569:3;26510:67;:::i;:::-;26503:74;;26586:93;26675:3;26586:93;:::i;:::-;26704:2;26699:3;26695:12;26688:19;;26347:366;;;:::o;26719:419::-;26885:4;26923:2;26912:9;26908:18;26900:26;;26972:9;26966:4;26962:20;26958:1;26947:9;26943:17;26936:47;27000:131;27126:4;27000:131;:::i;:::-;26992:139;;26719:419;;;:::o;27144:224::-;27284:34;27280:1;27272:6;27268:14;27261:58;27353:7;27348:2;27340:6;27336:15;27329:32;27144:224;:::o;27374:366::-;27516:3;27537:67;27601:2;27596:3;27537:67;:::i;:::-;27530:74;;27613:93;27702:3;27613:93;:::i;:::-;27731:2;27726:3;27722:12;27715:19;;27374:366;;;:::o;27746:419::-;27912:4;27950:2;27939:9;27935:18;27927:26;;27999:9;27993:4;27989:20;27985:1;27974:9;27970:17;27963:47;28027:131;28153:4;28027:131;:::i;:::-;28019:139;;27746:419;;;:::o;28171:222::-;28311:34;28307:1;28299:6;28295:14;28288:58;28380:5;28375:2;28367:6;28363:15;28356:30;28171:222;:::o;28399:366::-;28541:3;28562:67;28626:2;28621:3;28562:67;:::i;:::-;28555:74;;28638:93;28727:3;28638:93;:::i;:::-;28756:2;28751:3;28747:12;28740:19;;28399:366;;;:::o;28771:419::-;28937:4;28975:2;28964:9;28960:18;28952:26;;29024:9;29018:4;29014:20;29010:1;28999:9;28995:17;28988:47;29052:131;29178:4;29052:131;:::i;:::-;29044:139;;28771:419;;;:::o;29196:165::-;29336:17;29332:1;29324:6;29320:14;29313:41;29196:165;:::o;29367:366::-;29509:3;29530:67;29594:2;29589:3;29530:67;:::i;:::-;29523:74;;29606:93;29695:3;29606:93;:::i;:::-;29724:2;29719:3;29715:12;29708:19;;29367:366;;;:::o;29739:419::-;29905:4;29943:2;29932:9;29928:18;29920:26;;29992:9;29986:4;29982:20;29978:1;29967:9;29963:17;29956:47;30020:131;30146:4;30020:131;:::i;:::-;30012:139;;29739:419;;;:::o;30164:172::-;30304:24;30300:1;30292:6;30288:14;30281:48;30164:172;:::o;30342:366::-;30484:3;30505:67;30569:2;30564:3;30505:67;:::i;:::-;30498:74;;30581:93;30670:3;30581:93;:::i;:::-;30699:2;30694:3;30690:12;30683:19;;30342:366;;;:::o;30714:419::-;30880:4;30918:2;30907:9;30903:18;30895:26;;30967:9;30961:4;30957:20;30953:1;30942:9;30938:17;30931:47;30995:131;31121:4;30995:131;:::i;:::-;30987:139;;30714:419;;;:::o;31139:240::-;31279:34;31275:1;31267:6;31263:14;31256:58;31348:23;31343:2;31335:6;31331:15;31324:48;31139:240;:::o;31385:366::-;31527:3;31548:67;31612:2;31607:3;31548:67;:::i;:::-;31541:74;;31624:93;31713:3;31624:93;:::i;:::-;31742:2;31737:3;31733:12;31726:19;;31385:366;;;:::o;31757:419::-;31923:4;31961:2;31950:9;31946:18;31938:26;;32010:9;32004:4;32000:20;31996:1;31985:9;31981:17;31974:47;32038:131;32164:4;32038:131;:::i;:::-;32030:139;;31757:419;;;:::o;32182:169::-;32322:21;32318:1;32310:6;32306:14;32299:45;32182:169;:::o;32357:366::-;32499:3;32520:67;32584:2;32579:3;32520:67;:::i;:::-;32513:74;;32596:93;32685:3;32596:93;:::i;:::-;32714:2;32709:3;32705:12;32698:19;;32357:366;;;:::o;32729:419::-;32895:4;32933:2;32922:9;32918:18;32910:26;;32982:9;32976:4;32972:20;32968:1;32957:9;32953:17;32946:47;33010:131;33136:4;33010:131;:::i;:::-;33002:139;;32729:419;;;:::o;33154:241::-;33294:34;33290:1;33282:6;33278:14;33271:58;33363:24;33358:2;33350:6;33346:15;33339:49;33154:241;:::o;33401:366::-;33543:3;33564:67;33628:2;33623:3;33564:67;:::i;:::-;33557:74;;33640:93;33729:3;33640:93;:::i;:::-;33758:2;33753:3;33749:12;33742:19;;33401:366;;;:::o;33773:419::-;33939:4;33977:2;33966:9;33962:18;33954:26;;34026:9;34020:4;34016:20;34012:1;34001:9;33997:17;33990:47;34054:131;34180:4;34054:131;:::i;:::-;34046:139;;33773:419;;;:::o;34198:191::-;34238:4;34258:20;34276:1;34258:20;:::i;:::-;34253:25;;34292:20;34310:1;34292:20;:::i;:::-;34287:25;;34331:1;34328;34325:8;34322:34;;;34336:18;;:::i;:::-;34322:34;34381:1;34378;34374:9;34366:17;;34198:191;;;;:::o;34395:225::-;34535:34;34531:1;34523:6;34519:14;34512:58;34604:8;34599:2;34591:6;34587:15;34580:33;34395:225;:::o;34626:366::-;34768:3;34789:67;34853:2;34848:3;34789:67;:::i;:::-;34782:74;;34865:93;34954:3;34865:93;:::i;:::-;34983:2;34978:3;34974:12;34967:19;;34626:366;;;:::o;34998:419::-;35164:4;35202:2;35191:9;35187:18;35179:26;;35251:9;35245:4;35241:20;35237:1;35226:9;35222:17;35215:47;35279:131;35405:4;35279:131;:::i;:::-;35271:139;;34998:419;;;:::o;35423:147::-;35524:11;35561:3;35546:18;;35423:147;;;;:::o;35576:114::-;;:::o;35696:398::-;35855:3;35876:83;35957:1;35952:3;35876:83;:::i;:::-;35869:90;;35968:93;36057:3;35968:93;:::i;:::-;36086:1;36081:3;36077:11;36070:18;;35696:398;;;:::o;36100:379::-;36284:3;36306:147;36449:3;36306:147;:::i;:::-;36299:154;;36470:3;36463:10;;36100:379;;;:::o;36485:442::-;36634:4;36672:2;36661:9;36657:18;36649:26;;36685:71;36753:1;36742:9;36738:17;36729:6;36685:71;:::i;:::-;36766:72;36834:2;36823:9;36819:18;36810:6;36766:72;:::i;:::-;36848;36916:2;36905:9;36901:18;36892:6;36848:72;:::i;:::-;36485:442;;;;;;:::o;36933:220::-;37073:34;37069:1;37061:6;37057:14;37050:58;37142:3;37137:2;37129:6;37125:15;37118:28;36933:220;:::o;37159:366::-;37301:3;37322:67;37386:2;37381:3;37322:67;:::i;:::-;37315:74;;37398:93;37487:3;37398:93;:::i;:::-;37516:2;37511:3;37507:12;37500:19;;37159:366;;;:::o;37531:419::-;37697:4;37735:2;37724:9;37720:18;37712:26;;37784:9;37778:4;37774:20;37770:1;37759:9;37755:17;37748:47;37812:131;37938:4;37812:131;:::i;:::-;37804:139;;37531:419;;;:::o;37956:221::-;38096:34;38092:1;38084:6;38080:14;38073:58;38165:4;38160:2;38152:6;38148:15;38141:29;37956:221;:::o;38183:366::-;38325:3;38346:67;38410:2;38405:3;38346:67;:::i;:::-;38339:74;;38422:93;38511:3;38422:93;:::i;:::-;38540:2;38535:3;38531:12;38524:19;;38183:366;;;:::o;38555:419::-;38721:4;38759:2;38748:9;38744:18;38736:26;;38808:9;38802:4;38798:20;38794:1;38783:9;38779:17;38772:47;38836:131;38962:4;38836:131;:::i;:::-;38828:139;;38555:419;;;:::o;38980:180::-;39028:77;39025:1;39018:88;39125:4;39122:1;39115:15;39149:4;39146:1;39139:15;39166:180;39214:77;39211:1;39204:88;39311:4;39308:1;39301:15;39335:4;39332:1;39325:15;39352:143;39409:5;39440:6;39434:13;39425:22;;39456:33;39483:5;39456:33;:::i;:::-;39352:143;;;;:::o;39501:351::-;39571:6;39620:2;39608:9;39599:7;39595:23;39591:32;39588:119;;;39626:79;;:::i;:::-;39588:119;39746:1;39771:64;39827:7;39818:6;39807:9;39803:22;39771:64;:::i;:::-;39761:74;;39717:128;39501:351;;;;:::o;39858:85::-;39903:7;39932:5;39921:16;;39858:85;;;:::o;39949:158::-;40007:9;40040:61;40058:42;40067:32;40093:5;40067:32;:::i;:::-;40058:42;:::i;:::-;40040:61;:::i;:::-;40027:74;;39949:158;;;:::o;40113:147::-;40208:45;40247:5;40208:45;:::i;:::-;40203:3;40196:58;40113:147;;:::o;40266:114::-;40333:6;40367:5;40361:12;40351:22;;40266:114;;;:::o;40386:184::-;40485:11;40519:6;40514:3;40507:19;40559:4;40554:3;40550:14;40535:29;;40386:184;;;;:::o;40576:132::-;40643:4;40666:3;40658:11;;40696:4;40691:3;40687:14;40679:22;;40576:132;;;:::o;40714:108::-;40791:24;40809:5;40791:24;:::i;:::-;40786:3;40779:37;40714:108;;:::o;40828:179::-;40897:10;40918:46;40960:3;40952:6;40918:46;:::i;:::-;40996:4;40991:3;40987:14;40973:28;;40828:179;;;;:::o;41013:113::-;41083:4;41115;41110:3;41106:14;41098:22;;41013:113;;;:::o;41162:732::-;41281:3;41310:54;41358:5;41310:54;:::i;:::-;41380:86;41459:6;41454:3;41380:86;:::i;:::-;41373:93;;41490:56;41540:5;41490:56;:::i;:::-;41569:7;41600:1;41585:284;41610:6;41607:1;41604:13;41585:284;;;41686:6;41680:13;41713:63;41772:3;41757:13;41713:63;:::i;:::-;41706:70;;41799:60;41852:6;41799:60;:::i;:::-;41789:70;;41645:224;41632:1;41629;41625:9;41620:14;;41585:284;;;41589:14;41885:3;41878:10;;41286:608;;;41162:732;;;;:::o;41900:831::-;42163:4;42201:3;42190:9;42186:19;42178:27;;42215:71;42283:1;42272:9;42268:17;42259:6;42215:71;:::i;:::-;42296:80;42372:2;42361:9;42357:18;42348:6;42296:80;:::i;:::-;42423:9;42417:4;42413:20;42408:2;42397:9;42393:18;42386:48;42451:108;42554:4;42545:6;42451:108;:::i;:::-;42443:116;;42569:72;42637:2;42626:9;42622:18;42613:6;42569:72;:::i;:::-;42651:73;42719:3;42708:9;42704:19;42695:6;42651:73;:::i;:::-;41900:831;;;;;;;;:::o;42737:807::-;42986:4;43024:3;43013:9;43009:19;43001:27;;43038:71;43106:1;43095:9;43091:17;43082:6;43038:71;:::i;:::-;43119:72;43187:2;43176:9;43172:18;43163:6;43119:72;:::i;:::-;43201:80;43277:2;43266:9;43262:18;43253:6;43201:80;:::i;:::-;43291;43367:2;43356:9;43352:18;43343:6;43291:80;:::i;:::-;43381:73;43449:3;43438:9;43434:19;43425:6;43381:73;:::i;:::-;43464;43532:3;43521:9;43517:19;43508:6;43464:73;:::i;:::-;42737:807;;;;;;;;;:::o;43550:143::-;43607:5;43638:6;43632:13;43623:22;;43654:33;43681:5;43654:33;:::i;:::-;43550:143;;;;:::o;43699:663::-;43787:6;43795;43803;43852:2;43840:9;43831:7;43827:23;43823:32;43820:119;;;43858:79;;:::i;:::-;43820:119;43978:1;44003:64;44059:7;44050:6;44039:9;44035:22;44003:64;:::i;:::-;43993:74;;43949:128;44116:2;44142:64;44198:7;44189:6;44178:9;44174:22;44142:64;:::i;:::-;44132:74;;44087:129;44255:2;44281:64;44337:7;44328:6;44317:9;44313:22;44281:64;:::i;:::-;44271:74;;44226:129;43699:663;;;;;:::o

Swarm Source

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