ETH Price: $3,631.64 (-2.22%)

Token

DOGKAGE (DAKE)
 

Overview

Max Total Supply

10,000,000,000 DAKE

Holders

220 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

DAKE is a multi-utility ecosystem in the making that will offer to stake, token utility partnerships, NFT in-game trading, and a 5v5 arena game under development.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DAKE

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-29
*/

/*
I heard a rumor..... that this token will absolutely moon.

TELEGRAM : https://t.me/DogKageNation
WEBSITE :  http://www.DogKage.net
TWITTER :  http://www.twitter.com/DogKage
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

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

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

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract DAKE is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isSniperOrBlacklisted;
    mapping (address => bool) private _liquidityHolders;

    uint256 private startingSupply = 10_000_000_000;

    string private _name = "DOGKAGE";
    string private _symbol = "DAKE";

    uint256 public _buyFee = 1000;
    uint256 public _sellFee = 1000;
    uint256 public _transferFee = 1000;

    uint256 constant public maxBuyTaxes = 1200;
    uint256 constant public maxSellTaxes = 1200;
    uint256 constant public maxTransferTaxes = 2000;

    uint256 public _liquidityRatio = 1;
    uint256 public _marketingRatio = 5;
    uint256 public _devRatio = 4;

    uint256 private constant masterTaxDivisor = 10000;

    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
    uint256 constant private _decimalsMul = _decimals;
    uint256 private _tTotal = startingSupply * 10**_decimalsMul;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable private _marketingWallet = payable(0xe9d53464b35233525e2bc3F023841229F551c612);
    address payable private _teamWallet = payable(0x34feAcD1c6f9a4Be8640AF5d1EE35A810b505Cd9);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 1;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    uint256 public maxTxAmountUI = (startingSupply * maxTxPercent) / maxTxDivisor;

    uint256 private maxWalletPercent = 1;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    uint256 public maxWalletSizeUI = (startingSupply * maxWalletPercent) / maxWalletDivisor;

    uint256 private swapThreshold = (_tTotal * 5) / 10000;
    uint256 private swapAmount = (_tTotal * 5) / 1000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0;
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        // Approve the owner for PancakeSwap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Ever-growing sniper/tool blacklist


        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_marketingWallet == payable(_owner))
            _marketingWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isSniperOrBlacklisted[account] = enabled;
    }

    function setStartingProtections(uint8 _block) external onlyOwner{
        require (snipeBlockAmt == 0 && !_hasLiqBeenAdded);
        snipeBlockAmt = _block;
    }

    function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() {
        sniperProtection = antiSnipe;
        sameBlockActive = antiBlock;
    }

    function setTaxes(uint256 buyFee, uint256 sellFee, uint256 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _buyFee = buyFee;
        _sellFee = sellFee;
        _transferFee = transferFee;
    }

    function setRatios(uint256 liquidity, uint256 marketing) external onlyOwner {
        require (liquidity + marketing == 100, "Must add up to 100%");
        _liquidityRatio = liquidity;
        _marketingRatio = marketing;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxTxAmount = check;
        maxTxAmountUI = (startingSupply * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxWalletSize = check;
        maxWalletSizeUI = (startingSupply * percent) / divisor;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketingWallet, address payable teamWallet) external onlyOwner {
        _marketingWallet = payable(marketingWallet);
        _teamWallet = payable(teamWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
            }
            if(to != _routerAddress && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }
        }

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

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (_liquidityRatio + _marketingRatio + _devRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_marketingRatio + _devRatio));
            _teamWallet.transfer(address(this).balance);
        }
    }

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 2) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (from == lpPair) {
            currentFee = _buyFee;
        } else if (to == lpPair) {
            currentFee = _sellFee;
        } else {
            currentFee = _transferFee;
        }

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != startingSupply/10) {
                revert();
            }
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003556402540be40060085560c06040526007608081905266444f474b41474560c81b60a09081526200003891600991906200069e565b506040805180820190915260048082526344414b4560e01b60209092019182526200006691600a916200069e565b506103e8600b819055600c819055600d556001600e556005600f556004601055620000946009600a620007e2565b600854620000a39190620008a0565b6011819055601580546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556016805490911673e9d53464b35233525e2bc3f023841229f551c61217905560178054600161ff0160a01b0319167334feacd1c6f9a4be8640af5d1ee35a810b505cd9179055600160188190556064601981905591620001329190620008a0565b6200013e919062000776565b601a55601954601854600854620001569190620008a0565b62000162919062000776565b601b556001601c556064601d55601d54601c54601154620001849190620008a0565b62000190919062000776565b601e55601d54601c54600854620001a89190620008a0565b620001b4919062000776565b601f556127106011546005620001cb9190620008a0565b620001d7919062000776565b6020556103e86011546005620001ee9190620008a0565b620001fa919062000776565b6021556022805461ffff1916600190811790915560006023819055602481905560258190556026819055602781905560288190556029805460ff1916831790556011549190620002473390565b6001600160a01b03908116825260208083019390935260409182016000908120949094558354336001600160a01b0319918216179094556015546013805491909216941684179055805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b158015620002c157600080fd5b505afa158015620002d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fc919062000744565b6001600160a01b031663c9c65396601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035957600080fd5b505afa1580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000394919062000744565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620003dc57600080fd5b505af1158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000417919062000744565b601480546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660019081179091553084526004835281842060135490951684529390915281206000199055600590620004886000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600790620005106000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200055c620005443390565b6015546011546001600160a01b03909116906200059d565b60115460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000915565b6001600160a01b038316620005ef5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200063d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005e6565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b828054620006ac90620008c2565b90600052602060002090601f016020900481019282620006d057600085556200071b565b82601f10620006eb57805160ff19168380011785556200071b565b828001600101855582156200071b579182015b828111156200071b578251825591602001919060010190620006fe565b50620007299291506200072d565b5090565b5b808211156200072957600081556001016200072e565b6000602082840312156200075757600080fd5b81516001600160a01b03811681146200076f57600080fd5b9392505050565b6000826200079457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620007da578160001904821115620007be57620007be620008ff565b80851615620007cc57918102915b93841c93908002906200079e565b509250929050565b60006200076f8383600082620007fb575060016200089a565b816200080a575060006200089a565b81600181146200082357600281146200082e576200084e565b60019150506200089a565b60ff841115620008425762000842620008ff565b50506001821b6200089a565b5060208310610133831016604e8410600b841016171562000873575081810a6200089a565b6200087f838362000799565b8060001904821115620008965762000896620008ff565b0290505b92915050565b6000816000190483118215151615620008bd57620008bd620008ff565b500290565b600181811c90821680620008d757607f821691505b60208210811415620008f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6129d780620009256000396000f3fe6080604052600436106102b25760003560e01c8063590ffdce11610175578063a8edc797116100dc578063dd62ed3e11610095578063eafb5a3c1161006f578063eafb5a3c14610832578063eec2744e14610852578063f6540ec714610872578063fb78680d1461088857600080fd5b8063dd62ed3e146107b6578063e79d4160146107fc578063e9dae5ed1461081257600080fd5b8063a8edc7971461072a578063a9059cbb14610740578063b1b08f7114610760578063b3d514fb146103e4578063c49b9a8014610776578063d3f6a1571461079657600080fd5b806381c6f11b1161012e57806381c6f11b1461067e578063893d20e81461069e57806389fd9bc1146106bc5780638da5cb5b1461069e57806395d89b41146106f5578063a457c2d71461070a57600080fd5b8063590ffdce146105bd57806364038409146105dd5780636639dd93146105f357806370a0823114610613578063715018a61461064957806380c581d11461065e57600080fd5b80633df9a8d2116102195780634ef3cce5116101d25780634ef3cce5146104f95780634fb2e45d1461050f5780634fbee1931461052f57806350a8e01614610568578063571ac8b014610587578063590f897e146105a757600080fd5b80633df9a8d21461044c5780633f3cf56c1461046257806340b9a54b146104825780634129ecee14610498578063452ed4f1146104b85780634a74bb02146104d857600080fd5b806323b872dd1161026b57806323b872dd146103a457806326003957146103c45780632b28fc7a146103e4578063313ce567146103fa578063384f6b5114610416578063395093511461042c57600080fd5b806303fd2a45146102be578063044df726146102f157806306fdde03146103135780630758d92414610335578063095ea7b31461035557806318160ddd1461038557600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612600565b6108a8565b005b34801561031f57600080fd5b506103286108fb565b6040516102e89190612706565b34801561034157600080fd5b506013546102d4906001600160a01b031681565b34801561036157600080fd5b506103756103703660046125b9565b61098d565b60405190151581526020016102e8565b34801561039157600080fd5b506011545b6040519081526020016102e8565b3480156103b057600080fd5b506103756103bf366004612543565b6109a3565b3480156103d057600080fd5b506103116103df366004612635565b610a1b565b3480156103f057600080fd5b506103966104b081565b34801561040657600080fd5b50604051600981526020016102e8565b34801561042257600080fd5b50610396600e5481565b34801561043857600080fd5b506103756104473660046125b9565b610ab8565b34801561045857600080fd5b50610396600d5481565b34801561046e57600080fd5b5061031161047d366004612635565b610af4565b34801561048e57600080fd5b50610396600b5481565b3480156104a457600080fd5b506103116104b33660046126e3565b610b91565b3480156104c457600080fd5b506014546102d4906001600160a01b031681565b3480156104e457600080fd5b5060175461037590600160a81b900460ff1681565b34801561050557600080fd5b50610396600f5481565b34801561051b57600080fd5b5061031161052a3660046124d0565b610be4565b34801561053b57600080fd5b5061037561054a3660046124d0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561057457600080fd5b5060225461037590610100900460ff1681565b34801561059357600080fd5b506103756105a23660046124d0565b610d6c565b3480156105b357600080fd5b50610396600c5481565b3480156105c957600080fd5b506103116105d8366004612584565b610d80565b3480156105e957600080fd5b50610396601b5481565b3480156105ff57600080fd5b5061031161060e366004612635565b610dd5565b34801561061f57600080fd5b5061039661062e3660046124d0565b6001600160a01b031660009081526001602052604090205490565b34801561065557600080fd5b50610311610e59565b34801561066a57600080fd5b50610311610679366004612584565b610ed8565b34801561068a57600080fd5b5061031161069936600461261c565b610fb1565b3480156106aa57600080fd5b506000546001600160a01b03166102d4565b3480156106c857600080fd5b506103756106d73660046124d0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070157600080fd5b50610328611019565b34801561071657600080fd5b506103756107253660046125b9565b611028565b34801561073657600080fd5b5061039660105481565b34801561074c57600080fd5b5061037561075b3660046125b9565b61105f565b34801561076c57600080fd5b506103966107d081565b34801561078257600080fd5b506103116107913660046125e5565b611076565b3480156107a257600080fd5b506103116107b136600461250a565b6110f8565b3480156107c257600080fd5b506103966107d136600461250a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561080857600080fd5b5061039660285481565b34801561081e57600080fd5b5061031161082d366004612657565b611150565b34801561083e57600080fd5b5061031161084d3660046124d0565b6111f6565b34801561085e57600080fd5b5061031161086d366004612584565b61157c565b34801561087e57600080fd5b50610396601f5481565b34801561089457600080fd5b506103116108a33660046126b1565b6115d1565b6000546001600160a01b031633146108db5760405162461bcd60e51b81526004016108d29061275b565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b60606009805461090a90612907565b80601f016020809104026020016040519081016040528092919081815260200182805461093690612907565b80156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b600061099a33848461163a565b50600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a08576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a029084906128f0565b90915550505b610a13848484611733565b949350505050565b6000546001600160a01b03163314610a455760405162461bcd60e51b81526004016108d29061275b565b60008183601154610a5691906128d1565b610a6091906128af565b90506103e8601154610a7291906128af565b811015610a915760405162461bcd60e51b81526004016108d290612786565b601e8190556008548290610aa69085906128d1565b610ab091906128af565b601f55505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161099a918590610aef908690612897565b61163a565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b81526004016108d29061275b565b60008183601154610b2f91906128d1565b610b3991906128af565b90506103e8601154610b4b91906128af565b811015610b6a5760405162461bcd60e51b81526004016108d290612786565b601a8190556008548290610b7f9085906128d1565b610b8991906128af565b601b55505050565b6000546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016108d29061275b565b602754158015610bd35750602254610100900460ff16155b610bdc57600080fd5b60ff16602755565b6000546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016108d29061275b565b6001600160a01b038116610c345760405162461bcd60e51b81526004016108d2906127c9565b6001600160a01b03811661dead1415610c5f5760405162461bcd60e51b81526004016108d2906127c9565b60008054610c78916001600160a01b0390911690610d80565b610c83816001610d80565b6000546016546001600160a01b0390811691161415610cb857601680546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610d2157600080546001600160a01b03168082526001602052604090912054610d1f91908390611733565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610d7a8260001961098d565b92915050565b6000546001600160a01b03163314610daa5760405162461bcd60e51b81526004016108d29061275b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dff5760405162461bcd60e51b81526004016108d29061275b565b610e098183612897565b606414610e4e5760405162461bcd60e51b81526020600482015260136024820152724d7573742061646420757020746f203130302560681b60448201526064016108d2565b600e91909155600f55565b6000546001600160a01b03163314610e835760405162461bcd60e51b81526004016108d29061275b565b60008054610e9c916001600160a01b0390911690610d80565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f025760405162461bcd60e51b81526004016108d29061275b565b80610f2957506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f855762093a8060035442610f4391906128f0565b11610f855760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016108d2565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b81526004016108d29061275b565b602354156110145760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016108d2565b602355565b6060600a805461090a90612907565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161099a918590610aef9086906128f0565b600061106c338484611733565b5060019392505050565b6000546001600160a01b031633146110a05760405162461bcd60e51b81526004016108d29061275b565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110ed90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111225760405162461bcd60e51b81526004016108d29061275b565b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b6000546001600160a01b0316331461117a5760405162461bcd60e51b81526004016108d29061275b565b6104b0831115801561118e57506104b08211155b801561119c57506107d08111155b6111e85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016108d2565b600b92909255600c55600d55565b6000546001600160a01b031633146112205760405162461bcd60e51b81526004016108d29061275b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561126057600080fd5b505afa158015611274573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129891906124ed565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e057600080fd5b505afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131891906124ed565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561135e57600080fd5b505afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139691906124ed565b90506001600160a01b03811661153c57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113df57600080fd5b505afa1580156113f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141791906124ed565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561145f57600080fd5b505afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149791906124ed565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156114df57600080fd5b505af11580156114f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151791906124ed565b601480546001600160a01b0319166001600160a01b0392909216919091179055611558565b601480546001600160a01b0319166001600160a01b0383161790555b50601380546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146115a65760405162461bcd60e51b81526004016108d29061275b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115fb5760405162461bcd60e51b81526004016108d29061275b565b828460115461160a91906128d1565b61161491906128af565b60205560115481906116279084906128d1565b61163191906128af565b60215550505050565b6001600160a01b0383166116865760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108d2565b6001600160a01b0382166116d25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108d2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117825760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108d2565b6001600160a01b0383166117cf5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108d2565b6000821161180a5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016108d2565b6118148484611af5565b15611a185760295460ff16156118cb576001600160a01b03841660009081526002602052604090205460ff161561188a576001600160a01b0383166000908152602a602052604090205443141561186a57600080fd5b6001600160a01b0383166000908152602a602052604090204390556118cb565b6001600160a01b0384166000908152602a60205260409020544314156118af57600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff168061190a57506001600160a01b03831660009081526002602052604090205460ff165b1561196157601a548211156119615760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016108d2565b6015546001600160a01b0384811691161480159061199857506001600160a01b03831660009081526002602052604090205460ff16155b15611a1857601e54826119c0856001600160a01b031660009081526001602052604090205490565b6119ca9190612897565b1115611a185760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016108d2565b6001600160a01b03841660009081526005602052604090205460019060ff1680611a5a57506001600160a01b03841660009081526005602052604090205460ff165b15611a63575060005b6001600160a01b03841660009081526002602052604090205460ff1615611ae057601754600160a01b900460ff16158015611aa75750601754600160a81b900460ff165b15611ae0573060009081526001602052604081205490506020548110611ade576021548110611ad557506021545b611ade81611bb3565b505b611aec85858584611db0565b95945050505050565b600080546001600160a01b03848116911614801590611b2257506000546001600160a01b03838116911614155b8015611b4757506001600160a01b03821660009081526007602052604090205460ff16155b8015611b6c57506001600160a01b03831660009081526007602052604090205460ff16155b8015611b8357506001600160a01b03821661dead14155b8015611b9757506001600160a01b03821615155b8015611bac57506001600160a01b0383163014155b9392505050565b6017805460ff60a01b1916600160a01b179055601054600f54600e54611bd99190612897565b611be39190612897565b611bec57611da0565b60006002601054600f54600e54611c039190612897565b611c0d9190612897565b600e54611c1a90856128d1565b611c2491906128af565b611c2e91906128af565b90506000611c3c82846128f0565b9050611c478161206f565b600047905060006002601054600f54600e54611c639190612897565b611c6d9190612897565b600e54611c7a90856128d1565b611c8491906128af565b611c8e91906128af565b90508315611ce257611ca084826121bf565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611cee85876128f0565b1115611d9b57601654601054600f546001600160a01b03909216916108fc91611d1691612897565b600f54611d2385876128f0565b611d2d91906128d1565b611d3791906128af565b6040518115909202916000818181858888f19350505050158015611d5f573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d99573d6000803e3d6000fd5b505b505050505b506017805460ff60a01b19169055565b60225460009060ff1615611f9c576001600160a01b03851660009081526006602052604090205460ff1680611dfd57506001600160a01b03841660009081526006602052604090205460ff165b15611e3d5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108d2565b602254610100900460ff16611ed357611e568585612268565b602254610100900460ff16158015611e735750611e738585611af5565b15611ece5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108d2565b611f9c565b6000602454118015611efd57506001600160a01b03851660009081526002602052604090205460ff165b8015611f0e5750611f0e8585611af5565b15611f9c57602754602454611f2390436128f0565b1015611f9c576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611f5a83612942565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611fc49084906128f0565b909155506000905082611fd75783611fe2565b611fe28686866123a5565b6001600160a01b03861660009081526001602052604081208054929350839290919061200f908490612897565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161205b91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120a4576120a4612973565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120f857600080fd5b505afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213091906124ed565b8160018151811061214357612143612973565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790612189908590600090869030904290600401612826565b600060405180830381600087803b1580156121a357600080fd5b505af11580156121b7573d6000803e3d6000fd5b505050505050565b60135460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561222857600080fd5b505af115801561223c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122619190612683565b5050505050565b602254610100900460ff16156122cc5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108d2565b6122d68282611af5565b1580156122f057506014546001600160a01b038281169116145b15610fad576027546002146123135761230b43611388612897565b602455612318565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556017805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161239991901515815260200190565b60405180910390a15050565b60145460009081906001600160a01b03868116911614156123c95750600b546123ed565b6014546001600160a01b03858116911614156123e85750600c546123ed565b50600d545b6123f78585611af5565b1561242557602354158061241b5750600a60085461241591906128af565b60235414155b1561242557600080fd5b600061271061243483866128d1565b61243e91906128af565b30600090815260016020526040812080549293508392909190612462908490612897565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36124b181856128f0565b9695505050505050565b803580151581146124cb57600080fd5b919050565b6000602082840312156124e257600080fd5b8135611bac81612989565b6000602082840312156124ff57600080fd5b8151611bac81612989565b6000806040838503121561251d57600080fd5b823561252881612989565b9150602083013561253881612989565b809150509250929050565b60008060006060848603121561255857600080fd5b833561256381612989565b9250602084013561257381612989565b929592945050506040919091013590565b6000806040838503121561259757600080fd5b82356125a281612989565b91506125b0602084016124bb565b90509250929050565b600080604083850312156125cc57600080fd5b82356125d781612989565b946020939093013593505050565b6000602082840312156125f757600080fd5b611bac826124bb565b6000806040838503121561261357600080fd5b6125a2836124bb565b60006020828403121561262e57600080fd5b5035919050565b6000806040838503121561264857600080fd5b50508035926020909101359150565b60008060006060848603121561266c57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561269857600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156126c757600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156126f557600080fd5b813560ff81168114611bac57600080fd5b600060208083528351808285015260005b8181101561273357858101830151858201604001528201612717565b81811115612745576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128765784516001600160a01b031683529383019391830191600101612851565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156128aa576128aa61295d565b500190565b6000826128cc57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128eb576128eb61295d565b500290565b6000828210156129025761290261295d565b500390565b600181811c9082168061291b57607f821691505b6020821081141561293c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129565761295661295d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461299e57600080fd5b5056fea2646970667358221220ce17040c855af9b739b311a7e90f9b1a95dc09bcd1e42c72d9d5d69fa09fb27064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063590ffdce11610175578063a8edc797116100dc578063dd62ed3e11610095578063eafb5a3c1161006f578063eafb5a3c14610832578063eec2744e14610852578063f6540ec714610872578063fb78680d1461088857600080fd5b8063dd62ed3e146107b6578063e79d4160146107fc578063e9dae5ed1461081257600080fd5b8063a8edc7971461072a578063a9059cbb14610740578063b1b08f7114610760578063b3d514fb146103e4578063c49b9a8014610776578063d3f6a1571461079657600080fd5b806381c6f11b1161012e57806381c6f11b1461067e578063893d20e81461069e57806389fd9bc1146106bc5780638da5cb5b1461069e57806395d89b41146106f5578063a457c2d71461070a57600080fd5b8063590ffdce146105bd57806364038409146105dd5780636639dd93146105f357806370a0823114610613578063715018a61461064957806380c581d11461065e57600080fd5b80633df9a8d2116102195780634ef3cce5116101d25780634ef3cce5146104f95780634fb2e45d1461050f5780634fbee1931461052f57806350a8e01614610568578063571ac8b014610587578063590f897e146105a757600080fd5b80633df9a8d21461044c5780633f3cf56c1461046257806340b9a54b146104825780634129ecee14610498578063452ed4f1146104b85780634a74bb02146104d857600080fd5b806323b872dd1161026b57806323b872dd146103a457806326003957146103c45780632b28fc7a146103e4578063313ce567146103fa578063384f6b5114610416578063395093511461042c57600080fd5b806303fd2a45146102be578063044df726146102f157806306fdde03146103135780630758d92414610335578063095ea7b31461035557806318160ddd1461038557600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612600565b6108a8565b005b34801561031f57600080fd5b506103286108fb565b6040516102e89190612706565b34801561034157600080fd5b506013546102d4906001600160a01b031681565b34801561036157600080fd5b506103756103703660046125b9565b61098d565b60405190151581526020016102e8565b34801561039157600080fd5b506011545b6040519081526020016102e8565b3480156103b057600080fd5b506103756103bf366004612543565b6109a3565b3480156103d057600080fd5b506103116103df366004612635565b610a1b565b3480156103f057600080fd5b506103966104b081565b34801561040657600080fd5b50604051600981526020016102e8565b34801561042257600080fd5b50610396600e5481565b34801561043857600080fd5b506103756104473660046125b9565b610ab8565b34801561045857600080fd5b50610396600d5481565b34801561046e57600080fd5b5061031161047d366004612635565b610af4565b34801561048e57600080fd5b50610396600b5481565b3480156104a457600080fd5b506103116104b33660046126e3565b610b91565b3480156104c457600080fd5b506014546102d4906001600160a01b031681565b3480156104e457600080fd5b5060175461037590600160a81b900460ff1681565b34801561050557600080fd5b50610396600f5481565b34801561051b57600080fd5b5061031161052a3660046124d0565b610be4565b34801561053b57600080fd5b5061037561054a3660046124d0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561057457600080fd5b5060225461037590610100900460ff1681565b34801561059357600080fd5b506103756105a23660046124d0565b610d6c565b3480156105b357600080fd5b50610396600c5481565b3480156105c957600080fd5b506103116105d8366004612584565b610d80565b3480156105e957600080fd5b50610396601b5481565b3480156105ff57600080fd5b5061031161060e366004612635565b610dd5565b34801561061f57600080fd5b5061039661062e3660046124d0565b6001600160a01b031660009081526001602052604090205490565b34801561065557600080fd5b50610311610e59565b34801561066a57600080fd5b50610311610679366004612584565b610ed8565b34801561068a57600080fd5b5061031161069936600461261c565b610fb1565b3480156106aa57600080fd5b506000546001600160a01b03166102d4565b3480156106c857600080fd5b506103756106d73660046124d0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070157600080fd5b50610328611019565b34801561071657600080fd5b506103756107253660046125b9565b611028565b34801561073657600080fd5b5061039660105481565b34801561074c57600080fd5b5061037561075b3660046125b9565b61105f565b34801561076c57600080fd5b506103966107d081565b34801561078257600080fd5b506103116107913660046125e5565b611076565b3480156107a257600080fd5b506103116107b136600461250a565b6110f8565b3480156107c257600080fd5b506103966107d136600461250a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561080857600080fd5b5061039660285481565b34801561081e57600080fd5b5061031161082d366004612657565b611150565b34801561083e57600080fd5b5061031161084d3660046124d0565b6111f6565b34801561085e57600080fd5b5061031161086d366004612584565b61157c565b34801561087e57600080fd5b50610396601f5481565b34801561089457600080fd5b506103116108a33660046126b1565b6115d1565b6000546001600160a01b031633146108db5760405162461bcd60e51b81526004016108d29061275b565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b60606009805461090a90612907565b80601f016020809104026020016040519081016040528092919081815260200182805461093690612907565b80156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b600061099a33848461163a565b50600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a08576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a029084906128f0565b90915550505b610a13848484611733565b949350505050565b6000546001600160a01b03163314610a455760405162461bcd60e51b81526004016108d29061275b565b60008183601154610a5691906128d1565b610a6091906128af565b90506103e8601154610a7291906128af565b811015610a915760405162461bcd60e51b81526004016108d290612786565b601e8190556008548290610aa69085906128d1565b610ab091906128af565b601f55505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161099a918590610aef908690612897565b61163a565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b81526004016108d29061275b565b60008183601154610b2f91906128d1565b610b3991906128af565b90506103e8601154610b4b91906128af565b811015610b6a5760405162461bcd60e51b81526004016108d290612786565b601a8190556008548290610b7f9085906128d1565b610b8991906128af565b601b55505050565b6000546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016108d29061275b565b602754158015610bd35750602254610100900460ff16155b610bdc57600080fd5b60ff16602755565b6000546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016108d29061275b565b6001600160a01b038116610c345760405162461bcd60e51b81526004016108d2906127c9565b6001600160a01b03811661dead1415610c5f5760405162461bcd60e51b81526004016108d2906127c9565b60008054610c78916001600160a01b0390911690610d80565b610c83816001610d80565b6000546016546001600160a01b0390811691161415610cb857601680546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610d2157600080546001600160a01b03168082526001602052604090912054610d1f91908390611733565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610d7a8260001961098d565b92915050565b6000546001600160a01b03163314610daa5760405162461bcd60e51b81526004016108d29061275b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dff5760405162461bcd60e51b81526004016108d29061275b565b610e098183612897565b606414610e4e5760405162461bcd60e51b81526020600482015260136024820152724d7573742061646420757020746f203130302560681b60448201526064016108d2565b600e91909155600f55565b6000546001600160a01b03163314610e835760405162461bcd60e51b81526004016108d29061275b565b60008054610e9c916001600160a01b0390911690610d80565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f025760405162461bcd60e51b81526004016108d29061275b565b80610f2957506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f855762093a8060035442610f4391906128f0565b11610f855760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016108d2565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b81526004016108d29061275b565b602354156110145760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016108d2565b602355565b6060600a805461090a90612907565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161099a918590610aef9086906128f0565b600061106c338484611733565b5060019392505050565b6000546001600160a01b031633146110a05760405162461bcd60e51b81526004016108d29061275b565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110ed90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111225760405162461bcd60e51b81526004016108d29061275b565b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b6000546001600160a01b0316331461117a5760405162461bcd60e51b81526004016108d29061275b565b6104b0831115801561118e57506104b08211155b801561119c57506107d08111155b6111e85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016108d2565b600b92909255600c55600d55565b6000546001600160a01b031633146112205760405162461bcd60e51b81526004016108d29061275b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561126057600080fd5b505afa158015611274573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129891906124ed565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e057600080fd5b505afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131891906124ed565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561135e57600080fd5b505afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139691906124ed565b90506001600160a01b03811661153c57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113df57600080fd5b505afa1580156113f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141791906124ed565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561145f57600080fd5b505afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149791906124ed565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156114df57600080fd5b505af11580156114f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151791906124ed565b601480546001600160a01b0319166001600160a01b0392909216919091179055611558565b601480546001600160a01b0319166001600160a01b0383161790555b50601380546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146115a65760405162461bcd60e51b81526004016108d29061275b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115fb5760405162461bcd60e51b81526004016108d29061275b565b828460115461160a91906128d1565b61161491906128af565b60205560115481906116279084906128d1565b61163191906128af565b60215550505050565b6001600160a01b0383166116865760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108d2565b6001600160a01b0382166116d25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108d2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117825760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108d2565b6001600160a01b0383166117cf5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108d2565b6000821161180a5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016108d2565b6118148484611af5565b15611a185760295460ff16156118cb576001600160a01b03841660009081526002602052604090205460ff161561188a576001600160a01b0383166000908152602a602052604090205443141561186a57600080fd5b6001600160a01b0383166000908152602a602052604090204390556118cb565b6001600160a01b0384166000908152602a60205260409020544314156118af57600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff168061190a57506001600160a01b03831660009081526002602052604090205460ff165b1561196157601a548211156119615760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016108d2565b6015546001600160a01b0384811691161480159061199857506001600160a01b03831660009081526002602052604090205460ff16155b15611a1857601e54826119c0856001600160a01b031660009081526001602052604090205490565b6119ca9190612897565b1115611a185760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016108d2565b6001600160a01b03841660009081526005602052604090205460019060ff1680611a5a57506001600160a01b03841660009081526005602052604090205460ff165b15611a63575060005b6001600160a01b03841660009081526002602052604090205460ff1615611ae057601754600160a01b900460ff16158015611aa75750601754600160a81b900460ff165b15611ae0573060009081526001602052604081205490506020548110611ade576021548110611ad557506021545b611ade81611bb3565b505b611aec85858584611db0565b95945050505050565b600080546001600160a01b03848116911614801590611b2257506000546001600160a01b03838116911614155b8015611b4757506001600160a01b03821660009081526007602052604090205460ff16155b8015611b6c57506001600160a01b03831660009081526007602052604090205460ff16155b8015611b8357506001600160a01b03821661dead14155b8015611b9757506001600160a01b03821615155b8015611bac57506001600160a01b0383163014155b9392505050565b6017805460ff60a01b1916600160a01b179055601054600f54600e54611bd99190612897565b611be39190612897565b611bec57611da0565b60006002601054600f54600e54611c039190612897565b611c0d9190612897565b600e54611c1a90856128d1565b611c2491906128af565b611c2e91906128af565b90506000611c3c82846128f0565b9050611c478161206f565b600047905060006002601054600f54600e54611c639190612897565b611c6d9190612897565b600e54611c7a90856128d1565b611c8491906128af565b611c8e91906128af565b90508315611ce257611ca084826121bf565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611cee85876128f0565b1115611d9b57601654601054600f546001600160a01b03909216916108fc91611d1691612897565b600f54611d2385876128f0565b611d2d91906128d1565b611d3791906128af565b6040518115909202916000818181858888f19350505050158015611d5f573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d99573d6000803e3d6000fd5b505b505050505b506017805460ff60a01b19169055565b60225460009060ff1615611f9c576001600160a01b03851660009081526006602052604090205460ff1680611dfd57506001600160a01b03841660009081526006602052604090205460ff165b15611e3d5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108d2565b602254610100900460ff16611ed357611e568585612268565b602254610100900460ff16158015611e735750611e738585611af5565b15611ece5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108d2565b611f9c565b6000602454118015611efd57506001600160a01b03851660009081526002602052604090205460ff165b8015611f0e5750611f0e8585611af5565b15611f9c57602754602454611f2390436128f0565b1015611f9c576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611f5a83612942565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611fc49084906128f0565b909155506000905082611fd75783611fe2565b611fe28686866123a5565b6001600160a01b03861660009081526001602052604081208054929350839290919061200f908490612897565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161205b91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120a4576120a4612973565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120f857600080fd5b505afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213091906124ed565b8160018151811061214357612143612973565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790612189908590600090869030904290600401612826565b600060405180830381600087803b1580156121a357600080fd5b505af11580156121b7573d6000803e3d6000fd5b505050505050565b60135460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561222857600080fd5b505af115801561223c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122619190612683565b5050505050565b602254610100900460ff16156122cc5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108d2565b6122d68282611af5565b1580156122f057506014546001600160a01b038281169116145b15610fad576027546002146123135761230b43611388612897565b602455612318565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556017805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161239991901515815260200190565b60405180910390a15050565b60145460009081906001600160a01b03868116911614156123c95750600b546123ed565b6014546001600160a01b03858116911614156123e85750600c546123ed565b50600d545b6123f78585611af5565b1561242557602354158061241b5750600a60085461241591906128af565b60235414155b1561242557600080fd5b600061271061243483866128d1565b61243e91906128af565b30600090815260016020526040812080549293508392909190612462908490612897565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36124b181856128f0565b9695505050505050565b803580151581146124cb57600080fd5b919050565b6000602082840312156124e257600080fd5b8135611bac81612989565b6000602082840312156124ff57600080fd5b8151611bac81612989565b6000806040838503121561251d57600080fd5b823561252881612989565b9150602083013561253881612989565b809150509250929050565b60008060006060848603121561255857600080fd5b833561256381612989565b9250602084013561257381612989565b929592945050506040919091013590565b6000806040838503121561259757600080fd5b82356125a281612989565b91506125b0602084016124bb565b90509250929050565b600080604083850312156125cc57600080fd5b82356125d781612989565b946020939093013593505050565b6000602082840312156125f757600080fd5b611bac826124bb565b6000806040838503121561261357600080fd5b6125a2836124bb565b60006020828403121561262e57600080fd5b5035919050565b6000806040838503121561264857600080fd5b50508035926020909101359150565b60008060006060848603121561266c57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561269857600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156126c757600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156126f557600080fd5b813560ff81168114611bac57600080fd5b600060208083528351808285015260005b8181101561273357858101830151858201604001528201612717565b81811115612745576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128765784516001600160a01b031683529383019391830191600101612851565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156128aa576128aa61295d565b500190565b6000826128cc57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128eb576128eb61295d565b500290565b6000828210156129025761290261295d565b500390565b600181811c9082168061291b57607f821691505b6020821081141561293c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129565761295661295d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461299e57600080fd5b5056fea2646970667358221220ce17040c855af9b739b311a7e90f9b1a95dc09bcd1e42c72d9d5d69fa09fb27064736f6c63430008070033

Deployed Bytecode Sourcemap

5897:18984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7429:73;;;;;;;;;;;;7460:42;7429:73;;;;;-1:-1:-1;;;;;4926:32:1;;;4908:51;;4896:2;4881:18;7429:73:0;;;;;;;;16396:169;;;;;;;;;;-1:-1:-1;16396:169:0;;;;;:::i;:::-;;:::i;:::-;;12569:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7254:35::-;;;;;;;;;;-1:-1:-1;7254:35:0;;;;-1:-1:-1;;;;;7254:35:0;;;13182:161;;;;;;;;;;-1:-1:-1;13182:161:0;;;;;:::i;:::-;;:::i;:::-;;;6056:14:1;;6049:22;6031:41;;6019:2;6004:18;13182:161:0;5891:187:1;12304:83:0;;;;;;;;;;-1:-1:-1;12377:7:0;;12304:83;;;12522:25:1;;;12510:2;12495:18;12304:83:0;12376:177:1;13796:306:0;;;;;;;;;;-1:-1:-1;13796:306:0;;;;;:::i;:::-;;:::i;17522:325::-;;;;;;;;;;-1:-1:-1;17522:325:0;;;;;:::i;:::-;;:::i;6673:42::-;;;;;;;;;;;;6711:4;6673:42;;12393:80;;;;;;;;;;-1:-1:-1;12393:80:0;;7089:1;14009:36:1;;13997:2;13982:18;12393:80:0;13867:184:1;6828:34:0;;;;;;;;;;;;;;;;14110:215;;;;;;;;;;-1:-1:-1;14110:215:0;;;;;:::i;:::-;;:::i;6630:34::-;;;;;;;;;;;;;;;;17194:320;;;;;;;;;;-1:-1:-1;17194:320:0;;;;;:::i;:::-;;:::i;6557:29::-;;;;;;;;;;;;;;;;16223:165;;;;;;;;;;-1:-1:-1;16223:165:0;;;;;:::i;:::-;;:::i;7296:21::-;;;;;;;;;;-1:-1:-1;7296:21:0;;;;-1:-1:-1;;;;;7296:21:0;;;7740:41;;;;;;;;;;-1:-1:-1;7740:41:0;;;;-1:-1:-1;;;7740:41:0;;;;;;6869:34;;;;;;;;;;;;;;;;10987:761;;;;;;;;;;-1:-1:-1;10987:761:0;;;;;:::i;:::-;;:::i;15493:125::-;;;;;;;;;;-1:-1:-1;15493:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;15582:28:0;15558:4;15582:28;;;:19;:28;;;;;;;;;15493:125;8469:36;;;;;;;;;;-1:-1:-1;8469:36:0;;;;;;;;;;;13668:120;;;;;;;;;;-1:-1:-1;13668:120:0;;;;;:::i;:::-;;:::i;6593:30::-;;;;;;;;;;;;;;;;15626:134;;;;;;;;;;-1:-1:-1;15626:134:0;;;;;:::i;:::-;;:::i;7951:77::-;;;;;;;;;;;;;;;;16954:232;;;;;;;;;;-1:-1:-1;16954:232:0;;;;;:::i;:::-;;:::i;12882:117::-;;;;;;;;;;-1:-1:-1;12882:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12975:16:0;12948:7;12975:16;;;:7;:16;;;;;;;12882:117;11756:195;;;;;;;;;;;;;:::i;15075:410::-;;;;;;;;;;-1:-1:-1;15075:410:0;;;;;:::i;:::-;;:::i;15908:158::-;;;;;;;;;;-1:-1:-1;15908:158:0;;;;;:::i;:::-;;:::i;12655:80::-;;;;;;;;;;-1:-1:-1;12707:7:0;10965:6;-1:-1:-1;;;;;10965:6:0;12655:80;;15768:132;;;;;;;;;;-1:-1:-1;15768:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15861:31:0;15837:4;15861:31;;;:22;:31;;;;;;;;;15768:132;12479:84;;;;;;;;;;;;;:::i;14333:225::-;;;;;;;;;;-1:-1:-1;14333:225:0;;;;;:::i;:::-;;:::i;6910:28::-;;;;;;;;;;;;;;;;13007:167;;;;;;;;;;-1:-1:-1;13007:167:0;;;;;:::i;:::-;;:::i;6772:47::-;;;;;;;;;;;;6815:4;6772:47;;18366:171;;;;;;;;;;-1:-1:-1;18366:171:0;;;;;:::i;:::-;;:::i;18152:206::-;;;;;;;;;;-1:-1:-1;18152:206:0;;;;;:::i;:::-;;:::i;12741:133::-;;;;;;;;;;-1:-1:-1;12741:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12843:19:0;;;12825:7;12843:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12741:133;8720:32;;;;;;;;;;;;;;;;16573:373;;;;;;;;;;-1:-1:-1;16573:373:0;;;;;:::i;:::-;;:::i;14566:501::-;;;;;;;;;;-1:-1:-1;14566:501:0;;;;;:::i;:::-;;:::i;16074:141::-;;;;;;;;;;-1:-1:-1;16074:141:0;;;;;:::i;:::-;;:::i;8212:87::-;;;;;;;;;;;;;;;;17855:289;;;;;;;;;;-1:-1:-1;17855:289:0;;;;;:::i;:::-;;:::i;16396:169::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;;;;;;;;;16491:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;16491:28:0;;::::1;;::::0;;16530:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;16396:169::o;12569:80::-;12617:13;12641:5;12634:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12569:80;:::o;13182:161::-;13257:4;13274:39;378:10;13297:7;13306:6;13274:8;:39::i;:::-;-1:-1:-1;13331:4:0;13182:161;;;;:::o;13796:306::-;-1:-1:-1;;;;;13917:19:0;;13896:4;13917:19;;;:11;:19;;;;;;;;13937:10;13917:31;;;;;;;;-1:-1:-1;;13917:52:0;13913:126;;-1:-1:-1;;;;;13986:19:0;;;;;;:11;:19;;;;;;;;14006:10;13986:31;;;;;;;:41;;14021:6;;13986:19;:41;;14021:6;;13986:41;:::i;:::-;;;;-1:-1:-1;;13913:126:0;14058:36;14068:6;14076:9;14087:6;14058:9;:36::i;:::-;14051:43;13796:306;-1:-1:-1;;;;13796:306:0:o;17522:325::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;17612:13:::1;17650:7;17639;17629;;:17;;;;:::i;:::-;17628:29;;;;:::i;:::-;17612:45;;17696:4;17686:7;;:14;;;;:::i;:::-;17676:5;:25;;17668:73;;;;-1:-1:-1::0;;;17668:73:0::1;;;;;;;:::i;:::-;17752:14;:22:::0;;;17804:14:::1;::::0;17832:7;;17804:24:::1;::::0;17821:7;;17804:24:::1;:::i;:::-;17803:36;;;;:::i;:::-;17785:15;:54:::0;-1:-1:-1;;;17522:325:0:o;14110:215::-;378:10;14198:4;14247:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14247:34:0;;;;;;;;;;14198:4;;14215:80;;14238:7;;14247:47;;14284:10;;14247:47;:::i;:::-;14215:8;:80::i;17194:320::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;17283:13:::1;17321:7;17310;17300;;:17;;;;:::i;:::-;17299:29;;;;:::i;:::-;17283:45;;17367:4;17357:7;;:14;;;;:::i;:::-;17347:5;:25;;17339:73;;;;-1:-1:-1::0;;;17339:73:0::1;;;;;;;:::i;:::-;17423:12;:20:::0;;;17471:14:::1;::::0;17499:7;;17471:24:::1;::::0;17488:7;;17471:24:::1;:::i;:::-;17470:36;;;;:::i;:::-;17454:13;:52:::0;-1:-1:-1;;;17194:320:0:o;16223:165::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;16307:13:::1;::::0;:18;:39;::::1;;;-1:-1:-1::0;16330:16:0::1;::::0;::::1;::::0;::::1;;;16329:17;16307:39;16298:49;;;::::0;::::1;;16358:22;;:13;:22:::0;16223:165::o;10987:761::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11068:22:0;::::1;11060:96;;;;-1:-1:-1::0;;;11060:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11175:16:0;::::1;7460:42;11175:16;;11167:90;;;;-1:-1:-1::0;;;11167:90:0::1;;;;;;;:::i;:::-;11288:6;::::0;;11268:34:::1;::::0;-1:-1:-1;;;;;11288:6:0;;::::1;::::0;11268:19:::1;:34::i;:::-;11313:35;11333:8;11343:4;11313:19;:35::i;:::-;11401:6;::::0;11373:16:::1;::::0;-1:-1:-1;;;;;11373:16:0;;::::1;11401:6:::0;::::1;11373:35;11369:90;;;11423:16;:36:::0;;-1:-1:-1;;;;;;11423:36:0::1;-1:-1:-1::0;;;;;11423:36:0;::::1;;::::0;;11369:90:::1;11522:6;::::0;;-1:-1:-1;;;;;11522:6:0;;::::1;12975:16:::0;;:7;:16;;;;;;;;;11480:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:49;11553:6;;;;::::1;12975:16:::0;;;;;;11543:21;11540:99:::1;;11591:6;::::0;;-1:-1:-1;;;;;11591:6:0::1;12975:16:::0;;;:7;:16;;;;;;;11581:46:::1;::::0;11591:6;11599:8;;11581:9:::1;:46::i;:::-;;11540:99;11659:6;:17:::0;;-1:-1:-1;;;;;;11659:17:0::1;-1:-1:-1::0;;;;;11659:17:0;::::1;::::0;;::::1;::::0;;11692:38:::1;::::0;11659:17;;;;11692:38:::1;::::0;11659:6;11692:38:::1;10987:761:::0;:::o;13668:120::-;13721:4;13745:35;13753:7;-1:-1:-1;;13745:7:0;:35::i;:::-;13738:42;13668:120;-1:-1:-1;;13668:120:0:o;15626:134::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15714:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15714:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15626:134::o;16954:232::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;17050:21:::1;17062:9:::0;17050;:21:::1;:::i;:::-;17075:3;17050:28;17041:61;;;::::0;-1:-1:-1;;;17041:61:0;;11447:2:1;17041:61:0::1;::::0;::::1;11429:21:1::0;11486:2;11466:18;;;11459:30;-1:-1:-1;;;11505:18:1;;;11498:49;11564:18;;17041:61:0::1;11245:343:1::0;17041:61:0::1;17113:15;:27:::0;;;;17151:15:::1;:27:::0;16954:232::o;11756:195::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;11843:6:::1;::::0;;11823:34:::1;::::0;-1:-1:-1;;;;;11843:6:0;;::::1;::::0;11823:19:::1;:34::i;:::-;11885:1;11868:19:::0;;-1:-1:-1;;;;;;11868:19:0::1;::::0;;11903:40:::1;::::0;11885:1;;11903:40:::1;::::0;11885:1;;11903:40:::1;11756:195::o:0;15075:410::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;15156:16;15152:326:::1;;-1:-1:-1::0;;;;;;15189:13:0::1;15205:5;15189:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;15189:21:0::1;::::0;;15075:410::o;15152:326::-:1;15247:17;::::0;:22;15243:139:::1;;15336:7;15316:17;;15298:15;:35;;;;:::i;:::-;:45;15290:76;;;::::0;-1:-1:-1;;;15290:76:0;;9382:2:1;15290:76:0::1;::::0;::::1;9364:21:1::0;9421:2;9401:18;;;9394:30;-1:-1:-1;;;9440:18:1;;;9433:48;9498:18;;15290:76:0::1;9180:342:1::0;15290:76:0::1;-1:-1:-1::0;;;;;15396:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15396:20:0::1;15412:4;15396:20;::::0;;15451:15:::1;15431:17;:35:::0;15152:326:::1;15075:410:::0;;:::o;15908:158::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;15990:13:::1;::::0;:18;15981:38:::1;;;::::0;-1:-1:-1;;;15981:38:0;;10758:2:1;15981:38:0::1;::::0;::::1;10740:21:1::0;10797:1;10777:18;;;10770:29;-1:-1:-1;;;10815:18:1;;;10808:36;10861:18;;15981:38:0::1;10556:329:1::0;15981:38:0::1;16030:13;:28:::0;15908:158::o;12479:84::-;12529:13;12553:7;12546:14;;;;;:::i;14333:225::-;378:10;14426:4;14475:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14475:34:0;;;;;;;;;;14426:4;;14443:85;;14466:7;;14475:52;;14512:15;;14475:52;:::i;13007:167::-;13085:4;13102:42;378:10;13126:9;13137:6;13102:9;:42::i;:::-;-1:-1:-1;13162:4:0;;13007:167;-1:-1:-1;;;13007:167:0:o;18366:171::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;18443:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18443:32:0::1;-1:-1:-1::0;;;;18443:32:0;;::::1;;::::0;;18491:38:::1;::::0;::::1;::::0;::::1;::::0;18467:8;6056:14:1;6049:22;6031:41;;6019:2;6004:18;;5891:187;18491:38:0::1;;;;;;;;18366:171:::0;:::o;18152:206::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;18263:16:::1;:43:::0;;-1:-1:-1;;;;;18263:43:0;;::::1;-1:-1:-1::0;;;;;;18263:43:0;;::::1;;::::0;;;18317:11:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;18152:206::o;16573:373::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;6711:4:::1;16683:6;:21;;:65;;;;;6761:4;16725:7;:23;;16683:65;:117;;;;;6815:4;16769:11;:31;;16683:117;16675:170;;;::::0;-1:-1:-1;;;16675:170:0;;8277:2:1;16675:170:0::1;::::0;::::1;8259:21:1::0;8316:2;8296:18;;;8289:30;8355:25;8335:18;;;8328:53;8398:18;;16675:170:0::1;8075:347:1::0;16675:170:0::1;16856:7;:16:::0;;;;16883:8:::1;:18:::0;16912:12:::1;:26:::0;16573:373::o;14566:501::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;14637:29:::1;14688:9;14637:61;;14709:16;14746:10;-1:-1:-1::0;;;;;14746:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14728:47:0::1;;14784:4;14791:10;-1:-1:-1::0;;;;;14791:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14728:81;::::0;-1:-1:-1;;;;;;14728:81:0::1;::::0;;;;;;-1:-1:-1;;;;;5200:15:1;;;14728:81:0::1;::::0;::::1;5182:34:1::0;5252:15;;5232:18;;;5225:43;5117:18;;14728:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14709:100:::0;-1:-1:-1;;;;;;14824:22:0;::::1;14820:207;;14890:10;-1:-1:-1::0;;;;;14890:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14872:50:0::1;;14931:4;14938:10;-1:-1:-1::0;;;;;14938:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14872:84;::::0;-1:-1:-1;;;;;;14872:84:0::1;::::0;;;;;;-1:-1:-1;;;;;5200:15:1;;;14872:84:0::1;::::0;::::1;5182:34:1::0;5252:15;;5232:18;;;5225:43;5117:18;;14872:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14863:6;:93:::0;;-1:-1:-1;;;;;;14863:93:0::1;-1:-1:-1::0;;;;;14863:93:0;;;::::1;::::0;;;::::1;::::0;;14820:207:::1;;;14998:6;:17:::0;;-1:-1:-1;;;;;;14998:17:0::1;-1:-1:-1::0;;;;;14998:17:0;::::1;;::::0;;14820:207:::1;-1:-1:-1::0;15037:9:0::1;:22:::0;;-1:-1:-1;;;;;;15037:22:0::1;-1:-1:-1::0;;;;;15037:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;14566:501:0:o;16074:141::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16166:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;16166:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16074:141::o;17855:289::-;9414:6;;-1:-1:-1;;;;;9414:6:0;378:10;9414:22;9406:52;;;;-1:-1:-1;;;9406:52:0;;;;;;;:::i;:::-;18055:16:::1;18035;18025:7;;:26;;;;:::i;:::-;18024:47;;;;:::i;:::-;18008:13;:63:::0;18096:7:::1;::::0;18123:13;;18096:23:::1;::::0;18106:13;;18096:23:::1;:::i;:::-;18095:41;;;;:::i;:::-;18082:10;:54:::0;-1:-1:-1;;;;17855:289:0:o;13351:309::-;-1:-1:-1;;;;;13445:20:0;;13437:52;;;;-1:-1:-1;;;13437:52:0;;10065:2:1;13437:52:0;;;10047:21:1;10104:2;10084:18;;;10077:30;-1:-1:-1;;;10123:18:1;;;10116:49;10182:18;;13437:52:0;9863:343:1;13437:52:0;-1:-1:-1;;;;;13508:21:0;;13500:53;;;;-1:-1:-1;;;13500:53:0;;10065:2:1;13500:53:0;;;10047:21:1;10104:2;10084:18;;;10077:30;-1:-1:-1;;;10123:18:1;;;10116:49;10182:18;;13500:53:0;9863:343:1;13500:53:0;-1:-1:-1;;;;;13566:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13619:33;;12522:25:1;;;13619:33:0;;12495:18:1;13619:33:0;;;;;;;13351:309;;;:::o;18876:1646::-;18955:4;-1:-1:-1;;;;;18980:18:0;;18972:51;;;;-1:-1:-1;;;18972:51:0;;9033:2:1;18972:51:0;;;9015:21:1;9072:2;9052:18;;;9045:30;-1:-1:-1;;;9091:18:1;;;9084:50;9151:18;;18972:51:0;8831:344:1;18972:51:0;-1:-1:-1;;;;;19042:16:0;;19034:49;;;;-1:-1:-1;;;19034:49:0;;9033:2:1;19034:49:0;;;9015:21:1;9072:2;9052:18;;;9045:30;-1:-1:-1;;;9091:18:1;;;9084:50;9151:18;;19034:49:0;8831:344:1;19034:49:0;19111:1;19102:6;:10;19094:31;;;;-1:-1:-1;;;19094:31:0;;9729:2:1;19094:31:0;;;9711:21:1;9768:1;9748:18;;;9741:29;-1:-1:-1;;;9786:18:1;;;9779:38;9834:18;;19094:31:0;9527:331:1;19094:31:0;19139:20;19150:4;19156:2;19139:10;:20::i;:::-;19136:707;;;19180:15;;;;19176:347;;;-1:-1:-1;;;;;19220:13:0;;;;;;:7;:13;;;;;;;;19216:292;;;-1:-1:-1;;;;;19265:13:0;;;;;;:9;:13;;;;;;19282:12;19265:29;;19257:38;;;;;;-1:-1:-1;;;;;19318:13:0;;;;;;:9;:13;;;;;19334:12;19318:28;;19216:292;;;-1:-1:-1;;;;;19403:15:0;;;;;;:9;:15;;;;;;19422:12;19403:31;;19395:40;;;;;;-1:-1:-1;;;;;19458:15:0;;;;;;:9;:15;;;;;19476:12;19458:30;;19216:292;-1:-1:-1;;;;;19540:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;19557:11:0;;;;;;:7;:11;;;;;;;;19540:28;19537:126;;;19606:12;;19596:6;:22;;19588:59;;;;-1:-1:-1;;;19588:59:0;;11795:2:1;19588:59:0;;;11777:21:1;11834:2;11814:18;;;11807:30;11873:26;11853:18;;;11846:54;11917:18;;19588:59:0;11593:348:1;19588:59:0;19686:14;;-1:-1:-1;;;;;19680:20:0;;;19686:14;;19680:20;;;;:36;;-1:-1:-1;;;;;;19705:11:0;;;;;;:7;:11;;;;;;;;19704:12;19680:36;19677:155;;;19771:14;;19761:6;19745:13;19755:2;-1:-1:-1;;;;;12975:16:0;12948:7;12975:16;;;:7;:16;;;;;;;12882:117;19745:13;:22;;;;:::i;:::-;:40;;19737:79;;;;-1:-1:-1;;;19737:79:0;;11092:2:1;19737:79:0;;;11074:21:1;11131:2;11111:18;;;11104:30;11170:28;11150:18;;;11143:56;11216:18;;19737:79:0;10890:350:1;19737:79:0;-1:-1:-1;;;;;19888:25:0;;19855:12;19888:25;;;:19;:25;;;;;;19870:4;;19888:25;;;:52;;-1:-1:-1;;;;;;19917:23:0;;;;;;:19;:23;;;;;;;;19888:52;19885:98;;;-1:-1:-1;19966:5:0;19885:98;-1:-1:-1;;;;;19999:11:0;;;;;;:7;:11;;;;;;;;19995:457;;;20032:16;;-1:-1:-1;;;20032:16:0;;;;20031:17;:59;;;;-1:-1:-1;20069:21:0;;-1:-1:-1;;;20069:21:0;;;;20031:59;20027:408;;;20174:4;20125:28;12975:16;;;:7;:16;;;;;;20125:55;;20227:13;;20203:20;:37;20199:221;;20292:10;;20268:20;:34;20265:77;;-1:-1:-1;20329:10:0;;20265:77;20364:36;20379:20;20364:14;:36::i;:::-;20106:329;20027:408;20470:44;20488:4;20494:2;20498:6;20506:7;20470:17;:44::i;:::-;20463:51;18876:1646;-1:-1:-1;;;;;18876:1646:0:o;18545:323::-;18613:4;10965:6;;-1:-1:-1;;;;;18637:15:0;;;10965:6;;18637:15;;;;:45;;-1:-1:-1;10938:7:0;10965:6;-1:-1:-1;;;;;18669:13:0;;;10965:6;;18669:13;;18637:45;:84;;;;-1:-1:-1;;;;;;18700:21:0;;;;;;:17;:21;;;;;;;;18699:22;18637:84;:125;;;;-1:-1:-1;;;;;;18739:23:0;;;;;;:17;:23;;;;;;;;18738:24;18637:125;:152;;;;-1:-1:-1;;;;;;18779:10:0;;7460:42;18779:10;;18637:152;:185;;;;-1:-1:-1;;;;;;18806:16:0;;;;18637:185;:223;;;;-1:-1:-1;;;;;;18839:21:0;;18855:4;18839:21;;18637:223;18630:230;18545:323;-1:-1:-1;;;18545:323:0:o;20530:1015::-;9288:16;:23;;-1:-1:-1;;;;9288:23:0;-1:-1:-1;;;9288:23:0;;;20655:9:::1;::::0;20637:15:::1;::::0;20619::::1;::::0;:33:::1;::::0;20637:15;20619:33:::1;:::i;:::-;:45;;;;:::i;:::-;20615:76;;20684:7;;20615:76;20701:17;20816:1;20802:9;;20784:15;;20766;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20746:15;::::0;20723:38:::1;::::0;:20;:38:::1;:::i;:::-;20722:90;;;;:::i;:::-;20721:96;;;;:::i;:::-;20701:116:::0;-1:-1:-1;20830:20:0::1;20853:32;20701:116:::0;20853:20;:32:::1;:::i;:::-;20830:55;;20896:30;20913:12;20896:16;:30::i;:::-;20939:22;20964:21;20939:46;;20996:24;21112:1;21098:9;;21080:15;;21062;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;21042:15;::::0;21025:32:::1;::::0;:14;:32:::1;:::i;:::-;21024:84;;;;:::i;:::-;21023:90;;;;:::i;:::-;20996:117:::0;-1:-1:-1;21130:13:0;;21126:161:::1;;21160:41;21173:9;21184:16;21160:12;:41::i;:::-;21221:54;::::0;;13745:25:1;;;13801:2;13786:18;;13779:34;;;13829:18;;;13822:34;;;21221:54:0::1;::::0;13733:2:1;13718:18;21221:54:0::1;;;;;;;21126:161;21336:1;21301:32;21324:9:::0;21301:20;:32:::1;:::i;:::-;:36;21297:241;;;21354:16;::::0;21457:9:::1;::::0;21439:15:::1;::::0;-1:-1:-1;;;;;21354:16:0;;::::1;::::0;:114:::1;::::0;21439:27:::1;::::0;::::1;:::i;:::-;21419:15;::::0;21382:33:::1;21399:16:::0;21382:14;:33:::1;:::i;:::-;21381:53;;;;:::i;:::-;21380:87;;;;:::i;:::-;21354:114;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21483:11:0::1;::::0;:43:::1;::::0;-1:-1:-1;;;;;21483:11:0;;::::1;::::0;21504:21:::1;21483:43:::0;::::1;;;::::0;:11:::1;:43:::0;:11;:43;21504:21;21483:11;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21297:241;20604:941;;;;9322:1;-1:-1:-1::0;9334:16:0;:24;;-1:-1:-1;;;;9334:24:0;;;20530:1015::o;22941:1216::-;23062:16;;23041:4;;23062:16;;23058:858;;;-1:-1:-1;;;;;15861:31:0;;15837:4;15861:31;;;:22;:31;;;;;;;;23098:56;;;-1:-1:-1;;;;;;15861:31:0;;15837:4;15861:31;;;:22;:31;;;;;;;;23129:25;23094:123;;;23175:26;;-1:-1:-1;;;23175:26:0;;10413:2:1;23175:26:0;;;10395:21:1;10452:2;10432:18;;;10425:30;-1:-1:-1;;;10471:18:1;;;10464:46;10527:18;;23175:26:0;10211:340:1;23094:123:0;23238:16;;;;;;;23233:672;;23275:28;23294:4;23300:2;23275:18;:28::i;:::-;23327:16;;;;;;;23326:17;:41;;;;;23347:20;23358:4;23364:2;23347:10;:20::i;:::-;23322:137;;;23392:47;;-1:-1:-1;;;23392:47:0;;7871:2:1;23392:47:0;;;7853:21:1;7910:2;7890:18;;;7883:30;7949:34;7929:18;;;7922:62;-1:-1:-1;;;8000:18:1;;;7993:35;8045:19;;23392:47:0;7669:401:1;23322:137:0;23233:672;;;23518:1;23503:12;;:16;:55;;;;-1:-1:-1;;;;;;23545:13:0;;;;;;:7;:13;;;;;;;;23503:55;:101;;;;;23584:20;23595:4;23601:2;23584:10;:20::i;:::-;23499:391;;;23681:13;;23666:12;;23651:27;;:12;:27;:::i;:::-;:43;23647:224;;;-1:-1:-1;;;;;23723:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;23723:33:0;23752:4;23723:33;;;23783:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;23831:16:0;;-1:-1:-1;;;;;4926:32:1;;4908:51;;23831:16:0;;4896:2:1;4881:18;23831:16:0;;;;;;;23647:224;-1:-1:-1;;;;;23928:13:0;;;;;;:7;:13;;;;;:23;;23945:6;;23928:13;:23;;23945:6;;23928:23;:::i;:::-;;;;-1:-1:-1;23962:22:0;;-1:-1:-1;23988:7:0;23987:48;;24029:6;23987:48;;;23999:27;24009:4;24015:2;24019:6;23999:9;:27::i;:::-;-1:-1:-1;;;;;24046:11:0;;;;;;:7;:11;;;;;:29;;23962:73;;-1:-1:-1;23962:73:0;;24046:11;;;:29;;23962:73;;24046:29;:::i;:::-;;;;;;;;24108:2;-1:-1:-1;;;;;24093:34:0;24102:4;-1:-1:-1;;;;;24093:34:0;;24112:14;24093:34;;;;12522:25:1;;12510:2;12495:18;;12376:177;24093:34:0;;;;;;;;-1:-1:-1;24145:4:0;;22941:1216;-1:-1:-1;;;;;22941:1216:0:o;21553:417::-;21644:16;;;21658:1;21644:16;;;;;;;;21620:21;;21644:16;;;;;;;;;;-1:-1:-1;21644:16:0;21620:40;;21689:4;21671;21676:1;21671:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21671:23:0;;;:7;;;;;;;;;;:23;;;;21715:9;;:16;;;-1:-1:-1;;;21715:16:0;;;;:9;;;;;:14;;:16;;;;;21671:7;;21715:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21705:4;21710:1;21705:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21705:26:0;;;:7;;;;;;;;;:26;21744:9;;:218;;-1:-1:-1;;;21744:218:0;;:9;;;:60;;:218;;21819:11;;21744:9;;21889:4;;21916;;21936:15;;21744:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21609:361;21553:417;:::o;21978:332::-;22059:9;;:243;;-1:-1:-1;;;22059:243:0;;22125:4;22059:243;;;5620:34:1;5670:18;;;5663:34;;;22059:9:0;5713:18:1;;;5706:34;;;5756:18;;;5749:34;7460:42:0;5799:19:1;;;5792:44;22276:15:0;5852:19:1;;;5845:35;-1:-1:-1;;;;;22059:9:0;;;;:25;;22092:9;;5554:19:1;;22059:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21978:332;;:::o;22318:615::-;22400:16;;;;;;;22399:17;22391:65;;;;-1:-1:-1;;;22391:65:0;;7467:2:1;22391:65:0;;;7449:21:1;7506:2;7486:18;;;7479:30;7545:34;7525:18;;;7518:62;-1:-1:-1;;;7596:18:1;;;7589:33;7639:19;;22391:65:0;7265:399:1;22391:65:0;22472:20;22483:4;22489:2;22472:10;:20::i;:::-;22471:21;:37;;;;-1:-1:-1;22502:6:0;;-1:-1:-1;;;;;22496:12:0;;;22502:6;;22496:12;22471:37;22467:459;;;22529:13;;22546:1;22529:18;22525:161;;22583:19;:12;22598:4;22583:19;:::i;:::-;22568:12;:34;22525:161;;;22658:12;22643;:27;22525:161;-1:-1:-1;;;;;22702:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;22702:30:0;22728:4;22702:30;;;;;;22747:16;:23;;-1:-1:-1;;22747:23:0;22702:30;22747:23;;;22800:15;22785:12;:30;22832:21;:28;;-1:-1:-1;;;;22832:28:0;-1:-1:-1;;;22832:28:0;;;22880:34;;;;;;6056:14:1;;6049:22;6031:41;;6019:2;6004:18;;5891:187;22880:34:0;;;;;;;;22318:615;;:::o;24165:713::-;24305:6;;24244:7;;;;-1:-1:-1;;;;;24297:14:0;;;24305:6;;24297:14;24293:197;;;-1:-1:-1;24341:7:0;;24293:197;;;24376:6;;-1:-1:-1;;;;;24370:12:0;;;24376:6;;24370:12;24366:124;;;-1:-1:-1;24412:8:0;;24366:124;;;-1:-1:-1;24466:12:0;;24366:124;24506:20;24517:4;24523:2;24506:10;:20::i;:::-;24502:156;;;24546:13;;:18;;:56;;;24600:2;24585:14;;:17;;;;:::i;:::-;24568:13;;:34;;24546:56;24542:105;;;24623:8;;;24542:105;24670:17;6991:5;24690:19;24699:10;24690:6;:19;:::i;:::-;:38;;;;:::i;:::-;24757:4;24741:22;;;;:7;:22;;;;;:35;;24670:58;;-1:-1:-1;24670:58:0;;24741:22;;;:35;;24670:58;;24741:35;:::i;:::-;;;;-1:-1:-1;;24792:40:0;;12522:25:1;;;24815:4:0;;-1:-1:-1;;;;;24792:40:0;;;;;12510:2:1;12495:18;24792:40:0;;;;;;;24852:18;24861:9;24852:6;:18;:::i;:::-;24845:25;24165:713;-1:-1:-1;;;;;;24165:713:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:404::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;-1:-1:-1;1013:2:1;998:18;;985:32;1026:33;985:32;1026:33;:::i;:::-;1078:7;1068:17;;;687:404;;;;;:::o;1489:456::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:1;1801:18;;1788:32;1829:33;1788:32;1829:33;:::i;:::-;1489:456;;1881:7;;-1:-1:-1;;;1935:2:1;1920:18;;;;1907:32;;1489:456::o;1950:315::-;2015:6;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2131:9;2118:23;2150:31;2175:5;2150:31;:::i;:::-;2200:5;-1:-1:-1;2224:35:1;2255:2;2240:18;;2224:35;:::i;:::-;2214:45;;1950:315;;;;;:::o;2270:::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:52;;;2415:1;2412;2405:12;2367:52;2454:9;2441:23;2473:31;2498:5;2473:31;:::i;:::-;2523:5;2575:2;2560:18;;;;2547:32;;-1:-1:-1;;;2270:315:1:o;2590:180::-;2646:6;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2738:26;2754:9;2738:26;:::i;2775:248::-;2837:6;2845;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;2937:26;2953:9;2937:26;:::i;3028:180::-;3087:6;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;-1:-1:-1;3179:23:1;;3028:180;-1:-1:-1;3028:180:1:o;3213:248::-;3281:6;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;;3381:23:1;;;3451:2;3436:18;;;3423:32;;-1:-1:-1;3213:248:1:o;3466:316::-;3543:6;3551;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;-1:-1:-1;;3651:23:1;;;3721:2;3706:18;;3693:32;;-1:-1:-1;3772:2:1;3757:18;;;3744:32;;3466:316;-1:-1:-1;3466:316:1:o;3787:306::-;3875:6;3883;3891;3944:2;3932:9;3923:7;3919:23;3915:32;3912:52;;;3960:1;3957;3950:12;3912:52;3989:9;3983:16;3973:26;;4039:2;4028:9;4024:18;4018:25;4008:35;;4083:2;4072:9;4068:18;4062:25;4052:35;;3787:306;;;;;:::o;4098:385::-;4184:6;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;-1:-1:-1;;4301:23:1;;;4371:2;4356:18;;4343:32;;-1:-1:-1;4422:2:1;4407:18;;4394:32;;4473:2;4458:18;4445:32;;-1:-1:-1;4098:385:1;-1:-1:-1;4098:385:1:o;4488:269::-;4545:6;4598:2;4586:9;4577:7;4573:23;4569:32;4566:52;;;4614:1;4611;4604:12;4566:52;4653:9;4640:23;4703:4;4696:5;4692:16;4685:5;4682:27;4672:55;;4723:1;4720;4713:12;6317:597;6429:4;6458:2;6487;6476:9;6469:21;6519:6;6513:13;6562:6;6557:2;6546:9;6542:18;6535:34;6587:1;6597:140;6611:6;6608:1;6605:13;6597:140;;;6706:14;;;6702:23;;6696:30;6672:17;;;6691:2;6668:26;6661:66;6626:10;;6597:140;;;6755:6;6752:1;6749:13;6746:91;;;6825:1;6820:2;6811:6;6800:9;6796:22;6792:31;6785:42;6746:91;-1:-1:-1;6898:2:1;6877:15;-1:-1:-1;;6873:29:1;6858:45;;;;6905:2;6854:54;;6317:597;-1:-1:-1;;;6317:597:1:o;6919:341::-;7121:2;7103:21;;;7160:2;7140:18;;;7133:30;-1:-1:-1;;;7194:2:1;7179:18;;7172:47;7251:2;7236:18;;6919:341::o;8427:399::-;8629:2;8611:21;;;8668:2;8648:18;;;8641:30;8707:34;8702:2;8687:18;;8680:62;-1:-1:-1;;;8773:2:1;8758:18;;8751:33;8816:3;8801:19;;8427:399::o;11946:425::-;12148:2;12130:21;;;12187:2;12167:18;;;12160:30;12226:34;12221:2;12206:18;;12199:62;12297:31;12292:2;12277:18;;12270:59;12361:3;12346:19;;11946:425::o;12558:980::-;12820:4;12868:3;12857:9;12853:19;12899:6;12888:9;12881:25;12925:2;12963:6;12958:2;12947:9;12943:18;12936:34;13006:3;13001:2;12990:9;12986:18;12979:31;13030:6;13065;13059:13;13096:6;13088;13081:22;13134:3;13123:9;13119:19;13112:26;;13173:2;13165:6;13161:15;13147:29;;13194:1;13204:195;13218:6;13215:1;13212:13;13204:195;;;13283:13;;-1:-1:-1;;;;;13279:39:1;13267:52;;13374:15;;;;13339:12;;;;13315:1;13233:9;13204:195;;;-1:-1:-1;;;;;;;13455:32:1;;;;13450:2;13435:18;;13428:60;-1:-1:-1;;;13519:3:1;13504:19;13497:35;13416:3;12558:980;-1:-1:-1;;;12558:980:1:o;14056:128::-;14096:3;14127:1;14123:6;14120:1;14117:13;14114:39;;;14133:18;;:::i;:::-;-1:-1:-1;14169:9:1;;14056:128::o;14189:217::-;14229:1;14255;14245:132;;14299:10;14294:3;14290:20;14287:1;14280:31;14334:4;14331:1;14324:15;14362:4;14359:1;14352:15;14245:132;-1:-1:-1;14391:9:1;;14189:217::o;14411:168::-;14451:7;14517:1;14513;14509:6;14505:14;14502:1;14499:21;14494:1;14487:9;14480:17;14476:45;14473:71;;;14524:18;;:::i;:::-;-1:-1:-1;14564:9:1;;14411:168::o;14584:125::-;14624:4;14652:1;14649;14646:8;14643:34;;;14657:18;;:::i;:::-;-1:-1:-1;14694:9:1;;14584:125::o;14714:380::-;14793:1;14789:12;;;;14836;;;14857:61;;14911:4;14903:6;14899:17;14889:27;;14857:61;14964:2;14956:6;14953:14;14933:18;14930:38;14927:161;;;15010:10;15005:3;15001:20;14998:1;14991:31;15045:4;15042:1;15035:15;15073:4;15070:1;15063:15;14927:161;;14714:380;;;:::o;15099:135::-;15138:3;-1:-1:-1;;15159:17:1;;15156:43;;;15179:18;;:::i;:::-;-1:-1:-1;15226:1:1;15215:13;;15099:135::o;15239:127::-;15300:10;15295:3;15291:20;15288:1;15281:31;15331:4;15328:1;15321:15;15355:4;15352:1;15345:15;15371:127;15432:10;15427:3;15423:20;15420:1;15413:31;15463:4;15460:1;15453:15;15487:4;15484:1;15477:15;15635:131;-1:-1:-1;;;;;15710:31:1;;15700:42;;15690:70;;15756:1;15753;15746:12;15690:70;15635:131;:::o

Swarm Source

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