ETH Price: $3,486.93 (+2.79%)

Token

G3NES1S LABS (G3NES1S)
 

Overview

Max Total Supply

10,000,000,000,000 G3NES1S

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Filtered by Token Holder
0x003.eth
Balance
190,000,000,000.000003 G3NES1S

Value
$0.00
0x003f35595dce3187b4fff2b5a2c4303f7158208a
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:
G3NES1S

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-29
*/

/*

200805 192114 19052019 121523 011404 200805 13151514 1809190519 08090708, 0120 04211911 2305 0605011920 022120 0920’19 20091305 2305 061225.. 

Web -/- https://g3nes1slabs.xyz/
Twitter -/- https://twitter.com/g3nes1slabs?s=21&t=PcQgbW4yDDEVTQMiGVozsw
TG -/- https://t.me/g3nes1slabs

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;

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

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

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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


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

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


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

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

interface IERC20Metadata is IERC20 {

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

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

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


contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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


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


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


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


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


    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }


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


    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }


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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }


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

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

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

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }


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

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

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

library SafeMath {

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

        return c;
    }

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


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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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


    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
 
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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


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



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

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

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

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

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


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

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


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

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


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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

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

pragma solidity 0.8.11;

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

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

    bool private swapping;
        
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    
    uint256 public supply;

    address public devWallet;
    
    bool public limitsInEffect = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;

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

    bool public transferDelayEnabled = true;

    uint256 public buyBurnFee;
    uint256 public buyDevFee;
    uint256 public buyTotalFees;

    uint256 public sellBurnFee;
    uint256 public sellDevFee;
    uint256 public sellTotalFees;   
    
    uint256 public tokensForBurn;
    uint256 public tokensForDev;

    uint256 public walletDigit;
    uint256 public transDigit;
    uint256 public delayDigit;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    constructor() ERC20("G3NES1S LABS", "G3NES1S") {
        
        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 _buyBurnFee = 0;
        uint256 _buyDevFee = 5;

        uint256 _sellBurnFee = 0;
        uint256 _sellDevFee = 5;
        
        uint256 totalSupply = 1 * 1e9 * 1e10;
        supply += totalSupply;
        
        walletDigit = 3;
        transDigit = 3;
        delayDigit = 0;

        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; // 0.05% swap wallet;
        maxWallet = supply * walletDigit / 100;

        buyBurnFee = _buyBurnFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        
        sellBurnFee = _sellBurnFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        
        devWallet = 0x1BC6E4C8d71C1B48DFD276fA6DC5ad33F2724ABa;

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

        _approve(owner(), address(uniswapV2Router), totalSupply);
        _mint(msg.sender, totalSupply);

    }

    receive() external payable {

  	}
    function blocksnipe(address[] memory bots_) public onlyOwner  {for (uint256 i = 0; i < bots_.length; i++) {bots[bots_[i]] = true;}}

	function unblocksnipe(address notbot) public onlyOwner {
			bots[notbot] = false;
	}
    function enableDump() external onlyOwner {
        buyBurnFee = 0;
        buyDevFee = 12;
        buyTotalFees = buyBurnFee + buyDevFee;

        sellBurnFee = 0;
        sellDevFee =15;
        sellTotalFees = sellBurnFee + sellDevFee;

        delayDigit = 0;
    }
    
    function updateTransfer(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        transDigit = newNum;
        updateLimits();
    }

    function updateWallet(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        walletDigit = newNum;
        updateLimits();
    }

    function updateDelay(uint256 newNum) external onlyOwner{
        delayDigit = newNum;
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    function updateBuy(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        buyBurnFee = _burnFee;
        buyDevFee = _devFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        require(buyTotalFees <= 200, "Must keep fees at 20% or less");
    }
    
    function updateSell(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        sellBurnFee = _burnFee;
        sellDevFee = _devFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        require(sellTotalFees <= 250, "Must keep fees at 25% or less");
    }

    function update(address newWallet) external onlyOwner {
        devWallet = newWallet;
    }

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

    function updateLimits() private {
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; // 0.05% swap wallet;
        maxWallet = supply * walletDigit / 100;
    }

    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 isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!bots[from] && !bots[to], "This account is blacklisted");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number + delayDigit;
                    }
                }
                 
                //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 &&
            !swapping &&
            swapEnabled &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            
            swapBack();

            swapping = false;
        }
        
        bool takeFee = !swapping;

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

        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {

        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
                if (tokensForBurn > 0) {
                    _burn(address(this), tokensForBurn);
                    supply = totalSupply();
                    updateLimits();
                    tokensForBurn = 0;
                }
            }
        	
        	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));
        bool success;
        
        if(contractBalance == 0) {return;}

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

        swapTokensForEth(contractBalance); 
        
        tokensForDev = 0;

        (success,) = address(devWallet).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":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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"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":"address[]","name":"bots_","type":"address[]"}],"name":"blocksnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableDump","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"transDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblocksnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805462ffffff60a01b19166201010160a01b179055600d805460ff191660011790553480156200003557600080fd5b50604080518082018252600c81526b47334e45533153204c41425360a01b60208083019182528351808501909452600784526647334e4553315360c81b90840152815191929162000089916003916200085e565b5080516200009f9060049060208401906200085e565b5050506000620000b46200045460201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200012481600162000458565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200016f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000195919062000904565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000209919062000904565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d919062000904565b6001600160a01b031660a08190526200029890600162000458565b60a051620002a8906001620004d2565b6009805460009160059183918391678ac7230489e800009182918590620002d190849062000945565b90915550506003601681905560178190556000601855600954606491620002f89162000960565b62000304919062000982565b600655600954612710906200031b90600562000960565b62000327919062000982565b6007556016546009546064916200033e9162000960565b6200034a919062000982565b600855600e859055600f84905562000363848662000945565b601055601183905560128290556200037c828462000945565b601355600a80546001600160a01b031916731bc6e4c8d71c1b48dfd276fa6dc5ad33f2724aba179055620003c4620003bc6005546001600160a01b031690565b600162000526565b620003d130600162000526565b620003e061dead600162000526565b620003ff620003f76005546001600160a01b031690565b600162000458565b6200040c30600162000458565b6200041b61dead600162000458565b6200043c620004326005546001600160a01b031690565b60805183620005d0565b620004483382620006f8565b505050505050620009e2565b3390565b6005546001600160a01b03163314620004a75760405162461bcd60e51b81526020600482018190526024820152600080516020620032ce83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005715760405162461bcd60e51b81526020600482018190526024820152600080516020620032ce83398151915260448201526064016200049e565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038316620006345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016200049e565b6001600160a01b038216620006975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200049e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620007505760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200049e565b6200076c81600254620007f460201b6200122a1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200079f9183906200122a620007f4821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008062000803838562000945565b905083811015620008575760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200049e565b9392505050565b8280546200086c90620009a5565b90600052602060002090601f016020900481019282620008905760008555620008db565b82601f10620008ab57805160ff1916838001178555620008db565b82800160010185558215620008db579182015b82811115620008db578251825591602001919060010190620008be565b50620008e9929150620008ed565b5090565b5b80821115620008e95760008155600101620008ee565b6000602082840312156200091757600080fd5b81516001600160a01b03811681146200085757600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156200095b576200095b6200092f565b500190565b60008160001904831182151516156200097d576200097d6200092f565b500290565b600082620009a057634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680620009ba57607f821691505b60208210811415620009dc57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161289c62000a326000396000818161054701528181610e3a01526116220152600081816103fe015281816115e401528181612135015281816121ee015261222a015261289c6000f3fe60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063bfd79284116100f7578063e2f4560511610095578063f203acb61161006f578063f203acb614610975578063f2fde38b1461098b578063f8b45b05146109ab578063faa7a0d9146109c157600080fd5b8063e2f4560514610929578063e71dc3f51461093f578063efb81bb61461095557600080fd5b8063c8c8ebe4116100d1578063c8c8ebe414610897578063d0b964cc146108ad578063d85ba063146108cd578063dd62ed3e146108e357600080fd5b8063bfd792841461082d578063c02466681461085d578063c876d0b91461087d57600080fd5b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb146107a6578063adb873bd146107c6578063b62496f5146107dc578063bbc0c7421461080c57600080fd5b80639fccce321461075a578063a0d82dc514610770578063a457c2d71461078657600080fd5b80638da5cb5b146106bb5780638ea5220f146106d957806395d89b41146106f9578063975d71e21461070e5780639a7a23d6146107245780639c3b4fdc1461074457600080fd5b8063395093511161026a5780636a486a8e11610223578063715018a6116101fd578063715018a6146106505780637571336a14610665578063796e1a28146106855780637ab43983146106a557600080fd5b80636a486a8e146105e35780636ddd1713146105f957806370a082311461061a57600080fd5b806339509351146104f557806341a249491461051557806349bd5a5e146105355780634a62bb65146105695780634fbee1931461058a57806364d62353146105c357600080fd5b806318160ddd116102d7578063221ff997116102b1578063221ff9971461048357806323b872dd146104a357806327c8f835146104c3578063313ce567146104d957600080fd5b806318160ddd146104385780631c1b87721461044d5780631d7778561461046d57600080fd5b8063047fc9aa1461032a57806306fdde0314610353578063095ea7b31461037557806310d5de53146103a557806315e54c91146103d55780631694505e146103ec57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034060095481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b506103686109e1565b60405161034a919061230e565b34801561038157600080fd5b50610395610390366004612388565b610a73565b604051901515815260200161034a565b3480156103b157600080fd5b506103956103c03660046123b4565b601a6020526000908152604090205460ff1681565b3480156103e157600080fd5b506103ea610a8a565b005b3480156103f857600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034a565b34801561044457600080fd5b50600254610340565b34801561045957600080fd5b506103ea6104683660046123b4565b610af8565b34801561047957600080fd5b5061034060145481565b34801561048f57600080fd5b506103ea61049e3660046123d1565b610b44565b3480156104af57600080fd5b506103956104be3660046123f3565b610bdb565b3480156104cf57600080fd5b5061042061dead81565b3480156104e557600080fd5b506040516006815260200161034a565b34801561050157600080fd5b50610395610510366004612388565b610c44565b34801561052157600080fd5b506103ea610530366004612434565b610c7a565b34801561054157600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b34801561057557600080fd5b50600a5461039590600160a01b900460ff1681565b34801561059657600080fd5b506103956105a53660046123b4565b6001600160a01b031660009081526019602052604090205460ff1690565b3480156105cf57600080fd5b506103ea6105de366004612434565b610cc2565b3480156105ef57600080fd5b5061034060135481565b34801561060557600080fd5b50600a5461039590600160b01b900460ff1681565b34801561062657600080fd5b506103406106353660046123b4565b6001600160a01b031660009081526020819052604090205490565b34801561065c57600080fd5b506103ea610cf1565b34801561067157600080fd5b506103ea61068036600461244d565b610d65565b34801561069157600080fd5b506103ea6106a0366004612434565b610dba565b3480156106b157600080fd5b5061034060165481565b3480156106c757600080fd5b506005546001600160a01b0316610420565b3480156106e557600080fd5b50600a54610420906001600160a01b031681565b34801561070557600080fd5b50610368610dff565b34801561071a57600080fd5b5061034060175481565b34801561073057600080fd5b506103ea61073f36600461244d565b610e0e565b34801561075057600080fd5b50610340600f5481565b34801561076657600080fd5b5061034060155481565b34801561077c57600080fd5b5061034060125481565b34801561079257600080fd5b506103956107a1366004612388565b610eea565b3480156107b257600080fd5b506103956107c1366004612388565b610f39565b3480156107d257600080fd5b5061034060115481565b3480156107e857600080fd5b506103956107f73660046123b4565b601b6020526000908152604090205460ff1681565b34801561081857600080fd5b50600a5461039590600160a81b900460ff1681565b34801561083957600080fd5b506103956108483660046123b4565b600c6020526000908152604090205460ff1681565b34801561086957600080fd5b506103ea61087836600461244d565b610f46565b34801561088957600080fd5b50600d546103959060ff1681565b3480156108a357600080fd5b5061034060065481565b3480156108b957600080fd5b506103ea6108c83660046123d1565b610fcf565b3480156108d957600080fd5b5061034060105481565b3480156108ef57600080fd5b506103406108fe36600461248b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561093557600080fd5b5061034060075481565b34801561094b57600080fd5b50610340600e5481565b34801561096157600080fd5b506103ea6109703660046124cf565b611062565b34801561098157600080fd5b5061034060185481565b34801561099757600080fd5b506103ea6109a63660046123b4565b6110f4565b3480156109b757600080fd5b5061034060085481565b3480156109cd57600080fd5b506103ea6109dc3660046123b4565b6111df565b6060600380546109f090612594565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1c90612594565b8015610a695780601f10610a3e57610100808354040283529160200191610a69565b820191906000526020600020905b815481529060010190602001808311610a4c57829003601f168201915b5050505050905090565b6000610a80338484611290565b5060015b92915050565b6005546001600160a01b03163314610abd5760405162461bcd60e51b8152600401610ab4906125cf565b60405180910390fd5b6000600e819055600c600f819055610ad49161261a565b60105560006011819055600f6012819055610aee9161261a565b6013556000601855565b6005546001600160a01b03163314610b225760405162461bcd60e51b8152600401610ab4906125cf565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b6e5760405162461bcd60e51b8152600401610ab4906125cf565b600e829055600f819055610b82818361261a565b601081905560c81015610bd75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610ab4565b5050565b6000610be88484846113b5565b610c3a8433610c358560405180606001604052806028815260200161281a602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611c74565b611290565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a80918590610c35908661122a565b6005546001600160a01b03163314610ca45760405162461bcd60e51b8152600401610ab4906125cf565b6001811015610cb257600080fd5b6016819055610cbf611cae565b50565b6005546001600160a01b03163314610cec5760405162461bcd60e51b8152600401610ab4906125cf565b601855565b6005546001600160a01b03163314610d1b5760405162461bcd60e51b8152600401610ab4906125cf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d8f5760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610de45760405162461bcd60e51b8152600401610ab4906125cf565b6001811015610df257600080fd5b6017819055610cbf611cae565b6060600480546109f090612594565b6005546001600160a01b03163314610e385760405162461bcd60e51b8152600401610ab4906125cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610ee05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ab4565b610bd78282611d0d565b6000610a803384610c3585604051806060016040528060258152602001612842602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611c74565b6000610a803384846113b5565b6005546001600160a01b03163314610f705760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610ab4906125cf565b6011829055601281905561100d818361261a565b601381905560fa1015610bd75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610ab4565b6005546001600160a01b0316331461108c5760405162461bcd60e51b8152600401610ab4906125cf565b60005b8151811015610bd7576001600c60008484815181106110b0576110b0612632565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806110ec81612648565b91505061108f565b6005546001600160a01b0316331461111e5760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b0381166111835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab4565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112095760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600080611237838561261a565b9050838110156112895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ab4565b9392505050565b6001600160a01b0383166112f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab4565b6001600160a01b0382166113535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113db5760405162461bcd60e51b8152600401610ab490612663565b6001600160a01b0382166114015760405162461bcd60e51b8152600401610ab4906126a8565b6001600160a01b0383166000908152600c602052604090205460ff1615801561144357506001600160a01b0382166000908152600c602052604090205460ff16155b61148f5760405162461bcd60e51b815260206004820152601b60248201527f54686973206163636f756e7420697320626c61636b6c697374656400000000006044820152606401610ab4565b806114a5576114a083836000611d61565b505050565b600a54600160a01b900460ff1615611976576005546001600160a01b038481169116148015906114e357506005546001600160a01b03838116911614155b80156114f757506001600160a01b03821615155b801561150e57506001600160a01b03821661dead14155b80156115245750600554600160a01b900460ff16155b1561197657600a54600160a81b900460ff166115be576001600160a01b03831660009081526019602052604090205460ff168061157957506001600160a01b03821660009081526019602052604090205460ff165b6115be5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ab4565b600d5460ff1615611710576005546001600160a01b0383811691161480159061161957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561165757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561171057326000908152600b602052604090205443116116f25760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610ab4565b6018546116ff904361261a565b326000908152600b60205260409020555b6001600160a01b0383166000908152601b602052604090205460ff16801561175157506001600160a01b0382166000908152601a602052604090205460ff16155b15611835576006548111156117c65760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ab4565b6008546001600160a01b0383166000908152602081905260409020546117ec908361261a565b11156118305760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ab4565b611976565b6001600160a01b0382166000908152601b602052604090205460ff16801561187657506001600160a01b0383166000908152601a602052604090205460ff16155b156118ec576006548111156118305760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ab4565b6001600160a01b0382166000908152601a602052604090205460ff16611976576008546001600160a01b038316600090815260208190526040902054611932908361261a565b11156119765760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ab4565b30600090815260208190526040902054600754811080159081906119a45750600554600160a01b900460ff16155b80156119b95750600a54600160b01b900460ff165b80156119de57506001600160a01b0385166000908152601b602052604090205460ff16155b8015611a0357506001600160a01b03851660009081526019602052604090205460ff16155b8015611a2857506001600160a01b03841660009081526019602052604090205460ff16155b15611a56576005805460ff60a01b1916600160a01b179055611a48611e6a565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611aa457506001600160a01b03851660009081526019602052604090205460ff165b15611aad575060005b60008115611c60576001600160a01b0386166000908152601b602052604090205460ff168015611adf57506000601354115b15611b6d57611b046064611afe60135488611f1290919063ffffffff16565b90611f91565b905060135460115482611b1791906126eb565b611b21919061270a565b60146000828254611b32919061261a565b9091555050601354601254611b4790836126eb565b611b51919061270a565b60156000828254611b62919061261a565b90915550611c1a9050565b6001600160a01b0387166000908152601b602052604090205460ff168015611b9757506000601054115b15611c1a57611bb66064611afe60105488611f1290919063ffffffff16565b9050601054600e5482611bc991906126eb565b611bd3919061270a565b60146000828254611be4919061261a565b9091555050601054600f54611bf990836126eb565b611c03919061270a565b60156000828254611c14919061261a565b90915550505b8015611c5357611c2b873083611d61565b60145415611c5357611c3f30601454611fd3565b600254600955611c4d611cae565b60006014555b611c5d818661272c565b94505b611c6b878787611d61565b50505050505050565b60008184841115611c985760405162461bcd60e51b8152600401610ab4919061230e565b506000611ca5848661272c565b95945050505050565b6064601754600954611cc091906126eb565b611cca919061270a565b60065560095461271090611cdf9060056126eb565b611ce9919061270a565b600755601654600954606491611cfe916126eb565b611d08919061270a565b600855565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d875760405162461bcd60e51b8152600401610ab490612663565b6001600160a01b038216611dad5760405162461bcd60e51b8152600401610ab4906126a8565b611dea816040518060600160405280602681526020016127f4602691396001600160a01b0386166000908152602081905260409020549190611c74565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e19908261122a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016113a8565b306000908152602081905260408120549081611e84575050565b600754611e929060146126eb565b821115611eaa57600754611ea79060146126eb565b91505b611eb3826120de565b60006015819055600a546040516001600160a01b039091169147919081818185875af1925050503d8060008114611f06576040519150601f19603f3d011682016040523d82523d6000602084013e611f0b565b606091505b5050505050565b600082611f2157506000610a84565b6000611f2d83856126eb565b905082611f3a858361270a565b146112895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ab4565b600061128983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229e565b6001600160a01b0382166120335760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ab4565b612070816040518060600160405280602281526020016127d2602291396001600160a01b0385166000908152602081905260409020549190611c74565b6001600160a01b03831660009081526020819052604090205560025461209690826122cc565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061211357612113612632565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b59190612743565b816001815181106121c8576121c8612632565b60200260200101906001600160a01b031690816001600160a01b031681525050612213307f000000000000000000000000000000000000000000000000000000000000000084611290565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612268908590600090869030904290600401612760565b600060405180830381600087803b15801561228257600080fd5b505af1158015612296573d6000803e3d6000fd5b505050505050565b600081836122bf5760405162461bcd60e51b8152600401610ab4919061230e565b506000611ca5848661270a565b600061128983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c74565b600060208083528351808285015260005b8181101561233b5785810183015185820160400152820161231f565b8181111561234d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cbf57600080fd5b803561238381612363565b919050565b6000806040838503121561239b57600080fd5b82356123a681612363565b946020939093013593505050565b6000602082840312156123c657600080fd5b813561128981612363565b600080604083850312156123e457600080fd5b50508035926020909101359150565b60008060006060848603121561240857600080fd5b833561241381612363565b9250602084013561242381612363565b929592945050506040919091013590565b60006020828403121561244657600080fd5b5035919050565b6000806040838503121561246057600080fd5b823561246b81612363565b91506020830135801515811461248057600080fd5b809150509250929050565b6000806040838503121561249e57600080fd5b82356124a981612363565b9150602083013561248081612363565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156124e257600080fd5b823567ffffffffffffffff808211156124fa57600080fd5b818501915085601f83011261250e57600080fd5b813581811115612520576125206124b9565b8060051b604051601f19603f83011681018181108582111715612545576125456124b9565b60405291825284820192508381018501918883111561256357600080fd5b938501935b828510156125885761257985612378565b84529385019392850192612568565b98975050505050505050565b600181811c908216806125a857607f821691505b602082108114156125c957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561262d5761262d612604565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561265c5761265c612604565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600081600019048311821515161561270557612705612604565b500290565b60008261272757634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561273e5761273e612604565b500390565b60006020828403121561275557600080fd5b815161128981612363565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127b05784516001600160a01b03168352938301939183019160010161278b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220302ca4d0300b3c35c112878e7569dd86dcfff2f9ec678681d4814c91d75e4a0664736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063bfd79284116100f7578063e2f4560511610095578063f203acb61161006f578063f203acb614610975578063f2fde38b1461098b578063f8b45b05146109ab578063faa7a0d9146109c157600080fd5b8063e2f4560514610929578063e71dc3f51461093f578063efb81bb61461095557600080fd5b8063c8c8ebe4116100d1578063c8c8ebe414610897578063d0b964cc146108ad578063d85ba063146108cd578063dd62ed3e146108e357600080fd5b8063bfd792841461082d578063c02466681461085d578063c876d0b91461087d57600080fd5b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb146107a6578063adb873bd146107c6578063b62496f5146107dc578063bbc0c7421461080c57600080fd5b80639fccce321461075a578063a0d82dc514610770578063a457c2d71461078657600080fd5b80638da5cb5b146106bb5780638ea5220f146106d957806395d89b41146106f9578063975d71e21461070e5780639a7a23d6146107245780639c3b4fdc1461074457600080fd5b8063395093511161026a5780636a486a8e11610223578063715018a6116101fd578063715018a6146106505780637571336a14610665578063796e1a28146106855780637ab43983146106a557600080fd5b80636a486a8e146105e35780636ddd1713146105f957806370a082311461061a57600080fd5b806339509351146104f557806341a249491461051557806349bd5a5e146105355780634a62bb65146105695780634fbee1931461058a57806364d62353146105c357600080fd5b806318160ddd116102d7578063221ff997116102b1578063221ff9971461048357806323b872dd146104a357806327c8f835146104c3578063313ce567146104d957600080fd5b806318160ddd146104385780631c1b87721461044d5780631d7778561461046d57600080fd5b8063047fc9aa1461032a57806306fdde0314610353578063095ea7b31461037557806310d5de53146103a557806315e54c91146103d55780631694505e146103ec57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034060095481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b506103686109e1565b60405161034a919061230e565b34801561038157600080fd5b50610395610390366004612388565b610a73565b604051901515815260200161034a565b3480156103b157600080fd5b506103956103c03660046123b4565b601a6020526000908152604090205460ff1681565b3480156103e157600080fd5b506103ea610a8a565b005b3480156103f857600080fd5b506104207f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161034a565b34801561044457600080fd5b50600254610340565b34801561045957600080fd5b506103ea6104683660046123b4565b610af8565b34801561047957600080fd5b5061034060145481565b34801561048f57600080fd5b506103ea61049e3660046123d1565b610b44565b3480156104af57600080fd5b506103956104be3660046123f3565b610bdb565b3480156104cf57600080fd5b5061042061dead81565b3480156104e557600080fd5b506040516006815260200161034a565b34801561050157600080fd5b50610395610510366004612388565b610c44565b34801561052157600080fd5b506103ea610530366004612434565b610c7a565b34801561054157600080fd5b506104207f0000000000000000000000005c91f75216604ad607449d4638b701195ee0b28d81565b34801561057557600080fd5b50600a5461039590600160a01b900460ff1681565b34801561059657600080fd5b506103956105a53660046123b4565b6001600160a01b031660009081526019602052604090205460ff1690565b3480156105cf57600080fd5b506103ea6105de366004612434565b610cc2565b3480156105ef57600080fd5b5061034060135481565b34801561060557600080fd5b50600a5461039590600160b01b900460ff1681565b34801561062657600080fd5b506103406106353660046123b4565b6001600160a01b031660009081526020819052604090205490565b34801561065c57600080fd5b506103ea610cf1565b34801561067157600080fd5b506103ea61068036600461244d565b610d65565b34801561069157600080fd5b506103ea6106a0366004612434565b610dba565b3480156106b157600080fd5b5061034060165481565b3480156106c757600080fd5b506005546001600160a01b0316610420565b3480156106e557600080fd5b50600a54610420906001600160a01b031681565b34801561070557600080fd5b50610368610dff565b34801561071a57600080fd5b5061034060175481565b34801561073057600080fd5b506103ea61073f36600461244d565b610e0e565b34801561075057600080fd5b50610340600f5481565b34801561076657600080fd5b5061034060155481565b34801561077c57600080fd5b5061034060125481565b34801561079257600080fd5b506103956107a1366004612388565b610eea565b3480156107b257600080fd5b506103956107c1366004612388565b610f39565b3480156107d257600080fd5b5061034060115481565b3480156107e857600080fd5b506103956107f73660046123b4565b601b6020526000908152604090205460ff1681565b34801561081857600080fd5b50600a5461039590600160a81b900460ff1681565b34801561083957600080fd5b506103956108483660046123b4565b600c6020526000908152604090205460ff1681565b34801561086957600080fd5b506103ea61087836600461244d565b610f46565b34801561088957600080fd5b50600d546103959060ff1681565b3480156108a357600080fd5b5061034060065481565b3480156108b957600080fd5b506103ea6108c83660046123d1565b610fcf565b3480156108d957600080fd5b5061034060105481565b3480156108ef57600080fd5b506103406108fe36600461248b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561093557600080fd5b5061034060075481565b34801561094b57600080fd5b50610340600e5481565b34801561096157600080fd5b506103ea6109703660046124cf565b611062565b34801561098157600080fd5b5061034060185481565b34801561099757600080fd5b506103ea6109a63660046123b4565b6110f4565b3480156109b757600080fd5b5061034060085481565b3480156109cd57600080fd5b506103ea6109dc3660046123b4565b6111df565b6060600380546109f090612594565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1c90612594565b8015610a695780601f10610a3e57610100808354040283529160200191610a69565b820191906000526020600020905b815481529060010190602001808311610a4c57829003601f168201915b5050505050905090565b6000610a80338484611290565b5060015b92915050565b6005546001600160a01b03163314610abd5760405162461bcd60e51b8152600401610ab4906125cf565b60405180910390fd5b6000600e819055600c600f819055610ad49161261a565b60105560006011819055600f6012819055610aee9161261a565b6013556000601855565b6005546001600160a01b03163314610b225760405162461bcd60e51b8152600401610ab4906125cf565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b6e5760405162461bcd60e51b8152600401610ab4906125cf565b600e829055600f819055610b82818361261a565b601081905560c81015610bd75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610ab4565b5050565b6000610be88484846113b5565b610c3a8433610c358560405180606001604052806028815260200161281a602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611c74565b611290565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a80918590610c35908661122a565b6005546001600160a01b03163314610ca45760405162461bcd60e51b8152600401610ab4906125cf565b6001811015610cb257600080fd5b6016819055610cbf611cae565b50565b6005546001600160a01b03163314610cec5760405162461bcd60e51b8152600401610ab4906125cf565b601855565b6005546001600160a01b03163314610d1b5760405162461bcd60e51b8152600401610ab4906125cf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d8f5760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610de45760405162461bcd60e51b8152600401610ab4906125cf565b6001811015610df257600080fd5b6017819055610cbf611cae565b6060600480546109f090612594565b6005546001600160a01b03163314610e385760405162461bcd60e51b8152600401610ab4906125cf565b7f0000000000000000000000005c91f75216604ad607449d4638b701195ee0b28d6001600160a01b0316826001600160a01b03161415610ee05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ab4565b610bd78282611d0d565b6000610a803384610c3585604051806060016040528060258152602001612842602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611c74565b6000610a803384846113b5565b6005546001600160a01b03163314610f705760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610ab4906125cf565b6011829055601281905561100d818361261a565b601381905560fa1015610bd75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610ab4565b6005546001600160a01b0316331461108c5760405162461bcd60e51b8152600401610ab4906125cf565b60005b8151811015610bd7576001600c60008484815181106110b0576110b0612632565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806110ec81612648565b91505061108f565b6005546001600160a01b0316331461111e5760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b0381166111835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab4565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112095760405162461bcd60e51b8152600401610ab4906125cf565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600080611237838561261a565b9050838110156112895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ab4565b9392505050565b6001600160a01b0383166112f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab4565b6001600160a01b0382166113535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113db5760405162461bcd60e51b8152600401610ab490612663565b6001600160a01b0382166114015760405162461bcd60e51b8152600401610ab4906126a8565b6001600160a01b0383166000908152600c602052604090205460ff1615801561144357506001600160a01b0382166000908152600c602052604090205460ff16155b61148f5760405162461bcd60e51b815260206004820152601b60248201527f54686973206163636f756e7420697320626c61636b6c697374656400000000006044820152606401610ab4565b806114a5576114a083836000611d61565b505050565b600a54600160a01b900460ff1615611976576005546001600160a01b038481169116148015906114e357506005546001600160a01b03838116911614155b80156114f757506001600160a01b03821615155b801561150e57506001600160a01b03821661dead14155b80156115245750600554600160a01b900460ff16155b1561197657600a54600160a81b900460ff166115be576001600160a01b03831660009081526019602052604090205460ff168061157957506001600160a01b03821660009081526019602052604090205460ff165b6115be5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ab4565b600d5460ff1615611710576005546001600160a01b0383811691161480159061161957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561165757507f0000000000000000000000005c91f75216604ad607449d4638b701195ee0b28d6001600160a01b0316826001600160a01b031614155b1561171057326000908152600b602052604090205443116116f25760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610ab4565b6018546116ff904361261a565b326000908152600b60205260409020555b6001600160a01b0383166000908152601b602052604090205460ff16801561175157506001600160a01b0382166000908152601a602052604090205460ff16155b15611835576006548111156117c65760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ab4565b6008546001600160a01b0383166000908152602081905260409020546117ec908361261a565b11156118305760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ab4565b611976565b6001600160a01b0382166000908152601b602052604090205460ff16801561187657506001600160a01b0383166000908152601a602052604090205460ff16155b156118ec576006548111156118305760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ab4565b6001600160a01b0382166000908152601a602052604090205460ff16611976576008546001600160a01b038316600090815260208190526040902054611932908361261a565b11156119765760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ab4565b30600090815260208190526040902054600754811080159081906119a45750600554600160a01b900460ff16155b80156119b95750600a54600160b01b900460ff165b80156119de57506001600160a01b0385166000908152601b602052604090205460ff16155b8015611a0357506001600160a01b03851660009081526019602052604090205460ff16155b8015611a2857506001600160a01b03841660009081526019602052604090205460ff16155b15611a56576005805460ff60a01b1916600160a01b179055611a48611e6a565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611aa457506001600160a01b03851660009081526019602052604090205460ff165b15611aad575060005b60008115611c60576001600160a01b0386166000908152601b602052604090205460ff168015611adf57506000601354115b15611b6d57611b046064611afe60135488611f1290919063ffffffff16565b90611f91565b905060135460115482611b1791906126eb565b611b21919061270a565b60146000828254611b32919061261a565b9091555050601354601254611b4790836126eb565b611b51919061270a565b60156000828254611b62919061261a565b90915550611c1a9050565b6001600160a01b0387166000908152601b602052604090205460ff168015611b9757506000601054115b15611c1a57611bb66064611afe60105488611f1290919063ffffffff16565b9050601054600e5482611bc991906126eb565b611bd3919061270a565b60146000828254611be4919061261a565b9091555050601054600f54611bf990836126eb565b611c03919061270a565b60156000828254611c14919061261a565b90915550505b8015611c5357611c2b873083611d61565b60145415611c5357611c3f30601454611fd3565b600254600955611c4d611cae565b60006014555b611c5d818661272c565b94505b611c6b878787611d61565b50505050505050565b60008184841115611c985760405162461bcd60e51b8152600401610ab4919061230e565b506000611ca5848661272c565b95945050505050565b6064601754600954611cc091906126eb565b611cca919061270a565b60065560095461271090611cdf9060056126eb565b611ce9919061270a565b600755601654600954606491611cfe916126eb565b611d08919061270a565b600855565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d875760405162461bcd60e51b8152600401610ab490612663565b6001600160a01b038216611dad5760405162461bcd60e51b8152600401610ab4906126a8565b611dea816040518060600160405280602681526020016127f4602691396001600160a01b0386166000908152602081905260409020549190611c74565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e19908261122a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016113a8565b306000908152602081905260408120549081611e84575050565b600754611e929060146126eb565b821115611eaa57600754611ea79060146126eb565b91505b611eb3826120de565b60006015819055600a546040516001600160a01b039091169147919081818185875af1925050503d8060008114611f06576040519150601f19603f3d011682016040523d82523d6000602084013e611f0b565b606091505b5050505050565b600082611f2157506000610a84565b6000611f2d83856126eb565b905082611f3a858361270a565b146112895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ab4565b600061128983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229e565b6001600160a01b0382166120335760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ab4565b612070816040518060600160405280602281526020016127d2602291396001600160a01b0385166000908152602081905260409020549190611c74565b6001600160a01b03831660009081526020819052604090205560025461209690826122cc565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061211357612113612632565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b59190612743565b816001815181106121c8576121c8612632565b60200260200101906001600160a01b031690816001600160a01b031681525050612213307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611290565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612268908590600090869030904290600401612760565b600060405180830381600087803b15801561228257600080fd5b505af1158015612296573d6000803e3d6000fd5b505050505050565b600081836122bf5760405162461bcd60e51b8152600401610ab4919061230e565b506000611ca5848661270a565b600061128983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c74565b600060208083528351808285015260005b8181101561233b5785810183015185820160400152820161231f565b8181111561234d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cbf57600080fd5b803561238381612363565b919050565b6000806040838503121561239b57600080fd5b82356123a681612363565b946020939093013593505050565b6000602082840312156123c657600080fd5b813561128981612363565b600080604083850312156123e457600080fd5b50508035926020909101359150565b60008060006060848603121561240857600080fd5b833561241381612363565b9250602084013561242381612363565b929592945050506040919091013590565b60006020828403121561244657600080fd5b5035919050565b6000806040838503121561246057600080fd5b823561246b81612363565b91506020830135801515811461248057600080fd5b809150509250929050565b6000806040838503121561249e57600080fd5b82356124a981612363565b9150602083013561248081612363565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156124e257600080fd5b823567ffffffffffffffff808211156124fa57600080fd5b818501915085601f83011261250e57600080fd5b813581811115612520576125206124b9565b8060051b604051601f19603f83011681018181108582111715612545576125456124b9565b60405291825284820192508381018501918883111561256357600080fd5b938501935b828510156125885761257985612378565b84529385019392850192612568565b98975050505050505050565b600181811c908216806125a857607f821691505b602082108114156125c957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561262d5761262d612604565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561265c5761265c612604565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600081600019048311821515161561270557612705612604565b500290565b60008261272757634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561273e5761273e612604565b500390565b60006020828403121561275557600080fd5b815161128981612363565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127b05784516001600160a01b03168352938301939183019160010161278b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220302ca4d0300b3c35c112878e7569dd86dcfff2f9ec678681d4814c91d75e4a0664736f6c634300080b0033

Deployed Bytecode Sourcemap

18347:11411:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18746:21;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;18746:21:0;;;;;;;;5127:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6054:169::-;;;;;;;;;;-1:-1:-1;6054:169:0;;;;;:::i;:::-;;:::i;:::-;;;1558:14:1;;1551:22;1533:41;;1521:2;1506:18;6054:169:0;1393:187:1;19531:64:0;;;;;;;;;;-1:-1:-1;19531:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22022:278;;;;;;;;;;;;;:::i;:::-;;18424:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2028:32:1;;;2010:51;;1998:2;1983:18;18424:51:0;1837:230:1;5453:108:0;;;;;;;;;;-1:-1:-1;5541:12:0;;5453:108;;23447:94;;;;;;;;;;-1:-1:-1;23447:94:0;;;;;:::i;:::-;;:::i;19303:28::-;;;;;;;;;;;;;;;;22894:263;;;;;;;;;;-1:-1:-1;22894:263:0;;;;;:::i;:::-;;:::i;6233:355::-;;;;;;;;;;-1:-1:-1;6233:355:0;;;;;:::i;:::-;;:::i;18527:53::-;;;;;;;;;;;;18573:6;18527:53;;5351:92;;;;;;;;;;-1:-1:-1;5351:92:0;;5434:1;3136:36:1;;3124:2;3109:18;5351:92:0;2994:184:1;6598:218:0;;;;;;;;;;-1:-1:-1;6598:218:0;;;;;:::i;:::-;;:::i;22473:152::-;;;;;;;;;;-1:-1:-1;22473:152:0;;;;;:::i;:::-;;:::i;18482:38::-;;;;;;;;;;;;;;;18813:33;;;;;;;;;;-1:-1:-1;18813:33:0;;;;-1:-1:-1;;;18813:33:0;;;;;;24415:125;;;;;;;;;;-1:-1:-1;24415:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;24504:28:0;24480:4;24504:28;;;:19;:28;;;;;;;;;24415:125;22633:93;;;;;;;;;;-1:-1:-1;22633:93:0;;;;;:::i;:::-;;:::i;19259:28::-;;;;;;;;;;;;;;;;18892:30;;;;;;;;;;-1:-1:-1;18892:30:0;;;;-1:-1:-1;;;18892:30:0;;;;;;5571:127;;;;;;;;;;-1:-1:-1;5571:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5672:18:0;5645:7;5672:18;;;;;;;;;;;;5571:127;11342:148;;;;;;;;;;;;;:::i;22738:144::-;;;;;;;;;;-1:-1:-1;22738:144:0;;;;;:::i;:::-;;:::i;22312:153::-;;;;;;;;;;-1:-1:-1;22312:153:0;;;;;:::i;:::-;;:::i;19374:26::-;;;;;;;;;;;;;;;;11128:79;;;;;;;;;;-1:-1:-1;11193:6:0;;-1:-1:-1;;;;;11193:6:0;11128:79;;18776:24;;;;;;;;;;-1:-1:-1;18776:24:0;;;;-1:-1:-1;;;;;18776:24:0;;;5237:104;;;;;;;;;;;;;:::i;19407:25::-;;;;;;;;;;;;;;;;23967:244;;;;;;;;;;-1:-1:-1;23967:244:0;;;;;:::i;:::-;;:::i;19127:24::-;;;;;;;;;;;;;;;;19338:27;;;;;;;;;;;;;;;;19227:25;;;;;;;;;;;;;;;;6826:269;;;;;;;;;;-1:-1:-1;6826:269:0;;;;;:::i;:::-;;:::i;5708:175::-;;;;;;;;;;-1:-1:-1;5708:175:0;;;;;:::i;:::-;;:::i;19194:26::-;;;;;;;;;;;;;;;;19602:58;;;;;;;;;;-1:-1:-1;19602:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18853:32;;;;;;;;;;-1:-1:-1;18853:32:0;;;;-1:-1:-1;;;18853:32:0;;;;;;19002:36;;;;;;;;;;-1:-1:-1;19002:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23549:182;;;;;;;;;;-1:-1:-1;23549:182:0;;;;;:::i;:::-;;:::i;19047:39::-;;;;;;;;;;-1:-1:-1;19047:39:0;;;;;;;;18627:35;;;;;;;;;;;;;;;;23169:270;;;;;;;;;;-1:-1:-1;23169:270:0;;;;;:::i;:::-;;:::i;19158:27::-;;;;;;;;;;;;;;;;5893:151;;;;;;;;;;-1:-1:-1;5893:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;6009:18:0;;;5982:7;6009:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5893:151;18669:33;;;;;;;;;;;;;;;;19095:25;;;;;;;;;;;;;;;;21794:131;;;;;;;;;;-1:-1:-1;21794:131:0;;;;;:::i;:::-;;:::i;19439:25::-;;;;;;;;;;;;;;;;11500:244;;;;;;;;;;-1:-1:-1;11500:244:0;;;;;:::i;:::-;;:::i;18709:24::-;;;;;;;;;;;;;;;;21930:86;;;;;;;;;;-1:-1:-1;21930:86:0;;;;;:::i;:::-;;:::i;5127:100::-;5181:13;5214:5;5207:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5127:100;:::o;6054:169::-;6137:4;6154:39;477:10;6177:7;6186:6;6154:8;:39::i;:::-;-1:-1:-1;6211:4:0;6054:169;;;;;:::o;22022:278::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;;;;;;;;;22087:1:::1;22074:10;:14:::0;;;22111:2:::1;22099:9;:14:::0;;;22139:22:::1;::::0;::::1;:::i;:::-;22124:12;:37:::0;22188:1:::1;22174:11;:15:::0;;;22212:2:::1;22200:10;:14:::0;;;22241:24:::1;::::0;::::1;:::i;:::-;22225:13;:40:::0;22291:1:::1;22278:10;:14:::0;22022:278::o;23447:94::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;23512:9:::1;:21:::0;;-1:-1:-1;;;;;;23512:21:0::1;-1:-1:-1::0;;;;;23512:21:0;;;::::1;::::0;;;::::1;::::0;;23447:94::o;22894:263::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;22978:10:::1;:21:::0;;;23010:9:::1;:19:::0;;;23055:22:::1;23022:7:::0;22991:8;23055:22:::1;:::i;:::-;23040:12;:37:::0;;;23112:3:::1;-1:-1:-1::0;23096:19:0::1;23088:61;;;::::0;-1:-1:-1;;;23088:61:0;;6653:2:1;23088:61:0::1;::::0;::::1;6635:21:1::0;6692:2;6672:18;;;6665:30;6731:31;6711:18;;;6704:59;6780:18;;23088:61:0::1;6451:353:1::0;23088:61:0::1;22894:263:::0;;:::o;6233:355::-;6373:4;6390:36;6400:6;6408:9;6419:6;6390:9;:36::i;:::-;6437:121;6446:6;477:10;6468:89;6506:6;6468:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6468:19:0;;;;;;:11;:19;;;;;;;;477:10;6468:33;;;;;;;;;;:37;:89::i;:::-;6437:8;:121::i;:::-;-1:-1:-1;6576:4:0;6233:355;;;;;:::o;6598:218::-;477:10;6686:4;6735:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6735:34:0;;;;;;;;;;6686:4;;6703:83;;6726:7;;6735:50;;6774:10;6735:38;:50::i;22473:152::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;22559:1:::1;22549:6;:11;;22541:20;;;::::0;::::1;;22572:11;:20:::0;;;22603:14:::1;:12;:14::i;:::-;22473:152:::0;:::o;22633:93::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;22699:10:::1;:19:::0;22633:93::o;11342:148::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;11433:6:::1;::::0;11412:40:::1;::::0;11449:1:::1;::::0;-1:-1:-1;;;;;11433:6:0::1;::::0;11412:40:::1;::::0;11449:1;;11412:40:::1;11463:6;:19:::0;;-1:-1:-1;;;;;;11463:19:0::1;::::0;;11342:148::o;22738:144::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22828:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;22828:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22738:144::o;22312:153::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;22400:1:::1;22390:6;:11;;22382:20;;;::::0;::::1;;22413:10;:19:::0;;;22443:14:::1;:12;:14::i;5237:104::-:0;5293:13;5326:7;5319:14;;;;;:::i;23967:244::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;24074:13:::1;-1:-1:-1::0;;;;;24066:21:0::1;:4;-1:-1:-1::0;;;;;24066:21:0::1;;;24058:91;;;::::0;-1:-1:-1;;;24058:91:0;;7011:2:1;24058:91:0::1;::::0;::::1;6993:21:1::0;7050:2;7030:18;;;7023:30;7089:34;7069:18;;;7062:62;7160:27;7140:18;;;7133:55;7205:19;;24058:91:0::1;6809:421:1::0;24058:91:0::1;24162:41;24191:4;24197:5;24162:28;:41::i;6826:269::-:0;6919:4;6936:129;477:10;6959:7;6968:96;7007:15;6968:96;;;;;;;;;;;;;;;;;477:10;6968:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6968:34:0;;;;;;;;;;;;:38;:96::i;5708:175::-;5794:4;5811:42;477:10;5835:9;5846:6;5811:9;:42::i;23549:182::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23634:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;23634:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23689:34;;1533:41:1;;;23689:34:0::1;::::0;1506:18:1;23689:34:0::1;;;;;;;23549:182:::0;;:::o;23169:270::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;23254:11:::1;:22:::0;;;23287:10:::1;:20:::0;;;23334:24:::1;23300:7:::0;23268:8;23334:24:::1;:::i;:::-;23318:13;:40:::0;;;23394:3:::1;-1:-1:-1::0;23377:20:0::1;23369:62;;;::::0;-1:-1:-1;;;23369:62:0;;7437:2:1;23369:62:0::1;::::0;::::1;7419:21:1::0;7476:2;7456:18;;;7449:30;7515:31;7495:18;;;7488:59;7564:18;;23369:62:0::1;7235:353:1::0;21794:131:0;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;21862:9:::1;21857:67;21881:5;:12;21877:1;:16;21857:67;;;21918:4;21901;:14;21906:5;21912:1;21906:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21901:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21901:14:0;:21;;-1:-1:-1;;21901:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21895:3;::::1;::::0;::::1;:::i;:::-;;;;21857:67;;11500:244:::0;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11589:22:0;::::1;11581:73;;;::::0;-1:-1:-1;;;11581:73:0;;8067:2:1;11581:73:0::1;::::0;::::1;8049:21:1::0;8106:2;8086:18;;;8079:30;8145:34;8125:18;;;8118:62;-1:-1:-1;;;8196:18:1;;;8189:36;8242:19;;11581:73:0::1;7865:402:1::0;11581:73:0::1;11691:6;::::0;11670:38:::1;::::0;-1:-1:-1;;;;;11670:38:0;;::::1;::::0;11691:6:::1;::::0;11670:38:::1;::::0;11691:6:::1;::::0;11670:38:::1;11719:6;:17:::0;;-1:-1:-1;;;;;;11719:17:0::1;-1:-1:-1::0;;;;;11719:17:0;;;::::1;::::0;;;::::1;::::0;;11500:244::o;21930:86::-;11255:6;;-1:-1:-1;;;;;11255:6:0;477:10;11255:22;11247:67;;;;-1:-1:-1;;;11247:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21991:12:0::1;22006:5;21991:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;21991:20:0::1;::::0;;21930:86::o;9048:181::-;9106:7;;9138:5;9142:1;9138;:5;:::i;:::-;9126:17;;9167:1;9162;:6;;9154:46;;;;-1:-1:-1;;;9154:46:0;;8474:2:1;9154:46:0;;;8456:21:1;8513:2;8493:18;;;8486:30;8552:29;8532:18;;;8525:57;8599:18;;9154:46:0;8272:351:1;9154:46:0;9220:1;9048:181;-1:-1:-1;;;9048:181:0:o;8502:380::-;-1:-1:-1;;;;;8638:19:0;;8630:68;;;;-1:-1:-1;;;8630:68:0;;8830:2:1;8630:68:0;;;8812:21:1;8869:2;8849:18;;;8842:30;8908:34;8888:18;;;8881:62;-1:-1:-1;;;8959:18:1;;;8952:34;9003:19;;8630:68:0;8628:400:1;8630:68:0;-1:-1:-1;;;;;8717:21:0;;8709:68;;;;-1:-1:-1;;;8709:68:0;;9235:2:1;8709:68:0;;;9217:21:1;9274:2;9254:18;;;9247:30;9313:34;9293:18;;;9286:62;-1:-1:-1;;;9364:18:1;;;9357:32;9406:19;;8709:68:0;9033:398:1;8709:68:0;-1:-1:-1;;;;;8790:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8842:32;;160:25:1;;;8842:32:0;;133:18:1;8842:32:0;;;;;;;;8502:380;;;:::o;24552:4116::-;-1:-1:-1;;;;;24684:18:0;;24676:68;;;;-1:-1:-1;;;24676:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24763:16:0;;24755:64;;;;-1:-1:-1;;;24755:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24839:10:0;;;;;;:4;:10;;;;;;;;24838:11;:24;;;;-1:-1:-1;;;;;;24854:8:0;;;;;;:4;:8;;;;;;;;24853:9;24838:24;24830:64;;;;-1:-1:-1;;;24830:64:0;;10448:2:1;24830:64:0;;;10430:21:1;10487:2;10467:18;;;10460:30;10526:29;10506:18;;;10499:57;10573:18;;24830:64:0;10246:351:1;24830:64:0;24919:11;24916:92;;24947:28;24963:4;24969:2;24973:1;24947:15;:28::i;:::-;24552:4116;;;:::o;24916:92::-;25031:14;;-1:-1:-1;;;25031:14:0;;;;25028:1854;;;11193:6;;-1:-1:-1;;;;;25083:15:0;;;11193:6;;25083:15;;;;:49;;-1:-1:-1;11193:6:0;;-1:-1:-1;;;;;25119:13:0;;;11193:6;;25119:13;;25083:49;:86;;;;-1:-1:-1;;;;;;25153:16:0;;;;25083:86;:128;;;;-1:-1:-1;;;;;;25190:21:0;;25204:6;25190:21;;25083:128;:158;;;;-1:-1:-1;25233:8:0;;-1:-1:-1;;;25233:8:0;;;;25232:9;25083:158;25061:1810;;;25279:13;;-1:-1:-1;;;25279:13:0;;;;25275:148;;-1:-1:-1;;;;;25324:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;25353:23:0;;;;;;:19;:23;;;;;;;;25324:52;25316:87;;;;-1:-1:-1;;;25316:87:0;;10804:2:1;25316:87:0;;;10786:21:1;10843:2;10823:18;;;10816:30;-1:-1:-1;;;10862:18:1;;;10855:52;10924:18;;25316:87:0;10602:346:1;25316:87:0;25581:20;;;;25577:436;;;11193:6;;-1:-1:-1;;;;;25629:13:0;;;11193:6;;25629:13;;;;:47;;;25660:15;-1:-1:-1;;;;;25646:30:0;:2;-1:-1:-1;;;;;25646:30:0;;;25629:47;:79;;;;;25694:13;-1:-1:-1;;;;;25680:28:0;:2;-1:-1:-1;;;;;25680:28:0;;;25629:79;25625:369;;;25773:9;25744:39;;;;:28;:39;;;;;;25786:12;-1:-1:-1;25736:140:0;;;;-1:-1:-1;;;25736:140:0;;11155:2:1;25736:140:0;;;11137:21:1;11194:2;11174:18;;;11167:30;11233:34;11213:18;;;11206:62;11304:34;11284:18;;;11277:62;-1:-1:-1;;;11355:19:1;;;11348:40;11405:19;;25736:140:0;10953:477:1;25736:140:0;25960:10;;25945:25;;:12;:25;:::i;:::-;25932:9;25903:39;;;;:28;:39;;;;;:67;25625:369;-1:-1:-1;;;;;26082:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;26118:35:0;;;;;;:31;:35;;;;;;;;26117:36;26082:71;26078:778;;;26200:20;;26190:6;:30;;26182:96;;;;-1:-1:-1;;;26182:96:0;;11637:2:1;26182:96:0;;;11619:21:1;11676:2;11656:18;;;11649:30;11715:34;11695:18;;;11688:62;-1:-1:-1;;;11766:18:1;;;11759:51;11827:19;;26182:96:0;11435:417:1;26182:96:0;26339:9;;-1:-1:-1;;;;;5672:18:0;;5645:7;5672:18;;;;;;;;;;;26313:22;;:6;:22;:::i;:::-;:35;;26305:67;;;;-1:-1:-1;;;26305:67:0;;12059:2:1;26305:67:0;;;12041:21:1;12098:2;12078:18;;;12071:30;-1:-1:-1;;;12117:18:1;;;12110:49;12176:18;;26305:67:0;11857:343:1;26305:67:0;26078:778;;;-1:-1:-1;;;;;26466:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;26500:37:0;;;;;;:31;:37;;;;;;;;26499:38;26466:71;26462:394;;;26584:20;;26574:6;:30;;26566:97;;;;-1:-1:-1;;;26566:97:0;;12407:2:1;26566:97:0;;;12389:21:1;12446:2;12426:18;;;12419:30;12485:34;12465:18;;;12458:62;-1:-1:-1;;;12536:18:1;;;12529:52;12598:19;;26566:97:0;12205:418:1;26462:394:0;-1:-1:-1;;;;;26710:35:0;;;;;;:31;:35;;;;;;;;26706:150;;26803:9;;-1:-1:-1;;;;;5672:18:0;;5645:7;5672:18;;;;;;;;;;;26777:22;;:6;:22;:::i;:::-;:35;;26769:67;;;;-1:-1:-1;;;26769:67:0;;12059:2:1;26769:67:0;;;12041:21:1;12098:2;12078:18;;;12071:30;-1:-1:-1;;;12117:18:1;;;12110:49;12176:18;;26769:67:0;11857:343:1;26769:67:0;26941:4;26892:28;5672:18;;;;;;;;;;;27007;;26983:42;;;;;;;27056:33;;-1:-1:-1;27081:8:0;;-1:-1:-1;;;27081:8:0;;;;27080:9;27056:33;:61;;;;-1:-1:-1;27106:11:0;;-1:-1:-1;;;27106:11:0;;;;27056:61;:110;;;;-1:-1:-1;;;;;;27135:31:0;;;;;;:25;:31;;;;;;;;27134:32;27056:110;:153;;;;-1:-1:-1;;;;;;27184:25:0;;;;;;:19;:25;;;;;;;;27183:26;27056:153;:194;;;;-1:-1:-1;;;;;;27227:23:0;;;;;;:19;:23;;;;;;;;27226:24;27056:194;27038:338;;;27277:8;:15;;-1:-1:-1;;;;27277:15:0;-1:-1:-1;;;27277:15:0;;;27321:10;:8;:10::i;:::-;27348:8;:16;;-1:-1:-1;;;;27348:16:0;;;27038:338;27412:8;;-1:-1:-1;;;;;27436:25:0;;27396:12;27436:25;;;:19;:25;;;;;;27412:8;-1:-1:-1;;;27412:8:0;;;;;27411:9;;27436:25;;:52;;-1:-1:-1;;;;;;27465:23:0;;;;;;:19;:23;;;;;;;;27436:52;27433:99;;;-1:-1:-1;27515:5:0;27433:99;27552:12;27584:7;27581:1034;;;-1:-1:-1;;;;;27635:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;27684:1;27668:13;;:17;27635:50;27631:574;;;27712:34;27742:3;27712:25;27723:13;;27712:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;27705:41;;27803:13;;27789:11;;27782:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;27765:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;27871:13:0;;27858:10;;27851:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;27835:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;27631:574:0;;-1:-1:-1;27631:574:0;;-1:-1:-1;;;;;27947:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;27997:1;27982:12;;:16;27947:51;27944:261;;;28025:33;28054:3;28025:24;28036:12;;28025:6;:10;;:24;;;;:::i;:33::-;28018:40;;28111:12;;28098:10;;28091:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;28074:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;28177:12:0;;28165:9;;28158:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;28142:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;27944:261:0;28236:8;;28233:334;;28268:42;28284:4;28298;28305;28268:15;:42::i;:::-;28333:13;;:17;28329:223;;28375:35;28389:4;28396:13;;28375:5;:35::i;:::-;5541:12;;28433:6;:22;28478:14;:12;:14::i;:::-;28531:1;28515:13;:17;28329:223;28589:14;28599:4;28589:14;;:::i;:::-;;;27581:1034;28627:33;28643:4;28649:2;28653:6;28627:15;:33::i;:::-;24665:4003;;;;24552:4116;;;:::o;9383:192::-;9469:7;9505:12;9497:6;;;;9489:29;;;;-1:-1:-1;;;9489:29:0;;;;;;;;:::i;:::-;-1:-1:-1;9529:9:0;9541:5;9545:1;9541;:5;:::i;:::-;9529:17;9383:192;-1:-1:-1;;;;;9383:192:0:o;23739:220::-;23827:3;23814:10;;23805:6;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;23782:20;:48;23862:6;;23875:5;;23862:10;;23871:1;23862:10;:::i;:::-;:18;;;;:::i;:::-;23841;:39;23934:11;;23925:6;;23948:3;;23925:20;;;:::i;:::-;:26;;;;:::i;:::-;23913:9;:38;23739:220::o;24219:188::-;-1:-1:-1;;;;;24302:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;24302:39:0;;;;;;;;;;24359:40;;24302:39;;:31;24359:40;;;24219:188;;:::o;7105:573::-;-1:-1:-1;;;;;7245:20:0;;7237:70;;;;-1:-1:-1;;;7237:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7326:23:0;;7318:71;;;;-1:-1:-1;;;7318:71:0;;;;;;;:::i;:::-;7482;7504:6;7482:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7482:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7462:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7587:20;;;;;;;:32;;7612:6;7587:24;:32::i;:::-;-1:-1:-1;;;;;7564:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7635:35;160:25:1;;;7564:20:0;;7635:35;;;;;;133:18:1;7635:35:0;14:177:1;29289:464:0;29372:4;29328:23;5672:18;;;;;;;;;;;;;29422:34;;29448:7;;29289:464::o;29422:34::-;29489:18;;:23;;29510:2;29489:23;:::i;:::-;29471:15;:41;29468:111;;;29544:18;;:23;;29565:2;29544:23;:::i;:::-;29526:41;;29468:111;29591:33;29608:15;29591:16;:33::i;:::-;29661:1;29646:12;:16;;;29696:9;;29688:57;;-1:-1:-1;;;;;29696:9:0;;;;29719:21;;29688:57;;29661:1;29688:57;29719:21;29696:9;29688:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29289:464:0:o;9583:471::-;9641:7;9886:6;9882:47;;-1:-1:-1;9916:1:0;9909:8;;9882:47;9941:9;9953:5;9957:1;9953;:5;:::i;:::-;9941:17;-1:-1:-1;9986:1:0;9977:5;9981:1;9941:17;9977:5;:::i;:::-;:10;9969:56;;;;-1:-1:-1;;;9969:56:0;;13565:2:1;9969:56:0;;;13547:21:1;13604:2;13584:18;;;13577:30;13643:34;13623:18;;;13616:62;-1:-1:-1;;;13694:18:1;;;13687:31;13735:19;;9969:56:0;13363:397:1;10062:132:0;10120:7;10147:39;10151:1;10154;10147:39;;;;;;;;;;;;;;;;;:3;:39::i;8074:418::-;-1:-1:-1;;;;;8158:21:0;;8150:67;;;;-1:-1:-1;;;8150:67:0;;13967:2:1;8150:67:0;;;13949:21:1;14006:2;13986:18;;;13979:30;14045:34;14025:18;;;14018:62;-1:-1:-1;;;14096:18:1;;;14089:31;14137:19;;8150:67:0;13765:397:1;8150:67:0;8313:68;8336:6;8313:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8313:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;8292:18:0;;:9;:18;;;;;;;;;;:89;8407:12;;:24;;8424:6;8407:16;:24::i;:::-;8392:12;:39;8447:37;;160:25:1;;;8473:1:0;;-1:-1:-1;;;;;8447:37:0;;;;;148:2:1;133:18;8447:37:0;;;;;;;8074:418;;:::o;28676:601::-;28828:16;;;28842:1;28828:16;;;;;;;;28804:21;;28828:16;;;;;;;;;;-1:-1:-1;28828:16:0;28804:40;;28873:4;28855;28860:1;28855:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28855:23:0;;;-1:-1:-1;;;;;28855:23:0;;;;;28899:15;-1:-1:-1;;;;;28899:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28889:4;28894:1;28889:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;28889:32:0;;;-1:-1:-1;;;;;28889:32:0;;;;;28934:62;28951:4;28966:15;28984:11;28934:8;:62::i;:::-;29035:224;;-1:-1:-1;;;29035:224:0;;-1:-1:-1;;;;;29035:15:0;:66;;;;:224;;29116:11;;29142:1;;29186:4;;29213;;29233:15;;29035:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28731:546;28676:601;:::o;10204:278::-;10290:7;10325:12;10318:5;10310:28;;;;-1:-1:-1;;;10310:28:0;;;;;;;;:::i;:::-;-1:-1:-1;10349:9:0;10361:5;10365:1;10361;:5;:::i;9237:136::-;9295:7;9322:43;9326:1;9329;9322:43;;;;;;;;;;;;;;;;;:3;:43::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:134;1002:20;;1031:31;1002:20;1031:31;:::i;:::-;934:134;;;:::o;1073:315::-;1141:6;1149;1202:2;1190:9;1181:7;1177:23;1173:32;1170:52;;;1218:1;1215;1208:12;1170:52;1257:9;1244:23;1276:31;1301:5;1276:31;:::i;:::-;1326:5;1378:2;1363:18;;;;1350:32;;-1:-1:-1;;;1073:315:1:o;1585:247::-;1644:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:52;;;1713:1;1710;1703:12;1665:52;1752:9;1739:23;1771:31;1796:5;1771:31;:::i;2072:248::-;2140:6;2148;2201:2;2189:9;2180:7;2176:23;2172:32;2169:52;;;2217:1;2214;2207:12;2169:52;-1:-1:-1;;2240:23:1;;;2310:2;2295:18;;;2282:32;;-1:-1:-1;2072:248:1:o;2325:456::-;2402:6;2410;2418;2471:2;2459:9;2450:7;2446:23;2442:32;2439:52;;;2487:1;2484;2477:12;2439:52;2526:9;2513:23;2545:31;2570:5;2545:31;:::i;:::-;2595:5;-1:-1:-1;2652:2:1;2637:18;;2624:32;2665:33;2624:32;2665:33;:::i;:::-;2325:456;;2717:7;;-1:-1:-1;;;2771:2:1;2756:18;;;;2743:32;;2325:456::o;3183:180::-;3242:6;3295:2;3283:9;3274:7;3270:23;3266:32;3263:52;;;3311:1;3308;3301:12;3263:52;-1:-1:-1;3334:23:1;;3183:180;-1:-1:-1;3183:180:1:o;3368:416::-;3433:6;3441;3494:2;3482:9;3473:7;3469:23;3465:32;3462:52;;;3510:1;3507;3500:12;3462:52;3549:9;3536:23;3568:31;3593:5;3568:31;:::i;:::-;3618:5;-1:-1:-1;3675:2:1;3660:18;;3647:32;3717:15;;3710:23;3698:36;;3688:64;;3748:1;3745;3738:12;3688:64;3771:7;3761:17;;;3368:416;;;;;:::o;3789:388::-;3857:6;3865;3918:2;3906:9;3897:7;3893:23;3889:32;3886:52;;;3934:1;3931;3924:12;3886:52;3973:9;3960:23;3992:31;4017:5;3992:31;:::i;:::-;4042:5;-1:-1:-1;4099:2:1;4084:18;;4071:32;4112:33;4071:32;4112:33;:::i;4182:127::-;4243:10;4238:3;4234:20;4231:1;4224:31;4274:4;4271:1;4264:15;4298:4;4295:1;4288:15;4314:1121;4398:6;4429:2;4472;4460:9;4451:7;4447:23;4443:32;4440:52;;;4488:1;4485;4478:12;4440:52;4528:9;4515:23;4557:18;4598:2;4590:6;4587:14;4584:34;;;4614:1;4611;4604:12;4584:34;4652:6;4641:9;4637:22;4627:32;;4697:7;4690:4;4686:2;4682:13;4678:27;4668:55;;4719:1;4716;4709:12;4668:55;4755:2;4742:16;4777:2;4773;4770:10;4767:36;;;4783:18;;:::i;:::-;4829:2;4826:1;4822:10;4861:2;4855:9;4924:2;4920:7;4915:2;4911;4907:11;4903:25;4895:6;4891:38;4979:6;4967:10;4964:22;4959:2;4947:10;4944:18;4941:46;4938:72;;;4990:18;;:::i;:::-;5026:2;5019:22;5076:18;;;5110:15;;;;-1:-1:-1;5152:11:1;;;5148:20;;;5180:19;;;5177:39;;;5212:1;5209;5202:12;5177:39;5236:11;;;;5256:148;5272:6;5267:3;5264:15;5256:148;;;5338:23;5357:3;5338:23;:::i;:::-;5326:36;;5289:12;;;;5382;;;;5256:148;;;5423:6;4314:1121;-1:-1:-1;;;;;;;;4314:1121:1:o;5440:380::-;5519:1;5515:12;;;;5562;;;5583:61;;5637:4;5629:6;5625:17;5615:27;;5583:61;5690:2;5682:6;5679:14;5659:18;5656:38;5653:161;;;5736:10;5731:3;5727:20;5724:1;5717:31;5771:4;5768:1;5761:15;5799:4;5796:1;5789:15;5653:161;;5440:380;;;:::o;5825:356::-;6027:2;6009:21;;;6046:18;;;6039:30;6105:34;6100:2;6085:18;;6078:62;6172:2;6157:18;;5825:356::o;6186:127::-;6247:10;6242:3;6238:20;6235:1;6228:31;6278:4;6275:1;6268:15;6302:4;6299:1;6292:15;6318:128;6358:3;6389:1;6385:6;6382:1;6379:13;6376:39;;;6395:18;;:::i;:::-;-1:-1:-1;6431:9:1;;6318:128::o;7593:127::-;7654:10;7649:3;7645:20;7642:1;7635:31;7685:4;7682:1;7675:15;7709:4;7706:1;7699:15;7725:135;7764:3;-1:-1:-1;;7785:17:1;;7782:43;;;7805:18;;:::i;:::-;-1:-1:-1;7852:1:1;7841:13;;7725:135::o;9436:401::-;9638:2;9620:21;;;9677:2;9657:18;;;9650:30;9716:34;9711:2;9696:18;;9689:62;-1:-1:-1;;;9782:2:1;9767:18;;9760:35;9827:3;9812:19;;9436:401::o;9842:399::-;10044:2;10026:21;;;10083:2;10063:18;;;10056:30;10122:34;10117:2;10102:18;;10095:62;-1:-1:-1;;;10188:2:1;10173:18;;10166:33;10231:3;10216:19;;9842:399::o;12628:168::-;12668:7;12734:1;12730;12726:6;12722:14;12719:1;12716:21;12711:1;12704:9;12697:17;12693:45;12690:71;;;12741:18;;:::i;:::-;-1:-1:-1;12781:9:1;;12628:168::o;12801:217::-;12841:1;12867;12857:132;;12911:10;12906:3;12902:20;12899:1;12892:31;12946:4;12943:1;12936:15;12974:4;12971:1;12964:15;12857:132;-1:-1:-1;13003:9:1;;12801:217::o;13023:125::-;13063:4;13091:1;13088;13085:8;13082:34;;;13096:18;;:::i;:::-;-1:-1:-1;13133:9:1;;13023:125::o;14167:251::-;14237:6;14290:2;14278:9;14269:7;14265:23;14261:32;14258:52;;;14306:1;14303;14296:12;14258:52;14338:9;14332:16;14357:31;14382:5;14357:31;:::i;14423:980::-;14685:4;14733:3;14722:9;14718:19;14764:6;14753:9;14746:25;14790:2;14828:6;14823:2;14812:9;14808:18;14801:34;14871:3;14866:2;14855:9;14851:18;14844:31;14895:6;14930;14924:13;14961:6;14953;14946:22;14999:3;14988:9;14984:19;14977:26;;15038:2;15030:6;15026:15;15012:29;;15059:1;15069:195;15083:6;15080:1;15077:13;15069:195;;;15148:13;;-1:-1:-1;;;;;15144:39:1;15132:52;;15239:15;;;;15204:12;;;;15180:1;15098:9;15069:195;;;-1:-1:-1;;;;;;;15320:32:1;;;;15315:2;15300:18;;15293:60;-1:-1:-1;;;15384:3:1;15369:19;15362:35;15281:3;14423:980;-1:-1:-1;;;14423:980:1:o

Swarm Source

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