ETH Price: $3,389.53 (-1.32%)
Gas: 2 Gwei

Token

Degen Fighting Championship (DFC)
 

Overview

Max Total Supply

1,000,000 DFC

Holders

242 (0.00%)

Market

Price

$0.04 @ 0.000011 ETH

Onchain Market Cap

$37,367.21

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
212.927633702266896356 DFC

Value
$7.96 ( ~0.00234840694835087 Eth) [0.0213%]
0x70db80fbf9d1b08fd40b3fb3c91504f5ac2d79c2
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Degen Fighting Championship is an exhilarating tournament where traders battle by strategically trading tokens on the Ethereum blockchain. The objective is to achieve the highest profit within each tournament's unique duration.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DFC

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    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 (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    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(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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 {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    address public constant DEAD_ADDRESS = 0x000000000000000000000000000000000000dEaD;
    
    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);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        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);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

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

        _beforeTokenTransfer(account, DEAD_ADDRESS, amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _balances[DEAD_ADDRESS] = _balances[DEAD_ADDRESS].add(amount);
        emit Transfer(account, DEAD_ADDRESS, 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 {}
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

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

    function WETH() external pure returns (address);

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

contract DFC is Context, IERC20, IERC20Metadata, ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public rescueAddress;
    address private liquifyProtocol;

    bool private swapping;
    bool private tradeInLimits = true;
    bool private isTrading = false;
    bool public swapAllowed = false;
    bool public taxShortTermTraders = true;

    mapping(address => uint256) private _traderFirstSwapTimestamp;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTradeAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) private _bots;
    address[] private botList;

    uint256 private buyFeeTotal;
    uint256 private buyProtocolFee;
    uint256 private buyLiquidityFee;
    uint256 private sellFeeTotal;
    uint256 private sellProtocolFee;
    uint256 private sellLiquidityFee;
    uint256 private quickSellLiquidityFee;
    uint256 private quickSellProtocolFee;
    uint256 private tokensForProtocol;
    uint256 private tokensForLiquidity;
    uint256 private maxTradeAmount;
    uint256 private whenToSwapToken;
    uint256 private maxHolding;
    uint256 launchedAt;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor(
        string memory name,
        string memory symbol,
        address _rescueAddress,
        address _liquifyProtocolAddress,
        uint256 totalSupply,
        uint256 _buyProtocolFee,
        uint256 _sellProtocolFee,
        uint256 _quickSellProtocolFee,
        uint256 _buyLiquidityFee,
        uint256 _sellLiquidityFee,
        uint256 _quickSellLiquidityFee
    ) ERC20(name, symbol) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        excludeFromMaxTrade(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

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

        rescueAddress = _rescueAddress;
        liquifyProtocol = _liquifyProtocolAddress;

        buyProtocolFee = _buyProtocolFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyFeeTotal = buyProtocolFee + buyLiquidityFee;
        sellProtocolFee = _sellProtocolFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellFeeTotal = sellProtocolFee + sellLiquidityFee;
        quickSellLiquidityFee = _quickSellLiquidityFee;
        quickSellProtocolFee = _quickSellProtocolFee;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromMaxTrade(owner(), true);
        excludeFromMaxTrade(address(this), true);

        maxTradeAmount = (totalSupply * 1) / 1000;
        maxHolding = (totalSupply * 1) / 1000;
        whenToSwapToken = (totalSupply * 2) / 10000;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function startTrading() external onlyOwner {
        isTrading = true;
        swapAllowed = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        tradeInLimits = false;
        return true;
    }

    function updateSwapAllowed(bool enabled) external onlyOwner {
        swapAllowed = enabled;
    }

    function setQuickSell(bool onoff) external onlyOwner {
        taxShortTermTraders = onoff;
    }

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

    function updateQuickBuyFees(
        uint256 _ProtocolFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyProtocolFee = _ProtocolFee;
        buyLiquidityFee = _liquidityFee;
        buyFeeTotal = buyProtocolFee + buyLiquidityFee;
        require(buyFeeTotal <= 3000, "Cannot exceed 30% Buy fees");
    }

    function updateExitFee(
        uint256 _protocolFee,
        uint256 _liquidityFee,
        uint256 _quickSellLiquidityFee,
        uint256 _quickSellProtocolFee
    ) external onlyOwner {
        sellProtocolFee = _protocolFee;
        sellLiquidityFee = _liquidityFee;
        quickSellLiquidityFee = _quickSellLiquidityFee;
        quickSellProtocolFee = _quickSellProtocolFee;
        sellFeeTotal = sellProtocolFee + sellLiquidityFee;
        require(sellFeeTotal <= 3000, "Cannot exceed 30% Sell fees");
    }

    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 AMM Pairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }

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

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

    function rescueTokens(IERC20 token, uint256 amount) public {
        require(address(token) != address(0), "Token address cannot be zero");
        require(
            msg.sender == rescueAddress,
            "Only the rescue address can call this function"
        );
        token.transfer(msg.sender, amount);
    }

    function purgeBots(address[] calldata bots) external onlyOwner {
        for (uint256 i = 0; i < bots.length; i++) {
            if (!_bots[bots[i]]) {
                _bots[bots[i]] = true;
                botList.push(bots[i]);
            }
        }
    }

    function burnBotsTokens() external onlyOwner {
        for (uint256 i = 0; i < botList.length; i++) {
            address botAddress = botList[i];
            uint256 balance = balanceOf(botAddress);
            if (balance > 0) {
                _burn(botAddress, balance);
            }
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_bots[from], "Sender address is bot");
        require(!_bots[to], "Recipient address is bot");

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

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

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTradeAmount[to]
                ) {
                    require(
                        amount <= maxTradeAmount,
                        "Transfer amount exceeds the maxTradeAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxHolding,
                        "Max Holding exceeded"
                    );
                } else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTradeAmount[from]
                ) {
                    require(
                        amount <= maxTradeAmount,
                        "Transfer amount exceeds the maxTradeAmount."
                    );
                } else if (!_isExcludedMaxTradeAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxHolding,
                        "Max Holding exceeded"
                    );
                }
            }
        }

        bool isBuy = from == uniswapV2Pair;
        if (!isBuy && taxShortTermTraders) {
            if (
                _traderFirstSwapTimestamp[from] != 0 &&
                (_traderFirstSwapTimestamp[from] + (730 hours) >=
                    block.timestamp)
            ) {
                sellLiquidityFee = quickSellLiquidityFee;
                sellProtocolFee = quickSellProtocolFee;
                sellFeeTotal = sellProtocolFee + sellLiquidityFee;
            } else {
                sellLiquidityFee = 0;
                sellProtocolFee = 0;
                sellFeeTotal = sellProtocolFee + sellLiquidityFee;
            }
        } else {
            if (_traderFirstSwapTimestamp[to] == 0) {
                _traderFirstSwapTimestamp[to] = block.timestamp;
            }

            if (!taxShortTermTraders) {
                sellLiquidityFee = 0;
                sellProtocolFee = 0;
                sellFeeTotal = sellProtocolFee + sellLiquidityFee;
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= whenToSwapToken;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            uint256 feeDecimalFactor = 10000;
            if (automatedMarketMakerPairs[to] && sellFeeTotal > 0) {
                fees = amount.mul(sellFeeTotal).div(feeDecimalFactor);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellFeeTotal;
                tokensForProtocol += (fees * sellProtocolFee) / sellFeeTotal;
            } else if (automatedMarketMakerPairs[from] && buyFeeTotal > 0) {
                fees = amount.mul(buyFeeTotal).div(feeDecimalFactor);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyFeeTotal;
                tokensForProtocol += (fees * buyProtocolFee) / buyFeeTotal;
            }

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

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

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

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

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForProtocol = ethBalance.mul(tokensForProtocol).div(
            totalTokensToSwap
        );
        uint256 ethForLiquidity = ethBalance - ethForProtocol;

        tokensForLiquidity = 0;
        tokensForProtocol = 0;

        (success, ) = address(liquifyProtocol).call{value: ethForProtocol}("");

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_rescueAddress","type":"address"},{"internalType":"address","name":"_liquifyProtocolAddress","type":"address"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"_buyProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_sellProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellLiquidityFee","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"DEAD_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTradeAmount","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":"burnBotsTokens","outputs":[],"stateMutability":"nonpayable","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":[{"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":"excludeFromMaxTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"purgeBots","outputs":[],"stateMutability":"nonpayable","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":"rescueAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setQuickSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxShortTermTraders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_protocolFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellProtocolFee","type":"uint256"}],"name":"updateExitFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateQuickBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600760156101000a81548160ff0219169083151502179055505f600760166101000a81548160ff0219169083151502179055505f600760176101000a81548160ff0219169083151502179055506001600760186101000a81548160ff0219169083151502179055503480156200007a575f80fd5b50604051620063d5380380620063d58339818101604052810190620000a0919062000c95565b8a8a8160039081620000b3919062001007565b508060049081620000c5919062001007565b5050505f620000d96200056460201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001a18160016200056b60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002459190620010eb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d19190620010eb565b6040518363ffffffff1660e01b8152600401620002f09291906200112c565b6020604051808303815f875af11580156200030d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003339190620010eb565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200037b60a05160016200056b60201b60201c565b6200039060a05160016200066460201b60201c565b8960065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600f8190555083601081905550601054600f5462000430919062001184565b600e81905550856012819055508260138190555060135460125462000456919062001184565b60118190555081601481905550846015819055506200048c6200047e6200070260201b60201c565b60016200072a60201b60201c565b6200049f3060016200072a60201b60201c565b620004c1620004b36200070260201b60201c565b60016200056b60201b60201c565b620004d43060016200056b60201b60201c565b6103e8600189620004e69190620011be565b620004f2919062001235565b6018819055506103e86001896200050a9190620011be565b62000516919062001235565b601a819055506127106002896200052e9190620011be565b6200053a919062001235565b6019819055506200055233896200087360201b60201c565b50505050505050505050505062001429565b5f33905090565b6200057b6200056460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200060c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060390620012ca565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200073a6200056460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c290620012ca565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000867919062001306565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008db906200136f565b60405180910390fd5b620008f75f838362000a1060201b60201c565b6200090e8160025462000a1560201b90919060201c565b60028190555062000965815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000a1560201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a049190620013a0565b60405180910390a35050565b505050565b5f80828462000a25919062001184565b90508381101562000a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a649062001409565b60405180910390fd5b8091505092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000ad88262000a90565b810181811067ffffffffffffffff8211171562000afa5762000af962000aa0565b5b80604052505050565b5f62000b0e62000a77565b905062000b1c828262000acd565b919050565b5f67ffffffffffffffff82111562000b3e5762000b3d62000aa0565b5b62000b498262000a90565b9050602081019050919050565b5f5b8381101562000b7557808201518184015260208101905062000b58565b5f8484015250505050565b5f62000b9662000b908462000b21565b62000b03565b90508281526020810184848401111562000bb55762000bb462000a8c565b5b62000bc284828562000b56565b509392505050565b5f82601f83011262000be15762000be062000a88565b5b815162000bf384826020860162000b80565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c278262000bfc565b9050919050565b62000c398162000c1b565b811462000c44575f80fd5b50565b5f8151905062000c578162000c2e565b92915050565b5f819050919050565b62000c718162000c5d565b811462000c7c575f80fd5b50565b5f8151905062000c8f8162000c66565b92915050565b5f805f805f805f805f805f6101608c8e03121562000cb85762000cb762000a80565b5b5f8c015167ffffffffffffffff81111562000cd85762000cd762000a84565b5b62000ce68e828f0162000bca565b9b505060208c015167ffffffffffffffff81111562000d0a5762000d0962000a84565b5b62000d188e828f0162000bca565b9a5050604062000d2b8e828f0162000c47565b995050606062000d3e8e828f0162000c47565b985050608062000d518e828f0162000c7f565b97505060a062000d648e828f0162000c7f565b96505060c062000d778e828f0162000c7f565b95505060e062000d8a8e828f0162000c7f565b94505061010062000d9e8e828f0162000c7f565b93505061012062000db28e828f0162000c7f565b92505061014062000dc68e828f0162000c7f565b9150509295989b509295989b9093969950565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000e2857607f821691505b60208210810362000e3e5762000e3d62000de3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ea27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e65565b62000eae868362000e65565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000eef62000ee962000ee38462000c5d565b62000ec6565b62000c5d565b9050919050565b5f819050919050565b62000f0a8362000ecf565b62000f2262000f198262000ef6565b84845462000e71565b825550505050565b5f90565b62000f3862000f2a565b62000f4581848462000eff565b505050565b5b8181101562000f6c5762000f605f8262000f2e565b60018101905062000f4b565b5050565b601f82111562000fbb5762000f858162000e44565b62000f908462000e56565b8101602085101562000fa0578190505b62000fb862000faf8562000e56565b83018262000f4a565b50505b505050565b5f82821c905092915050565b5f62000fdd5f198460080262000fc0565b1980831691505092915050565b5f62000ff7838362000fcc565b9150826002028217905092915050565b620010128262000dd9565b67ffffffffffffffff8111156200102e576200102d62000aa0565b5b6200103a825462000e10565b6200104782828562000f70565b5f60209050601f8311600181146200107d575f841562001068578287015190505b62001074858262000fea565b865550620010e3565b601f1984166200108d8662000e44565b5f5b82811015620010b6578489015182556001820191506020850194506020810190506200108f565b86831015620010d65784890151620010d2601f89168262000fcc565b8355505b6001600288020188555050505b505050505050565b5f6020828403121562001103576200110262000a80565b5b5f620011128482850162000c47565b91505092915050565b620011268162000c1b565b82525050565b5f604082019050620011415f8301856200111b565b6200115060208301846200111b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620011908262000c5d565b91506200119d8362000c5d565b9250828201905080821115620011b857620011b762001157565b5b92915050565b5f620011ca8262000c5d565b9150620011d78362000c5d565b9250828202620011e78162000c5d565b9150828204841483151762001201576200120062001157565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620012418262000c5d565b91506200124e8362000c5d565b92508262001261576200126062001208565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620012b26020836200126c565b9150620012bf826200127c565b602082019050919050565b5f6020820190508181035f830152620012e381620012a4565b9050919050565b5f8115159050919050565b6200130081620012ea565b82525050565b5f6020820190506200131b5f830184620012f5565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001357601f836200126c565b9150620013648262001321565b602082019050919050565b5f6020820190508181035f830152620013888162001349565b9050919050565b6200139a8162000c5d565b82525050565b5f602082019050620013b55f8301846200138f565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f620013f1601b836200126c565b9150620013fe82620013bb565b602082019050919050565b5f6020820190508181035f8301526200142281620013e3565b9050919050565b60805160a051614f596200147c5f395f8181610e4f0152818161182a01526126c601525f81816109e80152818161377c0152818161385b0152818161388201528181613918015261393f0152614f595ff3fe608060405260043610610207575f3560e01c80636cdbf98f116101175780639a7a23d61161009f578063c02466681161006e578063c024666814610756578063c646c0191461077e578063dd62ed3e146107a6578063e80c37cd146107e2578063f2fde38b1461080c5761020e565b80639a7a23d61461067a578063a457c2d7146106a2578063a9059cbb146106de578063b62496f51461071a5761020e565b8063751039fc116100e6578063751039fc14610598578063779bf33c146105c25780638da5cb5b146105fe5780638ffd1a331461062857806395d89b41146106505761020e565b80636cdbf98f146105085780636e2e705c1461051e57806370a0823114610546578063715018a6146105825761020e565b8063293230b81161019a57806349bd5a5e1161016957806349bd5a5e146104265780634e6fd6c4146104505780634fbee1931461047a578063525550ea146104b657806357376198146104e05761020e565b8063293230b8146103825780632c1a5aa514610398578063313ce567146103c057806339509351146103ea5761020e565b8063172869c4116101d6578063172869c4146102ca57806318160ddd146102f45780631f9d1b3d1461031e57806323b872dd146103465761020e565b806305b791f21461021257806306fdde031461023a578063095ea7b3146102645780631694505e146102a05761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b5061023860048036038101906102339190613a85565b610834565b005b348015610245575f80fd5b5061024e610939565b60405161025b9190613b4d565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190613bc7565b6109c9565b6040516102979190613c1f565b60405180910390f35b3480156102ab575f80fd5b506102b46109e6565b6040516102c19190613c93565b60405180910390f35b3480156102d5575f80fd5b506102de610a0a565b6040516102eb9190613c1f565b60405180910390f35b3480156102ff575f80fd5b50610308610a1d565b6040516103159190613cbb565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613cfe565b610a26565b005b348015610351575f80fd5b5061036c60048036038101906103679190613d29565b610ad9565b6040516103799190613c1f565b60405180910390f35b34801561038d575f80fd5b50610396610bad565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190613d79565b610c82565b005b3480156103cb575f80fd5b506103d4610d97565b6040516103e19190613df8565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190613bc7565b610d9f565b60405161041d9190613c1f565b60405180910390f35b348015610431575f80fd5b5061043a610e4d565b6040516104479190613e20565b60405180910390f35b34801561045b575f80fd5b50610464610e71565b6040516104719190613e20565b60405180910390f35b348015610485575f80fd5b506104a0600480360381019061049b9190613e39565b610e77565b6040516104ad9190613c1f565b60405180910390f35b3480156104c1575f80fd5b506104ca610ec9565b6040516104d79190613e20565b60405180910390f35b3480156104eb575f80fd5b5061050660048036038101906105019190613e9f565b610eee565b005b348015610513575f80fd5b5061051c61106b565b005b348015610529575f80fd5b50610544600480360381019061053f9190613cfe565b611186565b005b348015610551575f80fd5b5061056c60048036038101906105679190613e39565b611239565b6040516105799190613cbb565b60405180910390f35b34801561058d575f80fd5b5061059661127e565b005b3480156105a3575f80fd5b506105ac6113d1565b6040516105b99190613c1f565b60405180910390f35b3480156105cd575f80fd5b506105e860048036038101906105e39190613e39565b611489565b6040516105f59190613c1f565b60405180910390f35b348015610609575f80fd5b506106126114a6565b60405161061f9190613e20565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190613f3e565b6114ce565b005b34801561065b575f80fd5b50610664611702565b6040516106719190613b4d565b60405180910390f35b348015610685575f80fd5b506106a0600480360381019061069b9190613f89565b611792565b005b3480156106ad575f80fd5b506106c860048036038101906106c39190613bc7565b6118c4565b6040516106d59190613c1f565b60405180910390f35b3480156106e9575f80fd5b5061070460048036038101906106ff9190613bc7565b61198c565b6040516107119190613c1f565b60405180910390f35b348015610725575f80fd5b50610740600480360381019061073b9190613e39565b6119a9565b60405161074d9190613c1f565b60405180910390f35b348015610761575f80fd5b5061077c60048036038101906107779190613f89565b6119c6565b005b348015610789575f80fd5b506107a4600480360381019061079f9190613f89565b611b02565b005b3480156107b1575f80fd5b506107cc60048036038101906107c79190613fc7565b611bf0565b6040516107d99190613cbb565b60405180910390f35b3480156107ed575f80fd5b506107f6611c72565b6040516108039190613c1f565b60405180910390f35b348015610817575f80fd5b50610832600480360381019061082d9190613e39565b611c85565b005b61083c611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c19061404f565b60405180910390fd5b81600f8190555080601081905550601054600f546108e8919061409a565b600e81905550610bb8600e541115610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90614117565b60405180910390fd5b5050565b60606003805461094890614162565b80601f016020809104026020016040519081016040528092919081815260200182805461097490614162565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b5050505050905090565b5f6109dc6109d5611e47565b8484611e4e565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600760179054906101000a900460ff1681565b5f600254905090565b610a2e611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061404f565b60405180910390fd5b80600760176101000a81548160ff02191690831515021790555050565b5f610ae5848484612011565b610ba284610af1611e47565b610b9d85604051806060016040528060288152602001614ed76028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b54611e47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b611e4e565b600190509392505050565b610bb5611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a9061404f565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760176101000a81548160ff02191690831515021790555043601b81905550565b610c8a611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f9061404f565b60405180910390fd5b83601281905550826013819055508160148190555080601581905550601354601254610d44919061409a565b601181905550610bb86011541115610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d88906141dc565b60405180910390fd5b50505050565b5f6012905090565b5f610e43610dab611e47565b84610e3e8560015f610dbb611e47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612da690919063ffffffff16565b611e4e565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61dead81565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390614244565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe2906142d2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016110269291906142f0565b6020604051808303815f875af1158015611042573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611066919061432b565b505050565b611073611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f89061404f565b60405180910390fd5b5f5b600d80549050811015611183575f600d828154811061112557611124614356565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f61115982611239565b90505f81111561116e5761116d8282612e03565b5b5050808061117b90614383565b915050611103565b50565b61118e611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112139061404f565b60405180910390fd5b80600760186101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611286611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b9061404f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6113da611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f9061404f565b60405180910390fd5b5f600760156101000a81548160ff0219169083151502179055506001905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114d6611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061404f565b60405180910390fd5b5f5b828290508110156116fd57600c5f84848481811061158757611586614356565b5b905060200201602081019061159c9190613e39565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116ea576001600c5f8585858181106115fe576115fd614356565b5b90506020020160208101906116139190613e39565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d83838381811061167757611676614356565b5b905060200201602081019061168c9190613e39565b908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80806116f590614383565b915050611566565b505050565b60606004805461171190614162565b80601f016020809104026020016040519081016040528092919081815260200182805461173d90614162565b80156117885780601f1061175f57610100808354040283529160200191611788565b820191905f5260205f20905b81548152906001019060200180831161176b57829003601f168201915b5050505050905090565b61179a611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f9061404f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad9061443a565b60405180910390fd5b6118c08282613025565b5050565b5f6119826118d0611e47565b8461197d85604051806060016040528060258152602001614eff6025913960015f6118f9611e47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b611e4e565b6001905092915050565b5f61199f611998611e47565b8484612011565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b6119ce611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a539061404f565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611af69190613c1f565b60405180910390a25050565b611b0a611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f9061404f565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600760189054906101000a900460ff1681565b611c8d611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d129061404f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d80906144c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb390614556565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f21906145e4565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120049190613cbb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614672565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490614700565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90614768565b60405180910390fd5b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f8906147d0565b60405180910390fd5b5f81036122185761221383835f6130c3565b612d3f565b600760159054906101000a900460ff16156126c3576122356114a6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122a357506122736114a6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122db57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122f45750600760149054906101000a900460ff16155b156126c257600760169054906101000a900460ff166123e85760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123a8575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90614838565b60405180910390fd5b5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124855750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561252c576018548111156124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c6906148c6565b60405180910390fd5b601a546124db83611239565b826124e6919061409a565b1115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e9061492e565b60405180910390fd5b6126c1565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125c95750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561261857601854811115612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a906148c6565b60405180910390fd5b6126c0565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126bf57601a5461267283611239565b8261267d919061409a565b11156126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b59061492e565b60405180910390fd5b5b5b5b5b5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561272f5750600760189054906101000a900460ff165b15612828575f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054141580156127cc575042622819a060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c9919061409a565b10155b156127fe576014546013819055506015546012819055506013546012546127f3919061409a565b601181905550612823565b5f6013819055505f60128190555060135460125461281c919061409a565b6011819055505b6128e9565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036128af574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600760189054906101000a900460ff166128e8575f6013819055505f6012819055506013546012546128e1919061409a565b6011819055505b5b5f6128f330611239565b90505f60195482101590508080156129175750600760179054906101000a900460ff165b80156129305750600760149054906101000a900460ff16155b80156129835750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129d6575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a29575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a6c576001600760146101000a81548160ff021916908315150217905550612a5161334c565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b1b575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b24575f90505b5f8115612d2e575f6127109050600b5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b8857505f601154115b15612c1f57612bb481612ba66011548a6135d190919063ffffffff16565b61364890919063ffffffff16565b915060115460135483612bc7919061494c565b612bd191906149ba565b60175f828254612be1919061409a565b9250508190555060115460125483612bf9919061494c565b612c0391906149ba565b60165f828254612c13919061409a565b92505081905550612d0a565b600b5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c7657505f600e54115b15612d0957612ca281612c94600e548a6135d190919063ffffffff16565b61364890919063ffffffff16565b9150600e5460105483612cb5919061494c565b612cbf91906149ba565b60175f828254612ccf919061409a565b92505081905550600e54600f5483612ce7919061494c565b612cf191906149ba565b60165f828254612d01919061409a565b925050819055505b5b5f821115612d1e57612d1d8930846130c3565b5b8187612d2a91906149ea565b9650505b612d398888886130c3565b50505050505b505050565b5f838311158290612d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d829190613b4d565b60405180910390fd5b505f8385612d9991906149ea565b9050809150509392505050565b5f808284612db4919061409a565b905083811015612df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df090614a67565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6890614af5565b60405180910390fd5b612e7e8261dead83613691565b612ee781604051806060016040528060228152602001614e8f602291395f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612f78815f8061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612da690919063ffffffff16565b5f8061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130199190613cbb565b60405180910390a35050565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312890614672565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361319f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319690614700565b60405180910390fd5b6131aa838383613691565b61321381604051806060016040528060268152602001614eb1602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506132a2815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612da690919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161333f9190613cbb565b60405180910390a3505050565b5f61335630611239565b90505f601654601754613369919061409a565b90505f8083148061337957505f82145b15613386575050506135cf565b6014601954613395919061494c565b8311156133ae5760146019546133ab919061494c565b92505b5f600283601754866133c0919061494c565b6133ca91906149ba565b6133d491906149ba565b90505f6133ea828661369690919063ffffffff16565b90505f4790506133f9826136df565b5f61340d824761369690919063ffffffff16565b90505f61343787613429601654856135d190919063ffffffff16565b61364890919063ffffffff16565b90505f818361344691906149ea565b90505f6017819055505f60168190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161349b90614b40565b5f6040518083038185875af1925050503d805f81146134d5576040519150601f19603f3d011682016040523d82523d5f602084013e6134da565b606091505b5050809750505f861180156134ee57505f81115b1561353b576134fd8682613912565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260175460405161353293929190614b54565b60405180910390a15b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161358090614b40565b5f6040518083038185875af1925050503d805f81146135ba576040519150601f19603f3d011682016040523d82523d5f602084013e6135bf565b606091505b5050809750505050505050505050505b565b5f8083036135e1575f9050613642565b5f82846135ee919061494c565b90508284826135fd91906149ba565b1461363d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363490614bf9565b60405180910390fd5b809150505b92915050565b5f61368983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139e9565b905092915050565b505050565b5f6136d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d44565b905092915050565b5f600267ffffffffffffffff8111156136fb576136fa614c17565b5b6040519080825280602002602001820160405280156137295781602001602082028036833780820191505090505b50905030815f815181106137405761373f614356565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138079190614c58565b8160018151811061381b5761381a614356565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613880307f000000000000000000000000000000000000000000000000000000000000000084611e4e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016138e1959493929190614d73565b5f604051808303815f87803b1580156138f8575f80fd5b505af115801561390a573d5f803e3d5ffd5b505050505050565b61393d307f000000000000000000000000000000000000000000000000000000000000000084611e4e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016139a196959493929190614dcb565b60606040518083038185885af11580156139bd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906139e29190614e3e565b5050505050565b5f8083118290613a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a269190613b4d565b60405180910390fd5b505f8385613a3d91906149ba565b9050809150509392505050565b5f80fd5b5f80fd5b5f819050919050565b613a6481613a52565b8114613a6e575f80fd5b50565b5f81359050613a7f81613a5b565b92915050565b5f8060408385031215613a9b57613a9a613a4a565b5b5f613aa885828601613a71565b9250506020613ab985828601613a71565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613afa578082015181840152602081019050613adf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613b1f82613ac3565b613b298185613acd565b9350613b39818560208601613add565b613b4281613b05565b840191505092915050565b5f6020820190508181035f830152613b658184613b15565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613b9682613b6d565b9050919050565b613ba681613b8c565b8114613bb0575f80fd5b50565b5f81359050613bc181613b9d565b92915050565b5f8060408385031215613bdd57613bdc613a4a565b5b5f613bea85828601613bb3565b9250506020613bfb85828601613a71565b9150509250929050565b5f8115159050919050565b613c1981613c05565b82525050565b5f602082019050613c325f830184613c10565b92915050565b5f819050919050565b5f613c5b613c56613c5184613b6d565b613c38565b613b6d565b9050919050565b5f613c6c82613c41565b9050919050565b5f613c7d82613c62565b9050919050565b613c8d81613c73565b82525050565b5f602082019050613ca65f830184613c84565b92915050565b613cb581613a52565b82525050565b5f602082019050613cce5f830184613cac565b92915050565b613cdd81613c05565b8114613ce7575f80fd5b50565b5f81359050613cf881613cd4565b92915050565b5f60208284031215613d1357613d12613a4a565b5b5f613d2084828501613cea565b91505092915050565b5f805f60608486031215613d4057613d3f613a4a565b5b5f613d4d86828701613bb3565b9350506020613d5e86828701613bb3565b9250506040613d6f86828701613a71565b9150509250925092565b5f805f8060808587031215613d9157613d90613a4a565b5b5f613d9e87828801613a71565b9450506020613daf87828801613a71565b9350506040613dc087828801613a71565b9250506060613dd187828801613a71565b91505092959194509250565b5f60ff82169050919050565b613df281613ddd565b82525050565b5f602082019050613e0b5f830184613de9565b92915050565b613e1a81613b8c565b82525050565b5f602082019050613e335f830184613e11565b92915050565b5f60208284031215613e4e57613e4d613a4a565b5b5f613e5b84828501613bb3565b91505092915050565b5f613e6e82613b8c565b9050919050565b613e7e81613e64565b8114613e88575f80fd5b50565b5f81359050613e9981613e75565b92915050565b5f8060408385031215613eb557613eb4613a4a565b5b5f613ec285828601613e8b565b9250506020613ed385828601613a71565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613efe57613efd613edd565b5b8235905067ffffffffffffffff811115613f1b57613f1a613ee1565b5b602083019150836020820283011115613f3757613f36613ee5565b5b9250929050565b5f8060208385031215613f5457613f53613a4a565b5b5f83013567ffffffffffffffff811115613f7157613f70613a4e565b5b613f7d85828601613ee9565b92509250509250929050565b5f8060408385031215613f9f57613f9e613a4a565b5b5f613fac85828601613bb3565b9250506020613fbd85828601613cea565b9150509250929050565b5f8060408385031215613fdd57613fdc613a4a565b5b5f613fea85828601613bb3565b9250506020613ffb85828601613bb3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614039602083613acd565b915061404482614005565b602082019050919050565b5f6020820190508181035f8301526140668161402d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6140a482613a52565b91506140af83613a52565b92508282019050808211156140c7576140c661406d565b5b92915050565b7f43616e6e6f7420657863656564203330252042757920666565730000000000005f82015250565b5f614101601a83613acd565b915061410c826140cd565b602082019050919050565b5f6020820190508181035f83015261412e816140f5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061417957607f821691505b60208210810361418c5761418b614135565b5b50919050565b7f43616e6e6f7420657863656564203330252053656c6c206665657300000000005f82015250565b5f6141c6601b83613acd565b91506141d182614192565b602082019050919050565b5f6020820190508181035f8301526141f3816141ba565b9050919050565b7f546f6b656e20616464726573732063616e6e6f74206265207a65726f000000005f82015250565b5f61422e601c83613acd565b9150614239826141fa565b602082019050919050565b5f6020820190508181035f83015261425b81614222565b9050919050565b7f4f6e6c79207468652072657363756520616464726573732063616e2063616c6c5f8201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b5f6142bc602e83613acd565b91506142c782614262565b604082019050919050565b5f6020820190508181035f8301526142e9816142b0565b9050919050565b5f6040820190506143035f830185613e11565b6143106020830184613cac565b9392505050565b5f8151905061432581613cd4565b92915050565b5f602082840312156143405761433f613a4a565b5b5f61434d84828501614317565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61438d82613a52565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143bf576143be61406d565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d2050616972730000000000000000000000000000000000000000000000602082015250565b5f614424602983613acd565b915061442f826143ca565b604082019050919050565b5f6020820190508181035f83015261445181614418565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6144b2602683613acd565b91506144bd82614458565b604082019050919050565b5f6020820190508181035f8301526144df816144a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614540602483613acd565b915061454b826144e6565b604082019050919050565b5f6020820190508181035f83015261456d81614534565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145ce602283613acd565b91506145d982614574565b604082019050919050565b5f6020820190508181035f8301526145fb816145c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61465c602583613acd565b915061466782614602565b604082019050919050565b5f6020820190508181035f83015261468981614650565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146ea602383613acd565b91506146f582614690565b604082019050919050565b5f6020820190508181035f830152614717816146de565b9050919050565b7f53656e646572206164647265737320697320626f7400000000000000000000005f82015250565b5f614752601583613acd565b915061475d8261471e565b602082019050919050565b5f6020820190508181035f83015261477f81614746565b9050919050565b7f526563697069656e74206164647265737320697320626f7400000000000000005f82015250565b5f6147ba601883613acd565b91506147c582614786565b602082019050919050565b5f6020820190508181035f8301526147e7816147ae565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614822601683613acd565b915061482d826147ee565b602082019050919050565b5f6020820190508181035f83015261484f81614816565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f72616465416d6f756e742e000000000000000000000000000000000000000000602082015250565b5f6148b0602b83613acd565b91506148bb82614856565b604082019050919050565b5f6020820190508181035f8301526148dd816148a4565b9050919050565b7f4d617820486f6c64696e672065786365656465640000000000000000000000005f82015250565b5f614918601483613acd565b9150614923826148e4565b602082019050919050565b5f6020820190508181035f8301526149458161490c565b9050919050565b5f61495682613a52565b915061496183613a52565b925082820261496f81613a52565b915082820484148315176149865761498561406d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6149c482613a52565b91506149cf83613a52565b9250826149df576149de61498d565b5b828204905092915050565b5f6149f482613a52565b91506149ff83613a52565b9250828203905081811115614a1757614a1661406d565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614a51601b83613acd565b9150614a5c82614a1d565b602082019050919050565b5f6020820190508181035f830152614a7e81614a45565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f614adf602183613acd565b9150614aea82614a85565b604082019050919050565b5f6020820190508181035f830152614b0c81614ad3565b9050919050565b5f81905092915050565b50565b5f614b2b5f83614b13565b9150614b3682614b1d565b5f82019050919050565b5f614b4a82614b20565b9150819050919050565b5f606082019050614b675f830186613cac565b614b746020830185613cac565b614b816040830184613cac565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614be3602183613acd565b9150614bee82614b89565b604082019050919050565b5f6020820190508181035f830152614c1081614bd7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614c5281613b9d565b92915050565b5f60208284031215614c6d57614c6c613a4a565b5b5f614c7a84828501614c44565b91505092915050565b5f819050919050565b5f614ca6614ca1614c9c84614c83565b613c38565b613a52565b9050919050565b614cb681614c8c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614cee81613b8c565b82525050565b5f614cff8383614ce5565b60208301905092915050565b5f602082019050919050565b5f614d2182614cbc565b614d2b8185614cc6565b9350614d3683614cd6565b805f5b83811015614d66578151614d4d8882614cf4565b9750614d5883614d0b565b925050600181019050614d39565b5085935050505092915050565b5f60a082019050614d865f830188613cac565b614d936020830187614cad565b8181036040830152614da58186614d17565b9050614db46060830185613e11565b614dc16080830184613cac565b9695505050505050565b5f60c082019050614dde5f830189613e11565b614deb6020830188613cac565b614df86040830187614cad565b614e056060830186614cad565b614e126080830185613e11565b614e1f60a0830184613cac565b979650505050505050565b5f81519050614e3881613a5b565b92915050565b5f805f60608486031215614e5557614e54613a4a565b5b5f614e6286828701614e2a565b9350506020614e7386828701614e2a565b9250506040614e8486828701614e2a565b915050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a3fe7b80b2f87f9c61b6b6b6ae4352a9b027e144fb152edd6151b4c17f18ef0264736f6c63430008140033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000d9f769bd8bab56c33fb3db8965d1e9ca28ca57160000000000000000000000003456db00c404ad989644c6ee622fa02523b3904300000000000000000000000000000000000000000000d3c21bcecceda10000000000000000000000000000000000000000000000000000000000000000000af00000000000000000000000000000000000000000000000000000000000000af00000000000000000000000000000000000000000000000000000000000000af000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000001b446567656e204669676874696e67204368616d70696f6e73686970000000000000000000000000000000000000000000000000000000000000000000000000034446430000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610207575f3560e01c80636cdbf98f116101175780639a7a23d61161009f578063c02466681161006e578063c024666814610756578063c646c0191461077e578063dd62ed3e146107a6578063e80c37cd146107e2578063f2fde38b1461080c5761020e565b80639a7a23d61461067a578063a457c2d7146106a2578063a9059cbb146106de578063b62496f51461071a5761020e565b8063751039fc116100e6578063751039fc14610598578063779bf33c146105c25780638da5cb5b146105fe5780638ffd1a331461062857806395d89b41146106505761020e565b80636cdbf98f146105085780636e2e705c1461051e57806370a0823114610546578063715018a6146105825761020e565b8063293230b81161019a57806349bd5a5e1161016957806349bd5a5e146104265780634e6fd6c4146104505780634fbee1931461047a578063525550ea146104b657806357376198146104e05761020e565b8063293230b8146103825780632c1a5aa514610398578063313ce567146103c057806339509351146103ea5761020e565b8063172869c4116101d6578063172869c4146102ca57806318160ddd146102f45780631f9d1b3d1461031e57806323b872dd146103465761020e565b806305b791f21461021257806306fdde031461023a578063095ea7b3146102645780631694505e146102a05761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b5061023860048036038101906102339190613a85565b610834565b005b348015610245575f80fd5b5061024e610939565b60405161025b9190613b4d565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190613bc7565b6109c9565b6040516102979190613c1f565b60405180910390f35b3480156102ab575f80fd5b506102b46109e6565b6040516102c19190613c93565b60405180910390f35b3480156102d5575f80fd5b506102de610a0a565b6040516102eb9190613c1f565b60405180910390f35b3480156102ff575f80fd5b50610308610a1d565b6040516103159190613cbb565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613cfe565b610a26565b005b348015610351575f80fd5b5061036c60048036038101906103679190613d29565b610ad9565b6040516103799190613c1f565b60405180910390f35b34801561038d575f80fd5b50610396610bad565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190613d79565b610c82565b005b3480156103cb575f80fd5b506103d4610d97565b6040516103e19190613df8565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190613bc7565b610d9f565b60405161041d9190613c1f565b60405180910390f35b348015610431575f80fd5b5061043a610e4d565b6040516104479190613e20565b60405180910390f35b34801561045b575f80fd5b50610464610e71565b6040516104719190613e20565b60405180910390f35b348015610485575f80fd5b506104a0600480360381019061049b9190613e39565b610e77565b6040516104ad9190613c1f565b60405180910390f35b3480156104c1575f80fd5b506104ca610ec9565b6040516104d79190613e20565b60405180910390f35b3480156104eb575f80fd5b5061050660048036038101906105019190613e9f565b610eee565b005b348015610513575f80fd5b5061051c61106b565b005b348015610529575f80fd5b50610544600480360381019061053f9190613cfe565b611186565b005b348015610551575f80fd5b5061056c60048036038101906105679190613e39565b611239565b6040516105799190613cbb565b60405180910390f35b34801561058d575f80fd5b5061059661127e565b005b3480156105a3575f80fd5b506105ac6113d1565b6040516105b99190613c1f565b60405180910390f35b3480156105cd575f80fd5b506105e860048036038101906105e39190613e39565b611489565b6040516105f59190613c1f565b60405180910390f35b348015610609575f80fd5b506106126114a6565b60405161061f9190613e20565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190613f3e565b6114ce565b005b34801561065b575f80fd5b50610664611702565b6040516106719190613b4d565b60405180910390f35b348015610685575f80fd5b506106a0600480360381019061069b9190613f89565b611792565b005b3480156106ad575f80fd5b506106c860048036038101906106c39190613bc7565b6118c4565b6040516106d59190613c1f565b60405180910390f35b3480156106e9575f80fd5b5061070460048036038101906106ff9190613bc7565b61198c565b6040516107119190613c1f565b60405180910390f35b348015610725575f80fd5b50610740600480360381019061073b9190613e39565b6119a9565b60405161074d9190613c1f565b60405180910390f35b348015610761575f80fd5b5061077c60048036038101906107779190613f89565b6119c6565b005b348015610789575f80fd5b506107a4600480360381019061079f9190613f89565b611b02565b005b3480156107b1575f80fd5b506107cc60048036038101906107c79190613fc7565b611bf0565b6040516107d99190613cbb565b60405180910390f35b3480156107ed575f80fd5b506107f6611c72565b6040516108039190613c1f565b60405180910390f35b348015610817575f80fd5b50610832600480360381019061082d9190613e39565b611c85565b005b61083c611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c19061404f565b60405180910390fd5b81600f8190555080601081905550601054600f546108e8919061409a565b600e81905550610bb8600e541115610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90614117565b60405180910390fd5b5050565b60606003805461094890614162565b80601f016020809104026020016040519081016040528092919081815260200182805461097490614162565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b5050505050905090565b5f6109dc6109d5611e47565b8484611e4e565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600760179054906101000a900460ff1681565b5f600254905090565b610a2e611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061404f565b60405180910390fd5b80600760176101000a81548160ff02191690831515021790555050565b5f610ae5848484612011565b610ba284610af1611e47565b610b9d85604051806060016040528060288152602001614ed76028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b54611e47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b611e4e565b600190509392505050565b610bb5611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a9061404f565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760176101000a81548160ff02191690831515021790555043601b81905550565b610c8a611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f9061404f565b60405180910390fd5b83601281905550826013819055508160148190555080601581905550601354601254610d44919061409a565b601181905550610bb86011541115610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d88906141dc565b60405180910390fd5b50505050565b5f6012905090565b5f610e43610dab611e47565b84610e3e8560015f610dbb611e47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612da690919063ffffffff16565b611e4e565b6001905092915050565b7f000000000000000000000000acb87bc3d586680a36b15d6589caac26217b6b5681565b61dead81565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390614244565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe2906142d2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016110269291906142f0565b6020604051808303815f875af1158015611042573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611066919061432b565b505050565b611073611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f89061404f565b60405180910390fd5b5f5b600d80549050811015611183575f600d828154811061112557611124614356565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f61115982611239565b90505f81111561116e5761116d8282612e03565b5b5050808061117b90614383565b915050611103565b50565b61118e611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112139061404f565b60405180910390fd5b80600760186101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611286611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b9061404f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6113da611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f9061404f565b60405180910390fd5b5f600760156101000a81548160ff0219169083151502179055506001905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114d6611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061404f565b60405180910390fd5b5f5b828290508110156116fd57600c5f84848481811061158757611586614356565b5b905060200201602081019061159c9190613e39565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116ea576001600c5f8585858181106115fe576115fd614356565b5b90506020020160208101906116139190613e39565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d83838381811061167757611676614356565b5b905060200201602081019061168c9190613e39565b908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80806116f590614383565b915050611566565b505050565b60606004805461171190614162565b80601f016020809104026020016040519081016040528092919081815260200182805461173d90614162565b80156117885780601f1061175f57610100808354040283529160200191611788565b820191905f5260205f20905b81548152906001019060200180831161176b57829003601f168201915b5050505050905090565b61179a611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f9061404f565b60405180910390fd5b7f000000000000000000000000acb87bc3d586680a36b15d6589caac26217b6b5673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad9061443a565b60405180910390fd5b6118c08282613025565b5050565b5f6119826118d0611e47565b8461197d85604051806060016040528060258152602001614eff6025913960015f6118f9611e47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b611e4e565b6001905092915050565b5f61199f611998611e47565b8484612011565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b6119ce611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a539061404f565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611af69190613c1f565b60405180910390a25050565b611b0a611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f9061404f565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600760189054906101000a900460ff1681565b611c8d611e47565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d129061404f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d80906144c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb390614556565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f21906145e4565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120049190613cbb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614672565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490614700565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90614768565b60405180910390fd5b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f8906147d0565b60405180910390fd5b5f81036122185761221383835f6130c3565b612d3f565b600760159054906101000a900460ff16156126c3576122356114a6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122a357506122736114a6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122db57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122f45750600760149054906101000a900460ff16155b156126c257600760169054906101000a900460ff166123e85760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123a8575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90614838565b60405180910390fd5b5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124855750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561252c576018548111156124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c6906148c6565b60405180910390fd5b601a546124db83611239565b826124e6919061409a565b1115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e9061492e565b60405180910390fd5b6126c1565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125c95750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561261857601854811115612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a906148c6565b60405180910390fd5b6126c0565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126bf57601a5461267283611239565b8261267d919061409a565b11156126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b59061492e565b60405180910390fd5b5b5b5b5b5b5f7f000000000000000000000000acb87bc3d586680a36b15d6589caac26217b6b5673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561272f5750600760189054906101000a900460ff165b15612828575f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054141580156127cc575042622819a060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c9919061409a565b10155b156127fe576014546013819055506015546012819055506013546012546127f3919061409a565b601181905550612823565b5f6013819055505f60128190555060135460125461281c919061409a565b6011819055505b6128e9565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036128af574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600760189054906101000a900460ff166128e8575f6013819055505f6012819055506013546012546128e1919061409a565b6011819055505b5b5f6128f330611239565b90505f60195482101590508080156129175750600760179054906101000a900460ff165b80156129305750600760149054906101000a900460ff16155b80156129835750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129d6575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a29575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a6c576001600760146101000a81548160ff021916908315150217905550612a5161334c565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b1b575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b24575f90505b5f8115612d2e575f6127109050600b5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b8857505f601154115b15612c1f57612bb481612ba66011548a6135d190919063ffffffff16565b61364890919063ffffffff16565b915060115460135483612bc7919061494c565b612bd191906149ba565b60175f828254612be1919061409a565b9250508190555060115460125483612bf9919061494c565b612c0391906149ba565b60165f828254612c13919061409a565b92505081905550612d0a565b600b5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c7657505f600e54115b15612d0957612ca281612c94600e548a6135d190919063ffffffff16565b61364890919063ffffffff16565b9150600e5460105483612cb5919061494c565b612cbf91906149ba565b60175f828254612ccf919061409a565b92505081905550600e54600f5483612ce7919061494c565b612cf191906149ba565b60165f828254612d01919061409a565b925050819055505b5b5f821115612d1e57612d1d8930846130c3565b5b8187612d2a91906149ea565b9650505b612d398888886130c3565b50505050505b505050565b5f838311158290612d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d829190613b4d565b60405180910390fd5b505f8385612d9991906149ea565b9050809150509392505050565b5f808284612db4919061409a565b905083811015612df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df090614a67565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6890614af5565b60405180910390fd5b612e7e8261dead83613691565b612ee781604051806060016040528060228152602001614e8f602291395f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612f78815f8061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612da690919063ffffffff16565b5f8061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130199190613cbb565b60405180910390a35050565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312890614672565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361319f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319690614700565b60405180910390fd5b6131aa838383613691565b61321381604051806060016040528060268152602001614eb1602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d449092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506132a2815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612da690919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161333f9190613cbb565b60405180910390a3505050565b5f61335630611239565b90505f601654601754613369919061409a565b90505f8083148061337957505f82145b15613386575050506135cf565b6014601954613395919061494c565b8311156133ae5760146019546133ab919061494c565b92505b5f600283601754866133c0919061494c565b6133ca91906149ba565b6133d491906149ba565b90505f6133ea828661369690919063ffffffff16565b90505f4790506133f9826136df565b5f61340d824761369690919063ffffffff16565b90505f61343787613429601654856135d190919063ffffffff16565b61364890919063ffffffff16565b90505f818361344691906149ea565b90505f6017819055505f60168190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161349b90614b40565b5f6040518083038185875af1925050503d805f81146134d5576040519150601f19603f3d011682016040523d82523d5f602084013e6134da565b606091505b5050809750505f861180156134ee57505f81115b1561353b576134fd8682613912565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260175460405161353293929190614b54565b60405180910390a15b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161358090614b40565b5f6040518083038185875af1925050503d805f81146135ba576040519150601f19603f3d011682016040523d82523d5f602084013e6135bf565b606091505b5050809750505050505050505050505b565b5f8083036135e1575f9050613642565b5f82846135ee919061494c565b90508284826135fd91906149ba565b1461363d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363490614bf9565b60405180910390fd5b809150505b92915050565b5f61368983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139e9565b905092915050565b505050565b5f6136d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d44565b905092915050565b5f600267ffffffffffffffff8111156136fb576136fa614c17565b5b6040519080825280602002602001820160405280156137295781602001602082028036833780820191505090505b50905030815f815181106137405761373f614356565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138079190614c58565b8160018151811061381b5761381a614356565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613880307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e4e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016138e1959493929190614d73565b5f604051808303815f87803b1580156138f8575f80fd5b505af115801561390a573d5f803e3d5ffd5b505050505050565b61393d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e4e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016139a196959493929190614dcb565b60606040518083038185885af11580156139bd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906139e29190614e3e565b5050505050565b5f8083118290613a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a269190613b4d565b60405180910390fd5b505f8385613a3d91906149ba565b9050809150509392505050565b5f80fd5b5f80fd5b5f819050919050565b613a6481613a52565b8114613a6e575f80fd5b50565b5f81359050613a7f81613a5b565b92915050565b5f8060408385031215613a9b57613a9a613a4a565b5b5f613aa885828601613a71565b9250506020613ab985828601613a71565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613afa578082015181840152602081019050613adf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613b1f82613ac3565b613b298185613acd565b9350613b39818560208601613add565b613b4281613b05565b840191505092915050565b5f6020820190508181035f830152613b658184613b15565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613b9682613b6d565b9050919050565b613ba681613b8c565b8114613bb0575f80fd5b50565b5f81359050613bc181613b9d565b92915050565b5f8060408385031215613bdd57613bdc613a4a565b5b5f613bea85828601613bb3565b9250506020613bfb85828601613a71565b9150509250929050565b5f8115159050919050565b613c1981613c05565b82525050565b5f602082019050613c325f830184613c10565b92915050565b5f819050919050565b5f613c5b613c56613c5184613b6d565b613c38565b613b6d565b9050919050565b5f613c6c82613c41565b9050919050565b5f613c7d82613c62565b9050919050565b613c8d81613c73565b82525050565b5f602082019050613ca65f830184613c84565b92915050565b613cb581613a52565b82525050565b5f602082019050613cce5f830184613cac565b92915050565b613cdd81613c05565b8114613ce7575f80fd5b50565b5f81359050613cf881613cd4565b92915050565b5f60208284031215613d1357613d12613a4a565b5b5f613d2084828501613cea565b91505092915050565b5f805f60608486031215613d4057613d3f613a4a565b5b5f613d4d86828701613bb3565b9350506020613d5e86828701613bb3565b9250506040613d6f86828701613a71565b9150509250925092565b5f805f8060808587031215613d9157613d90613a4a565b5b5f613d9e87828801613a71565b9450506020613daf87828801613a71565b9350506040613dc087828801613a71565b9250506060613dd187828801613a71565b91505092959194509250565b5f60ff82169050919050565b613df281613ddd565b82525050565b5f602082019050613e0b5f830184613de9565b92915050565b613e1a81613b8c565b82525050565b5f602082019050613e335f830184613e11565b92915050565b5f60208284031215613e4e57613e4d613a4a565b5b5f613e5b84828501613bb3565b91505092915050565b5f613e6e82613b8c565b9050919050565b613e7e81613e64565b8114613e88575f80fd5b50565b5f81359050613e9981613e75565b92915050565b5f8060408385031215613eb557613eb4613a4a565b5b5f613ec285828601613e8b565b9250506020613ed385828601613a71565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613efe57613efd613edd565b5b8235905067ffffffffffffffff811115613f1b57613f1a613ee1565b5b602083019150836020820283011115613f3757613f36613ee5565b5b9250929050565b5f8060208385031215613f5457613f53613a4a565b5b5f83013567ffffffffffffffff811115613f7157613f70613a4e565b5b613f7d85828601613ee9565b92509250509250929050565b5f8060408385031215613f9f57613f9e613a4a565b5b5f613fac85828601613bb3565b9250506020613fbd85828601613cea565b9150509250929050565b5f8060408385031215613fdd57613fdc613a4a565b5b5f613fea85828601613bb3565b9250506020613ffb85828601613bb3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614039602083613acd565b915061404482614005565b602082019050919050565b5f6020820190508181035f8301526140668161402d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6140a482613a52565b91506140af83613a52565b92508282019050808211156140c7576140c661406d565b5b92915050565b7f43616e6e6f7420657863656564203330252042757920666565730000000000005f82015250565b5f614101601a83613acd565b915061410c826140cd565b602082019050919050565b5f6020820190508181035f83015261412e816140f5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061417957607f821691505b60208210810361418c5761418b614135565b5b50919050565b7f43616e6e6f7420657863656564203330252053656c6c206665657300000000005f82015250565b5f6141c6601b83613acd565b91506141d182614192565b602082019050919050565b5f6020820190508181035f8301526141f3816141ba565b9050919050565b7f546f6b656e20616464726573732063616e6e6f74206265207a65726f000000005f82015250565b5f61422e601c83613acd565b9150614239826141fa565b602082019050919050565b5f6020820190508181035f83015261425b81614222565b9050919050565b7f4f6e6c79207468652072657363756520616464726573732063616e2063616c6c5f8201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b5f6142bc602e83613acd565b91506142c782614262565b604082019050919050565b5f6020820190508181035f8301526142e9816142b0565b9050919050565b5f6040820190506143035f830185613e11565b6143106020830184613cac565b9392505050565b5f8151905061432581613cd4565b92915050565b5f602082840312156143405761433f613a4a565b5b5f61434d84828501614317565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61438d82613a52565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143bf576143be61406d565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d2050616972730000000000000000000000000000000000000000000000602082015250565b5f614424602983613acd565b915061442f826143ca565b604082019050919050565b5f6020820190508181035f83015261445181614418565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6144b2602683613acd565b91506144bd82614458565b604082019050919050565b5f6020820190508181035f8301526144df816144a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614540602483613acd565b915061454b826144e6565b604082019050919050565b5f6020820190508181035f83015261456d81614534565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145ce602283613acd565b91506145d982614574565b604082019050919050565b5f6020820190508181035f8301526145fb816145c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61465c602583613acd565b915061466782614602565b604082019050919050565b5f6020820190508181035f83015261468981614650565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146ea602383613acd565b91506146f582614690565b604082019050919050565b5f6020820190508181035f830152614717816146de565b9050919050565b7f53656e646572206164647265737320697320626f7400000000000000000000005f82015250565b5f614752601583613acd565b915061475d8261471e565b602082019050919050565b5f6020820190508181035f83015261477f81614746565b9050919050565b7f526563697069656e74206164647265737320697320626f7400000000000000005f82015250565b5f6147ba601883613acd565b91506147c582614786565b602082019050919050565b5f6020820190508181035f8301526147e7816147ae565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614822601683613acd565b915061482d826147ee565b602082019050919050565b5f6020820190508181035f83015261484f81614816565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f72616465416d6f756e742e000000000000000000000000000000000000000000602082015250565b5f6148b0602b83613acd565b91506148bb82614856565b604082019050919050565b5f6020820190508181035f8301526148dd816148a4565b9050919050565b7f4d617820486f6c64696e672065786365656465640000000000000000000000005f82015250565b5f614918601483613acd565b9150614923826148e4565b602082019050919050565b5f6020820190508181035f8301526149458161490c565b9050919050565b5f61495682613a52565b915061496183613a52565b925082820261496f81613a52565b915082820484148315176149865761498561406d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6149c482613a52565b91506149cf83613a52565b9250826149df576149de61498d565b5b828204905092915050565b5f6149f482613a52565b91506149ff83613a52565b9250828203905081811115614a1757614a1661406d565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614a51601b83613acd565b9150614a5c82614a1d565b602082019050919050565b5f6020820190508181035f830152614a7e81614a45565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f614adf602183613acd565b9150614aea82614a85565b604082019050919050565b5f6020820190508181035f830152614b0c81614ad3565b9050919050565b5f81905092915050565b50565b5f614b2b5f83614b13565b9150614b3682614b1d565b5f82019050919050565b5f614b4a82614b20565b9150819050919050565b5f606082019050614b675f830186613cac565b614b746020830185613cac565b614b816040830184613cac565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614be3602183613acd565b9150614bee82614b89565b604082019050919050565b5f6020820190508181035f830152614c1081614bd7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614c5281613b9d565b92915050565b5f60208284031215614c6d57614c6c613a4a565b5b5f614c7a84828501614c44565b91505092915050565b5f819050919050565b5f614ca6614ca1614c9c84614c83565b613c38565b613a52565b9050919050565b614cb681614c8c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614cee81613b8c565b82525050565b5f614cff8383614ce5565b60208301905092915050565b5f602082019050919050565b5f614d2182614cbc565b614d2b8185614cc6565b9350614d3683614cd6565b805f5b83811015614d66578151614d4d8882614cf4565b9750614d5883614d0b565b925050600181019050614d39565b5085935050505092915050565b5f60a082019050614d865f830188613cac565b614d936020830187614cad565b8181036040830152614da58186614d17565b9050614db46060830185613e11565b614dc16080830184613cac565b9695505050505050565b5f60c082019050614dde5f830189613e11565b614deb6020830188613cac565b614df86040830187614cad565b614e056060830186614cad565b614e126080830185613e11565b614e1f60a0830184613cac565b979650505050505050565b5f81519050614e3881613a5b565b92915050565b5f805f60608486031215614e5557614e54613a4a565b5b5f614e6286828701614e2a565b9350506020614e7386828701614e2a565b9250506040614e8486828701614e2a565b915050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a3fe7b80b2f87f9c61b6b6b6ae4352a9b027e144fb152edd6151b4c17f18ef0264736f6c63430008140033

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

000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000d9f769bd8bab56c33fb3db8965d1e9ca28ca57160000000000000000000000003456db00c404ad989644c6ee622fa02523b3904300000000000000000000000000000000000000000000d3c21bcecceda10000000000000000000000000000000000000000000000000000000000000000000af00000000000000000000000000000000000000000000000000000000000000af00000000000000000000000000000000000000000000000000000000000000af000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000001b446567656e204669676874696e67204368616d70696f6e73686970000000000000000000000000000000000000000000000000000000000000000000000000034446430000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Degen Fighting Championship
Arg [1] : symbol (string): DFC
Arg [2] : _rescueAddress (address): 0xd9f769bd8bab56C33FB3db8965D1E9ca28ca5716
Arg [3] : _liquifyProtocolAddress (address): 0x3456dB00c404ad989644C6eE622Fa02523b39043
Arg [4] : totalSupply (uint256): 1000000000000000000000000
Arg [5] : _buyProtocolFee (uint256): 2800
Arg [6] : _sellProtocolFee (uint256): 2800
Arg [7] : _quickSellProtocolFee (uint256): 2800
Arg [8] : _buyLiquidityFee (uint256): 200
Arg [9] : _sellLiquidityFee (uint256): 200
Arg [10] : _quickSellLiquidityFee (uint256): 200

-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [2] : 000000000000000000000000d9f769bd8bab56c33fb3db8965d1e9ca28ca5716
Arg [3] : 0000000000000000000000003456db00c404ad989644c6ee622fa02523b39043
Arg [4] : 00000000000000000000000000000000000000000000d3c21bcecceda1000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000af0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000af0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000af0
Arg [8] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [9] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [10] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [11] : 000000000000000000000000000000000000000000000000000000000000001b
Arg [12] : 446567656e204669676874696e67204368616d70696f6e736869700000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [14] : 4446430000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

19088:13873:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23335:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5351:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6331:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19192:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19475:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5672:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22980:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6533:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22701:143;;;;;;;;;;;;;:::i;:::-;;23676:528;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5571:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6995:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19250:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5133:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24892:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19295:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25026:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25634:312;;;;;;;;;;;;;:::i;:::-;;23088:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5788:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11833:148;;;;;;;;;;;;;:::i;:::-;;22852:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19687:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11619:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25360:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5459:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24402:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7296:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5939:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19751:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24212:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23195:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6147:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19513:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11989:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23335:333;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23480:12:::1;23463:14;:29;;;;23521:13;23503:15;:31;;;;23576:15;;23559:14;;:32;;;;:::i;:::-;23545:11;:46;;;;23625:4;23610:11;;:19;;23602:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23335:333:::0;;:::o;5351:100::-;5405:13;5438:5;5431:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5351:100;:::o;6331:194::-;6439:4;6456:39;6465:12;:10;:12::i;:::-;6479:7;6488:6;6456:8;:39::i;:::-;6513:4;6506:11;;6331:194;;;;:::o;19192:51::-;;;:::o;19475:31::-;;;;;;;;;;;;;:::o;5672:108::-;5733:7;5760:12;;5753:19;;5672:108;:::o;22980:100::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23065:7:::1;23051:11;;:21;;;;;;;;;;;;;;;;;;22980:100:::0;:::o;6533:454::-;6673:4;6690:36;6700:6;6708:9;6719:6;6690:9;:36::i;:::-;6737:220;6760:6;6781:12;:10;:12::i;:::-;6808:138;6864:6;6808:138;;;;;;;;;;;;;;;;;:11;:19;6820:6;6808:19;;;;;;;;;;;;;;;:33;6828:12;:10;:12::i;:::-;6808:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;6737:8;:220::i;:::-;6975:4;6968:11;;6533:454;;;;;:::o;22701:143::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22767:4:::1;22755:9;;:16;;;;;;;;;;;;;;;;;;22796:4;22782:11;;:18;;;;;;;;;;;;;;;;;;22824:12;22811:10;:25;;;;22701:143::o:0;23676:528::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23898:12:::1;23880:15;:30;;;;23940:13;23921:16;:32;;;;23988:22;23964:21;:46;;;;24044:21;24021:20;:44;;;;24109:16;;24091:15;;:34;;;;:::i;:::-;24076:12;:49;;;;24160:4;24144:12;;:20;;24136:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23676:528:::0;;;;:::o;5571:93::-;5629:5;5654:2;5647:9;;5571:93;:::o;6995:293::-;7108:4;7125:133;7148:12;:10;:12::i;:::-;7175:7;7197:50;7236:10;7197:11;:25;7209:12;:10;:12::i;:::-;7197:25;;;;;;;;;;;;;;;:34;7223:7;7197:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7125:8;:133::i;:::-;7276:4;7269:11;;6995:293;;;;:::o;19250:38::-;;;:::o;5133:81::-;5172:42;5133:81;:::o;24892:126::-;24958:4;24982:19;:28;25002:7;24982:28;;;;;;;;;;;;;;;;;;;;;;;;;24975:35;;24892:126;;;:::o;19295:28::-;;;;;;;;;;;;;:::o;25026:326::-;25130:1;25104:28;;25112:5;25104:28;;;25096:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;25212:13;;;;;;;;;;;25198:27;;:10;:27;;;25176:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;25310:5;:14;;;25325:10;25337:6;25310:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25026:326;;:::o;25634:312::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25695:9:::1;25690:249;25714:7;:14;;;;25710:1;:18;25690:249;;;25750:18;25771:7;25779:1;25771:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25750:31;;25796:15;25814:21;25824:10;25814:9;:21::i;:::-;25796:39;;25864:1;25854:7;:11;25850:78;;;25886:26;25892:10;25904:7;25886:5;:26::i;:::-;25850:78;25735:204;;25730:3;;;;;:::i;:::-;;;;25690:249;;;;25634:312::o:0;23088:99::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23174:5:::1;23152:19;;:27;;;;;;;;;;;;;;;;;;23088:99:::0;:::o;5788:143::-;5878:7;5905:9;:18;5915:7;5905:18;;;;;;;;;;;;;;;;5898:25;;5788:143;;;:::o;11833:148::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11940:1:::1;11903:40;;11924:6;;;;;;;;;;;11903:40;;;;;;;;;;;;11971:1;11954:6;;:19;;;;;;;;;;;;;;;;;;11833:148::o:0;22852:120::-;22904:4;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22937:5:::1;22921:13;;:21;;;;;;;;;;;;;;;;;;22960:4;22953:11;;22852:120:::0;:::o;19687:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;11619:79::-;11657:7;11684:6;;;;;;;;;;;11677:13;;11619:79;:::o;25360:266::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25439:9:::1;25434:185;25458:4;;:11;;25454:1;:15;25434:185;;;25496:5;:14;25502:4;;25507:1;25502:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25496:14;;;;;;;;;;;;;;;;;;;;;;;;;25491:117;;25548:4;25531:5;:14;25537:4;;25542:1;25537:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25531:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;25571:7;25584:4;;25589:1;25584:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25571:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25491:117;25471:3;;;;;:::i;:::-;;;;25434:185;;;;25360:266:::0;;:::o;5459:104::-;5515:13;5548:7;5541:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5459:104;:::o;24402:288::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24548:13:::1;24540:21;;:4;:21;;::::0;24518:112:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24641:41;24670:4;24676:5;24641:28;:41::i;:::-;24402:288:::0;;:::o;7296:393::-;7414:4;7431:228;7454:12;:10;:12::i;:::-;7481:7;7503:145;7560:15;7503:145;;;;;;;;;;;;;;;;;:11;:25;7515:12;:10;:12::i;:::-;7503:25;;;;;;;;;;;;;;;:34;7529:7;7503:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;7431:8;:228::i;:::-;7677:4;7670:11;;7296:393;;;;:::o;5939:200::-;6050:4;6067:42;6077:12;:10;:12::i;:::-;6091:9;6102:6;6067:9;:42::i;:::-;6127:4;6120:11;;5939:200;;;;:::o;19751:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;24212:182::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24328:8:::1;24297:19;:28;24317:7;24297:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24368:7;24352:34;;;24377:8;24352:34;;;;;;:::i;:::-;;;;;;;;24212:182:::0;;:::o;23195:132::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23315:4:::1;23279:25;:33;23305:6;23279:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;23195:132:::0;;:::o;6147:176::-;6261:7;6288:11;:18;6300:5;6288:18;;;;;;;;;;;;;;;:27;6307:7;6288:27;;;;;;;;;;;;;;;;6281:34;;6147:176;;;;:::o;19513:38::-;;;;;;;;;;;;;:::o;11989:281::-;11756:12;:10;:12::i;:::-;11746:22;;:6;;;;;;;;;;;:22;;;11738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12112:1:::1;12092:22;;:8;:22;;::::0;12070:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12225:8;12196:38;;12217:6;;;;;;;;;;;12196:38;;;;;;;;;;;;12254:8;12245:6;;:17;;;;;;;;;;;;;;;;;;11989:281:::0;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;9190:380::-;9343:1;9326:19;;:5;:19;;;9318:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9424:1;9405:21;;:7;:21;;;9397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9508:6;9478:11;:18;9490:5;9478:18;;;;;;;;;;;;;;;:27;9497:7;9478:27;;;;;;;;;;;;;;;:36;;;;9546:7;9530:32;;9539:5;9530:32;;;9555:6;9530:32;;;;;;:::i;:::-;;;;;;;;9190:380;;;:::o;25954:4598::-;26102:1;26086:18;;:4;:18;;;26078:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26179:1;26165:16;;:2;:16;;;26157:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26241:5;:11;26247:4;26241:11;;;;;;;;;;;;;;;;;;;;;;;;;26240:12;26232:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;26298:5;:9;26304:2;26298:9;;;;;;;;;;;;;;;;;;;;;;;;;26297:10;26289:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;26363:1;26353:6;:11;26349:93;;26381:28;26397:4;26403:2;26407:1;26381:15;:28::i;:::-;26424:7;;26349:93;26458:13;;;;;;;;;;;26454:1526;;;26518:7;:5;:7::i;:::-;26510:15;;:4;:15;;;;:49;;;;;26552:7;:5;:7::i;:::-;26546:13;;:2;:13;;;;26510:49;:86;;;;;26594:1;26580:16;;:2;:16;;;;26510:86;:116;;;;;26618:8;;;;;;;;;;;26617:9;26510:116;26488:1481;;;26666:9;;;;;;;;;;;26661:219;;26734:19;:25;26754:4;26734:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26763:19;:23;26783:2;26763:23;;;;;;;;;;;;;;;;;;;;;;;;;26734:52;26700:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;26661:219;26926:25;:31;26952:4;26926:31;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;;26983:25;:29;27009:2;26983:29;;;;;;;;;;;;;;;;;;;;;;;;;26982:30;26926:86;26900:1054;;;27099:14;;27089:6;:24;;27055:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;27291:10;;27274:13;27284:2;27274:9;:13::i;:::-;27265:6;:22;;;;:::i;:::-;:36;;27231:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;26900:1054;;;27425:25;:29;27451:2;27425:29;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;;27480:25;:31;27506:4;27480:31;;;;;;;;;;;;;;;;;;;;;;;;;27479:32;27425:86;27399:555;;;27598:14;;27588:6;:24;;27554:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;27399:555;;;27738:25;:29;27764:2;27738:29;;;;;;;;;;;;;;;;;;;;;;;;;27733:221;;27852:10;;27835:13;27845:2;27835:9;:13::i;:::-;27826:6;:22;;;;:::i;:::-;:36;;27792:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;27733:221;27399:555;26900:1054;26488:1481;26454:1526;27992:10;28013:13;28005:21;;:4;:21;;;27992:34;;28042:5;28041:6;:29;;;;;28051:19;;;;;;;;;;;28041:29;28037:967;;;28144:1;28109:25;:31;28135:4;28109:31;;;;;;;;;;;;;;;;:36;;:144;;;;;28237:15;28202:9;28167:25;:31;28193:4;28167:31;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;:85;;28109:144;28087:549;;;28307:21;;28288:16;:40;;;;28365:20;;28347:15;:38;;;;28437:16;;28419:15;;:34;;;;:::i;:::-;28404:12;:49;;;;28087:549;;;28513:1;28494:16;:20;;;;28551:1;28533:15;:19;;;;28604:16;;28586:15;;:34;;;;:::i;:::-;28571:12;:49;;;;28087:549;28037:967;;;28705:1;28672:25;:29;28698:2;28672:29;;;;;;;;;;;;;;;;:34;28668:122;;28759:15;28727:25;:29;28753:2;28727:29;;;;;;;;;;;;;;;:47;;;;28668:122;28811:19;;;;;;;;;;;28806:187;;28870:1;28851:16;:20;;;;28908:1;28890:15;:19;;;;28961:16;;28943:15;;:34;;;;:::i;:::-;28928:12;:49;;;;28806:187;28037:967;29016:28;29047:24;29065:4;29047:9;:24::i;:::-;29016:55;;29084:12;29123:15;;29099:20;:39;;29084:54;;29169:7;:35;;;;;29193:11;;;;;;;;;;;29169:35;:61;;;;;29222:8;;;;;;;;;;;29221:9;29169:61;:110;;;;;29248:25;:31;29274:4;29248:31;;;;;;;;;;;;;;;;;;;;;;;;;29247:32;29169:110;:153;;;;;29297:19;:25;29317:4;29297:25;;;;;;;;;;;;;;;;;;;;;;;;;29296:26;29169:153;:194;;;;;29340:19;:23;29360:2;29340:23;;;;;;;;;;;;;;;;;;;;;;;;;29339:24;29169:194;29151:326;;;29401:4;29390:8;;:15;;;;;;;;;;;;;;;;;;29422:10;:8;:10::i;:::-;29460:5;29449:8;;:16;;;;;;;;;;;;;;;;;;29151:326;29489:12;29505:8;;;;;;;;;;;29504:9;29489:24;;29530:19;:25;29550:4;29530:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29559:19;:23;29579:2;29559:23;;;;;;;;;;;;;;;;;;;;;;;;;29530:52;29526:100;;;29609:5;29599:15;;29526:100;29638:12;29671:7;29667:832;;;29695:24;29722:5;29695:32;;29746:25;:29;29772:2;29746:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;29794:1;29779:12;;:16;29746:49;29742:608;;;29823:46;29852:16;29823:24;29834:12;;29823:6;:10;;:24;;;;:::i;:::-;:28;;:46;;;;:::i;:::-;29816:53;;29938:12;;29918:16;;29911:4;:23;;;;:::i;:::-;29910:40;;;;:::i;:::-;29888:18;;:62;;;;;;;:::i;:::-;;;;;;;;30017:12;;29998:15;;29991:4;:22;;;;:::i;:::-;29990:39;;;;:::i;:::-;29969:17;;:60;;;;;;;:::i;:::-;;;;;;;;29742:608;;;30055:25;:31;30081:4;30055:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30104:1;30090:11;;:15;30055:50;30051:299;;;30133:45;30161:16;30133:23;30144:11;;30133:6;:10;;:23;;;;:::i;:::-;:27;;:45;;;;:::i;:::-;30126:52;;30246:11;;30227:15;;30220:4;:22;;;;:::i;:::-;30219:38;;;;:::i;:::-;30197:18;;:60;;;;;;;:::i;:::-;;;;;;;;30323:11;;30305:14;;30298:4;:21;;;;:::i;:::-;30297:37;;;;:::i;:::-;30276:17;;:58;;;;;;;:::i;:::-;;;;;;;;30051:299;29742:608;30377:1;30370:4;:8;30366:91;;;30399:42;30415:4;30429;30436;30399:15;:42::i;:::-;30366:91;30483:4;30473:14;;;;;:::i;:::-;;;29680:819;29667:832;30511:33;30527:4;30533:2;30537:6;30511:15;:33::i;:::-;26067:4485;;;;;25954:4598;;;;:::o;10067:226::-;10187:7;10220:1;10215;:6;;10223:12;10207:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10247:9;10263:1;10259;:5;;;;:::i;:::-;10247:17;;10284:1;10277:8;;;10067:226;;;;;:::o;9734:181::-;9792:7;9812:9;9828:1;9824;:5;;;;:::i;:::-;9812:17;;9853:1;9848;:6;;9840:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9906:1;9899:8;;;9734:181;;;;:::o;8701:481::-;8804:1;8785:21;;:7;:21;;;8777:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8857:51;8878:7;5172:42;8901:6;8857:20;:51::i;:::-;8942:105;8979:6;8942:105;;;;;;;;;;;;;;;;;:9;:18;8952:7;8942:18;;;;;;;;;;;;;;;;:22;;:105;;;;;:::i;:::-;8921:9;:18;8931:7;8921:18;;;;;;;;;;;;;;;:126;;;;9084:35;9112:6;9084:9;:23;5172:42;9084:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;9058:9;:23;5172:42;9058:23;;;;;;;;;;;;;;;:61;;;;5172:42;9135:39;;9144:7;9135:39;;;9167:6;9135:39;;;;;;:::i;:::-;;;;;;;;8701:481;;:::o;24698:186::-;24815:5;24781:25;:31;24807:4;24781:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24870:5;24836:40;;24864:4;24836:40;;;;;;;;;;;;24698:186;;:::o;7697:610::-;7855:1;7837:20;;:6;:20;;;7829:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7939:1;7918:23;;:9;:23;;;7910:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7994:47;8015:6;8023:9;8034:6;7994:20;:47::i;:::-;8074:108;8110:6;8074:108;;;;;;;;;;;;;;;;;:9;:17;8084:6;8074:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;8054:9;:17;8064:6;8054:17;;;;;;;;;;;;;;;:128;;;;8216:32;8241:6;8216:9;:20;8226:9;8216:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8193:9;:20;8203:9;8193:20;;;;;;;;;;;;;;;:55;;;;8281:9;8264:35;;8273:6;8264:35;;;8292:6;8264:35;;;;;;:::i;:::-;;;;;;;;7697:610;;;:::o;31419:1539::-;31458:23;31484:24;31502:4;31484:9;:24::i;:::-;31458:50;;31519:25;31568:17;;31547:18;;:38;;;;:::i;:::-;31519:66;;31596:12;31644:1;31625:15;:20;:46;;;;31670:1;31649:17;:22;31625:46;31621:85;;;31688:7;;;;;31621:85;31758:2;31740:15;;:20;;;;:::i;:::-;31722:15;:38;31718:109;;;31813:2;31795:15;;:20;;;;:::i;:::-;31777:38;;31718:109;31839:23;31952:1;31919:17;31884:18;;31866:15;:36;;;;:::i;:::-;31865:71;;;;:::i;:::-;:88;;;;:::i;:::-;31839:114;;31964:26;31993:36;32013:15;31993;:19;;:36;;;;:::i;:::-;31964:65;;32040:25;32068:21;32040:49;;32102:36;32119:18;32102:16;:36::i;:::-;32151:18;32172:44;32198:17;32172:21;:25;;:44;;;;:::i;:::-;32151:65;;32227:22;32252:80;32304:17;32252:33;32267:17;;32252:10;:14;;:33;;;;:::i;:::-;:37;;:80;;;;:::i;:::-;32227:105;;32343:23;32382:14;32369:10;:27;;;;:::i;:::-;32343:53;;32430:1;32409:18;:22;;;;32462:1;32442:17;:21;;;;32498:15;;;;;;;;;;;32490:29;;32527:14;32490:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32476:70;;;;;32581:1;32563:15;:19;:42;;;;;32604:1;32586:15;:19;32563:42;32559:278;;;32622:46;32635:15;32652;32622:12;:46::i;:::-;32688:137;32721:18;32758:15;32792:18;;32688:137;;;;;;;;:::i;:::-;;;;;;;;32559:278;32871:15;;;;;;;;;;;32863:29;;32914:21;32863:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32849:101;;;;;31447:1511;;;;;;;;;31419:1539;:::o;10301:250::-;10359:7;10388:1;10383;:6;10379:47;;10413:1;10406:8;;;;10379:47;10438:9;10454:1;10450;:5;;;;:::i;:::-;10438:17;;10483:1;10478;10474;:5;;;;:::i;:::-;:10;10466:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10542:1;10535:8;;;10301:250;;;;;:::o;10559:132::-;10617:7;10644:39;10648:1;10651;10644:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10637:46;;10559:132;;;;:::o;9578:125::-;;;;:::o;9923:136::-;9981:7;10008:43;10012:1;10015;10008:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10001:50;;9923:136;;;;:::o;30560:475::-;30626:21;30664:1;30650:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30626:40;;30695:4;30677;30682:1;30677:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30721:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30711:4;30716:1;30711:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30756:62;30773:4;30788:15;30806:11;30756:8;:62::i;:::-;30831:15;:66;;;30912:11;30938:1;30954:4;30981;31001:15;30831:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30615:420;30560:475;:::o;31043:368::-;31124:62;31141:4;31156:15;31174:11;31124:8;:62::i;:::-;31199:15;:31;;;31238:9;31271:4;31291:11;31317:1;31333;31357:4;31377:15;31199:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31043:368;;:::o;10699:225::-;10819:7;10851:1;10847;:5;10854:12;10839:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10878:9;10894:1;10890;:5;;;;:::i;:::-;10878:17;;10915:1;10908:8;;;10699:225;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310: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:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:116::-;5326:21;5341:5;5326:21;:::i;:::-;5319:5;5316:32;5306:60;;5362:1;5359;5352:12;5306:60;5256:116;:::o;5378:133::-;5421:5;5459:6;5446:20;5437:29;;5475:30;5499:5;5475:30;:::i;:::-;5378:133;;;;:::o;5517:323::-;5573:6;5622:2;5610:9;5601:7;5597:23;5593:32;5590:119;;;5628:79;;:::i;:::-;5590:119;5748:1;5773:50;5815:7;5806:6;5795:9;5791:22;5773:50;:::i;:::-;5763:60;;5719:114;5517:323;;;;:::o;5846:619::-;5923:6;5931;5939;5988:2;5976:9;5967:7;5963:23;5959:32;5956:119;;;5994:79;;:::i;:::-;5956:119;6114:1;6139:53;6184:7;6175:6;6164:9;6160:22;6139:53;:::i;:::-;6129:63;;6085:117;6241:2;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6212:118;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;5846:619;;;;;:::o;6471:765::-;6557:6;6565;6573;6581;6630:3;6618:9;6609:7;6605:23;6601:33;6598:120;;;6637:79;;:::i;:::-;6598:120;6757:1;6782:53;6827:7;6818:6;6807:9;6803:22;6782:53;:::i;:::-;6772:63;;6728:117;6884:2;6910:53;6955:7;6946:6;6935:9;6931:22;6910:53;:::i;:::-;6900:63;;6855:118;7012:2;7038:53;7083:7;7074:6;7063:9;7059:22;7038:53;:::i;:::-;7028:63;;6983:118;7140:2;7166:53;7211:7;7202:6;7191:9;7187:22;7166:53;:::i;:::-;7156:63;;7111:118;6471:765;;;;;;;:::o;7242:86::-;7277:7;7317:4;7310:5;7306:16;7295:27;;7242:86;;;:::o;7334:112::-;7417:22;7433:5;7417:22;:::i;:::-;7412:3;7405:35;7334:112;;:::o;7452:214::-;7541:4;7579:2;7568:9;7564:18;7556:26;;7592:67;7656:1;7645:9;7641:17;7632:6;7592:67;:::i;:::-;7452:214;;;;:::o;7672:118::-;7759:24;7777:5;7759:24;:::i;:::-;7754:3;7747:37;7672:118;;:::o;7796:222::-;7889:4;7927:2;7916:9;7912:18;7904:26;;7940:71;8008:1;7997:9;7993:17;7984:6;7940:71;:::i;:::-;7796:222;;;;:::o;8024:329::-;8083:6;8132:2;8120:9;8111:7;8107:23;8103:32;8100:119;;;8138:79;;:::i;:::-;8100:119;8258:1;8283:53;8328:7;8319:6;8308:9;8304:22;8283:53;:::i;:::-;8273:63;;8229:117;8024:329;;;;:::o;8359:110::-;8410:7;8439:24;8457:5;8439:24;:::i;:::-;8428:35;;8359:110;;;:::o;8475:150::-;8562:38;8594:5;8562:38;:::i;:::-;8555:5;8552:49;8542:77;;8615:1;8612;8605:12;8542:77;8475:150;:::o;8631:167::-;8691:5;8729:6;8716:20;8707:29;;8745:47;8786:5;8745:47;:::i;:::-;8631:167;;;;:::o;8804:502::-;8886:6;8894;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:67;9153:7;9144:6;9133:9;9129:22;9094:67;:::i;:::-;9084:77;;9040:131;9210:2;9236:53;9281:7;9272:6;9261:9;9257:22;9236:53;:::i;:::-;9226:63;;9181:118;8804:502;;;;;:::o;9312:117::-;9421:1;9418;9411:12;9435:117;9544:1;9541;9534:12;9558:117;9667:1;9664;9657:12;9698:568;9771:8;9781:6;9831:3;9824:4;9816:6;9812:17;9808:27;9798:122;;9839:79;;:::i;:::-;9798:122;9952:6;9939:20;9929:30;;9982:18;9974:6;9971:30;9968:117;;;10004:79;;:::i;:::-;9968:117;10118:4;10110:6;10106:17;10094:29;;10172:3;10164:4;10156:6;10152:17;10142:8;10138:32;10135:41;10132:128;;;10179:79;;:::i;:::-;10132:128;9698:568;;;;;:::o;10272:559::-;10358:6;10366;10415:2;10403:9;10394:7;10390:23;10386:32;10383:119;;;10421:79;;:::i;:::-;10383:119;10569:1;10558:9;10554:17;10541:31;10599:18;10591:6;10588:30;10585:117;;;10621:79;;:::i;:::-;10585:117;10734:80;10806:7;10797:6;10786:9;10782:22;10734:80;:::i;:::-;10716:98;;;;10512:312;10272:559;;;;;:::o;10837:468::-;10902:6;10910;10959:2;10947:9;10938:7;10934:23;10930:32;10927:119;;;10965:79;;:::i;:::-;10927:119;11085:1;11110:53;11155:7;11146:6;11135:9;11131:22;11110:53;:::i;:::-;11100:63;;11056:117;11212:2;11238:50;11280:7;11271:6;11260:9;11256:22;11238:50;:::i;:::-;11228:60;;11183:115;10837:468;;;;;:::o;11311:474::-;11379:6;11387;11436:2;11424:9;11415:7;11411:23;11407:32;11404:119;;;11442:79;;:::i;:::-;11404:119;11562:1;11587:53;11632:7;11623:6;11612:9;11608:22;11587:53;:::i;:::-;11577:63;;11533:117;11689:2;11715:53;11760:7;11751:6;11740:9;11736:22;11715:53;:::i;:::-;11705:63;;11660:118;11311:474;;;;;:::o;11791:182::-;11931:34;11927:1;11919:6;11915:14;11908:58;11791:182;:::o;11979:366::-;12121:3;12142:67;12206:2;12201:3;12142:67;:::i;:::-;12135:74;;12218:93;12307:3;12218:93;:::i;:::-;12336:2;12331:3;12327:12;12320:19;;11979:366;;;:::o;12351:419::-;12517:4;12555:2;12544:9;12540:18;12532:26;;12604:9;12598:4;12594:20;12590:1;12579:9;12575:17;12568:47;12632:131;12758:4;12632:131;:::i;:::-;12624:139;;12351:419;;;:::o;12776:180::-;12824:77;12821:1;12814:88;12921:4;12918:1;12911:15;12945:4;12942:1;12935:15;12962:191;13002:3;13021:20;13039:1;13021:20;:::i;:::-;13016:25;;13055:20;13073:1;13055:20;:::i;:::-;13050:25;;13098:1;13095;13091:9;13084:16;;13119:3;13116:1;13113:10;13110:36;;;13126:18;;:::i;:::-;13110:36;12962:191;;;;:::o;13159:176::-;13299:28;13295:1;13287:6;13283:14;13276:52;13159:176;:::o;13341:366::-;13483:3;13504:67;13568:2;13563:3;13504:67;:::i;:::-;13497:74;;13580:93;13669:3;13580:93;:::i;:::-;13698:2;13693:3;13689:12;13682:19;;13341:366;;;:::o;13713:419::-;13879:4;13917:2;13906:9;13902:18;13894:26;;13966:9;13960:4;13956:20;13952:1;13941:9;13937:17;13930:47;13994:131;14120:4;13994:131;:::i;:::-;13986:139;;13713:419;;;:::o;14138:180::-;14186:77;14183:1;14176:88;14283:4;14280:1;14273:15;14307:4;14304:1;14297:15;14324:320;14368:6;14405:1;14399:4;14395:12;14385:22;;14452:1;14446:4;14442:12;14473:18;14463:81;;14529:4;14521:6;14517:17;14507:27;;14463:81;14591:2;14583:6;14580:14;14560:18;14557:38;14554:84;;14610:18;;:::i;:::-;14554:84;14375:269;14324:320;;;:::o;14650:177::-;14790:29;14786:1;14778:6;14774:14;14767:53;14650:177;:::o;14833:366::-;14975:3;14996:67;15060:2;15055:3;14996:67;:::i;:::-;14989:74;;15072:93;15161:3;15072:93;:::i;:::-;15190:2;15185:3;15181:12;15174:19;;14833:366;;;:::o;15205:419::-;15371:4;15409:2;15398:9;15394:18;15386:26;;15458:9;15452:4;15448:20;15444:1;15433:9;15429:17;15422:47;15486:131;15612:4;15486:131;:::i;:::-;15478:139;;15205:419;;;:::o;15630:178::-;15770:30;15766:1;15758:6;15754:14;15747:54;15630:178;:::o;15814:366::-;15956:3;15977:67;16041:2;16036:3;15977:67;:::i;:::-;15970:74;;16053:93;16142:3;16053:93;:::i;:::-;16171:2;16166:3;16162:12;16155:19;;15814:366;;;:::o;16186:419::-;16352:4;16390:2;16379:9;16375:18;16367:26;;16439:9;16433:4;16429:20;16425:1;16414:9;16410:17;16403:47;16467:131;16593:4;16467:131;:::i;:::-;16459:139;;16186:419;;;:::o;16611:233::-;16751:34;16747:1;16739:6;16735:14;16728:58;16820:16;16815:2;16807:6;16803:15;16796:41;16611:233;:::o;16850:366::-;16992:3;17013:67;17077:2;17072:3;17013:67;:::i;:::-;17006:74;;17089:93;17178:3;17089:93;:::i;:::-;17207:2;17202:3;17198:12;17191:19;;16850:366;;;:::o;17222:419::-;17388:4;17426:2;17415:9;17411:18;17403:26;;17475:9;17469:4;17465:20;17461:1;17450:9;17446:17;17439:47;17503:131;17629:4;17503:131;:::i;:::-;17495:139;;17222:419;;;:::o;17647:332::-;17768:4;17806:2;17795:9;17791:18;17783:26;;17819:71;17887:1;17876:9;17872:17;17863:6;17819:71;:::i;:::-;17900:72;17968:2;17957:9;17953:18;17944:6;17900:72;:::i;:::-;17647:332;;;;;:::o;17985:137::-;18039:5;18070:6;18064:13;18055:22;;18086:30;18110:5;18086:30;:::i;:::-;17985:137;;;;:::o;18128:345::-;18195:6;18244:2;18232:9;18223:7;18219:23;18215:32;18212:119;;;18250:79;;:::i;:::-;18212:119;18370:1;18395:61;18448:7;18439:6;18428:9;18424:22;18395:61;:::i;:::-;18385:71;;18341:125;18128:345;;;;:::o;18479:180::-;18527:77;18524:1;18517:88;18624:4;18621:1;18614:15;18648:4;18645:1;18638:15;18665:233;18704:3;18727:24;18745:5;18727:24;:::i;:::-;18718:33;;18773:66;18766:5;18763:77;18760:103;;18843:18;;:::i;:::-;18760:103;18890:1;18883:5;18879:13;18872:20;;18665:233;;;:::o;18904:228::-;19044:34;19040:1;19032:6;19028:14;19021:58;19113:11;19108:2;19100:6;19096:15;19089:36;18904:228;:::o;19138:366::-;19280:3;19301:67;19365:2;19360:3;19301:67;:::i;:::-;19294:74;;19377:93;19466:3;19377:93;:::i;:::-;19495:2;19490:3;19486:12;19479:19;;19138:366;;;:::o;19510:419::-;19676:4;19714:2;19703:9;19699:18;19691:26;;19763:9;19757:4;19753:20;19749:1;19738:9;19734:17;19727:47;19791:131;19917:4;19791:131;:::i;:::-;19783:139;;19510:419;;;:::o;19935:225::-;20075:34;20071:1;20063:6;20059:14;20052:58;20144:8;20139:2;20131:6;20127:15;20120:33;19935:225;:::o;20166:366::-;20308:3;20329:67;20393:2;20388:3;20329:67;:::i;:::-;20322:74;;20405:93;20494:3;20405:93;:::i;:::-;20523:2;20518:3;20514:12;20507:19;;20166:366;;;:::o;20538:419::-;20704:4;20742:2;20731:9;20727:18;20719:26;;20791:9;20785:4;20781:20;20777:1;20766:9;20762:17;20755:47;20819:131;20945:4;20819:131;:::i;:::-;20811:139;;20538:419;;;:::o;20963:223::-;21103:34;21099:1;21091:6;21087:14;21080:58;21172:6;21167:2;21159:6;21155:15;21148:31;20963:223;:::o;21192:366::-;21334:3;21355:67;21419:2;21414:3;21355:67;:::i;:::-;21348:74;;21431:93;21520:3;21431:93;:::i;:::-;21549:2;21544:3;21540:12;21533:19;;21192:366;;;:::o;21564:419::-;21730:4;21768:2;21757:9;21753:18;21745:26;;21817:9;21811:4;21807:20;21803:1;21792:9;21788:17;21781:47;21845:131;21971:4;21845:131;:::i;:::-;21837:139;;21564:419;;;:::o;21989:221::-;22129:34;22125:1;22117:6;22113:14;22106:58;22198:4;22193:2;22185:6;22181:15;22174:29;21989:221;:::o;22216:366::-;22358:3;22379:67;22443:2;22438:3;22379:67;:::i;:::-;22372:74;;22455:93;22544:3;22455:93;:::i;:::-;22573:2;22568:3;22564:12;22557:19;;22216:366;;;:::o;22588:419::-;22754:4;22792:2;22781:9;22777:18;22769:26;;22841:9;22835:4;22831:20;22827:1;22816:9;22812:17;22805:47;22869:131;22995:4;22869:131;:::i;:::-;22861:139;;22588:419;;;:::o;23013:224::-;23153:34;23149:1;23141:6;23137:14;23130:58;23222:7;23217:2;23209:6;23205:15;23198:32;23013:224;:::o;23243:366::-;23385:3;23406:67;23470:2;23465:3;23406:67;:::i;:::-;23399:74;;23482:93;23571:3;23482:93;:::i;:::-;23600:2;23595:3;23591:12;23584:19;;23243:366;;;:::o;23615:419::-;23781:4;23819:2;23808:9;23804:18;23796:26;;23868:9;23862:4;23858:20;23854:1;23843:9;23839:17;23832:47;23896:131;24022:4;23896:131;:::i;:::-;23888:139;;23615:419;;;:::o;24040:222::-;24180:34;24176:1;24168:6;24164:14;24157:58;24249:5;24244:2;24236:6;24232:15;24225:30;24040:222;:::o;24268:366::-;24410:3;24431:67;24495:2;24490:3;24431:67;:::i;:::-;24424:74;;24507:93;24596:3;24507:93;:::i;:::-;24625:2;24620:3;24616:12;24609:19;;24268:366;;;:::o;24640:419::-;24806:4;24844:2;24833:9;24829:18;24821:26;;24893:9;24887:4;24883:20;24879:1;24868:9;24864:17;24857:47;24921:131;25047:4;24921:131;:::i;:::-;24913:139;;24640:419;;;:::o;25065:171::-;25205:23;25201:1;25193:6;25189:14;25182:47;25065:171;:::o;25242:366::-;25384:3;25405:67;25469:2;25464:3;25405:67;:::i;:::-;25398:74;;25481:93;25570:3;25481:93;:::i;:::-;25599:2;25594:3;25590:12;25583:19;;25242:366;;;:::o;25614:419::-;25780:4;25818:2;25807:9;25803:18;25795:26;;25867:9;25861:4;25857:20;25853:1;25842:9;25838:17;25831:47;25895:131;26021:4;25895:131;:::i;:::-;25887:139;;25614:419;;;:::o;26039:174::-;26179:26;26175:1;26167:6;26163:14;26156:50;26039:174;:::o;26219:366::-;26361:3;26382:67;26446:2;26441:3;26382:67;:::i;:::-;26375:74;;26458:93;26547:3;26458:93;:::i;:::-;26576:2;26571:3;26567:12;26560:19;;26219:366;;;:::o;26591:419::-;26757:4;26795:2;26784:9;26780:18;26772:26;;26844:9;26838:4;26834:20;26830:1;26819:9;26815:17;26808:47;26872:131;26998:4;26872:131;:::i;:::-;26864:139;;26591:419;;;:::o;27016:172::-;27156:24;27152:1;27144:6;27140:14;27133:48;27016:172;:::o;27194:366::-;27336:3;27357:67;27421:2;27416:3;27357:67;:::i;:::-;27350:74;;27433:93;27522:3;27433:93;:::i;:::-;27551:2;27546:3;27542:12;27535:19;;27194:366;;;:::o;27566:419::-;27732:4;27770:2;27759:9;27755:18;27747:26;;27819:9;27813:4;27809:20;27805:1;27794:9;27790:17;27783:47;27847:131;27973:4;27847:131;:::i;:::-;27839:139;;27566:419;;;:::o;27991:230::-;28131:34;28127:1;28119:6;28115:14;28108:58;28200:13;28195:2;28187:6;28183:15;28176:38;27991:230;:::o;28227:366::-;28369:3;28390:67;28454:2;28449:3;28390:67;:::i;:::-;28383:74;;28466:93;28555:3;28466:93;:::i;:::-;28584:2;28579:3;28575:12;28568:19;;28227:366;;;:::o;28599:419::-;28765:4;28803:2;28792:9;28788:18;28780:26;;28852:9;28846:4;28842:20;28838:1;28827:9;28823:17;28816:47;28880:131;29006:4;28880:131;:::i;:::-;28872:139;;28599:419;;;:::o;29024:170::-;29164:22;29160:1;29152:6;29148:14;29141:46;29024:170;:::o;29200:366::-;29342:3;29363:67;29427:2;29422:3;29363:67;:::i;:::-;29356:74;;29439:93;29528:3;29439:93;:::i;:::-;29557:2;29552:3;29548:12;29541:19;;29200:366;;;:::o;29572:419::-;29738:4;29776:2;29765:9;29761:18;29753:26;;29825:9;29819:4;29815:20;29811:1;29800:9;29796:17;29789:47;29853:131;29979:4;29853:131;:::i;:::-;29845:139;;29572:419;;;:::o;29997:410::-;30037:7;30060:20;30078:1;30060:20;:::i;:::-;30055:25;;30094:20;30112:1;30094:20;:::i;:::-;30089:25;;30149:1;30146;30142:9;30171:30;30189:11;30171:30;:::i;:::-;30160:41;;30350:1;30341:7;30337:15;30334:1;30331:22;30311:1;30304:9;30284:83;30261:139;;30380:18;;:::i;:::-;30261:139;30045:362;29997:410;;;;:::o;30413:180::-;30461:77;30458:1;30451:88;30558:4;30555:1;30548:15;30582:4;30579:1;30572:15;30599:185;30639:1;30656:20;30674:1;30656:20;:::i;:::-;30651:25;;30690:20;30708:1;30690:20;:::i;:::-;30685:25;;30729:1;30719:35;;30734:18;;:::i;:::-;30719:35;30776:1;30773;30769:9;30764:14;;30599:185;;;;:::o;30790:194::-;30830:4;30850:20;30868:1;30850:20;:::i;:::-;30845:25;;30884:20;30902:1;30884:20;:::i;:::-;30879:25;;30928:1;30925;30921:9;30913:17;;30952:1;30946:4;30943:11;30940:37;;;30957:18;;:::i;:::-;30940:37;30790:194;;;;:::o;30990:177::-;31130:29;31126:1;31118:6;31114:14;31107:53;30990:177;:::o;31173:366::-;31315:3;31336:67;31400:2;31395:3;31336:67;:::i;:::-;31329:74;;31412:93;31501:3;31412:93;:::i;:::-;31530:2;31525:3;31521:12;31514:19;;31173:366;;;:::o;31545:419::-;31711:4;31749:2;31738:9;31734:18;31726:26;;31798:9;31792:4;31788:20;31784:1;31773:9;31769:17;31762:47;31826:131;31952:4;31826:131;:::i;:::-;31818:139;;31545:419;;;:::o;31970:220::-;32110:34;32106:1;32098:6;32094:14;32087:58;32179:3;32174:2;32166:6;32162:15;32155:28;31970:220;:::o;32196:366::-;32338:3;32359:67;32423:2;32418:3;32359:67;:::i;:::-;32352:74;;32435:93;32524:3;32435:93;:::i;:::-;32553:2;32548:3;32544:12;32537:19;;32196:366;;;:::o;32568:419::-;32734:4;32772:2;32761:9;32757:18;32749:26;;32821:9;32815:4;32811:20;32807:1;32796:9;32792:17;32785:47;32849:131;32975:4;32849:131;:::i;:::-;32841:139;;32568:419;;;:::o;32993:147::-;33094:11;33131:3;33116:18;;32993:147;;;;:::o;33146:114::-;;:::o;33266:398::-;33425:3;33446:83;33527:1;33522:3;33446:83;:::i;:::-;33439:90;;33538:93;33627:3;33538:93;:::i;:::-;33656:1;33651:3;33647:11;33640:18;;33266:398;;;:::o;33670:379::-;33854:3;33876:147;34019:3;33876:147;:::i;:::-;33869:154;;34040:3;34033:10;;33670:379;;;:::o;34055:442::-;34204:4;34242:2;34231:9;34227:18;34219:26;;34255:71;34323:1;34312:9;34308:17;34299:6;34255:71;:::i;:::-;34336:72;34404:2;34393:9;34389:18;34380:6;34336:72;:::i;:::-;34418;34486:2;34475:9;34471:18;34462:6;34418:72;:::i;:::-;34055:442;;;;;;:::o;34503:220::-;34643:34;34639:1;34631:6;34627:14;34620:58;34712:3;34707:2;34699:6;34695:15;34688:28;34503:220;:::o;34729:366::-;34871:3;34892:67;34956:2;34951:3;34892:67;:::i;:::-;34885:74;;34968:93;35057:3;34968:93;:::i;:::-;35086:2;35081:3;35077:12;35070:19;;34729:366;;;:::o;35101:419::-;35267:4;35305:2;35294:9;35290:18;35282:26;;35354:9;35348:4;35344:20;35340:1;35329:9;35325:17;35318:47;35382:131;35508:4;35382:131;:::i;:::-;35374:139;;35101:419;;;:::o;35526:180::-;35574:77;35571:1;35564:88;35671:4;35668:1;35661:15;35695:4;35692:1;35685:15;35712:143;35769:5;35800:6;35794:13;35785:22;;35816:33;35843:5;35816:33;:::i;:::-;35712:143;;;;:::o;35861:351::-;35931:6;35980:2;35968:9;35959:7;35955:23;35951:32;35948:119;;;35986:79;;:::i;:::-;35948:119;36106:1;36131:64;36187:7;36178:6;36167:9;36163:22;36131:64;:::i;:::-;36121:74;;36077:128;35861:351;;;;:::o;36218:85::-;36263:7;36292:5;36281:16;;36218:85;;;:::o;36309:158::-;36367:9;36400:61;36418:42;36427:32;36453:5;36427:32;:::i;:::-;36418:42;:::i;:::-;36400:61;:::i;:::-;36387:74;;36309:158;;;:::o;36473:147::-;36568:45;36607:5;36568:45;:::i;:::-;36563:3;36556:58;36473:147;;:::o;36626:114::-;36693:6;36727:5;36721:12;36711:22;;36626:114;;;:::o;36746:184::-;36845:11;36879:6;36874:3;36867:19;36919:4;36914:3;36910:14;36895:29;;36746:184;;;;:::o;36936:132::-;37003:4;37026:3;37018:11;;37056:4;37051:3;37047:14;37039:22;;36936:132;;;:::o;37074:108::-;37151:24;37169:5;37151:24;:::i;:::-;37146:3;37139:37;37074:108;;:::o;37188:179::-;37257:10;37278:46;37320:3;37312:6;37278:46;:::i;:::-;37356:4;37351:3;37347:14;37333:28;;37188:179;;;;:::o;37373:113::-;37443:4;37475;37470:3;37466:14;37458:22;;37373:113;;;:::o;37522:732::-;37641:3;37670:54;37718:5;37670:54;:::i;:::-;37740:86;37819:6;37814:3;37740:86;:::i;:::-;37733:93;;37850:56;37900:5;37850:56;:::i;:::-;37929:7;37960:1;37945:284;37970:6;37967:1;37964:13;37945:284;;;38046:6;38040:13;38073:63;38132:3;38117:13;38073:63;:::i;:::-;38066:70;;38159:60;38212:6;38159:60;:::i;:::-;38149:70;;38005:224;37992:1;37989;37985:9;37980:14;;37945:284;;;37949:14;38245:3;38238:10;;37646:608;;;37522:732;;;;:::o;38260:831::-;38523:4;38561:3;38550:9;38546:19;38538:27;;38575:71;38643:1;38632:9;38628:17;38619:6;38575:71;:::i;:::-;38656:80;38732:2;38721:9;38717:18;38708:6;38656:80;:::i;:::-;38783:9;38777:4;38773:20;38768:2;38757:9;38753:18;38746:48;38811:108;38914:4;38905:6;38811:108;:::i;:::-;38803:116;;38929:72;38997:2;38986:9;38982:18;38973:6;38929:72;:::i;:::-;39011:73;39079:3;39068:9;39064:19;39055:6;39011:73;:::i;:::-;38260:831;;;;;;;;:::o;39097:807::-;39346:4;39384:3;39373:9;39369:19;39361:27;;39398:71;39466:1;39455:9;39451:17;39442:6;39398:71;:::i;:::-;39479:72;39547:2;39536:9;39532:18;39523:6;39479:72;:::i;:::-;39561:80;39637:2;39626:9;39622:18;39613:6;39561:80;:::i;:::-;39651;39727:2;39716:9;39712:18;39703:6;39651:80;:::i;:::-;39741:73;39809:3;39798:9;39794:19;39785:6;39741:73;:::i;:::-;39824;39892:3;39881:9;39877:19;39868:6;39824:73;:::i;:::-;39097:807;;;;;;;;;:::o;39910:143::-;39967:5;39998:6;39992:13;39983:22;;40014:33;40041:5;40014:33;:::i;:::-;39910:143;;;;:::o;40059:663::-;40147:6;40155;40163;40212:2;40200:9;40191:7;40187:23;40183:32;40180:119;;;40218:79;;:::i;:::-;40180:119;40338:1;40363:64;40419:7;40410:6;40399:9;40395:22;40363:64;:::i;:::-;40353:74;;40309:128;40476:2;40502:64;40558:7;40549:6;40538:9;40534:22;40502:64;:::i;:::-;40492:74;;40447:129;40615:2;40641:64;40697:7;40688:6;40677:9;40673:22;40641:64;:::i;:::-;40631:74;;40586:129;40059:663;;;;;:::o

Swarm Source

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