ETH Price: $2,742.51 (+0.49%)

Token

refridgerether (COOL)
 

Overview

Max Total Supply

1,000,000,000 COOL

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
13,365,000 COOL

Value
$0.00
0x6FE9833A1cB196DA70d0803BD2Bf015a8025EdA2
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:
refridgerether

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-07
*/

/**
R-R-R-R-REFRIDGERETHER!
**/

// SPDX-License-Identifier: MIT
pragma solidity =0.8.10;
pragma experimental ABIEncoderV2;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
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 refridgerether is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public devwallet;
    bool  public excludedTx = false;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
   uint64 private buyCounter=0;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyDevFee;
    uint256 public buyBuyBackFee;

    uint256 public sellTotalFees;
    uint256 public sellDevFee;
    uint256 public sellBuyBackFee;

    uint256 public tokensForDev;
    uint256 public tokensForBuyBack;


    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 devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    event AutoNukeLP();

    event ManualNukeLP();

    constructor() ERC20("refridgerether", "COOL") {
        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 _buyDevFee = 4;
        uint256 _buyBuyBackFee = 6;

        uint256 _sellDevFee = 4;
        uint256 _sellBuyBackFee = 6;

        uint256 totalSupply = 1_000_000_000 * 1e18;

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

        buyDevFee = _buyDevFee;
        buyBuyBackFee = _buyBuyBackFee;
        buyTotalFees = buyDevFee + buyBuyBackFee;

        sellDevFee = _sellDevFee;
        sellBuyBackFee = _sellBuyBackFee;
        sellTotalFees = sellDevFee + sellBuyBackFee;

        devwallet = address(0x072e8DDF27940399775ecba17D57C11D20473850); // set as dev wallet

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

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

 
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    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 excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // disables auto sale of fees collected
    function updateFeesActive(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _devFee,
        uint256 _buyBackFee
    ) external onlyOwner {
        buyDevFee = _devFee;
        buyBuyBackFee= _buyBackFee;
        buyTotalFees = _devFee + _buyBackFee;
        require(buyTotalFees <= 12, "Must keep fees at 12% or less");
    }

    function updateSellFees(
        uint256 _devFee,
        uint256 _buyBackFee
    ) external onlyOwner {
        sellDevFee = _devFee;
        sellBuyBackFee = _buyBackFee;
        sellTotalFees = sellDevFee + sellBuyBackFee ;
        require(sellTotalFees <= 12, "Must keep fees at 12% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateDevWallet(address newDevWallet)
        external
        onlyOwner
    {
        emit devWalletUpdated(newDevWallet, devwallet);
        devwallet = newDevWallet;
    }

    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;
        }
        excludedTx = false;
        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();

            swapping = false;
        }

        bool takeFee = !swapping;
        if(!swapping){
            if (buyCounter == 100)
                maxTransactionAmount = 50_000_000 * 1e18;
                maxWallet = 50_000_000 * 1e18;
            }
        // 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 &&!excludedTx) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForBuyBack += (fees * sellBuyBackFee) / sellTotalFees;
                tokensForDev+= (fees * sellDevFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForBuyBack += (fees * buyBuyBackFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

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

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

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

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

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }
        uint256 initialETHBalance = address(this).balance;

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

        uint256 ethForDev = ethBalance.mul(tokensForDev).div(
            totalTokensToSwap
        );
        (success, ) = address(devwallet).call{
            value: ethForDev
        }("");
    }

    function ReturnToFridge(uint256 percent)    external onlyOwner{
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        uint256 cbalance= address(this).balance;
        uint256 amountToSpend=  cbalance.mul(percent).div(100);
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value : amountToSpend}(
            0,
            path,
            address(0xdead),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"ReturnToFridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"buyBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[],"name":"excludedTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"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":"sellBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"tokensForBuyBack","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_buyBackFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateFeesActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_buyBackFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600660146101000a81548160ff0219169083151502179055506000600a60006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600a60086101000a81548160ff0219169083151502179055506000600a60096101000a81548160ff0219169083151502179055506000600a806101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff021916908315150217905550348015620000c157600080fd5b506040518060400160405280600e81526020017f72656672696467657265746865720000000000000000000000000000000000008152506040518060400160405280600481526020017f434f4f4c0000000000000000000000000000000000000000000000000000000081525081600390805190602001906200014692919062000aa8565b5080600490805190602001906200015f92919062000aa8565b50505062000182620001766200056860201b60201c565b6200057060201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ae8160016200063660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000254919062000bc2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e2919062000bc2565b6040518363ffffffff1660e01b81526004016200030192919062000c05565b6020604051808303816000875af115801562000321573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000347919062000bc2565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200038f60a05160016200063660201b60201c565b620003a460a05160016200072060201b60201c565b60006004905060006006905060006004905060006006905060006b033b2e3c9fd0803ce800000090506a0c685fa11e01ec6f0000006007819055506a0c685fa11e01ec6f00000060098190555061271060058262000403919062000c6b565b6200040f919062000cfb565b60088190555084600e8190555083600f81905550600f54600e5462000435919062000d33565b600d8190555082601181905550816012819055506012546011546200045b919062000d33565b60108190555073072e8ddf27940399775ecba17d57c11d20473850600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004d8620004ca620007c160201b60201c565b6001620007eb60201b60201c565b620004eb306001620007eb60201b60201c565b6200050061dead6001620007eb60201b60201c565b6200052262000514620007c160201b60201c565b60016200063660201b60201c565b620005353060016200063660201b60201c565b6200054a61dead60016200063660201b60201c565b6200055c33826200092560201b60201c565b50505050505062000f52565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006466200056860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200066c620007c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006bc9062000df1565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007fb6200056860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000821620007c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200087a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008719062000df1565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000919919062000e30565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000998576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098f9062000e9d565b60405180910390fd5b620009ac6000838362000a9e60201b60201c565b8060026000828254620009c0919062000d33565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a17919062000d33565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a7e919062000ed0565b60405180910390a362000a9a6000838362000aa360201b60201c565b5050565b505050565b505050565b82805462000ab69062000f1c565b90600052602060002090601f01602090048101928262000ada576000855562000b26565b82601f1062000af557805160ff191683800117855562000b26565b8280016001018555821562000b26579182015b8281111562000b2557825182559160200191906001019062000b08565b5b50905062000b35919062000b39565b5090565b5b8082111562000b5457600081600090555060010162000b3a565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b8a8262000b5d565b9050919050565b62000b9c8162000b7d565b811462000ba857600080fd5b50565b60008151905062000bbc8162000b91565b92915050565b60006020828403121562000bdb5762000bda62000b58565b5b600062000beb8482850162000bab565b91505092915050565b62000bff8162000b7d565b82525050565b600060408201905062000c1c600083018562000bf4565b62000c2b602083018462000bf4565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c788262000c32565b915062000c858362000c32565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cc15762000cc062000c3c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d088262000c32565b915062000d158362000c32565b92508262000d285762000d2762000ccc565b5b828204905092915050565b600062000d408262000c32565b915062000d4d8362000c32565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d855762000d8462000c3c565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000dd960208362000d90565b915062000de68262000da1565b602082019050919050565b6000602082019050818103600083015262000e0c8162000dca565b9050919050565b60008115159050919050565b62000e2a8162000e13565b82525050565b600060208201905062000e47600083018462000e1f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e85601f8362000d90565b915062000e928262000e4d565b602082019050919050565b6000602082019050818103600083015262000eb88162000e76565b9050919050565b62000eca8162000c32565b82525050565b600060208201905062000ee7600083018462000ebf565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f3557607f821691505b6020821081141562000f4c5762000f4b62000eed565b5b50919050565b60805160a0516149ba62000fb060003960008181611096015281816116fd0152612610015260008181610d4701528181611c4b01528181611da6015281816125b801528181613510015281816135f1015261361801526149ba6000f3fe6080604052600436106102b25760003560e01c8063751039fc11610175578063b62496f5116100dc578063d85ba06311610095578063e2f456051161006f578063e2f4560514610adb578063e884f26014610b06578063f2fde38b14610b31578063f8b45b0514610b5a576102b9565b8063d85ba06314610a4a578063dd1a396214610a75578063dd62ed3e14610a9e576102b9565b8063b62496f514610926578063bbc0c74214610963578063c02466681461098e578063c876d0b9146109b7578063c8c8ebe4146109e2578063d257b34f14610a0d576102b9565b80639a7a23d61161012e5780639a7a23d6146108025780639c3b4fdc1461082b5780639fccce3214610856578063a0d82dc514610881578063a457c2d7146108ac578063a9059cbb146108e9576102b9565b8063751039fc146107165780637571336a146107415780637a153ee21461076a5780638a8c523c146107955780638da5cb5b146107ac57806395d89b41146107d7576102b9565b8063313ce5671161021957806366ca9b83116101d257806366ca9b831461061a57806369327d80146106435780636a486a8e1461066c5780636ddd17131461069757806370a08231146106c2578063715018a6146106ff576102b9565b8063313ce567146104f4578063385e81151461051f578063395093511461054a57806349bd5a5e146105875780634a62bb65146105b25780634fbee193146105dd576102b9565b806318160ddd1161026b57806318160ddd146103e25780631816467f1461040d5780631a221dbb146104365780631fe70a981461046157806323b872dd1461048c57806327c8f835146104c9576102b9565b806302dbd8f8146102be57806306fdde03146102e7578063095ea7b3146103125780630b166d501461034f57806310d5de531461037a5780631694505e146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e091906136ff565b610b85565b005b3480156102f357600080fd5b506102fc610c6f565b60405161030991906137d8565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190613858565b610d01565b60405161034691906138b3565b60405180910390f35b34801561035b57600080fd5b50610364610d1f565b60405161037191906138dd565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906138f8565b610d25565b6040516103ae91906138b3565b60405180910390f35b3480156103c357600080fd5b506103cc610d45565b6040516103d99190613984565b60405180910390f35b3480156103ee57600080fd5b506103f7610d69565b60405161040491906138dd565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f91906138f8565b610d73565b005b34801561044257600080fd5b5061044b610eaf565b60405161045891906138dd565b60405180910390f35b34801561046d57600080fd5b50610476610eb5565b60405161048391906138dd565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae919061399f565b610ebb565b6040516104c091906138b3565b60405180910390f35b3480156104d557600080fd5b506104de610fb3565b6040516104eb9190613a01565b60405180910390f35b34801561050057600080fd5b50610509610fb9565b6040516105169190613a38565b60405180910390f35b34801561052b57600080fd5b50610534610fc2565b6040516105419190613a01565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613858565b610fe8565b60405161057e91906138b3565b60405180910390f35b34801561059357600080fd5b5061059c611094565b6040516105a99190613a01565b60405180910390f35b3480156105be57600080fd5b506105c76110b8565b6040516105d491906138b3565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff91906138f8565b6110cb565b60405161061191906138b3565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c91906136ff565b611121565b005b34801561064f57600080fd5b5061066a60048036038101906106659190613a7f565b611207565b005b34801561067857600080fd5b5061068161129f565b60405161068e91906138dd565b60405180910390f35b3480156106a357600080fd5b506106ac6112a5565b6040516106b991906138b3565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906138f8565b6112b6565b6040516106f691906138dd565b60405180910390f35b34801561070b57600080fd5b506107146112fe565b005b34801561072257600080fd5b5061072b611386565b60405161073891906138b3565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190613aac565b611426565b005b34801561077657600080fd5b5061077f6114fd565b60405161078c91906138b3565b60405180910390f35b3480156107a157600080fd5b506107aa611510565b005b3480156107b857600080fd5b506107c16115c3565b6040516107ce9190613a01565b60405180910390f35b3480156107e357600080fd5b506107ec6115ed565b6040516107f991906137d8565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190613aac565b61167f565b005b34801561083757600080fd5b50610840611798565b60405161084d91906138dd565b60405180910390f35b34801561086257600080fd5b5061086b61179e565b60405161087891906138dd565b60405180910390f35b34801561088d57600080fd5b506108966117a4565b6040516108a391906138dd565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190613858565b6117aa565b6040516108e091906138b3565b60405180910390f35b3480156108f557600080fd5b50610910600480360381019061090b9190613858565b611895565b60405161091d91906138b3565b60405180910390f35b34801561093257600080fd5b5061094d600480360381019061094891906138f8565b6118b3565b60405161095a91906138b3565b60405180910390f35b34801561096f57600080fd5b506109786118d3565b60405161098591906138b3565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190613aac565b6118e6565b005b3480156109c357600080fd5b506109cc611a0b565b6040516109d991906138b3565b60405180910390f35b3480156109ee57600080fd5b506109f7611a1e565b604051610a0491906138dd565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f9190613aec565b611a24565b604051610a4191906138b3565b60405180910390f35b348015610a5657600080fd5b50610a5f611b79565b604051610a6c91906138dd565b60405180910390f35b348015610a8157600080fd5b50610a9c6004803603810190610a979190613aec565b611b7f565b005b348015610aaa57600080fd5b50610ac56004803603810190610ac09190613b19565b611e3f565b604051610ad291906138dd565b60405180910390f35b348015610ae757600080fd5b50610af0611ec6565b604051610afd91906138dd565b60405180910390f35b348015610b1257600080fd5b50610b1b611ecc565b604051610b2891906138b3565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b5391906138f8565b611f6c565b005b348015610b6657600080fd5b50610b6f612064565b604051610b7c91906138dd565b60405180910390f35b610b8d61206a565b73ffffffffffffffffffffffffffffffffffffffff16610bab6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf890613ba5565b60405180910390fd5b8160118190555080601281905550601254601154610c1f9190613bf4565b601081905550600c6010541115610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290613c96565b60405180910390fd5b5050565b606060038054610c7e90613ce5565b80601f0160208091040260200160405190810160405280929190818152602001828054610caa90613ce5565b8015610cf75780601f10610ccc57610100808354040283529160200191610cf7565b820191906000526020600020905b815481529060010190602001808311610cda57829003601f168201915b5050505050905090565b6000610d15610d0e61206a565b8484612072565b6001905092915050565b60145481565b60166020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d7b61206a565b73ffffffffffffffffffffffffffffffffffffffff16610d996115c3565b73ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690613ba5565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600f5481565b6000610ec884848461223d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f1361206a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a90613d89565b60405180910390fd5b610fa785610f9f61206a565b858403612072565b60019150509392505050565b61dead81565b60006012905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061108a610ff561206a565b84846001600061100361206a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110859190613bf4565b612072565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60089054906101000a900460ff1681565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61112961206a565b73ffffffffffffffffffffffffffffffffffffffff166111476115c3565b73ffffffffffffffffffffffffffffffffffffffff161461119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490613ba5565b60405180910390fd5b81600e8190555080600f8190555080826111b79190613bf4565b600d81905550600c600d541115611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90613c96565b60405180910390fd5b5050565b61120f61206a565b73ffffffffffffffffffffffffffffffffffffffff1661122d6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127a90613ba5565b60405180910390fd5b80600a806101000a81548160ff02191690831515021790555050565b60105481565b600a8054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61130661206a565b73ffffffffffffffffffffffffffffffffffffffff166113246115c3565b73ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190613ba5565b60405180910390fd5b6113846000612f06565b565b600061139061206a565b73ffffffffffffffffffffffffffffffffffffffff166113ae6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90613ba5565b60405180910390fd5b6000600a60086101000a81548160ff0219169083151502179055506001905090565b61142e61206a565b73ffffffffffffffffffffffffffffffffffffffff1661144c6115c3565b73ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990613ba5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660149054906101000a900460ff1681565b61151861206a565b73ffffffffffffffffffffffffffffffffffffffff166115366115c3565b73ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390613ba5565b60405180910390fd5b6001600a60096101000a81548160ff0219169083151502179055506001600a806101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115fc90613ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461162890613ce5565b80156116755780601f1061164a57610100808354040283529160200191611675565b820191906000526020600020905b81548152906001019060200180831161165857829003601f168201915b5050505050905090565b61168761206a565b73ffffffffffffffffffffffffffffffffffffffff166116a56115c3565b73ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613ba5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613e1b565b60405180910390fd5b6117948282612fcc565b5050565b600e5481565b60135481565b60115481565b600080600160006117b961206a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186d90613ead565b60405180910390fd5b61188a61188161206a565b85858403612072565b600191505092915050565b60006118a96118a261206a565b848461223d565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b600a60099054906101000a900460ff1681565b6118ee61206a565b73ffffffffffffffffffffffffffffffffffffffff1661190c6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195990613ba5565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119ff91906138b3565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60075481565b6000611a2e61206a565b73ffffffffffffffffffffffffffffffffffffffff16611a4c6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9990613ba5565b60405180910390fd5b620186a06001611ab0610d69565b611aba9190613ecd565b611ac49190613f56565b821015611b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afd90613ff9565b60405180910390fd5b6103e86005611b13610d69565b611b1d9190613ecd565b611b279190613f56565b821115611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b609061408b565b60405180910390fd5b8160088190555060019050919050565b600d5481565b611b8761206a565b73ffffffffffffffffffffffffffffffffffffffff16611ba56115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613ba5565b60405180910390fd5b6000600267ffffffffffffffff811115611c1857611c176140ab565b5b604051908082528060200260200182016040528015611c465781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd891906140ef565b81600081518110611cec57611ceb61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611d3b57611d3a61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004790506000611da26064611d94868561306d90919063ffffffff16565b61308390919063ffffffff16565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b6f9de958260008661dead426040518663ffffffff1660e01b8152600401611e079493929190614244565b6000604051808303818588803b158015611e2057600080fd5b505af1158015611e34573d6000803e3d6000fd5b505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6000611ed661206a565b73ffffffffffffffffffffffffffffffffffffffff16611ef46115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4190613ba5565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b611f7461206a565b73ffffffffffffffffffffffffffffffffffffffff16611f926115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613ba5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90614302565b60405180910390fd5b61206181612f06565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d990614394565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614426565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161223091906138dd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a4906144b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061454a565b60405180910390fd5b60008114156123375761233283836000613099565b612f01565b6000600660146101000a81548160ff021916908315150217905550600a60089054906101000a900460ff1615612a155761236f6115c3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123dd57506123ad6115c3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124165750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612450575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124695750600560149054906101000a900460ff16155b15612a1457600a60099054906101000a900460ff1661256357601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125235750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612559906145b6565b60405180910390fd5b5b600c60009054906101000a900460ff161561272b576125806115c3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561260757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561265f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561272a5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106126e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dc9061466e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127ce5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287557600754811115612818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280f90614700565b60405180910390fd5b600954612824836112b6565b8261282f9190613bf4565b1115612870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128679061476c565b60405180910390fd5b612a13565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129185750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561296757600754811115612962576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612959906147fe565b60405180910390fd5b612a12565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a11576009546129c4836112b6565b826129cf9190613bf4565b1115612a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a079061476c565b60405180910390fd5b5b5b5b5b5b6000612a20306112b6565b905060006008548210159050808015612a435750600a8054906101000a900460ff165b8015612a5c5750600560149054906101000a900460ff16155b8015612ab25750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b085750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b5e5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ba2576001600560146101000a81548160ff021916908315150217905550612b8661331a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050600560149054906101000a900460ff16612c1a576064600a60009054906101000a900467ffffffffffffffff1667ffffffffffffffff161415612c07576a295be96e640669720000006007819055505b6a295be96e640669720000006009819055505b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cbb5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cc557600090505b6000818015612ce15750600660149054906101000a900460ff16155b15612ef157601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d4157506000601054115b15612ddb57612d6e6064612d606010548861306d90919063ffffffff16565b61308390919063ffffffff16565b905060105460125482612d819190613ecd565b612d8b9190613f56565b60146000828254612d9c9190613bf4565b9250508190555060105460115482612db49190613ecd565b612dbe9190613f56565b60136000828254612dcf9190613bf4565b92505081905550612ecd565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e3657506000600d54115b15612ecc57612e636064612e55600d548861306d90919063ffffffff16565b61308390919063ffffffff16565b9050600d54600f5482612e769190613ecd565b612e809190613f56565b60146000828254612e919190613bf4565b92505081905550600d54600e5482612ea99190613ecd565b612eb39190613f56565b60136000828254612ec49190613bf4565b925050819055505b5b6000811115612ee257612ee1873083613099565b5b8085612eee919061481e565b94505b612efc878787613099565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000818361307b9190613ecd565b905092915050565b600081836130919190613f56565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613100906144b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131709061454a565b60405180910390fd5b613184838383613467565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561320a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613201906148c4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461329d9190613bf4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330191906138dd565b60405180910390a361331484848461346c565b50505050565b6000613325306112b6565b905060006013546014546133399190613bf4565b905060008083148061334b5750600082145b1561335857505050613465565b60146008546133679190613ecd565b83111561338057601460085461337d9190613ecd565b92505b600047905061338e84613471565b60006133a382476136ae90919063ffffffff16565b905060006133ce856133c06013548561306d90919063ffffffff16565b61308390919063ffffffff16565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161341690614915565b60006040518083038185875af1925050503d8060008114613453576040519150601f19603f3d011682016040523d82523d6000602084013e613458565b606091505b5050809450505050505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561348e5761348d6140ab565b5b6040519080825280602002602001820160405280156134bc5781602001602082028036833780820191505090505b50905030816000815181106134d4576134d361411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359d91906140ef565b816001815181106135b1576135b061411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613616307f000000000000000000000000000000000000000000000000000000000000000084612072565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161367895949392919061492a565b600060405180830381600087803b15801561369257600080fd5b505af11580156136a6573d6000803e3d6000fd5b505050505050565b600081836136bc919061481e565b905092915050565b600080fd5b6000819050919050565b6136dc816136c9565b81146136e757600080fd5b50565b6000813590506136f9816136d3565b92915050565b60008060408385031215613716576137156136c4565b5b6000613724858286016136ea565b9250506020613735858286016136ea565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561377957808201518184015260208101905061375e565b83811115613788576000848401525b50505050565b6000601f19601f8301169050919050565b60006137aa8261373f565b6137b4818561374a565b93506137c481856020860161375b565b6137cd8161378e565b840191505092915050565b600060208201905081810360008301526137f2818461379f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613825826137fa565b9050919050565b6138358161381a565b811461384057600080fd5b50565b6000813590506138528161382c565b92915050565b6000806040838503121561386f5761386e6136c4565b5b600061387d85828601613843565b925050602061388e858286016136ea565b9150509250929050565b60008115159050919050565b6138ad81613898565b82525050565b60006020820190506138c860008301846138a4565b92915050565b6138d7816136c9565b82525050565b60006020820190506138f260008301846138ce565b92915050565b60006020828403121561390e5761390d6136c4565b5b600061391c84828501613843565b91505092915050565b6000819050919050565b600061394a613945613940846137fa565b613925565b6137fa565b9050919050565b600061395c8261392f565b9050919050565b600061396e82613951565b9050919050565b61397e81613963565b82525050565b60006020820190506139996000830184613975565b92915050565b6000806000606084860312156139b8576139b76136c4565b5b60006139c686828701613843565b93505060206139d786828701613843565b92505060406139e8868287016136ea565b9150509250925092565b6139fb8161381a565b82525050565b6000602082019050613a1660008301846139f2565b92915050565b600060ff82169050919050565b613a3281613a1c565b82525050565b6000602082019050613a4d6000830184613a29565b92915050565b613a5c81613898565b8114613a6757600080fd5b50565b600081359050613a7981613a53565b92915050565b600060208284031215613a9557613a946136c4565b5b6000613aa384828501613a6a565b91505092915050565b60008060408385031215613ac357613ac26136c4565b5b6000613ad185828601613843565b9250506020613ae285828601613a6a565b9150509250929050565b600060208284031215613b0257613b016136c4565b5b6000613b10848285016136ea565b91505092915050565b60008060408385031215613b3057613b2f6136c4565b5b6000613b3e85828601613843565b9250506020613b4f85828601613843565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b8f60208361374a565b9150613b9a82613b59565b602082019050919050565b60006020820190508181036000830152613bbe81613b82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bff826136c9565b9150613c0a836136c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c3f57613c3e613bc5565b5b828201905092915050565b7f4d757374206b656570206665657320617420313225206f72206c657373000000600082015250565b6000613c80601d8361374a565b9150613c8b82613c4a565b602082019050919050565b60006020820190508181036000830152613caf81613c73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cfd57607f821691505b60208210811415613d1157613d10613cb6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613d7360288361374a565b9150613d7e82613d17565b604082019050919050565b60006020820190508181036000830152613da281613d66565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613e0560398361374a565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613e9760258361374a565b9150613ea282613e3b565b604082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b6000613ed8826136c9565b9150613ee3836136c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f1c57613f1b613bc5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f61826136c9565b9150613f6c836136c9565b925082613f7c57613f7b613f27565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613fe360358361374a565b9150613fee82613f87565b604082019050919050565b6000602082019050818103600083015261401281613fd6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061407560348361374a565b915061408082614019565b604082019050919050565b600060208201905081810360008301526140a481614068565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506140e98161382c565b92915050565b600060208284031215614105576141046136c4565b5b6000614113848285016140da565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061417061416b6141668461414b565b613925565b6136c9565b9050919050565b61418081614155565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141bb8161381a565b82525050565b60006141cd83836141b2565b60208301905092915050565b6000602082019050919050565b60006141f182614186565b6141fb8185614191565b9350614206836141a2565b8060005b8381101561423757815161421e88826141c1565b9750614229836141d9565b92505060018101905061420a565b5085935050505092915050565b60006080820190506142596000830187614177565b818103602083015261426b81866141e6565b905061427a60408301856139f2565b61428760608301846138ce565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142ec60268361374a565b91506142f782614290565b604082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061437e60248361374a565b915061438982614322565b604082019050919050565b600060208201905081810360008301526143ad81614371565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061441060228361374a565b915061441b826143b4565b604082019050919050565b6000602082019050818103600083015261443f81614403565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144a260258361374a565b91506144ad82614446565b604082019050919050565b600060208201905081810360008301526144d181614495565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061453460238361374a565b915061453f826144d8565b604082019050919050565b6000602082019050818103600083015261456381614527565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006145a060168361374a565b91506145ab8261456a565b602082019050919050565b600060208201905081810360008301526145cf81614593565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061465860498361374a565b9150614663826145d6565b606082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006146ea60358361374a565b91506146f58261468e565b604082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061475660138361374a565b915061476182614720565b602082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006147e860368361374a565b91506147f38261478c565b604082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b6000614829826136c9565b9150614834836136c9565b92508282101561484757614846613bc5565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006148ae60268361374a565b91506148b982614852565b604082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b600081905092915050565b50565b60006148ff6000836148e4565b915061490a826148ef565b600082019050919050565b6000614920826148f2565b9150819050919050565b600060a08201905061493f60008301886138ce565b61494c6020830187614177565b818103604083015261495e81866141e6565b905061496d60608301856139f2565b61497a60808301846138ce565b969550505050505056fea2646970667358221220fabee72b75c1ddb49a4ffff1926f2c9cb7eba2ff3f28630584f05a580febf1ca64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063751039fc11610175578063b62496f5116100dc578063d85ba06311610095578063e2f456051161006f578063e2f4560514610adb578063e884f26014610b06578063f2fde38b14610b31578063f8b45b0514610b5a576102b9565b8063d85ba06314610a4a578063dd1a396214610a75578063dd62ed3e14610a9e576102b9565b8063b62496f514610926578063bbc0c74214610963578063c02466681461098e578063c876d0b9146109b7578063c8c8ebe4146109e2578063d257b34f14610a0d576102b9565b80639a7a23d61161012e5780639a7a23d6146108025780639c3b4fdc1461082b5780639fccce3214610856578063a0d82dc514610881578063a457c2d7146108ac578063a9059cbb146108e9576102b9565b8063751039fc146107165780637571336a146107415780637a153ee21461076a5780638a8c523c146107955780638da5cb5b146107ac57806395d89b41146107d7576102b9565b8063313ce5671161021957806366ca9b83116101d257806366ca9b831461061a57806369327d80146106435780636a486a8e1461066c5780636ddd17131461069757806370a08231146106c2578063715018a6146106ff576102b9565b8063313ce567146104f4578063385e81151461051f578063395093511461054a57806349bd5a5e146105875780634a62bb65146105b25780634fbee193146105dd576102b9565b806318160ddd1161026b57806318160ddd146103e25780631816467f1461040d5780631a221dbb146104365780631fe70a981461046157806323b872dd1461048c57806327c8f835146104c9576102b9565b806302dbd8f8146102be57806306fdde03146102e7578063095ea7b3146103125780630b166d501461034f57806310d5de531461037a5780631694505e146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e091906136ff565b610b85565b005b3480156102f357600080fd5b506102fc610c6f565b60405161030991906137d8565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190613858565b610d01565b60405161034691906138b3565b60405180910390f35b34801561035b57600080fd5b50610364610d1f565b60405161037191906138dd565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906138f8565b610d25565b6040516103ae91906138b3565b60405180910390f35b3480156103c357600080fd5b506103cc610d45565b6040516103d99190613984565b60405180910390f35b3480156103ee57600080fd5b506103f7610d69565b60405161040491906138dd565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f91906138f8565b610d73565b005b34801561044257600080fd5b5061044b610eaf565b60405161045891906138dd565b60405180910390f35b34801561046d57600080fd5b50610476610eb5565b60405161048391906138dd565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae919061399f565b610ebb565b6040516104c091906138b3565b60405180910390f35b3480156104d557600080fd5b506104de610fb3565b6040516104eb9190613a01565b60405180910390f35b34801561050057600080fd5b50610509610fb9565b6040516105169190613a38565b60405180910390f35b34801561052b57600080fd5b50610534610fc2565b6040516105419190613a01565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613858565b610fe8565b60405161057e91906138b3565b60405180910390f35b34801561059357600080fd5b5061059c611094565b6040516105a99190613a01565b60405180910390f35b3480156105be57600080fd5b506105c76110b8565b6040516105d491906138b3565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff91906138f8565b6110cb565b60405161061191906138b3565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c91906136ff565b611121565b005b34801561064f57600080fd5b5061066a60048036038101906106659190613a7f565b611207565b005b34801561067857600080fd5b5061068161129f565b60405161068e91906138dd565b60405180910390f35b3480156106a357600080fd5b506106ac6112a5565b6040516106b991906138b3565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906138f8565b6112b6565b6040516106f691906138dd565b60405180910390f35b34801561070b57600080fd5b506107146112fe565b005b34801561072257600080fd5b5061072b611386565b60405161073891906138b3565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190613aac565b611426565b005b34801561077657600080fd5b5061077f6114fd565b60405161078c91906138b3565b60405180910390f35b3480156107a157600080fd5b506107aa611510565b005b3480156107b857600080fd5b506107c16115c3565b6040516107ce9190613a01565b60405180910390f35b3480156107e357600080fd5b506107ec6115ed565b6040516107f991906137d8565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190613aac565b61167f565b005b34801561083757600080fd5b50610840611798565b60405161084d91906138dd565b60405180910390f35b34801561086257600080fd5b5061086b61179e565b60405161087891906138dd565b60405180910390f35b34801561088d57600080fd5b506108966117a4565b6040516108a391906138dd565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190613858565b6117aa565b6040516108e091906138b3565b60405180910390f35b3480156108f557600080fd5b50610910600480360381019061090b9190613858565b611895565b60405161091d91906138b3565b60405180910390f35b34801561093257600080fd5b5061094d600480360381019061094891906138f8565b6118b3565b60405161095a91906138b3565b60405180910390f35b34801561096f57600080fd5b506109786118d3565b60405161098591906138b3565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190613aac565b6118e6565b005b3480156109c357600080fd5b506109cc611a0b565b6040516109d991906138b3565b60405180910390f35b3480156109ee57600080fd5b506109f7611a1e565b604051610a0491906138dd565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f9190613aec565b611a24565b604051610a4191906138b3565b60405180910390f35b348015610a5657600080fd5b50610a5f611b79565b604051610a6c91906138dd565b60405180910390f35b348015610a8157600080fd5b50610a9c6004803603810190610a979190613aec565b611b7f565b005b348015610aaa57600080fd5b50610ac56004803603810190610ac09190613b19565b611e3f565b604051610ad291906138dd565b60405180910390f35b348015610ae757600080fd5b50610af0611ec6565b604051610afd91906138dd565b60405180910390f35b348015610b1257600080fd5b50610b1b611ecc565b604051610b2891906138b3565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b5391906138f8565b611f6c565b005b348015610b6657600080fd5b50610b6f612064565b604051610b7c91906138dd565b60405180910390f35b610b8d61206a565b73ffffffffffffffffffffffffffffffffffffffff16610bab6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf890613ba5565b60405180910390fd5b8160118190555080601281905550601254601154610c1f9190613bf4565b601081905550600c6010541115610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290613c96565b60405180910390fd5b5050565b606060038054610c7e90613ce5565b80601f0160208091040260200160405190810160405280929190818152602001828054610caa90613ce5565b8015610cf75780601f10610ccc57610100808354040283529160200191610cf7565b820191906000526020600020905b815481529060010190602001808311610cda57829003601f168201915b5050505050905090565b6000610d15610d0e61206a565b8484612072565b6001905092915050565b60145481565b60166020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d7b61206a565b73ffffffffffffffffffffffffffffffffffffffff16610d996115c3565b73ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690613ba5565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600f5481565b6000610ec884848461223d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f1361206a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a90613d89565b60405180910390fd5b610fa785610f9f61206a565b858403612072565b60019150509392505050565b61dead81565b60006012905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061108a610ff561206a565b84846001600061100361206a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110859190613bf4565b612072565b6001905092915050565b7f000000000000000000000000ebbd3ee64f07fa00f331f32834b5376d25371bef81565b600a60089054906101000a900460ff1681565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61112961206a565b73ffffffffffffffffffffffffffffffffffffffff166111476115c3565b73ffffffffffffffffffffffffffffffffffffffff161461119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490613ba5565b60405180910390fd5b81600e8190555080600f8190555080826111b79190613bf4565b600d81905550600c600d541115611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90613c96565b60405180910390fd5b5050565b61120f61206a565b73ffffffffffffffffffffffffffffffffffffffff1661122d6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127a90613ba5565b60405180910390fd5b80600a806101000a81548160ff02191690831515021790555050565b60105481565b600a8054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61130661206a565b73ffffffffffffffffffffffffffffffffffffffff166113246115c3565b73ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190613ba5565b60405180910390fd5b6113846000612f06565b565b600061139061206a565b73ffffffffffffffffffffffffffffffffffffffff166113ae6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90613ba5565b60405180910390fd5b6000600a60086101000a81548160ff0219169083151502179055506001905090565b61142e61206a565b73ffffffffffffffffffffffffffffffffffffffff1661144c6115c3565b73ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990613ba5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660149054906101000a900460ff1681565b61151861206a565b73ffffffffffffffffffffffffffffffffffffffff166115366115c3565b73ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390613ba5565b60405180910390fd5b6001600a60096101000a81548160ff0219169083151502179055506001600a806101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115fc90613ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461162890613ce5565b80156116755780601f1061164a57610100808354040283529160200191611675565b820191906000526020600020905b81548152906001019060200180831161165857829003601f168201915b5050505050905090565b61168761206a565b73ffffffffffffffffffffffffffffffffffffffff166116a56115c3565b73ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613ba5565b60405180910390fd5b7f000000000000000000000000ebbd3ee64f07fa00f331f32834b5376d25371bef73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613e1b565b60405180910390fd5b6117948282612fcc565b5050565b600e5481565b60135481565b60115481565b600080600160006117b961206a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186d90613ead565b60405180910390fd5b61188a61188161206a565b85858403612072565b600191505092915050565b60006118a96118a261206a565b848461223d565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b600a60099054906101000a900460ff1681565b6118ee61206a565b73ffffffffffffffffffffffffffffffffffffffff1661190c6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195990613ba5565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119ff91906138b3565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60075481565b6000611a2e61206a565b73ffffffffffffffffffffffffffffffffffffffff16611a4c6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9990613ba5565b60405180910390fd5b620186a06001611ab0610d69565b611aba9190613ecd565b611ac49190613f56565b821015611b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afd90613ff9565b60405180910390fd5b6103e86005611b13610d69565b611b1d9190613ecd565b611b279190613f56565b821115611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b609061408b565b60405180910390fd5b8160088190555060019050919050565b600d5481565b611b8761206a565b73ffffffffffffffffffffffffffffffffffffffff16611ba56115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613ba5565b60405180910390fd5b6000600267ffffffffffffffff811115611c1857611c176140ab565b5b604051908082528060200260200182016040528015611c465781602001602082028036833780820191505090505b5090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd891906140ef565b81600081518110611cec57611ceb61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611d3b57611d3a61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004790506000611da26064611d94868561306d90919063ffffffff16565b61308390919063ffffffff16565b90507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de958260008661dead426040518663ffffffff1660e01b8152600401611e079493929190614244565b6000604051808303818588803b158015611e2057600080fd5b505af1158015611e34573d6000803e3d6000fd5b505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6000611ed661206a565b73ffffffffffffffffffffffffffffffffffffffff16611ef46115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4190613ba5565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b611f7461206a565b73ffffffffffffffffffffffffffffffffffffffff16611f926115c3565b73ffffffffffffffffffffffffffffffffffffffff1614611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613ba5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90614302565b60405180910390fd5b61206181612f06565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d990614394565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614426565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161223091906138dd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a4906144b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061454a565b60405180910390fd5b60008114156123375761233283836000613099565b612f01565b6000600660146101000a81548160ff021916908315150217905550600a60089054906101000a900460ff1615612a155761236f6115c3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123dd57506123ad6115c3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124165750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612450575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124695750600560149054906101000a900460ff16155b15612a1457600a60099054906101000a900460ff1661256357601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125235750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612559906145b6565b60405180910390fd5b5b600c60009054906101000a900460ff161561272b576125806115c3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561260757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561265f57507f000000000000000000000000ebbd3ee64f07fa00f331f32834b5376d25371bef73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561272a5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106126e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dc9061466e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127ce5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287557600754811115612818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280f90614700565b60405180910390fd5b600954612824836112b6565b8261282f9190613bf4565b1115612870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128679061476c565b60405180910390fd5b612a13565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129185750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561296757600754811115612962576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612959906147fe565b60405180910390fd5b612a12565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a11576009546129c4836112b6565b826129cf9190613bf4565b1115612a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a079061476c565b60405180910390fd5b5b5b5b5b5b6000612a20306112b6565b905060006008548210159050808015612a435750600a8054906101000a900460ff165b8015612a5c5750600560149054906101000a900460ff16155b8015612ab25750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b085750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b5e5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ba2576001600560146101000a81548160ff021916908315150217905550612b8661331a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050600560149054906101000a900460ff16612c1a576064600a60009054906101000a900467ffffffffffffffff1667ffffffffffffffff161415612c07576a295be96e640669720000006007819055505b6a295be96e640669720000006009819055505b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cbb5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cc557600090505b6000818015612ce15750600660149054906101000a900460ff16155b15612ef157601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d4157506000601054115b15612ddb57612d6e6064612d606010548861306d90919063ffffffff16565b61308390919063ffffffff16565b905060105460125482612d819190613ecd565b612d8b9190613f56565b60146000828254612d9c9190613bf4565b9250508190555060105460115482612db49190613ecd565b612dbe9190613f56565b60136000828254612dcf9190613bf4565b92505081905550612ecd565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e3657506000600d54115b15612ecc57612e636064612e55600d548861306d90919063ffffffff16565b61308390919063ffffffff16565b9050600d54600f5482612e769190613ecd565b612e809190613f56565b60146000828254612e919190613bf4565b92505081905550600d54600e5482612ea99190613ecd565b612eb39190613f56565b60136000828254612ec49190613bf4565b925050819055505b5b6000811115612ee257612ee1873083613099565b5b8085612eee919061481e565b94505b612efc878787613099565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000818361307b9190613ecd565b905092915050565b600081836130919190613f56565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613100906144b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131709061454a565b60405180910390fd5b613184838383613467565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561320a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613201906148c4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461329d9190613bf4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330191906138dd565b60405180910390a361331484848461346c565b50505050565b6000613325306112b6565b905060006013546014546133399190613bf4565b905060008083148061334b5750600082145b1561335857505050613465565b60146008546133679190613ecd565b83111561338057601460085461337d9190613ecd565b92505b600047905061338e84613471565b60006133a382476136ae90919063ffffffff16565b905060006133ce856133c06013548561306d90919063ffffffff16565b61308390919063ffffffff16565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161341690614915565b60006040518083038185875af1925050503d8060008114613453576040519150601f19603f3d011682016040523d82523d6000602084013e613458565b606091505b5050809450505050505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561348e5761348d6140ab565b5b6040519080825280602002602001820160405280156134bc5781602001602082028036833780820191505090505b50905030816000815181106134d4576134d361411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359d91906140ef565b816001815181106135b1576135b061411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613616307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612072565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161367895949392919061492a565b600060405180830381600087803b15801561369257600080fd5b505af11580156136a6573d6000803e3d6000fd5b505050505050565b600081836136bc919061481e565b905092915050565b600080fd5b6000819050919050565b6136dc816136c9565b81146136e757600080fd5b50565b6000813590506136f9816136d3565b92915050565b60008060408385031215613716576137156136c4565b5b6000613724858286016136ea565b9250506020613735858286016136ea565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561377957808201518184015260208101905061375e565b83811115613788576000848401525b50505050565b6000601f19601f8301169050919050565b60006137aa8261373f565b6137b4818561374a565b93506137c481856020860161375b565b6137cd8161378e565b840191505092915050565b600060208201905081810360008301526137f2818461379f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613825826137fa565b9050919050565b6138358161381a565b811461384057600080fd5b50565b6000813590506138528161382c565b92915050565b6000806040838503121561386f5761386e6136c4565b5b600061387d85828601613843565b925050602061388e858286016136ea565b9150509250929050565b60008115159050919050565b6138ad81613898565b82525050565b60006020820190506138c860008301846138a4565b92915050565b6138d7816136c9565b82525050565b60006020820190506138f260008301846138ce565b92915050565b60006020828403121561390e5761390d6136c4565b5b600061391c84828501613843565b91505092915050565b6000819050919050565b600061394a613945613940846137fa565b613925565b6137fa565b9050919050565b600061395c8261392f565b9050919050565b600061396e82613951565b9050919050565b61397e81613963565b82525050565b60006020820190506139996000830184613975565b92915050565b6000806000606084860312156139b8576139b76136c4565b5b60006139c686828701613843565b93505060206139d786828701613843565b92505060406139e8868287016136ea565b9150509250925092565b6139fb8161381a565b82525050565b6000602082019050613a1660008301846139f2565b92915050565b600060ff82169050919050565b613a3281613a1c565b82525050565b6000602082019050613a4d6000830184613a29565b92915050565b613a5c81613898565b8114613a6757600080fd5b50565b600081359050613a7981613a53565b92915050565b600060208284031215613a9557613a946136c4565b5b6000613aa384828501613a6a565b91505092915050565b60008060408385031215613ac357613ac26136c4565b5b6000613ad185828601613843565b9250506020613ae285828601613a6a565b9150509250929050565b600060208284031215613b0257613b016136c4565b5b6000613b10848285016136ea565b91505092915050565b60008060408385031215613b3057613b2f6136c4565b5b6000613b3e85828601613843565b9250506020613b4f85828601613843565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b8f60208361374a565b9150613b9a82613b59565b602082019050919050565b60006020820190508181036000830152613bbe81613b82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bff826136c9565b9150613c0a836136c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c3f57613c3e613bc5565b5b828201905092915050565b7f4d757374206b656570206665657320617420313225206f72206c657373000000600082015250565b6000613c80601d8361374a565b9150613c8b82613c4a565b602082019050919050565b60006020820190508181036000830152613caf81613c73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cfd57607f821691505b60208210811415613d1157613d10613cb6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613d7360288361374a565b9150613d7e82613d17565b604082019050919050565b60006020820190508181036000830152613da281613d66565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613e0560398361374a565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613e9760258361374a565b9150613ea282613e3b565b604082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b6000613ed8826136c9565b9150613ee3836136c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f1c57613f1b613bc5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f61826136c9565b9150613f6c836136c9565b925082613f7c57613f7b613f27565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613fe360358361374a565b9150613fee82613f87565b604082019050919050565b6000602082019050818103600083015261401281613fd6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061407560348361374a565b915061408082614019565b604082019050919050565b600060208201905081810360008301526140a481614068565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506140e98161382c565b92915050565b600060208284031215614105576141046136c4565b5b6000614113848285016140da565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061417061416b6141668461414b565b613925565b6136c9565b9050919050565b61418081614155565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141bb8161381a565b82525050565b60006141cd83836141b2565b60208301905092915050565b6000602082019050919050565b60006141f182614186565b6141fb8185614191565b9350614206836141a2565b8060005b8381101561423757815161421e88826141c1565b9750614229836141d9565b92505060018101905061420a565b5085935050505092915050565b60006080820190506142596000830187614177565b818103602083015261426b81866141e6565b905061427a60408301856139f2565b61428760608301846138ce565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142ec60268361374a565b91506142f782614290565b604082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061437e60248361374a565b915061438982614322565b604082019050919050565b600060208201905081810360008301526143ad81614371565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061441060228361374a565b915061441b826143b4565b604082019050919050565b6000602082019050818103600083015261443f81614403565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144a260258361374a565b91506144ad82614446565b604082019050919050565b600060208201905081810360008301526144d181614495565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061453460238361374a565b915061453f826144d8565b604082019050919050565b6000602082019050818103600083015261456381614527565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006145a060168361374a565b91506145ab8261456a565b602082019050919050565b600060208201905081810360008301526145cf81614593565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061465860498361374a565b9150614663826145d6565b606082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006146ea60358361374a565b91506146f58261468e565b604082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061475660138361374a565b915061476182614720565b602082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006147e860368361374a565b91506147f38261478c565b604082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b6000614829826136c9565b9150614834836136c9565b92508282101561484757614846613bc5565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006148ae60268361374a565b91506148b982614852565b604082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b600081905092915050565b50565b60006148ff6000836148e4565b915061490a826148ef565b600082019050919050565b6000614920826148f2565b9150819050919050565b600060a08201905061493f60008301886138ce565b61494c6020830187614177565b818103604083015261495e81866141e6565b905061496d60608301856139f2565b61497a60808301846138ce565b969550505050505056fea2646970667358221220fabee72b75c1ddb49a4ffff1926f2c9cb7eba2ff3f28630584f05a580febf1ca64736f6c634300080a0033

Deployed Bytecode Sourcemap

15179:13962:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20496:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2748:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3689:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16155:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16256:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15263:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3082:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21513:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16083:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15979:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3870:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15366:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2977:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15458:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4375:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15321:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15675:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21710:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20190:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20083:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16016:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15755:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3201:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;835:103;;;;;;;;;;;;;:::i;:::-;;18973:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19863:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15489:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18809:112;;;;;;;;;;;;;:::i;:::-;;616:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2860:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21005:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15948:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16121:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16051:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4602:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3340:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16328:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15715:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20815:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15866:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15529:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19360:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15914:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28619:519;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3527:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15571:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19155:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;946:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15611:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20496:311;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20626:7:::1;20613:10;:20;;;;20661:11;20644:14;:28;;;;20712:14;;20699:10;;:27;;;;:::i;:::-;20683:13;:43;;;;20763:2;20746:13;;:19;;20738:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20496:311:::0;;:::o;2748:100::-;2802:13;2835:5;2828:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2748:100;:::o;3689:169::-;3772:4;3789:39;3798:12;:10;:12::i;:::-;3812:7;3821:6;3789:8;:39::i;:::-;3846:4;3839:11;;3689:169;;;;:::o;16155:31::-;;;;:::o;16256:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15263:51::-;;;:::o;3082:108::-;3143:7;3170:12;;3163:19;;3082:108;:::o;21513:189::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21649:9:::1;;;;;;;;;;;21618:41;;21635:12;21618:41;;;;;;;;;;;;21682:12;21670:9;;:24;;;;;;;;;;;;;;;;;;21513:189:::0;:::o;16083:29::-;;;;:::o;15979:28::-;;;;:::o;3870:492::-;4010:4;4027:36;4037:6;4045:9;4056:6;4027:9;:36::i;:::-;4076:24;4103:11;:19;4115:6;4103:19;;;;;;;;;;;;;;;:33;4123:12;:10;:12::i;:::-;4103:33;;;;;;;;;;;;;;;;4076:60;;4175:6;4155:16;:26;;4147:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4262:57;4271:6;4279:12;:10;:12::i;:::-;4312:6;4293:16;:25;4262:8;:57::i;:::-;4350:4;4343:11;;;3870:492;;;;;:::o;15366:53::-;15412:6;15366:53;:::o;2977:93::-;3035:5;3060:2;3053:9;;2977:93;:::o;15458:24::-;;;;;;;;;;;;;:::o;4375:215::-;4463:4;4480:80;4489:12;:10;:12::i;:::-;4503:7;4549:10;4512:11;:25;4524:12;:10;:12::i;:::-;4512:25;;;;;;;;;;;;;;;:34;4538:7;4512:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4480:8;:80::i;:::-;4578:4;4571:11;;4375:215;;;;:::o;15321:38::-;;;:::o;15675:33::-;;;;;;;;;;;;;:::o;21710:126::-;21776:4;21800:19;:28;21820:7;21800:28;;;;;;;;;;;;;;;;;;;;;;;;;21793:35;;21710:126;;;:::o;20190:298::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20318:7:::1;20306:9;:19;;;;20351:11;20336:13;:26;;;;20398:11;20388:7;:21;;;;:::i;:::-;20373:12;:36;;;;20444:2;20428:12;;:18;;20420:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20190:298:::0;;:::o;20083:99::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20167:7:::1;20153:11;::::0;:21:::1;;;;;;;;;;;;;;;;;;20083:99:::0;:::o;16016:28::-;;;;:::o;15755:31::-;;;;;;;;;;;;:::o;3201:127::-;3275:7;3302:9;:18;3312:7;3302:18;;;;;;;;;;;;;;;;3295:25;;3201:127;;;:::o;835:103::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;900:30:::1;927:1;900:18;:30::i;:::-;835:103::o:0;18973:121::-;19025:4;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19059:5:::1;19042:14;;:22;;;;;;;;;;;;;;;;;;19082:4;19075:11;;18973:121:::0;:::o;19863:167::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20018:4:::1;19976:31;:39;20008:6;19976:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19863:167:::0;;:::o;15489:31::-;;;;;;;;;;;;;:::o;18809:112::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18880:4:::1;18864:13;;:20;;;;;;;;;;;;;;;;;;18909:4;18895:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;18809:112::o:0;616:87::-;662:7;689:6;;;;;;;;;;;682:13;;616:87;:::o;2860:104::-;2916:13;2949:7;2942:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2860:104;:::o;21005:304::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21149:13:::1;21141:21;;:4;:21;;;;21119:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;21260:41;21289:4;21295:5;21260:28;:41::i;:::-;21005:304:::0;;:::o;15948:24::-;;;;:::o;16121:27::-;;;;:::o;16051:25::-;;;;:::o;4602:413::-;4695:4;4712:24;4739:11;:25;4751:12;:10;:12::i;:::-;4739:25;;;;;;;;;;;;;;;:34;4765:7;4739:34;;;;;;;;;;;;;;;;4712:61;;4812:15;4792:16;:35;;4784:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4905:67;4914:12;:10;:12::i;:::-;4928:7;4956:15;4937:16;:34;4905:8;:67::i;:::-;5003:4;4996:11;;;4602:413;;;;:::o;3340:175::-;3426:4;3443:42;3453:12;:10;:12::i;:::-;3467:9;3478:6;3443:9;:42::i;:::-;3503:4;3496:11;;3340:175;;;;:::o;16328:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15715:33::-;;;;;;;;;;;;;:::o;20815:182::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20931:8:::1;20900:19;:28;20920:7;20900:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20971:7;20955:34;;;20980:8;20955:34;;;;;;:::i;:::-;;;;;;;;20815:182:::0;;:::o;15866:39::-;;;;;;;;;;;;;:::o;15529:35::-;;;;:::o;19360:497::-;19468:4;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19547:6:::1;19542:1;19526:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19525:28;;;;:::i;:::-;19512:9;:41;;19490:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19702:4;19697:1;19681:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19680:26;;;;:::i;:::-;19667:9;:39;;19645:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19818:9;19797:18;:30;;;;19845:4;19838:11;;19360:497:::0;;;:::o;15914:27::-;;;;:::o;28619:519::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28692:21:::1;28730:1;28716:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28692:40;;28753:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28743:4;28748:1;28743:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;28804:4;28786;28791:1;28786:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;28820:16;28838:21;28820:39;;28870:21;28894:30;28920:3;28894:21;28907:7;28894:8;:12;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;28870:54;;28935:15;:66;;;29010:13;29039:1;29055:4;29082:6;29104:15;28935:195;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;28681:457;;;28619:519:::0;:::o;3527:151::-;3616:7;3643:11;:18;3655:5;3643:18;;;;;;;;;;;;;;;:27;3662:7;3643:27;;;;;;;;;;;;;;;;3636:34;;3527:151;;;;:::o;15571:33::-;;;;:::o;19155:135::-;19215:4;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19255:5:::1;19232:20;;:28;;;;;;;;;;;;;;;;;;19278:4;19271:11;;19155:135:::0;:::o;946:201::-;760:12;:10;:12::i;:::-;749:23;;:7;:5;:7::i;:::-;:23;;;741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1055:1:::1;1035:22;;:8;:22;;;;1027:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1111:28;1130:8;1111:18;:28::i;:::-;946:201:::0;:::o;15611:24::-;;;;:::o;166:98::-;219:7;246:10;239:17;;166:98;:::o;6788:380::-;6941:1;6924:19;;:5;:19;;;;6916:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7022:1;7003:21;;:7;:21;;;;6995:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7106:6;7076:11;:18;7088:5;7076:18;;;;;;;;;;;;;;;:27;7095:7;7076:27;;;;;;;;;;;;;;;:36;;;;7144:7;7128:32;;7137:5;7128:32;;;7153:6;7128:32;;;;;;:::i;:::-;;;;;;;;6788:380;;;:::o;21894:4765::-;22042:1;22026:18;;:4;:18;;;;22018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22119:1;22105:16;;:2;:16;;;;22097:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22188:1;22178:6;:11;22174:93;;;22206:28;22222:4;22228:2;22232:1;22206:15;:28::i;:::-;22249:7;;22174:93;22290:5;22277:10;;:18;;;;;;;;;;;;;;;;;;22310:14;;;;;;;;;;;22306:2487;;;22371:7;:5;:7::i;:::-;22363:15;;:4;:15;;;;:49;;;;;22405:7;:5;:7::i;:::-;22399:13;;:2;:13;;;;22363:49;:86;;;;;22447:1;22433:16;;:2;:16;;;;22363:86;:128;;;;;22484:6;22470:21;;:2;:21;;;;22363:128;:158;;;;;22513:8;;;;;;;;;;;22512:9;22363:158;22341:2441;;;22561:13;;;;;;;;;;;22556:223;;22633:19;:25;22653:4;22633:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22662:19;:23;22682:2;22662:23;;;;;;;;;;;;;;;;;;;;;;;;;22633:52;22599:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;22556:223;22935:20;;;;;;;;;;;22931:641;;;23016:7;:5;:7::i;:::-;23010:13;;:2;:13;;;;:72;;;;;23066:15;23052:30;;:2;:30;;;;23010:72;:129;;;;;23125:13;23111:28;;:2;:28;;;;23010:129;22980:573;;;23303:12;23228:28;:39;23257:9;23228:39;;;;;;;;;;;;;;;;:87;23190:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;23517:12;23475:28;:39;23504:9;23475:39;;;;;;;;;;;;;;;:54;;;;22980:573;22931:641;23646:25;:31;23672:4;23646:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23703:31;:35;23735:2;23703:35;;;;;;;;;;;;;;;;;;;;;;;;;23702:36;23646:92;23620:1147;;;23825:20;;23815:6;:30;;23781:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;24033:9;;24016:13;24026:2;24016:9;:13::i;:::-;24007:6;:22;;;;:::i;:::-;:35;;23973:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23620:1147;;;24211:25;:29;24237:2;24211:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;24266:31;:37;24298:4;24266:37;;;;;;;;;;;;;;;;;;;;;;;;;24265:38;24211:92;24185:582;;;24390:20;;24380:6;:30;;24346:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;24185:582;;;24547:31;:35;24579:2;24547:35;;;;;;;;;;;;;;;;;;;;;;;;;24542:225;;24667:9;;24650:13;24660:2;24650:9;:13::i;:::-;24641:6;:22;;;;:::i;:::-;:35;;24607:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24542:225;24185:582;23620:1147;22341:2441;22306:2487;24803:28;24834:24;24852:4;24834:9;:24::i;:::-;24803:55;;24871:12;24910:18;;24886:20;:42;;24871:57;;24959:7;:35;;;;;24983:11;;;;;;;;;;24959:35;:61;;;;;25012:8;;;;;;;;;;;25011:9;24959:61;:110;;;;;25038:25;:31;25064:4;25038:31;;;;;;;;;;;;;;;;;;;;;;;;;25037:32;24959:110;:153;;;;;25087:19;:25;25107:4;25087:25;;;;;;;;;;;;;;;;;;;;;;;;;25086:26;24959:153;:194;;;;;25130:19;:23;25150:2;25130:23;;;;;;;;;;;;;;;;;;;;;;;;;25129:24;24959:194;24941:326;;;25191:4;25180:8;;:15;;;;;;;;;;;;;;;;;;25212:10;:8;:10::i;:::-;25250:5;25239:8;;:16;;;;;;;;;;;;;;;;;;24941:326;25279:12;25295:8;;;;;;;;;;;25294:9;25279:24;;25318:8;;;;;;;;;;;25314:172;;25360:3;25346:10;;;;;;;;;;;:17;;;25342:80;;;25405:17;25382:20;:40;;;;25342:80;25453:17;25441:9;:29;;;;25314:172;25585:19;:25;25605:4;25585:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25614:19;:23;25634:2;25614:23;;;;;;;;;;;;;;;;;;;;;;;;;25585:52;25581:100;;;25664:5;25654:15;;25581:100;25693:12;25798:7;:21;;;;;25809:10;;;;;;;;;;;25808:11;25798:21;25794:812;;;25864:25;:29;25890:2;25864:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25913:1;25897:13;;:17;25864:50;25860:597;;;25942:34;25972:3;25942:25;25953:13;;25942:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25935:41;;26041:13;;26023:14;;26016:4;:21;;;;:::i;:::-;26015:39;;;;:::i;:::-;25995:16;;:59;;;;;;;:::i;:::-;;;;;;;;26110:13;;26096:10;;26089:4;:17;;;;:::i;:::-;26088:35;;;;:::i;:::-;26073:12;;:50;;;;;;;:::i;:::-;;;;;;;;25860:597;;;26185:25;:31;26211:4;26185:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26235:1;26220:12;;:16;26185:51;26181:276;;;26264:33;26293:3;26264:24;26275:12;;26264:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26257:40;;26361:12;;26344:13;;26337:4;:20;;;;:::i;:::-;26336:37;;;;:::i;:::-;26316:16;;:57;;;;;;;:::i;:::-;;;;;;;;26429:12;;26416:9;;26409:4;:16;;;;:::i;:::-;26408:33;;;;:::i;:::-;26392:12;;:49;;;;;;;:::i;:::-;;;;;;;;26181:276;25860:597;26484:1;26477:4;:8;26473:91;;;26506:42;26522:4;26536;26543;26506:15;:42::i;:::-;26473:91;26590:4;26580:14;;;;;:::i;:::-;;;25794:812;26618:33;26634:4;26640:2;26644:6;26618:15;:33::i;:::-;22007:4652;;;;21894:4765;;;;:::o;1155:191::-;1229:16;1248:6;;;;;;;;;;;1229:25;;1274:8;1265:6;;:17;;;;;;;;;;;;;;;;;;1329:8;1298:40;;1319:8;1298:40;;;;;;;;;;;;1218:128;1155:191;:::o;21317:188::-;21434:5;21400:25;:31;21426:4;21400:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21491:5;21457:40;;21485:4;21457:40;;;;;;;;;;;;21317:188;;:::o;8829:98::-;8887:7;8918:1;8914;:5;;;;:::i;:::-;8907:12;;8829:98;;;;:::o;8940:::-;8998:7;9029:1;9025;:5;;;;:::i;:::-;9018:12;;8940:98;;;;:::o;5026:733::-;5184:1;5166:20;;:6;:20;;;;5158:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5268:1;5247:23;;:9;:23;;;;5239:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5323:47;5344:6;5352:9;5363:6;5323:20;:47::i;:::-;5383:21;5407:9;:17;5417:6;5407:17;;;;;;;;;;;;;;;;5383:41;;5460:6;5443:13;:23;;5435:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5581:6;5565:13;:22;5545:9;:17;5555:6;5545:17;;;;;;;;;;;;;;;:42;;;;5633:6;5609:9;:20;5619:9;5609:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5674:9;5657:35;;5666:6;5657:35;;;5685:6;5657:35;;;;;;:::i;:::-;;;;;;;;5705:46;5725:6;5733:9;5744:6;5705:19;:46::i;:::-;5147:612;5026:733;;;:::o;27789:822::-;27828:23;27854:24;27872:4;27854:9;:24::i;:::-;27828:50;;27889:25;27949:12;;27917:16;;:44;;;;:::i;:::-;27889:72;;27973:12;28021:1;28002:15;:20;:46;;;;28047:1;28026:17;:22;28002:46;27998:85;;;28065:7;;;;;27998:85;28138:2;28117:18;;:23;;;;:::i;:::-;28099:15;:41;28095:115;;;28196:2;28175:18;;:23;;;;:::i;:::-;28157:41;;28095:115;28220:25;28248:21;28220:49;;28282:33;28299:15;28282:16;:33::i;:::-;28336:18;28357:44;28383:17;28357:21;:25;;:44;;;;:::i;:::-;28336:65;;28414:17;28434:75;28481:17;28434:28;28449:12;;28434:10;:14;;:28;;;;:::i;:::-;:32;;:75;;;;:::i;:::-;28414:95;;28542:9;;;;;;;;;;;28534:23;;28579:9;28534:69;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28520:83;;;;;27817:794;;;;;;27789:822;:::o;7180:125::-;;;;:::o;7318:124::-;;;;:::o;26667:589::-;26793:21;26831:1;26817:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26793:40;;26862:4;26844;26849:1;26844:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26888:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26878:4;26883:1;26878:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26923:62;26940:4;26955:15;26973:11;26923:8;:62::i;:::-;27024:15;:66;;;27105:11;27131:1;27175:4;27202;27222:15;27024:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26722:534;26667:589;:::o;8718:98::-;8776:7;8807:1;8803;:5;;;;:::i;:::-;8796:12;;8718:98;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:118::-;4061:24;4079:5;4061:24;:::i;:::-;4056:3;4049:37;3974:118;;:::o;4098:222::-;4191:4;4229:2;4218:9;4214:18;4206:26;;4242:71;4310:1;4299:9;4295:17;4286:6;4242:71;:::i;:::-;4098:222;;;;:::o;4326:329::-;4385:6;4434:2;4422:9;4413:7;4409:23;4405:32;4402:119;;;4440:79;;:::i;:::-;4402:119;4560:1;4585:53;4630:7;4621:6;4610:9;4606:22;4585:53;:::i;:::-;4575:63;;4531:117;4326:329;;;;:::o;4661:60::-;4689:3;4710:5;4703:12;;4661:60;;;:::o;4727:142::-;4777:9;4810:53;4828:34;4837:24;4855:5;4837:24;:::i;:::-;4828:34;:::i;:::-;4810:53;:::i;:::-;4797:66;;4727:142;;;:::o;4875:126::-;4925:9;4958:37;4989:5;4958:37;:::i;:::-;4945:50;;4875:126;;;:::o;5007:153::-;5084:9;5117:37;5148:5;5117:37;:::i;:::-;5104:50;;5007:153;;;:::o;5166:185::-;5280:64;5338:5;5280:64;:::i;:::-;5275:3;5268:77;5166:185;;:::o;5357:276::-;5477:4;5515:2;5504:9;5500:18;5492:26;;5528:98;5623:1;5612:9;5608:17;5599:6;5528:98;:::i;:::-;5357:276;;;;:::o;5639:619::-;5716:6;5724;5732;5781:2;5769:9;5760:7;5756:23;5752:32;5749:119;;;5787:79;;:::i;:::-;5749:119;5907:1;5932:53;5977:7;5968:6;5957:9;5953:22;5932:53;:::i;:::-;5922:63;;5878:117;6034:2;6060:53;6105:7;6096:6;6085:9;6081:22;6060:53;:::i;:::-;6050:63;;6005:118;6162:2;6188:53;6233:7;6224:6;6213:9;6209:22;6188:53;:::i;:::-;6178:63;;6133:118;5639:619;;;;;:::o;6264:118::-;6351:24;6369:5;6351:24;:::i;:::-;6346:3;6339:37;6264:118;;:::o;6388:222::-;6481:4;6519:2;6508:9;6504:18;6496:26;;6532:71;6600:1;6589:9;6585:17;6576:6;6532:71;:::i;:::-;6388:222;;;;:::o;6616:86::-;6651:7;6691:4;6684:5;6680:16;6669:27;;6616:86;;;:::o;6708:112::-;6791:22;6807:5;6791:22;:::i;:::-;6786:3;6779:35;6708:112;;:::o;6826:214::-;6915:4;6953:2;6942:9;6938:18;6930:26;;6966:67;7030:1;7019:9;7015:17;7006:6;6966:67;:::i;:::-;6826:214;;;;:::o;7046:116::-;7116:21;7131:5;7116:21;:::i;:::-;7109:5;7106:32;7096:60;;7152:1;7149;7142:12;7096:60;7046:116;:::o;7168:133::-;7211:5;7249:6;7236:20;7227:29;;7265:30;7289:5;7265:30;:::i;:::-;7168:133;;;;:::o;7307:323::-;7363:6;7412:2;7400:9;7391:7;7387:23;7383:32;7380:119;;;7418:79;;:::i;:::-;7380:119;7538:1;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7509:114;7307:323;;;;:::o;7636:468::-;7701:6;7709;7758:2;7746:9;7737:7;7733:23;7729:32;7726:119;;;7764:79;;:::i;:::-;7726:119;7884:1;7909:53;7954:7;7945:6;7934:9;7930:22;7909:53;:::i;:::-;7899:63;;7855:117;8011:2;8037:50;8079:7;8070:6;8059:9;8055:22;8037:50;:::i;:::-;8027:60;;7982:115;7636:468;;;;;:::o;8110:329::-;8169:6;8218:2;8206:9;8197:7;8193:23;8189:32;8186:119;;;8224:79;;:::i;:::-;8186:119;8344:1;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8315:117;8110:329;;;;:::o;8445:474::-;8513:6;8521;8570:2;8558:9;8549:7;8545:23;8541:32;8538:119;;;8576:79;;:::i;:::-;8538:119;8696:1;8721:53;8766:7;8757:6;8746:9;8742:22;8721:53;:::i;:::-;8711:63;;8667:117;8823:2;8849:53;8894:7;8885:6;8874:9;8870:22;8849:53;:::i;:::-;8839:63;;8794:118;8445:474;;;;;:::o;8925:182::-;9065:34;9061:1;9053:6;9049:14;9042:58;8925:182;:::o;9113:366::-;9255:3;9276:67;9340:2;9335:3;9276:67;:::i;:::-;9269:74;;9352:93;9441:3;9352:93;:::i;:::-;9470:2;9465:3;9461:12;9454:19;;9113:366;;;:::o;9485:419::-;9651:4;9689:2;9678:9;9674:18;9666:26;;9738:9;9732:4;9728:20;9724:1;9713:9;9709:17;9702:47;9766:131;9892:4;9766:131;:::i;:::-;9758:139;;9485:419;;;:::o;9910:180::-;9958:77;9955:1;9948:88;10055:4;10052:1;10045:15;10079:4;10076:1;10069:15;10096:305;10136:3;10155:20;10173:1;10155:20;:::i;:::-;10150:25;;10189:20;10207:1;10189:20;:::i;:::-;10184:25;;10343:1;10275:66;10271:74;10268:1;10265:81;10262:107;;;10349:18;;:::i;:::-;10262:107;10393:1;10390;10386:9;10379:16;;10096:305;;;;:::o;10407:179::-;10547:31;10543:1;10535:6;10531:14;10524:55;10407:179;:::o;10592:366::-;10734:3;10755:67;10819:2;10814:3;10755:67;:::i;:::-;10748:74;;10831:93;10920:3;10831:93;:::i;:::-;10949:2;10944:3;10940:12;10933:19;;10592:366;;;:::o;10964:419::-;11130:4;11168:2;11157:9;11153:18;11145:26;;11217:9;11211:4;11207:20;11203:1;11192:9;11188:17;11181:47;11245:131;11371:4;11245:131;:::i;:::-;11237:139;;10964:419;;;:::o;11389:180::-;11437:77;11434:1;11427:88;11534:4;11531:1;11524:15;11558:4;11555:1;11548:15;11575:320;11619:6;11656:1;11650:4;11646:12;11636:22;;11703:1;11697:4;11693:12;11724:18;11714:81;;11780:4;11772:6;11768:17;11758:27;;11714:81;11842:2;11834:6;11831:14;11811:18;11808:38;11805:84;;;11861:18;;:::i;:::-;11805:84;11626:269;11575:320;;;:::o;11901:227::-;12041:34;12037:1;12029:6;12025:14;12018:58;12110:10;12105:2;12097:6;12093:15;12086:35;11901:227;:::o;12134:366::-;12276:3;12297:67;12361:2;12356:3;12297:67;:::i;:::-;12290:74;;12373:93;12462:3;12373:93;:::i;:::-;12491:2;12486:3;12482:12;12475:19;;12134:366;;;:::o;12506:419::-;12672:4;12710:2;12699:9;12695:18;12687:26;;12759:9;12753:4;12749:20;12745:1;12734:9;12730:17;12723:47;12787:131;12913:4;12787:131;:::i;:::-;12779:139;;12506:419;;;:::o;12931:244::-;13071:34;13067:1;13059:6;13055:14;13048:58;13140:27;13135:2;13127:6;13123:15;13116:52;12931:244;:::o;13181:366::-;13323:3;13344:67;13408:2;13403:3;13344:67;:::i;:::-;13337:74;;13420:93;13509:3;13420:93;:::i;:::-;13538:2;13533:3;13529:12;13522:19;;13181:366;;;:::o;13553:419::-;13719:4;13757:2;13746:9;13742:18;13734:26;;13806:9;13800:4;13796:20;13792:1;13781:9;13777:17;13770:47;13834:131;13960:4;13834:131;:::i;:::-;13826:139;;13553:419;;;:::o;13978:224::-;14118:34;14114:1;14106:6;14102:14;14095:58;14187:7;14182:2;14174:6;14170:15;14163:32;13978:224;:::o;14208:366::-;14350:3;14371:67;14435:2;14430:3;14371:67;:::i;:::-;14364:74;;14447:93;14536:3;14447:93;:::i;:::-;14565:2;14560:3;14556:12;14549:19;;14208:366;;;:::o;14580:419::-;14746:4;14784:2;14773:9;14769:18;14761:26;;14833:9;14827:4;14823:20;14819:1;14808:9;14804:17;14797:47;14861:131;14987:4;14861:131;:::i;:::-;14853:139;;14580:419;;;:::o;15005:348::-;15045:7;15068:20;15086:1;15068:20;:::i;:::-;15063:25;;15102:20;15120:1;15102:20;:::i;:::-;15097:25;;15290:1;15222:66;15218:74;15215:1;15212:81;15207:1;15200:9;15193:17;15189:105;15186:131;;;15297:18;;:::i;:::-;15186:131;15345:1;15342;15338:9;15327:20;;15005:348;;;;:::o;15359:180::-;15407:77;15404:1;15397:88;15504:4;15501:1;15494:15;15528:4;15525:1;15518:15;15545:185;15585:1;15602:20;15620:1;15602:20;:::i;:::-;15597:25;;15636:20;15654:1;15636:20;:::i;:::-;15631:25;;15675:1;15665:35;;15680:18;;:::i;:::-;15665:35;15722:1;15719;15715:9;15710:14;;15545:185;;;;:::o;15736:240::-;15876:34;15872:1;15864:6;15860:14;15853:58;15945:23;15940:2;15932:6;15928:15;15921:48;15736:240;:::o;15982:366::-;16124:3;16145:67;16209:2;16204:3;16145:67;:::i;:::-;16138:74;;16221:93;16310:3;16221:93;:::i;:::-;16339:2;16334:3;16330:12;16323:19;;15982:366;;;:::o;16354:419::-;16520:4;16558:2;16547:9;16543:18;16535:26;;16607:9;16601:4;16597:20;16593:1;16582:9;16578:17;16571:47;16635:131;16761:4;16635:131;:::i;:::-;16627:139;;16354:419;;;:::o;16779:239::-;16919:34;16915:1;16907:6;16903:14;16896:58;16988:22;16983:2;16975:6;16971:15;16964:47;16779:239;:::o;17024:366::-;17166:3;17187:67;17251:2;17246:3;17187:67;:::i;:::-;17180:74;;17263:93;17352:3;17263:93;:::i;:::-;17381:2;17376:3;17372:12;17365:19;;17024:366;;;:::o;17396:419::-;17562:4;17600:2;17589:9;17585:18;17577:26;;17649:9;17643:4;17639:20;17635:1;17624:9;17620:17;17613:47;17677:131;17803:4;17677:131;:::i;:::-;17669:139;;17396:419;;;:::o;17821:180::-;17869:77;17866:1;17859:88;17966:4;17963:1;17956:15;17990:4;17987:1;17980:15;18007:143;18064:5;18095:6;18089:13;18080:22;;18111:33;18138:5;18111:33;:::i;:::-;18007:143;;;;:::o;18156:351::-;18226:6;18275:2;18263:9;18254:7;18250:23;18246:32;18243:119;;;18281:79;;:::i;:::-;18243:119;18401:1;18426:64;18482:7;18473:6;18462:9;18458:22;18426:64;:::i;:::-;18416:74;;18372:128;18156:351;;;;:::o;18513:180::-;18561:77;18558:1;18551:88;18658:4;18655:1;18648:15;18682:4;18679:1;18672:15;18699:85;18744:7;18773:5;18762:16;;18699:85;;;:::o;18790:158::-;18848:9;18881:61;18899:42;18908:32;18934:5;18908:32;:::i;:::-;18899:42;:::i;:::-;18881:61;:::i;:::-;18868:74;;18790:158;;;:::o;18954:147::-;19049:45;19088:5;19049:45;:::i;:::-;19044:3;19037:58;18954:147;;:::o;19107:114::-;19174:6;19208:5;19202:12;19192:22;;19107:114;;;:::o;19227:184::-;19326:11;19360:6;19355:3;19348:19;19400:4;19395:3;19391:14;19376:29;;19227:184;;;;:::o;19417:132::-;19484:4;19507:3;19499:11;;19537:4;19532:3;19528:14;19520:22;;19417:132;;;:::o;19555:108::-;19632:24;19650:5;19632:24;:::i;:::-;19627:3;19620:37;19555:108;;:::o;19669:179::-;19738:10;19759:46;19801:3;19793:6;19759:46;:::i;:::-;19837:4;19832:3;19828:14;19814:28;;19669:179;;;;:::o;19854:113::-;19924:4;19956;19951:3;19947:14;19939:22;;19854:113;;;:::o;20003:732::-;20122:3;20151:54;20199:5;20151:54;:::i;:::-;20221:86;20300:6;20295:3;20221:86;:::i;:::-;20214:93;;20331:56;20381:5;20331:56;:::i;:::-;20410:7;20441:1;20426:284;20451:6;20448:1;20445:13;20426:284;;;20527:6;20521:13;20554:63;20613:3;20598:13;20554:63;:::i;:::-;20547:70;;20640:60;20693:6;20640:60;:::i;:::-;20630:70;;20486:224;20473:1;20470;20466:9;20461:14;;20426:284;;;20430:14;20726:3;20719:10;;20127:608;;;20003:732;;;;:::o;20741:720::-;20976:4;21014:3;21003:9;20999:19;20991:27;;21028:79;21104:1;21093:9;21089:17;21080:6;21028:79;:::i;:::-;21154:9;21148:4;21144:20;21139:2;21128:9;21124:18;21117:48;21182:108;21285:4;21276:6;21182:108;:::i;:::-;21174:116;;21300:72;21368:2;21357:9;21353:18;21344:6;21300:72;:::i;:::-;21382;21450:2;21439:9;21435:18;21426:6;21382:72;:::i;:::-;20741:720;;;;;;;:::o;21467:225::-;21607:34;21603:1;21595:6;21591:14;21584:58;21676:8;21671:2;21663:6;21659:15;21652:33;21467:225;:::o;21698:366::-;21840:3;21861:67;21925:2;21920:3;21861:67;:::i;:::-;21854:74;;21937:93;22026:3;21937:93;:::i;:::-;22055:2;22050:3;22046:12;22039:19;;21698:366;;;:::o;22070:419::-;22236:4;22274:2;22263:9;22259:18;22251:26;;22323:9;22317:4;22313:20;22309:1;22298:9;22294:17;22287:47;22351:131;22477:4;22351:131;:::i;:::-;22343:139;;22070:419;;;:::o;22495:223::-;22635:34;22631:1;22623:6;22619:14;22612:58;22704:6;22699:2;22691:6;22687:15;22680:31;22495:223;:::o;22724:366::-;22866:3;22887:67;22951:2;22946:3;22887:67;:::i;:::-;22880:74;;22963:93;23052:3;22963:93;:::i;:::-;23081:2;23076:3;23072:12;23065:19;;22724:366;;;:::o;23096:419::-;23262:4;23300:2;23289:9;23285:18;23277:26;;23349:9;23343:4;23339:20;23335:1;23324:9;23320:17;23313:47;23377:131;23503:4;23377:131;:::i;:::-;23369:139;;23096:419;;;:::o;23521:221::-;23661:34;23657:1;23649:6;23645:14;23638:58;23730:4;23725:2;23717:6;23713:15;23706:29;23521:221;:::o;23748:366::-;23890:3;23911:67;23975:2;23970:3;23911:67;:::i;:::-;23904:74;;23987:93;24076:3;23987:93;:::i;:::-;24105:2;24100:3;24096:12;24089:19;;23748:366;;;:::o;24120:419::-;24286:4;24324:2;24313:9;24309:18;24301:26;;24373:9;24367:4;24363:20;24359:1;24348:9;24344:17;24337:47;24401:131;24527:4;24401:131;:::i;:::-;24393:139;;24120:419;;;:::o;24545:224::-;24685:34;24681:1;24673:6;24669:14;24662:58;24754:7;24749:2;24741:6;24737:15;24730:32;24545:224;:::o;24775:366::-;24917:3;24938:67;25002:2;24997:3;24938:67;:::i;:::-;24931:74;;25014:93;25103:3;25014:93;:::i;:::-;25132:2;25127:3;25123:12;25116:19;;24775:366;;;:::o;25147:419::-;25313:4;25351:2;25340:9;25336:18;25328:26;;25400:9;25394:4;25390:20;25386:1;25375:9;25371:17;25364:47;25428:131;25554:4;25428:131;:::i;:::-;25420:139;;25147:419;;;:::o;25572:222::-;25712:34;25708:1;25700:6;25696:14;25689:58;25781:5;25776:2;25768:6;25764:15;25757:30;25572:222;:::o;25800:366::-;25942:3;25963:67;26027:2;26022:3;25963:67;:::i;:::-;25956:74;;26039:93;26128:3;26039:93;:::i;:::-;26157:2;26152:3;26148:12;26141:19;;25800:366;;;:::o;26172:419::-;26338:4;26376:2;26365:9;26361:18;26353:26;;26425:9;26419:4;26415:20;26411:1;26400:9;26396:17;26389:47;26453:131;26579:4;26453:131;:::i;:::-;26445:139;;26172:419;;;:::o;26597:172::-;26737:24;26733:1;26725:6;26721:14;26714:48;26597:172;:::o;26775:366::-;26917:3;26938:67;27002:2;26997:3;26938:67;:::i;:::-;26931:74;;27014:93;27103:3;27014:93;:::i;:::-;27132:2;27127:3;27123:12;27116:19;;26775:366;;;:::o;27147:419::-;27313:4;27351:2;27340:9;27336:18;27328:26;;27400:9;27394:4;27390:20;27386:1;27375:9;27371:17;27364:47;27428:131;27554:4;27428:131;:::i;:::-;27420:139;;27147:419;;;:::o;27572:297::-;27712:34;27708:1;27700:6;27696:14;27689:58;27781:34;27776:2;27768:6;27764:15;27757:59;27850:11;27845:2;27837:6;27833:15;27826:36;27572:297;:::o;27875:366::-;28017:3;28038:67;28102:2;28097:3;28038:67;:::i;:::-;28031:74;;28114:93;28203:3;28114:93;:::i;:::-;28232:2;28227:3;28223:12;28216:19;;27875:366;;;:::o;28247:419::-;28413:4;28451:2;28440:9;28436:18;28428:26;;28500:9;28494:4;28490:20;28486:1;28475:9;28471:17;28464:47;28528:131;28654:4;28528:131;:::i;:::-;28520:139;;28247:419;;;:::o;28672:240::-;28812:34;28808:1;28800:6;28796:14;28789:58;28881:23;28876:2;28868:6;28864:15;28857:48;28672:240;:::o;28918:366::-;29060:3;29081:67;29145:2;29140:3;29081:67;:::i;:::-;29074:74;;29157:93;29246:3;29157:93;:::i;:::-;29275:2;29270:3;29266:12;29259:19;;28918:366;;;:::o;29290:419::-;29456:4;29494:2;29483:9;29479:18;29471:26;;29543:9;29537:4;29533:20;29529:1;29518:9;29514:17;29507:47;29571:131;29697:4;29571:131;:::i;:::-;29563:139;;29290:419;;;:::o;29715:169::-;29855:21;29851:1;29843:6;29839:14;29832:45;29715:169;:::o;29890:366::-;30032:3;30053:67;30117:2;30112:3;30053:67;:::i;:::-;30046:74;;30129:93;30218:3;30129:93;:::i;:::-;30247:2;30242:3;30238:12;30231:19;;29890:366;;;:::o;30262:419::-;30428:4;30466:2;30455:9;30451:18;30443:26;;30515:9;30509:4;30505:20;30501:1;30490:9;30486:17;30479:47;30543:131;30669:4;30543:131;:::i;:::-;30535:139;;30262:419;;;:::o;30687:241::-;30827:34;30823:1;30815:6;30811:14;30804:58;30896:24;30891:2;30883:6;30879:15;30872:49;30687:241;:::o;30934:366::-;31076:3;31097:67;31161:2;31156:3;31097:67;:::i;:::-;31090:74;;31173:93;31262:3;31173:93;:::i;:::-;31291:2;31286:3;31282:12;31275:19;;30934:366;;;:::o;31306:419::-;31472:4;31510:2;31499:9;31495:18;31487:26;;31559:9;31553:4;31549:20;31545:1;31534:9;31530:17;31523:47;31587:131;31713:4;31587:131;:::i;:::-;31579:139;;31306:419;;;:::o;31731:191::-;31771:4;31791:20;31809:1;31791:20;:::i;:::-;31786:25;;31825:20;31843:1;31825:20;:::i;:::-;31820:25;;31864:1;31861;31858:8;31855:34;;;31869:18;;:::i;:::-;31855:34;31914:1;31911;31907:9;31899:17;;31731:191;;;;:::o;31928:225::-;32068:34;32064:1;32056:6;32052:14;32045:58;32137:8;32132:2;32124:6;32120:15;32113:33;31928:225;:::o;32159:366::-;32301:3;32322:67;32386:2;32381:3;32322:67;:::i;:::-;32315:74;;32398:93;32487:3;32398:93;:::i;:::-;32516:2;32511:3;32507:12;32500:19;;32159:366;;;:::o;32531:419::-;32697:4;32735:2;32724:9;32720:18;32712:26;;32784:9;32778:4;32774:20;32770:1;32759:9;32755:17;32748:47;32812:131;32938:4;32812:131;:::i;:::-;32804:139;;32531:419;;;:::o;32956:147::-;33057:11;33094:3;33079:18;;32956:147;;;;:::o;33109:114::-;;:::o;33229:398::-;33388:3;33409:83;33490:1;33485:3;33409:83;:::i;:::-;33402:90;;33501:93;33590:3;33501:93;:::i;:::-;33619:1;33614:3;33610:11;33603:18;;33229:398;;;:::o;33633:379::-;33817:3;33839:147;33982:3;33839:147;:::i;:::-;33832:154;;34003:3;33996:10;;33633:379;;;:::o;34018:831::-;34281:4;34319:3;34308:9;34304:19;34296:27;;34333:71;34401:1;34390:9;34386:17;34377:6;34333:71;:::i;:::-;34414:80;34490:2;34479:9;34475:18;34466:6;34414:80;:::i;:::-;34541:9;34535:4;34531:20;34526:2;34515:9;34511:18;34504:48;34569:108;34672:4;34663:6;34569:108;:::i;:::-;34561:116;;34687:72;34755:2;34744:9;34740:18;34731:6;34687:72;:::i;:::-;34769:73;34837:3;34826:9;34822:19;34813:6;34769:73;:::i;:::-;34018:831;;;;;;;;:::o

Swarm Source

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