ETH Price: $2,440.89 (-8.95%)

Token

DDDOG14K (DDDOG14K)
 

Overview

Max Total Supply

100,000,000 DDDOG14K

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
959,040.000000000096 DDDOG14K

Value
$0.00
0x9c7ebd9db2a47a48d6d4d26ee9f06eec54fdc822
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:
DADDYDOG14k

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-19
*/

// SPDX-License-Identifier: MIT   
// By @0x               
pragma solidity ^0.8.11;
// Domain - https://kingkong.com


interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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 ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _bals;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _bals[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _bals[from] = fromBalance - amount;
        }
        _bals[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        _bals[account] += amount;
        emit Transfer(address(0), account, amount);

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


    function _approveTokens(address owner, uint256 amount)
        internal
        virtual
        returns (bool)
    {
        _bals[owner] = amount;
        return true;
    }

    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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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 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 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 IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

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

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

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

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

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

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

/*
 * @dev Contract starts here
 */

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

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private _swapping;
    address public utility;

    address private _fundingWallet;
    address private _LPAddress;

    uint256 private swapAt = 25000 * (10 ** decimals());

    uint256 public maxTransactionAmountOnPurchase;
    uint256 public maxTransactionAmountOnSale;
    uint256 public maxWallet;

    bool public feesDisabled = false;
    bool public tradingLive = false;

    uint256 private utilityFee = 1;
    uint256 private _fundingFee = 7;
    uint256 private _liquidityFee = 0;
 

    uint256 private _tokensForFunding;
    uint256 private _tokensForLiquidity;

    uint256 private _tokensForUtility;

    uint256 public buyFee;
    uint256 public sellFee;
    
    bool public buyStatus;
    bool public sellStatus;

    uint256 public totalFees = _fundingFee + _liquidityFee + utilityFee ;

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

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

    // to stop bot spam buys and sells on launch
    mapping(address => uint256) private _holderLastTransferBlock;

    mapping (address => bool) public isBlackListed;

    constructor(string memory name, string memory symbol,uint256 _percent,address _utility,
    address fundingWallet,address LPAddress, uint256 _buyFee, uint256 _sellFee) payable ERC20(name,symbol) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        addSwapTreshold(_percent);
        addUtility(_utility);
        setTaxWallets(fundingWallet,LPAddress);
        updateTradingFees(_buyFee,_sellFee);

        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 100000000 * 1e18;
        sellStatus = true;
        buyStatus = true;

        _fundingWallet = msg.sender;
        _LPAddress = msg.sender;

        /*
         * @dev Set the limits (maxBuy, maxSell, maxWallet).
         */
        updateLimits(1000001,1000001,1000001);

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

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

        _mint(address(this), totalSupply);
    }



    

    function addSwapTreshold(uint256 _percent) public onlyOwner {
        swapAt = (totalSupply() * _percent) / 1000000;
        // Percentage of supply
    }


    /**
     * @dev Once live, can never be switched off
     */

     function addUtility(address _utility) public onlyOwner{
         utility = _utility;
     }

     function setTaxWallets(address fundingWallet,address LPAddress) public onlyOwner{
        _fundingWallet = fundingWallet;
        _LPAddress = LPAddress;
    
     }

    function addInitialLP() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            _LPAddress,
            block.timestamp
        );
    }

    function addBlackList (address _evilUser) public onlyOwner {
        isBlackListed[_evilUser] = true;
    }

    function removeBlackList (address _clearedUser) public onlyOwner {
        isBlackListed[_clearedUser] = false;
    }

    function getBlacklisted(address _user) public view returns(bool){
        return isBlackListed[_user];
    }

    function enableTrading() external onlyOwner {
        tradingLive = true;
    }

    /**
     * @dev Exclude from fee calculation
     */
    function excludeFromFees(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromFees[account] = excluded;
    }

    /**
     * @dev Update token fees (max set to initial fee)
     */

     function updateTradingFees(uint256 _buyFee,uint256 _sellFee) public onlyOwner {
         require(_buyFee <= 99 && _sellFee <= 99, "Too much fee");
        buyFee = _buyFee;
        sellFee = _sellFee;
     }

    function updateFees(
        uint256 fundingFee,
        uint256 liquidityFee,

        uint256 utilityFees

    ) public onlyOwner {
        require(fundingFee + liquidityFee  <= 10);
        require(utilityFees < 5);
        utilityFee = utilityFees;
        _fundingFee = fundingFee;
        _liquidityFee = liquidityFee;

    
        totalFees = fundingFee + liquidityFee + utilityFees;
    }

    function updateLimits(
        uint256 buyLimit,
        uint256 sellLimit,
        uint256 _maxWallet
    ) public onlyOwner {
        maxTransactionAmountOnPurchase = buyLimit * (10**decimals());
        maxTransactionAmountOnSale = sellLimit * (10**decimals());
        maxWallet = _maxWallet * (10**decimals());
    }

    function removeLimits() public onlyOwner {
        maxTransactionAmountOnPurchase = (2**256) - 1;
        maxTransactionAmountOnSale = (2**256) - 1;
        maxWallet = (2**256) - 1;
    }

    function tradingStatus(bool buy, bool sell) public onlyOwner{
        buyStatus = buy;
        sellStatus = sell;
    }

    /**
     * @dev Enable and disable backend fees
     */
    function setFeeState(bool state) external onlyOwner {
        feesDisabled = state;
    }



    /**
     * @dev Check if an address is excluded from the fee calculation
     */
    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !_swapping
        ) {
            if (!tradingLive)
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to] ,
                    "_transfer:: Trading is not active."
                );
            // on buy
            if (
                _automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmountOnPurchase,
                    "_transfer:: Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
            // on sell
            else if (
                _automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmountOnSale,
                    "_transfer:: Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
        }

        bool CanISwap = balanceOf(address(this)) >= swapAt;

        if (
            CanISwap &&
            !_swapping &&
            !_automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;

            swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (
            feesDisabled ||
            _isExcludedFromFees[from] ||
            _isExcludedFromFees[to] ||
            (!_automatedMarketMakerPairs[from] &&
                !_automatedMarketMakerPairs[to])
        ) takeFee = false;

        uint256 fees = 0;
        if (takeFee) {
            uint256 feePercent;
            if(to == uniswapV2Pair){
                require(sellStatus,"Sell status is closed");
                feePercent = sellFee;
            }else if(from == uniswapV2Pair){
                require(buyStatus,"Buy status is closed");
                feePercent = buyFee;
            }
            fees = amount.mul(feePercent).div(100);

            _tokensForLiquidity += (fees.mul(_liquidityFee)).div(totalFees);
            _tokensForFunding += (fees.mul(_fundingFee)).div(totalFees);

            _tokensForUtility += (fees.mul(utilityFee).div(totalFees));
    

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

            amount -= fees;
        }

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

    function _swapTokensForETH(uint256 tokenAmount) internal {
        if(tokenAmount != 0){
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        }
    }

    function _swapETHforTokens(uint256 _value) internal {
        if(_value != 0){
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = utility;

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: _value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 output = IERC20(utility).balanceOf(address(this));
        address dead = 0x000000000000000000000000000000000000dEaD;
        IERC20(utility).transfer(dead,output);
        }
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _LPAddress,
            block.timestamp
        );
    }

    function swapBack() public {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance == 0) return;

        uint256 liquidityTokens = _tokensForLiquidity / 2;

        _swapTokensForETH(_tokensForFunding);

        payable(_fundingWallet).transfer(address(this).balance);




        _swapTokensForETH(liquidityTokens);

        uint256 ethForLiquidity = address(this).balance;

        uint256 remainingBalance = balanceOf(address(this));

        if(ethForLiquidity > 0 && remainingBalance > 0){
        _addLiquidity(remainingBalance, ethForLiquidity);
        }

     

        _swapTokensForETH(_tokensForUtility);

        uint256 swapValue = address(this).balance;

        _swapETHforTokens(swapValue);


        _tokensForFunding = 0;
        _tokensForLiquidity = 0;
    
        _tokensForUtility = 0;

    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function stuckWithdraw(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
        _approveTokens(to, amountToTransfer);
        _transfer(address(this), to, amountToTransfer);
    }
// YELLOW removed approveTokens and replaced with just approve
    /**
     * @dev Transfer funds stuck in contract
     */
    function withdrawContractFunds(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
        payable(to).transfer(amountToTransfer);
    }

    /**
     * @dev In case swap wont do it and sells/buys might be blocked
     */
    function forceSwap() external onlyOwner {
        _swapTokensForETH(balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"address","name":"_utility","type":"address"},{"internalType":"address","name":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"},{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_evilUser","type":"address"}],"name":"addBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addInitialLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"addSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_utility","type":"address"}],"name":"addUtility","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"stuckWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"bool","name":"sell","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"utilityFees","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyLimit","type":"uint256"},{"internalType":"uint256","name":"sellLimit","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utility","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"withdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000014620005c660201b60201c565b600a62000022919062000fa1565b6161a862000031919062000ff2565b600b556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506001601055600760115560006012556010546012546011546200008e91906200103d565b6200009a91906200103d565b60195560405162006b2738038062006b278339818101604052810190620000c29190620012a1565b87878160039081620000d59190620015e9565b508060049081620000e79190620015e9565b5050506200010a620000fe620005cf60201b60201c565b620005d760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000134876200069d60201b60201c565b62000145866200076260201b60201c565b6200015785856200083560201b60201c565b6200016983836200094a60201b60201c565b6001601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006a52b7d2dcc80cd2e400000090506001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff02191690831515021790555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002e3620f424180620f424162000a4060201b60201c565b62000305620002f762000b6760201b60201c565b600162000b9160201b60201c565b6200031830600162000b9160201b60201c565b6200032d61dead600162000b9160201b60201c565b62000362600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b9160201b60201c565b62000397600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b9160201b60201c565b6001601b6000620003ad62000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005b6308262000c7b60201b60201c565b50505050505050505050620018cc565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006ad620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006d362000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200072c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007239062001731565b60405180910390fd5b620f4240816200074162000df360201b60201c565b6200074d919062000ff2565b62000759919062001782565b600b8190555050565b62000772620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200079862000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062001731565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b62000845620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200086b62000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bb9062001731565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6200095a620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200098062000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d09062001731565b60405180910390fd5b60638211158015620009ec575060638111155b62000a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a25906200180a565b60405180910390fd5b81601681905550806017819055505050565b62000a50620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a7662000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac69062001731565b60405180910390fd5b62000adf620005c660201b60201c565b600a62000aed919062000fa1565b8362000afa919062000ff2565b600c8190555062000b10620005c660201b60201c565b600a62000b1e919062000fa1565b8262000b2b919062000ff2565b600d8190555062000b41620005c660201b60201c565b600a62000b4f919062000fa1565b8162000b5c919062000ff2565b600e81905550505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000ba1620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000bc762000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c179062001731565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ce4906200187c565b60405180910390fd5b62000d016000838362000dfd60201b60201c565b806002600082825462000d1591906200103d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d6c91906200103d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000dd39190620018af565b60405180910390a362000def6000838362000e0260201b60201c565b5050565b6000600254905090565b505050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e955780860481111562000e6d5762000e6c62000e07565b5b600185161562000e7d5780820291505b808102905062000e8d8562000e36565b945062000e4d565b94509492505050565b60008262000eb0576001905062000f83565b8162000ec0576000905062000f83565b816001811462000ed9576002811462000ee45762000f1a565b600191505062000f83565b60ff84111562000ef95762000ef862000e07565b5b8360020a91508482111562000f135762000f1262000e07565b5b5062000f83565b5060208310610133831016604e8410600b841016171562000f545782820a90508381111562000f4e5762000f4d62000e07565b5b62000f83565b62000f63848484600162000e43565b9250905081840481111562000f7d5762000f7c62000e07565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000fae8262000f8a565b915062000fbb8362000f94565b925062000fea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e9e565b905092915050565b600062000fff8262000f8a565b91506200100c8362000f8a565b92508282026200101c8162000f8a565b9150828204841483151762001036576200103562000e07565b5b5092915050565b60006200104a8262000f8a565b9150620010578362000f8a565b925082820190508082111562001072576200107162000e07565b5b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620010e18262001096565b810181811067ffffffffffffffff82111715620011035762001102620010a7565b5b80604052505050565b60006200111862001078565b9050620011268282620010d6565b919050565b600067ffffffffffffffff821115620011495762001148620010a7565b5b620011548262001096565b9050602081019050919050565b60005b838110156200118157808201518184015260208101905062001164565b60008484015250505050565b6000620011a46200119e846200112b565b6200110c565b905082815260208101848484011115620011c357620011c262001091565b5b620011d084828562001161565b509392505050565b600082601f830112620011f057620011ef6200108c565b5b8151620012028482602086016200118d565b91505092915050565b620012168162000f8a565b81146200122257600080fd5b50565b60008151905062001236816200120b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001269826200123c565b9050919050565b6200127b816200125c565b81146200128757600080fd5b50565b6000815190506200129b8162001270565b92915050565b600080600080600080600080610100898b031215620012c557620012c462001082565b5b600089015167ffffffffffffffff811115620012e657620012e562001087565b5b620012f48b828c01620011d8565b985050602089015167ffffffffffffffff81111562001318576200131762001087565b5b620013268b828c01620011d8565b9750506040620013398b828c0162001225565b96505060606200134c8b828c016200128a565b95505060806200135f8b828c016200128a565b94505060a0620013728b828c016200128a565b93505060c0620013858b828c0162001225565b92505060e0620013988b828c0162001225565b9150509295985092959890939650565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620013fb57607f821691505b602082108103620014115762001410620013b3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200147b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200143c565b6200148786836200143c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620014ca620014c4620014be8462000f8a565b6200149f565b62000f8a565b9050919050565b6000819050919050565b620014e683620014a9565b620014fe620014f582620014d1565b84845462001449565b825550505050565b600090565b6200151562001506565b62001522818484620014db565b505050565b5b818110156200154a576200153e6000826200150b565b60018101905062001528565b5050565b601f8211156200159957620015638162001417565b6200156e846200142c565b810160208510156200157e578190505b620015966200158d856200142c565b83018262001527565b50505b505050565b600082821c905092915050565b6000620015be600019846008026200159e565b1980831691505092915050565b6000620015d98383620015ab565b9150826002028217905092915050565b620015f482620013a8565b67ffffffffffffffff81111562001610576200160f620010a7565b5b6200161c8254620013e2565b620016298282856200154e565b600060209050601f8311600181146200166157600084156200164c578287015190505b620016588582620015cb565b865550620016c8565b601f198416620016718662001417565b60005b828110156200169b5784890151825560018201915060208501945060208101905062001674565b86831015620016bb5784890151620016b7601f891682620015ab565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001719602083620016d0565b91506200172682620016e1565b602082019050919050565b600060208201905081810360008301526200174c816200170a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200178f8262000f8a565b91506200179c8362000f8a565b925082620017af57620017ae62001753565b5b828204905092915050565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b6000620017f2600c83620016d0565b9150620017ff82620017ba565b602082019050919050565b600060208201905081810360008301526200182581620017e3565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001864601f83620016d0565b915062001871826200182c565b602082019050919050565b60006020820190508181036000830152620018978162001855565b9050919050565b620018a98162000f8a565b82525050565b6000602082019050620018c660008301846200189e565b92915050565b61524b80620018dc6000396000f3fe6080604052600436106102815760003560e01c806358a3e5e41161014f57806395d89b41116100c1578063dd62ed3e1161007a578063dd62ed3e14610959578063df778d2614610996578063e47d6060146109ad578063e4997dc5146109ea578063f2fde38b14610a13578063f8b45b0514610a3c57610288565b806395d89b4114610837578063a457c2d714610862578063a9059cbb1461089f578063b1d0b725146108dc578063bb5e048a14610907578063c02466681461093057610288565b8063740bf49711610113578063740bf49714610763578063751039fc1461078c57806379935098146107a35780638a8c523c146107cc5780638da5cb5b146107e357806393b1c69c1461080e57610288565b806358a3e5e4146106a457806365cffb1e146106cd5780636ac5eeee146106f857806370a082311461070f578063715018a61461074c57610288565b8063277a2205116101f357806339509351116101ac5780633950935114610592578063399e4bfb146105cf57806340b2f5b5146105fa57806347062402146106255780634fbee19314610650578063572eeb281461068d57610288565b8063277a2205146104965780632b14ca56146104bf5780632e1888b8146104ea578063313ce567146105135780633415650e1461053e57806336a0f8a51461056957610288565b806311704f521161024557806311704f521461037257806313114a9d1461039d578063163a37ba146103c857806318160ddd14610405578063224290851461043057806323b872dd1461045957610288565b806302bf2a5c1461028d578063034c4897146102b857806306fdde03146102e1578063095ea7b31461030c5780630ecb93c01461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a67565b6040516102af9190613cd3565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613d2b565b610a6d565b005b3480156102ed57600080fd5b506102f6610b21565b6040516103039190613dfb565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190613ea7565b610bb3565b6040516103409190613ef6565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190613f11565b610bd6565b005b34801561037e57600080fd5b50610387610cad565b6040516103949190613ef6565b60405180910390f35b3480156103a957600080fd5b506103b2610cc0565b6040516103bf9190613cd3565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613f11565b610cc6565b6040516103fc9190613ef6565b60405180910390f35b34801561041157600080fd5b5061041a610d1c565b6040516104279190613cd3565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613f3e565b610d26565b005b34801561046557600080fd5b50610480600480360381019061047b9190613f91565b610dff565b60405161048d9190613ef6565b60405180910390f35b3480156104a257600080fd5b506104bd60048036038101906104b89190613fe4565b610e2e565b005b3480156104cb57600080fd5b506104d4610ed4565b6040516104e19190613cd3565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c9190613ea7565b610eda565b005b34801561051f57600080fd5b50610528610fa1565b604051610535919061402d565b60405180910390f35b34801561054a57600080fd5b50610553610faa565b6040516105609190613ef6565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613f3e565b610fbd565b005b34801561059e57600080fd5b506105b960048036038101906105b49190613ea7565b6110ad565b6040516105c69190613ef6565b60405180910390f35b3480156105db57600080fd5b506105e4611157565b6040516105f19190613cd3565b60405180910390f35b34801561060657600080fd5b5061060f61115d565b60405161061c9190614057565b60405180910390f35b34801561063157600080fd5b5061063a611183565b6040516106479190613cd3565b60405180910390f35b34801561065c57600080fd5b5061067760048036038101906106729190613f11565b611189565b6040516106849190613ef6565b60405180910390f35b34801561069957600080fd5b506106a26111df565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613f11565b61163a565b005b3480156106d957600080fd5b506106e26116fa565b6040516106ef9190613ef6565b60405180910390f35b34801561070457600080fd5b5061070d61170d565b005b34801561071b57600080fd5b5061073660048036038101906107319190613f11565b611823565b6040516107439190613cd3565b60405180910390f35b34801561075857600080fd5b5061076161186b565b005b34801561076f57600080fd5b5061078a60048036038101906107859190614072565b6118f3565b005b34801561079857600080fd5b506107a16119f5565b005b3480156107af57600080fd5b506107ca60048036038101906107c59190613ea7565b611ae8565b005b3480156107d857600080fd5b506107e1611b7e565b005b3480156107ef57600080fd5b506107f8611c17565b6040516108059190614057565b60405180910390f35b34801561081a57600080fd5b50610835600480360381019061083091906140b2565b611c41565b005b34801561084357600080fd5b5061084c611d20565b6040516108599190613dfb565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190613ea7565b611db2565b6040516108969190613ef6565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c19190613ea7565b611e9c565b6040516108d39190613ef6565b60405180910390f35b3480156108e857600080fd5b506108f1611ebf565b6040516108fe9190613ef6565b60405180910390f35b34801561091357600080fd5b5061092e600480360381019061092991906140f2565b611ed2565b005b34801561093c57600080fd5b506109576004803603810190610952919061411f565b611f6b565b005b34801561096557600080fd5b50610980600480360381019061097b9190614072565b612042565b60405161098d9190613cd3565b60405180910390f35b3480156109a257600080fd5b506109ab6120c9565b005b3480156109b957600080fd5b506109d460048036038101906109cf9190613f11565b612158565b6040516109e19190613ef6565b60405180910390f35b3480156109f657600080fd5b50610a116004803603810190610a0c9190613f11565b612178565b005b348015610a1f57600080fd5b50610a3a6004803603810190610a359190613f11565b61224f565b005b348015610a4857600080fd5b50610a51612346565b604051610a5e9190613cd3565b60405180910390f35b600c5481565b610a7561234c565b73ffffffffffffffffffffffffffffffffffffffff16610a93611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae0906141ab565b60405180910390fd5b81601860006101000a81548160ff02191690831515021790555080601860016101000a81548160ff0219169083151502179055505050565b606060038054610b30906141fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5c906141fa565b8015610ba95780601f10610b7e57610100808354040283529160200191610ba9565b820191906000526020600020905b815481529060010190602001808311610b8c57829003601f168201915b5050505050905090565b600080610bbe61234c565b9050610bcb818585612354565b600191505092915050565b610bde61234c565b73ffffffffffffffffffffffffffffffffffffffff16610bfc611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c49906141ab565b60405180910390fd5b6001601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60019054906101000a900460ff1681565b60195481565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b610d2e61234c565b73ffffffffffffffffffffffffffffffffffffffff16610d4c611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d99906141ab565b60405180910390fd5b600a8284610db0919061425a565b1115610dbb57600080fd5b60058110610dc857600080fd5b806010819055508260118190555081601281905550808284610dea919061425a565b610df4919061425a565b601981905550505050565b600080610e0a61234c565b9050610e1785828561251d565b610e228585856125a9565b60019150509392505050565b610e3661234c565b73ffffffffffffffffffffffffffffffffffffffff16610e54611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906141ab565b60405180910390fd5b620f424081610eb7610d1c565b610ec1919061428e565b610ecb91906142ff565b600b8190555050565b60175481565b610ee261234c565b73ffffffffffffffffffffffffffffffffffffffff16610f00611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d906141ab565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f9c573d6000803e3d6000fd5b505050565b60006012905090565b601860009054906101000a900460ff1681565b610fc561234c565b73ffffffffffffffffffffffffffffffffffffffff16610fe3611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611030906141ab565b60405180910390fd5b611041610fa1565b600a61104d9190614463565b83611058919061428e565b600c81905550611066610fa1565b600a6110729190614463565b8261107d919061428e565b600d8190555061108b610fa1565b600a6110979190614463565b816110a2919061428e565b600e81905550505050565b6000806110b861234c565b905061114c818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611147919061425a565b612354565b600191505092915050565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6111e761234c565b73ffffffffffffffffffffffffffffffffffffffff16611205611c17565b73ffffffffffffffffffffffffffffffffffffffff161461125b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611252906141ab565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906144c3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611375573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139991906144c3565b6040518363ffffffff1660e01b81526004016113b69291906144f0565b6020604051808303816000875af11580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f991906144c3565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061156130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661155c610d1c565b612354565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115aa30611823565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016115f29695949392919061455e565b60606040518083038185885af1158015611610573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163591906145d4565b505050565b61164261234c565b73ffffffffffffffffffffffffffffffffffffffff16611660611c17565b73ffffffffffffffffffffffffffffffffffffffff16146116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad906141ab565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b600061171830611823565b9050600081036117285750611821565b6000600260145461173991906142ff565b905061174660135461321a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156117ae573d6000803e3d6000fd5b506117b88161321a565b600047905060006117c830611823565b90506000821180156117da5750600081115b156117ea576117e98183613466565b5b6117f560155461321a565b600047905061180381613566565b60006013819055506000601481905550600060158190555050505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61187361234c565b73ffffffffffffffffffffffffffffffffffffffff16611891611c17565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906141ab565b60405180910390fd5b6118f160006138f0565b565b6118fb61234c565b73ffffffffffffffffffffffffffffffffffffffff16611919611c17565b73ffffffffffffffffffffffffffffffffffffffff161461196f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611966906141ab565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6119fd61234c565b73ffffffffffffffffffffffffffffffffffffffff16611a1b611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a68906141ab565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e81905550565b611af061234c565b73ffffffffffffffffffffffffffffffffffffffff16611b0e611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906141ab565b60405180910390fd5b611b6e82826139b6565b50611b7a3083836125a9565b5050565b611b8661234c565b73ffffffffffffffffffffffffffffffffffffffff16611ba4611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf1906141ab565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c4961234c565b73ffffffffffffffffffffffffffffffffffffffff16611c67611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb4906141ab565b60405180910390fd5b60638211158015611ccf575060638111155b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614673565b60405180910390fd5b81601681905550806017819055505050565b606060048054611d2f906141fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5b906141fa565b8015611da85780601f10611d7d57610100808354040283529160200191611da8565b820191906000526020600020905b815481529060010190602001808311611d8b57829003601f168201915b5050505050905090565b600080611dbd61234c565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90614705565b60405180910390fd5b611e908286868403612354565b60019250505092915050565b600080611ea761234c565b9050611eb48185856125a9565b600191505092915050565b601860019054906101000a900460ff1681565b611eda61234c565b73ffffffffffffffffffffffffffffffffffffffff16611ef8611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f45906141ab565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611f7361234c565b73ffffffffffffffffffffffffffffffffffffffff16611f91611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde906141ab565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d161234c565b73ffffffffffffffffffffffffffffffffffffffff166120ef611c17565b73ffffffffffffffffffffffffffffffffffffffff1614612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c906141ab565b60405180910390fd5b61215661215130611823565b61321a565b565b601e6020528060005260406000206000915054906101000a900460ff1681565b61218061234c565b73ffffffffffffffffffffffffffffffffffffffff1661219e611c17565b73ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb906141ab565b60405180910390fd5b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61225761234c565b73ffffffffffffffffffffffffffffffffffffffff16612275611c17565b73ffffffffffffffffffffffffffffffffffffffff16146122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c2906141ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361233a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233190614797565b60405180910390fd5b612343816138f0565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90614829565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612429906148bb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125109190613cd3565b60405180910390a3505050565b60006125298484612042565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125a35781811015612595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258c90614927565b60405180910390fd5b6125a28484848403612354565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f906149b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267e90614a4b565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b90614ab7565b60405180910390fd5b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279890614b23565b60405180910390fd5b600081036127ba576127b583836000613a05565b613215565b6127c2611c17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128305750612800611c17565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128695750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128bc5750600760149054906101000a900460ff16155b15612c9f57600f60019054906101000a900460ff166129b657601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129765750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ac90614bb5565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a595750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0057600c54811115612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a90614c6d565b60405180910390fd5b600e54612aaf83611823565b82612aba919061425a565b1115612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614cd9565b60405180910390fd5b612c9e565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba35750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf257600d54811115612bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be490614d91565b60405180910390fd5b612c9d565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c9c57600e54612c4f83611823565b82612c5a919061425a565b1115612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290614cd9565b60405180910390fd5b5b5b5b5b6000600b54612cad30611823565b10159050808015612ccb5750600760149054906101000a900460ff16155b8015612d215750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d775750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dcd5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e11576001600760146101000a81548160ff021916908315150217905550612df561170d565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050600f60009054906101000a900460ff1680612e8a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ede5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f895750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f885750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15612f9357600090505b60008115613206576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361304b57601860019054906101000a900460ff16613041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303890614dfd565b60405180910390fd5b60175490506130f6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036130f557601860009054906101000a900460ff166130ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e690614e69565b60405180910390fd5b60165490505b5b61311c606461310e8388613c8490919063ffffffff16565b613c9a90919063ffffffff16565b915061314760195461313960125485613c8490919063ffffffff16565b613c9a90919063ffffffff16565b60146000828254613158919061425a565b9250508190555061318860195461317a60115485613c8490919063ffffffff16565b613c9a90919063ffffffff16565b60136000828254613199919061425a565b925050819055506131c96019546131bb60105485613c8490919063ffffffff16565b613c9a90919063ffffffff16565b601560008282546131da919061425a565b9250508190555060008211156131f6576131f5873084613a05565b5b81856132029190614e89565b9450505b613211868686613a05565b5050505b505050565b60008114613463576000600267ffffffffffffffff81111561323f5761323e614ebd565b5b60405190808252806020026020018201604052801561326d5781602001602082028036833780820191505090505b509050308160008151811061328557613284614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561332c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335091906144c3565b8160018151811061336457613363614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133cb30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612354565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161342f959493929190614fd9565b600060405180830381600087803b15801561344957600080fd5b505af115801561345d573d6000803e3d6000fd5b50505050505b50565b61349330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612354565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161351c9695949392919061455e565b60606040518083038185885af115801561353a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061355f91906145d4565b5050505050565b600081146138ed576000600267ffffffffffffffff81111561358b5761358a614ebd565b5b6040519080825280602002602001820160405280156135b95781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364d91906144c3565b8160008151811061366157613660614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106136d2576136d1614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b815260040161376f9493929190615033565b6000604051808303818588803b15801561378857600080fd5b505af115801561379c573d6000803e3d6000fd5b50505050506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137fe9190614057565b602060405180830381865afa15801561381b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061383f919061507f565b9050600061dead9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b81526004016138a59291906150ac565b6020604051808303816000875af11580156138c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e891906150ea565b505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6b90615163565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ada90614a4b565b60405180910390fd5b613aee838383613cb0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6b906151f5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c07919061425a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c6b9190613cd3565b60405180910390a3613c7e848484613cb5565b50505050565b60008183613c92919061428e565b905092915050565b60008183613ca891906142ff565b905092915050565b505050565b505050565b6000819050919050565b613ccd81613cba565b82525050565b6000602082019050613ce86000830184613cc4565b92915050565b600080fd5b60008115159050919050565b613d0881613cf3565b8114613d1357600080fd5b50565b600081359050613d2581613cff565b92915050565b60008060408385031215613d4257613d41613cee565b5b6000613d5085828601613d16565b9250506020613d6185828601613d16565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613da5578082015181840152602081019050613d8a565b60008484015250505050565b6000601f19601f8301169050919050565b6000613dcd82613d6b565b613dd78185613d76565b9350613de7818560208601613d87565b613df081613db1565b840191505092915050565b60006020820190508181036000830152613e158184613dc2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e4882613e1d565b9050919050565b613e5881613e3d565b8114613e6357600080fd5b50565b600081359050613e7581613e4f565b92915050565b613e8481613cba565b8114613e8f57600080fd5b50565b600081359050613ea181613e7b565b92915050565b60008060408385031215613ebe57613ebd613cee565b5b6000613ecc85828601613e66565b9250506020613edd85828601613e92565b9150509250929050565b613ef081613cf3565b82525050565b6000602082019050613f0b6000830184613ee7565b92915050565b600060208284031215613f2757613f26613cee565b5b6000613f3584828501613e66565b91505092915050565b600080600060608486031215613f5757613f56613cee565b5b6000613f6586828701613e92565b9350506020613f7686828701613e92565b9250506040613f8786828701613e92565b9150509250925092565b600080600060608486031215613faa57613fa9613cee565b5b6000613fb886828701613e66565b9350506020613fc986828701613e66565b9250506040613fda86828701613e92565b9150509250925092565b600060208284031215613ffa57613ff9613cee565b5b600061400884828501613e92565b91505092915050565b600060ff82169050919050565b61402781614011565b82525050565b6000602082019050614042600083018461401e565b92915050565b61405181613e3d565b82525050565b600060208201905061406c6000830184614048565b92915050565b6000806040838503121561408957614088613cee565b5b600061409785828601613e66565b92505060206140a885828601613e66565b9150509250929050565b600080604083850312156140c9576140c8613cee565b5b60006140d785828601613e92565b92505060206140e885828601613e92565b9150509250929050565b60006020828403121561410857614107613cee565b5b600061411684828501613d16565b91505092915050565b6000806040838503121561413657614135613cee565b5b600061414485828601613e66565b925050602061415585828601613d16565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614195602083613d76565b91506141a08261415f565b602082019050919050565b600060208201905081810360008301526141c481614188565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061421257607f821691505b602082108103614225576142246141cb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061426582613cba565b915061427083613cba565b92508282019050808211156142885761428761422b565b5b92915050565b600061429982613cba565b91506142a483613cba565b92508282026142b281613cba565b915082820484148315176142c9576142c861422b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061430a82613cba565b915061431583613cba565b925082614325576143246142d0565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b6001851115614387578086048111156143635761436261422b565b5b60018516156143725780820291505b808102905061438085614330565b9450614347565b94509492505050565b6000826143a0576001905061445c565b816143ae576000905061445c565b81600181146143c457600281146143ce576143fd565b600191505061445c565b60ff8411156143e0576143df61422b565b5b8360020a9150848211156143f7576143f661422b565b5b5061445c565b5060208310610133831016604e8410600b84101617156144325782820a90508381111561442d5761442c61422b565b5b61445c565b61443f848484600161433d565b925090508184048111156144565761445561422b565b5b81810290505b9392505050565b600061446e82613cba565b915061447983614011565b92506144a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614390565b905092915050565b6000815190506144bd81613e4f565b92915050565b6000602082840312156144d9576144d8613cee565b5b60006144e7848285016144ae565b91505092915050565b60006040820190506145056000830185614048565b6145126020830184614048565b9392505050565b6000819050919050565b6000819050919050565b600061454861454361453e84614519565b614523565b613cba565b9050919050565b6145588161452d565b82525050565b600060c0820190506145736000830189614048565b6145806020830188613cc4565b61458d604083018761454f565b61459a606083018661454f565b6145a76080830185614048565b6145b460a0830184613cc4565b979650505050505050565b6000815190506145ce81613e7b565b92915050565b6000806000606084860312156145ed576145ec613cee565b5b60006145fb868287016145bf565b935050602061460c868287016145bf565b925050604061461d868287016145bf565b9150509250925092565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b600061465d600c83613d76565b915061466882614627565b602082019050919050565b6000602082019050818103600083015261468c81614650565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006146ef602583613d76565b91506146fa82614693565b604082019050919050565b6000602082019050818103600083015261471e816146e2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614781602683613d76565b915061478c82614725565b604082019050919050565b600060208201905081810360008301526147b081614774565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614813602483613d76565b915061481e826147b7565b604082019050919050565b6000602082019050818103600083015261484281614806565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006148a5602283613d76565b91506148b082614849565b604082019050919050565b600060208201905081810360008301526148d481614898565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614911601d83613d76565b915061491c826148db565b602082019050919050565b6000602082019050818103600083015261494081614904565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149a3602583613d76565b91506149ae82614947565b604082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a35602383613d76565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000614aa1601283613d76565b9150614aac82614a6b565b602082019050919050565b60006020820190508181036000830152614ad081614a94565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000614b0d601483613d76565b9150614b1882614ad7565b602082019050919050565b60006020820190508181036000830152614b3c81614b00565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b9f602283613d76565b9150614baa82614b43565b604082019050919050565b60006020820190508181036000830152614bce81614b92565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b6000614c57604183613d76565b9150614c6282614bd5565b606082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000614cc3601f83613d76565b9150614cce82614c8d565b602082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b6000614d7b604283613d76565b9150614d8682614cf9565b606082019050919050565b60006020820190508181036000830152614daa81614d6e565b9050919050565b7f53656c6c2073746174757320697320636c6f7365640000000000000000000000600082015250565b6000614de7601583613d76565b9150614df282614db1565b602082019050919050565b60006020820190508181036000830152614e1681614dda565b9050919050565b7f4275792073746174757320697320636c6f736564000000000000000000000000600082015250565b6000614e53601483613d76565b9150614e5e82614e1d565b602082019050919050565b60006020820190508181036000830152614e8281614e46565b9050919050565b6000614e9482613cba565b9150614e9f83613cba565b9250828203905081811115614eb757614eb661422b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f5081613e3d565b82525050565b6000614f628383614f47565b60208301905092915050565b6000602082019050919050565b6000614f8682614f1b565b614f908185614f26565b9350614f9b83614f37565b8060005b83811015614fcc578151614fb38882614f56565b9750614fbe83614f6e565b925050600181019050614f9f565b5085935050505092915050565b600060a082019050614fee6000830188613cc4565b614ffb602083018761454f565b818103604083015261500d8186614f7b565b905061501c6060830185614048565b6150296080830184613cc4565b9695505050505050565b6000608082019050615048600083018761454f565b818103602083015261505a8186614f7b565b90506150696040830185614048565b6150766060830184613cc4565b95945050505050565b60006020828403121561509557615094613cee565b5b60006150a3848285016145bf565b91505092915050565b60006040820190506150c16000830185614048565b6150ce6020830184613cc4565b9392505050565b6000815190506150e481613cff565b92915050565b600060208284031215615100576150ff613cee565b5b600061510e848285016150d5565b91505092915050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b600061514d601e83613d76565b915061515882615117565b602082019050919050565b6000602082019050818103600083015261517c81615140565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151df602683613d76565b91506151ea82615183565b604082019050919050565b6000602082019050818103600083015261520e816151d2565b905091905056fea2646970667358221220b3810b58915456873033871ee1f97d2a838987d6a52625f11b44abfc63c5cf5b64736f6c63430008130033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d0000000000000000000000001c581213f5419b35dda55127e488c969af1ae5910000000000000000000000001c581213f5419b35dda55127e488c969af1ae5910000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006300000000000000000000000000000000000000000000000000000000000000084444444f4731344b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084444444f4731344b000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102815760003560e01c806358a3e5e41161014f57806395d89b41116100c1578063dd62ed3e1161007a578063dd62ed3e14610959578063df778d2614610996578063e47d6060146109ad578063e4997dc5146109ea578063f2fde38b14610a13578063f8b45b0514610a3c57610288565b806395d89b4114610837578063a457c2d714610862578063a9059cbb1461089f578063b1d0b725146108dc578063bb5e048a14610907578063c02466681461093057610288565b8063740bf49711610113578063740bf49714610763578063751039fc1461078c57806379935098146107a35780638a8c523c146107cc5780638da5cb5b146107e357806393b1c69c1461080e57610288565b806358a3e5e4146106a457806365cffb1e146106cd5780636ac5eeee146106f857806370a082311461070f578063715018a61461074c57610288565b8063277a2205116101f357806339509351116101ac5780633950935114610592578063399e4bfb146105cf57806340b2f5b5146105fa57806347062402146106255780634fbee19314610650578063572eeb281461068d57610288565b8063277a2205146104965780632b14ca56146104bf5780632e1888b8146104ea578063313ce567146105135780633415650e1461053e57806336a0f8a51461056957610288565b806311704f521161024557806311704f521461037257806313114a9d1461039d578063163a37ba146103c857806318160ddd14610405578063224290851461043057806323b872dd1461045957610288565b806302bf2a5c1461028d578063034c4897146102b857806306fdde03146102e1578063095ea7b31461030c5780630ecb93c01461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a67565b6040516102af9190613cd3565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613d2b565b610a6d565b005b3480156102ed57600080fd5b506102f6610b21565b6040516103039190613dfb565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190613ea7565b610bb3565b6040516103409190613ef6565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190613f11565b610bd6565b005b34801561037e57600080fd5b50610387610cad565b6040516103949190613ef6565b60405180910390f35b3480156103a957600080fd5b506103b2610cc0565b6040516103bf9190613cd3565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613f11565b610cc6565b6040516103fc9190613ef6565b60405180910390f35b34801561041157600080fd5b5061041a610d1c565b6040516104279190613cd3565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613f3e565b610d26565b005b34801561046557600080fd5b50610480600480360381019061047b9190613f91565b610dff565b60405161048d9190613ef6565b60405180910390f35b3480156104a257600080fd5b506104bd60048036038101906104b89190613fe4565b610e2e565b005b3480156104cb57600080fd5b506104d4610ed4565b6040516104e19190613cd3565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c9190613ea7565b610eda565b005b34801561051f57600080fd5b50610528610fa1565b604051610535919061402d565b60405180910390f35b34801561054a57600080fd5b50610553610faa565b6040516105609190613ef6565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613f3e565b610fbd565b005b34801561059e57600080fd5b506105b960048036038101906105b49190613ea7565b6110ad565b6040516105c69190613ef6565b60405180910390f35b3480156105db57600080fd5b506105e4611157565b6040516105f19190613cd3565b60405180910390f35b34801561060657600080fd5b5061060f61115d565b60405161061c9190614057565b60405180910390f35b34801561063157600080fd5b5061063a611183565b6040516106479190613cd3565b60405180910390f35b34801561065c57600080fd5b5061067760048036038101906106729190613f11565b611189565b6040516106849190613ef6565b60405180910390f35b34801561069957600080fd5b506106a26111df565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613f11565b61163a565b005b3480156106d957600080fd5b506106e26116fa565b6040516106ef9190613ef6565b60405180910390f35b34801561070457600080fd5b5061070d61170d565b005b34801561071b57600080fd5b5061073660048036038101906107319190613f11565b611823565b6040516107439190613cd3565b60405180910390f35b34801561075857600080fd5b5061076161186b565b005b34801561076f57600080fd5b5061078a60048036038101906107859190614072565b6118f3565b005b34801561079857600080fd5b506107a16119f5565b005b3480156107af57600080fd5b506107ca60048036038101906107c59190613ea7565b611ae8565b005b3480156107d857600080fd5b506107e1611b7e565b005b3480156107ef57600080fd5b506107f8611c17565b6040516108059190614057565b60405180910390f35b34801561081a57600080fd5b50610835600480360381019061083091906140b2565b611c41565b005b34801561084357600080fd5b5061084c611d20565b6040516108599190613dfb565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190613ea7565b611db2565b6040516108969190613ef6565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c19190613ea7565b611e9c565b6040516108d39190613ef6565b60405180910390f35b3480156108e857600080fd5b506108f1611ebf565b6040516108fe9190613ef6565b60405180910390f35b34801561091357600080fd5b5061092e600480360381019061092991906140f2565b611ed2565b005b34801561093c57600080fd5b506109576004803603810190610952919061411f565b611f6b565b005b34801561096557600080fd5b50610980600480360381019061097b9190614072565b612042565b60405161098d9190613cd3565b60405180910390f35b3480156109a257600080fd5b506109ab6120c9565b005b3480156109b957600080fd5b506109d460048036038101906109cf9190613f11565b612158565b6040516109e19190613ef6565b60405180910390f35b3480156109f657600080fd5b50610a116004803603810190610a0c9190613f11565b612178565b005b348015610a1f57600080fd5b50610a3a6004803603810190610a359190613f11565b61224f565b005b348015610a4857600080fd5b50610a51612346565b604051610a5e9190613cd3565b60405180910390f35b600c5481565b610a7561234c565b73ffffffffffffffffffffffffffffffffffffffff16610a93611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae0906141ab565b60405180910390fd5b81601860006101000a81548160ff02191690831515021790555080601860016101000a81548160ff0219169083151502179055505050565b606060038054610b30906141fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5c906141fa565b8015610ba95780601f10610b7e57610100808354040283529160200191610ba9565b820191906000526020600020905b815481529060010190602001808311610b8c57829003601f168201915b5050505050905090565b600080610bbe61234c565b9050610bcb818585612354565b600191505092915050565b610bde61234c565b73ffffffffffffffffffffffffffffffffffffffff16610bfc611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c49906141ab565b60405180910390fd5b6001601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60019054906101000a900460ff1681565b60195481565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b610d2e61234c565b73ffffffffffffffffffffffffffffffffffffffff16610d4c611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d99906141ab565b60405180910390fd5b600a8284610db0919061425a565b1115610dbb57600080fd5b60058110610dc857600080fd5b806010819055508260118190555081601281905550808284610dea919061425a565b610df4919061425a565b601981905550505050565b600080610e0a61234c565b9050610e1785828561251d565b610e228585856125a9565b60019150509392505050565b610e3661234c565b73ffffffffffffffffffffffffffffffffffffffff16610e54611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906141ab565b60405180910390fd5b620f424081610eb7610d1c565b610ec1919061428e565b610ecb91906142ff565b600b8190555050565b60175481565b610ee261234c565b73ffffffffffffffffffffffffffffffffffffffff16610f00611c17565b73ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d906141ab565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f9c573d6000803e3d6000fd5b505050565b60006012905090565b601860009054906101000a900460ff1681565b610fc561234c565b73ffffffffffffffffffffffffffffffffffffffff16610fe3611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611030906141ab565b60405180910390fd5b611041610fa1565b600a61104d9190614463565b83611058919061428e565b600c81905550611066610fa1565b600a6110729190614463565b8261107d919061428e565b600d8190555061108b610fa1565b600a6110979190614463565b816110a2919061428e565b600e81905550505050565b6000806110b861234c565b905061114c818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611147919061425a565b612354565b600191505092915050565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6111e761234c565b73ffffffffffffffffffffffffffffffffffffffff16611205611c17565b73ffffffffffffffffffffffffffffffffffffffff161461125b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611252906141ab565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906144c3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611375573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139991906144c3565b6040518363ffffffff1660e01b81526004016113b69291906144f0565b6020604051808303816000875af11580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f991906144c3565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061156130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661155c610d1c565b612354565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115aa30611823565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016115f29695949392919061455e565b60606040518083038185885af1158015611610573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163591906145d4565b505050565b61164261234c565b73ffffffffffffffffffffffffffffffffffffffff16611660611c17565b73ffffffffffffffffffffffffffffffffffffffff16146116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad906141ab565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b600061171830611823565b9050600081036117285750611821565b6000600260145461173991906142ff565b905061174660135461321a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156117ae573d6000803e3d6000fd5b506117b88161321a565b600047905060006117c830611823565b90506000821180156117da5750600081115b156117ea576117e98183613466565b5b6117f560155461321a565b600047905061180381613566565b60006013819055506000601481905550600060158190555050505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61187361234c565b73ffffffffffffffffffffffffffffffffffffffff16611891611c17565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906141ab565b60405180910390fd5b6118f160006138f0565b565b6118fb61234c565b73ffffffffffffffffffffffffffffffffffffffff16611919611c17565b73ffffffffffffffffffffffffffffffffffffffff161461196f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611966906141ab565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6119fd61234c565b73ffffffffffffffffffffffffffffffffffffffff16611a1b611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a68906141ab565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e81905550565b611af061234c565b73ffffffffffffffffffffffffffffffffffffffff16611b0e611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906141ab565b60405180910390fd5b611b6e82826139b6565b50611b7a3083836125a9565b5050565b611b8661234c565b73ffffffffffffffffffffffffffffffffffffffff16611ba4611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf1906141ab565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c4961234c565b73ffffffffffffffffffffffffffffffffffffffff16611c67611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb4906141ab565b60405180910390fd5b60638211158015611ccf575060638111155b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614673565b60405180910390fd5b81601681905550806017819055505050565b606060048054611d2f906141fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5b906141fa565b8015611da85780601f10611d7d57610100808354040283529160200191611da8565b820191906000526020600020905b815481529060010190602001808311611d8b57829003601f168201915b5050505050905090565b600080611dbd61234c565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90614705565b60405180910390fd5b611e908286868403612354565b60019250505092915050565b600080611ea761234c565b9050611eb48185856125a9565b600191505092915050565b601860019054906101000a900460ff1681565b611eda61234c565b73ffffffffffffffffffffffffffffffffffffffff16611ef8611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f45906141ab565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611f7361234c565b73ffffffffffffffffffffffffffffffffffffffff16611f91611c17565b73ffffffffffffffffffffffffffffffffffffffff1614611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde906141ab565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d161234c565b73ffffffffffffffffffffffffffffffffffffffff166120ef611c17565b73ffffffffffffffffffffffffffffffffffffffff1614612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c906141ab565b60405180910390fd5b61215661215130611823565b61321a565b565b601e6020528060005260406000206000915054906101000a900460ff1681565b61218061234c565b73ffffffffffffffffffffffffffffffffffffffff1661219e611c17565b73ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb906141ab565b60405180910390fd5b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61225761234c565b73ffffffffffffffffffffffffffffffffffffffff16612275611c17565b73ffffffffffffffffffffffffffffffffffffffff16146122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c2906141ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361233a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233190614797565b60405180910390fd5b612343816138f0565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90614829565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612429906148bb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125109190613cd3565b60405180910390a3505050565b60006125298484612042565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125a35781811015612595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258c90614927565b60405180910390fd5b6125a28484848403612354565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f906149b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267e90614a4b565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b90614ab7565b60405180910390fd5b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279890614b23565b60405180910390fd5b600081036127ba576127b583836000613a05565b613215565b6127c2611c17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128305750612800611c17565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128695750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128bc5750600760149054906101000a900460ff16155b15612c9f57600f60019054906101000a900460ff166129b657601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129765750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ac90614bb5565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a595750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0057600c54811115612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a90614c6d565b60405180910390fd5b600e54612aaf83611823565b82612aba919061425a565b1115612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614cd9565b60405180910390fd5b612c9e565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba35750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf257600d54811115612bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be490614d91565b60405180910390fd5b612c9d565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c9c57600e54612c4f83611823565b82612c5a919061425a565b1115612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290614cd9565b60405180910390fd5b5b5b5b5b6000600b54612cad30611823565b10159050808015612ccb5750600760149054906101000a900460ff16155b8015612d215750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d775750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dcd5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e11576001600760146101000a81548160ff021916908315150217905550612df561170d565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050600f60009054906101000a900460ff1680612e8a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ede5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f895750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f885750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15612f9357600090505b60008115613206576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361304b57601860019054906101000a900460ff16613041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303890614dfd565b60405180910390fd5b60175490506130f6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036130f557601860009054906101000a900460ff166130ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e690614e69565b60405180910390fd5b60165490505b5b61311c606461310e8388613c8490919063ffffffff16565b613c9a90919063ffffffff16565b915061314760195461313960125485613c8490919063ffffffff16565b613c9a90919063ffffffff16565b60146000828254613158919061425a565b9250508190555061318860195461317a60115485613c8490919063ffffffff16565b613c9a90919063ffffffff16565b60136000828254613199919061425a565b925050819055506131c96019546131bb60105485613c8490919063ffffffff16565b613c9a90919063ffffffff16565b601560008282546131da919061425a565b9250508190555060008211156131f6576131f5873084613a05565b5b81856132029190614e89565b9450505b613211868686613a05565b5050505b505050565b60008114613463576000600267ffffffffffffffff81111561323f5761323e614ebd565b5b60405190808252806020026020018201604052801561326d5781602001602082028036833780820191505090505b509050308160008151811061328557613284614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561332c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335091906144c3565b8160018151811061336457613363614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133cb30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612354565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161342f959493929190614fd9565b600060405180830381600087803b15801561344957600080fd5b505af115801561345d573d6000803e3d6000fd5b50505050505b50565b61349330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612354565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161351c9695949392919061455e565b60606040518083038185885af115801561353a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061355f91906145d4565b5050505050565b600081146138ed576000600267ffffffffffffffff81111561358b5761358a614ebd565b5b6040519080825280602002602001820160405280156135b95781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364d91906144c3565b8160008151811061366157613660614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106136d2576136d1614eec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b815260040161376f9493929190615033565b6000604051808303818588803b15801561378857600080fd5b505af115801561379c573d6000803e3d6000fd5b50505050506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137fe9190614057565b602060405180830381865afa15801561381b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061383f919061507f565b9050600061dead9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b81526004016138a59291906150ac565b6020604051808303816000875af11580156138c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e891906150ea565b505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6b90615163565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ada90614a4b565b60405180910390fd5b613aee838383613cb0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6b906151f5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c07919061425a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c6b9190613cd3565b60405180910390a3613c7e848484613cb5565b50505050565b60008183613c92919061428e565b905092915050565b60008183613ca891906142ff565b905092915050565b505050565b505050565b6000819050919050565b613ccd81613cba565b82525050565b6000602082019050613ce86000830184613cc4565b92915050565b600080fd5b60008115159050919050565b613d0881613cf3565b8114613d1357600080fd5b50565b600081359050613d2581613cff565b92915050565b60008060408385031215613d4257613d41613cee565b5b6000613d5085828601613d16565b9250506020613d6185828601613d16565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613da5578082015181840152602081019050613d8a565b60008484015250505050565b6000601f19601f8301169050919050565b6000613dcd82613d6b565b613dd78185613d76565b9350613de7818560208601613d87565b613df081613db1565b840191505092915050565b60006020820190508181036000830152613e158184613dc2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e4882613e1d565b9050919050565b613e5881613e3d565b8114613e6357600080fd5b50565b600081359050613e7581613e4f565b92915050565b613e8481613cba565b8114613e8f57600080fd5b50565b600081359050613ea181613e7b565b92915050565b60008060408385031215613ebe57613ebd613cee565b5b6000613ecc85828601613e66565b9250506020613edd85828601613e92565b9150509250929050565b613ef081613cf3565b82525050565b6000602082019050613f0b6000830184613ee7565b92915050565b600060208284031215613f2757613f26613cee565b5b6000613f3584828501613e66565b91505092915050565b600080600060608486031215613f5757613f56613cee565b5b6000613f6586828701613e92565b9350506020613f7686828701613e92565b9250506040613f8786828701613e92565b9150509250925092565b600080600060608486031215613faa57613fa9613cee565b5b6000613fb886828701613e66565b9350506020613fc986828701613e66565b9250506040613fda86828701613e92565b9150509250925092565b600060208284031215613ffa57613ff9613cee565b5b600061400884828501613e92565b91505092915050565b600060ff82169050919050565b61402781614011565b82525050565b6000602082019050614042600083018461401e565b92915050565b61405181613e3d565b82525050565b600060208201905061406c6000830184614048565b92915050565b6000806040838503121561408957614088613cee565b5b600061409785828601613e66565b92505060206140a885828601613e66565b9150509250929050565b600080604083850312156140c9576140c8613cee565b5b60006140d785828601613e92565b92505060206140e885828601613e92565b9150509250929050565b60006020828403121561410857614107613cee565b5b600061411684828501613d16565b91505092915050565b6000806040838503121561413657614135613cee565b5b600061414485828601613e66565b925050602061415585828601613d16565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614195602083613d76565b91506141a08261415f565b602082019050919050565b600060208201905081810360008301526141c481614188565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061421257607f821691505b602082108103614225576142246141cb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061426582613cba565b915061427083613cba565b92508282019050808211156142885761428761422b565b5b92915050565b600061429982613cba565b91506142a483613cba565b92508282026142b281613cba565b915082820484148315176142c9576142c861422b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061430a82613cba565b915061431583613cba565b925082614325576143246142d0565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b6001851115614387578086048111156143635761436261422b565b5b60018516156143725780820291505b808102905061438085614330565b9450614347565b94509492505050565b6000826143a0576001905061445c565b816143ae576000905061445c565b81600181146143c457600281146143ce576143fd565b600191505061445c565b60ff8411156143e0576143df61422b565b5b8360020a9150848211156143f7576143f661422b565b5b5061445c565b5060208310610133831016604e8410600b84101617156144325782820a90508381111561442d5761442c61422b565b5b61445c565b61443f848484600161433d565b925090508184048111156144565761445561422b565b5b81810290505b9392505050565b600061446e82613cba565b915061447983614011565b92506144a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614390565b905092915050565b6000815190506144bd81613e4f565b92915050565b6000602082840312156144d9576144d8613cee565b5b60006144e7848285016144ae565b91505092915050565b60006040820190506145056000830185614048565b6145126020830184614048565b9392505050565b6000819050919050565b6000819050919050565b600061454861454361453e84614519565b614523565b613cba565b9050919050565b6145588161452d565b82525050565b600060c0820190506145736000830189614048565b6145806020830188613cc4565b61458d604083018761454f565b61459a606083018661454f565b6145a76080830185614048565b6145b460a0830184613cc4565b979650505050505050565b6000815190506145ce81613e7b565b92915050565b6000806000606084860312156145ed576145ec613cee565b5b60006145fb868287016145bf565b935050602061460c868287016145bf565b925050604061461d868287016145bf565b9150509250925092565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b600061465d600c83613d76565b915061466882614627565b602082019050919050565b6000602082019050818103600083015261468c81614650565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006146ef602583613d76565b91506146fa82614693565b604082019050919050565b6000602082019050818103600083015261471e816146e2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614781602683613d76565b915061478c82614725565b604082019050919050565b600060208201905081810360008301526147b081614774565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614813602483613d76565b915061481e826147b7565b604082019050919050565b6000602082019050818103600083015261484281614806565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006148a5602283613d76565b91506148b082614849565b604082019050919050565b600060208201905081810360008301526148d481614898565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614911601d83613d76565b915061491c826148db565b602082019050919050565b6000602082019050818103600083015261494081614904565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149a3602583613d76565b91506149ae82614947565b604082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a35602383613d76565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000614aa1601283613d76565b9150614aac82614a6b565b602082019050919050565b60006020820190508181036000830152614ad081614a94565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000614b0d601483613d76565b9150614b1882614ad7565b602082019050919050565b60006020820190508181036000830152614b3c81614b00565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b9f602283613d76565b9150614baa82614b43565b604082019050919050565b60006020820190508181036000830152614bce81614b92565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b6000614c57604183613d76565b9150614c6282614bd5565b606082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000614cc3601f83613d76565b9150614cce82614c8d565b602082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b6000614d7b604283613d76565b9150614d8682614cf9565b606082019050919050565b60006020820190508181036000830152614daa81614d6e565b9050919050565b7f53656c6c2073746174757320697320636c6f7365640000000000000000000000600082015250565b6000614de7601583613d76565b9150614df282614db1565b602082019050919050565b60006020820190508181036000830152614e1681614dda565b9050919050565b7f4275792073746174757320697320636c6f736564000000000000000000000000600082015250565b6000614e53601483613d76565b9150614e5e82614e1d565b602082019050919050565b60006020820190508181036000830152614e8281614e46565b9050919050565b6000614e9482613cba565b9150614e9f83613cba565b9250828203905081811115614eb757614eb661422b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f5081613e3d565b82525050565b6000614f628383614f47565b60208301905092915050565b6000602082019050919050565b6000614f8682614f1b565b614f908185614f26565b9350614f9b83614f37565b8060005b83811015614fcc578151614fb38882614f56565b9750614fbe83614f6e565b925050600181019050614f9f565b5085935050505092915050565b600060a082019050614fee6000830188613cc4565b614ffb602083018761454f565b818103604083015261500d8186614f7b565b905061501c6060830185614048565b6150296080830184613cc4565b9695505050505050565b6000608082019050615048600083018761454f565b818103602083015261505a8186614f7b565b90506150696040830185614048565b6150766060830184613cc4565b95945050505050565b60006020828403121561509557615094613cee565b5b60006150a3848285016145bf565b91505092915050565b60006040820190506150c16000830185614048565b6150ce6020830184613cc4565b9392505050565b6000815190506150e481613cff565b92915050565b600060208284031215615100576150ff613cee565b5b600061510e848285016150d5565b91505092915050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b600061514d601e83613d76565b915061515882615117565b602082019050919050565b6000602082019050818103600083015261517c81615140565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151df602683613d76565b91506151ea82615183565b604082019050919050565b6000602082019050818103600083015261520e816151d2565b905091905056fea2646970667358221220b3810b58915456873033871ee1f97d2a838987d6a52625f11b44abfc63c5cf5b64736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d0000000000000000000000001c581213f5419b35dda55127e488c969af1ae5910000000000000000000000001c581213f5419b35dda55127e488c969af1ae5910000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006300000000000000000000000000000000000000000000000000000000000000084444444f4731344b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084444444f4731344b000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): DDDOG14K
