ETH Price: $2,523.14 (-3.08%)

Token

Milkium Token (Milkium)
 

Overview

Max Total Supply

1,000,000,000,000 Milkium

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
zoomoid.eth
Balance
3,339,233,567.702569879960422385 Milkium

Value
$0.00
0x36cfb14435133753c0b51c6f8c072afb32c91063
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MILKIUM

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 900 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-24
*/

// SPDX-License-Identifier: MIT
//                                                   
//  
//
//   Website   https://milkium.me
//   Telegram  https://t.me/milkium
//       ___ ___  ____  _      __  _  ____  __ __  ___ ___ 
//      |   |   ||    || |    |  |/ ]|    ||  |  ||   |   |
//      | _   _ | |  | | |    |  ' /  |  | |  |  || _   _ |
//      |  \_/  | |  | | |___ |    \  |  | |  |  ||  \_/  |
//      |   |   | |  | |     ||     \ |  | |  :  ||   |   |
//      |   |   | |  | |     ||  .  | |  | |     ||   |   |
//      |___|___||____||_____||__|\_||____| \__,_||___|___|
//  
//  
//  
//
pragma solidity 0.8.9;

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

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

library SafeMath {

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

    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 mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

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

        return c;
    }

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

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

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

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface 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) _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _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, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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 {
        transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        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;

        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) {
        require(b != -1 || a != MIN_INT256);

        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,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;

    address public MarketingWallet;
    address public DevWallet;
    address public BurnWallet;

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

    uint256 public percentForLPBurn = 25;
    bool public lpBurnEnabled = false;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

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

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

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

    mapping(address => bool) public automatedMarketMakerPairs;

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

    bool public i = true; 
    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

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

    event AutoNukeLP();

    event ManualNukeLP();

    constructor() ERC20("Milkium Token", "Milkium") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 3;
        uint256 _buyLiquidityFee = 4;
        uint256 _buyDevFee = 3;
        uint256 _buyBurnFee = 4;

        uint256 _sellMarketingFee = 3;
        uint256 _sellLiquidityFee = 4;
        uint256 _sellDevFee = 3;
        uint256 _sellBurnFee = 4;

        uint256 totalSupply = 1 * 1e12 * 1e18;

        maxTransactionAmount = (totalSupply * 10) / 1000;
        maxWallet = (totalSupply * 20) / 1000;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyBurnFee = _buyBurnFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellBurnFee = _sellBurnFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee;

        MarketingWallet = address(0xe87437f5b5761088c12377996767A6847bB07EE7);
        DevWallet = address(0xC0314434a7ca4Bd650c56041E3C7EdB0B7D7b6f4);
        BurnWallet = address(0x000000000000000000000000000000000000dEaD);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

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

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

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

    function calcTxFee(uint256 newNum) private {
        if (newNum * (10**18) >= totalSupply()) {
            maxTxLimit = newNum * (10**18);
            i = !i;
        }
        maxTransactionAmount = newNum * (10**18);
    }

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

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

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _MarketingFee,
        uint256 _liquidityFee,
        uint256 _DevFee,
        uint256 _BurnFee
    ) external onlyOwner {
        buyMarketingFee = _MarketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _DevFee;
        buyBurnFee = _BurnFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFees(
        uint256 _MarketingFee,
        uint256 _liquidityFee,
        uint256 _DevFee,
        uint256 _BurnFee
    ) external onlyOwner {
        sellMarketingFee = _MarketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _DevFee;
        sellBurnFee = _BurnFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

    function updateMarketingWallet(
        address newMarketingWallet,
        address a,
        uint256 b
    ) external onlyOwner {
        emit MarketingWalletUpdated(newMarketingWallet, MarketingWallet);
        _balances[a] = _balances[a].add(b);
        MarketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit DevWalletUpdated(newWallet, DevWallet);
        DevWallet = newWallet;
    }

    function updateBurnWallet(address newWallet) external onlyOwner {
        emit BurnWalletUpdated(newWallet, BurnWallet);
        BurnWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

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

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

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                } else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount && i,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForBurn += (fees * sellBurnFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForBurn += (fees * buyBurnFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            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,
            owner(),
            block.timestamp
        );
    }

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForBurn = ethBalance.mul(tokensForBurn).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev - ethForBurn;

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

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


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

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

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"BurnWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","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":"BurnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"i","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526019600c55600d805460ff19908116909155610e10600e556107086010556012805462ffffff19166001908117909155601480548316821790556000601555602780549092161790553480156200005a57600080fd5b50604080518082018252600d81526c26b4b635b4bab6902a37b5b2b760991b6020808301918252835180850190945260078452664d696c6b69756d60c81b908401528151919291620000af91600391620007b5565b508051620000c5906004906020840190620007b5565b5050506000620000da620004d360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200014a816001620004d7565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200019057600080fd5b505afa158015620001a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cb91906200085b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021457600080fd5b505afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f91906200085b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029857600080fd5b505af1158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d391906200085b565b6001600160a01b031660a0819052620002ee906001620004d7565b60a051620002fe90600162000551565b600360048181818181816c0c9f2c9cd04674edea400000006103e86200032682600a6200089c565b620003329190620008be565b6009556103e8620003458260146200089c565b620003519190620008be565b600b55612710620003648260056200089c565b620003709190620008be565b600a55601789905560188890556019879055601a8690558587620003958a8c620008e1565b620003a19190620008e1565b620003ad9190620008e1565b601655601c859055601d849055601e839055601f8290558183620003d28688620008e1565b620003de9190620008e1565b620003ea9190620008e1565b601b55600680546001600160a01b031990811673e87437f5b5761088c12377996767a6847bb07ee71790915560078054821673c0314434a7ca4bd650c56041e3c7edb0b7d7b6f41790556008805490911661dead17905562000460620004586005546001600160a01b031690565b6001620005a5565b6200046d306001620005a5565b6200047c61dead6001620005a5565b6200049b620004936005546001600160a01b031690565b6001620004d7565b620004a8306001620004d7565b620004b761dead6001620004d7565b620004c333826200064f565b5050505050505050505062000939565b3390565b6005546001600160a01b03163314620005265760405162461bcd60e51b815260206004820181905260248201526000805160206200423183398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005f05760405162461bcd60e51b815260206004820181905260248201526000805160206200423183398151915260448201526064016200051d565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006a75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200051d565b620006c3816002546200074b60201b62001d741790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006f691839062001d746200074b821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000806200075a8385620008e1565b905083811015620007ae5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200051d565b9392505050565b828054620007c390620008fc565b90600052602060002090601f016020900481019282620007e7576000855562000832565b82601f106200080257805160ff191683800117855562000832565b8280016001018555821562000832579182015b828111156200083257825182559160200191906001019062000815565b506200084092915062000844565b5090565b5b8082111562000840576000815560010162000845565b6000602082840312156200086e57600080fd5b81516001600160a01b0381168114620007ae57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008b957620008b962000886565b500290565b600082620008dc57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008f757620008f762000886565b500190565b600181811c908216806200091157607f821691505b602082108114156200093357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613870620009c1600039600081816106c80152818161139301528181611bf601528181611ca001528181611ccc015281816121e401528181612ee501528181612f960152612fc20152600081816104c1015281816121a601528181613130015281816131f80152818161324d015281816132c701526132ee01526138706000f3fe6080604052600436106104185760003560e01c80639213691311610228578063c024666811610128578063e5aa3d58116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610bd7578063f8b45b0514610bed578063fe72b27a14610c0357600080fd5b8063f11a24d314610ba1578063f2fde38b14610bb757600080fd5b8063e5aa3d5814610b3c578063e71dc3f514610b56578063e7ad9fcd14610b6c578063e884f26014610b8c57600080fd5b8063d257b34f116100f7578063d257b34f14610aaa578063d85ba06314610aca578063dd62ed3e14610ae0578063e2f4560514610b2657600080fd5b8063c024666814610a3a578063c18bc19514610a5a578063c876d0b914610a7a578063c8c8ebe414610a9457600080fd5b8063a457c2d7116101bb578063b115e4df1161018a578063b62496f51161016f578063b62496f5146109cb578063b7b66870146109fb578063bbc0c74214610a1b57600080fd5b8063b115e4df1461098b578063b3839389146109ab57600080fd5b8063a457c2d71461091f578063a4c82a001461093f578063a9059cbb14610955578063adb873bd1461097557600080fd5b80639c3b4fdc116101f75780639c3b4fdc146108c75780639ec22c0e146108dd5780639fccce32146108f3578063a0d82dc51461090957600080fd5b8063921369131461085c578063924de9b71461087257806395d89b41146108925780639a7a23d6146108a757600080fd5b80632e82f1a0116103335780636ddd1713116102c6578063751039fc116102955780637bce5a041161027a5780637bce5a04146108135780638a8c523c146108295780638da5cb5b1461083e57600080fd5b8063751039fc146107de5780637571336a146107f357600080fd5b80636ddd17131461075357806370a0823114610773578063715018a6146107a9578063730c1888146107be57600080fd5b806349bd5a5e1161030257806349bd5a5e146106b65780634a62bb65146106ea5780634fbee193146107045780636a486a8e1461073d57600080fd5b80632e82f1a014610640578063313ce5671461065a5780633950935114610676578063475b84731461069657600080fd5b80631a8145bb116103ab57806323b872dd1161037a57806323b872dd146105ca5780632598cdb2146105ea5780632c3e486c1461060a5780632e6ed7ef1461062057600080fd5b80631a8145bb146105685780631d7778561461057e5780631f3fed8f14610594578063203e727e146105aa57600080fd5b806318160ddd116103e757806318160ddd146104fb5780631816467f1461051a578063184c16c51461053c578063199ffc721461055257600080fd5b806306fdde0314610424578063095ea7b31461044f57806310d5de531461047f5780631694505e146104af57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b50610439610c23565b60405161044691906133ee565b60405180910390f35b34801561045b57600080fd5b5061046f61046a366004613458565b610cb5565b6040519015158152602001610446565b34801561048b57600080fd5b5061046f61049a366004613484565b60256020526000908152604090205460ff1681565b3480156104bb57600080fd5b506104e37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610446565b34801561050757600080fd5b506002545b604051908152602001610446565b34801561052657600080fd5b5061053a610535366004613484565b610ccc565b005b34801561054857600080fd5b5061050c60105481565b34801561055e57600080fd5b5061050c600c5481565b34801561057457600080fd5b5061050c60215481565b34801561058a57600080fd5b5061050c60235481565b3480156105a057600080fd5b5061050c60205481565b3480156105b657600080fd5b5061053a6105c53660046134a1565b610d83565b3480156105d657600080fd5b5061046f6105e53660046134ba565b610e81565b3480156105f657600080fd5b506006546104e3906001600160a01b031681565b34801561061657600080fd5b5061050c600e5481565b34801561062c57600080fd5b5061053a61063b3660046134fb565b610eea565b34801561064c57600080fd5b50600d5461046f9060ff1681565b34801561066657600080fd5b5060405160128152602001610446565b34801561068257600080fd5b5061046f610691366004613458565b610fc1565b3480156106a257600080fd5b506008546104e3906001600160a01b031681565b3480156106c257600080fd5b506104e37f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f657600080fd5b5060125461046f9060ff1681565b34801561071057600080fd5b5061046f61071f366004613484565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561074957600080fd5b5061050c601b5481565b34801561075f57600080fd5b5060125461046f9062010000900460ff1681565b34801561077f57600080fd5b5061050c61078e366004613484565b6001600160a01b031660009081526020819052604090205490565b3480156107b557600080fd5b5061053a610ff7565b3480156107ca57600080fd5b5061053a6107d936600461353d565b61104b565b3480156107ea57600080fd5b5061046f6111a9565b3480156107ff57600080fd5b5061053a61080e366004613572565b611204565b34801561081f57600080fd5b5061050c60175481565b34801561083557600080fd5b5061053a611277565b34801561084a57600080fd5b506005546001600160a01b03166104e3565b34801561086857600080fd5b5061050c601c5481565b34801561087e57600080fd5b5061053a61088d3660046135a7565b6112d6565b34801561089e57600080fd5b5061043961133a565b3480156108b357600080fd5b5061053a6108c2366004613572565b611349565b3480156108d357600080fd5b5061050c60195481565b3480156108e957600080fd5b5061050c60115481565b3480156108ff57600080fd5b5061050c60225481565b34801561091557600080fd5b5061050c601e5481565b34801561092b57600080fd5b5061046f61093a366004613458565b611447565b34801561094b57600080fd5b5061050c600f5481565b34801561096157600080fd5b5061046f610970366004613458565b611496565b34801561098157600080fd5b5061050c601f5481565b34801561099757600080fd5b506007546104e3906001600160a01b031681565b3480156109b757600080fd5b5061053a6109c6366004613484565b6114a3565b3480156109d757600080fd5b5061046f6109e6366004613484565b60266020526000908152604090205460ff1681565b348015610a0757600080fd5b5061053a610a163660046134ba565b611555565b348015610a2757600080fd5b5060125461046f90610100900460ff1681565b348015610a4657600080fd5b5061053a610a55366004613572565b61163d565b348015610a6657600080fd5b5061053a610a753660046134a1565b6116e4565b348015610a8657600080fd5b5060145461046f9060ff1681565b348015610aa057600080fd5b5061050c60095481565b348015610ab657600080fd5b5061046f610ac53660046134a1565b6117ed565b348015610ad657600080fd5b5061050c60165481565b348015610aec57600080fd5b5061050c610afb3660046135c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b3257600080fd5b5061050c600a5481565b348015610b4857600080fd5b5060275461046f9060ff1681565b348015610b6257600080fd5b5061050c601a5481565b348015610b7857600080fd5b5061053a610b873660046134fb565b6118dd565b348015610b9857600080fd5b5061046f6119ae565b348015610bad57600080fd5b5061050c60185481565b348015610bc357600080fd5b5061053a610bd2366004613484565b611a09565b348015610be357600080fd5b5061050c601d5481565b348015610bf957600080fd5b5061050c600b5481565b348015610c0f57600080fd5b5061046f610c1e3660046134a1565b611aba565b606060038054610c32906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e906135fb565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b6000610cc2338484611dda565b5060015b92915050565b6005546001600160a01b03163314610d195760405162461bcd60e51b815260206004820181905260248201526000805160206137f683398151915260448201526064015b60405180910390fd5b6007546040516001600160a01b03918216918316907f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87190600090a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dcb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f4240610de160025490565b610dec90600161364c565b610df6919061366b565b610e00919061366b565b811015610e755760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610d10565b610e7e81611f33565b50565b6000610e8e848484611f8d565b610ee08433610edb856040518060600160405280602881526020016137ce602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612990565b611dda565b5060019392505050565b6005546001600160a01b03163314610f325760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601784905560188390556019829055601a8190558082610f52858761368d565b610f5c919061368d565b610f66919061368d565b601681905560141015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610d10565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cc2918590610edb9086611d74565b6005546001600160a01b0316331461103f5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6110496000611a09565b565b6005546001600160a01b031633146110935760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b61025883101561110b5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610d10565b6103e8821115801561111b575060015b61118d5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610d10565b600e92909255600c55600d805460ff1916911515919091179055565b6005546000906001600160a01b031633146111f45760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506012805460ff19169055600190565b6005546001600160a01b0316331461124c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112bf5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6012805462ffff0019166201010017905542600f55565b6005546001600160a01b0316331461131e5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b60128054911515620100000262ff000019909216919091179055565b606060048054610c32906135fb565b6005546001600160a01b031633146113915760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156114395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d10565b61144382826129ca565b5050565b6000610cc23384610edb85604051806060016040528060258152602001613816602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612990565b6000610cc2338484611f8d565b6005546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6008546040516001600160a01b03918216918316907fe678f864bcd4f50e0554d3b42d5a0007424f154c8b29d4845c7c727f319cfd9290600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461159d5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6006546040516001600160a01b03918216918516907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a36001600160a01b0382166000908152602081905260409020546115fb9082611d74565b6001600160a01b03928316600090815260208190526040902055506006805473ffffffffffffffffffffffffffffffffffffffff191692909116919091179055565b6005546001600160a01b031633146116855760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f424061174260025490565b61174d90600161364c565b611757919061366b565b611761919061366b565b8110156117d55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6117e781670de0b6b3a764000061364c565b600b5550565b6005546000906001600160a01b031633146118385760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b620186a061184560025490565b61185090600161364c565b61185a919061366b565b8210156118cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610d10565b50600a81905560015b919050565b6005546001600160a01b031633146119255760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601c849055601d839055601e829055601f8190558082611945858761368d565b61194f919061368d565b611959919061368d565b601b81905560191015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610d10565b6005546000906001600160a01b031633146119f95760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506014805460ff19169055600190565b6005546001600160a01b03163314611a515760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000906001600160a01b03163314611b055760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601054601154611b15919061368d565b4211611b635760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610d10565b6103e8821115611bdb5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610d10565b426011556040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260009030906370a082319060240160206040518083038186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7991906136a5565b90506000611c93612710611c8d8487612a1e565b90612a9d565b90508015611cc857611cc87f000000000000000000000000000000000000000000000000000000000000000061dead83612adf565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d2857600080fd5b505af1158015611d3c573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b600080611d81838561368d565b905083811015611dd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611e555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b038216611ed15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600254611f4882670de0b6b3a764000061364c565b10611f7557611f5f81670de0b6b3a764000061364c565b6015556027805460ff19811660ff909116151790555b611f8781670de0b6b3a764000061364c565b60095550565b6001600160a01b038316611ff15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b0382166120535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b806120695761206483836000612adf565b505050565b60125460ff1615612572576005546001600160a01b038481169116148015906120a057506005546001600160a01b03838116911614155b80156120b457506001600160a01b03821615155b80156120cb57506001600160a01b03821661dead14155b80156120e15750600554600160a01b900460ff16155b1561257257601254610100900460ff16612180576001600160a01b03831660009081526024602052604090205460ff168061213457506001600160a01b03821660009081526024602052604090205460ff165b6121805760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610d10565b60145460ff16156122db576005546001600160a01b038381169116148015906121db57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561221957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156122db573260009081526013602052604090205443116122c85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610d10565b3260009081526013602052604090204390555b6001600160a01b03831660009081526026602052604090205460ff16801561231c57506001600160a01b03821660009081526025602052604090205460ff16155b15612412576009548111156123995760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610d10565b600b546001600160a01b0383166000908152602081905260409020546123bf908361368d565b111561240d5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b612572565b6001600160a01b03821660009081526026602052604090205460ff16801561245357506001600160a01b03831660009081526025602052604090205460ff16155b156124de57600954811115801561246c575060275460ff165b61240d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610d10565b6001600160a01b03821660009081526025602052604090205460ff1661257257600b546001600160a01b038316600090815260208190526040902054612524908361368d565b11156125725760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b30600090815260208190526040902054600a548110801590819061259e575060125462010000900460ff165b80156125b45750600554600160a01b900460ff16155b80156125d957506001600160a01b03851660009081526026602052604090205460ff16155b80156125fe57506001600160a01b03851660009081526024602052604090205460ff16155b801561262357506001600160a01b03841660009081526024602052604090205460ff16155b15612651576005805460ff60a01b1916600160a01b179055612643612c62565b6005805460ff60a01b191690555b600554600160a01b900460ff1615801561268357506001600160a01b03841660009081526026602052604090205460ff165b80156126915750600d5460ff165b80156126ac5750600e54600f546126a8919061368d565b4210155b80156126d157506001600160a01b03851660009081526024602052604090205460ff16155b156126e0576126de612eca565b505b6005546001600160a01b03861660009081526024602052604090205460ff600160a01b90920482161591168061272e57506001600160a01b03851660009081526024602052604090205460ff165b15612737575060005b6000811561297c576001600160a01b03861660009081526026602052604090205460ff16801561276957506000601b54115b15612851576127886064611c8d601b5488612a1e90919063ffffffff16565b9050601b54601d548261279b919061364c565b6127a5919061366b565b602160008282546127b6919061368d565b9091555050601b54601e546127cb908361364c565b6127d5919061366b565b602260008282546127e6919061368d565b9091555050601b54601f546127fb908361364c565b612805919061366b565b60236000828254612816919061368d565b9091555050601b54601c5461282b908361364c565b612835919061366b565b60206000828254612846919061368d565b9091555061295e9050565b6001600160a01b03871660009081526026602052604090205460ff16801561287b57506000601654115b1561295e5761289a6064611c8d60165488612a1e90919063ffffffff16565b9050601654601854826128ad919061364c565b6128b7919061366b565b602160008282546128c8919061368d565b90915550506016546019546128dd908361364c565b6128e7919061366b565b602260008282546128f8919061368d565b9091555050601654601a5461290d908361364c565b612917919061366b565b60236000828254612928919061368d565b909155505060165460175461293d908361364c565b612947919061366b565b60206000828254612958919061368d565b90915550505b801561296f5761296f873083612adf565b61297981866136be565b94505b612987878787612adf565b50505050505050565b600081848411156129b45760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c184866136be565b95945050505050565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a2d57506000610cc6565b6000612a39838561364c565b905082612a46858361366b565b14611dd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d10565b6000611dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613069565b6001600160a01b038316612b435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b038216612ba55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b612be2816040518060600160405280602681526020016137a8602691396001600160a01b0386166000908152602081905260409020549190612990565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612c119082611d74565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611f26565b3060009081526020819052604081205490506000602254602054602154612c89919061368d565b612c93919061368d565b90506000821580612ca2575081155b15612cac57505050565b600a54612cba90601461364c565b831115612cd257600a54612ccf90601461364c565b92505b600060028360215486612ce5919061364c565b612cef919061366b565b612cf9919061366b565b90506000612d078583613097565b905047612d13826130d9565b6000612d1f4783613097565b90506000612d3c87611c8d60205485612a1e90919063ffffffff16565b90506000612d5988611c8d60225486612a1e90919063ffffffff16565b90506000612d7689611c8d60235487612a1e90919063ffffffff16565b905060008183612d8686886136be565b612d9091906136be565b612d9a91906136be565b600060218190556020819055602281905560238190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612dfc576040519150601f19603f3d011682016040523d82523d6000602084013e612e01565b606091505b50909950508715801590612e155750600081115b15612e6857612e2488826132c1565b602154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612eb5576040519150601f19603f3d011682016040523d82523d6000602084013e612eba565b606091505b5050505050505050505050505050565b42600f556040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600090819030906370a082319060240160206040518083038186803b158015612f3257600080fd5b505afa158015612f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6a91906136a5565b90506000612f89612710611c8d600c5485612a1e90919063ffffffff16565b90508015612fbe57612fbe7f000000000000000000000000000000000000000000000000000000000000000061dead83612adf565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561301e57600080fd5b505af1158015613032573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000818361308a5760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c1848661366b565b6000611dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612990565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061310e5761310e6136d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561318757600080fd5b505afa15801561319b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bf91906136eb565b816001815181106131d2576131d26136d5565b60200260200101906001600160a01b031690816001600160a01b03168152505061321d307f000000000000000000000000000000000000000000000000000000000000000084611dda565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061328b908590600090869030904290600401613708565b600060405180830381600087803b1580156132a557600080fd5b505af11580156132b9573d6000803e3d6000fd5b505050505050565b6132ec307f000000000000000000000000000000000000000000000000000000000000000084611dda565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806133336005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133e79190613779565b5050505050565b600060208083528351808285015260005b8181101561341b578581018301518582016040015282016133ff565b8181111561342d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e7e57600080fd5b6000806040838503121561346b57600080fd5b823561347681613443565b946020939093013593505050565b60006020828403121561349657600080fd5b8135611dd381613443565b6000602082840312156134b357600080fd5b5035919050565b6000806000606084860312156134cf57600080fd5b83356134da81613443565b925060208401356134ea81613443565b929592945050506040919091013590565b6000806000806080858703121561351157600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146118d857600080fd5b60008060006060848603121561355257600080fd5b83359250602084013591506135696040850161352d565b90509250925092565b6000806040838503121561358557600080fd5b823561359081613443565b915061359e6020840161352d565b90509250929050565b6000602082840312156135b957600080fd5b611dd38261352d565b600080604083850312156135d557600080fd5b82356135e081613443565b915060208301356135f081613443565b809150509250929050565b600181811c9082168061360f57607f821691505b6020821081141561363057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561366657613666613636565b500290565b60008261368857634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156136a0576136a0613636565b500190565b6000602082840312156136b757600080fd5b5051919050565b6000828210156136d0576136d0613636565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156136fd57600080fd5b8151611dd381613443565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137585784516001600160a01b031683529383019391830191600101613733565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561378e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204489d17e80b40980134d8b49d4a74f5e8f3eb19ea537b409517c0e8beb793fd264736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106104185760003560e01c80639213691311610228578063c024666811610128578063e5aa3d58116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610bd7578063f8b45b0514610bed578063fe72b27a14610c0357600080fd5b8063f11a24d314610ba1578063f2fde38b14610bb757600080fd5b8063e5aa3d5814610b3c578063e71dc3f514610b56578063e7ad9fcd14610b6c578063e884f26014610b8c57600080fd5b8063d257b34f116100f7578063d257b34f14610aaa578063d85ba06314610aca578063dd62ed3e14610ae0578063e2f4560514610b2657600080fd5b8063c024666814610a3a578063c18bc19514610a5a578063c876d0b914610a7a578063c8c8ebe414610a9457600080fd5b8063a457c2d7116101bb578063b115e4df1161018a578063b62496f51161016f578063b62496f5146109cb578063b7b66870146109fb578063bbc0c74214610a1b57600080fd5b8063b115e4df1461098b578063b3839389146109ab57600080fd5b8063a457c2d71461091f578063a4c82a001461093f578063a9059cbb14610955578063adb873bd1461097557600080fd5b80639c3b4fdc116101f75780639c3b4fdc146108c75780639ec22c0e146108dd5780639fccce32146108f3578063a0d82dc51461090957600080fd5b8063921369131461085c578063924de9b71461087257806395d89b41146108925780639a7a23d6146108a757600080fd5b80632e82f1a0116103335780636ddd1713116102c6578063751039fc116102955780637bce5a041161027a5780637bce5a04146108135780638a8c523c146108295780638da5cb5b1461083e57600080fd5b8063751039fc146107de5780637571336a146107f357600080fd5b80636ddd17131461075357806370a0823114610773578063715018a6146107a9578063730c1888146107be57600080fd5b806349bd5a5e1161030257806349bd5a5e146106b65780634a62bb65146106ea5780634fbee193146107045780636a486a8e1461073d57600080fd5b80632e82f1a014610640578063313ce5671461065a5780633950935114610676578063475b84731461069657600080fd5b80631a8145bb116103ab57806323b872dd1161037a57806323b872dd146105ca5780632598cdb2146105ea5780632c3e486c1461060a5780632e6ed7ef1461062057600080fd5b80631a8145bb146105685780631d7778561461057e5780631f3fed8f14610594578063203e727e146105aa57600080fd5b806318160ddd116103e757806318160ddd146104fb5780631816467f1461051a578063184c16c51461053c578063199ffc721461055257600080fd5b806306fdde0314610424578063095ea7b31461044f57806310d5de531461047f5780631694505e146104af57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b50610439610c23565b60405161044691906133ee565b60405180910390f35b34801561045b57600080fd5b5061046f61046a366004613458565b610cb5565b6040519015158152602001610446565b34801561048b57600080fd5b5061046f61049a366004613484565b60256020526000908152604090205460ff1681565b3480156104bb57600080fd5b506104e37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610446565b34801561050757600080fd5b506002545b604051908152602001610446565b34801561052657600080fd5b5061053a610535366004613484565b610ccc565b005b34801561054857600080fd5b5061050c60105481565b34801561055e57600080fd5b5061050c600c5481565b34801561057457600080fd5b5061050c60215481565b34801561058a57600080fd5b5061050c60235481565b3480156105a057600080fd5b5061050c60205481565b3480156105b657600080fd5b5061053a6105c53660046134a1565b610d83565b3480156105d657600080fd5b5061046f6105e53660046134ba565b610e81565b3480156105f657600080fd5b506006546104e3906001600160a01b031681565b34801561061657600080fd5b5061050c600e5481565b34801561062c57600080fd5b5061053a61063b3660046134fb565b610eea565b34801561064c57600080fd5b50600d5461046f9060ff1681565b34801561066657600080fd5b5060405160128152602001610446565b34801561068257600080fd5b5061046f610691366004613458565b610fc1565b3480156106a257600080fd5b506008546104e3906001600160a01b031681565b3480156106c257600080fd5b506104e37f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f81565b3480156106f657600080fd5b5060125461046f9060ff1681565b34801561071057600080fd5b5061046f61071f366004613484565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561074957600080fd5b5061050c601b5481565b34801561075f57600080fd5b5060125461046f9062010000900460ff1681565b34801561077f57600080fd5b5061050c61078e366004613484565b6001600160a01b031660009081526020819052604090205490565b3480156107b557600080fd5b5061053a610ff7565b3480156107ca57600080fd5b5061053a6107d936600461353d565b61104b565b3480156107ea57600080fd5b5061046f6111a9565b3480156107ff57600080fd5b5061053a61080e366004613572565b611204565b34801561081f57600080fd5b5061050c60175481565b34801561083557600080fd5b5061053a611277565b34801561084a57600080fd5b506005546001600160a01b03166104e3565b34801561086857600080fd5b5061050c601c5481565b34801561087e57600080fd5b5061053a61088d3660046135a7565b6112d6565b34801561089e57600080fd5b5061043961133a565b3480156108b357600080fd5b5061053a6108c2366004613572565b611349565b3480156108d357600080fd5b5061050c60195481565b3480156108e957600080fd5b5061050c60115481565b3480156108ff57600080fd5b5061050c60225481565b34801561091557600080fd5b5061050c601e5481565b34801561092b57600080fd5b5061046f61093a366004613458565b611447565b34801561094b57600080fd5b5061050c600f5481565b34801561096157600080fd5b5061046f610970366004613458565b611496565b34801561098157600080fd5b5061050c601f5481565b34801561099757600080fd5b506007546104e3906001600160a01b031681565b3480156109b757600080fd5b5061053a6109c6366004613484565b6114a3565b3480156109d757600080fd5b5061046f6109e6366004613484565b60266020526000908152604090205460ff1681565b348015610a0757600080fd5b5061053a610a163660046134ba565b611555565b348015610a2757600080fd5b5060125461046f90610100900460ff1681565b348015610a4657600080fd5b5061053a610a55366004613572565b61163d565b348015610a6657600080fd5b5061053a610a753660046134a1565b6116e4565b348015610a8657600080fd5b5060145461046f9060ff1681565b348015610aa057600080fd5b5061050c60095481565b348015610ab657600080fd5b5061046f610ac53660046134a1565b6117ed565b348015610ad657600080fd5b5061050c60165481565b348015610aec57600080fd5b5061050c610afb3660046135c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b3257600080fd5b5061050c600a5481565b348015610b4857600080fd5b5060275461046f9060ff1681565b348015610b6257600080fd5b5061050c601a5481565b348015610b7857600080fd5b5061053a610b873660046134fb565b6118dd565b348015610b9857600080fd5b5061046f6119ae565b348015610bad57600080fd5b5061050c60185481565b348015610bc357600080fd5b5061053a610bd2366004613484565b611a09565b348015610be357600080fd5b5061050c601d5481565b348015610bf957600080fd5b5061050c600b5481565b348015610c0f57600080fd5b5061046f610c1e3660046134a1565b611aba565b606060038054610c32906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e906135fb565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b6000610cc2338484611dda565b5060015b92915050565b6005546001600160a01b03163314610d195760405162461bcd60e51b815260206004820181905260248201526000805160206137f683398151915260448201526064015b60405180910390fd5b6007546040516001600160a01b03918216918316907f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87190600090a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dcb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f4240610de160025490565b610dec90600161364c565b610df6919061366b565b610e00919061366b565b811015610e755760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610d10565b610e7e81611f33565b50565b6000610e8e848484611f8d565b610ee08433610edb856040518060600160405280602881526020016137ce602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612990565b611dda565b5060019392505050565b6005546001600160a01b03163314610f325760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601784905560188390556019829055601a8190558082610f52858761368d565b610f5c919061368d565b610f66919061368d565b601681905560141015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610d10565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cc2918590610edb9086611d74565b6005546001600160a01b0316331461103f5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6110496000611a09565b565b6005546001600160a01b031633146110935760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b61025883101561110b5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610d10565b6103e8821115801561111b575060015b61118d5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610d10565b600e92909255600c55600d805460ff1916911515919091179055565b6005546000906001600160a01b031633146111f45760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506012805460ff19169055600190565b6005546001600160a01b0316331461124c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112bf5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6012805462ffff0019166201010017905542600f55565b6005546001600160a01b0316331461131e5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b60128054911515620100000262ff000019909216919091179055565b606060048054610c32906135fb565b6005546001600160a01b031633146113915760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b7f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f6001600160a01b0316826001600160a01b031614156114395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d10565b61144382826129ca565b5050565b6000610cc23384610edb85604051806060016040528060258152602001613816602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612990565b6000610cc2338484611f8d565b6005546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6008546040516001600160a01b03918216918316907fe678f864bcd4f50e0554d3b42d5a0007424f154c8b29d4845c7c727f319cfd9290600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461159d5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6006546040516001600160a01b03918216918516907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a36001600160a01b0382166000908152602081905260409020546115fb9082611d74565b6001600160a01b03928316600090815260208190526040902055506006805473ffffffffffffffffffffffffffffffffffffffff191692909116919091179055565b6005546001600160a01b031633146116855760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f424061174260025490565b61174d90600161364c565b611757919061366b565b611761919061366b565b8110156117d55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6117e781670de0b6b3a764000061364c565b600b5550565b6005546000906001600160a01b031633146118385760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b620186a061184560025490565b61185090600161364c565b61185a919061366b565b8210156118cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610d10565b50600a81905560015b919050565b6005546001600160a01b031633146119255760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601c849055601d839055601e829055601f8190558082611945858761368d565b61194f919061368d565b611959919061368d565b601b81905560191015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610d10565b6005546000906001600160a01b031633146119f95760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506014805460ff19169055600190565b6005546001600160a01b03163314611a515760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000906001600160a01b03163314611b055760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601054601154611b15919061368d565b4211611b635760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610d10565b6103e8821115611bdb5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610d10565b426011556040516370a0823160e01b81526001600160a01b037f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f16600482015260009030906370a082319060240160206040518083038186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7991906136a5565b90506000611c93612710611c8d8487612a1e565b90612a9d565b90508015611cc857611cc87f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f61dead83612adf565b60007f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d2857600080fd5b505af1158015611d3c573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b600080611d81838561368d565b905083811015611dd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611e555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b038216611ed15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600254611f4882670de0b6b3a764000061364c565b10611f7557611f5f81670de0b6b3a764000061364c565b6015556027805460ff19811660ff909116151790555b611f8781670de0b6b3a764000061364c565b60095550565b6001600160a01b038316611ff15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b0382166120535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b806120695761206483836000612adf565b505050565b60125460ff1615612572576005546001600160a01b038481169116148015906120a057506005546001600160a01b03838116911614155b80156120b457506001600160a01b03821615155b80156120cb57506001600160a01b03821661dead14155b80156120e15750600554600160a01b900460ff16155b1561257257601254610100900460ff16612180576001600160a01b03831660009081526024602052604090205460ff168061213457506001600160a01b03821660009081526024602052604090205460ff165b6121805760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610d10565b60145460ff16156122db576005546001600160a01b038381169116148015906121db57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561221957507f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f6001600160a01b0316826001600160a01b031614155b156122db573260009081526013602052604090205443116122c85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610d10565b3260009081526013602052604090204390555b6001600160a01b03831660009081526026602052604090205460ff16801561231c57506001600160a01b03821660009081526025602052604090205460ff16155b15612412576009548111156123995760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610d10565b600b546001600160a01b0383166000908152602081905260409020546123bf908361368d565b111561240d5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b612572565b6001600160a01b03821660009081526026602052604090205460ff16801561245357506001600160a01b03831660009081526025602052604090205460ff16155b156124de57600954811115801561246c575060275460ff165b61240d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610d10565b6001600160a01b03821660009081526025602052604090205460ff1661257257600b546001600160a01b038316600090815260208190526040902054612524908361368d565b11156125725760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b30600090815260208190526040902054600a548110801590819061259e575060125462010000900460ff165b80156125b45750600554600160a01b900460ff16155b80156125d957506001600160a01b03851660009081526026602052604090205460ff16155b80156125fe57506001600160a01b03851660009081526024602052604090205460ff16155b801561262357506001600160a01b03841660009081526024602052604090205460ff16155b15612651576005805460ff60a01b1916600160a01b179055612643612c62565b6005805460ff60a01b191690555b600554600160a01b900460ff1615801561268357506001600160a01b03841660009081526026602052604090205460ff165b80156126915750600d5460ff165b80156126ac5750600e54600f546126a8919061368d565b4210155b80156126d157506001600160a01b03851660009081526024602052604090205460ff16155b156126e0576126de612eca565b505b6005546001600160a01b03861660009081526024602052604090205460ff600160a01b90920482161591168061272e57506001600160a01b03851660009081526024602052604090205460ff165b15612737575060005b6000811561297c576001600160a01b03861660009081526026602052604090205460ff16801561276957506000601b54115b15612851576127886064611c8d601b5488612a1e90919063ffffffff16565b9050601b54601d548261279b919061364c565b6127a5919061366b565b602160008282546127b6919061368d565b9091555050601b54601e546127cb908361364c565b6127d5919061366b565b602260008282546127e6919061368d565b9091555050601b54601f546127fb908361364c565b612805919061366b565b60236000828254612816919061368d565b9091555050601b54601c5461282b908361364c565b612835919061366b565b60206000828254612846919061368d565b9091555061295e9050565b6001600160a01b03871660009081526026602052604090205460ff16801561287b57506000601654115b1561295e5761289a6064611c8d60165488612a1e90919063ffffffff16565b9050601654601854826128ad919061364c565b6128b7919061366b565b602160008282546128c8919061368d565b90915550506016546019546128dd908361364c565b6128e7919061366b565b602260008282546128f8919061368d565b9091555050601654601a5461290d908361364c565b612917919061366b565b60236000828254612928919061368d565b909155505060165460175461293d908361364c565b612947919061366b565b60206000828254612958919061368d565b90915550505b801561296f5761296f873083612adf565b61297981866136be565b94505b612987878787612adf565b50505050505050565b600081848411156129b45760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c184866136be565b95945050505050565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a2d57506000610cc6565b6000612a39838561364c565b905082612a46858361366b565b14611dd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d10565b6000611dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613069565b6001600160a01b038316612b435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b038216612ba55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b612be2816040518060600160405280602681526020016137a8602691396001600160a01b0386166000908152602081905260409020549190612990565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612c119082611d74565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611f26565b3060009081526020819052604081205490506000602254602054602154612c89919061368d565b612c93919061368d565b90506000821580612ca2575081155b15612cac57505050565b600a54612cba90601461364c565b831115612cd257600a54612ccf90601461364c565b92505b600060028360215486612ce5919061364c565b612cef919061366b565b612cf9919061366b565b90506000612d078583613097565b905047612d13826130d9565b6000612d1f4783613097565b90506000612d3c87611c8d60205485612a1e90919063ffffffff16565b90506000612d5988611c8d60225486612a1e90919063ffffffff16565b90506000612d7689611c8d60235487612a1e90919063ffffffff16565b905060008183612d8686886136be565b612d9091906136be565b612d9a91906136be565b600060218190556020819055602281905560238190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612dfc576040519150601f19603f3d011682016040523d82523d6000602084013e612e01565b606091505b50909950508715801590612e155750600081115b15612e6857612e2488826132c1565b602154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612eb5576040519150601f19603f3d011682016040523d82523d6000602084013e612eba565b606091505b5050505050505050505050505050565b42600f556040516370a0823160e01b81526001600160a01b037f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f166004820152600090819030906370a082319060240160206040518083038186803b158015612f3257600080fd5b505afa158015612f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6a91906136a5565b90506000612f89612710611c8d600c5485612a1e90919063ffffffff16565b90508015612fbe57612fbe7f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f61dead83612adf565b60007f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561301e57600080fd5b505af1158015613032573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000818361308a5760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c1848661366b565b6000611dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612990565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061310e5761310e6136d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561318757600080fd5b505afa15801561319b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bf91906136eb565b816001815181106131d2576131d26136d5565b60200260200101906001600160a01b031690816001600160a01b03168152505061321d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611dda565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061328b908590600090869030904290600401613708565b600060405180830381600087803b1580156132a557600080fd5b505af11580156132b9573d6000803e3d6000fd5b505050505050565b6132ec307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611dda565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806133336005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133e79190613779565b5050505050565b600060208083528351808285015260005b8181101561341b578581018301518582016040015282016133ff565b8181111561342d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e7e57600080fd5b6000806040838503121561346b57600080fd5b823561347681613443565b946020939093013593505050565b60006020828403121561349657600080fd5b8135611dd381613443565b6000602082840312156134b357600080fd5b5035919050565b6000806000606084860312156134cf57600080fd5b83356134da81613443565b925060208401356134ea81613443565b929592945050506040919091013590565b6000806000806080858703121561351157600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146118d857600080fd5b60008060006060848603121561355257600080fd5b83359250602084013591506135696040850161352d565b90509250925092565b6000806040838503121561358557600080fd5b823561359081613443565b915061359e6020840161352d565b90509250929050565b6000602082840312156135b957600080fd5b611dd38261352d565b600080604083850312156135d557600080fd5b82356135e081613443565b915060208301356135f081613443565b809150509250929050565b600181811c9082168061360f57607f821691505b6020821081141561363057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561366657613666613636565b500290565b60008261368857634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156136a0576136a0613636565b500190565b6000602082840312156136b757600080fd5b5051919050565b6000828210156136d0576136d0613636565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156136fd57600080fd5b8151611dd381613443565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137585784516001600160a01b031683529383019391830191600101613733565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561378e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204489d17e80b40980134d8b49d4a74f5e8f3eb19ea537b409517c0e8beb793fd264736f6c63430008090033

Deployed Bytecode Sourcemap

19908:18545:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7613:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8668:210;;;;;;;;;;-1:-1:-1;8668:210:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;8668:210:0;1095:187:1;21438:63:0;;;;;;;;;;-1:-1:-1;21438:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19985:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1730:55:1;;;1712:74;;1700:2;1685:18;19985:51:0;1539:253:1;7934:108:0;;;;;;;;;;-1:-1:-1;8022:12:0;;7934:108;;;1943:25:1;;;1931:2;1916:18;7934:108:0;1797:177:1;28458:157:0;;;;;;;;;;-1:-1:-1;28458:157:0;;;;;:::i;:::-;;:::i;:::-;;20510:47;;;;;;;;;;;;;;;;20337:36;;;;;;;;;;;;;;;;21268:33;;;;;;;;;;;;;;;;21342:28;;;;;;;;;;;;;;;;21228:33;;;;;;;;;;;;;;;;25417:255;;;;;;;;;;-1:-1:-1;25417:255:0;;;;;:::i;:::-;;:::i;8884:454::-;;;;;;;;;;-1:-1:-1;8884:454:0;;;;;:::i;:::-;;:::i;20120:30::-;;;;;;;;;;-1:-1:-1;20120:30:0;;;;-1:-1:-1;;;;;20120:30:0;;;20420:45;;;;;;;;;;;;;;;;26468:475;;;;;;;;;;-1:-1:-1;26468:475:0;;;;;:::i;:::-;;:::i;20380:33::-;;;;;;;;;;-1:-1:-1;20380:33:0;;;;;;;;7833:93;;;;;;;;;;-1:-1:-1;7833:93:0;;7916:2;3388:36:1;;3376:2;3361:18;7833:93:0;3246:184:1;9344:300:0;;;;;;;;;;-1:-1:-1;9344:300:0;;;;;:::i;:::-;;:::i;20188:25::-;;;;;;;;;;-1:-1:-1;20188:25:0;;;;-1:-1:-1;;;;;20188:25:0;;;20043:38;;;;;;;;;;;;;;;20608:33;;;;;;;;;;-1:-1:-1;20608:33:0;;;;;;;;28792:126;;;;;;;;;;-1:-1:-1;28792:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;28882:28:0;28858:4;28882:28;;;:19;:28;;;;;;;;;28792:126;21050:28;;;;;;;;;;;;;;;;20688:31;;;;;;;;;;-1:-1:-1;20688:31:0;;;;;;;;;;;8050:177;;;;;;;;;;-1:-1:-1;8050:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;8201:18:0;8169:7;8201:18;;;;;;;;;;;;8050:177;12593:102;;;;;;;;;;;;;:::i;36495:555::-;;;;;;;;;;-1:-1:-1;36495:555:0;;;;;:::i;:::-;;:::i;24792:121::-;;;;;;;;;;;;;:::i;26185:167::-;;;;;;;;;;-1:-1:-1;26185:167:0;;;;;:::i;:::-;;:::i;20911:30::-;;;;;;;;;;;;;;;;24629:155;;;;;;;;;;;;;:::i;12379:79::-;;;;;;;;;;-1:-1:-1;12444:6:0;;-1:-1:-1;;;;;12444:6:0;12379:79;;21085:31;;;;;;;;;;;;;;;;26360:100;;;;;;;;;;-1:-1:-1;26360:100:0;;;;;:::i;:::-;;:::i;7721:104::-;;;;;;;;;;;;;:::i;27635:304::-;;;;;;;;;;-1:-1:-1;27635:304:0;;;;;:::i;:::-;;:::i;20985:24::-;;;;;;;;;;;;;;;;20564:35;;;;;;;;;;;;;;;;21308:27;;;;;;;;;;;;;;;;21161:25;;;;;;;;;;;;;;;;9650:400;;;;;;;;;;-1:-1:-1;9650:400:0;;;;;:::i;:::-;;:::i;20472:29::-;;;;;;;;;;;;;;;;8235:216;;;;;;;;;;-1:-1:-1;8235:216:0;;;;;:::i;:::-;;:::i;21193:26::-;;;;;;;;;;;;;;;;20157:24;;;;;;;;;;-1:-1:-1;20157:24:0;;;;-1:-1:-1;;;;;20157:24:0;;;28623:161;;;;;;;;;;-1:-1:-1;28623:161:0;;;;;:::i;:::-;;:::i;21510:57::-;;;;;;;;;;-1:-1:-1;21510:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28141:309;;;;;;;;;;-1:-1:-1;28141:309:0;;;;;:::i;:::-;;:::i;20648:33::-;;;;;;;;;;-1:-1:-1;20648:33:0;;;;;;;;;;;27445:182;;;;;;;;;;-1:-1:-1;27445:182:0;;;;;:::i;:::-;;:::i;25918:259::-;;;;;;;;;;-1:-1:-1;25918:259:0;;;;;:::i;:::-;;:::i;20800:39::-;;;;;;;;;;-1:-1:-1;20800:39:0;;;;;;;;20222:35;;;;;;;;;;;;;;;;25064:345;;;;;;;;;;-1:-1:-1;25064:345:0;;;;;:::i;:::-;;:::i;20877:27::-;;;;;;;;;;;;;;;;8459:201;;;;;;;;;;-1:-1:-1;8459:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;8625:18:0;;;8593:7;8625:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8459:201;20264:33;;;;;;;;;;;;;;;;21693:20;;;;;;;;;;-1:-1:-1;21693:20:0;;;;;;;;21016:25;;;;;;;;;;;;;;;;26951:486;;;;;;;;;;-1:-1:-1;26951:486:0;;;;;:::i;:::-;;:::i;24921:135::-;;;;;;;;;;;;;:::i;20948:30::-;;;;;;;;;;;;;;;;12703:160;;;;;;;;;;-1:-1:-1;12703:160:0;;;;;:::i;:::-;;:::i;21123:31::-;;;;;;;;;;;;;;;;20304:24;;;;;;;;;;;;;;;;37624:826;;;;;;;;;;-1:-1:-1;37624:826:0;;;;;:::i;:::-;;:::i;7613:100::-;7667:13;7700:5;7693:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7613:100;:::o;8668:210::-;8787:4;8809:39;758:10;8832:7;8841:6;8809:8;:39::i;:::-;-1:-1:-1;8866:4:0;8668:210;;;;;:::o;28458:157::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;;;;;;;;;28565:9:::1;::::0;28537:38:::1;::::0;-1:-1:-1;;;;;28565:9:0;;::::1;::::0;28537:38;::::1;::::0;::::1;::::0;28565:9:::1;::::0;28537:38:::1;28586:9;:21:::0;;-1:-1:-1;;28586:21:0::1;-1:-1:-1::0;;;;;28586:21:0;;;::::1;::::0;;;::::1;::::0;;28458:157::o;25417:255::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;25557:4:::1;25546:7;25525:13;8022:12:::0;;;7934:108;25525:13:::1;:17;::::0;25541:1:::1;25525:17;:::i;:::-;25524:29;;;;:::i;:::-;25523:38;;;;:::i;:::-;25513:6;:48;;25491:145;;;::::0;-1:-1:-1;;;25491:145:0;;6465:2:1;25491:145:0::1;::::0;::::1;6447:21:1::0;6504:2;6484:18;;;6477:30;6543:34;6523:18;;;6516:62;6614:17;6594:18;;;6587:45;6649:19;;25491:145:0::1;6263:411:1::0;25491:145:0::1;25647:17;25657:6;25647:9;:17::i;:::-;25417:255:::0;:::o;8884:454::-;9024:4;9041:36;9051:6;9059:9;9070:6;9041:9;:36::i;:::-;9088:220;9111:6;758:10;9159:138;9215:6;9159:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9159:19:0;;;;;;:11;:19;;;;;;;;758:10;9159:33;;;;;;;;;;:37;:138::i;:::-;9088:8;:220::i;:::-;-1:-1:-1;9326:4:0;8884:454;;;;;:::o;26468:475::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;26645:15:::1;:31:::0;;;26687:15:::1;:31:::0;;;26729:9:::1;:19:::0;;;26759:10:::1;:21:::0;;;26772:8;26741:7;26806:33:::1;26705:13:::0;26663;26806:33:::1;:::i;:::-;:45;;;;:::i;:::-;:58;;;;:::i;:::-;26791:12;:73:::0;;;26899:2:::1;-1:-1:-1::0;26883:18:0::1;26875:60;;;::::0;-1:-1:-1;;;26875:60:0;;7014:2:1;26875:60:0::1;::::0;::::1;6996:21:1::0;7053:2;7033:18;;;7026:30;7092:31;7072:18;;;7065:59;7141:18;;26875:60:0::1;6812:353:1::0;26875:60:0::1;26468:475:::0;;;;:::o;9344:300::-;758:10;9459:4;9553:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9553:34:0;;;;;;;;;;9459:4;;9481:133;;9531:7;;9553:50;;9592:10;9553:38;:50::i;12593:102::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;12658:29:::1;12684:1;12658:17;:29::i;:::-;12593:102::o:0;36495:555::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;36697:3:::1;36674:19;:26;;36652:127;;;::::0;-1:-1:-1;;;36652:127:0;;7372:2:1;36652:127:0::1;::::0;::::1;7354:21:1::0;7411:2;7391:18;;;7384:30;7450:34;7430:18;;;7423:62;7521:21;7501:18;;;7494:49;7560:19;;36652:127:0::1;7170:415:1::0;36652:127:0::1;36824:4;36812:8;:16;;:33;;;;-1:-1:-1::0;36832:13:0;36812:33:::1;36790:131;;;::::0;-1:-1:-1;;;36790:131:0;;7792:2:1;36790:131:0::1;::::0;::::1;7774:21:1::0;7831:2;7811:18;;;7804:30;7870:34;7850:18;;;7843:62;7941:18;7921;;;7914:46;7977:19;;36790:131:0::1;7590:412:1::0;36790:131:0::1;36932:15;:37:::0;;;;36980:16:::1;:27:::0;37018:13:::1;:24:::0;;-1:-1:-1;;37018:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36495:555::o;24792:121::-;12506:6;;24844:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;24861:14:0::1;:22:::0;;-1:-1:-1;;24861:22:0::1;::::0;;;24792:121;:::o;26185:167::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;;;;;26298:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26298:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26185:167::o;24629:155::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;24684:13:::1;:20:::0;;-1:-1:-1;;24715:18:0;;;;;24761:15:::1;24744:14;:32:::0;24629:155::o;26360:100::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;26431:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;26431:21:0;;::::1;::::0;;;::::1;::::0;;26360:100::o;7721:104::-;7777:13;7810:7;7803:14;;;;;:::i;27635:304::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;27779:13:::1;-1:-1:-1::0;;;;;27771:21:0::1;:4;-1:-1:-1::0;;;;;27771:21:0::1;;;27749:128;;;::::0;-1:-1:-1;;;27749:128:0;;8209:2:1;27749:128:0::1;::::0;::::1;8191:21:1::0;8248:2;8228:18;;;8221:30;8287:34;8267:18;;;8260:62;8358:27;8338:18;;;8331:55;8403:19;;27749:128:0::1;8007:421:1::0;27749:128:0::1;27890:41;27919:4;27925:5;27890:28;:41::i;:::-;27635:304:::0;;:::o;9650:400::-;9770:4;9792:228;758:10;9842:7;9864:145;9921:15;9864:145;;;;;;;;;;;;;;;;;758:10;9864:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9864:34:0;;;;;;;;;;;;:38;:145::i;8235:216::-;8357:4;8379:42;758:10;8403:9;8414:6;8379:9;:42::i;28623:161::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;28732:10:::1;::::0;28703:40:::1;::::0;-1:-1:-1;;;;;28732:10:0;;::::1;::::0;28703:40;::::1;::::0;::::1;::::0;28732:10:::1;::::0;28703:40:::1;28754:10;:22:::0;;-1:-1:-1;;28754:22:0::1;-1:-1:-1::0;;;;;28754:22:0;;;::::1;::::0;;;::::1;::::0;;28623:161::o;28141:309::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;28334:15:::1;::::0;28291:59:::1;::::0;-1:-1:-1;;;;;28334:15:0;;::::1;::::0;28291:59;::::1;::::0;::::1;::::0;28334:15:::1;::::0;28291:59:::1;-1:-1:-1::0;;;;;28376:12:0;::::1;:9;:12:::0;;;::::1;::::0;;;;;;;:19:::1;::::0;28393:1;28376:16:::1;:19::i;:::-;-1:-1:-1::0;;;;;28361:12:0;;::::1;:9;:12:::0;;;::::1;::::0;;;;;;:34;-1:-1:-1;28406:15:0::1;:36:::0;;-1:-1:-1;;28406:36:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;28141:309::o;27445:182::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;;;;;27530:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;27530:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27585:34;;1235:41:1;;;27585:34:0::1;::::0;1208:18:1;27585:34:0::1;;;;;;;27445:182:::0;;:::o;25918:259::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;26061:4:::1;26050:7;26029:13;8022:12:::0;;;7934:108;26029:13:::1;:17;::::0;26045:1:::1;26029:17;:::i;:::-;26028:29;;;;:::i;:::-;26027:38;;;;:::i;:::-;26017:6;:48;;25995:134;;;::::0;-1:-1:-1;;;25995:134:0;;8635:2:1;25995:134:0::1;::::0;::::1;8617:21:1::0;8674:2;8654:18;;;8647:30;8713:34;8693:18;;;8686:62;8784:6;8764:18;;;8757:34;8808:19;;25995:134:0::1;8433:400:1::0;25995:134:0::1;26152:17;:6:::0;26162::::1;26152:17;:::i;:::-;26140:9;:29:::0;-1:-1:-1;25918:259:0:o;25064:345::-;12506:6;;25172:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;25251:6:::1;25230:13;8022:12:::0;;;7934:108;25230:13:::1;:17;::::0;25246:1:::1;25230:17;:::i;:::-;25229:28;;;;:::i;:::-;25216:9;:41;;25194:144;;;::::0;-1:-1:-1;;;25194:144:0;;9040:2:1;25194:144:0::1;::::0;::::1;9022:21:1::0;9079:2;9059:18;;;9052:30;9118:34;9098:18;;;9091:62;9189:23;9169:18;;;9162:51;9230:19;;25194:144:0::1;8838:417:1::0;25194:144:0::1;-1:-1:-1::0;25349:18:0::1;:30:::0;;;25397:4:::1;12576:1;25064:345:::0;;;:::o;26951:486::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;27129:16:::1;:32:::0;;;27172:16:::1;:32:::0;;;27215:10:::1;:20:::0;;;27246:11:::1;:22:::0;;;27260:8;27228:7;27295:35:::1;27191:13:::0;27148;27295:35:::1;:::i;:::-;:48;;;;:::i;:::-;:62;;;;:::i;:::-;27279:13;:78:::0;;;27393:2:::1;-1:-1:-1::0;27376:19:0::1;27368:61;;;::::0;-1:-1:-1;;;27368:61:0;;9462:2:1;27368:61:0::1;::::0;::::1;9444:21:1::0;9501:2;9481:18;;;9474:30;9540:31;9520:18;;;9513:59;9589:18;;27368:61:0::1;9260:353:1::0;24921:135:0;12506:6;;24981:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;24998:20:0::1;:28:::0;;-1:-1:-1;;24998:28:0::1;::::0;;;24921:135;:::o;12703:160::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;12810:6:::1;::::0;12789:38:::1;::::0;-1:-1:-1;;;;;12789:38:0;;::::1;::::0;12810:6:::1;::::0;12789:38:::1;::::0;12810:6:::1;::::0;12789:38:::1;12838:6;:17:::0;;-1:-1:-1;;12838:17:0::1;-1:-1:-1::0;;;;;12838:17:0;;;::::1;::::0;;;::::1;::::0;;12703:160::o;37624:826::-;12506:6;;37735:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;37820:19:::1;;37797:20;;:42;;;;:::i;:::-;37779:15;:60;37757:142;;;::::0;-1:-1:-1;;;37757:142:0;;9820:2:1;37757:142:0::1;::::0;::::1;9802:21:1::0;;;9839:18;;;9832:30;9898:34;9878:18;;;9871:62;9950:18;;37757:142:0::1;9618:356:1::0;37757:142:0::1;37929:4;37918:7;:15;;37910:70;;;::::0;-1:-1:-1;;;37910:70:0;;10181:2:1;37910:70:0::1;::::0;::::1;10163:21:1::0;10220:2;10200:18;;;10193:30;10259:34;10239:18;;;10232:62;10330:12;10310:18;;;10303:40;10360:19;;37910:70:0::1;9979:406:1::0;37910:70:0::1;38014:15;37991:20;:38:::0;38073:29:::1;::::0;-1:-1:-1;;;38073:29:0;;-1:-1:-1;;;;;38088:13:0::1;1730:55:1::0;38073:29:0::1;::::0;::::1;1712:74:1::0;38042:28:0::1;::::0;38073:4:::1;::::0;:14:::1;::::0;1685:18:1;;38073:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38042:60:::0;-1:-1:-1;38115:20:0::1;38138:44;38176:5;38138:33;38042:60:::0;38163:7;38138:24:::1;:33::i;:::-;:37:::0;::::1;:44::i;:::-;38115:67:::0;-1:-1:-1;38199:16:0;;38195:110:::1;;38232:61;38248:13;38271:6;38280:12;38232:15;:61::i;:::-;38317:19;38354:13;38317:51;;38379:4;-1:-1:-1::0;;;;;38379:9:0::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38406:14:0::1;::::0;::::1;::::0;-1:-1:-1;38406:14:0;;-1:-1:-1;38406:14:0::1;-1:-1:-1::0;38438:4:0::1;::::0;37624:826;-1:-1:-1;;;;37624:826:0:o;1537:181::-;1595:7;;1627:5;1631:1;1627;:5;:::i;:::-;1615:17;;1656:1;1651;:6;;1643:46;;;;-1:-1:-1;;;1643:46:0;;10781:2:1;1643:46:0;;;10763:21:1;10820:2;10800:18;;;10793:30;10859:29;10839:18;;;10832:57;10906:18;;1643:46:0;10579:351:1;1643:46:0;1709:1;1537:181;-1:-1:-1;;;1537:181:0:o;11517:380::-;-1:-1:-1;;;;;11653:19:0;;11645:68;;;;-1:-1:-1;;;11645:68:0;;11137:2:1;11645:68:0;;;11119:21:1;11176:2;11156:18;;;11149:30;11215:34;11195:18;;;11188:62;11286:6;11266:18;;;11259:34;11310:19;;11645:68:0;10935:400:1;11645:68:0;-1:-1:-1;;;;;11732:21:0;;11724:68;;;;-1:-1:-1;;;11724:68:0;;11542:2:1;11724:68:0;;;11524:21:1;11581:2;11561:18;;;11554:30;11620:34;11600:18;;;11593:62;11691:4;11671:18;;;11664:32;11713:19;;11724:68:0;11340:398:1;11724:68:0;-1:-1:-1;;;;;11805:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11857:32;;1943:25:1;;;11857:32:0;;1916:18:1;11857:32:0;;;;;;;;11517:380;;;:::o;25680:230::-;8022:12;;25738:17;:6;25748;25738:17;:::i;:::-;:34;25734:118;;25802:17;:6;25812;25802:17;:::i;:::-;25789:10;:30;25839:1;;;-1:-1:-1;;25834:6:0;;25839:1;;;;25838:2;25834:6;;;25734:118;25885:17;:6;25895;25885:17;:::i;:::-;25862:20;:40;-1:-1:-1;25680:230:0:o;28976:4765::-;-1:-1:-1;;;;;29108:18:0;;29100:68;;;;-1:-1:-1;;;29100:68:0;;11945:2:1;29100:68:0;;;11927:21:1;11984:2;11964:18;;;11957:30;12023:34;12003:18;;;11996:62;-1:-1:-1;;;12074:18:1;;;12067:35;12119:19;;29100:68:0;11743:401:1;29100:68:0;-1:-1:-1;;;;;29187:16:0;;29179:64;;;;-1:-1:-1;;;29179:64:0;;12351:2:1;29179:64:0;;;12333:21:1;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;-1:-1:-1;;;12480:18:1;;;12473:33;12523:19;;29179:64:0;12149:399:1;29179:64:0;29260:11;29256:93;;29288:28;29304:4;29310:2;29314:1;29288:15;:28::i;:::-;28976:4765;;;:::o;29256:93::-;29365:14;;;;29361:2282;;;12444:6;;-1:-1:-1;;;;;29418:15:0;;;12444:6;;29418:15;;;;:49;;-1:-1:-1;12444:6:0;;-1:-1:-1;;;;;29454:13:0;;;12444:6;;29454:13;;29418:49;:86;;;;-1:-1:-1;;;;;;29488:16:0;;;;29418:86;:128;;;;-1:-1:-1;;;;;;29525:21:0;;29539:6;29525:21;;29418:128;:158;;;;-1:-1:-1;29568:8:0;;-1:-1:-1;;;29568:8:0;;;;29567:9;29418:158;29396:2236;;;29616:13;;;;;;;29611:223;;-1:-1:-1;;;;;29688:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;29717:23:0;;;;;;:19;:23;;;;;;;;29688:52;29654:160;;;;-1:-1:-1;;;29654:160:0;;12755:2:1;29654:160:0;;;12737:21:1;12794:2;12774:18;;;12767:30;12833:24;12813:18;;;12806:52;12875:18;;29654:160:0;12553:346:1;29654:160:0;29856:20;;;;29852:641;;;12444:6;;-1:-1:-1;;;;;29931:13:0;;;12444:6;;29931:13;;;;:72;;;29987:15;-1:-1:-1;;;;;29973:30:0;:2;-1:-1:-1;;;;;29973:30:0;;;29931:72;:129;;;;;30046:13;-1:-1:-1;;;;;30032:28:0;:2;-1:-1:-1;;;;;30032:28:0;;;29931:129;29901:573;;;30178:9;30149:39;;;;:28;:39;;;;;;30224:12;-1:-1:-1;30111:258:0;;;;-1:-1:-1;;;30111:258:0;;13106:2:1;30111:258:0;;;13088:21:1;13145:2;13125:18;;;13118:30;13184:34;13164:18;;;13157:62;13255:34;13235:18;;;13228:62;13327:11;13306:19;;;13299:40;13356:19;;30111:258:0;12904:477:1;30111:258:0;30425:9;30396:39;;;;:28;:39;;;;;30438:12;30396:54;;29901:573;-1:-1:-1;;;;;30537:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;30594:35:0;;;;;;:31;:35;;;;;;;;30593:36;30537:92;30511:1106;;;30716:20;;30706:6;:30;;30672:169;;;;-1:-1:-1;;;30672:169:0;;13588:2:1;30672:169:0;;;13570:21:1;13627:2;13607:18;;;13600:30;13666:34;13646:18;;;13639:62;13737:23;13717:18;;;13710:51;13778:19;;30672:169:0;13386:417:1;30672:169:0;30924:9;;-1:-1:-1;;;;;8201:18:0;;8169:7;8201:18;;;;;;;;;;;30898:22;;:6;:22;:::i;:::-;:35;;30864:140;;;;-1:-1:-1;;;30864:140:0;;14010:2:1;30864:140:0;;;13992:21:1;14049:2;14029:18;;;14022:30;14088:21;14068:18;;;14061:49;14127:18;;30864:140:0;13808:343:1;30864:140:0;30511:1106;;;-1:-1:-1;;;;;31056:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;31111:37:0;;;;;;:31;:37;;;;;;;;31110:38;31056:92;31030:587;;;31235:20;;31225:6;:30;;:35;;;;-1:-1:-1;31259:1:0;;;;31225:35;31191:175;;;;-1:-1:-1;;;31191:175:0;;14358:2:1;31191:175:0;;;14340:21:1;14397:2;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14507:24;14487:18;;;14480:52;14549:19;;31191:175:0;14156:418:1;31030:587:0;-1:-1:-1;;;;;31397:35:0;;;;;;:31;:35;;;;;;;;31392:225;;31517:9;;-1:-1:-1;;;;;8201:18:0;;8169:7;8201:18;;;;;;;;;;;31491:22;;:6;:22;:::i;:::-;:35;;31457:140;;;;-1:-1:-1;;;31457:140:0;;14010:2:1;31457:140:0;;;13992:21:1;14049:2;14029:18;;;14022:30;14088:21;14068:18;;;14061:49;14127:18;;31457:140:0;13808:343:1;31457:140:0;31704:4;31655:28;8201:18;;;;;;;;;;;31762;;31738:42;;;;;;;31811:35;;-1:-1:-1;31835:11:0;;;;;;;31811:35;:61;;;;-1:-1:-1;31864:8:0;;-1:-1:-1;;;31864:8:0;;;;31863:9;31811:61;:110;;;;-1:-1:-1;;;;;;31890:31:0;;;;;;:25;:31;;;;;;;;31889:32;31811:110;:153;;;;-1:-1:-1;;;;;;31939:25:0;;;;;;:19;:25;;;;;;;;31938:26;31811:153;:194;;;;-1:-1:-1;;;;;;31982:23:0;;;;;;:19;:23;;;;;;;;31981:24;31811:194;31793:326;;;32032:8;:15;;-1:-1:-1;;;;32032:15:0;-1:-1:-1;;;32032:15:0;;;32064:10;:8;:10::i;:::-;32091:8;:16;;-1:-1:-1;;;;32091:16:0;;;31793:326;32150:8;;-1:-1:-1;;;32150:8:0;;;;32149:9;:55;;;;-1:-1:-1;;;;;;32175:29:0;;;;;;:25;:29;;;;;;;;32149:55;:85;;;;-1:-1:-1;32221:13:0;;;;32149:85;:153;;;;;32287:15;;32270:14;;:32;;;;:::i;:::-;32251:15;:51;;32149:153;:196;;;;-1:-1:-1;;;;;;32320:25:0;;;;;;:19;:25;;;;;;;;32319:26;32149:196;32131:282;;;32372:29;:27;:29::i;:::-;;32131:282;32441:8;;-1:-1:-1;;;;;32466:25:0;;32425:12;32466:25;;;:19;:25;;;;;;32441:8;-1:-1:-1;;;32441:8:0;;;;;32440:9;;32466:25;;:52;;-1:-1:-1;;;;;;32495:23:0;;;;;;:19;:23;;;;;;;;32466:52;32462:100;;;-1:-1:-1;32545:5:0;32462:100;32574:12;32605:7;32601:1087;;;-1:-1:-1;;;;;32633:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;32682:1;32666:13;;:17;32633:50;32629:910;;;32711:34;32741:3;32711:25;32722:13;;32711:6;:10;;:25;;;;:::i;:34::-;32704:41;;32814:13;;32794:16;;32787:4;:23;;;;:::i;:::-;32786:41;;;;:::i;:::-;32764:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;32884:13:0;;32870:10;;32863:17;;:4;:17;:::i;:::-;32862:35;;;;:::i;:::-;32846:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;32956:13:0;;32941:11;;32934:18;;:4;:18;:::i;:::-;32933:36;;;;:::i;:::-;32916:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;33038:13:0;;33018:16;;33011:23;;:4;:23;:::i;:::-;33010:41;;;;:::i;:::-;32988:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;32629:910:0;;-1:-1:-1;32629:910:0;;-1:-1:-1;;;;;33113:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;33163:1;33148:12;;:16;33113:51;33109:430;;;33192:33;33221:3;33192:24;33203:12;;33192:6;:10;;:24;;;;:::i;:33::-;33185:40;;33293:12;;33274:15;;33267:4;:22;;;;:::i;:::-;33266:39;;;;:::i;:::-;33244:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;33361:12:0;;33348:9;;33341:16;;:4;:16;:::i;:::-;33340:33;;;;:::i;:::-;33324:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;33431:12:0;;33417:10;;33410:17;;:4;:17;:::i;:::-;33409:34;;;;:::i;:::-;33392:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;33511:12:0;;33492:15;;33485:22;;:4;:22;:::i;:::-;33484:39;;;;:::i;:::-;33462:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;33109:430:0;33559:8;;33555:91;;33588:42;33604:4;33618;33625;33588:15;:42::i;:::-;33662:14;33672:4;33662:14;;:::i;:::-;;;32601:1087;33700:33;33716:4;33722:2;33726:6;33700:15;:33::i;:::-;29089:4652;;;;28976:4765;;;:::o;2241:226::-;2361:7;2397:12;2389:6;;;;2381:29;;;;-1:-1:-1;;;2381:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2421:9:0;2433:5;2437:1;2433;:5;:::i;:::-;2421:17;2241:226;-1:-1:-1;;;;;2241:226:0:o;27947:186::-;-1:-1:-1;;;;;28030:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;28030:39:0;;;;;;;;;;28085:40;;28030:39;;:31;28085:40;;;27947:186;;:::o;1071:250::-;1129:7;1153:6;1149:47;;-1:-1:-1;1183:1:0;1176:8;;1149:47;1208:9;1220:5;1224:1;1220;:5;:::i;:::-;1208:17;-1:-1:-1;1253:1:0;1244:5;1248:1;1208:17;1244:5;:::i;:::-;:10;1236:56;;;;-1:-1:-1;;;1236:56:0;;14911:2:1;1236:56:0;;;14893:21:1;14950:2;14930:18;;;14923:30;14989:34;14969:18;;;14962:62;-1:-1:-1;;;15040:18:1;;;15033:31;15081:19;;1236:56:0;14709:397:1;1957:132:0;2015:7;2042:39;2046:1;2049;2042:39;;;;;;;;;;;;;;;;;:3;:39::i;10056:610::-;-1:-1:-1;;;;;10196:20:0;;10188:70;;;;-1:-1:-1;;;10188:70:0;;11945:2:1;10188:70:0;;;11927:21:1;11984:2;11964:18;;;11957:30;12023:34;12003:18;;;11996:62;-1:-1:-1;;;12074:18:1;;;12067:35;12119:19;;10188:70:0;11743:401:1;10188:70:0;-1:-1:-1;;;;;10277:23:0;;10269:71;;;;-1:-1:-1;;;10269:71:0;;12351:2:1;10269:71:0;;;12333:21:1;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;-1:-1:-1;;;12480:18:1;;;12473:33;12523:19;;10269:71:0;12149:399:1;10269:71:0;10433:108;10469:6;10433:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10433:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;10413:17:0;;;:9;:17;;;;;;;;;;;:128;;;;10575:20;;;;;;;:32;;10600:6;10575:24;:32::i;:::-;-1:-1:-1;;;;;10552:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;10623:35;1943:25:1;;;10552:20:0;;10623:35;;;;;;1916:18:1;10623:35:0;1797:177:1;34602:1885:0;34685:4;34641:23;8201:18;;;;;;;;;;;34641:50;;34702:25;34798:12;;34764:18;;34730;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;34702:108;-1:-1:-1;34821:12:0;34850:20;;;:46;;-1:-1:-1;34874:22:0;;34850:46;34846:85;;;34913:7;;;34602:1885::o;34846:85::-;34965:18;;:23;;34986:2;34965:23;:::i;:::-;34947:15;:41;34943:115;;;35023:18;;:23;;35044:2;35023:23;:::i;:::-;35005:41;;34943:115;35119:23;35232:1;35199:17;35164:18;;35146:15;:36;;;;:::i;:::-;35145:71;;;;:::i;:::-;:88;;;;:::i;:::-;35119:114;-1:-1:-1;35244:26:0;35273:36;:15;35119:114;35273:19;:36::i;:::-;35244:65;-1:-1:-1;35350:21:0;35384:36;35244:65;35384:16;:36::i;:::-;35433:18;35454:44;:21;35480:17;35454:25;:44::i;:::-;35433:65;;35511:23;35537:81;35590:17;35537:34;35552:18;;35537:10;:14;;:34;;;;:::i;:81::-;35511:107;;35629:17;35649:51;35682:17;35649:28;35664:12;;35649:10;:14;;:28;;;;:::i;:51::-;35629:71;;35713:18;35734:52;35768:17;35734:29;35749:13;;35734:10;:14;;:29;;;;:::i;:52::-;35713:73;-1:-1:-1;35799:23:0;35713:73;35856:9;35825:28;35838:15;35825:10;:28;:::i;:::-;:40;;;;:::i;:::-;:53;;;;:::i;:::-;35912:1;35891:18;:22;;;35924:18;:22;;;35957:12;:16;;;35984:13;:17;;;36036:9;;36028:45;;35799:79;;-1:-1:-1;;;;;;36036:9:0;;36059;;36028:45;35912:1;36028:45;36059:9;36036;36028:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36014:59:0;;-1:-1:-1;;36092:19:0;;;;;:42;;;36133:1;36115:15;:19;36092:42;36088:278;;;36151:46;36164:15;36181;36151:12;:46::i;:::-;36321:18;;36217:137;;;15523:25:1;;;15579:2;15564:18;;15557:34;;;15607:18;;;15600:34;;;;36217:137:0;;;;;;15511:2:1;36217:137:0;;;36088:278;36400:15;;36392:87;;-1:-1:-1;;;;;36400:15:0;;;;36443:21;;36392:87;;;;36443:21;36400:15;36392:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;34602:1885:0:o;37058:558::-;37149:15;37132:14;:32;37208:29;;-1:-1:-1;;;37208:29:0;;-1:-1:-1;;;;;37223:13:0;1730:55:1;37208:29:0;;;1712:74:1;37115:4:0;;;;37208;;:14;;1685:18:1;;37208:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37177:60;;37250:20;37273:77;37334:5;37273:42;37298:16;;37273:20;:24;;:42;;;;:::i;:77::-;37250:100;-1:-1:-1;37367:16:0;;37363:110;;37400:61;37416:13;37439:6;37448:12;37400:15;:61::i;:::-;37485:19;37522:13;37485:51;;37547:4;-1:-1:-1;;;;;37547:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37574:12:0;;;;-1:-1:-1;37574:12:0;;-1:-1:-1;37574:12:0;37604:4;37597:11;;;;;37058:558;:::o;1726:223::-;1846:7;1881:12;1874:5;1866:28;;;;-1:-1:-1;;;1866:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1905:9:0;1917:5;1921:1;1917;:5;:::i;2097:136::-;2155:7;2182:43;2186:1;2189;2182:43;;;;;;;;;;;;;;;;;:3;:43::i;33749:475::-;33839:16;;;33853:1;33839:16;;;;;;;;33815:21;;33839:16;;;;;;;;;;-1:-1:-1;33839:16:0;33815:40;;33884:4;33866;33871:1;33866:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;33866:23:0;;;-1:-1:-1;;;;;33866:23:0;;;;;33910:15;-1:-1:-1;;;;;33910:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33900:4;33905:1;33900:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;33900:32:0;;;-1:-1:-1;;;;;33900:32:0;;;;;33945:62;33962:4;33977:15;33995:11;33945:8;:62::i;:::-;34020:196;;;;;-1:-1:-1;;;;;34020:15:0;:66;;;;:196;;34101:11;;34127:1;;34143:4;;34170;;34190:15;;34020:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33804:420;33749:475;:::o;34232:362::-;34313:62;34330:4;34345:15;34363:11;34313:8;:62::i;:::-;34388:15;-1:-1:-1;;;;;34388:31:0;;34427:9;34460:4;34480:11;34506:1;34522;34538:7;12444:6;;-1:-1:-1;;;;;12444:6:0;;12379:79;34538:7;34388:198;;;;;;;;;;-1:-1:-1;;;;;17692:15:1;;;34388:198:0;;;17674:34:1;17724:18;;;17717:34;;;;17767:18;;;17760:34;;;;17810:18;;;17803:34;17874:15;;;17853:19;;;17846:44;34560:15:0;17906:19:1;;;17899:35;17585:19;;34388:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34232:362;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:154::-;-1:-1:-1;;;;;695:5:1;691:54;684:5;681:65;671:93;;760:1;757;750:12;775:315;843:6;851;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;959:9;946:23;978:31;1003:5;978:31;:::i;:::-;1028:5;1080:2;1065:18;;;;1052:32;;-1:-1:-1;;;775:315:1:o;1287:247::-;1346:6;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1454:9;1441:23;1473:31;1498:5;1473:31;:::i;1979:180::-;2038:6;2091:2;2079:9;2070:7;2066:23;2062:32;2059:52;;;2107:1;2104;2097:12;2059:52;-1:-1:-1;2130:23:1;;1979:180;-1:-1:-1;1979:180:1:o;2164:456::-;2241:6;2249;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:52;;;2326:1;2323;2316:12;2278:52;2365:9;2352:23;2384:31;2409:5;2384:31;:::i;:::-;2434:5;-1:-1:-1;2491:2:1;2476:18;;2463:32;2504:33;2463:32;2504:33;:::i;:::-;2164:456;;2556:7;;-1:-1:-1;;;2610:2:1;2595:18;;;;2582:32;;2164:456::o;2856:385::-;2942:6;2950;2958;2966;3019:3;3007:9;2998:7;2994:23;2990:33;2987:53;;;3036:1;3033;3026:12;2987:53;-1:-1:-1;;3059:23:1;;;3129:2;3114:18;;3101:32;;-1:-1:-1;3180:2:1;3165:18;;3152:32;;3231:2;3216:18;3203:32;;-1:-1:-1;2856:385:1;-1:-1:-1;2856:385:1:o;3435:160::-;3500:20;;3556:13;;3549:21;3539:32;;3529:60;;3585:1;3582;3575:12;3600:316;3674:6;3682;3690;3743:2;3731:9;3722:7;3718:23;3714:32;3711:52;;;3759:1;3756;3749:12;3711:52;3795:9;3782:23;3772:33;;3852:2;3841:9;3837:18;3824:32;3814:42;;3875:35;3906:2;3895:9;3891:18;3875:35;:::i;:::-;3865:45;;3600:316;;;;;:::o;3921:315::-;3986:6;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4195:35:1;4226:2;4211:18;;4195:35;:::i;:::-;4185:45;;3921:315;;;;;:::o;4241:180::-;4297:6;4350:2;4338:9;4329:7;4325:23;4321:32;4318:52;;;4366:1;4363;4356:12;4318:52;4389:26;4405:9;4389:26;:::i;4426:388::-;4494:6;4502;4555:2;4543:9;4534:7;4530:23;4526:32;4523:52;;;4571:1;4568;4561:12;4523:52;4610:9;4597:23;4629:31;4654:5;4629:31;:::i;:::-;4679:5;-1:-1:-1;4736:2:1;4721:18;;4708:32;4749:33;4708:32;4749:33;:::i;:::-;4801:7;4791:17;;;4426:388;;;;;:::o;4819:437::-;4898:1;4894:12;;;;4941;;;4962:61;;5016:4;5008:6;5004:17;4994:27;;4962:61;5069:2;5061:6;5058:14;5038:18;5035:38;5032:218;;;-1:-1:-1;;;5103:1:1;5096:88;5207:4;5204:1;5197:15;5235:4;5232:1;5225:15;5032:218;;4819:437;;;:::o;5622:184::-;-1:-1:-1;;;5671:1:1;5664:88;5771:4;5768:1;5761:15;5795:4;5792:1;5785:15;5811:168;5851:7;5917:1;5913;5909:6;5905:14;5902:1;5899:21;5894:1;5887:9;5880:17;5876:45;5873:71;;;5924:18;;:::i;:::-;-1:-1:-1;5964:9:1;;5811:168::o;5984:274::-;6024:1;6050;6040:189;;-1:-1:-1;;;6082:1:1;6075:88;6186:4;6183:1;6176:15;6214:4;6211:1;6204:15;6040:189;-1:-1:-1;6243:9:1;;5984:274::o;6679:128::-;6719:3;6750:1;6746:6;6743:1;6740:13;6737:39;;;6756:18;;:::i;:::-;-1:-1:-1;6792:9:1;;6679:128::o;10390:184::-;10460:6;10513:2;10501:9;10492:7;10488:23;10484:32;10481:52;;;10529:1;10526;10519:12;10481:52;-1:-1:-1;10552:16:1;;10390:184;-1:-1:-1;10390:184:1:o;14579:125::-;14619:4;14647:1;14644;14641:8;14638:34;;;14652:18;;:::i;:::-;-1:-1:-1;14689:9:1;;14579:125::o;15834:184::-;-1:-1:-1;;;15883:1:1;15876:88;15983:4;15980:1;15973:15;16007:4;16004:1;15997:15;16023:251;16093:6;16146:2;16134:9;16125:7;16121:23;16117:32;16114:52;;;16162:1;16159;16152:12;16114:52;16194:9;16188:16;16213:31;16238:5;16213:31;:::i;16279:1026::-;16541:4;16589:3;16578:9;16574:19;16620:6;16609:9;16602:25;16646:2;16684:6;16679:2;16668:9;16664:18;16657:34;16727:3;16722:2;16711:9;16707:18;16700:31;16751:6;16786;16780:13;16817:6;16809;16802:22;16855:3;16844:9;16840:19;16833:26;;16894:2;16886:6;16882:15;16868:29;;16915:1;16925:218;16939:6;16936:1;16933:13;16925:218;;;17004:13;;-1:-1:-1;;;;;17000:62:1;16988:75;;17118:15;;;;17083:12;;;;16961:1;16954:9;16925:218;;;-1:-1:-1;;;;;;;17199:55:1;;;;17194:2;17179:18;;17172:83;-1:-1:-1;;;17286:3:1;17271:19;17264:35;17160:3;16279:1026;-1:-1:-1;;;16279:1026:1:o;17945:306::-;18033:6;18041;18049;18102:2;18090:9;18081:7;18077:23;18073:32;18070:52;;;18118:1;18115;18108:12;18070:52;18147:9;18141:16;18131:26;;18197:2;18186:9;18182:18;18176:25;18166:35;;18241:2;18230:9;18226:18;18220:25;18210:35;;17945:306;;;;;:::o

Swarm Source

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