ETH Price: $3,162.35 (+1.36%)
Gas: 2 Gwei

Token

SCREAMEME (SCREAM)
 

Overview

Max Total Supply

10,000,000,000 SCREAM

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,478,667.289476235102942711 SCREAM

Value
$0.00
0xe0c6a8913cf230a017d1df705579ff645d9a197f
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
SCREAMEME

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-22
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.21;

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

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


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


    constructor() {
        _transferOwnership(_msgSender());
    }


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


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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;

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

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

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public deadBlocks;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

    uint256 public tokensForMarketing;

       uint256 _buyMarketingFee = 10;
        uint256 _sellMarketingFee = 10;




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

    mapping(address => bool) public automatedMarketMakerPairs;

    //Cooldown for bot protection

    mapping (address => User) private cooldown;
     bool private _cooldownEnabled = true;
      event CooldownEnabledUpdated(bool _cooldown);
       uint256 private buyLimitEnd;

    uint256 private Cooldowntime= 60 seconds ;
    
          struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("SCREAMEME", "SCREAM") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 totalSupply = 10000000000 * 1e18;


        maxTransactionAmount = totalSupply * 2 / 100;
        maxWallet =totalSupply * 2 / 100;
        swapTokensAtAmount =100000 * 10**decimals();

        marketingWallet = address(0xd4671D1B49a185Ee4A780B973D041BDa273Ab11f);
       
       

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        deadBlocks = _deadBlocks;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

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

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
  
        swapTokensAtAmount = newAmount* (10**18);
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
    
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
   
        maxWallet = newNum * (10**18);
    }


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

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

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

    function manualswap(uint256 amount) external {
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(
        uint256 _marketingFee
    ) external onlyOwner {
        _buyMarketingFee = _marketingFee;
        buyTotalFees = _buyMarketingFee;
        
    }

    function updateSellFees(
        uint256 _marketingFee
    ) external onlyOwner {
        _sellMarketingFee = _marketingFee;
        sellTotalFees = _sellMarketingFee;
 
    }
       function burn(uint256 value) public onlyOwner {
        _burn(_msgSender(), value);
    }

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

          function setCooldownEnabled(bool onoff) external onlyOwner() {
        _cooldownEnabled = onoff;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }

        function updateTimer(uint256 sec) external onlyOwner {
     
        Cooldowntime = sec;
      
    }
          function updateLimit(uint256 sec) external onlyOwner {
     
        buyLimitEnd = sec;
      
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

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

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {







////Cooldown for bot


  if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }





       // buy cooldown
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedMaxTransactionAmount[to]) {
                require(tradingActive, "Trading not yet enabled.");
              
                
                 
                if(_cooldownEnabled) {
                    if(buyLimitEnd > block.timestamp) {
                        require(amount <= maxTransactionAmount);
                        require(cooldown[to].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[to].buy = block.timestamp + (Cooldowntime);
                    }
                }
                if(_cooldownEnabled) {
                    cooldown[to].sell = block.timestamp + (Cooldowntime);
                }
            }

/// sell Cooldown 

   if( from != uniswapV2Pair  && tradingActive) {

                if(_cooldownEnabled) {
                    require(cooldown[from].sell < block.timestamp, "Your sell cooldown has not expired.");
                }
   }


////  Cooldown End





              if
                ((launchedAt + deadBlocks) >= block.number)
              {
                buyMarketingFee = 200;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 200;
                sellTotalFees = sellMarketingFee;

              } 
                    else if(block.number > (launchedAt + deadBlocks) && block.number <= launchedAt + 20)
              {
                buyMarketingFee = 100;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 100;
                sellTotalFees = sellMarketingFee;
              }
         
                    else
              {

                buyMarketingFee = _buyMarketingFee;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = _sellMarketingFee;
                sellTotalFees = sellMarketingFee;
              }

                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

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



        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

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

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

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


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

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

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

        // Halve the amount of liquidity tokens

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        tokensForMarketing = 0;


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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sec","type":"uint256"}],"name":"updateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sec","type":"uint256"}],"name":"updateTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805462ffffff19166001908117825560138290556014919091556019805460ff19169091179055603c601b553480156200003e575f80fd5b506040518060400160405280600981526020016853435245414d454d4560b81b8152506040518060400160405280600681526020016553435245414d60d01b8152508160039081620000919190620006c3565b506004620000a08282620006c3565b505050620000bd620000b76200037560201b60201c565b62000379565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000df816001620003ca565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000128573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014e91906200078b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c091906200078b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200020b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023191906200078b565b6001600160a01b031660a08190526200024c906001620003ca565b60a0516200025c90600162000442565b6b204fce5e3e25026110000000606462000278826002620007ce565b620002849190620007ee565b600755606462000296826002620007ce565b620002a29190620007ee565b600955620002b36012600a62000907565b620002c290620186a0620007ce565b600855600680546001600160a01b03191673d4671d1b49a185ee4a780b973d041bda273ab11f1790556200030a620003026005546001600160a01b031690565b600162000495565b6200031730600162000495565b6200032661dead600162000495565b620003456200033d6005546001600160a01b031690565b6001620003ca565b62000352306001620003ca565b6200036161dead6001620003ca565b6200036d33826200053d565b50506200092d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620004185760405162461bcd60e51b815260206004820181905260248201525f8051602062002fe683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004df5760405162461bcd60e51b815260206004820181905260248201525f8051602062002fe683398151915260448201526064016200040f565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005955760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200040f565b8060025f828254620005a8919062000917565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005d690849062000917565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200064d57607f821691505b6020821081036200066c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200061f575f81815260208120601f850160051c810160208610156200069a5750805b601f850160051c820191505b81811015620006bb57828155600101620006a6565b505050505050565b81516001600160401b03811115620006df57620006df62000624565b620006f781620006f0845462000638565b8462000672565b602080601f8311600181146200072d575f8415620007155750858301515b5f19600386901b1c1916600185901b178555620006bb565b5f85815260208120601f198616915b828110156200075d578886015182559484019460019091019084016200073c565b50858210156200077b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200079c575f80fd5b81516001600160a01b0381168114620007b3575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620007e857620007e8620007ba565b92915050565b5f826200080957634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b808511156200084e57815f1904821115620008325762000832620007ba565b808516156200084057918102915b93841c939080029062000813565b509250929050565b5f826200086657506001620007e8565b816200087457505f620007e8565b81600181146200088d57600281146200089857620008b8565b6001915050620007e8565b60ff841115620008ac57620008ac620007ba565b50506001821b620007e8565b5060208310610133831016604e8410600b8410161715620008dd575081810a620007e8565b620008e983836200080e565b805f1904821115620008ff57620008ff620007ba565b029392505050565b5f620007b360ff84168362000856565b80820180821115620007e857620007e8620007ba565b60805160a051612666620009805f395f818161047701528181610dbd0152818161144f015261163001525f818161034b0152818161148b01528181611ed501528181611f8c0152611fc801526126665ff3fe6080604052600436106102a8575f3560e01c806382aa7c681161016f578063c0246668116100d8578063e2f4560511610092578063f2fde38b1161006d578063f2fde38b1461085b578063f8b45b051461087a578063fabb0b4f1461088f578063fae0959a146108a4575f80fd5b8063e2f4560514610808578063eba4c3331461081d578063ec54a36a1461083c575f80fd5b8063c02466681461073d578063c18bc1951461075c578063c8c8ebe41461077b578063d257b34f14610790578063d85ba063146107af578063dd62ed3e146107c4575f80fd5b80639a7a23d6116101295780639a7a23d614610675578063a457c2d714610694578063a9059cbb146106b3578063aacebbe3146106d2578063b62496f5146106f1578063bbc0c7421461071f575f80fd5b806382aa7c68146105d2578063881dce60146105f15780638da5cb5b14610610578063921369131461062d578063924de9b71461064257806395d89b4114610661575f80fd5b806349bd5a5e1161021157806370a08231116101cb57806370a0823114610519578063715018a61461054d57806371fc468814610561578063751039fc146105805780637571336a1461059457806375f0a874146105b3575f80fd5b806349bd5a5e146104665780634a62bb65146104995780635932ead1146104b25780636a486a8e146104d15780636ddd1713146104e65780636fc3eaec14610505575f80fd5b8063203e727e11610262578063203e727e146103b857806323b872dd146103d957806327c8f835146103f8578063313ce5671461040d578063395093511461042857806342966c6814610447575f80fd5b806306fdde03146102b3578063095ea7b3146102dd57806310d5de531461030c5780631694505e1461033a57806318160ddd146103855780631f3fed8f146103a3575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c76108c3565b6040516102d491906122a2565b60405180910390f35b3480156102e8575f80fd5b506102fc6102f7366004612301565b610953565b60405190151581526020016102d4565b348015610317575f80fd5b506102fc61032636600461232b565b60166020525f908152604090205460ff1681565b348015610345575f80fd5b5061036d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102d4565b348015610390575f80fd5b506002545b6040519081526020016102d4565b3480156103ae575f80fd5b5061039560125481565b3480156103c3575f80fd5b506103d76103d2366004612346565b610969565b005b3480156103e4575f80fd5b506102fc6103f336600461235d565b6109b4565b348015610403575f80fd5b5061036d61dead81565b348015610418575f80fd5b50604051601281526020016102d4565b348015610433575f80fd5b506102fc610442366004612301565b610a5c565b348015610452575f80fd5b506103d7610461366004612346565b610a97565b348015610471575f80fd5b5061036d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a4575f80fd5b50600a546102fc9060ff1681565b3480156104bd575f80fd5b506103d76104cc3660046123aa565b610ace565b3480156104dc575f80fd5b5061039560105481565b3480156104f1575f80fd5b50600a546102fc9062010000900460ff1681565b348015610510575f80fd5b506103d7610b45565b348015610524575f80fd5b5061039561053336600461232b565b6001600160a01b03165f9081526020819052604090205490565b348015610558575f80fd5b506103d7610b9a565b34801561056c575f80fd5b506103d761057b366004612346565b610bcf565b34801561058b575f80fd5b506102fc610c03565b34801561059f575f80fd5b506103d76105ae3660046123c3565b610c3f565b3480156105be575f80fd5b5060065461036d906001600160a01b031681565b3480156105dd575f80fd5b506103d76105ec366004612346565b610c93565b3480156105fc575f80fd5b506103d761060b366004612346565b610cdb565b34801561061b575f80fd5b506005546001600160a01b031661036d565b348015610638575f80fd5b5061039560115481565b34801561064d575f80fd5b506103d761065c3660046123aa565b610d3c565b34801561066c575f80fd5b506102c7610d82565b348015610680575f80fd5b506103d761068f3660046123c3565b610d91565b34801561069f575f80fd5b506102fc6106ae366004612301565b610e70565b3480156106be575f80fd5b506102fc6106cd366004612301565b610f08565b3480156106dd575f80fd5b506103d76106ec36600461232b565b610f14565b3480156106fc575f80fd5b506102fc61070b36600461232b565b60176020525f908152604090205460ff1681565b34801561072a575f80fd5b50600a546102fc90610100900460ff1681565b348015610748575f80fd5b506103d76107573660046123c3565b610f9a565b348015610767575f80fd5b506103d7610776366004612346565b611022565b348015610786575f80fd5b5061039560075481565b34801561079b575f80fd5b506102fc6107aa366004612346565b611064565b3480156107ba575f80fd5b50610395600e5481565b3480156107cf575f80fd5b506103956107de3660046123f6565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610813575f80fd5b5061039560085481565b348015610828575f80fd5b506103d7610837366004612346565b6110ae565b348015610847575f80fd5b506103d7610856366004612346565b6110e2565b348015610866575f80fd5b506103d761087536600461232b565b611111565b348015610885575f80fd5b5061039560095481565b34801561089a575f80fd5b50610395600d5481565b3480156108af575f80fd5b506103d76108be366004612346565b6111a9565b6060600380546108d29061242d565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061242d565b80156109495780601f1061092057610100808354040283529160200191610949565b820191905f5260205f20905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b5f61095f3384846111d8565b5060015b92915050565b6005546001600160a01b0316331461099c5760405162461bcd60e51b815260040161099390612465565b60405180910390fd5b6109ae81670de0b6b3a76400006124ae565b60075550565b5f6109c08484846112fb565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610993565b610a5185338584036111d8565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161095f918590610a929086906124c5565b6111d8565b6005546001600160a01b03163314610ac15760405162461bcd60e51b815260040161099390612465565b610acb3382611ce4565b50565b6005546001600160a01b03163314610af85760405162461bcd60e51b815260040161099390612465565b6019805460ff191682151590811790915560405160ff909116151581527f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f287069060200160405180910390a150565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610b8f576040519150601f19603f3d011682016040523d82523d5f602084013e610b94565b606091505b50505050565b6005546001600160a01b03163314610bc45760405162461bcd60e51b815260040161099390612465565b610bcd5f611e2f565b565b6005546001600160a01b03163314610bf95760405162461bcd60e51b815260040161099390612465565b6013819055600e55565b6005545f906001600160a01b03163314610c2f5760405162461bcd60e51b815260040161099390612465565b50600a805460ff19169055600190565b6005546001600160a01b03163314610c695760405162461bcd60e51b815260040161099390612465565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cbd5760405162461bcd60e51b815260040161099390612465565b600d55600a805462ffff0019166201010017905543600b5542600c55565b305f908152602081905260409020548111158015610cf857505f81115b610d335760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610993565b610acb81611e80565b6005546001600160a01b03163314610d665760405162461bcd60e51b815260040161099390612465565b600a8054911515620100000262ff000019909216919091179055565b6060600480546108d29061242d565b6005546001600160a01b03163314610dbb5760405162461bcd60e51b815260040161099390612465565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e625760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610993565b610e6c8282612036565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ef15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610993565b610efe33858584036111d8565b5060019392505050565b5f61095f3384846112fb565b6005546001600160a01b03163314610f3e5760405162461bcd60e51b815260040161099390612465565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610fc45760405162461bcd60e51b815260040161099390612465565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461104c5760405162461bcd60e51b815260040161099390612465565b61105e81670de0b6b3a76400006124ae565b60095550565b6005545f906001600160a01b031633146110905760405162461bcd60e51b815260040161099390612465565b6110a282670de0b6b3a76400006124ae565b6008555060015b919050565b6005546001600160a01b031633146110d85760405162461bcd60e51b815260040161099390612465565b6014819055601055565b6005546001600160a01b0316331461110c5760405162461bcd60e51b815260040161099390612465565b601b55565b6005546001600160a01b0316331461113b5760405162461bcd60e51b815260040161099390612465565b6001600160a01b0381166111a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610993565b610acb81611e2f565b6005546001600160a01b031633146111d35760405162461bcd60e51b815260040161099390612465565b601a55565b6001600160a01b03831661123a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610993565b6001600160a01b03821661129b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610993565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113215760405162461bcd60e51b8152600401610993906124d8565b6001600160a01b0382166113475760405162461bcd60e51b81526004016109939061251d565b805f0361135e5761135983835f612089565b505050565b600a5460ff1615611a7b576005546001600160a01b0384811691161480159061139557506005546001600160a01b03838116911614155b80156113a957506001600160a01b03821615155b80156113c057506001600160a01b03821661dead14155b80156113d65750600554600160a01b900460ff16155b15611a7b5760195460ff161561144d57335f9081526018602052604090206002015460ff1661144d57604080516060810182525f808252602080830182815260018486018181523385526018909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156114c057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156114e457506001600160a01b0382165f9081526016602052604090205460ff16155b1561162e57600a54610100900460ff166115405760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610993565b60195460ff16156115fa5742601a5411156115fa57600754811115611563575f80fd5b6001600160a01b0382165f9081526018602052604090205442116115d45760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b6064820152608401610993565b601b546115e190426124c5565b6001600160a01b0383165f908152601860205260409020555b60195460ff161561162e57601b5461161290426124c5565b6001600160a01b0383165f908152601860205260409020600101555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141580156116775750600a54610100900460ff165b156116fc5760195460ff16156116fc576001600160a01b0383165f9081526018602052604090206001015442116116fc5760405162461bcd60e51b815260206004820152602360248201527f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260448201526232b21760e91b6064820152608401610993565b43600d54600b5461170d91906124c5565b1061172b5760c8600f819055600e819055601181905560105561178b565b600d54600b5461173b91906124c5565b431180156117565750600b546117529060146124c5565b4311155b15611774576064600f819055600e819055601181905560105561178b565b601354600f819055600e5560145460118190556010555b600a54610100900460ff1661181c576001600160a01b0383165f9081526015602052604090205460ff16806117d757506001600160a01b0382165f9081526015602052604090205460ff165b61181c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610993565b6001600160a01b0383165f9081526017602052604090205460ff16801561185b57506001600160a01b0382165f9081526016602052604090205460ff16155b1561193e576007548111156118d05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610993565b6009546001600160a01b0383165f908152602081905260409020546118f590836124c5565b11156119395760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610993565b611a7b565b6001600160a01b0382165f9081526017602052604090205460ff16801561197d57506001600160a01b0383165f9081526016602052604090205460ff16155b156119f3576007548111156119395760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610993565b6001600160a01b0382165f9081526016602052604090205460ff16611a7b576009546001600160a01b0383165f90815260208190526040902054611a3790836124c5565b1115611a7b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610993565b305f9081526020819052604090205460085481108015908190611aa65750600a5462010000900460ff165b8015611abc5750600554600160a01b900460ff16155b8015611ae057506001600160a01b0385165f9081526017602052604090205460ff16155b8015611b0457506001600160a01b0385165f9081526015602052604090205460ff16155b8015611b2857506001600160a01b0384165f9081526015602052604090205460ff16155b15611b56576005805460ff60a01b1916600160a01b179055611b486121dc565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526015602052604090205460ff600160a01b909204821615911680611ba257506001600160a01b0385165f9081526015602052604090205460ff165b15611baa57505f5b5f8115611cd0576001600160a01b0386165f9081526017602052604090205460ff168015611bd957505f601054115b15611c3757611bff6103e8611bf96010548861228590919063ffffffff16565b90612297565b905060105460115482611c1291906124ae565b611c1c9190612560565b60125f828254611c2c91906124c5565b90915550611cb29050565b6001600160a01b0387165f9081526017602052604090205460ff168015611c5f57505f600e54115b15611cb257611c7f6103e8611bf9600e548861228590919063ffffffff16565b9050600e54600f5482611c9291906124ae565b611c9c9190612560565b60125f828254611cac91906124c5565b90915550505b8015611cc357611cc3873083612089565b611ccd818661257f565b94505b611cdb878787612089565b50505050505050565b6001600160a01b038216611d445760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610993565b6001600160a01b0382165f9081526020819052604090205481811015611db75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610993565b6001600160a01b0383165f908152602081905260408120838303905560028054849290611de590849061257f565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611eb357611eb3612592565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5391906125a6565b81600181518110611f6657611f66612592565b60200260200101906001600160a01b031690816001600160a01b031681525050611fb1307f0000000000000000000000000000000000000000000000000000000000000000846111d8565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120059085905f908690309042906004016125c1565b5f604051808303815f87803b15801561201c575f80fd5b505af115801561202e573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166120af5760405162461bcd60e51b8152600401610993906124d8565b6001600160a01b0382166120d55760405162461bcd60e51b81526004016109939061251d565b6001600160a01b0383165f908152602081905260409020548181101561214c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610993565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906121829084906124c5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121ce91815260200190565b60405180910390a350505050565b305f9081526020819052604081205460125490918215806121fb575081155b1561220557505050565b6008546122139060146124ae565b83111561222b576008546122289060146124ae565b92505b8261223581611e80565b5f60128190556006546040516001600160a01b039091169147919081818185875af1925050503d805f8114611cdb576040519150601f19603f3d011682016040523d82523d5f602084013e611cdb565b5f61229082846124ae565b9392505050565b5f6122908284612560565b5f6020808352835180828501525f5b818110156122cd578581018301518582016040015282016122b1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610acb575f80fd5b5f8060408385031215612312575f80fd5b823561231d816122ed565b946020939093013593505050565b5f6020828403121561233b575f80fd5b8135612290816122ed565b5f60208284031215612356575f80fd5b5035919050565b5f805f6060848603121561236f575f80fd5b833561237a816122ed565b9250602084013561238a816122ed565b929592945050506040919091013590565b803580151581146110a9575f80fd5b5f602082840312156123ba575f80fd5b6122908261239b565b5f80604083850312156123d4575f80fd5b82356123df816122ed565b91506123ed6020840161239b565b90509250929050565b5f8060408385031215612407575f80fd5b8235612412816122ed565b91506020830135612422816122ed565b809150509250929050565b600181811c9082168061244157607f821691505b60208210810361245f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109635761096361249a565b808201808211156109635761096361249a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f8261257a57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109635761096361249a565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125b6575f80fd5b8151612290816122ed565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561260f5784516001600160a01b0316835293830193918301916001016125ea565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122006aacf9f9de5f08bf1d51d9cb85e9efb5da41ac04e6243faccf7400c097c811464736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102a8575f3560e01c806382aa7c681161016f578063c0246668116100d8578063e2f4560511610092578063f2fde38b1161006d578063f2fde38b1461085b578063f8b45b051461087a578063fabb0b4f1461088f578063fae0959a146108a4575f80fd5b8063e2f4560514610808578063eba4c3331461081d578063ec54a36a1461083c575f80fd5b8063c02466681461073d578063c18bc1951461075c578063c8c8ebe41461077b578063d257b34f14610790578063d85ba063146107af578063dd62ed3e146107c4575f80fd5b80639a7a23d6116101295780639a7a23d614610675578063a457c2d714610694578063a9059cbb146106b3578063aacebbe3146106d2578063b62496f5146106f1578063bbc0c7421461071f575f80fd5b806382aa7c68146105d2578063881dce60146105f15780638da5cb5b14610610578063921369131461062d578063924de9b71461064257806395d89b4114610661575f80fd5b806349bd5a5e1161021157806370a08231116101cb57806370a0823114610519578063715018a61461054d57806371fc468814610561578063751039fc146105805780637571336a1461059457806375f0a874146105b3575f80fd5b806349bd5a5e146104665780634a62bb65146104995780635932ead1146104b25780636a486a8e146104d15780636ddd1713146104e65780636fc3eaec14610505575f80fd5b8063203e727e11610262578063203e727e146103b857806323b872dd146103d957806327c8f835146103f8578063313ce5671461040d578063395093511461042857806342966c6814610447575f80fd5b806306fdde03146102b3578063095ea7b3146102dd57806310d5de531461030c5780631694505e1461033a57806318160ddd146103855780631f3fed8f146103a3575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c76108c3565b6040516102d491906122a2565b60405180910390f35b3480156102e8575f80fd5b506102fc6102f7366004612301565b610953565b60405190151581526020016102d4565b348015610317575f80fd5b506102fc61032636600461232b565b60166020525f908152604090205460ff1681565b348015610345575f80fd5b5061036d7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102d4565b348015610390575f80fd5b506002545b6040519081526020016102d4565b3480156103ae575f80fd5b5061039560125481565b3480156103c3575f80fd5b506103d76103d2366004612346565b610969565b005b3480156103e4575f80fd5b506102fc6103f336600461235d565b6109b4565b348015610403575f80fd5b5061036d61dead81565b348015610418575f80fd5b50604051601281526020016102d4565b348015610433575f80fd5b506102fc610442366004612301565b610a5c565b348015610452575f80fd5b506103d7610461366004612346565b610a97565b348015610471575f80fd5b5061036d7f00000000000000000000000025338417d61cc423d94b70f990e406ac0dadb1b081565b3480156104a4575f80fd5b50600a546102fc9060ff1681565b3480156104bd575f80fd5b506103d76104cc3660046123aa565b610ace565b3480156104dc575f80fd5b5061039560105481565b3480156104f1575f80fd5b50600a546102fc9062010000900460ff1681565b348015610510575f80fd5b506103d7610b45565b348015610524575f80fd5b5061039561053336600461232b565b6001600160a01b03165f9081526020819052604090205490565b348015610558575f80fd5b506103d7610b9a565b34801561056c575f80fd5b506103d761057b366004612346565b610bcf565b34801561058b575f80fd5b506102fc610c03565b34801561059f575f80fd5b506103d76105ae3660046123c3565b610c3f565b3480156105be575f80fd5b5060065461036d906001600160a01b031681565b3480156105dd575f80fd5b506103d76105ec366004612346565b610c93565b3480156105fc575f80fd5b506103d761060b366004612346565b610cdb565b34801561061b575f80fd5b506005546001600160a01b031661036d565b348015610638575f80fd5b5061039560115481565b34801561064d575f80fd5b506103d761065c3660046123aa565b610d3c565b34801561066c575f80fd5b506102c7610d82565b348015610680575f80fd5b506103d761068f3660046123c3565b610d91565b34801561069f575f80fd5b506102fc6106ae366004612301565b610e70565b3480156106be575f80fd5b506102fc6106cd366004612301565b610f08565b3480156106dd575f80fd5b506103d76106ec36600461232b565b610f14565b3480156106fc575f80fd5b506102fc61070b36600461232b565b60176020525f908152604090205460ff1681565b34801561072a575f80fd5b50600a546102fc90610100900460ff1681565b348015610748575f80fd5b506103d76107573660046123c3565b610f9a565b348015610767575f80fd5b506103d7610776366004612346565b611022565b348015610786575f80fd5b5061039560075481565b34801561079b575f80fd5b506102fc6107aa366004612346565b611064565b3480156107ba575f80fd5b50610395600e5481565b3480156107cf575f80fd5b506103956107de3660046123f6565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610813575f80fd5b5061039560085481565b348015610828575f80fd5b506103d7610837366004612346565b6110ae565b348015610847575f80fd5b506103d7610856366004612346565b6110e2565b348015610866575f80fd5b506103d761087536600461232b565b611111565b348015610885575f80fd5b5061039560095481565b34801561089a575f80fd5b50610395600d5481565b3480156108af575f80fd5b506103d76108be366004612346565b6111a9565b6060600380546108d29061242d565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061242d565b80156109495780601f1061092057610100808354040283529160200191610949565b820191905f5260205f20905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b5f61095f3384846111d8565b5060015b92915050565b6005546001600160a01b0316331461099c5760405162461bcd60e51b815260040161099390612465565b60405180910390fd5b6109ae81670de0b6b3a76400006124ae565b60075550565b5f6109c08484846112fb565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610993565b610a5185338584036111d8565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161095f918590610a929086906124c5565b6111d8565b6005546001600160a01b03163314610ac15760405162461bcd60e51b815260040161099390612465565b610acb3382611ce4565b50565b6005546001600160a01b03163314610af85760405162461bcd60e51b815260040161099390612465565b6019805460ff191682151590811790915560405160ff909116151581527f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f287069060200160405180910390a150565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610b8f576040519150601f19603f3d011682016040523d82523d5f602084013e610b94565b606091505b50505050565b6005546001600160a01b03163314610bc45760405162461bcd60e51b815260040161099390612465565b610bcd5f611e2f565b565b6005546001600160a01b03163314610bf95760405162461bcd60e51b815260040161099390612465565b6013819055600e55565b6005545f906001600160a01b03163314610c2f5760405162461bcd60e51b815260040161099390612465565b50600a805460ff19169055600190565b6005546001600160a01b03163314610c695760405162461bcd60e51b815260040161099390612465565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cbd5760405162461bcd60e51b815260040161099390612465565b600d55600a805462ffff0019166201010017905543600b5542600c55565b305f908152602081905260409020548111158015610cf857505f81115b610d335760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610993565b610acb81611e80565b6005546001600160a01b03163314610d665760405162461bcd60e51b815260040161099390612465565b600a8054911515620100000262ff000019909216919091179055565b6060600480546108d29061242d565b6005546001600160a01b03163314610dbb5760405162461bcd60e51b815260040161099390612465565b7f00000000000000000000000025338417d61cc423d94b70f990e406ac0dadb1b06001600160a01b0316826001600160a01b031603610e625760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610993565b610e6c8282612036565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ef15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610993565b610efe33858584036111d8565b5060019392505050565b5f61095f3384846112fb565b6005546001600160a01b03163314610f3e5760405162461bcd60e51b815260040161099390612465565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610fc45760405162461bcd60e51b815260040161099390612465565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461104c5760405162461bcd60e51b815260040161099390612465565b61105e81670de0b6b3a76400006124ae565b60095550565b6005545f906001600160a01b031633146110905760405162461bcd60e51b815260040161099390612465565b6110a282670de0b6b3a76400006124ae565b6008555060015b919050565b6005546001600160a01b031633146110d85760405162461bcd60e51b815260040161099390612465565b6014819055601055565b6005546001600160a01b0316331461110c5760405162461bcd60e51b815260040161099390612465565b601b55565b6005546001600160a01b0316331461113b5760405162461bcd60e51b815260040161099390612465565b6001600160a01b0381166111a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610993565b610acb81611e2f565b6005546001600160a01b031633146111d35760405162461bcd60e51b815260040161099390612465565b601a55565b6001600160a01b03831661123a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610993565b6001600160a01b03821661129b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610993565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113215760405162461bcd60e51b8152600401610993906124d8565b6001600160a01b0382166113475760405162461bcd60e51b81526004016109939061251d565b805f0361135e5761135983835f612089565b505050565b600a5460ff1615611a7b576005546001600160a01b0384811691161480159061139557506005546001600160a01b03838116911614155b80156113a957506001600160a01b03821615155b80156113c057506001600160a01b03821661dead14155b80156113d65750600554600160a01b900460ff16155b15611a7b5760195460ff161561144d57335f9081526018602052604090206002015460ff1661144d57604080516060810182525f808252602080830182815260018486018181523385526018909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b7f00000000000000000000000025338417d61cc423d94b70f990e406ac0dadb1b06001600160a01b0316836001600160a01b03161480156114c057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156114e457506001600160a01b0382165f9081526016602052604090205460ff16155b1561162e57600a54610100900460ff166115405760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610993565b60195460ff16156115fa5742601a5411156115fa57600754811115611563575f80fd5b6001600160a01b0382165f9081526018602052604090205442116115d45760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b6064820152608401610993565b601b546115e190426124c5565b6001600160a01b0383165f908152601860205260409020555b60195460ff161561162e57601b5461161290426124c5565b6001600160a01b0383165f908152601860205260409020600101555b7f00000000000000000000000025338417d61cc423d94b70f990e406ac0dadb1b06001600160a01b0316836001600160a01b0316141580156116775750600a54610100900460ff165b156116fc5760195460ff16156116fc576001600160a01b0383165f9081526018602052604090206001015442116116fc5760405162461bcd60e51b815260206004820152602360248201527f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260448201526232b21760e91b6064820152608401610993565b43600d54600b5461170d91906124c5565b1061172b5760c8600f819055600e819055601181905560105561178b565b600d54600b5461173b91906124c5565b431180156117565750600b546117529060146124c5565b4311155b15611774576064600f819055600e819055601181905560105561178b565b601354600f819055600e5560145460118190556010555b600a54610100900460ff1661181c576001600160a01b0383165f9081526015602052604090205460ff16806117d757506001600160a01b0382165f9081526015602052604090205460ff165b61181c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610993565b6001600160a01b0383165f9081526017602052604090205460ff16801561185b57506001600160a01b0382165f9081526016602052604090205460ff16155b1561193e576007548111156118d05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610993565b6009546001600160a01b0383165f908152602081905260409020546118f590836124c5565b11156119395760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610993565b611a7b565b6001600160a01b0382165f9081526017602052604090205460ff16801561197d57506001600160a01b0383165f9081526016602052604090205460ff16155b156119f3576007548111156119395760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610993565b6001600160a01b0382165f9081526016602052604090205460ff16611a7b576009546001600160a01b0383165f90815260208190526040902054611a3790836124c5565b1115611a7b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610993565b305f9081526020819052604090205460085481108015908190611aa65750600a5462010000900460ff165b8015611abc5750600554600160a01b900460ff16155b8015611ae057506001600160a01b0385165f9081526017602052604090205460ff16155b8015611b0457506001600160a01b0385165f9081526015602052604090205460ff16155b8015611b2857506001600160a01b0384165f9081526015602052604090205460ff16155b15611b56576005805460ff60a01b1916600160a01b179055611b486121dc565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526015602052604090205460ff600160a01b909204821615911680611ba257506001600160a01b0385165f9081526015602052604090205460ff165b15611baa57505f5b5f8115611cd0576001600160a01b0386165f9081526017602052604090205460ff168015611bd957505f601054115b15611c3757611bff6103e8611bf96010548861228590919063ffffffff16565b90612297565b905060105460115482611c1291906124ae565b611c1c9190612560565b60125f828254611c2c91906124c5565b90915550611cb29050565b6001600160a01b0387165f9081526017602052604090205460ff168015611c5f57505f600e54115b15611cb257611c7f6103e8611bf9600e548861228590919063ffffffff16565b9050600e54600f5482611c9291906124ae565b611c9c9190612560565b60125f828254611cac91906124c5565b90915550505b8015611cc357611cc3873083612089565b611ccd818661257f565b94505b611cdb878787612089565b50505050505050565b6001600160a01b038216611d445760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610993565b6001600160a01b0382165f9081526020819052604090205481811015611db75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610993565b6001600160a01b0383165f908152602081905260408120838303905560028054849290611de590849061257f565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611eb357611eb3612592565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5391906125a6565b81600181518110611f6657611f66612592565b60200260200101906001600160a01b031690816001600160a01b031681525050611fb1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846111d8565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120059085905f908690309042906004016125c1565b5f604051808303815f87803b15801561201c575f80fd5b505af115801561202e573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166120af5760405162461bcd60e51b8152600401610993906124d8565b6001600160a01b0382166120d55760405162461bcd60e51b81526004016109939061251d565b6001600160a01b0383165f908152602081905260409020548181101561214c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610993565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906121829084906124c5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121ce91815260200190565b60405180910390a350505050565b305f9081526020819052604081205460125490918215806121fb575081155b1561220557505050565b6008546122139060146124ae565b83111561222b576008546122289060146124ae565b92505b8261223581611e80565b5f60128190556006546040516001600160a01b039091169147919081818185875af1925050503d805f8114611cdb576040519150601f19603f3d011682016040523d82523d5f602084013e611cdb565b5f61229082846124ae565b9392505050565b5f6122908284612560565b5f6020808352835180828501525f5b818110156122cd578581018301518582016040015282016122b1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610acb575f80fd5b5f8060408385031215612312575f80fd5b823561231d816122ed565b946020939093013593505050565b5f6020828403121561233b575f80fd5b8135612290816122ed565b5f60208284031215612356575f80fd5b5035919050565b5f805f6060848603121561236f575f80fd5b833561237a816122ed565b9250602084013561238a816122ed565b929592945050506040919091013590565b803580151581146110a9575f80fd5b5f602082840312156123ba575f80fd5b6122908261239b565b5f80604083850312156123d4575f80fd5b82356123df816122ed565b91506123ed6020840161239b565b90509250929050565b5f8060408385031215612407575f80fd5b8235612412816122ed565b91506020830135612422816122ed565b809150509250929050565b600181811c9082168061244157607f821691505b60208210810361245f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109635761096361249a565b808201808211156109635761096361249a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f8261257a57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109635761096361249a565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125b6575f80fd5b8151612290816122ed565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561260f5784516001600160a01b0316835293830193918301916001016125ea565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122006aacf9f9de5f08bf1d51d9cb85e9efb5da41ac04e6243faccf7400c097c811464736f6c63430008150033

Deployed Bytecode Sourcemap

14968:13880:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2665:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3579:169;;;;;;;;;;-1:-1:-1;3579:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3579:169:0;1023:187:1;15956:63:0;;;;;;;;;;-1:-1:-1;15956:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15047:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;15047:51:0;1467:230:1;2986:108:0;;;;;;;;;;-1:-1:-1;3074:12:0;;2986:108;;;1848:25:1;;;1836:2;1821:18;2986:108:0;1702:177:1;15767:33:0;;;;;;;;;;;;;;;;18845:128;;;;;;;;;;-1:-1:-1;18845:128:0;;;;;:::i;:::-;;:::i;:::-;;3756:492;;;;;;;;;;-1:-1:-1;3756:492:0;;;;;:::i;:::-;;:::i;15150:53::-;;;;;;;;;;;;15196:6;15150:53;;2885:93;;;;;;;;;;-1:-1:-1;2885:93:0;;2968:2;2880:36:1;;2868:2;2853:18;2885:93:0;2738:184:1;4256:215:0;;;;;;;;;;-1:-1:-1;4256:215:0;;;;;:::i;:::-;;:::i;20927:91::-;;;;;;;;;;-1:-1:-1;20927:91:0;;;;;:::i;:::-;;:::i;15105:38::-;;;;;;;;;;;;;;;15396:33;;;;;;;;;;-1:-1:-1;15396:33:0;;;;;;;;21271:160;;;;;;;;;;-1:-1:-1;21271:160:0;;;;;:::i;:::-;;:::i;15692:28::-;;;;;;;;;;;;;;;;15476:31;;;;;;;;;;-1:-1:-1;15476:31:0;;;;;;;;;;;19851:174;;;;;;;;;;;;;:::i;3102:127::-;;;;;;;;;;-1:-1:-1;3102:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3203:18:0;3176:7;3203:18;;;;;;;;;;;;3102:127;783:103;;;;;;;;;;;;;:::i;20545:184::-;;;;;;;;;;-1:-1:-1;20545:184:0;;;;;:::i;:::-;;:::i;18504:121::-;;;;;;;;;;;;;:::i;19110:167::-;;;;;;;;;;-1:-1:-1;19110:167:0;;;;;:::i;:::-;;:::i;15242:30::-;;;;;;;;;;-1:-1:-1;15242:30:0;;;;-1:-1:-1;;;;;15242:30:0;;;18253:243;;;;;;;;;;-1:-1:-1;18253:243:0;;;;;:::i;:::-;;:::i;19671:172::-;;;;;;;;;;-1:-1:-1;19671:172:0;;;;;:::i;:::-;;:::i;558:87::-;;;;;;;;;;-1:-1:-1;631:6:0;;-1:-1:-1;;;;;631:6:0;558:87;;15727:31;;;;;;;;;;;;;;;;19373:100;;;;;;;;;;-1:-1:-1;19373:100:0;;;;;:::i;:::-;;:::i;2773:104::-;;;;;;;;;;;;;:::i;20037:304::-;;;;;;;;;;-1:-1:-1;20037:304:0;;;;;:::i;:::-;;:::i;4479:413::-;;;;;;;;;;-1:-1:-1;4479:413:0;;;;;:::i;:::-;;:::i;3237:175::-;;;;;;;;;;-1:-1:-1;3237:175:0;;;;;:::i;:::-;;:::i;21026:231::-;;;;;;;;;;-1:-1:-1;21026:231:0;;;;;:::i;:::-;;:::i;16028:57::-;;;;;;;;;;-1:-1:-1;16028:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15436:33;;;;;;;;;;-1:-1:-1;15436:33:0;;;;;;;;;;;19481:182;;;;;;;;;;-1:-1:-1;19481:182:0;;;;;:::i;:::-;;:::i;18981:119::-;;;;;;;;;;-1:-1:-1;18981:119:0;;;;;:::i;:::-;;:::i;15281:35::-;;;;;;;;;;;;;;;;18633:204;;;;;;;;;;-1:-1:-1;18633:204:0;;;;;:::i;:::-;;:::i;15618:27::-;;;;;;;;;;;;;;;;3420:151;;;;;;;;;;-1:-1:-1;3420:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3536:18:0;;;3509:7;3536:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3420:151;15323:33;;;;;;;;;;;;;;;;20737:181;;;;;;;;;;-1:-1:-1;20737:181:0;;;;;:::i;:::-;;:::i;21443:105::-;;;;;;;;;;-1:-1:-1;21443:105:0;;;;;:::i;:::-;;:::i;896:201::-;;;;;;;;;;-1:-1:-1;896:201:0;;;;;:::i;:::-;;:::i;15363:24::-;;;;;;;;;;;;;;;;15584:25;;;;;;;;;;;;;;;;21560:104;;;;;;;;;;-1:-1:-1;21560:104:0;;;;;:::i;:::-;;:::i;2665:100::-;2719:13;2752:5;2745:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2665:100;:::o;3579:169::-;3662:4;3679:39;178:10;3702:7;3711:6;3679:8;:39::i;:::-;-1:-1:-1;3736:4:0;3579:169;;;;;:::o;18845:128::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;;;;;;;;;18948:17:::1;:6:::0;18958::::1;18948:17;:::i;:::-;18925:20;:40:::0;-1:-1:-1;18845:128:0:o;3756:492::-;3896:4;3913:36;3923:6;3931:9;3942:6;3913:9;:36::i;:::-;-1:-1:-1;;;;;3989:19:0;;3962:24;3989:19;;;:11;:19;;;;;;;;178:10;3989:33;;;;;;;;4041:26;;;;4033:79;;;;-1:-1:-1;;;4033:79:0;;5243:2:1;4033:79:0;;;5225:21:1;5282:2;5262:18;;;5255:30;5321:34;5301:18;;;5294:62;-1:-1:-1;;;5372:18:1;;;5365:38;5420:19;;4033:79:0;5041:404:1;4033:79:0;4148:57;4157:6;178:10;4198:6;4179:16;:25;4148:8;:57::i;:::-;-1:-1:-1;4236:4:0;;3756:492;-1:-1:-1;;;;3756:492:0:o;4256:215::-;178:10;4344:4;4393:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4393:34:0;;;;;;;;;;4344:4;;4361:80;;4384:7;;4393:47;;4430:10;;4393:47;:::i;:::-;4361:8;:80::i;20927:91::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;20984:26:::1;178:10:::0;21004:5:::1;20984;:26::i;:::-;20927:91:::0;:::o;21271:160::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;21343:16:::1;:24:::0;;-1:-1:-1;;21343:24:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21383:40:::1;::::0;21343:24:::1;21406:16:::0;;;1188:14:1;1181:22;1163:41;;21383:40:0::1;::::0;1151:2:1;1136:18;21383:40:0::1;;;;;;;21271:160:::0;:::o;19851:174::-;19938:15;;19930:87;;19893:12;;-1:-1:-1;;;;;19938:15:0;;19981:21;;19893:12;19930:87;19893:12;19930:87;19981:21;19938:15;19930:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;19851:174:0:o;783:103::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;848:30:::1;875:1;848:18;:30::i;:::-;783:103::o:0;20545:184::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;20637:16:::1;:32:::0;;;20680:12:::1;:31:::0;20545:184::o;18504:121::-;631:6;;18556:4;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;-1:-1:-1;18573:14:0::1;:22:::0;;-1:-1:-1;;18573:22:0::1;::::0;;;18504:121;:::o;19110:167::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19223:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;19223:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19110:167::o;18253:243::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;18327:10:::1;:24:::0;18362:13:::1;:20:::0;;-1:-1:-1;;18393:18:0;;;;;18435:12:::1;18422:10;:25:::0;18473:15:::1;18458:12;:30:::0;18253:243::o;19671:172::-;19763:4;3176:7;3203:18;;;;;;;;;;;19735:6;:34;;:48;;;;;19782:1;19773:6;:10;19735:48;19727:73;;;;-1:-1:-1;;;19727:73:0;;5992:2:1;19727:73:0;;;5974:21:1;6031:2;6011:18;;;6004:30;-1:-1:-1;;;6050:18:1;;;6043:42;6102:18;;19727:73:0;5790:336:1;19727:73:0;19811:24;19828:6;19811:16;:24::i;19373:100::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;19444:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;19444:21:0;;::::1;::::0;;;::::1;::::0;;19373:100::o;2773:104::-;2829:13;2862:7;2855:14;;;;;:::i;20037:304::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;20181:13:::1;-1:-1:-1::0;;;;;20173:21:0::1;:4;-1:-1:-1::0;;;;;20173:21:0::1;::::0;20151:128:::1;;;::::0;-1:-1:-1;;;20151:128:0;;6333:2:1;20151:128:0::1;::::0;::::1;6315:21:1::0;6372:2;6352:18;;;6345:30;6411:34;6391:18;;;6384:62;6482:27;6462:18;;;6455:55;6527:19;;20151:128:0::1;6131:421:1::0;20151:128:0::1;20292:41;20321:4;20327:5;20292:28;:41::i;:::-;20037:304:::0;;:::o;4479:413::-;178:10;4572:4;4616:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4616:34:0;;;;;;;;;;4669:35;;;;4661:85;;;;-1:-1:-1;;;4661:85:0;;6759:2:1;4661:85:0;;;6741:21:1;6798:2;6778:18;;;6771:30;6837:34;6817:18;;;6810:62;-1:-1:-1;;;6888:18:1;;;6881:35;6933:19;;4661:85:0;6557:401:1;4661:85:0;4782:67;178:10;4805:7;4833:15;4814:16;:34;4782:8;:67::i;:::-;-1:-1:-1;4880:4:0;;4479:413;-1:-1:-1;;;4479:413:0:o;3237:175::-;3323:4;3340:42;178:10;3364:9;3375:6;3340:9;:42::i;21026:231::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;21186:15:::1;::::0;21143:59:::1;::::0;-1:-1:-1;;;;;21186:15:0;;::::1;::::0;21143:59;::::1;::::0;::::1;::::0;21186:15:::1;::::0;21143:59:::1;21213:15;:36:::0;;-1:-1:-1;;;;;;21213:36:0::1;-1:-1:-1::0;;;;;21213:36:0;;;::::1;::::0;;;::::1;::::0;;21026:231::o;19481:182::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19566:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19566:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19621:34;;1163:41:1;;;19621:34:0::1;::::0;1136:18:1;19621:34:0::1;;;;;;;19481:182:::0;;:::o;18981:119::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;19075:17:::1;:6:::0;19085::::1;19075:17;:::i;:::-;19063:9;:29:::0;-1:-1:-1;18981:119:0:o;18633:204::-;631:6;;18741:4;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;18788:19:::1;:9:::0;18800:6:::1;18788:19;:::i;:::-;18767:18;:40:::0;-1:-1:-1;18825:4:0::1;766:1;18633:204:::0;;;:::o;20737:181::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;20830:17:::1;:33:::0;;;20874:13:::1;:33:::0;20737:181::o;21443:105::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;21514:12:::1;:18:::0;21443:105::o;896:201::-;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;985:22:0;::::1;977:73;;;::::0;-1:-1:-1;;;977:73:0;;7165:2:1;977:73:0::1;::::0;::::1;7147:21:1::0;7204:2;7184:18;;;7177:30;7243:34;7223:18;;;7216:62;-1:-1:-1;;;7294:18:1;;;7287:36;7340:19;;977:73:0::1;6963:402:1::0;977:73:0::1;1061:28;1080:8;1061:18;:28::i;21560:104::-:0;631:6;;-1:-1:-1;;;;;631:6:0;178:10;695:23;687:68;;;;-1:-1:-1;;;687:68:0;;;;;;;:::i;:::-;21631:11:::1;:17:::0;21560:104::o;6647:380::-;-1:-1:-1;;;;;6783:19:0;;6775:68;;;;-1:-1:-1;;;6775:68:0;;7572:2:1;6775:68:0;;;7554:21:1;7611:2;7591:18;;;7584:30;7650:34;7630:18;;;7623:62;-1:-1:-1;;;7701:18:1;;;7694:34;7745:19;;6775:68:0;7370:400:1;6775:68:0;-1:-1:-1;;;;;6862:21:0;;6854:68;;;;-1:-1:-1;;;6854:68:0;;7977:2:1;6854:68:0;;;7959:21:1;8016:2;7996:18;;;7989:30;8055:34;8035:18;;;8028:62;-1:-1:-1;;;8106:18:1;;;8099:32;8148:19;;6854:68:0;7775:398:1;6854:68:0;-1:-1:-1;;;;;6935:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6987:32;;1848:25:1;;;6987:32:0;;1821:18:1;6987:32:0;;;;;;;6647:380;;;:::o;21670:5844::-;-1:-1:-1;;;;;21802:18:0;;21794:68;;;;-1:-1:-1;;;21794:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21881:16:0;;21873:64;;;;-1:-1:-1;;;21873:64:0;;;;;;;:::i;:::-;21954:6;21964:1;21954:11;21950:93;;21982:28;21998:4;22004:2;22008:1;21982:15;:28::i;:::-;21670:5844;;;:::o;21950:93::-;22059:14;;;;22055:3908;;;631:6;;-1:-1:-1;;;;;22112:15:0;;;631:6;;22112:15;;;;:49;;-1:-1:-1;631:6:0;;-1:-1:-1;;;;;22148:13:0;;;631:6;;22148:13;;22112:49;:86;;;;-1:-1:-1;;;;;;22182:16:0;;;;22112:86;:128;;;;-1:-1:-1;;;;;;22219:21:0;;22233:6;22219:21;;22112:128;:158;;;;-1:-1:-1;22262:8:0;;-1:-1:-1;;;22262:8:0;;;;22261:9;22112:158;22090:3862;;;22334:16;;;;22331:168;;;22384:10;22375:20;;;;:8;:20;;;;;:27;;;;;22371:113;;22450:14;;;;;;;;-1:-1:-1;22450:14:0;;;;;;;;;;22459:4;22450:14;;;;;;22436:10;22427:20;;:8;:20;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22427:37:0;;;;;;;;;;22371:113;22558:13;-1:-1:-1;;;;;22550:21:0;:4;-1:-1:-1;;;;;22550:21:0;;:55;;;;;22589:15;-1:-1:-1;;;;;22575:30:0;:2;-1:-1:-1;;;;;22575:30:0;;;22550:55;:95;;;;-1:-1:-1;;;;;;22610:35:0;;;;;;:31;:35;;;;;;;;22609:36;22550:95;22547:763;;;22674:13;;;;;;;22666:50;;;;-1:-1:-1;;;22666:50:0;;9190:2:1;22666:50:0;;;9172:21:1;9229:2;9209:18;;;9202:30;9268:26;9248:18;;;9241:54;9312:18;;22666:50:0;8988:348:1;22666:50:0;22791:16;;;;22788:373;;;22849:15;22835:11;;:29;22832:310;;;22911:20;;22901:6;:30;;22893:39;;;;;;-1:-1:-1;;;;;22967:12:0;;;;;;:8;:12;;;;;:16;22986:15;-1:-1:-1;22959:81:0;;;;-1:-1:-1;;;22959:81:0;;9543:2:1;22959:81:0;;;9525:21:1;9582:2;9562:18;;;9555:30;9621:34;9601:18;;;9594:62;-1:-1:-1;;;9672:18:1;;;9665:32;9714:19;;22959:81:0;9341:398:1;22959:81:0;23105:12;;23086:32;;:15;:32;:::i;:::-;-1:-1:-1;;;;;23067:12:0;;;;;;:8;:12;;;;;:51;22832:310;23182:16;;;;23179:116;;;23262:12;;23243:32;;:15;:32;:::i;:::-;-1:-1:-1;;;;;23223:12:0;;;;;;:8;:12;;;;;:17;;:52;23179:116;23351:13;-1:-1:-1;;;;;23343:21:0;:4;-1:-1:-1;;;;;23343:21:0;;;:39;;;;-1:-1:-1;23369:13:0;;;;;;;23343:39;23339:221;;;23408:16;;;;23405:149;;;-1:-1:-1;;;;;23457:14:0;;;;;;:8;:14;;;;;:19;;;23479:15;-1:-1:-1;23449:85:0;;;;-1:-1:-1;;;23449:85:0;;9946:2:1;23449:85:0;;;9928:21:1;9985:2;9965:18;;;9958:30;10024:34;10004:18;;;9997:62;-1:-1:-1;;;10075:18:1;;;10068:33;10118:19;;23449:85:0;9744:399:1;23449:85:0;23660:12;23645:10;;23632;;:23;;;;:::i;:::-;23631:41;23610:889;;23726:3;23708:15;:21;;;23748:12;:30;;;23799:16;:22;;;23840:13;:32;23610:889;;;23952:10;;23939;;:23;;;;:::i;:::-;23923:12;:40;:75;;;;-1:-1:-1;23983:10:0;;:15;;23996:2;23983:15;:::i;:::-;23967:12;:31;;23923:75;23920:579;;;24052:3;24034:15;:21;;;24074:12;:30;;;24125:16;:22;;;24166:13;:32;23920:579;;;24308:16;;24290:15;:34;;;24343:12;:30;24413:17;;24394:16;:36;;;24449:13;:32;23920:579;24524:13;;;;;;;24519:223;;-1:-1:-1;;;;;24596:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24625:23:0;;;;;;:19;:23;;;;;;;;24596:52;24562:160;;;;-1:-1:-1;;;24562:160:0;;10350:2:1;24562:160:0;;;10332:21:1;10389:2;10369:18;;;10362:30;-1:-1:-1;;;10408:18:1;;;10401:52;10470:18;;24562:160:0;10148:346:1;24562:160:0;-1:-1:-1;;;;;24816:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;24873:35:0;;;;;;:31;:35;;;;;;;;24872:36;24816:92;24790:1147;;;24995:20;;24985:6;:30;;24951:169;;;;-1:-1:-1;;;24951:169:0;;10701:2:1;24951:169:0;;;10683:21:1;10740:2;10720:18;;;10713:30;10779:34;10759:18;;;10752:62;-1:-1:-1;;;10830:18:1;;;10823:51;10891:19;;24951:169:0;10499:417:1;24951:169:0;25203:9;;-1:-1:-1;;;;;3203:18:0;;3176:7;3203:18;;;;;;;;;;;25177:22;;:6;:22;:::i;:::-;:35;;25143:140;;;;-1:-1:-1;;;25143:140:0;;11123:2:1;25143:140:0;;;11105:21:1;11162:2;11142:18;;;11135:30;-1:-1:-1;;;11181:18:1;;;11174:49;11240:18;;25143:140:0;10921:343:1;25143:140:0;24790:1147;;;-1:-1:-1;;;;;25381:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;25436:37:0;;;;;;:31;:37;;;;;;;;25435:38;25381:92;25355:582;;;25560:20;;25550:6;:30;;25516:170;;;;-1:-1:-1;;;25516:170:0;;11471:2:1;25516:170:0;;;11453:21:1;11510:2;11490:18;;;11483:30;11549:34;11529:18;;;11522:62;-1:-1:-1;;;11600:18:1;;;11593:52;11662:19;;25516:170:0;11269:418:1;25355:582:0;-1:-1:-1;;;;;25717:35:0;;;;;;:31;:35;;;;;;;;25712:225;;25837:9;;-1:-1:-1;;;;;3203:18:0;;3176:7;3203:18;;;;;;;;;;;25811:22;;:6;:22;:::i;:::-;:35;;25777:140;;;;-1:-1:-1;;;25777:140:0;;11123:2:1;25777:140:0;;;11105:21:1;11162:2;11142:18;;;11135:30;-1:-1:-1;;;11181:18:1;;;11174:49;11240:18;;25777:140:0;10921:343:1;25777:140:0;26028:4;25979:28;3203:18;;;;;;;;;;;26086;;26062:42;;;;;;;26135:35;;-1:-1:-1;26159:11:0;;;;;;;26135:35;:61;;;;-1:-1:-1;26188:8:0;;-1:-1:-1;;;26188:8:0;;;;26187:9;26135:61;:110;;;;-1:-1:-1;;;;;;26214:31:0;;;;;;:25;:31;;;;;;;;26213:32;26135:110;:153;;;;-1:-1:-1;;;;;;26263:25:0;;;;;;:19;:25;;;;;;;;26262:26;26135:153;:194;;;;-1:-1:-1;;;;;;26306:23:0;;;;;;:19;:23;;;;;;;;26305:24;26135:194;26117:326;;;26356:8;:15;;-1:-1:-1;;;;26356:15:0;-1:-1:-1;;;26356:15:0;;;26388:10;:8;:10::i;:::-;26415:8;:16;;-1:-1:-1;;;;26415:16:0;;;26117:326;26471:8;;-1:-1:-1;;;;;26581:25:0;;26455:12;26581:25;;;:19;:25;;;;;;26471:8;-1:-1:-1;;;26471:8:0;;;;;26470:9;;26581:25;;:52;;-1:-1:-1;;;;;;26610:23:0;;;;;;:19;:23;;;;;;;;26581:52;26577:100;;;-1:-1:-1;26660:5:0;26577:100;26689:12;26794:7;26790:671;;;-1:-1:-1;;;;;26846:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;26895:1;26879:13;;:17;26846:50;26842:470;;;26924:35;26954:4;26924:25;26935:13;;26924:6;:10;;:25;;;;:::i;:::-;:29;;:35::i;:::-;26917:42;;27028:13;;27008:16;;27001:4;:23;;;;:::i;:::-;27000:41;;;;:::i;:::-;26978:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;26842:470:0;;-1:-1:-1;26842:470:0;;-1:-1:-1;;;;;27103:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;27153:1;27138:12;;:16;27103:51;27099:213;;;27182:34;27211:4;27182:24;27193:12;;27182:6;:10;;:24;;;;:::i;:34::-;27175:41;;27284:12;;27265:15;;27258:4;:22;;;;:::i;:::-;27257:39;;;;:::i;:::-;27235:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27099:213:0;27332:8;;27328:91;;27361:42;27377:4;27391;27398;27361:15;:42::i;:::-;27435:14;27445:4;27435:14;;:::i;:::-;;;26790:671;27473:33;27489:4;27495:2;27499:6;27473:15;:33::i;:::-;21783:5731;;;;21670:5844;;;:::o;6048:591::-;-1:-1:-1;;;;;6132:21:0;;6124:67;;;;-1:-1:-1;;;6124:67:0;;12249:2:1;6124:67:0;;;12231:21:1;12288:2;12268:18;;;12261:30;12327:34;12307:18;;;12300:62;-1:-1:-1;;;12378:18:1;;;12371:31;12419:19;;6124:67:0;12047:397:1;6124:67:0;-1:-1:-1;;;;;6291:18:0;;6266:22;6291:18;;;;;;;;;;;6328:24;;;;6320:71;;;;-1:-1:-1;;;6320:71:0;;12651:2:1;6320:71:0;;;12633:21:1;12690:2;12670:18;;;12663:30;12729:34;12709:18;;;12702:62;-1:-1:-1;;;12780:18:1;;;12773:32;12822:19;;6320:71:0;12449:398:1;6320:71:0;-1:-1:-1;;;;;6427:18:0;;:9;:18;;;;;;;;;;6448:23;;;6427:44;;6493:12;:22;;6465:6;;6427:9;6493:22;;6465:6;;6493:22;:::i;:::-;;;;-1:-1:-1;;6533:37:0;;1848:25:1;;;6559:1:0;;-1:-1:-1;;;;;6533:37:0;;;;;1836:2:1;1821:18;6533:37:0;;;;;;;21670:5844;;;:::o;1105:191::-;1198:6;;;-1:-1:-1;;;;;1215:17:0;;;-1:-1:-1;;;;;;1215:17:0;;;;;;;1248:40;;1198:6;;;1215:17;1198:6;;1248:40;;1179:16;;1248:40;1168:128;1105:191;:::o;27522:589::-;27672:16;;;27686:1;27672:16;;;;;;;;27648:21;;27672:16;;;;;;;;;;-1:-1:-1;27672:16:0;27648:40;;27717:4;27699;27704:1;27699:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27699:23:0;;;-1:-1:-1;;;;;27699:23:0;;;;;27743:15;-1:-1:-1;;;;;27743:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27733:4;27738:1;27733:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27733:32:0;;;-1:-1:-1;;;;;27733:32:0;;;;;27778:62;27795:4;27810:15;27828:11;27778:8;:62::i;:::-;27879:224;;-1:-1:-1;;;27879:224:0;;-1:-1:-1;;;;;27879:15:0;:66;;;;:224;;27960:11;;27986:1;;28030:4;;28057;;28077:15;;27879:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27577:534;27522:589;:::o;20349:188::-;-1:-1:-1;;;;;20432:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20432:39:0;;;;;;;;;;20489:40;;20432:39;;:31;20489:40;;;20349:188;;:::o;4900:733::-;-1:-1:-1;;;;;5040:20:0;;5032:70;;;;-1:-1:-1;;;5032:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5121:23:0;;5113:71;;;;-1:-1:-1;;;5113:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5281:17:0;;5257:21;5281:17;;;;;;;;;;;5317:23;;;;5309:74;;;;-1:-1:-1;;;5309:74:0;;14559:2:1;5309:74:0;;;14541:21:1;14598:2;14578:18;;;14571:30;14637:34;14617:18;;;14610:62;-1:-1:-1;;;14688:18:1;;;14681:36;14734:19;;5309:74:0;14357:402:1;5309:74:0;-1:-1:-1;;;;;5419:17:0;;;:9;:17;;;;;;;;;;;5439:22;;;5419:42;;5483:20;;;;;;;;:30;;5455:6;;5419:9;5483:30;;5455:6;;5483:30;:::i;:::-;;;;;;;;5548:9;-1:-1:-1;;;;;5531:35:0;5540:6;-1:-1:-1;;;;;5531:35:0;;5559:6;5531:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5531:35:0;;;;;;;;5021:612;4900:733;;;:::o;28121:722::-;28204:4;28160:23;3203:18;;;;;;;;;;;28262;;3203;;28320:20;;;:46;;-1:-1:-1;28344:22:0;;28320:46;28316:85;;;28383:7;;;28121:722::o;28316:85::-;28435:18;;:23;;28456:2;28435:23;:::i;:::-;28417:15;:41;28413:115;;;28493:18;;:23;;28514:2;28493:23;:::i;:::-;28475:41;;28413:115;28620:15;28648:36;28620:15;28648:16;:36::i;:::-;28718:1;28697:18;:22;;;28756:15;;28748:87;;-1:-1:-1;;;;;28756:15:0;;;;28799:21;;28748:87;;28718:1;28748:87;28799:21;28756:15;28748:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8653:98;8711:7;8738:5;8742:1;8738;:5;:::i;:::-;8731:12;8653:98;-1:-1:-1;;;8653:98:0:o;8759:::-;8817:7;8844:5;8848:1;8844;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;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;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3092:180;3148:6;3201:2;3189:9;3180:7;3176:23;3172:32;3169:52;;;3217:1;3214;3207:12;3169:52;3240:26;3256:9;3240:26;:::i;3277:315::-;3342:6;3350;3403:2;3391:9;3382:7;3378:23;3374:32;3371:52;;;3419:1;3416;3409:12;3371:52;3458:9;3445:23;3477:31;3502:5;3477:31;:::i;:::-;3527:5;-1:-1:-1;3551:35:1;3582:2;3567:18;;3551:35;:::i;:::-;3541:45;;3277:315;;;;;:::o;3597:388::-;3665:6;3673;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;3781:9;3768:23;3800:31;3825:5;3800:31;:::i;:::-;3850:5;-1:-1:-1;3907:2:1;3892:18;;3879:32;3920:33;3879:32;3920:33;:::i;:::-;3972:7;3962:17;;;3597:388;;;;;:::o;3990:380::-;4069:1;4065:12;;;;4112;;;4133:61;;4187:4;4179:6;4175:17;4165:27;;4133:61;4240:2;4232:6;4229:14;4209:18;4206:38;4203:161;;4286:10;4281:3;4277:20;4274:1;4267:31;4321:4;4318:1;4311:15;4349:4;4346:1;4339:15;4203:161;;3990:380;;;:::o;4375:356::-;4577:2;4559:21;;;4596:18;;;4589:30;4655:34;4650:2;4635:18;;4628:62;4722:2;4707:18;;4375:356::o;4736:127::-;4797:10;4792:3;4788:20;4785:1;4778:31;4828:4;4825:1;4818:15;4852:4;4849:1;4842:15;4868:168;4941:9;;;4972;;4989:15;;;4983:22;;4969:37;4959:71;;5010:18;;:::i;5450:125::-;5515:9;;;5536:10;;;5533:36;;;5549:18;;:::i;8178:401::-;8380:2;8362:21;;;8419:2;8399:18;;;8392:30;8458:34;8453:2;8438:18;;8431:62;-1:-1:-1;;;8524:2:1;8509:18;;8502:35;8569:3;8554:19;;8178:401::o;8584:399::-;8786:2;8768:21;;;8825:2;8805:18;;;8798:30;8864:34;8859:2;8844:18;;8837:62;-1:-1:-1;;;8930:2:1;8915:18;;8908:33;8973:3;8958:19;;8584:399::o;11692:217::-;11732:1;11758;11748:132;;11802:10;11797:3;11793:20;11790:1;11783:31;11837:4;11834:1;11827:15;11865:4;11862:1;11855:15;11748:132;-1:-1:-1;11894:9:1;;11692:217::o;11914:128::-;11981:9;;;12002:11;;;11999:37;;;12016:18;;:::i;12984:127::-;13045:10;13040:3;13036:20;13033:1;13026:31;13076:4;13073:1;13066:15;13100:4;13097:1;13090:15;13116:251;13186:6;13239:2;13227:9;13218:7;13214:23;13210:32;13207:52;;;13255:1;13252;13245:12;13207:52;13287:9;13281:16;13306:31;13331:5;13306:31;:::i;13372:980::-;13634:4;13682:3;13671:9;13667:19;13713:6;13702:9;13695:25;13739:2;13777:6;13772:2;13761:9;13757:18;13750:34;13820:3;13815:2;13804:9;13800:18;13793:31;13844:6;13879;13873:13;13910:6;13902;13895:22;13948:3;13937:9;13933:19;13926:26;;13987:2;13979:6;13975:15;13961:29;;14008:1;14018:195;14032:6;14029:1;14026:13;14018:195;;;14097:13;;-1:-1:-1;;;;;14093:39:1;14081:52;;14188:15;;;;14153:12;;;;14129:1;14047:9;14018:195;;;-1:-1:-1;;;;;;;14269:32:1;;;;14264:2;14249:18;;14242:60;-1:-1:-1;;;14333:3:1;14318:19;14311:35;14230:3;13372:980;-1:-1:-1;;;13372:980:1:o

Swarm Source

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