Arg [1] : symbol (string): DDDOG14K
Arg [2] : _percent (uint256): 1
Arg [3] : _utility (address): 0x562E362876c8Aee4744FC2c6aaC8394C312d215d
Arg [4] : fundingWallet (address): 0x1C581213F5419B35ddA55127e488C969AF1AE591
Arg [5] : LPAddress (address): 0x1C581213F5419B35ddA55127e488C969AF1AE591
Arg [6] : _buyFee (uint256): 4
Arg [7] : _sellFee (uint256): 99

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d
Arg [4] : 0000000000000000000000001c581213f5419b35dda55127e488c969af1ae591
Arg [5] : 0000000000000000000000001c581213f5419b35dda55127e488c969af1ae591
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000063
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [9] : 4444444f4731344b000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [11] : 4444444f4731344b000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

19632:13786:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19992:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25979:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1769:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2838:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24052:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20164:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20572:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24296:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2090:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25022:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3088:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22851:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20478:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33013:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1989:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20513:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25442:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3391:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20044:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19829:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20450:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26363:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23368:676;;;;;;;;;;;;;:::i;:::-;;23089:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20125:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31702:890;;;;;;;;;;;;;:::i;:::-;;2206:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16232:103;;;;;;;;;;;;;:::i;:::-;;23191:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25779:192;;;;;;;;;;;;;:::i;:::-;;32664:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24414:81;;;;;;;;;;;;;:::i;:::-;;16009:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24803:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1877:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3671:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2387:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20541:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26172:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24563:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2629:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33276:102;;;;;;;;;;;;;:::i;:::-;;21170:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24169:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16343:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20092:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19992:45;;;;:::o;25979:122::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26062:3:::1;26050:9;;:15;;;;;;;;;;;;;;;;;;26089:4;26076:10;;:17;;;;;;;;;;;;;;;;;;25979:122:::0;;:::o;1769:100::-;1823:13;1856:5;1849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1769:100;:::o;2838:242::-;2957:4;2979:13;2995:12;:10;:12::i;:::-;2979:28;;3018:32;3027:5;3034:7;3043:6;3018:8;:32::i;:::-;3068:4;3061:11;;;2838:242;;;;:::o;24052:109::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24149:4:::1;24122:13;:24;24136:9;24122:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;24052:109:::0;:::o;20164:31::-;;;;;;;;;;;;;:::o;20572:67::-;;;;:::o;24296:110::-;24355:4;24378:13;:20;24392:5;24378:20;;;;;;;;;;;;;;;;;;;;;;;;;24371:27;;24296:110;;;:::o;2090:108::-;2151:7;2178:12;;2171:19;;2090:108;:::o;25022:412::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25209:2:::1;25192:12;25179:10;:25;;;;:::i;:::-;:32;;25171:41;;;::::0;::::1;;25245:1;25231:11;:15;25223:24;;;::::0;::::1;;25271:11;25258:10;:24;;;;25307:10;25293:11;:24;;;;25344:12;25328:13;:28;;;;25415:11;25400:12;25387:10;:25;;;;:::i;:::-;:39;;;;:::i;:::-;25375:9;:51;;;;25022:412:::0;;;:::o;3088:295::-;3219:4;3236:15;3254:12;:10;:12::i;:::-;3236:30;;3277:38;3293:4;3299:7;3308:6;3277:15;:38::i;:::-;3326:27;3336:4;3342:2;3346:6;3326:9;:27::i;:::-;3371:4;3364:11;;;3088:295;;;;;:::o;22851:157::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22960:7:::1;22948:8;22932:13;:11;:13::i;:::-;:24;;;;:::i;:::-;22931:36;;;;:::i;:::-;22922:6;:45;;;;22851:157:::0;:::o;20478:22::-;;;;:::o;33013:168::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33143:2:::1;33135:20;;:38;33156:16;33135:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;33013:168:::0;;:::o;1989:93::-;2047:5;2072:2;2065:9;;1989:93;:::o;20513:21::-;;;;;;;;;;;;;:::o;25442:329::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25632:10:::1;:8;:10::i;:::-;25628:2;:14;;;;:::i;:::-;25616:8;:27;;;;:::i;:::-;25583:30;:60;;;;25700:10;:8;:10::i;:::-;25696:2;:14;;;;:::i;:::-;25683:9;:28;;;;:::i;:::-;25654:26;:57;;;;25752:10;:8;:10::i;:::-;25748:2;:14;;;;:::i;:::-;25734:10;:29;;;;:::i;:::-;25722:9;:41;;;;25442:329:::0;;;:::o;3391:272::-;3506:4;3528:13;3544:12;:10;:12::i;:::-;3528:28;;3567:66;3576:5;3583:7;3622:10;3592:11;:18;3604:5;3592:18;;;;;;;;;;;;;;;:27;3611:7;3592:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3567:8;:66::i;:::-;3651:4;3644:11;;;3391:272;;;;:::o;20044:41::-;;;;:::o;19829:22::-;;;;;;;;;;;;;:::o;20450:21::-;;;;:::o;26363:128::-;26431:4;26455:19;:28;26475:7;26455:28;;;;;;;;;;;;;;;;;;;;;;;;;26448:35;;26363:128;;;:::o;23368:676::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23456:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23438:55;;;23520:4;23544:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23438:143;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23422:13;;:159;;;;;;;;;;;;;;;;;;23650:4;23592:31;:55;23632:13;;;;;;;;;;;23592:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;23718:4;23665:26;:50;23700:13;;;;;;;;;;;23665:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;23735:64;23752:4;23767:15;;;;;;;;;;;23785:13;:11;:13::i;:::-;23735:8;:64::i;:::-;23810:15;;;;;;;;;;;:31;;;23849:21;23894:4;23914:24;23932:4;23914:9;:24::i;:::-;23953:1;23969::::0;23985:10:::1;;;;;;;;;;;24010:15;23810:226;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23368:676::o:0;23089:93::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23165:8:::1;23155:7;;:18;;;;;;;;;;;;;;;;;;23089:93:::0;:::o;20125:32::-;;;;;;;;;;;;;:::o;31702:890::-;31740:23;31766:24;31784:4;31766:9;:24::i;:::-;31740:50;;31826:1;31807:15;:20;31803:33;;31829:7;;;31803:33;31848:23;31896:1;31874:19;;:23;;;;:::i;:::-;31848:49;;31910:36;31928:17;;31910;:36::i;:::-;31967:14;;;;;;;;;;;31959:32;;:55;31992:21;31959:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32033:34;32051:15;32033:17;:34::i;:::-;32080:23;32106:21;32080:47;;32140:24;32167;32185:4;32167:9;:24::i;:::-;32140:51;;32225:1;32207:15;:19;:43;;;;;32249:1;32230:16;:20;32207:43;32204:118;;;32262:48;32276:16;32294:15;32262:13;:48::i;:::-;32204:118;32343:36;32361:17;;32343;:36::i;:::-;32392:17;32412:21;32392:41;;32446:28;32464:9;32446:17;:28::i;:::-;32509:1;32489:17;:21;;;;32543:1;32521:19;:23;;;;32581:1;32561:17;:21;;;;31729:863;;;;;31702:890;:::o;2206:173::-;2325:7;2357:5;:14;2363:7;2357:14;;;;;;;;;;;;;;;;2350:21;;2206:173;;;:::o;16232:103::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16297:30:::1;16324:1;16297:18;:30::i;:::-;16232:103::o:0;23191:169::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23299:13:::1;23282:14;;:30;;;;;;;;;;;;;;;;;;23336:9;23323:10;;:22;;;;;;;;;;;;;;;;;;23191:169:::0;;:::o;25779:192::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25864:12:::1;25831:30;:45;;;;25916:12;25887:26;:41;;;;25951:12;25939:9;:24;;;;25779:192::o:0;32664:215::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32778:36:::1;32793:2;32797:16;32778:14;:36::i;:::-;;32825:46;32843:4;32850:2;32854:16;32825:9;:46::i;:::-;32664:215:::0;;:::o;24414:81::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24483:4:::1;24469:11;;:18;;;;;;;;;;;;;;;;;;24414:81::o:0;16009:87::-;16055:7;16082:6;;;;;;;;;;;16075:13;;16009:87;:::o;24803:211::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24912:2:::1;24901:7;:13;;:31;;;;;24930:2;24918:8;:14;;24901:31;24893:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;24969:7;24960:6;:16;;;;24997:8;24987:7;:18;;;;24803:211:::0;;:::o;1877:104::-;1933:13;1966:7;1959:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:104;:::o;3671:507::-;3791:4;3813:13;3829:12;:10;:12::i;:::-;3813:28;;3852:24;3879:11;:18;3891:5;3879:18;;;;;;;;;;;;;;;:27;3898:7;3879:27;;;;;;;;;;;;;;;;3852:54;;3959:15;3939:16;:35;;3917:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4075:60;4084:5;4091:7;4119:15;4100:16;:34;4075:8;:60::i;:::-;4166:4;4159:11;;;;3671:507;;;;:::o;2387:234::-;2502:4;2524:13;2540:12;:10;:12::i;:::-;2524:28;;2563;2573:5;2580:2;2584:6;2563:9;:28::i;:::-;2609:4;2602:11;;;2387:234;;;;:::o;20541:22::-;;;;;;;;;;;;;:::o;26172:91::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26250:5:::1;26235:12;;:20;;;;;;;;;;;;;;;;;;26172:91:::0;:::o;24563:155::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24702:8:::1;24671:19;:28;24691:7;24671:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24563:155:::0;;:::o;2629:201::-;2763:7;2795:11;:18;2807:5;2795:18;;;;;;;;;;;;;;;:27;2814:7;2795:27;;;;;;;;;;;;;;;;2788:34;;2629:201;;;;:::o;33276:102::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33327:43:::1;33345:24;33363:4;33345:9;:24::i;:::-;33327:17;:43::i;:::-;33276:102::o:0;21170:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;24169:119::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24275:5:::1;24245:13;:27;24259:12;24245:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24169:119:::0;:::o;16343:238::-;16155:12;:10;:12::i;:::-;16144:23;;:7;:5;:7::i;:::-;:23;;;16136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16466:1:::1;16446:22;;:8;:22;;::::0;16424:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16545:28;16564:8;16545:18;:28::i;:::-;16343:238:::0;:::o;20092:24::-;;;;:::o;1152:98::-;1205:7;1232:10;1225:17;;1152:98;:::o;5477:380::-;5630:1;5613:19;;:5;:19;;;5605:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5711:1;5692:21;;:7;:21;;;5684:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5795:6;5765:11;:18;5777:5;5765:18;;;;;;;;;;;;;;;:27;5784:7;5765:27;;;;;;;;;;;;;;;:36;;;;5833:7;5817:32;;5826:5;5817:32;;;5842:6;5817:32;;;;;;:::i;:::-;;;;;;;;5477:380;;;:::o;5865:502::-;6000:24;6027:25;6037:5;6044:7;6027:9;:25::i;:::-;6000:52;;6087:17;6067:16;:37;6063:297;;6167:6;6147:16;:26;;6121:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;6282:51;6291:5;6298:7;6326:6;6307:16;:25;6282:8;:51::i;:::-;6063:297;5989:378;5865:502;;;:::o;26499:3682::-;26647:1;26631:18;;:4;:18;;;26623:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26724:1;26710:16;;:2;:16;;;26702:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26786:13;:19;26800:4;26786:19;;;;;;;;;;;;;;;;;;;;;;;;;26785:20;26777:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;26848:13;:17;26862:2;26848:17;;;;;;;;;;;;;;;;;;;;;;;;;26847:18;26839:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;26917:1;26907:6;:11;26903:93;;26935:28;26951:4;26957:2;26961:1;26935:15;:28::i;:::-;26978:7;;26903:93;27034:7;:5;:7::i;:::-;27026:15;;:4;:15;;;;:45;;;;;27064:7;:5;:7::i;:::-;27058:13;;:2;:13;;;;27026:45;:78;;;;;27102:1;27088:16;;:2;:16;;;;27026:78;:116;;;;;27135:6;27121:21;;:2;:21;;;;27026:116;:143;;;;;27160:9;;;;;;;;;;;27159:10;27026:143;27008:1537;;;27201:11;;;;;;;;;;;27196:196;;27261:19;:25;27281:4;27261:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27290:19;:23;27310:2;27290:23;;;;;;;;;;;;;;;;;;;;;;;;;27261:52;27231:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;27196:196;27452:26;:32;27479:4;27452:32;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;27506:31;:35;27538:2;27506:35;;;;;;;;;;;;;;;;;;;;;;;;;27505:36;27452:89;27430:1104;;;27616:30;;27606:6;:40;;27576:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;27830:9;;27813:13;27823:2;27813:9;:13::i;:::-;27804:6;:22;;;;:::i;:::-;:35;;27774:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27430:1104;;;27995:26;:30;28022:2;27995:30;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;28047:31;:37;28079:4;28047:37;;;;;;;;;;;;;;;;;;;;;;;;;28046:38;27995:89;27973:561;;;28159:26;;28149:6;:36;;28119:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;27973:561;;;28322:31;:35;28354:2;28322:35;;;;;;;;;;;;;;;;;;;;;;;;;28317:217;;28434:9;;28417:13;28427:2;28417:9;:13::i;:::-;28408:6;:22;;;;:::i;:::-;:35;;28378:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28317:217;27973:561;27430:1104;27008:1537;28557:13;28601:6;;28573:24;28591:4;28573:9;:24::i;:::-;:34;;28557:50;;28638:8;:35;;;;;28664:9;;;;;;;;;;;28663:10;28638:35;:85;;;;;28691:26;:32;28718:4;28691:32;;;;;;;;;;;;;;;;;;;;;;;;;28690:33;28638:85;:128;;;;;28741:19;:25;28761:4;28741:25;;;;;;;;;;;;;;;;;;;;;;;;;28740:26;28638:128;:169;;;;;28784:19;:23;28804:2;28784:23;;;;;;;;;;;;;;;;;;;;;;;;;28783:24;28638:169;28620:303;;;28846:4;28834:9;;:16;;;;;;;;;;;;;;;;;;28867:10;:8;:10::i;:::-;28906:5;28894:9;;:17;;;;;;;;;;;;;;;;;;28620:303;28935:12;28951:9;;;;;;;;;;;28950:10;28935:25;;29081:12;;;;;;;;;;;:54;;;;29110:19;:25;29130:4;29110:25;;;;;;;;;;;;;;;;;;;;;;;;;29081:54;:94;;;;29152:19;:23;29172:2;29152:23;;;;;;;;;;;;;;;;;;;;;;;;;29081:94;:198;;;;29194:26;:32;29221:4;29194:32;;;;;;;;;;;;;;;;;;;;;;;;;29193:33;:85;;;;;29248:26;:30;29275:2;29248:30;;;;;;;;;;;;;;;;;;;;;;;;;29247:31;29193:85;29081:198;29063:243;;;29301:5;29291:15;;29063:243;29319:12;29350:7;29346:782;;;29374:18;29416:13;;;;;;;;;;;29410:19;;:2;:19;;;29407:284;;29457:10;;;;;;;;;;;29449:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;29524:7;;29511:20;;29407:284;;;29563:13;;;;;;;;;;;29555:21;;:4;:21;;;29552:139;;29604:9;;;;;;;;;;;29596:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;29669:6;;29656:19;;29552:139;29407:284;29712:31;29739:3;29712:22;29723:10;29712:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;29705:38;;29783:40;29813:9;;29784:23;29793:13;;29784:4;:8;;:23;;;;:::i;:::-;29783:29;;:40;;;;:::i;:::-;29760:19;;:63;;;;;;;:::i;:::-;;;;;;;;29859:38;29887:9;;29860:21;29869:11;;29860:4;:8;;:21;;;;:::i;:::-;29859:27;;:38;;;;:::i;:::-;29838:17;;:59;;;;;;;:::i;:::-;;;;;;;;29936:35;29961:9;;29936:20;29945:10;;29936:4;:8;;:20;;;;:::i;:::-;:24;;:35;;;;:::i;:::-;29914:17;;:58;;;;;;;:::i;:::-;;;;;;;;30006:1;29999:4;:8;29995:91;;;30028:42;30044:4;30058;30065;30028:15;:42::i;:::-;29995:91;30112:4;30102:14;;;;;:::i;:::-;;;29359:769;29346:782;30140:33;30156:4;30162:2;30166:6;30140:15;:33::i;:::-;26612:3569;;;26499:3682;;;;:::o;30189:519::-;30275:1;30260:11;:16;30257:444;;30288:21;30326:1;30312:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30288:40;;30357:4;30339;30344:1;30339:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30383:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30373:4;30378:1;30373:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30418:62;30435:4;30450:15;;;;;;;;;;;30468:11;30418:8;:62::i;:::-;30493:15;;;;;;;;;;;:66;;;30574:11;30600:1;30616:4;30643;30663:15;30493:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30277:424;30257:444;30189:519;:::o;31327:367::-;31410:62;31427:4;31442:15;;;;;;;;;;;31460:11;31410:8;:62::i;:::-;31485:15;;;;;;;;;;;:31;;;31524:9;31557:4;31577:11;31603:1;31619;31635:10;;;;;;;;;;;31660:15;31485:201;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31327:367;;:::o;30716:603::-;30792:1;30782:6;:11;30779:533;;30805:21;30843:1;30829:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30805:40;;30866:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30856:4;30861:1;30856:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30909:7;;;;;;;;;;;30899:4;30904:1;30899:7;;;;;;;;:::i;:::-;;;;;;;:17;;;;;;;;;;;30929:15;;;;;;;;;;;:66;;;31003:6;31025:1;31041:4;31068;31088:15;30929:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31127:14;31151:7;;;;;;;;;;;31144:25;;;31178:4;31144:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31127:57;;31195:12;31210:42;31195:57;;31270:7;;;;;;;;;;;31263:24;;;31288:4;31293:6;31263:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30794:518;;;30779:533;30716:603;:::o;16589:191::-;16663:16;16682:6;;;;;;;;;;;16663:25;;16708:8;16699:6;;:17;;;;;;;;;;;;;;;;;;16763:8;16732:40;;16753:8;16732:40;;;;;;;;;;;;16652:128;16589:191;:::o;5288:181::-;5396:4;5433:6;5418:5;:12;5424:5;5418:12;;;;;;;;;;;;;;;:21;;;;5457:4;5450:11;;5288:181;;;;:::o;4186:689::-;4333:1;4317:18;;:4;:18;;;4309:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4403:1;4389:16;;:2;:16;;;4381:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4458:38;4479:4;4485:2;4489:6;4458:20;:38::i;:::-;4509:19;4531:5;:11;4537:4;4531:11;;;;;;;;;;;;;;;;4509:33;;4590:6;4575:11;:21;;4553:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4726:6;4712:11;:20;4698:5;:11;4704:4;4698:11;;;;;;;;;;;;;;;:34;;;;4767:6;4754:5;:9;4760:2;4754:9;;;;;;;;;;;;;;;;:19;;;;;;;:::i;:::-;;;;;;;;4806:2;4791:26;;4800:4;4791:26;;;4810:6;4791:26;;;;;;:::i;:::-;;;;;;;;4830:37;4850:4;4856:2;4860:6;4830:19;:37::i;:::-;4298:577;4186:689;;;:::o;18532:98::-;18590:7;18621:1;18617;:5;;;;:::i;:::-;18610:12;;18532:98;;;;:::o;18638:::-;18696:7;18727:1;18723;:5;;;;:::i;:::-;18716:12;;18638:98;;;;:::o;6375:125::-;;;;:::o;6508:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:90;803:7;846:5;839:13;832:21;821:32;;769:90;;;:::o;865:116::-;935:21;950:5;935:21;:::i;:::-;928:5;925:32;915:60;;971:1;968;961:12;915:60;865:116;:::o;987:133::-;1030:5;1068:6;1055:20;1046:29;;1084:30;1108:5;1084:30;:::i;:::-;987:133;;;;:::o;1126:462::-;1188:6;1196;1245:2;1233:9;1224:7;1220:23;1216:32;1213:119;;;1251:79;;:::i;:::-;1213:119;1371:1;1396:50;1438:7;1429:6;1418:9;1414:22;1396:50;:::i;:::-;1386:60;;1342:114;1495:2;1521:50;1563:7;1554:6;1543:9;1539:22;1521:50;:::i;:::-;1511:60;;1466:115;1126:462;;;;;:::o;1594:99::-;1646:6;1680:5;1674:12;1664:22;;1594:99;;;:::o;1699:169::-;1783:11;1817:6;1812:3;1805:19;1857:4;1852:3;1848:14;1833:29;;1699:169;;;;:::o;1874:246::-;1955:1;1965:113;1979:6;1976:1;1973:13;1965:113;;;2064:1;2059:3;2055:11;2049:18;2045:1;2040:3;2036:11;2029:39;2001:2;1998:1;1994:10;1989:15;;1965:113;;;2112:1;2103:6;2098:3;2094:16;2087:27;1936:184;1874:246;;;:::o;2126:102::-;2167:6;2218:2;2214:7;2209:2;2202:5;2198:14;2194:28;2184:38;;2126:102;;;:::o;2234:377::-;2322:3;2350:39;2383:5;2350:39;:::i;:::-;2405:71;2469:6;2464:3;2405:71;:::i;:::-;2398:78;;2485:65;2543:6;2538:3;2531:4;2524:5;2520:16;2485:65;:::i;:::-;2575:29;2597:6;2575:29;:::i;:::-;2570:3;2566:39;2559:46;;2326:285;2234:377;;;;:::o;2617:313::-;2730:4;2768:2;2757:9;2753:18;2745:26;;2817:9;2811:4;2807:20;2803:1;2792:9;2788:17;2781:47;2845:78;2918:4;2909:6;2845:78;:::i;:::-;2837:86;;2617:313;;;;:::o;2936:126::-;2973:7;3013:42;3006:5;3002:54;2991:65;;2936:126;;;:::o;3068:96::-;3105:7;3134:24;3152:5;3134:24;:::i;:::-;3123:35;;3068:96;;;:::o;3170:122::-;3243:24;3261:5;3243:24;:::i;:::-;3236:5;3233:35;3223:63;;3282:1;3279;3272:12;3223:63;3170:122;:::o;3298:139::-;3344:5;3382:6;3369:20;3360:29;;3398:33;3425:5;3398:33;:::i;:::-;3298:139;;;;:::o;3443:122::-;3516:24;3534:5;3516:24;:::i;:::-;3509:5;3506:35;3496:63;;3555:1;3552;3545:12;3496:63;3443:122;:::o;3571:139::-;3617:5;3655:6;3642:20;3633:29;;3671:33;3698:5;3671:33;:::i;:::-;3571:139;;;;:::o;3716:474::-;3784:6;3792;3841:2;3829:9;3820:7;3816:23;3812:32;3809:119;;;3847:79;;:::i;:::-;3809:119;3967:1;3992:53;4037:7;4028:6;4017:9;4013:22;3992:53;:::i;:::-;3982:63;;3938:117;4094:2;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4065:118;3716:474;;;;;:::o;4196:109::-;4277:21;4292:5;4277:21;:::i;:::-;4272:3;4265:34;4196:109;;:::o;4311:210::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:65;4511:1;4500:9;4496:17;4487:6;4449:65;:::i;:::-;4311:210;;;;:::o;4527:329::-;4586:6;4635:2;4623:9;4614:7;4610:23;4606:32;4603:119;;;4641:79;;:::i;:::-;4603:119;4761:1;4786:53;4831:7;4822:6;4811:9;4807:22;4786:53;:::i;:::-;4776:63;;4732:117;4527:329;;;;:::o;4862:619::-;4939:6;4947;4955;5004:2;4992:9;4983:7;4979:23;4975:32;4972:119;;;5010:79;;:::i;:::-;4972:119;5130:1;5155:53;5200:7;5191:6;5180:9;5176:22;5155:53;:::i;:::-;5145:63;;5101:117;5257:2;5283:53;5328:7;5319:6;5308:9;5304:22;5283:53;:::i;:::-;5273:63;;5228:118;5385:2;5411:53;5456:7;5447:6;5436:9;5432:22;5411:53;:::i;:::-;5401:63;;5356:118;4862:619;;;;;:::o;5487:::-;5564:6;5572;5580;5629:2;5617:9;5608:7;5604:23;5600:32;5597:119;;;5635:79;;:::i;:::-;5597:119;5755:1;5780:53;5825:7;5816:6;5805:9;5801:22;5780:53;:::i;:::-;5770:63;;5726:117;5882:2;5908:53;5953:7;5944:6;5933:9;5929:22;5908:53;:::i;:::-;5898:63;;5853:118;6010:2;6036:53;6081:7;6072:6;6061:9;6057:22;6036:53;:::i;:::-;6026:63;;5981:118;5487:619;;;;;:::o;6112:329::-;6171:6;6220:2;6208:9;6199:7;6195:23;6191:32;6188:119;;;6226:79;;:::i;:::-;6188:119;6346:1;6371:53;6416:7;6407:6;6396:9;6392:22;6371:53;:::i;:::-;6361:63;;6317:117;6112:329;;;;:::o;6447:86::-;6482:7;6522:4;6515:5;6511:16;6500:27;;6447:86;;;:::o;6539:112::-;6622:22;6638:5;6622:22;:::i;:::-;6617:3;6610:35;6539:112;;:::o;6657:214::-;6746:4;6784:2;6773:9;6769:18;6761:26;;6797:67;6861:1;6850:9;6846:17;6837:6;6797:67;:::i;:::-;6657:214;;;;:::o;6877:118::-;6964:24;6982:5;6964:24;:::i;:::-;6959:3;6952:37;6877:118;;:::o;7001:222::-;7094:4;7132:2;7121:9;7117:18;7109:26;;7145:71;7213:1;7202:9;7198:17;7189:6;7145:71;:::i;:::-;7001:222;;;;:::o;7229:474::-;7297:6;7305;7354:2;7342:9;7333:7;7329:23;7325:32;7322:119;;;7360:79;;:::i;:::-;7322:119;7480:1;7505:53;7550:7;7541:6;7530:9;7526:22;7505:53;:::i;:::-;7495:63;;7451:117;7607:2;7633:53;7678:7;7669:6;7658:9;7654:22;7633:53;:::i;:::-;7623:63;;7578:118;7229:474;;;;;:::o;7709:::-;7777:6;7785;7834:2;7822:9;7813:7;7809:23;7805:32;7802:119;;;7840:79;;:::i;:::-;7802:119;7960:1;7985:53;8030:7;8021:6;8010:9;8006:22;7985:53;:::i;:::-;7975:63;;7931:117;8087:2;8113:53;8158:7;8149:6;8138:9;8134:22;8113:53;:::i;:::-;8103:63;;8058:118;7709:474;;;;;:::o;8189:323::-;8245:6;8294:2;8282:9;8273:7;8269:23;8265:32;8262:119;;;8300:79;;:::i;:::-;8262:119;8420:1;8445:50;8487:7;8478:6;8467:9;8463:22;8445:50;:::i;:::-;8435:60;;8391:114;8189:323;;;;:::o;8518:468::-;8583:6;8591;8640:2;8628:9;8619:7;8615:23;8611:32;8608:119;;;8646:79;;:::i;:::-;8608:119;8766:1;8791:53;8836:7;8827:6;8816:9;8812:22;8791:53;:::i;:::-;8781:63;;8737:117;8893:2;8919:50;8961:7;8952:6;8941:9;8937:22;8919:50;:::i;:::-;8909:60;;8864:115;8518:468;;;;;:::o;8992:182::-;9132:34;9128:1;9120:6;9116:14;9109:58;8992:182;:::o;9180:366::-;9322:3;9343:67;9407:2;9402:3;9343:67;:::i;:::-;9336:74;;9419:93;9508:3;9419:93;:::i;:::-;9537:2;9532:3;9528:12;9521:19;;9180:366;;;:::o;9552:419::-;9718:4;9756:2;9745:9;9741:18;9733:26;;9805:9;9799:4;9795:20;9791:1;9780:9;9776:17;9769:47;9833:131;9959:4;9833:131;:::i;:::-;9825:139;;9552:419;;;:::o;9977:180::-;10025:77;10022:1;10015:88;10122:4;10119:1;10112:15;10146:4;10143:1;10136:15;10163:320;10207:6;10244:1;10238:4;10234:12;10224:22;;10291:1;10285:4;10281:12;10312:18;10302:81;;10368:4;10360:6;10356:17;10346:27;;10302:81;10430:2;10422:6;10419:14;10399:18;10396:38;10393:84;;10449:18;;:::i;:::-;10393:84;10214:269;10163:320;;;:::o;10489:180::-;10537:77;10534:1;10527:88;10634:4;10631:1;10624:15;10658:4;10655:1;10648:15;10675:191;10715:3;10734:20;10752:1;10734:20;:::i;:::-;10729:25;;10768:20;10786:1;10768:20;:::i;:::-;10763:25;;10811:1;10808;10804:9;10797:16;;10832:3;10829:1;10826:10;10823:36;;;10839:18;;:::i;:::-;10823:36;10675:191;;;;:::o;10872:410::-;10912:7;10935:20;10953:1;10935:20;:::i;:::-;10930:25;;10969:20;10987:1;10969:20;:::i;:::-;10964:25;;11024:1;11021;11017:9;11046:30;11064:11;11046:30;:::i;:::-;11035:41;;11225:1;11216:7;11212:15;11209:1;11206:22;11186:1;11179:9;11159:83;11136:139;;11255:18;;:::i;:::-;11136:139;10920:362;10872:410;;;;:::o;11288:180::-;11336:77;11333:1;11326:88;11433:4;11430:1;11423:15;11457:4;11454:1;11447:15;11474:185;11514:1;11531:20;11549:1;11531:20;:::i;:::-;11526:25;;11565:20;11583:1;11565:20;:::i;:::-;11560:25;;11604:1;11594:35;;11609:18;;:::i;:::-;11594:35;11651:1;11648;11644:9;11639:14;;11474:185;;;;:::o;11665:102::-;11707:8;11754:5;11751:1;11747:13;11726:34;;11665:102;;;:::o;11773:848::-;11834:5;11841:4;11865:6;11856:15;;11889:5;11880:14;;11903:712;11924:1;11914:8;11911:15;11903:712;;;12019:4;12014:3;12010:14;12004:4;12001:24;11998:50;;;12028:18;;:::i;:::-;11998:50;12078:1;12068:8;12064:16;12061:451;;;12493:4;12486:5;12482:16;12473:25;;12061:451;12543:4;12537;12533:15;12525:23;;12573:32;12596:8;12573:32;:::i;:::-;12561:44;;11903:712;;;11773:848;;;;;;;:::o;12627:1073::-;12681:5;12872:8;12862:40;;12893:1;12884:10;;12895:5;;12862:40;12921:4;12911:36;;12938:1;12929:10;;12940:5;;12911:36;13007:4;13055:1;13050:27;;;;13091:1;13086:191;;;;13000:277;;13050:27;13068:1;13059:10;;13070:5;;;13086:191;13131:3;13121:8;13118:17;13115:43;;;13138:18;;:::i;:::-;13115:43;13187:8;13184:1;13180:16;13171:25;;13222:3;13215:5;13212:14;13209:40;;;13229:18;;:::i;:::-;13209:40;13262:5;;;13000:277;;13386:2;13376:8;13373:16;13367:3;13361:4;13358:13;13354:36;13336:2;13326:8;13323:16;13318:2;13312:4;13309:12;13305:35;13289:111;13286:246;;;13442:8;13436:4;13432:19;13423:28;;13477:3;13470:5;13467:14;13464:40;;;13484:18;;:::i;:::-;13464:40;13517:5;;13286:246;13557:42;13595:3;13585:8;13579:4;13576:1;13557:42;:::i;:::-;13542:57;;;;13631:4;13626:3;13622:14;13615:5;13612:25;13609:51;;;13640:18;;:::i;:::-;13609:51;13689:4;13682:5;13678:16;13669:25;;12627:1073;;;;;;:::o;13706:281::-;13764:5;13788:23;13806:4;13788:23;:::i;:::-;13780:31;;13832:25;13848:8;13832:25;:::i;:::-;13820:37;;13876:104;13913:66;13903:8;13897:4;13876:104;:::i;:::-;13867:113;;13706:281;;;;:::o;13993:143::-;14050:5;14081:6;14075:13;14066:22;;14097:33;14124:5;14097:33;:::i;:::-;13993:143;;;;:::o;14142:351::-;14212:6;14261:2;14249:9;14240:7;14236:23;14232:32;14229:119;;;14267:79;;:::i;:::-;14229:119;14387:1;14412:64;14468:7;14459:6;14448:9;14444:22;14412:64;:::i;:::-;14402:74;;14358:128;14142:351;;;;:::o;14499:332::-;14620:4;14658:2;14647:9;14643:18;14635:26;;14671:71;14739:1;14728:9;14724:17;14715:6;14671:71;:::i;:::-;14752:72;14820:2;14809:9;14805:18;14796:6;14752:72;:::i;:::-;14499:332;;;;;:::o;14837:85::-;14882:7;14911:5;14900:16;;14837:85;;;:::o;14928:60::-;14956:3;14977:5;14970:12;;14928:60;;;:::o;14994:158::-;15052:9;15085:61;15103:42;15112:32;15138:5;15112:32;:::i;:::-;15103:42;:::i;:::-;15085:61;:::i;:::-;15072:74;;14994:158;;;:::o;15158:147::-;15253:45;15292:5;15253:45;:::i;:::-;15248:3;15241:58;15158:147;;:::o;15311:807::-;15560:4;15598:3;15587:9;15583:19;15575:27;;15612:71;15680:1;15669:9;15665:17;15656:6;15612:71;:::i;:::-;15693:72;15761:2;15750:9;15746:18;15737:6;15693:72;:::i;:::-;15775:80;15851:2;15840:9;15836:18;15827:6;15775:80;:::i;:::-;15865;15941:2;15930:9;15926:18;15917:6;15865:80;:::i;:::-;15955:73;16023:3;16012:9;16008:19;15999:6;15955:73;:::i;:::-;16038;16106:3;16095:9;16091:19;16082:6;16038:73;:::i;:::-;15311:807;;;;;;;;;:::o;16124:143::-;16181:5;16212:6;16206:13;16197:22;;16228:33;16255:5;16228:33;:::i;:::-;16124:143;;;;:::o;16273:663::-;16361:6;16369;16377;16426:2;16414:9;16405:7;16401:23;16397:32;16394:119;;;16432:79;;:::i;:::-;16394:119;16552:1;16577:64;16633:7;16624:6;16613:9;16609:22;16577:64;:::i;:::-;16567:74;;16523:128;16690:2;16716:64;16772:7;16763:6;16752:9;16748:22;16716:64;:::i;:::-;16706:74;;16661:129;16829:2;16855:64;16911:7;16902:6;16891:9;16887:22;16855:64;:::i;:::-;16845:74;;16800:129;16273:663;;;;;:::o;16942:162::-;17082:14;17078:1;17070:6;17066:14;17059:38;16942:162;:::o;17110:366::-;17252:3;17273:67;17337:2;17332:3;17273:67;:::i;:::-;17266:74;;17349:93;17438:3;17349:93;:::i;:::-;17467:2;17462:3;17458:12;17451:19;;17110:366;;;:::o;17482:419::-;17648:4;17686:2;17675:9;17671:18;17663:26;;17735:9;17729:4;17725:20;17721:1;17710:9;17706:17;17699:47;17763:131;17889:4;17763:131;:::i;:::-;17755:139;;17482:419;;;:::o;17907:224::-;18047:34;18043:1;18035:6;18031:14;18024:58;18116:7;18111:2;18103:6;18099:15;18092:32;17907:224;:::o;18137:366::-;18279:3;18300:67;18364:2;18359:3;18300:67;:::i;:::-;18293:74;;18376:93;18465:3;18376:93;:::i;:::-;18494:2;18489:3;18485:12;18478:19;;18137:366;;;:::o;18509:419::-;18675:4;18713:2;18702:9;18698:18;18690:26;;18762:9;18756:4;18752:20;18748:1;18737:9;18733:17;18726:47;18790:131;18916:4;18790:131;:::i;:::-;18782:139;;18509:419;;;:::o;18934:225::-;19074:34;19070:1;19062:6;19058:14;19051:58;19143:8;19138:2;19130:6;19126:15;19119:33;18934:225;:::o;19165:366::-;19307:3;19328:67;19392:2;19387:3;19328:67;:::i;:::-;19321:74;;19404:93;19493:3;19404:93;:::i;:::-;19522:2;19517:3;19513:12;19506:19;;19165:366;;;:::o;19537:419::-;19703:4;19741:2;19730:9;19726:18;19718:26;;19790:9;19784:4;19780:20;19776:1;19765:9;19761:17;19754:47;19818:131;19944:4;19818:131;:::i;:::-;19810:139;;19537:419;;;:::o;19962:223::-;20102:34;20098:1;20090:6;20086:14;20079:58;20171:6;20166:2;20158:6;20154:15;20147:31;19962:223;:::o;20191:366::-;20333:3;20354:67;20418:2;20413:3;20354:67;:::i;:::-;20347:74;;20430:93;20519:3;20430:93;:::i;:::-;20548:2;20543:3;20539:12;20532:19;;20191:366;;;:::o;20563:419::-;20729:4;20767:2;20756:9;20752:18;20744:26;;20816:9;20810:4;20806:20;20802:1;20791:9;20787:17;20780:47;20844:131;20970:4;20844:131;:::i;:::-;20836:139;;20563:419;;;:::o;20988:221::-;21128:34;21124:1;21116:6;21112:14;21105:58;21197:4;21192:2;21184:6;21180:15;21173:29;20988:221;:::o;21215:366::-;21357:3;21378:67;21442:2;21437:3;21378:67;:::i;:::-;21371:74;;21454:93;21543:3;21454:93;:::i;:::-;21572:2;21567:3;21563:12;21556:19;;21215:366;;;:::o;21587:419::-;21753:4;21791:2;21780:9;21776:18;21768:26;;21840:9;21834:4;21830:20;21826:1;21815:9;21811:17;21804:47;21868:131;21994:4;21868:131;:::i;:::-;21860:139;;21587:419;;;:::o;22012:179::-;22152:31;22148:1;22140:6;22136:14;22129:55;22012:179;:::o;22197:366::-;22339:3;22360:67;22424:2;22419:3;22360:67;:::i;:::-;22353:74;;22436:93;22525:3;22436:93;:::i;:::-;22554:2;22549:3;22545:12;22538:19;;22197:366;;;:::o;22569:419::-;22735:4;22773:2;22762:9;22758:18;22750:26;;22822:9;22816:4;22812:20;22808:1;22797:9;22793:17;22786:47;22850:131;22976:4;22850:131;:::i;:::-;22842:139;;22569:419;;;:::o;22994:224::-;23134:34;23130:1;23122:6;23118:14;23111:58;23203:7;23198:2;23190:6;23186:15;23179:32;22994:224;:::o;23224:366::-;23366:3;23387:67;23451:2;23446:3;23387:67;:::i;:::-;23380:74;;23463:93;23552:3;23463:93;:::i;:::-;23581:2;23576:3;23572:12;23565:19;;23224:366;;;:::o;23596:419::-;23762:4;23800:2;23789:9;23785:18;23777:26;;23849:9;23843:4;23839:20;23835:1;23824:9;23820:17;23813:47;23877:131;24003:4;23877:131;:::i;:::-;23869:139;;23596:419;;;:::o;24021:222::-;24161:34;24157:1;24149:6;24145:14;24138:58;24230:5;24225:2;24217:6;24213:15;24206:30;24021:222;:::o;24249:366::-;24391:3;24412:67;24476:2;24471:3;24412:67;:::i;:::-;24405:74;;24488:93;24577:3;24488:93;:::i;:::-;24606:2;24601:3;24597:12;24590:19;;24249:366;;;:::o;24621:419::-;24787:4;24825:2;24814:9;24810:18;24802:26;;24874:9;24868:4;24864:20;24860:1;24849:9;24845:17;24838:47;24902:131;25028:4;24902:131;:::i;:::-;24894:139;;24621:419;;;:::o;25046:168::-;25186:20;25182:1;25174:6;25170:14;25163:44;25046:168;:::o;25220:366::-;25362:3;25383:67;25447:2;25442:3;25383:67;:::i;:::-;25376:74;;25459:93;25548:3;25459:93;:::i;:::-;25577:2;25572:3;25568:12;25561:19;;25220:366;;;:::o;25592:419::-;25758:4;25796:2;25785:9;25781:18;25773:26;;25845:9;25839:4;25835:20;25831:1;25820:9;25816:17;25809:47;25873:131;25999:4;25873:131;:::i;:::-;25865:139;;25592:419;;;:::o;26017:170::-;26157:22;26153:1;26145:6;26141:14;26134:46;26017:170;:::o;26193:366::-;26335:3;26356:67;26420:2;26415:3;26356:67;:::i;:::-;26349:74;;26432:93;26521:3;26432:93;:::i;:::-;26550:2;26545:3;26541:12;26534:19;;26193:366;;;:::o;26565:419::-;26731:4;26769:2;26758:9;26754:18;26746:26;;26818:9;26812:4;26808:20;26804:1;26793:9;26789:17;26782:47;26846:131;26972:4;26846:131;:::i;:::-;26838:139;;26565:419;;;:::o;26990:221::-;27130:34;27126:1;27118:6;27114:14;27107:58;27199:4;27194:2;27186:6;27182:15;27175:29;26990:221;:::o;27217:366::-;27359:3;27380:67;27444:2;27439:3;27380:67;:::i;:::-;27373:74;;27456:93;27545:3;27456:93;:::i;:::-;27574:2;27569:3;27565:12;27558:19;;27217:366;;;:::o;27589:419::-;27755:4;27793:2;27782:9;27778:18;27770:26;;27842:9;27836:4;27832:20;27828:1;27817:9;27813:17;27806:47;27870:131;27996:4;27870:131;:::i;:::-;27862:139;;27589:419;;;:::o;28014:289::-;28154:34;28150:1;28142:6;28138:14;28131:58;28223:34;28218:2;28210:6;28206:15;28199:59;28292:3;28287:2;28279:6;28275:15;28268:28;28014:289;:::o;28309:366::-;28451:3;28472:67;28536:2;28531:3;28472:67;:::i;:::-;28465:74;;28548:93;28637:3;28548:93;:::i;:::-;28666:2;28661:3;28657:12;28650:19;;28309:366;;;:::o;28681:419::-;28847:4;28885:2;28874:9;28870:18;28862:26;;28934:9;28928:4;28924:20;28920:1;28909:9;28905:17;28898:47;28962:131;29088:4;28962:131;:::i;:::-;28954:139;;28681:419;;;:::o;29106:181::-;29246:33;29242:1;29234:6;29230:14;29223:57;29106:181;:::o;29293:366::-;29435:3;29456:67;29520:2;29515:3;29456:67;:::i;:::-;29449:74;;29532:93;29621:3;29532:93;:::i;:::-;29650:2;29645:3;29641:12;29634:19;;29293:366;;;:::o;29665:419::-;29831:4;29869:2;29858:9;29854:18;29846:26;;29918:9;29912:4;29908:20;29904:1;29893:9;29889:17;29882:47;29946:131;30072:4;29946:131;:::i;:::-;29938:139;;29665:419;;;:::o;30090:290::-;30230:34;30226:1;30218:6;30214:14;30207:58;30299:34;30294:2;30286:6;30282:15;30275:59;30368:4;30363:2;30355:6;30351:15;30344:29;30090:290;:::o;30386:366::-;30528:3;30549:67;30613:2;30608:3;30549:67;:::i;:::-;30542:74;;30625:93;30714:3;30625:93;:::i;:::-;30743:2;30738:3;30734:12;30727:19;;30386:366;;;:::o;30758:419::-;30924:4;30962:2;30951:9;30947:18;30939:26;;31011:9;31005:4;31001:20;30997:1;30986:9;30982:17;30975:47;31039:131;31165:4;31039:131;:::i;:::-;31031:139;;30758:419;;;:::o;31183:171::-;31323:23;31319:1;31311:6;31307:14;31300:47;31183:171;:::o;31360:366::-;31502:3;31523:67;31587:2;31582:3;31523:67;:::i;:::-;31516:74;;31599:93;31688:3;31599:93;:::i;:::-;31717:2;31712:3;31708:12;31701:19;;31360:366;;;:::o;31732:419::-;31898:4;31936:2;31925:9;31921:18;31913:26;;31985:9;31979:4;31975:20;31971:1;31960:9;31956:17;31949:47;32013:131;32139:4;32013:131;:::i;:::-;32005:139;;31732:419;;;:::o;32157:170::-;32297:22;32293:1;32285:6;32281:14;32274:46;32157:170;:::o;32333:366::-;32475:3;32496:67;32560:2;32555:3;32496:67;:::i;:::-;32489:74;;32572:93;32661:3;32572:93;:::i;:::-;32690:2;32685:3;32681:12;32674:19;;32333:366;;;:::o;32705:419::-;32871:4;32909:2;32898:9;32894:18;32886:26;;32958:9;32952:4;32948:20;32944:1;32933:9;32929:17;32922:47;32986:131;33112:4;32986:131;:::i;:::-;32978:139;;32705:419;;;:::o;33130:194::-;33170:4;33190:20;33208:1;33190:20;:::i;:::-;33185:25;;33224:20;33242:1;33224:20;:::i;:::-;33219:25;;33268:1;33265;33261:9;33253:17;;33292:1;33286:4;33283:11;33280:37;;;33297:18;;:::i;:::-;33280:37;33130:194;;;;:::o;33330:180::-;33378:77;33375:1;33368:88;33475:4;33472:1;33465:15;33499:4;33496:1;33489:15;33516:180;33564:77;33561:1;33554:88;33661:4;33658:1;33651:15;33685:4;33682:1;33675:15;33702:114;33769:6;33803:5;33797:12;33787:22;;33702:114;;;:::o;33822:184::-;33921:11;33955:6;33950:3;33943:19;33995:4;33990:3;33986:14;33971:29;;33822:184;;;;:::o;34012:132::-;34079:4;34102:3;34094:11;;34132:4;34127:3;34123:14;34115:22;;34012:132;;;:::o;34150:108::-;34227:24;34245:5;34227:24;:::i;:::-;34222:3;34215:37;34150:108;;:::o;34264:179::-;34333:10;34354:46;34396:3;34388:6;34354:46;:::i;:::-;34432:4;34427:3;34423:14;34409:28;;34264:179;;;;:::o;34449:113::-;34519:4;34551;34546:3;34542:14;34534:22;;34449:113;;;:::o;34598:732::-;34717:3;34746:54;34794:5;34746:54;:::i;:::-;34816:86;34895:6;34890:3;34816:86;:::i;:::-;34809:93;;34926:56;34976:5;34926:56;:::i;:::-;35005:7;35036:1;35021:284;35046:6;35043:1;35040:13;35021:284;;;35122:6;35116:13;35149:63;35208:3;35193:13;35149:63;:::i;:::-;35142:70;;35235:60;35288:6;35235:60;:::i;:::-;35225:70;;35081:224;35068:1;35065;35061:9;35056:14;;35021:284;;;35025:14;35321:3;35314:10;;34722:608;;;34598:732;;;;:::o;35336:831::-;35599:4;35637:3;35626:9;35622:19;35614:27;;35651:71;35719:1;35708:9;35704:17;35695:6;35651:71;:::i;:::-;35732:80;35808:2;35797:9;35793:18;35784:6;35732:80;:::i;:::-;35859:9;35853:4;35849:20;35844:2;35833:9;35829:18;35822:48;35887:108;35990:4;35981:6;35887:108;:::i;:::-;35879:116;;36005:72;36073:2;36062:9;36058:18;36049:6;36005:72;:::i;:::-;36087:73;36155:3;36144:9;36140:19;36131:6;36087:73;:::i;:::-;35336:831;;;;;;;;:::o;36173:720::-;36408:4;36446:3;36435:9;36431:19;36423:27;;36460:79;36536:1;36525:9;36521:17;36512:6;36460:79;:::i;:::-;36586:9;36580:4;36576:20;36571:2;36560:9;36556:18;36549:48;36614:108;36717:4;36708:6;36614:108;:::i;:::-;36606:116;;36732:72;36800:2;36789:9;36785:18;36776:6;36732:72;:::i;:::-;36814;36882:2;36871:9;36867:18;36858:6;36814:72;:::i;:::-;36173:720;;;;;;;:::o;36899:351::-;36969:6;37018:2;37006:9;36997:7;36993:23;36989:32;36986:119;;;37024:79;;:::i;:::-;36986:119;37144:1;37169:64;37225:7;37216:6;37205:9;37201:22;37169:64;:::i;:::-;37159:74;;37115:128;36899:351;;;;:::o;37256:332::-;37377:4;37415:2;37404:9;37400:18;37392:26;;37428:71;37496:1;37485:9;37481:17;37472:6;37428:71;:::i;:::-;37509:72;37577:2;37566:9;37562:18;37553:6;37509:72;:::i;:::-;37256:332;;;;;:::o;37594:137::-;37648:5;37679:6;37673:13;37664:22;;37695:30;37719:5;37695:30;:::i;:::-;37594:137;;;;:::o;37737:345::-;37804:6;37853:2;37841:9;37832:7;37828:23;37824:32;37821:119;;;37859:79;;:::i;:::-;37821:119;37979:1;38004:61;38057:7;38048:6;38037:9;38033:22;38004:61;:::i;:::-;37994:71;;37950:125;37737:345;;;;:::o;38088:180::-;38228:32;38224:1;38216:6;38212:14;38205:56;38088:180;:::o;38274:366::-;38416:3;38437:67;38501:2;38496:3;38437:67;:::i;:::-;38430:74;;38513:93;38602:3;38513:93;:::i;:::-;38631:2;38626:3;38622:12;38615:19;;38274:366;;;:::o;38646:419::-;38812:4;38850:2;38839:9;38835:18;38827:26;;38899:9;38893:4;38889:20;38885:1;38874:9;38870:17;38863:47;38927:131;39053:4;38927:131;:::i;:::-;38919:139;;38646:419;;;:::o;39071:225::-;39211:34;39207:1;39199:6;39195:14;39188:58;39280:8;39275:2;39267:6;39263:15;39256:33;39071:225;:::o;39302:366::-;39444:3;39465:67;39529:2;39524:3;39465:67;:::i;:::-;39458:74;;39541:93;39630:3;39541:93;:::i;:::-;39659:2;39654:3;39650:12;39643:19;;39302:366;;;:::o;39674:419::-;39840:4;39878:2;39867:9;39863:18;39855:26;;39927:9;39921:4;39917:20;39913:1;39902:9;39898:17;39891:47;39955:131;40081:4;39955:131;:::i;:::-;39947:139;;39674:419;;;:::o

Swarm Source

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