ETH Price: $3,394.80 (+1.09%)
Gas: 7 Gwei

Token

Major League Gaming (MLG)
 

Overview

Max Total Supply

1,000,000,000 MLG

Holders

175

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000744489454021 MLG

Value
$0.00
0xa8c99850e331dbc14ce0efd2539aea96aab8b9b1
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:
MLG

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-09
*/

/**
https://x.com/MLG_ERC
https://t.me/MLG_ERC
https://mlgmemetoken.com
**/
// SPDX-License-Identifier: MIT

/*
*/
pragma solidity ^0.8.4;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;
    address public developmentWallet;
    address public liquidityWallet;

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

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevelopmentFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevelopmentFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDevelopment;

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

    mapping(address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

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

    constructor(address _helper) ERC20("Major League Gaming", "MLG") {
        require(_helper != address(0), "NA");

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 10;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevelopmentFee = 0;

        uint256 _sellMarketingFee = 50;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevelopmentFee = 0;

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = 20_000_000 * 1e18; // 2% from total supply maxTransactionAmountTxn
        maxWallet = 20_000_000 * 1e18; // 2% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevelopmentFee = _sellDevelopmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;

        marketingWallet = address(0x6f2775d51efbf3a0045EfA67a677C1E6A4208Fba);
        developmentWallet = address(0x41ce22158094131d5a11531E9D892fD7E7996658);
        liquidityWallet = address(0x6f2775d51efbf3a0045EfA67a677C1E6A4208Fba);

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

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

        _mint(msg.sender, totalSupply);

        transferOwnership(_helper);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

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

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

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

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

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

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

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developmentFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevelopmentFee = _developmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;
        require(buyTotalFees <= 99);
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developmentFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevelopmentFee = _developmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;
        require(sellTotalFees <= 99);
    }

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

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

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function updatedevelopmentWallet(address newWallet) external onlyOwner {
        emit developmentWalletUpdated(newWallet, developmentWallet);
        developmentWallet = newWallet;
    }

    function updateliquidityWallet(address newliquidityWallet) external onlyOwner {
        emit liquidityWalletUpdated(newliquidityWallet, liquidityWallet);
        liquidityWallet = newliquidityWallet;
    }

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

    event BoughtEarly(address indexed sniper);

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

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

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

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(amount <= maxTransactionAmount,"Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack(amount);

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

        function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

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

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

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

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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(min(amount,min(contractBalance,swapTokensAtAmount)));

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDevelopment = 0;

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_helper","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newliquidityWallet","type":"address"}],"name":"updateliquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b50604051620062e3380380620062e38339818101604052810190620000a3919062000e3d565b6040518060400160405280601381526020017f4d616a6f72204c65616775652047616d696e67000000000000000000000000008152506040518060400160405280600381526020017f4d4c47000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200012792919062000d76565b5080600490805190602001906200014092919062000d76565b50505062000163620001576200072060201b60201c565b6200072860201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001cd9062000fc6565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000202816001620007ee60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028057600080fd5b505afa15801562000295573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bb919062000e3d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031e57600080fd5b505afa15801562000333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000359919062000e3d565b6040518363ffffffff1660e01b81526004016200037892919062000f38565b602060405180830381600087803b1580156200039357600080fd5b505af1158015620003a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ce919062000e3d565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000443600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007ee60201b60201c565b62000478600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008d860201b60201c565b6000600a905060008060006032905060008060006b033b2e3c9fd0803ce800000090506a108b2a2c28029094000000600a819055506a108b2a2c28029094000000600c81905550612710600582620004d19190620010cd565b620004dd919062001095565b600b819055508660118190555085601281905550846013819055506013546012546011546200050d919062001038565b62000519919062001038565b60108190555083601581905550826016819055508160178190555060175460165460155462000549919062001038565b62000555919062001038565b601481905550736f2775d51efbf3a0045efa67a677c1e6a4208fba600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507341ce22158094131d5a11531e9d892fd7e7996658600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736f2775d51efbf3a0045efa67a677c1e6a4208fba600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200067c6200066e6200097960201b60201c565b6001620009a360201b60201c565b6200068f306001620009a360201b60201c565b620006a461dead6001620009a360201b60201c565b620006c6620006b86200097960201b60201c565b6001620007ee60201b60201c565b620006d9306001620007ee60201b60201c565b620006ee61dead6001620007ee60201b60201c565b62000700338262000add60201b60201c565b620007118962000c5660201b60201c565b5050505050505050506200131f565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007fe6200072060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008246200097960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200087d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008749062000fa4565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009b36200072060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009d96200097960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a299062000fa4565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000ad1919062000f65565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b479062000fe8565b60405180910390fd5b62000b646000838362000d6c60201b60201c565b806002600082825462000b78919062001038565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000bcf919062001038565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c3691906200100a565b60405180910390a362000c526000838362000d7160201b60201c565b5050565b62000c666200072060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000c8c6200097960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000ce5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cdc9062000fa4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d4f9062000f82565b60405180910390fd5b62000d69816200072860201b60201c565b50565b505050565b505050565b82805462000d849062001178565b90600052602060002090601f01602090048101928262000da8576000855562000df4565b82601f1062000dc357805160ff191683800117855562000df4565b8280016001018555821562000df4579182015b8281111562000df357825182559160200191906001019062000dd6565b5b50905062000e03919062000e07565b5090565b5b8082111562000e2257600081600090555060010162000e08565b5090565b60008151905062000e378162001305565b92915050565b60006020828403121562000e5057600080fd5b600062000e608482850162000e26565b91505092915050565b62000e74816200112e565b82525050565b62000e858162001142565b82525050565b600062000e9a60268362001027565b915062000ea7826200123b565b604082019050919050565b600062000ec160208362001027565b915062000ece826200128a565b602082019050919050565b600062000ee860028362001027565b915062000ef582620012b3565b602082019050919050565b600062000f0f601f8362001027565b915062000f1c82620012dc565b602082019050919050565b62000f32816200116e565b82525050565b600060408201905062000f4f600083018562000e69565b62000f5e602083018462000e69565b9392505050565b600060208201905062000f7c600083018462000e7a565b92915050565b6000602082019050818103600083015262000f9d8162000e8b565b9050919050565b6000602082019050818103600083015262000fbf8162000eb2565b9050919050565b6000602082019050818103600083015262000fe18162000ed9565b9050919050565b60006020820190508181036000830152620010038162000f00565b9050919050565b600060208201905062001021600083018462000f27565b92915050565b600082825260208201905092915050565b600062001045826200116e565b915062001052836200116e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200108a5762001089620011ae565b5b828201905092915050565b6000620010a2826200116e565b9150620010af836200116e565b925082620010c257620010c1620011dd565b5b828204905092915050565b6000620010da826200116e565b9150620010e7836200116e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011235762001122620011ae565b5b828202905092915050565b60006200113b826200114e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200119157607f821691505b60208210811415620011a857620011a76200120c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e41000000000000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62001310816200112e565b81146200131c57600080fd5b50565b60805160601c614f7b6200136860003960008181610e3b015281816128a501528181613a1d01528181613b3301528181613b5a01528181613bf60152613c1d0152614f7b6000f3fe60806040526004361061036f5760003560e01c8063924de9b7116101c6578063c79c04fd116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610cbf578063f2fde38b14610cea578063f637434214610d13578063f8b45b0514610d3e57610376565b8063e2f4560514610c3e578063e884f26014610c69578063ef8700e514610c9457610376565b8063d257b34f116100d1578063d257b34f14610b6e578063d469801614610bab578063d85ba06314610bd6578063dd62ed3e14610c0157610376565b8063c79c04fd14610aef578063c876d0b914610b18578063c8c8ebe414610b4357610376565b8063b204141111610164578063c02466681161013e578063c024666814610a49578063c04a541414610a72578063c17b5b8c14610a9d578063c18bc19514610ac657610376565b8063b2041411146109b6578063b62496f5146109e1578063bbc0c74214610a1e57610376565b80639a7a23d6116101a05780639a7a23d6146108ea578063a457c2d714610913578063a9059cbb14610950578063aacebbe31461098d57610376565b8063924de9b71461086d57806392aa37731461089657806395d89b41146108bf57610376565b80634a62bb65116102a05780637571336a1161023e5780638095d564116102185780638095d564146107d75780638a8c523c146108005780638da5cb5b14610817578063921369131461084257610376565b80637571336a1461075857806375f0a874146107815780637bce5a04146107ac57610376565b80636ddd17131161027a5780636ddd1713146106ae57806370a08231146106d9578063715018a614610716578063751039fc1461072d57610376565b80634a62bb651461061b5780634fbee193146106465780636a486a8e1461068357610376565b80631f3fed8f1161030d57806327c8f835116102e757806327c8f8351461055d578063313ce5671461058857806339509351146105b357806349bd5a5e146105f057610376565b80631f3fed8f146104cc578063203e727e146104f757806323b872dd1461052057610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b57806318a94cf1146104765780631a8145bb146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d69565b60405161039d91906143fe565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c89190613e7d565b610dfb565b6040516103da91906143c8565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190613d64565b610e19565b60405161041791906143c8565b60405180910390f35b34801561042c57600080fd5b50610435610e39565b60405161044291906143e3565b60405180910390f35b34801561045757600080fd5b50610460610e5d565b60405161046d9190614640565b60405180910390f35b34801561048257600080fd5b5061048b610e67565b6040516104989190614640565b60405180910390f35b3480156104ad57600080fd5b506104b6610e6d565b6040516104c39190614640565b60405180910390f35b3480156104d857600080fd5b506104e1610e73565b6040516104ee9190614640565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190613ee2565b610e79565b005b34801561052c57600080fd5b5061054760048036038101906105429190613df2565b610f88565b60405161055491906143c8565b60405180910390f35b34801561056957600080fd5b50610572611080565b60405161057f919061434c565b60405180910390f35b34801561059457600080fd5b5061059d611086565b6040516105aa91906146ec565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190613e7d565b61108f565b6040516105e791906143c8565b60405180910390f35b3480156105fc57600080fd5b5061060561113b565b604051610612919061434c565b60405180910390f35b34801561062757600080fd5b50610630611161565b60405161063d91906143c8565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613d64565b611174565b60405161067a91906143c8565b60405180910390f35b34801561068f57600080fd5b506106986111ca565b6040516106a59190614640565b60405180910390f35b3480156106ba57600080fd5b506106c36111d0565b6040516106d091906143c8565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613d64565b6111e3565b60405161070d9190614640565b60405180910390f35b34801561072257600080fd5b5061072b61122b565b005b34801561073957600080fd5b506107426112b3565b60405161074f91906143c8565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613e41565b611353565b005b34801561078d57600080fd5b5061079661142a565b6040516107a3919061434c565b60405180910390f35b3480156107b857600080fd5b506107c1611450565b6040516107ce9190614640565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613f0b565b611456565b005b34801561080c57600080fd5b5061081561151f565b005b34801561082357600080fd5b5061082c6115d3565b604051610839919061434c565b60405180910390f35b34801561084e57600080fd5b506108576115fd565b6040516108649190614640565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f9190613eb9565b611603565b005b3480156108a257600080fd5b506108bd60048036038101906108b89190613d64565b61169c565b005b3480156108cb57600080fd5b506108d46117d8565b6040516108e191906143fe565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c9190613e41565b61186a565b005b34801561091f57600080fd5b5061093a60048036038101906109359190613e7d565b611985565b60405161094791906143c8565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190613e7d565b611a70565b60405161098491906143c8565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af9190613d64565b611a8e565b005b3480156109c257600080fd5b506109cb611bca565b6040516109d89190614640565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190613d64565b611bd0565b604051610a1591906143c8565b60405180910390f35b348015610a2a57600080fd5b50610a33611bf0565b604051610a4091906143c8565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b9190613e41565b611c03565b005b348015610a7e57600080fd5b50610a87611d28565b604051610a94919061434c565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf9190613f0b565b611d4e565b005b348015610ad257600080fd5b50610aed6004803603810190610ae89190613ee2565b611e17565b005b348015610afb57600080fd5b50610b166004803603810190610b119190613d64565b611f26565b005b348015610b2457600080fd5b50610b2d612062565b604051610b3a91906143c8565b60405180910390f35b348015610b4f57600080fd5b50610b58612075565b604051610b659190614640565b60405180910390f35b348015610b7a57600080fd5b50610b956004803603810190610b909190613ee2565b61207b565b604051610ba291906143c8565b60405180910390f35b348015610bb757600080fd5b50610bc0612109565b604051610bcd919061434c565b60405180910390f35b348015610be257600080fd5b50610beb61212f565b604051610bf89190614640565b60405180910390f35b348015610c0d57600080fd5b50610c286004803603810190610c239190613db6565b612135565b604051610c359190614640565b60405180910390f35b348015610c4a57600080fd5b50610c536121bc565b604051610c609190614640565b60405180910390f35b348015610c7557600080fd5b50610c7e6121c2565b604051610c8b91906143c8565b60405180910390f35b348015610ca057600080fd5b50610ca9612262565b604051610cb69190614640565b60405180910390f35b348015610ccb57600080fd5b50610cd4612268565b604051610ce19190614640565b60405180910390f35b348015610cf657600080fd5b50610d116004803603810190610d0c9190613d64565b61226e565b005b348015610d1f57600080fd5b50610d28612366565b604051610d359190614640565b60405180910390f35b348015610d4a57600080fd5b50610d5361236c565b604051610d609190614640565b60405180910390f35b606060038054610d789061493a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da49061493a565b8015610df15780601f10610dc657610100808354040283529160200191610df1565b820191906000526020600020905b815481529060010190602001808311610dd457829003601f168201915b5050505050905090565b6000610e0f610e08612372565b848461237a565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60175481565b60195481565b60185481565b610e81612372565b73ffffffffffffffffffffffffffffffffffffffff16610e9f6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec90614580565b60405180910390fd5b670de0b6b3a76400006103e86001610f0b610e5d565b610f1591906147ee565b610f1f91906147bd565b610f2991906147bd565b811015610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6290614620565b60405180910390fd5b670de0b6b3a764000081610f7f91906147ee565b600a8190555050565b6000610f95848484612545565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fe0612372565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105790614560565b60405180910390fd5b6110748561106c612372565b85840361237a565b60019150509392505050565b61dead81565b60006012905090565b600061113161109c612372565b8484600160006110aa612372565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461112c9190614767565b61237a565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611233612372565b73ffffffffffffffffffffffffffffffffffffffff166112516115d3565b73ffffffffffffffffffffffffffffffffffffffff16146112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90614580565b60405180910390fd5b6112b160006131e2565b565b60006112bd612372565b73ffffffffffffffffffffffffffffffffffffffff166112db6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890614580565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b61135b612372565b73ffffffffffffffffffffffffffffffffffffffff166113796115d3565b73ffffffffffffffffffffffffffffffffffffffff16146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690614580565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61145e612372565b73ffffffffffffffffffffffffffffffffffffffff1661147c6115d3565b73ffffffffffffffffffffffffffffffffffffffff16146114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990614580565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546114fa9190614767565b6115049190614767565b6010819055506063601054111561151a57600080fd5b505050565b611527612372565b73ffffffffffffffffffffffffffffffffffffffff166115456115d3565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290614580565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b61160b612372565b73ffffffffffffffffffffffffffffffffffffffff166116296115d3565b73ffffffffffffffffffffffffffffffffffffffff161461167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690614580565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b6116a4612372565b73ffffffffffffffffffffffffffffffffffffffff166116c26115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90614580565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600480546117e79061493a565b80601f01602080910402602001604051908101604052809291908181526020018280546118139061493a565b80156118605780601f1061183557610100808354040283529160200191611860565b820191906000526020600020905b81548152906001019060200180831161184357829003601f168201915b5050505050905090565b611872612372565b73ffffffffffffffffffffffffffffffffffffffff166118906115d3565b73ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90614580565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e906144c0565b60405180910390fd5b61198182826132a8565b5050565b60008060016000611994612372565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890614600565b60405180910390fd5b611a65611a5c612372565b8585840361237a565b600191505092915050565b6000611a84611a7d612372565b8484612545565b6001905092915050565b611a96612372565b73ffffffffffffffffffffffffffffffffffffffff16611ab46115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190614580565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611c0b612372565b73ffffffffffffffffffffffffffffffffffffffff16611c296115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7690614580565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d1c91906143c8565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d56612372565b73ffffffffffffffffffffffffffffffffffffffff16611d746115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190614580565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611df29190614767565b611dfc9190614767565b60148190555060636014541115611e1257600080fd5b505050565b611e1f612372565b73ffffffffffffffffffffffffffffffffffffffff16611e3d6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614580565b60405180910390fd5b670de0b6b3a76400006103e86005611ea9610e5d565b611eb391906147ee565b611ebd91906147bd565b611ec791906147bd565b811015611f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f00906144a0565b60405180910390fd5b670de0b6b3a764000081611f1d91906147ee565b600c8190555050565b611f2e612372565b73ffffffffffffffffffffffffffffffffffffffff16611f4c6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990614580565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b600a5481565b6000612085612372565b73ffffffffffffffffffffffffffffffffffffffff166120a36115d3565b73ffffffffffffffffffffffffffffffffffffffff16146120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090614580565b60405180910390fd5b81600b8190555060019050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60006121cc612372565b73ffffffffffffffffffffffffffffffffffffffff166121ea6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614612240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223790614580565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b601a5481565b60125481565b612276612372565b73ffffffffffffffffffffffffffffffffffffffff166122946115d3565b73ffffffffffffffffffffffffffffffffffffffff16146122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190614580565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561235a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235190614460565b60405180910390fd5b612363816131e2565b50565b60165481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e1906145c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245190614480565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125389190614640565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac906145a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c90614420565b60405180910390fd5b600081141561263f5761263a83836000613349565b6131dd565b600d60009054906101000a900460ff1615612d045761265c6115d3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ca575061269a6115d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127035750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127565750600660149054906101000a900460ff16155b15612d0357600d60019054906101000a900460ff1661285057601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128105750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614440565b60405180910390fd5b5b600f60009054906101000a900460ff1615612a1a5761286d6115d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128f457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561294e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a195743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106129d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cb90614540565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612abd5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b6457600a54811115612b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afe90614520565b60405180910390fd5b600c54612b13836111e3565b82612b1e9190614767565b1115612b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b56906145e0565b60405180910390fd5b612d02565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c075750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c5657600a54811115612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890614500565b60405180910390fd5b612d01565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d0057600c54612cb3836111e3565b82612cbe9190614767565b1115612cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf6906145e0565b60405180910390fd5b5b5b5b5b5b6000612d0f306111e3565b90506000600b548210159050808015612d345750600d60029054906101000a900460ff165b8015612d4d5750600660149054906101000a900460ff16155b8015612da35750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df95750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e4f5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e94576001600660146101000a81548160ff021916908315150217905550612e78836135ca565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f4a5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5457600090505b600081156131cd57601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fb757506000601454115b1561308457612fe46064612fd6601454886138cd90919063ffffffff16565b6138e390919063ffffffff16565b905060145460165482612ff791906147ee565b61300191906147bd565b601960008282546130129190614767565b925050819055506014546017548261302a91906147ee565b61303491906147bd565b601a60008282546130459190614767565b925050819055506014546015548261305d91906147ee565b61306791906147bd565b601860008282546130789190614767565b925050819055506131a9565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130df57506000601054115b156131a85761310c60646130fe601054886138cd90919063ffffffff16565b6138e390919063ffffffff16565b90506010546012548261311f91906147ee565b61312991906147bd565b6019600082825461313a9190614767565b925050819055506010546013548261315291906147ee565b61315c91906147bd565b601a600082825461316d9190614767565b925050819055506010546011548261318591906147ee565b61318f91906147bd565b601860008282546131a09190614767565b925050819055505b5b60008111156131be576131bd873083613349565b5b80856131ca9190614848565b94505b6131d8878787613349565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b0906145a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342090614420565b60405180910390fd5b6134348383836138f9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156134ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b1906144e0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461354d9190614767565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135b19190614640565b60405180910390a36135c48484846138fe565b50505050565b60006135d5306111e3565b905060008290506000601a546018546019546135f19190614767565b6135fb9190614767565b905060008084148061360d5750600082145b1561361b57505050506138ca565b6014600b5461362a91906147ee565b841115613643576014600b5461364091906147ee565b93505b60006002836019548761365691906147ee565b61366091906147bd565b61366a91906147bd565b90506000613681828761390390919063ffffffff16565b905060004790506136a56136a08761369b8a600b54613919565b613919565b613932565b60006136ba824761390390919063ffffffff16565b905060006136e5876136d7601854856138cd90919063ffffffff16565b6138e390919063ffffffff16565b9050600061371088613702601a54866138cd90919063ffffffff16565b6138e390919063ffffffff16565b905060008183856137219190614848565b61372b9190614848565b9050600060198190555060006018819055506000601a81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161378b90614337565b60006040518083038185875af1925050503d80600081146137c8576040519150601f19603f3d011682016040523d82523d6000602084013e6137cd565b606091505b5050809850506000871180156137e35750600081115b15613830576137f28782613bf0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601954604051613827939291906146b5565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161387690614337565b60006040518083038185875af1925050503d80600081146138b3576040519150601f19603f3d011682016040523d82523d6000602084013e6138b8565b606091505b50508098505050505050505050505050505b50565b600081836138db91906147ee565b905092915050565b600081836138f191906147bd565b905092915050565b505050565b505050565b600081836139119190614848565b905092915050565b6000818311613928578261392a565b815b905092915050565b6000600267ffffffffffffffff811115613975577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156139a35781602001602082028036833780820191505090505b50905030816000815181106139e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a8157600080fd5b505afa158015613a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab99190613d8d565b81600181518110613af3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b58307f00000000000000000000000000000000000000000000000000000000000000008461237a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613bba95949392919061465b565b600060405180830381600087803b158015613bd457600080fd5b505af1158015613be8573d6000803e3d6000fd5b505050505050565b613c1b307f00000000000000000000000000000000000000000000000000000000000000008461237a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ca296959493929190614367565b6060604051808303818588803b158015613cbb57600080fd5b505af1158015613ccf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cf49190613f5a565b5050505050565b600081359050613d0a81614f00565b92915050565b600081519050613d1f81614f00565b92915050565b600081359050613d3481614f17565b92915050565b600081359050613d4981614f2e565b92915050565b600081519050613d5e81614f2e565b92915050565b600060208284031215613d7657600080fd5b6000613d8484828501613cfb565b91505092915050565b600060208284031215613d9f57600080fd5b6000613dad84828501613d10565b91505092915050565b60008060408385031215613dc957600080fd5b6000613dd785828601613cfb565b9250506020613de885828601613cfb565b9150509250929050565b600080600060608486031215613e0757600080fd5b6000613e1586828701613cfb565b9350506020613e2686828701613cfb565b9250506040613e3786828701613d3a565b9150509250925092565b60008060408385031215613e5457600080fd5b6000613e6285828601613cfb565b9250506020613e7385828601613d25565b9150509250929050565b60008060408385031215613e9057600080fd5b6000613e9e85828601613cfb565b9250506020613eaf85828601613d3a565b9150509250929050565b600060208284031215613ecb57600080fd5b6000613ed984828501613d25565b91505092915050565b600060208284031215613ef457600080fd5b6000613f0284828501613d3a565b91505092915050565b600080600060608486031215613f2057600080fd5b6000613f2e86828701613d3a565b9350506020613f3f86828701613d3a565b9250506040613f5086828701613d3a565b9150509250925092565b600080600060608486031215613f6f57600080fd5b6000613f7d86828701613d4f565b9350506020613f8e86828701613d4f565b9250506040613f9f86828701613d4f565b9150509250925092565b6000613fb58383613fc1565b60208301905092915050565b613fca8161487c565b82525050565b613fd98161487c565b82525050565b6000613fea82614717565b613ff4818561473a565b9350613fff83614707565b8060005b838110156140305781516140178882613fa9565b97506140228361472d565b925050600181019050614003565b5085935050505092915050565b6140468161488e565b82525050565b614055816148d1565b82525050565b614064816148f5565b82525050565b600061407582614722565b61407f8185614756565b935061408f818560208601614907565b614098816149f9565b840191505092915050565b60006140b0602383614756565b91506140bb82614a0a565b604082019050919050565b60006140d3601683614756565b91506140de82614a59565b602082019050919050565b60006140f6602683614756565b915061410182614a82565b604082019050919050565b6000614119602283614756565b915061412482614ad1565b604082019050919050565b600061413c602483614756565b915061414782614b20565b604082019050919050565b600061415f603983614756565b915061416a82614b6f565b604082019050919050565b6000614182602683614756565b915061418d82614bbe565b604082019050919050565b60006141a5603683614756565b91506141b082614c0d565b604082019050919050565b60006141c8603583614756565b91506141d382614c5c565b604082019050919050565b60006141eb604983614756565b91506141f682614cab565b606082019050919050565b600061420e602883614756565b915061421982614d20565b604082019050919050565b6000614231602083614756565b915061423c82614d6f565b602082019050919050565b6000614254602583614756565b915061425f82614d98565b604082019050919050565b600061427760008361474b565b915061428282614de7565b600082019050919050565b600061429a602483614756565b91506142a582614dea565b604082019050919050565b60006142bd601383614756565b91506142c882614e39565b602082019050919050565b60006142e0602583614756565b91506142eb82614e62565b604082019050919050565b6000614303602f83614756565b915061430e82614eb1565b604082019050919050565b614322816148ba565b82525050565b614331816148c4565b82525050565b60006143428261426a565b9150819050919050565b60006020820190506143616000830184613fd0565b92915050565b600060c08201905061437c6000830189613fd0565b6143896020830188614319565b614396604083018761405b565b6143a3606083018661405b565b6143b06080830185613fd0565b6143bd60a0830184614319565b979650505050505050565b60006020820190506143dd600083018461403d565b92915050565b60006020820190506143f8600083018461404c565b92915050565b60006020820190508181036000830152614418818461406a565b905092915050565b60006020820190508181036000830152614439816140a3565b9050919050565b60006020820190508181036000830152614459816140c6565b9050919050565b60006020820190508181036000830152614479816140e9565b9050919050565b600060208201905081810360008301526144998161410c565b9050919050565b600060208201905081810360008301526144b98161412f565b9050919050565b600060208201905081810360008301526144d981614152565b9050919050565b600060208201905081810360008301526144f981614175565b9050919050565b6000602082019050818103600083015261451981614198565b9050919050565b60006020820190508181036000830152614539816141bb565b9050919050565b60006020820190508181036000830152614559816141de565b9050919050565b6000602082019050818103600083015261457981614201565b9050919050565b6000602082019050818103600083015261459981614224565b9050919050565b600060208201905081810360008301526145b981614247565b9050919050565b600060208201905081810360008301526145d98161428d565b9050919050565b600060208201905081810360008301526145f9816142b0565b9050919050565b60006020820190508181036000830152614619816142d3565b9050919050565b60006020820190508181036000830152614639816142f6565b9050919050565b60006020820190506146556000830184614319565b92915050565b600060a0820190506146706000830188614319565b61467d602083018761405b565b818103604083015261468f8186613fdf565b905061469e6060830185613fd0565b6146ab6080830184614319565b9695505050505050565b60006060820190506146ca6000830186614319565b6146d76020830185614319565b6146e46040830184614319565b949350505050565b60006020820190506147016000830184614328565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614772826148ba565b915061477d836148ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b2576147b161496c565b5b828201905092915050565b60006147c8826148ba565b91506147d3836148ba565b9250826147e3576147e261499b565b5b828204905092915050565b60006147f9826148ba565b9150614804836148ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483d5761483c61496c565b5b828202905092915050565b6000614853826148ba565b915061485e836148ba565b9250828210156148715761487061496c565b5b828203905092915050565b60006148878261489a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006148dc826148e3565b9050919050565b60006148ee8261489a565b9050919050565b6000614900826148ba565b9050919050565b60005b8381101561492557808201518184015260208101905061490a565b83811115614934576000848401525b50505050565b6000600282049050600182168061495257607f821691505b60208210811415614966576149656149ca565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b614f098161487c565b8114614f1457600080fd5b50565b614f208161488e565b8114614f2b57600080fd5b50565b614f37816148ba565b8114614f4257600080fd5b5056fea26469706673582212208a179e9a1082f9d741f0f94b365d0f3616f59628533451f0a85994da1160603364736f6c63430008040033000000000000000000000000888af682c6fbbc78d467e71fac2984d3edc67089

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063924de9b7116101c6578063c79c04fd116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610cbf578063f2fde38b14610cea578063f637434214610d13578063f8b45b0514610d3e57610376565b8063e2f4560514610c3e578063e884f26014610c69578063ef8700e514610c9457610376565b8063d257b34f116100d1578063d257b34f14610b6e578063d469801614610bab578063d85ba06314610bd6578063dd62ed3e14610c0157610376565b8063c79c04fd14610aef578063c876d0b914610b18578063c8c8ebe414610b4357610376565b8063b204141111610164578063c02466681161013e578063c024666814610a49578063c04a541414610a72578063c17b5b8c14610a9d578063c18bc19514610ac657610376565b8063b2041411146109b6578063b62496f5146109e1578063bbc0c74214610a1e57610376565b80639a7a23d6116101a05780639a7a23d6146108ea578063a457c2d714610913578063a9059cbb14610950578063aacebbe31461098d57610376565b8063924de9b71461086d57806392aa37731461089657806395d89b41146108bf57610376565b80634a62bb65116102a05780637571336a1161023e5780638095d564116102185780638095d564146107d75780638a8c523c146108005780638da5cb5b14610817578063921369131461084257610376565b80637571336a1461075857806375f0a874146107815780637bce5a04146107ac57610376565b80636ddd17131161027a5780636ddd1713146106ae57806370a08231146106d9578063715018a614610716578063751039fc1461072d57610376565b80634a62bb651461061b5780634fbee193146106465780636a486a8e1461068357610376565b80631f3fed8f1161030d57806327c8f835116102e757806327c8f8351461055d578063313ce5671461058857806339509351146105b357806349bd5a5e146105f057610376565b80631f3fed8f146104cc578063203e727e146104f757806323b872dd1461052057610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b57806318a94cf1146104765780631a8145bb146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d69565b60405161039d91906143fe565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c89190613e7d565b610dfb565b6040516103da91906143c8565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190613d64565b610e19565b60405161041791906143c8565b60405180910390f35b34801561042c57600080fd5b50610435610e39565b60405161044291906143e3565b60405180910390f35b34801561045757600080fd5b50610460610e5d565b60405161046d9190614640565b60405180910390f35b34801561048257600080fd5b5061048b610e67565b6040516104989190614640565b60405180910390f35b3480156104ad57600080fd5b506104b6610e6d565b6040516104c39190614640565b60405180910390f35b3480156104d857600080fd5b506104e1610e73565b6040516104ee9190614640565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190613ee2565b610e79565b005b34801561052c57600080fd5b5061054760048036038101906105429190613df2565b610f88565b60405161055491906143c8565b60405180910390f35b34801561056957600080fd5b50610572611080565b60405161057f919061434c565b60405180910390f35b34801561059457600080fd5b5061059d611086565b6040516105aa91906146ec565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190613e7d565b61108f565b6040516105e791906143c8565b60405180910390f35b3480156105fc57600080fd5b5061060561113b565b604051610612919061434c565b60405180910390f35b34801561062757600080fd5b50610630611161565b60405161063d91906143c8565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613d64565b611174565b60405161067a91906143c8565b60405180910390f35b34801561068f57600080fd5b506106986111ca565b6040516106a59190614640565b60405180910390f35b3480156106ba57600080fd5b506106c36111d0565b6040516106d091906143c8565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613d64565b6111e3565b60405161070d9190614640565b60405180910390f35b34801561072257600080fd5b5061072b61122b565b005b34801561073957600080fd5b506107426112b3565b60405161074f91906143c8565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613e41565b611353565b005b34801561078d57600080fd5b5061079661142a565b6040516107a3919061434c565b60405180910390f35b3480156107b857600080fd5b506107c1611450565b6040516107ce9190614640565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613f0b565b611456565b005b34801561080c57600080fd5b5061081561151f565b005b34801561082357600080fd5b5061082c6115d3565b604051610839919061434c565b60405180910390f35b34801561084e57600080fd5b506108576115fd565b6040516108649190614640565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f9190613eb9565b611603565b005b3480156108a257600080fd5b506108bd60048036038101906108b89190613d64565b61169c565b005b3480156108cb57600080fd5b506108d46117d8565b6040516108e191906143fe565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c9190613e41565b61186a565b005b34801561091f57600080fd5b5061093a60048036038101906109359190613e7d565b611985565b60405161094791906143c8565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190613e7d565b611a70565b60405161098491906143c8565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af9190613d64565b611a8e565b005b3480156109c257600080fd5b506109cb611bca565b6040516109d89190614640565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190613d64565b611bd0565b604051610a1591906143c8565b60405180910390f35b348015610a2a57600080fd5b50610a33611bf0565b604051610a4091906143c8565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b9190613e41565b611c03565b005b348015610a7e57600080fd5b50610a87611d28565b604051610a94919061434c565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf9190613f0b565b611d4e565b005b348015610ad257600080fd5b50610aed6004803603810190610ae89190613ee2565b611e17565b005b348015610afb57600080fd5b50610b166004803603810190610b119190613d64565b611f26565b005b348015610b2457600080fd5b50610b2d612062565b604051610b3a91906143c8565b60405180910390f35b348015610b4f57600080fd5b50610b58612075565b604051610b659190614640565b60405180910390f35b348015610b7a57600080fd5b50610b956004803603810190610b909190613ee2565b61207b565b604051610ba291906143c8565b60405180910390f35b348015610bb757600080fd5b50610bc0612109565b604051610bcd919061434c565b60405180910390f35b348015610be257600080fd5b50610beb61212f565b604051610bf89190614640565b60405180910390f35b348015610c0d57600080fd5b50610c286004803603810190610c239190613db6565b612135565b604051610c359190614640565b60405180910390f35b348015610c4a57600080fd5b50610c536121bc565b604051610c609190614640565b60405180910390f35b348015610c7557600080fd5b50610c7e6121c2565b604051610c8b91906143c8565b60405180910390f35b348015610ca057600080fd5b50610ca9612262565b604051610cb69190614640565b60405180910390f35b348015610ccb57600080fd5b50610cd4612268565b604051610ce19190614640565b60405180910390f35b348015610cf657600080fd5b50610d116004803603810190610d0c9190613d64565b61226e565b005b348015610d1f57600080fd5b50610d28612366565b604051610d359190614640565b60405180910390f35b348015610d4a57600080fd5b50610d5361236c565b604051610d609190614640565b60405180910390f35b606060038054610d789061493a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da49061493a565b8015610df15780601f10610dc657610100808354040283529160200191610df1565b820191906000526020600020905b815481529060010190602001808311610dd457829003601f168201915b5050505050905090565b6000610e0f610e08612372565b848461237a565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60175481565b60195481565b60185481565b610e81612372565b73ffffffffffffffffffffffffffffffffffffffff16610e9f6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec90614580565b60405180910390fd5b670de0b6b3a76400006103e86001610f0b610e5d565b610f1591906147ee565b610f1f91906147bd565b610f2991906147bd565b811015610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6290614620565b60405180910390fd5b670de0b6b3a764000081610f7f91906147ee565b600a8190555050565b6000610f95848484612545565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fe0612372565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105790614560565b60405180910390fd5b6110748561106c612372565b85840361237a565b60019150509392505050565b61dead81565b60006012905090565b600061113161109c612372565b8484600160006110aa612372565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461112c9190614767565b61237a565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611233612372565b73ffffffffffffffffffffffffffffffffffffffff166112516115d3565b73ffffffffffffffffffffffffffffffffffffffff16146112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90614580565b60405180910390fd5b6112b160006131e2565b565b60006112bd612372565b73ffffffffffffffffffffffffffffffffffffffff166112db6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890614580565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b61135b612372565b73ffffffffffffffffffffffffffffffffffffffff166113796115d3565b73ffffffffffffffffffffffffffffffffffffffff16146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690614580565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61145e612372565b73ffffffffffffffffffffffffffffffffffffffff1661147c6115d3565b73ffffffffffffffffffffffffffffffffffffffff16146114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990614580565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546114fa9190614767565b6115049190614767565b6010819055506063601054111561151a57600080fd5b505050565b611527612372565b73ffffffffffffffffffffffffffffffffffffffff166115456115d3565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290614580565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b61160b612372565b73ffffffffffffffffffffffffffffffffffffffff166116296115d3565b73ffffffffffffffffffffffffffffffffffffffff161461167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690614580565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b6116a4612372565b73ffffffffffffffffffffffffffffffffffffffff166116c26115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90614580565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600480546117e79061493a565b80601f01602080910402602001604051908101604052809291908181526020018280546118139061493a565b80156118605780601f1061183557610100808354040283529160200191611860565b820191906000526020600020905b81548152906001019060200180831161184357829003601f168201915b5050505050905090565b611872612372565b73ffffffffffffffffffffffffffffffffffffffff166118906115d3565b73ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90614580565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e906144c0565b60405180910390fd5b61198182826132a8565b5050565b60008060016000611994612372565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890614600565b60405180910390fd5b611a65611a5c612372565b8585840361237a565b600191505092915050565b6000611a84611a7d612372565b8484612545565b6001905092915050565b611a96612372565b73ffffffffffffffffffffffffffffffffffffffff16611ab46115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190614580565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611c0b612372565b73ffffffffffffffffffffffffffffffffffffffff16611c296115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7690614580565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d1c91906143c8565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d56612372565b73ffffffffffffffffffffffffffffffffffffffff16611d746115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190614580565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611df29190614767565b611dfc9190614767565b60148190555060636014541115611e1257600080fd5b505050565b611e1f612372565b73ffffffffffffffffffffffffffffffffffffffff16611e3d6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614580565b60405180910390fd5b670de0b6b3a76400006103e86005611ea9610e5d565b611eb391906147ee565b611ebd91906147bd565b611ec791906147bd565b811015611f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f00906144a0565b60405180910390fd5b670de0b6b3a764000081611f1d91906147ee565b600c8190555050565b611f2e612372565b73ffffffffffffffffffffffffffffffffffffffff16611f4c6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990614580565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b600a5481565b6000612085612372565b73ffffffffffffffffffffffffffffffffffffffff166120a36115d3565b73ffffffffffffffffffffffffffffffffffffffff16146120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090614580565b60405180910390fd5b81600b8190555060019050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60006121cc612372565b73ffffffffffffffffffffffffffffffffffffffff166121ea6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614612240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223790614580565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b601a5481565b60125481565b612276612372565b73ffffffffffffffffffffffffffffffffffffffff166122946115d3565b73ffffffffffffffffffffffffffffffffffffffff16146122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190614580565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561235a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235190614460565b60405180910390fd5b612363816131e2565b50565b60165481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e1906145c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245190614480565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125389190614640565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac906145a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c90614420565b60405180910390fd5b600081141561263f5761263a83836000613349565b6131dd565b600d60009054906101000a900460ff1615612d045761265c6115d3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ca575061269a6115d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127035750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127565750600660149054906101000a900460ff16155b15612d0357600d60019054906101000a900460ff1661285057601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128105750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614440565b60405180910390fd5b5b600f60009054906101000a900460ff1615612a1a5761286d6115d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128f457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561294e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a195743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106129d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cb90614540565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612abd5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b6457600a54811115612b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afe90614520565b60405180910390fd5b600c54612b13836111e3565b82612b1e9190614767565b1115612b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b56906145e0565b60405180910390fd5b612d02565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c075750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c5657600a54811115612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890614500565b60405180910390fd5b612d01565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d0057600c54612cb3836111e3565b82612cbe9190614767565b1115612cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf6906145e0565b60405180910390fd5b5b5b5b5b5b6000612d0f306111e3565b90506000600b548210159050808015612d345750600d60029054906101000a900460ff165b8015612d4d5750600660149054906101000a900460ff16155b8015612da35750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df95750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e4f5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e94576001600660146101000a81548160ff021916908315150217905550612e78836135ca565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f4a5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5457600090505b600081156131cd57601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fb757506000601454115b1561308457612fe46064612fd6601454886138cd90919063ffffffff16565b6138e390919063ffffffff16565b905060145460165482612ff791906147ee565b61300191906147bd565b601960008282546130129190614767565b925050819055506014546017548261302a91906147ee565b61303491906147bd565b601a60008282546130459190614767565b925050819055506014546015548261305d91906147ee565b61306791906147bd565b601860008282546130789190614767565b925050819055506131a9565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130df57506000601054115b156131a85761310c60646130fe601054886138cd90919063ffffffff16565b6138e390919063ffffffff16565b90506010546012548261311f91906147ee565b61312991906147bd565b6019600082825461313a9190614767565b925050819055506010546013548261315291906147ee565b61315c91906147bd565b601a600082825461316d9190614767565b925050819055506010546011548261318591906147ee565b61318f91906147bd565b601860008282546131a09190614767565b925050819055505b5b60008111156131be576131bd873083613349565b5b80856131ca9190614848565b94505b6131d8878787613349565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b0906145a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342090614420565b60405180910390fd5b6134348383836138f9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156134ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b1906144e0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461354d9190614767565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135b19190614640565b60405180910390a36135c48484846138fe565b50505050565b60006135d5306111e3565b905060008290506000601a546018546019546135f19190614767565b6135fb9190614767565b905060008084148061360d5750600082145b1561361b57505050506138ca565b6014600b5461362a91906147ee565b841115613643576014600b5461364091906147ee565b93505b60006002836019548761365691906147ee565b61366091906147bd565b61366a91906147bd565b90506000613681828761390390919063ffffffff16565b905060004790506136a56136a08761369b8a600b54613919565b613919565b613932565b60006136ba824761390390919063ffffffff16565b905060006136e5876136d7601854856138cd90919063ffffffff16565b6138e390919063ffffffff16565b9050600061371088613702601a54866138cd90919063ffffffff16565b6138e390919063ffffffff16565b905060008183856137219190614848565b61372b9190614848565b9050600060198190555060006018819055506000601a81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161378b90614337565b60006040518083038185875af1925050503d80600081146137c8576040519150601f19603f3d011682016040523d82523d6000602084013e6137cd565b606091505b5050809850506000871180156137e35750600081115b15613830576137f28782613bf0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601954604051613827939291906146b5565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161387690614337565b60006040518083038185875af1925050503d80600081146138b3576040519150601f19603f3d011682016040523d82523d6000602084013e6138b8565b606091505b50508098505050505050505050505050505b50565b600081836138db91906147ee565b905092915050565b600081836138f191906147bd565b905092915050565b505050565b505050565b600081836139119190614848565b905092915050565b6000818311613928578261392a565b815b905092915050565b6000600267ffffffffffffffff811115613975577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156139a35781602001602082028036833780820191505090505b50905030816000815181106139e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a8157600080fd5b505afa158015613a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab99190613d8d565b81600181518110613af3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b58307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461237a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613bba95949392919061465b565b600060405180830381600087803b158015613bd457600080fd5b505af1158015613be8573d6000803e3d6000fd5b505050505050565b613c1b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461237a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ca296959493929190614367565b6060604051808303818588803b158015613cbb57600080fd5b505af1158015613ccf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cf49190613f5a565b5050505050565b600081359050613d0a81614f00565b92915050565b600081519050613d1f81614f00565b92915050565b600081359050613d3481614f17565b92915050565b600081359050613d4981614f2e565b92915050565b600081519050613d5e81614f2e565b92915050565b600060208284031215613d7657600080fd5b6000613d8484828501613cfb565b91505092915050565b600060208284031215613d9f57600080fd5b6000613dad84828501613d10565b91505092915050565b60008060408385031215613dc957600080fd5b6000613dd785828601613cfb565b9250506020613de885828601613cfb565b9150509250929050565b600080600060608486031215613e0757600080fd5b6000613e1586828701613cfb565b9350506020613e2686828701613cfb565b9250506040613e3786828701613d3a565b9150509250925092565b60008060408385031215613e5457600080fd5b6000613e6285828601613cfb565b9250506020613e7385828601613d25565b9150509250929050565b60008060408385031215613e9057600080fd5b6000613e9e85828601613cfb565b9250506020613eaf85828601613d3a565b9150509250929050565b600060208284031215613ecb57600080fd5b6000613ed984828501613d25565b91505092915050565b600060208284031215613ef457600080fd5b6000613f0284828501613d3a565b91505092915050565b600080600060608486031215613f2057600080fd5b6000613f2e86828701613d3a565b9350506020613f3f86828701613d3a565b9250506040613f5086828701613d3a565b9150509250925092565b600080600060608486031215613f6f57600080fd5b6000613f7d86828701613d4f565b9350506020613f8e86828701613d4f565b9250506040613f9f86828701613d4f565b9150509250925092565b6000613fb58383613fc1565b60208301905092915050565b613fca8161487c565b82525050565b613fd98161487c565b82525050565b6000613fea82614717565b613ff4818561473a565b9350613fff83614707565b8060005b838110156140305781516140178882613fa9565b97506140228361472d565b925050600181019050614003565b5085935050505092915050565b6140468161488e565b82525050565b614055816148d1565b82525050565b614064816148f5565b82525050565b600061407582614722565b61407f8185614756565b935061408f818560208601614907565b614098816149f9565b840191505092915050565b60006140b0602383614756565b91506140bb82614a0a565b604082019050919050565b60006140d3601683614756565b91506140de82614a59565b602082019050919050565b60006140f6602683614756565b915061410182614a82565b604082019050919050565b6000614119602283614756565b915061412482614ad1565b604082019050919050565b600061413c602483614756565b915061414782614b20565b604082019050919050565b600061415f603983614756565b915061416a82614b6f565b604082019050919050565b6000614182602683614756565b915061418d82614bbe565b604082019050919050565b60006141a5603683614756565b91506141b082614c0d565b604082019050919050565b60006141c8603583614756565b91506141d382614c5c565b604082019050919050565b60006141eb604983614756565b91506141f682614cab565b606082019050919050565b600061420e602883614756565b915061421982614d20565b604082019050919050565b6000614231602083614756565b915061423c82614d6f565b602082019050919050565b6000614254602583614756565b915061425f82614d98565b604082019050919050565b600061427760008361474b565b915061428282614de7565b600082019050919050565b600061429a602483614756565b91506142a582614dea565b604082019050919050565b60006142bd601383614756565b91506142c882614e39565b602082019050919050565b60006142e0602583614756565b91506142eb82614e62565b604082019050919050565b6000614303602f83614756565b915061430e82614eb1565b604082019050919050565b614322816148ba565b82525050565b614331816148c4565b82525050565b60006143428261426a565b9150819050919050565b60006020820190506143616000830184613fd0565b92915050565b600060c08201905061437c6000830189613fd0565b6143896020830188614319565b614396604083018761405b565b6143a3606083018661405b565b6143b06080830185613fd0565b6143bd60a0830184614319565b979650505050505050565b60006020820190506143dd600083018461403d565b92915050565b60006020820190506143f8600083018461404c565b92915050565b60006020820190508181036000830152614418818461406a565b905092915050565b60006020820190508181036000830152614439816140a3565b9050919050565b60006020820190508181036000830152614459816140c6565b9050919050565b60006020820190508181036000830152614479816140e9565b9050919050565b600060208201905081810360008301526144998161410c565b9050919050565b600060208201905081810360008301526144b98161412f565b9050919050565b600060208201905081810360008301526144d981614152565b9050919050565b600060208201905081810360008301526144f981614175565b9050919050565b6000602082019050818103600083015261451981614198565b9050919050565b60006020820190508181036000830152614539816141bb565b9050919050565b60006020820190508181036000830152614559816141de565b9050919050565b6000602082019050818103600083015261457981614201565b9050919050565b6000602082019050818103600083015261459981614224565b9050919050565b600060208201905081810360008301526145b981614247565b9050919050565b600060208201905081810360008301526145d98161428d565b9050919050565b600060208201905081810360008301526145f9816142b0565b9050919050565b60006020820190508181036000830152614619816142d3565b9050919050565b60006020820190508181036000830152614639816142f6565b9050919050565b60006020820190506146556000830184614319565b92915050565b600060a0820190506146706000830188614319565b61467d602083018761405b565b818103604083015261468f8186613fdf565b905061469e6060830185613fd0565b6146ab6080830184614319565b9695505050505050565b60006060820190506146ca6000830186614319565b6146d76020830185614319565b6146e46040830184614319565b949350505050565b60006020820190506147016000830184614328565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614772826148ba565b915061477d836148ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b2576147b161496c565b5b828201905092915050565b60006147c8826148ba565b91506147d3836148ba565b9250826147e3576147e261499b565b5b828204905092915050565b60006147f9826148ba565b9150614804836148ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483d5761483c61496c565b5b828202905092915050565b6000614853826148ba565b915061485e836148ba565b9250828210156148715761487061496c565b5b828203905092915050565b60006148878261489a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006148dc826148e3565b9050919050565b60006148ee8261489a565b9050919050565b6000614900826148ba565b9050919050565b60005b8381101561492557808201518184015260208101905061490a565b83811115614934576000848401525b50505050565b6000600282049050600182168061495257607f821691505b60208210811415614966576149656149ca565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b614f098161487c565b8114614f1457600080fd5b50565b614f208161488e565b8114614f2b57600080fd5b50565b614f37816148ba565b8114614f4257600080fd5b5056fea26469706673582212208a179e9a1082f9d741f0f94b365d0f3616f59628533451f0a85994da1160603364736f6c63430008040033

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

000000000000000000000000888af682c6fbbc78d467e71fac2984d3edc67089

-----Decoded View---------------
Arg [0] : _helper (address): 0x888aF682c6fBBC78D467e71faC2984d3edC67089

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000888af682c6fbbc78d467e71fac2984d3edc67089


Deployed Bytecode Sourcemap

15042:16086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2739:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3653:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16310:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15115:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3060:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16085:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16167;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20594:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3830:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15208:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2959:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4330:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15173:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15530:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23555:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15974:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15610:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3176:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;861:103;;;;;;;;;;;;;:::i;:::-;;19772:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21067:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15300:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15859;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21438:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19608:112;;;;;;;;;;;;;:::i;:::-;;638:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16009:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21330:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23339:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2847:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22457:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4553:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3311:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22926:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15933:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16382:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15570:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22267:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15337:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21848:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20840:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23142:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15776:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15415:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20159:427;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15376:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15825:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3494:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15457:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19954:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16207:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15896:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;972:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16047:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15497:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2739:100;2793:13;2826:5;2819:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2739:100;:::o;3653:169::-;3736:4;3753:39;3762:12;:10;:12::i;:::-;3776:7;3785:6;3753:8;:39::i;:::-;3810:4;3803:11;;3653:169;;;;:::o;16310:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15115:51::-;;;:::o;3060:108::-;3121:7;3148:12;;3141:19;;3060:108;:::o;16085:33::-;;;;:::o;16167:::-;;;;:::o;16127:::-;;;;:::o;20594:238::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20717:4:::1;20709;20704:1;20688:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20687:26;;;;:::i;:::-;20686:35;;;;:::i;:::-;20676:6;:45;;20668:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;20817:6;20807;:17;;;;:::i;:::-;20784:20;:40;;;;20594:238:::0;:::o;3830:492::-;3970:4;3987:36;3997:6;4005:9;4016:6;3987:9;:36::i;:::-;4036:24;4063:11;:19;4075:6;4063:19;;;;;;;;;;;;;;;:33;4083:12;:10;:12::i;:::-;4063:33;;;;;;;;;;;;;;;;4036:60;;4135:6;4115:16;:26;;4107:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4222:57;4231:6;4239:12;:10;:12::i;:::-;4272:6;4253:16;:25;4222:8;:57::i;:::-;4310:4;4303:11;;;3830:492;;;;;:::o;15208:53::-;15254:6;15208:53;:::o;2959:93::-;3017:5;3042:2;3035:9;;2959:93;:::o;4330:215::-;4418:4;4435:80;4444:12;:10;:12::i;:::-;4458:7;4504:10;4467:11;:25;4479:12;:10;:12::i;:::-;4467:25;;;;;;;;;;;;;;;:34;4493:7;4467:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4435:8;:80::i;:::-;4533:4;4526:11;;4330:215;;;;:::o;15173:28::-;;;;;;;;;;;;;:::o;15530:33::-;;;;;;;;;;;;;:::o;23555:126::-;23621:4;23645:19;:28;23665:7;23645:28;;;;;;;;;;;;;;;;;;;;;;;;;23638:35;;23555:126;;;:::o;15974:28::-;;;;:::o;15610:31::-;;;;;;;;;;;;;:::o;3176:127::-;3250:7;3277:9;:18;3287:7;3277:18;;;;;;;;;;;;;;;;3270:25;;3176:127;;;:::o;861:103::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;926:30:::1;953:1;926:18;:30::i;:::-;861:103::o:0;19772:121::-;19824:4;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19858:5:::1;19841:14;;:22;;;;;;;;;;;;;;;;;;19881:4;19874:11;;19772:121:::0;:::o;21067:167::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21222:4:::1;21180:31;:39;21212:6;21180:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21067:167:::0;;:::o;15300:30::-;;;;;;;;;;;;;:::o;15859:::-;;;;:::o;21438:402::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21614:13:::1;21596:15;:31;;;;21656:13;21638:15;:31;;;;21700:15;21680:17;:35;;;;21777:17;;21759:15;;21741;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;21726:12;:68;;;;21829:2;21813:12;;:18;;21805:27;;;::::0;::::1;;21438:402:::0;;;:::o;19608:112::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19679:4:::1;19663:13;;:20;;;;;;;;;;;;;;;;;;19708:4;19694:11;;:18;;;;;;;;;;;;;;;;;;19608:112::o:0;638:87::-;684:7;711:6;;;;;;;;;;;704:13;;638:87;:::o;16009:31::-;;;;:::o;21330:100::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21415:7:::1;21401:11;;:21;;;;;;;;;;;;;;;;;;21330:100:::0;:::o;23339:208::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23476:15:::1;;;;;;;;;;;23433:59;;23456:18;23433:59;;;;;;;;;;;;23521:18;23503:15;;:36;;;;;;;;;;;;;;;;;;23339:208:::0;:::o;2847:104::-;2903:13;2936:7;2929:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2847:104;:::o;22457:265::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22587:13:::1;;;;;;;;;;;22579:21;;:4;:21;;;;22571:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;22673:41;22702:4;22708:5;22673:28;:41::i;:::-;22457:265:::0;;:::o;4553:413::-;4646:4;4663:24;4690:11;:25;4702:12;:10;:12::i;:::-;4690:25;;;;;;;;;;;;;;;:34;4716:7;4690:34;;;;;;;;;;;;;;;;4663:61;;4763:15;4743:16;:35;;4735:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4856:67;4865:12;:10;:12::i;:::-;4879:7;4907:15;4888:16;:34;4856:8;:67::i;:::-;4954:4;4947:11;;;4553:413;;;;:::o;3311:175::-;3397:4;3414:42;3424:12;:10;:12::i;:::-;3438:9;3449:6;3414:9;:42::i;:::-;3474:4;3467:11;;3311:175;;;;:::o;22926:208::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23063:15:::1;;;;;;;;;;;23020:59;;23043:18;23020:59;;;;;;;;;;;;23108:18;23090:15;;:36;;;;;;;;;;;;;;;;;;22926:208:::0;:::o;15933:32::-;;;;:::o;16382:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15570:33::-;;;;;;;;;;;;;:::o;22267:182::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22383:8:::1;22352:19;:28;22372:7;22352:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22423:7;22407:34;;;22432:8;22407:34;;;;;;:::i;:::-;;;;;;;;22267:182:::0;;:::o;15337:32::-;;;;;;;;;;;;;:::o;21848:411::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22026:13:::1;22007:16;:32;;;;22069:13;22050:16;:32;;;;22114:15;22093:18;:36;;;;22194:18;;22175:16;;22156;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;22140:13;:72;;;;22248:2;22231:13;;:19;;22223:28;;;::::0;::::1;;21848:411:::0;;;:::o;20840:219::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20966:4:::1;20958;20953:1;20937:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20936:26;;;;:::i;:::-;20935:35;;;;:::i;:::-;20925:6;:45;;20917:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;21044:6;21034;:17;;;;:::i;:::-;21022:9;:29;;;;20840:219:::0;:::o;23142:189::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23265:17:::1;;;;;;;;;;;23229:54;;23254:9;23229:54;;;;;;;;;;;;23314:9;23294:17;;:29;;;;;;;;;;;;;;;;;;23142:189:::0;:::o;15776:40::-;;;;;;;;;;;;;:::o;15415:35::-;;;;:::o;20159:427::-;20267:4;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20547:9:::1;20526:18;:30;;;;20574:4;20567:11;;20159:427:::0;;;:::o;15376:30::-;;;;;;;;;;;;;:::o;15825:27::-;;;;:::o;3494:151::-;3583:7;3610:11;:18;3622:5;3610:18;;;;;;;;;;;;;;;:27;3629:7;3610:27;;;;;;;;;;;;;;;;3603:34;;3494:151;;;;:::o;15457:33::-;;;;:::o;19954:135::-;20014:4;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20054:5:::1;20031:20;;:28;;;;;;;;;;;;;;;;;;20077:4;20070:11;;19954:135:::0;:::o;16207:35::-;;;;:::o;15896:30::-;;;;:::o;972:201::-;784:12;:10;:12::i;:::-;773:23;;:7;:5;:7::i;:::-;:23;;;765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1081:1:::1;1061:22;;:8;:22;;;;1053:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1137:28;1156:8;1137:18;:28::i;:::-;972:201:::0;:::o;16047:31::-;;;;:::o;15497:24::-;;;;:::o;184:98::-;237:7;264:10;257:17;;184:98;:::o;6721:380::-;6874:1;6857:19;;:5;:19;;;;6849:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6955:1;6936:21;;:7;:21;;;;6928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7039:6;7009:11;:18;7021:5;7009:18;;;;;;;;;;;;;;;:27;7028:7;7009:27;;;;;;;;;;;;;;;:36;;;;7077:7;7061:32;;7070:5;7061:32;;;7086:6;7061:32;;;;;;:::i;:::-;;;;;;;;6721:380;;;:::o;23739:4271::-;23887:1;23871:18;;:4;:18;;;;23863:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23964:1;23950:16;;:2;:16;;;;23942:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24033:1;24023:6;:11;24019:93;;;24051:28;24067:4;24073:2;24077:1;24051:15;:28::i;:::-;24094:7;;24019:93;24128:14;;;;;;;;;;;24124:2003;;;24189:7;:5;:7::i;:::-;24181:15;;:4;:15;;;;:49;;;;;24223:7;:5;:7::i;:::-;24217:13;;:2;:13;;;;24181:49;:86;;;;;24265:1;24251:16;;:2;:16;;;;24181:86;:128;;;;;24302:6;24288:21;;:2;:21;;;;24181:128;:158;;;;;24331:8;;;;;;;;;;;24330:9;24181:158;24159:1957;;;24379:13;;;;;;;;;;;24374:150;;24425:19;:25;24445:4;24425:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24454:19;:23;24474:2;24454:23;;;;;;;;;;;;;;;;;;;;;;;;;24425:52;24417:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;24374:150;24680:20;;;;;;;;;;;24676:523;;;24761:7;:5;:7::i;:::-;24755:13;;:2;:13;;;;:72;;;;;24811:15;24797:30;;:2;:30;;;;24755:72;:129;;;;;24870:13;;;;;;;;;;;24856:28;;:2;:28;;;;24755:129;24725:455;;;24985:12;24943:28;:39;24972:9;24943:39;;;;;;;;;;;;;;;;:54;24935:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25144:12;25102:28;:39;25131:9;25102:39;;;;;;;;;;;;;;;:54;;;;24725:455;24676:523;25273:25;:31;25299:4;25273:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25330:31;:35;25362:2;25330:35;;;;;;;;;;;;;;;;;;;;;;;;;25329:36;25273:92;25247:854;;;25426:20;;25416:6;:30;;25408:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;25560:9;;25543:13;25553:2;25543:9;:13::i;:::-;25534:6;:22;;;;:::i;:::-;:35;;25526:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25247:854;;;25691:25;:29;25717:2;25691:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25746:31;:37;25778:4;25746:37;;;;;;;;;;;;;;;;;;;;;;;;;25745:38;25691:92;25665:436;;;25844:20;;25834:6;:30;;25826:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;25665:436;;;25954:31;:35;25986:2;25954:35;;;;;;;;;;;;;;;;;;;;;;;;;25949:152;;26048:9;;26031:13;26041:2;26031:9;:13::i;:::-;26022:6;:22;;;;:::i;:::-;:35;;26014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25949:152;25665:436;25247:854;24159:1957;24124:2003;26139:28;26170:24;26188:4;26170:9;:24::i;:::-;26139:55;;26207:12;26246:18;;26222:20;:42;;26207:57;;26295:7;:35;;;;;26319:11;;;;;;;;;;;26295:35;:61;;;;;26348:8;;;;;;;;;;;26347:9;26295:61;:110;;;;;26374:25;:31;26400:4;26374:31;;;;;;;;;;;;;;;;;;;;;;;;;26373:32;26295:110;:153;;;;;26423:19;:25;26443:4;26423:25;;;;;;;;;;;;;;;;;;;;;;;;;26422:26;26295:153;:194;;;;;26466:19;:23;26486:2;26466:23;;;;;;;;;;;;;;;;;;;;;;;;;26465:24;26295:194;26277:332;;;26527:4;26516:8;;:15;;;;;;;;;;;;;;;;;;26548:16;26557:6;26548:8;:16::i;:::-;26592:5;26581:8;;:16;;;;;;;;;;;;;;;;;;26277:332;26621:12;26637:8;;;;;;;;;;;26636:9;26621:24;;26747:19;:25;26767:4;26747:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26776:19;:23;26796:2;26776:23;;;;;;;;;;;;;;;;;;;;;;;;;26747:52;26743:100;;;26826:5;26816:15;;26743:100;26855:12;26960:7;26956:1001;;;27012:25;:29;27038:2;27012:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27061:1;27045:13;;:17;27012:50;27008:800;;;27090:34;27120:3;27090:25;27101:13;;27090:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;27083:41;;27193:13;;27173:16;;27166:4;:23;;;;:::i;:::-;27165:41;;;;:::i;:::-;27143:18;;:63;;;;;;;:::i;:::-;;;;;;;;27279:13;;27257:18;;27250:4;:25;;;;:::i;:::-;27249:43;;;;:::i;:::-;27225:20;;:67;;;;;;;:::i;:::-;;;;;;;;27361:13;;27341:16;;27334:4;:23;;;;:::i;:::-;27333:41;;;;:::i;:::-;27311:18;;:63;;;;;;;:::i;:::-;;;;;;;;27008:800;;;27436:25;:31;27462:4;27436:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;27486:1;27471:12;;:16;27436:51;27432:376;;;27515:33;27544:3;27515:24;27526:12;;27515:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27508:40;;27616:12;;27597:15;;27590:4;:22;;;;:::i;:::-;27589:39;;;;:::i;:::-;27567:18;;:61;;;;;;;:::i;:::-;;;;;;;;27700:12;;27679:17;;27672:4;:24;;;;:::i;:::-;27671:41;;;;:::i;:::-;27647:20;;:65;;;;;;;:::i;:::-;;;;;;;;27780:12;;27761:15;;27754:4;:22;;;;:::i;:::-;27753:39;;;;:::i;:::-;27731:18;;:61;;;;;;;:::i;:::-;;;;;;;;27432:376;27008:800;27835:1;27828:4;:8;27824:91;;;27857:42;27873:4;27887;27894;27857:15;:42::i;:::-;27824:91;27941:4;27931:14;;;;;:::i;:::-;;;26956:1001;27969:33;27985:4;27991:2;27995:6;27969:15;:33::i;:::-;23739:4271;;;;;;;;:::o;1181:191::-;1255:16;1274:6;;;;;;;;;;;1255:25;;1300:8;1291:6;;:17;;;;;;;;;;;;;;;;;;1355:8;1324:40;;1345:8;1324:40;;;;;;;;;;;;1181:191;;:::o;22730:188::-;22847:5;22813:25;:31;22839:4;22813:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22904:5;22870:40;;22898:4;22870:40;;;;;;;;;;;;22730:188;;:::o;4974:733::-;5132:1;5114:20;;:6;:20;;;;5106:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5216:1;5195:23;;:9;:23;;;;5187:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5271:47;5292:6;5300:9;5311:6;5271:20;:47::i;:::-;5331:21;5355:9;:17;5365:6;5355:17;;;;;;;;;;;;;;;;5331:41;;5408:6;5391:13;:23;;5383:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5529:6;5513:13;:22;5493:9;:17;5503:6;5493:17;;;;;;;;;;;;;;;:42;;;;5581:6;5557:9;:20;5567:9;5557:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5622:9;5605:35;;5614:6;5605:35;;;5633:6;5605:35;;;;;;:::i;:::-;;;;;;;;5653:46;5673:6;5681:9;5692:6;5653:19;:46::i;:::-;4974:733;;;;:::o;29254:1871::-;29308:23;29334:24;29352:4;29334:9;:24::i;:::-;29308:50;;29369:14;29386:7;29369:24;;29404:25;29500:20;;29466:18;;29432;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;29404:116;;29531:12;29579:1;29560:15;:20;:46;;;;29605:1;29584:17;:22;29560:46;29556:85;;;29623:7;;;;;;29556:85;29696:2;29675:18;;:23;;;;:::i;:::-;29657:15;:41;29653:115;;;29754:2;29733:18;;:23;;;;:::i;:::-;29715:41;;29653:115;29829:23;29942:1;29909:17;29874:18;;29856:15;:36;;;;:::i;:::-;29855:71;;;;:::i;:::-;:88;;;;:::i;:::-;29829:114;;29954:26;29983:36;30003:15;29983;:19;;:36;;;;:::i;:::-;29954:65;;30032:25;30060:21;30032:49;;30094:69;30111:51;30115:6;30122:39;30126:15;30142:18;;30122:3;:39::i;:::-;30111:3;:51::i;:::-;30094:16;:69::i;:::-;30176:18;30197:44;30223:17;30197:21;:25;;:44;;;;:::i;:::-;30176:65;;30254:23;30280:81;30333:17;30280:34;30295:18;;30280:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;30254:107;;30372:17;30392:59;30433:17;30392:36;30407:20;;30392:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;30372:79;;30464:23;30521:9;30503:15;30490:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;30464:66;;30564:1;30543:18;:22;;;;30597:1;30576:18;:22;;;;30632:1;30609:20;:24;;;;30668:17;;;;;;;;;;;30660:31;;30699:9;30660:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30646:67;;;;;30748:1;30730:15;:19;:42;;;;;30771:1;30753:15;:19;30730:42;30726:278;;;30789:46;30802:15;30819;30789:12;:46::i;:::-;30855:137;30888:18;30925:15;30959:18;;30855:137;;;;;;;;:::i;:::-;;;;;;;;30726:278;31038:15;;;;;;;;;;;31030:29;;31081:21;31030:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31016:101;;;;;29254:1871;;;;;;;;;;;;;:::o;8727:98::-;8785:7;8816:1;8812;:5;;;;:::i;:::-;8805:12;;8727:98;;;;:::o;8833:::-;8891:7;8922:1;8918;:5;;;;:::i;:::-;8911:12;;8833:98;;;;:::o;7109:125::-;;;;:::o;7242:124::-;;;;:::o;8621:98::-;8679:7;8710:1;8706;:5;;;;:::i;:::-;8699:12;;8621:98;;;;:::o;28022:::-;28079:7;28106:1;28104;:3;28103:9;;28111:1;28103:9;;;28109:1;28103:9;28096:16;;28022:98;;;;:::o;28128:589::-;28254:21;28292:1;28278:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28254:40;;28323:4;28305;28310:1;28305:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;28349:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28339:4;28344:1;28339:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;28384:62;28401:4;28416:15;28434:11;28384:8;:62::i;:::-;28485:15;:66;;;28566:11;28592:1;28636:4;28663;28683:15;28485:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28128:589;;:::o;28725:521::-;28873:62;28890:4;28905:15;28923:11;28873:8;:62::i;:::-;28978:15;:31;;;29017:9;29050:4;29070:11;29096:1;29139;29182:15;;;;;;;;;;;29212;28978:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28725:521;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:552::-;3690:6;3698;3706;3755:2;3743:9;3734:7;3730:23;3726:32;3723:2;;;3771:1;3768;3761:12;3723:2;3814:1;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3785:117;3941:2;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3912:118;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3713:452;;;;;:::o;4171:596::-;4259:6;4267;4275;4324:2;4312:9;4303:7;4299:23;4295:32;4292:2;;;4340:1;4337;4330:12;4292:2;4383:1;4408:64;4464:7;4455:6;4444:9;4440:22;4408:64;:::i;:::-;4398:74;;4354:128;4521:2;4547:64;4603:7;4594:6;4583:9;4579:22;4547:64;:::i;:::-;4537:74;;4492:129;4660:2;4686:64;4742:7;4733:6;4722:9;4718:22;4686:64;:::i;:::-;4676:74;;4631:129;4282:485;;;;;:::o;4773:179::-;4842:10;4863:46;4905:3;4897:6;4863:46;:::i;:::-;4941:4;4936:3;4932:14;4918:28;;4853:99;;;;:::o;4958:108::-;5035:24;5053:5;5035:24;:::i;:::-;5030:3;5023:37;5013:53;;:::o;5072:118::-;5159:24;5177:5;5159:24;:::i;:::-;5154:3;5147:37;5137:53;;:::o;5226:732::-;5345:3;5374:54;5422:5;5374:54;:::i;:::-;5444:86;5523:6;5518:3;5444:86;:::i;:::-;5437:93;;5554:56;5604:5;5554:56;:::i;:::-;5633:7;5664:1;5649:284;5674:6;5671:1;5668:13;5649:284;;;5750:6;5744:13;5777:63;5836:3;5821:13;5777:63;:::i;:::-;5770:70;;5863:60;5916:6;5863:60;:::i;:::-;5853:70;;5709:224;5696:1;5693;5689:9;5684:14;;5649:284;;;5653:14;5949:3;5942:10;;5350:608;;;;;;;:::o;5964:109::-;6045:21;6060:5;6045:21;:::i;:::-;6040:3;6033:34;6023:50;;:::o;6079:185::-;6193:64;6251:5;6193:64;:::i;:::-;6188:3;6181:77;6171:93;;:::o;6270:147::-;6365:45;6404:5;6365:45;:::i;:::-;6360:3;6353:58;6343:74;;:::o;6423:364::-;6511:3;6539:39;6572:5;6539:39;:::i;:::-;6594:71;6658:6;6653:3;6594:71;:::i;:::-;6587:78;;6674:52;6719:6;6714:3;6707:4;6700:5;6696:16;6674:52;:::i;:::-;6751:29;6773:6;6751:29;:::i;:::-;6746:3;6742:39;6735:46;;6515:272;;;;;:::o;6793:366::-;6935:3;6956:67;7020:2;7015:3;6956:67;:::i;:::-;6949:74;;7032:93;7121:3;7032:93;:::i;:::-;7150:2;7145:3;7141:12;7134:19;;6939:220;;;:::o;7165:366::-;7307:3;7328:67;7392:2;7387:3;7328:67;:::i;:::-;7321:74;;7404:93;7493:3;7404:93;:::i;:::-;7522:2;7517:3;7513:12;7506:19;;7311:220;;;:::o;7537:366::-;7679:3;7700:67;7764:2;7759:3;7700:67;:::i;:::-;7693:74;;7776:93;7865:3;7776:93;:::i;:::-;7894:2;7889:3;7885:12;7878:19;;7683:220;;;:::o;7909:366::-;8051:3;8072:67;8136:2;8131:3;8072:67;:::i;:::-;8065:74;;8148:93;8237:3;8148:93;:::i;:::-;8266:2;8261:3;8257:12;8250:19;;8055:220;;;:::o;8281:366::-;8423:3;8444:67;8508:2;8503:3;8444:67;:::i;:::-;8437:74;;8520:93;8609:3;8520:93;:::i;:::-;8638:2;8633:3;8629:12;8622:19;;8427:220;;;:::o;8653:366::-;8795:3;8816:67;8880:2;8875:3;8816:67;:::i;:::-;8809:74;;8892:93;8981:3;8892:93;:::i;:::-;9010:2;9005:3;9001:12;8994:19;;8799:220;;;:::o;9025:366::-;9167:3;9188:67;9252:2;9247:3;9188:67;:::i;:::-;9181:74;;9264:93;9353:3;9264:93;:::i;:::-;9382:2;9377:3;9373:12;9366:19;;9171:220;;;:::o;9397:366::-;9539:3;9560:67;9624:2;9619:3;9560:67;:::i;:::-;9553:74;;9636:93;9725:3;9636:93;:::i;:::-;9754:2;9749:3;9745:12;9738:19;;9543:220;;;:::o;9769:366::-;9911:3;9932:67;9996:2;9991:3;9932:67;:::i;:::-;9925:74;;10008:93;10097:3;10008:93;:::i;:::-;10126:2;10121:3;10117:12;10110:19;;9915:220;;;:::o;10141:366::-;10283:3;10304:67;10368:2;10363:3;10304:67;:::i;:::-;10297:74;;10380:93;10469:3;10380:93;:::i;:::-;10498:2;10493:3;10489:12;10482:19;;10287:220;;;:::o;10513:366::-;10655:3;10676:67;10740:2;10735:3;10676:67;:::i;:::-;10669:74;;10752:93;10841:3;10752:93;:::i;:::-;10870:2;10865:3;10861:12;10854:19;;10659:220;;;:::o;10885:366::-;11027:3;11048:67;11112:2;11107:3;11048:67;:::i;:::-;11041:74;;11124:93;11213:3;11124:93;:::i;:::-;11242:2;11237:3;11233:12;11226:19;;11031:220;;;:::o;11257:366::-;11399:3;11420:67;11484:2;11479:3;11420:67;:::i;:::-;11413:74;;11496:93;11585:3;11496:93;:::i;:::-;11614:2;11609:3;11605:12;11598:19;;11403:220;;;:::o;11629:398::-;11788:3;11809:83;11890:1;11885:3;11809:83;:::i;:::-;11802:90;;11901:93;11990:3;11901:93;:::i;:::-;12019:1;12014:3;12010:11;12003:18;;11792:235;;;:::o;12033:366::-;12175:3;12196:67;12260:2;12255:3;12196:67;:::i;:::-;12189:74;;12272:93;12361:3;12272:93;:::i;:::-;12390:2;12385:3;12381:12;12374:19;;12179:220;;;:::o;12405:366::-;12547:3;12568:67;12632:2;12627:3;12568:67;:::i;:::-;12561:74;;12644:93;12733:3;12644:93;:::i;:::-;12762:2;12757:3;12753:12;12746:19;;12551:220;;;:::o;12777:366::-;12919:3;12940:67;13004:2;12999:3;12940:67;:::i;:::-;12933:74;;13016:93;13105:3;13016:93;:::i;:::-;13134:2;13129:3;13125:12;13118:19;;12923:220;;;:::o;13149:366::-;13291:3;13312:67;13376:2;13371:3;13312:67;:::i;:::-;13305:74;;13388:93;13477:3;13388:93;:::i;:::-;13506:2;13501:3;13497:12;13490:19;;13295:220;;;:::o;13521:118::-;13608:24;13626:5;13608:24;:::i;:::-;13603:3;13596:37;13586:53;;:::o;13645:112::-;13728:22;13744:5;13728:22;:::i;:::-;13723:3;13716:35;13706:51;;:::o;13763:379::-;13947:3;13969:147;14112:3;13969:147;:::i;:::-;13962:154;;14133:3;14126:10;;13951:191;;;:::o;14148:222::-;14241:4;14279:2;14268:9;14264:18;14256:26;;14292:71;14360:1;14349:9;14345:17;14336:6;14292:71;:::i;:::-;14246:124;;;;:::o;14376:807::-;14625:4;14663:3;14652:9;14648:19;14640:27;;14677:71;14745:1;14734:9;14730:17;14721:6;14677:71;:::i;:::-;14758:72;14826:2;14815:9;14811:18;14802:6;14758:72;:::i;:::-;14840:80;14916:2;14905:9;14901:18;14892:6;14840:80;:::i;:::-;14930;15006:2;14995:9;14991:18;14982:6;14930:80;:::i;:::-;15020:73;15088:3;15077:9;15073:19;15064:6;15020:73;:::i;:::-;15103;15171:3;15160:9;15156:19;15147:6;15103:73;:::i;:::-;14630:553;;;;;;;;;:::o;15189:210::-;15276:4;15314:2;15303:9;15299:18;15291:26;;15327:65;15389:1;15378:9;15374:17;15365:6;15327:65;:::i;:::-;15281:118;;;;:::o;15405:276::-;15525:4;15563:2;15552:9;15548:18;15540:26;;15576:98;15671:1;15660:9;15656:17;15647:6;15576:98;:::i;:::-;15530:151;;;;:::o;15687:313::-;15800:4;15838:2;15827:9;15823:18;15815:26;;15887:9;15881:4;15877:20;15873:1;15862:9;15858:17;15851:47;15915:78;15988:4;15979:6;15915:78;:::i;:::-;15907:86;;15805:195;;;;:::o;16006:419::-;16172:4;16210:2;16199:9;16195:18;16187:26;;16259:9;16253:4;16249:20;16245:1;16234:9;16230:17;16223:47;16287:131;16413:4;16287:131;:::i;:::-;16279:139;;16177:248;;;:::o;16431:419::-;16597:4;16635:2;16624:9;16620:18;16612:26;;16684:9;16678:4;16674:20;16670:1;16659:9;16655:17;16648:47;16712:131;16838:4;16712:131;:::i;:::-;16704:139;;16602:248;;;:::o;16856:419::-;17022:4;17060:2;17049:9;17045:18;17037:26;;17109:9;17103:4;17099:20;17095:1;17084:9;17080:17;17073:47;17137:131;17263:4;17137:131;:::i;:::-;17129:139;;17027:248;;;:::o;17281:419::-;17447:4;17485:2;17474:9;17470:18;17462:26;;17534:9;17528:4;17524:20;17520:1;17509:9;17505:17;17498:47;17562:131;17688:4;17562:131;:::i;:::-;17554:139;;17452:248;;;:::o;17706:419::-;17872:4;17910:2;17899:9;17895:18;17887:26;;17959:9;17953:4;17949:20;17945:1;17934:9;17930:17;17923:47;17987:131;18113:4;17987:131;:::i;:::-;17979:139;;17877:248;;;:::o;18131:419::-;18297:4;18335:2;18324:9;18320:18;18312:26;;18384:9;18378:4;18374:20;18370:1;18359:9;18355:17;18348:47;18412:131;18538:4;18412:131;:::i;:::-;18404:139;;18302:248;;;:::o;18556:419::-;18722:4;18760:2;18749:9;18745:18;18737:26;;18809:9;18803:4;18799:20;18795:1;18784:9;18780:17;18773:47;18837:131;18963:4;18837:131;:::i;:::-;18829:139;;18727:248;;;:::o;18981:419::-;19147:4;19185:2;19174:9;19170:18;19162:26;;19234:9;19228:4;19224:20;19220:1;19209:9;19205:17;19198:47;19262:131;19388:4;19262:131;:::i;:::-;19254:139;;19152:248;;;:::o;19406:419::-;19572:4;19610:2;19599:9;19595:18;19587:26;;19659:9;19653:4;19649:20;19645:1;19634:9;19630:17;19623:47;19687:131;19813:4;19687:131;:::i;:::-;19679:139;;19577:248;;;:::o;19831:419::-;19997:4;20035:2;20024:9;20020:18;20012:26;;20084:9;20078:4;20074:20;20070:1;20059:9;20055:17;20048:47;20112:131;20238:4;20112:131;:::i;:::-;20104:139;;20002:248;;;:::o;20256:419::-;20422:4;20460:2;20449:9;20445:18;20437:26;;20509:9;20503:4;20499:20;20495:1;20484:9;20480:17;20473:47;20537:131;20663:4;20537:131;:::i;:::-;20529:139;;20427:248;;;:::o;20681:419::-;20847:4;20885:2;20874:9;20870:18;20862:26;;20934:9;20928:4;20924:20;20920:1;20909:9;20905:17;20898:47;20962:131;21088:4;20962:131;:::i;:::-;20954:139;;20852:248;;;:::o;21106:419::-;21272:4;21310:2;21299:9;21295:18;21287:26;;21359:9;21353:4;21349:20;21345:1;21334:9;21330:17;21323:47;21387:131;21513:4;21387:131;:::i;:::-;21379:139;;21277:248;;;:::o;21531:419::-;21697:4;21735:2;21724:9;21720:18;21712:26;;21784:9;21778:4;21774:20;21770:1;21759:9;21755:17;21748:47;21812:131;21938:4;21812:131;:::i;:::-;21804:139;;21702:248;;;:::o;21956:419::-;22122:4;22160:2;22149:9;22145:18;22137:26;;22209:9;22203:4;22199:20;22195:1;22184:9;22180:17;22173:47;22237:131;22363:4;22237:131;:::i;:::-;22229:139;;22127:248;;;:::o;22381:419::-;22547:4;22585:2;22574:9;22570:18;22562:26;;22634:9;22628:4;22624:20;22620:1;22609:9;22605:17;22598:47;22662:131;22788:4;22662:131;:::i;:::-;22654:139;;22552:248;;;:::o;22806:419::-;22972:4;23010:2;22999:9;22995:18;22987:26;;23059:9;23053:4;23049:20;23045:1;23034:9;23030:17;23023:47;23087:131;23213:4;23087:131;:::i;:::-;23079:139;;22977:248;;;:::o;23231:222::-;23324:4;23362:2;23351:9;23347:18;23339:26;;23375:71;23443:1;23432:9;23428:17;23419:6;23375:71;:::i;:::-;23329:124;;;;:::o;23459:831::-;23722:4;23760:3;23749:9;23745:19;23737:27;;23774:71;23842:1;23831:9;23827:17;23818:6;23774:71;:::i;:::-;23855:80;23931:2;23920:9;23916:18;23907:6;23855:80;:::i;:::-;23982:9;23976:4;23972:20;23967:2;23956:9;23952:18;23945:48;24010:108;24113:4;24104:6;24010:108;:::i;:::-;24002:116;;24128:72;24196:2;24185:9;24181:18;24172:6;24128:72;:::i;:::-;24210:73;24278:3;24267:9;24263:19;24254:6;24210:73;:::i;:::-;23727:563;;;;;;;;:::o;24296:442::-;24445:4;24483:2;24472:9;24468:18;24460:26;;24496:71;24564:1;24553:9;24549:17;24540:6;24496:71;:::i;:::-;24577:72;24645:2;24634:9;24630:18;24621:6;24577:72;:::i;:::-;24659;24727:2;24716:9;24712:18;24703:6;24659:72;:::i;:::-;24450:288;;;;;;:::o;24744:214::-;24833:4;24871:2;24860:9;24856:18;24848:26;;24884:67;24948:1;24937:9;24933:17;24924:6;24884:67;:::i;:::-;24838:120;;;;:::o;24964:132::-;25031:4;25054:3;25046:11;;25084:4;25079:3;25075:14;25067:22;;25036:60;;;:::o;25102:114::-;25169:6;25203:5;25197:12;25187:22;;25176:40;;;:::o;25222:99::-;25274:6;25308:5;25302:12;25292:22;;25281:40;;;:::o;25327:113::-;25397:4;25429;25424:3;25420:14;25412:22;;25402:38;;;:::o;25446:184::-;25545:11;25579:6;25574:3;25567:19;25619:4;25614:3;25610:14;25595:29;;25557:73;;;;:::o;25636:147::-;25737:11;25774:3;25759:18;;25749:34;;;;:::o;25789:169::-;25873:11;25907:6;25902:3;25895:19;25947:4;25942:3;25938:14;25923:29;;25885:73;;;;:::o;25964:305::-;26004:3;26023:20;26041:1;26023:20;:::i;:::-;26018:25;;26057:20;26075:1;26057:20;:::i;:::-;26052:25;;26211:1;26143:66;26139:74;26136:1;26133:81;26130:2;;;26217:18;;:::i;:::-;26130:2;26261:1;26258;26254:9;26247:16;;26008:261;;;;:::o;26275:185::-;26315:1;26332:20;26350:1;26332:20;:::i;:::-;26327:25;;26366:20;26384:1;26366:20;:::i;:::-;26361:25;;26405:1;26395:2;;26410:18;;:::i;:::-;26395:2;26452:1;26449;26445:9;26440:14;;26317:143;;;;:::o;26466:348::-;26506:7;26529:20;26547:1;26529:20;:::i;:::-;26524:25;;26563:20;26581:1;26563:20;:::i;:::-;26558:25;;26751:1;26683:66;26679:74;26676:1;26673:81;26668:1;26661:9;26654:17;26650:105;26647:2;;;26758:18;;:::i;:::-;26647:2;26806:1;26803;26799:9;26788:20;;26514:300;;;;:::o;26820:191::-;26860:4;26880:20;26898:1;26880:20;:::i;:::-;26875:25;;26914:20;26932:1;26914:20;:::i;:::-;26909:25;;26953:1;26950;26947:8;26944:2;;;26958:18;;:::i;:::-;26944:2;27003:1;27000;26996:9;26988:17;;26865:146;;;;:::o;27017:96::-;27054:7;27083:24;27101:5;27083:24;:::i;:::-;27072:35;;27062:51;;;:::o;27119:90::-;27153:7;27196:5;27189:13;27182:21;27171:32;;27161:48;;;:::o;27215:126::-;27252:7;27292:42;27285:5;27281:54;27270:65;;27260:81;;;:::o;27347:77::-;27384:7;27413:5;27402:16;;27392:32;;;:::o;27430:86::-;27465:7;27505:4;27498:5;27494:16;27483:27;;27473:43;;;:::o;27522:180::-;27599:9;27632:64;27690:5;27632:64;:::i;:::-;27619:77;;27609:93;;;:::o;27708:140::-;27785:9;27818:24;27836:5;27818:24;:::i;:::-;27805:37;;27795:53;;;:::o;27854:121::-;27912:9;27945:24;27963:5;27945:24;:::i;:::-;27932:37;;27922:53;;;:::o;27981:307::-;28049:1;28059:113;28073:6;28070:1;28067:13;28059:113;;;28158:1;28153:3;28149:11;28143:18;28139:1;28134:3;28130:11;28123:39;28095:2;28092:1;28088:10;28083:15;;28059:113;;;28190:6;28187:1;28184:13;28181:2;;;28270:1;28261:6;28256:3;28252:16;28245:27;28181:2;28030:258;;;;:::o;28294:320::-;28338:6;28375:1;28369:4;28365:12;28355:22;;28422:1;28416:4;28412:12;28443:18;28433:2;;28499:4;28491:6;28487:17;28477:27;;28433:2;28561;28553:6;28550:14;28530:18;28527:38;28524:2;;;28580:18;;:::i;:::-;28524:2;28345:269;;;;:::o;28620:180::-;28668:77;28665:1;28658:88;28765:4;28762:1;28755:15;28789:4;28786:1;28779:15;28806:180;28854:77;28851:1;28844:88;28951:4;28948:1;28941:15;28975:4;28972:1;28965:15;28992:180;29040:77;29037:1;29030:88;29137:4;29134:1;29127:15;29161:4;29158:1;29151:15;29178:102;29219:6;29270:2;29266:7;29261:2;29254:5;29250:14;29246:28;29236:38;;29226:54;;;:::o;29286:222::-;29426:34;29422:1;29414:6;29410:14;29403:58;29495:5;29490:2;29482:6;29478:15;29471:30;29392:116;:::o;29514:172::-;29654:24;29650:1;29642:6;29638:14;29631:48;29620:66;:::o;29692:225::-;29832:34;29828:1;29820:6;29816:14;29809:58;29901:8;29896:2;29888:6;29884:15;29877:33;29798:119;:::o;29923:221::-;30063:34;30059:1;30051:6;30047:14;30040:58;30132:4;30127:2;30119:6;30115:15;30108:29;30029:115;:::o;30150:223::-;30290:34;30286:1;30278:6;30274:14;30267:58;30359:6;30354:2;30346:6;30342:15;30335:31;30256:117;:::o;30379:244::-;30519:34;30515:1;30507:6;30503:14;30496:58;30588:27;30583:2;30575:6;30571:15;30564:52;30485:138;:::o;30629:225::-;30769:34;30765:1;30757:6;30753:14;30746:58;30838:8;30833:2;30825:6;30821:15;30814:33;30735:119;:::o;30860:241::-;31000:34;30996:1;30988:6;30984:14;30977:58;31069:24;31064:2;31056:6;31052:15;31045:49;30966:135;:::o;31107:240::-;31247:34;31243:1;31235:6;31231:14;31224:58;31316:23;31311:2;31303:6;31299:15;31292:48;31213:134;:::o;31353:297::-;31493:34;31489:1;31481:6;31477:14;31470:58;31562:34;31557:2;31549:6;31545:15;31538:59;31631:11;31626:2;31618:6;31614:15;31607:36;31459:191;:::o;31656:227::-;31796:34;31792:1;31784:6;31780:14;31773:58;31865:10;31860:2;31852:6;31848:15;31841:35;31762:121;:::o;31889:182::-;32029:34;32025:1;32017:6;32013:14;32006:58;31995:76;:::o;32077:224::-;32217:34;32213:1;32205:6;32201:14;32194:58;32286:7;32281:2;32273:6;32269:15;32262:32;32183:118;:::o;32307:114::-;32413:8;:::o;32427:223::-;32567:34;32563:1;32555:6;32551:14;32544:58;32636:6;32631:2;32623:6;32619:15;32612:31;32533:117;:::o;32656:169::-;32796:21;32792:1;32784:6;32780:14;32773:45;32762:63;:::o;32831:224::-;32971:34;32967:1;32959:6;32955:14;32948:58;33040:7;33035:2;33027:6;33023:15;33016:32;32937:118;:::o;33061:234::-;33201:34;33197:1;33189:6;33185:14;33178:58;33270:17;33265:2;33257:6;33253:15;33246:42;33167:128;:::o;33301:122::-;33374:24;33392:5;33374:24;:::i;:::-;33367:5;33364:35;33354:2;;33413:1;33410;33403:12;33354:2;33344:79;:::o;33429:116::-;33499:21;33514:5;33499:21;:::i;:::-;33492:5;33489:32;33479:2;;33535:1;33532;33525:12;33479:2;33469:76;:::o;33551:122::-;33624:24;33642:5;33624:24;:::i;:::-;33617:5;33614:35;33604:2;;33663:1;33660;33653:12;33604:2;33594:79;:::o

Swarm Source

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