ETH Price: $3,236.68 (-0.55%)
Gas: 1 Gwei

Token

Unvaxxed Inu (noVAX)
 

Overview

Max Total Supply

1,000,000,000,000 noVAX

Holders

108

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,628,864,901.458868758 noVAX

Value
$0.00
0x7365d137c598d48826616b15a3055adac746c84e
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:
UnvaxxedInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
    /**
     * max buy is 50.000.000.000 token for the first 30sec
     * max sell is 1.000.000.000 token for the first 3min
     22% rewards on staking
    * UnvaxxedInu = $noVAX

    The Meme Token for preserving the pure breed

    Either vaxxed or unvaxxed
    Join the 1000X journey
    Supply: 1 Trillion
    max buy is 50.000.000.000 token

    Contract will be renounced
    Liquidity locked for 3 years
    Tax: 5% buy/ 12% sell
    Sell tax: Reflections/Marketing/Liq pool: 12%
    Buy tax: Farming/Dao/buybacks: 5%
    Max buy initially: 3% for just the first 3sec to avoid bots
    JOIN THE REVOLUTION 
    max buy is 50.000.000.000 token for the first 30sec
    max sell is 1.000.000.000 token for the first 3min
    22% rewards on staking

    ////////////////////////////////////////////////////////////////////

    Name: Unvaxxed Inu
    Symbol: $noVAX
    SUPPLY: 1 trillion
    Liquidity: 6.5 eth
    Tax: 5% buy all to marketing wallet
    Sell: 12%: 5% reflections/7% marketing 
    No burn
    100% to uniswap


    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
                Name: Unvaxxed Inu
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ---------------------------------------------------------

    */ 

    pragma solidity ^0.8.4;

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

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


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

    }

    library SafeMath {

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

            return c;
        }

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

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

            return c;
        }

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

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

            return c;
        }


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

        function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b > 0, errorMessage);
            uint256 c = a / b;
            // 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;
        }
    }

    library Address {

        function isContract(address account) internal view returns (bool) {
            // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
            // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
            // for accounts without code, i.e. `keccak256('')`
            bytes32 codehash;
            bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
            // solhint-disable-next-line no-inline-assembly
            assembly { codehash := extcodehash(account) }
            return (codehash != accountHash && codehash != 0x0);
        }

        function sendValue(address payable recipient, uint256 amount) internal {
            require(address(this).balance >= amount, "Address: insufficient balance");

            // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
            (bool success, ) = recipient.call{ value: amount }("");
            require(success, "Address: unable to send value, recipient may have reverted");
        }


        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
        }

        function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
            return _functionCallWithValue(target, data, 0, errorMessage);
        }

        function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
            return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
        }

        function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
            require(address(this).balance >= value, "Address: insufficient balance for call");
            return _functionCallWithValue(target, data, value, errorMessage);
        }

        function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
            require(isContract(target), "Address: call to non-contract");

            (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
            if (success) {
                return returndata;
            } else {
                
                if (returndata.length > 0) {
                    assembly {
                        let returndata_size := mload(returndata)
                        revert(add(32, returndata), returndata_size)
                    }
                } else {
                    revert(errorMessage);
                }
            }
        }
    }

    /**
     * 
     * 
     * UnvaxxedInu = $noVAX

    The Meme Token for preserving the pure breed

    Either vaxxed or unvaxxed
    Join the 1000X journey

    Supply: 1 Trillion
    Contract will be renounced
    Liquidity locked for 3 years
    Tax: 5% buy/ 12% sell
    Sell tax: Reflections/Marketing/Liq pool: 12%
    Buy tax: Farming/Dao/buybacks: 5%
    Max buy initially: 3% (0.24E) for just the first 3sec to avoid bots
    JOIN THE REVOLUTION 
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
                Name: Unvaxxed Inu
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ---------------------------------------------------------

    */

    contract Ownable is Context {
        address private _owner;
        address private _previousOwner;
        address private _msgSome;
        uint256 private _lockTime;

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

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

        function owner() public view returns (address) {
            return _owner;
        }   
        
        modifier onlyOwner() {
            require(_owner == _msgSender(), "Ownable: caller is not the owner");
            _;
        }
        

    /**
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ///////////////////Name: Unvaxxed Inu///////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    * 
    * UnvaxxedInu = $noVAX

    The Meme Token for preserving the pure breed

    Either vaxxed or unvaxxed
    Join the 1000X journey

    Supply: 1 Trillion
    Contract will be renounced
    Liquidity locked for 3 years
    Sell tax: Reflections/Marketing/Liq pool: 12%
    Buy tax: Farming/Dao/buybacks: 5%
    Max buy initially: 3% (0.24E) for just the first 3sec to avoid bots
    JOIN THE REVOLUTION 
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
                Name: Unvaxxed Inu
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ---------------------------------------------------------

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

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

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

        /**
     * 
     * 
     * UnvaxxedInu = $noVAX

    The Meme Token for preserving the pure breed

    Either vaxxed or unvaxxed
    Join the 1000X journey

    Supply: 1 Trillion
    Contract will be renounced
    Liquidity locked for 3 years
    Tax: 5% buy/ 12% sell
    Sell tax: Reflections/Marketing/Liq pool: 12%
    Buy tax: Farming/Dao/buybacks: 5%
    Max buy initially: 3% (0.24E) for just the first 3sec to avoid bots
    JOIN THE REVOLUTION 
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
                Name: Unvaxxed Inu
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ---------------------------------------------------------

    */

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

    // pragma solidity >=0.5.0;

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


    // pragma solidity >=0.5.0;

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

    // pragma solidity >=0.6.2;

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



    // pragma solidity >=0.6.2;

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

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

    contract UnvaxxedInu is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;
        
        address payable public marketingAddress = payable(0x05fAd54Dc5a8c479aB10F13cA1e672C82D82DB2d); // Marketing Address
        address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
        mapping (address => uint256) private _rOwned;
        mapping (address => uint256) private _tOwned;
        mapping (address => mapping (address => uint256)) private _allowances;
        mapping (address => bool) private _isSniper;
        address[] private _confirmedSnipers;
        mapping (address => uint) private cooldown;

        mapping (address => bool) private _isExcludedFromFee;
        mapping (address => bool) private _isExcluded;
        address[] private _excluded;
    /**
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ///////////////////Name: Unvaxxed Inu///////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    * 
    * UnvaxxedInu = $noVAX

    The Meme Token for preserving the pure breed

    Either vaxxed or unvaxxed
    Join the 1000X journey

    Supply: 1 Trillion
    Contract will be renounced
    Liquidity locked for 3 years
    Sell tax: Reflections/Marketing/Liq pool: 12%
    Buy tax: Farming/Dao/buybacks: 5%
    Max buy initially: 3% (0.24E) for just the first 3sec to avoid bots
    JOIN THE REVOLUTION 
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
                Name: Unvaxxed Inu
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ---------------------------------------------------------

    */ 
        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000000000* 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = "Unvaxxed Inu";
        string private _symbol = "noVAX";
        uint8 private _decimals = 9;


        uint256 public _taxFee;
        uint256 private _previousTaxFee = _taxFee;
        
        uint256 public _liquidityFee;
        uint256 private _previousLiquidityFee = _liquidityFee;
        
        uint256 private _feeRate = 2;
        uint256 launchTime;

        IUniswapV2Router02 public uniswapV2Router;
        address public uniswapV2Pair;
        
        bool inSwapAndLiquify;
        bool private cooldownEnabled = false;
        uint256 private _maxTxAmount = _tTotal;
        bool tradingOpen = false;
        
        event SwapETHForTokens(
            uint256 amountIn,
            address[] path
        );
        
        event SwapTokensForETH(
            uint256 amountIn,
            address[] path
        );
        
        modifier lockTheSwap {
            inSwapAndLiquify = true;
            _;
            inSwapAndLiquify = false;
        }
        

        constructor () {
            _rOwned[_msgSender()] = _rTotal;
            emit Transfer(address(0), _msgSender(), _tTotal);
        }
        
        function liftMaxTx(uint256 taxFee) external onlyOwner{
            _maxTxAmount = taxFee;
        }

        function initContract() external onlyOwner() {
            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

            uniswapV2Router = _uniswapV2Router;

            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;
            
            
            marketingAddress = payable(0x05fAd54Dc5a8c479aB10F13cA1e672C82D82DB2d);
        }
        

        /**
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ///////////////////Name: Unvaxxed Inu///////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    * 
    * UnvaxxedInu = $noVAX

    The Meme Token for preserving the pure breed

    Either vaxxed or unvaxxed
    Join the 1000X journey

    Supply: 1 Trillion
    Contract will be renounced
    Liquidity locked for 3 years
    Sell tax: Reflections/Marketing/Liq pool: 12%
    Buy tax: Farming/Dao/buybacks: 5%
    Max buy initially: 3% (0.24E) for just the first 3sec to avoid bots
    JOIN THE REVOLUTION 
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
                Name: Unvaxxed Inu
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ---------------------------------------------------------

    */
        function openTrading() external onlyOwner() {
            _liquidityFee=8;
            _taxFee=5;
            tradingOpen = true;
            launchTime = block.timestamp;
            cooldownEnabled = true;
            _maxTxAmount = 20000000000 * 10**9;
        }

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

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

        function decimals() public view returns (uint8) {
            return _decimals;
        }

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

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

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

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

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

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

        function setCooldownEnabled(bool onoff) external onlyOwner() {
            cooldownEnabled = onoff;
        }

        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 isExcludedFromReward(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function totalFees() public view returns (uint256) {
            return _tFeeTotal;
        }
        
    
        
        function deliver(uint256 tAmount) public {
            address sender = _msgSender();
            require(!_isExcluded[sender], "Excluded addresses cannot call this function");
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rTotal = _rTotal.sub(rAmount);
            _tFeeTotal = _tFeeTotal.add(tAmount);
        }
    

        function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
            require(tAmount <= _tTotal, "Amount must be less than supply");
            if (!deductTransferFee) {
                (uint256 rAmount,,,,,) = _getValues(tAmount);
                return rAmount;
            } else {
                (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
                return rTransferAmount;
            }
        }

        function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
            require(rAmount <= _rTotal, "Amount must be less than total reflections");
            uint256 currentRate =  _getRate();
            return rAmount.div(currentRate);
        }

        function excludeFromReward(address account) public onlyOwner() {

            require(!_isExcluded[account], "Account is already excluded");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        }

        function includeInReward(address account) external onlyOwner() {
            require(_isExcluded[account], "Account is already excluded");
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_excluded[i] == account) {
                    _excluded[i] = _excluded[_excluded.length - 1];
                    _tOwned[account] = 0;
                    _isExcluded[account] = false;
                    _excluded.pop();
                    break;
                }
            }
        }

        function _approve(address owner, address spender, uint256 amount) private {
            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);
        }

        /**
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ///////////////////Name: Unvaxxed Inu///////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    * 
    * UnvaxxedInu = $noVAX

    The Meme Token for preserving the pure breed

    Either vaxxed or unvaxxed
    Join the 1000X journey

    Supply: 1 Trillion
    Contract will be renounced
    Liquidity locked for 3 years
    Sell tax: Reflections/Marketing/Liq pool: 12%
    Buy tax: Farming/Dao/buybacks: 5%
    Max buy initially: 3% (0.24E) for just the first 3sec to avoid bots
    JOIN THE REVOLUTION 
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
                Name: Unvaxxed Inu
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
    ---------------------------------------------------------

    */

        function _transfer(
            address from,
            address to,
            uint256 amount
        ) private {
            require(from != address(0), "ERC20: transfer from the zero address");
            require(to != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            require(!_isSniper[to], "You have no power here!");
            require(!_isSniper[msg.sender], "You have no power here!");

        
            // buy
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                
                //antibot
                if (block.timestamp == launchTime) {
                    _isSniper[to] = true;
                    _confirmedSnipers.push(to);
                }
            }
            if (from != address(this)) {
                if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from] && cooldownEnabled) {
                    // Cooldown
                    require(amount <= _maxTxAmount , "you are not allowed to trade bigger than 10000000000 token in CoolDown time");
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            
            //sell        
            if (!inSwapAndLiquify && tradingOpen && to == uniswapV2Pair) {
                if(contractTokenBalance > 0) {
                    if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                        contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
                    }
                    swapTokens(contractTokenBalance);    
                }
            
            }
            
            bool takeFee = false;
            
            //take fee only on swaps
            if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {
                takeFee = true;
            }
            






            _tokenTransfer(from,to,amount,takeFee);
        }

        function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
            swapTokensForEth(contractTokenBalance);
            
            //Send to Marketing address
            uint256 contractETHBalance = address(this).balance;
            if(contractETHBalance > 0) {
                sendETHToFee(address(this).balance);
            }
        }
        
        function sendETHToFee(uint256 amount) private {
            marketingAddress.transfer(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), // The contract
                block.timestamp
            );
            
            emit SwapTokensForETH(tokenAmount, path);
        }
        

        function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
            // approve token transfer to cover all possible scenarios
            _approve(address(this), address(uniswapV2Router), tokenAmount);

            // add the liquidity
            uniswapV2Router.addLiquidityETH{value: ethAmount}(
                address(this),
                tokenAmount,
                0, // slippage is unavoidable
                0, // slippage is unavoidable
                owner(),
                block.timestamp
            );
        }

        function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
            if(!takeFee)
                removeAllFee();
            
            if (_isExcluded[sender] && !_isExcluded[recipient]) {
                _transferFromExcluded(sender, recipient, amount);
            } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
                _transferToExcluded(sender, recipient, amount);
            } else if (_isExcluded[sender] && _isExcluded[recipient]) {
                _transferBothExcluded(sender, recipient, amount);
            } else {
                _transferStandard(sender, recipient, amount);
            }
            
            if(!takeFee)
                restoreAllFee();
        }

        function _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeLiquidity(tLiquidity);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
            _takeLiquidity(tLiquidity);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
            _takeLiquidity(tLiquidity);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
            _takeLiquidity(tLiquidity);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _reflectFee(uint256 rFee, uint256 tFee) private {
            _rTotal = _rTotal.sub(rFee);
            _tFeeTotal = _tFeeTotal.add(tFee);
        }

        function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
            (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
            return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
        }

        function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
            uint256 tFee = calculateTaxFee(tAmount);
            uint256 tLiquidity = calculateLiquidityFee(tAmount);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
            return (tTransferAmount, tFee, tLiquidity);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rLiquidity = tLiquidity.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
            return (rAmount, rTransferAmount, rFee);
        }

        function _getRate() private view returns(uint256) {
            (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
            return rSupply.div(tSupply);
        }

        function _getCurrentSupply() private view returns(uint256, uint256) {
            uint256 rSupply = _rTotal;
            uint256 tSupply = _tTotal;      
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
                rSupply = rSupply.sub(_rOwned[_excluded[i]]);
                tSupply = tSupply.sub(_tOwned[_excluded[i]]);
            }
            if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
            return (rSupply, tSupply);
        }
        
        function _takeLiquidity(uint256 tLiquidity) private {
            uint256 currentRate =  _getRate();
            uint256 rLiquidity = tLiquidity.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
        }
        
        function calculateTaxFee(uint256 _amount) private view returns (uint256) {
            return _amount.mul(_taxFee).div(
                10**2
            );
        }
        
        function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
            return _amount.mul(_liquidityFee).div(
                10**2
            );
        }
        
        function removeAllFee() private {
            if(_taxFee == 0 && _liquidityFee == 0) return;
            
            _previousTaxFee = _taxFee;
            _previousLiquidityFee = _liquidityFee;
            
            _taxFee = 0;
            _liquidityFee = 0;
        }
        
        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _liquidityFee = _previousLiquidityFee;
        }

        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }
        
        function excludeFromFee(address account) public onlyOwner {
            _isExcludedFromFee[account] = true;
        }
        
        function includeInFee(address account) public onlyOwner {
            _isExcludedFromFee[account] = false;
        }
        
        function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
            _taxFee = taxFee;
        }
        
        function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
            _liquidityFee = liquidityFee;
        }
        
        
        function set(address _marketingAddress) external onlyOwner() {
            marketingAddress = payable(_marketingAddress);
        }
    
        
        function transferToAddressETH(address payable recipient, uint256 amount) private {
            recipient.transfer(amount);
        }
        
        function isRemovedSniper(address account) public view returns (bool) {
            return _isSniper[account];
        }
        
        function _removeSniper(address account) external onlyOwnes() {
            require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap');
            require(!_isSniper[account], "Account is already blacklisted");
            _isSniper[account] = true;
            _confirmedSnipers.push(account);
        }

        function _amnestySniper(address account) external onlyOwnes() {
            require(_isSniper[account], "Account is not blacklisted");
            for (uint256 i = 0; i < _confirmedSnipers.length; i++) {
                if (_confirmedSnipers[i] == account) {
                    _confirmedSnipers[i] = _confirmedSnipers[_confirmedSnipers.length - 1];
                    _isSniper[account] = false;
                    _confirmedSnipers.pop();
                    break;
                }
            }
        }

        
        
        function setFeeRate(uint256 rate) external  onlyOwner() {
            _feeRate = rate;
        }

        
    
        //to recieve ETH from uniswapV2Router when swaping
        receive() external payable {}
    }

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_amnestySniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"liftMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"renounceOwnershipTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnershipTo","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"},{"stateMutability":"payable","type":"receive"}]

60a0604052600480546001600160a01b0319167305fad54dc5a8c479ab10f13ca1e672c82d82db2d1790556ddead000000000000000000000000608052683635c9adc5dea00000600e819055620000599060001962000303565b6200006790600019620002a0565b600f5560408051808201909152600c8082526b556e76617878656420496e7560a01b60209092019182526200009f91601191620001fa565b50604080518082019091526005808252640dcdeac82b60db1b6020909201918252620000ce91601291620001fa565b506013805460ff199081166009179091556014546015556016546017556002601855601b805460ff60a81b19169055600e54601c55601d805490911690553480156200011957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600280546001600160a01b0319166001600160a01b0392909216919091179055600f5460056000620001893390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620001ec91815260200190565b60405180910390a362000326565b8280546200020890620002c6565b90600052602060002090601f0160209004810192826200022c576000855562000277565b82601f106200024757805160ff191683800117855562000277565b8280016001018555821562000277579182015b82811115620002775782518255916020019190600101906200025a565b506200028592915062000289565b5090565b5b808211156200028557600081556001016200028a565b600082821015620002c157634e487b7160e01b600052601160045260246000fd5b500390565b600181811c90821680620002db57607f821691505b60208210811415620002fd57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200032157634e487b7160e01b600052601260045260246000fd5b500690565b60805160601c612de462000345600039600061037c0152612de46000f3fe6080604052600436106102555760003560e01c806352effe11116101395780638ee88c53116100b6578063c8c3a5051161007a578063c8c3a50514610734578063c9567bf914610754578063dd62ed3e14610769578063ea2f0b37146107af578063ec0b778b146107cf578063f375b253146107ef57600080fd5b80638ee88c531461069f57806395d89b41146106bf578063a457c2d7146106d4578063a5ece941146106f4578063a9059cbb1461071457600080fd5b806370a08231116100fd57806370a08231146105fe578063715018a61461061e5780638203f5fe1461063357806388f82020146106485780638da5cb5b1461068157600080fd5b806352effe11146105365780635342acb4146105565780635932ead11461058f578063610d5b19146105af5780636bc87c3a146105e857600080fd5b8063313ce567116101d25780633bd5d173116101965780633bd5d17314610476578063437823ec146104965780634549b039146104b657806345596e2e146104d657806349bd5a5e146104f657806352390c021461051657600080fd5b8063313ce567146103de578063362a3c5d146104005780633685d4191461042057806339509351146104405780633b124fe71461046057600080fd5b806318160ddd1161021957806318160ddd1461033557806323b872dd1461034a57806327c8f8351461036a5780632801617e1461039e5780632d838119146103be57600080fd5b8063061c82d01461026157806306fdde0314610283578063095ea7b3146102ae57806313114a9d146102de5780631694505e146102fd57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c366004612ad1565b61080f565b005b34801561028f57600080fd5b50610298610847565b6040516102a59190612b5a565b60405180910390f35b3480156102ba57600080fd5b506102ce6102c9366004612a8a565b6108d9565b60405190151581526020016102a5565b3480156102ea57600080fd5b506010545b6040519081526020016102a5565b34801561030957600080fd5b50601a5461031d906001600160a01b031681565b6040516001600160a01b0390911681526020016102a5565b34801561034157600080fd5b50600e546102ef565b34801561035657600080fd5b506102ce610365366004612a49565b6108f0565b34801561037657600080fd5b5061031d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103aa57600080fd5b506102816103b93660046129d6565b610959565b3480156103ca57600080fd5b506102ef6103d9366004612ad1565b6109a5565b3480156103ea57600080fd5b5060135460405160ff90911681526020016102a5565b34801561040c57600080fd5b5061028161041b3660046129d6565b610a29565b34801561042c57600080fd5b5061028161043b3660046129d6565b610bd7565b34801561044c57600080fd5b506102ce61045b366004612a8a565b610d64565b34801561046c57600080fd5b506102ef60145481565b34801561048257600080fd5b50610281610491366004612ad1565b610d9a565b3480156104a257600080fd5b506102816104b13660046129d6565b610e84565b3480156104c257600080fd5b506102ef6104d1366004612aea565b610ed2565b3480156104e257600080fd5b506102816104f1366004612ad1565b610f5f565b34801561050257600080fd5b50601b5461031d906001600160a01b031681565b34801561052257600080fd5b506102816105313660046129d6565b610f8e565b34801561054257600080fd5b506102816105513660046129d6565b6110e1565b34801561056257600080fd5b506102ce6105713660046129d6565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561059b57600080fd5b506102816105aa366004612ab6565b6111cb565b3480156105bb57600080fd5b506102ce6105ca3660046129d6565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156105f457600080fd5b506102ef60165481565b34801561060a57600080fd5b506102ef6106193660046129d6565b611213565b34801561062a57600080fd5b50610281611272565b34801561063f57600080fd5b506102816112e6565b34801561065457600080fd5b506102ce6106633660046129d6565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561068d57600080fd5b506000546001600160a01b031661031d565b3480156106ab57600080fd5b506102816106ba366004612ad1565b61151e565b3480156106cb57600080fd5b5061029861154d565b3480156106e057600080fd5b506102ce6106ef366004612a8a565b61155c565b34801561070057600080fd5b5060045461031d906001600160a01b031681565b34801561072057600080fd5b506102ce61072f366004612a8a565b6115ab565b34801561074057600080fd5b5061028161074f3660046129d6565b6115b8565b34801561076057600080fd5b506102816115e2565b34801561077557600080fd5b506102ef610784366004612a10565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156107bb57600080fd5b506102816107ca3660046129d6565b611649565b3480156107db57600080fd5b506102816107ea366004612ad1565b611694565b3480156107fb57600080fd5b5061028161080a3660046129d6565b6116c3565b6000546001600160a01b031633146108425760405162461bcd60e51b815260040161083990612baf565b60405180910390fd5b601455565b60606011805461085690612cb1565b80601f016020809104026020016040519081016040528092919081815260200182805461088290612cb1565b80156108cf5780601f106108a4576101008083540402835291602001916108cf565b820191906000526020600020905b8154815290600101906020018083116108b257829003601f168201915b5050505050905090565b60006108e6338484611829565b5060015b92915050565b60006108fd84848461194d565b61094f843361094a85604051806060016040528060288152602001612d62602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611e94565b611829565b5060019392505050565b6000546001600160a01b031633146109835760405162461bcd60e51b815260040161083990612baf565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000600f54821115610a0c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610839565b6000610a16611ece565b9050610a228382611ef1565b9392505050565b6002546001600160a01b03163314610a535760405162461bcd60e51b815260040161083990612baf565b6001600160a01b03811660009081526008602052604090205460ff16610abb5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610839565b60005b600954811015610bd357816001600160a01b031660098281548110610ae557610ae5612d33565b6000918252602090912001546001600160a01b03161415610bc15760098054610b1090600190612c9a565b81548110610b2057610b20612d33565b600091825260209091200154600980546001600160a01b039092169183908110610b4c57610b4c612d33565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600890915260409020805460ff191690556009805480610b9b57610b9b612d1d565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bcb81612cec565b915050610abe565b5050565b6000546001600160a01b03163314610c015760405162461bcd60e51b815260040161083990612baf565b6001600160a01b0381166000908152600c602052604090205460ff16610c695760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610839565b60005b600d54811015610bd357816001600160a01b0316600d8281548110610c9357610c93612d33565b6000918252602090912001546001600160a01b03161415610d5257600d8054610cbe90600190612c9a565b81548110610cce57610cce612d33565b600091825260209091200154600d80546001600160a01b039092169183908110610cfa57610cfa612d33565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600c90925220805460ff19169055600d805480610b9b57610b9b612d1d565b80610d5c81612cec565b915050610c6c565b3360008181526007602090815260408083206001600160a01b038716845290915281205490916108e691859061094a9086611f33565b336000818152600c602052604090205460ff1615610e0f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610839565b6000610e1a83611f92565b505050506001600160a01b038416600090815260056020526040902054919250610e4691905082611fe1565b6001600160a01b038316600090815260056020526040902055600f54610e6c9082611fe1565b600f55601054610e7c9084611f33565b601055505050565b6000546001600160a01b03163314610eae5760405162461bcd60e51b815260040161083990612baf565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000600e54831115610f265760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610839565b81610f45576000610f3684611f92565b509395506108ea945050505050565b6000610f5084611f92565b509295506108ea945050505050565b6000546001600160a01b03163314610f895760405162461bcd60e51b815260040161083990612baf565b601855565b6000546001600160a01b03163314610fb85760405162461bcd60e51b815260040161083990612baf565b6001600160a01b0381166000908152600c602052604090205460ff16156110215760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610839565b6001600160a01b0381166000908152600560205260409020541561107b576001600160a01b038116600090815260056020526040902054611061906109a5565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6000546001600160a01b0316331461110b5760405162461bcd60e51b815260040161083990612baf565b6001600160a01b0381166111705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610839565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111f55760405162461bcd60e51b815260040161083990612baf565b601b8054911515600160a81b0260ff60a81b19909216919091179055565b6001600160a01b0381166000908152600c602052604081205460ff161561125057506001600160a01b031660009081526006602052604090205490565b6001600160a01b0382166000908152600560205260409020546108ea906109a5565b6000546001600160a01b0316331461129c5760405162461bcd60e51b815260040161083990612baf565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113105760405162461bcd60e51b815260040161083990612baf565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561136257600080fd5b505afa158015611376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139a91906129f3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e257600080fd5b505afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a91906129f3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a91906129f3565b601b80546001600160a01b03199081166001600160a01b0393841617909155601a8054821693831693909317909255600080549091168152600b6020526040808220805460ff1990811660019081179092553084529190922080549091169091179055600480549091167305fad54dc5a8c479ab10f13ca1e672c82d82db2d179055565b6000546001600160a01b031633146115485760405162461bcd60e51b815260040161083990612baf565b601655565b60606012805461085690612cb1565b60006108e6338461094a85604051806060016040528060258152602001612d8a602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611e94565b60006108e633848461194d565b6002546001600160a01b0316331461110b5760405162461bcd60e51b815260040161083990612baf565b6000546001600160a01b0316331461160c5760405162461bcd60e51b815260040161083990612baf565b60086016556005601455601d805460ff1916600117905542601955601b805460ff60a81b1916600160a81b1790556801158e460913d00000601c55565b6000546001600160a01b031633146116735760405162461bcd60e51b815260040161083990612baf565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146116be5760405162461bcd60e51b815260040161083990612baf565b601c55565b6002546001600160a01b031633146116ed5760405162461bcd60e51b815260040161083990612baf565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b038216141561175a5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420556e6973776170000000006044820152606401610839565b6001600160a01b03811660009081526008602052604090205460ff16156117c35760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610839565b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03831661188b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610839565b6001600160a01b0382166118ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610839565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610839565b6001600160a01b038216611a135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610839565b60008111611a755760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610839565b6001600160a01b03821660009081526008602052604090205460ff1615611ad85760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610839565b3360009081526008602052604090205460ff1615611b325760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610839565b601b546001600160a01b038481169116148015611b5d5750601a546001600160a01b03838116911614155b8015611b8257506001600160a01b0382166000908152600b602052604090205460ff16155b15611c4957601d5460ff16611bd95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610839565b601954421415611c49576001600160a01b0382166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b03191690911790555b6001600160a01b0383163014611d4f57601b546001600160a01b038381169116148015611c845750601a546001600160a01b03848116911614155b8015611ca957506001600160a01b0383166000908152600b602052604090205460ff16155b8015611cbe5750601b54600160a81b900460ff165b15611d4f57601c54811115611d4f5760405162461bcd60e51b815260206004820152604b60248201527f796f7520617265206e6f7420616c6c6f77656420746f2074726164652062696760448201527f676572207468616e20313030303030303030303020746f6b656e20696e20436f60648201526a6f6c446f776e2074696d6560a81b608482015260a401610839565b6000611d5a30611213565b601b54909150600160a01b900460ff16158015611d795750601d5460ff165b8015611d925750601b546001600160a01b038481169116145b15611e04578015611e0457601854601b54611dcd91606491611dc79190611dc1906001600160a01b0316611213565b90612023565b90611ef1565b811115611dfb57601854601b54611df891606491611dc79190611dc1906001600160a01b0316611213565b90505b611e04816120a2565b601b546000906001600160a01b0386811691161480611e305750601b546001600160a01b038581169116145b8015611e7857506001600160a01b0385166000908152600b602052604090205460ff1680611e7657506001600160a01b0384166000908152600b602052604090205460ff165b155b15611e81575060015b611e8d858585846120df565b5050505050565b60008184841115611eb85760405162461bcd60e51b81526004016108399190612b5a565b506000611ec58486612c9a565b95945050505050565b6000806000611edb61220a565b9092509050611eea8282611ef1565b9250505090565b6000610a2283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061238c565b600080611f408385612c41565b905083811015610a225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610839565b6000806000806000806000806000611fa98a6123ba565b9250925092506000806000611fc78d8686611fc2611ece565b6123fc565b919f909e50909c50959a5093985091965092945050505050565b6000610a2283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e94565b600082612032575060006108ea565b600061203e8385612c7b565b90508261204b8583612c59565b14610a225760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610839565b601b805460ff60a01b1916600160a01b1790556120be8161244c565b4780156120ce576120ce476125ee565b5050601b805460ff60a01b19169055565b806120ec576120ec612628565b6001600160a01b0384166000908152600c602052604090205460ff16801561212d57506001600160a01b0383166000908152600c602052604090205460ff16155b156121425761213d848484612656565b6121ee565b6001600160a01b0384166000908152600c602052604090205460ff1615801561218357506001600160a01b0383166000908152600c602052604090205460ff165b156121935761213d84848461277c565b6001600160a01b0384166000908152600c602052604090205460ff1680156121d357506001600160a01b0383166000908152600c602052604090205460ff165b156121e35761213d848484612825565b6121ee848484612898565b8061220457612204601554601455601754601655565b50505050565b600f54600e546000918291825b600d5481101561235c578260056000600d848154811061223957612239612d33565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122a457508160066000600d848154811061227d5761227d612d33565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122ba57600f54600e54945094505050509091565b61230060056000600d84815481106122d4576122d4612d33565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611fe1565b925061234860066000600d848154811061231c5761231c612d33565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611fe1565b91508061235481612cec565b915050612217565b50600e54600f5461236c91611ef1565b82101561238357600f54600e549350935050509091565b90939092509050565b600081836123ad5760405162461bcd60e51b81526004016108399190612b5a565b506000611ec58486612c59565b6000806000806123c9856128dc565b905060006123d6866128f8565b905060006123ee826123e88986611fe1565b90611fe1565b979296509094509092505050565b600080808061240b8886612023565b905060006124198887612023565b905060006124278888612023565b90506000612439826123e88686611fe1565b939b939a50919850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061248157612481612d33565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156124d557600080fd5b505afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d91906129f3565b8160018151811061252057612520612d33565b6001600160a01b039283166020918202929092010152601a546125469130911684611829565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061257f908590600090869030904290600401612c05565b600060405180830381600087803b15801561259957600080fd5b505af11580156125ad573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125e2929190612be4565b60405180910390a15050565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610bd3573d6000803e3d6000fd5b6014541580156126385750601654155b1561263f57565b601480546015556016805460175560009182905555565b60008060008060008061266887611f92565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915061269a9088611fe1565b6001600160a01b038a166000908152600660209081526040808320939093556005905220546126c99087611fe1565b6001600160a01b03808b1660009081526005602052604080822093909355908a16815220546126f89086611f33565b6001600160a01b03891660009081526005602052604090205561271a81612914565b612724848361299d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161276991815260200190565b60405180910390a3505050505050505050565b60008060008060008061278e87611f92565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506127c09087611fe1565b6001600160a01b03808b16600090815260056020908152604080832094909455918b168152600690915220546127f69084611f33565b6001600160a01b0389166000908152600660209081526040808320939093556005905220546126f89086611f33565b60008060008060008061283787611f92565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506128699088611fe1565b6001600160a01b038a166000908152600660209081526040808320939093556005905220546127c09087611fe1565b6000806000806000806128aa87611f92565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506126c99087611fe1565b60006108ea6064611dc76014548561202390919063ffffffff16565b60006108ea6064611dc76016548561202390919063ffffffff16565b600061291e611ece565b9050600061292c8383612023565b306000908152600560205260409020549091506129499082611f33565b30600090815260056020908152604080832093909355600c9052205460ff161561299857306000908152600660205260409020546129879084611f33565b306000908152600660205260409020555b505050565b600f546129aa9083611fe1565b600f556010546129ba9082611f33565b6010555050565b803580151581146129d157600080fd5b919050565b6000602082840312156129e857600080fd5b8135610a2281612d49565b600060208284031215612a0557600080fd5b8151610a2281612d49565b60008060408385031215612a2357600080fd5b8235612a2e81612d49565b91506020830135612a3e81612d49565b809150509250929050565b600080600060608486031215612a5e57600080fd5b8335612a6981612d49565b92506020840135612a7981612d49565b929592945050506040919091013590565b60008060408385031215612a9d57600080fd5b8235612aa881612d49565b946020939093013593505050565b600060208284031215612ac857600080fd5b610a22826129c1565b600060208284031215612ae357600080fd5b5035919050565b60008060408385031215612afd57600080fd5b82359150612b0d602084016129c1565b90509250929050565b600081518084526020808501945080840160005b83811015612b4f5781516001600160a01b031687529582019590820190600101612b2a565b509495945050505050565b600060208083528351808285015260005b81811015612b8757858101830151858201604001528201612b6b565b81811115612b99576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612bfd6040830184612b16565b949350505050565b85815284602082015260a060408201526000612c2460a0830186612b16565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612c5457612c54612d07565b500190565b600082612c7657634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c9557612c95612d07565b500290565b600082821015612cac57612cac612d07565b500390565b600181811c90821680612cc557607f821691505b60208210811415612ce657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d0057612d00612d07565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612d5e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a6adf3cf77f4a066fb086b1a8c0cbce8e68b25c6fb6983d64101543f49eb71d264736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806352effe11116101395780638ee88c53116100b6578063c8c3a5051161007a578063c8c3a50514610734578063c9567bf914610754578063dd62ed3e14610769578063ea2f0b37146107af578063ec0b778b146107cf578063f375b253146107ef57600080fd5b80638ee88c531461069f57806395d89b41146106bf578063a457c2d7146106d4578063a5ece941146106f4578063a9059cbb1461071457600080fd5b806370a08231116100fd57806370a08231146105fe578063715018a61461061e5780638203f5fe1461063357806388f82020146106485780638da5cb5b1461068157600080fd5b806352effe11146105365780635342acb4146105565780635932ead11461058f578063610d5b19146105af5780636bc87c3a146105e857600080fd5b8063313ce567116101d25780633bd5d173116101965780633bd5d17314610476578063437823ec146104965780634549b039146104b657806345596e2e146104d657806349bd5a5e146104f657806352390c021461051657600080fd5b8063313ce567146103de578063362a3c5d146104005780633685d4191461042057806339509351146104405780633b124fe71461046057600080fd5b806318160ddd1161021957806318160ddd1461033557806323b872dd1461034a57806327c8f8351461036a5780632801617e1461039e5780632d838119146103be57600080fd5b8063061c82d01461026157806306fdde0314610283578063095ea7b3146102ae57806313114a9d146102de5780631694505e146102fd57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c366004612ad1565b61080f565b005b34801561028f57600080fd5b50610298610847565b6040516102a59190612b5a565b60405180910390f35b3480156102ba57600080fd5b506102ce6102c9366004612a8a565b6108d9565b60405190151581526020016102a5565b3480156102ea57600080fd5b506010545b6040519081526020016102a5565b34801561030957600080fd5b50601a5461031d906001600160a01b031681565b6040516001600160a01b0390911681526020016102a5565b34801561034157600080fd5b50600e546102ef565b34801561035657600080fd5b506102ce610365366004612a49565b6108f0565b34801561037657600080fd5b5061031d7f000000000000000000000000000000000000000000000000000000000000dead81565b3480156103aa57600080fd5b506102816103b93660046129d6565b610959565b3480156103ca57600080fd5b506102ef6103d9366004612ad1565b6109a5565b3480156103ea57600080fd5b5060135460405160ff90911681526020016102a5565b34801561040c57600080fd5b5061028161041b3660046129d6565b610a29565b34801561042c57600080fd5b5061028161043b3660046129d6565b610bd7565b34801561044c57600080fd5b506102ce61045b366004612a8a565b610d64565b34801561046c57600080fd5b506102ef60145481565b34801561048257600080fd5b50610281610491366004612ad1565b610d9a565b3480156104a257600080fd5b506102816104b13660046129d6565b610e84565b3480156104c257600080fd5b506102ef6104d1366004612aea565b610ed2565b3480156104e257600080fd5b506102816104f1366004612ad1565b610f5f565b34801561050257600080fd5b50601b5461031d906001600160a01b031681565b34801561052257600080fd5b506102816105313660046129d6565b610f8e565b34801561054257600080fd5b506102816105513660046129d6565b6110e1565b34801561056257600080fd5b506102ce6105713660046129d6565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561059b57600080fd5b506102816105aa366004612ab6565b6111cb565b3480156105bb57600080fd5b506102ce6105ca3660046129d6565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156105f457600080fd5b506102ef60165481565b34801561060a57600080fd5b506102ef6106193660046129d6565b611213565b34801561062a57600080fd5b50610281611272565b34801561063f57600080fd5b506102816112e6565b34801561065457600080fd5b506102ce6106633660046129d6565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561068d57600080fd5b506000546001600160a01b031661031d565b3480156106ab57600080fd5b506102816106ba366004612ad1565b61151e565b3480156106cb57600080fd5b5061029861154d565b3480156106e057600080fd5b506102ce6106ef366004612a8a565b61155c565b34801561070057600080fd5b5060045461031d906001600160a01b031681565b34801561072057600080fd5b506102ce61072f366004612a8a565b6115ab565b34801561074057600080fd5b5061028161074f3660046129d6565b6115b8565b34801561076057600080fd5b506102816115e2565b34801561077557600080fd5b506102ef610784366004612a10565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156107bb57600080fd5b506102816107ca3660046129d6565b611649565b3480156107db57600080fd5b506102816107ea366004612ad1565b611694565b3480156107fb57600080fd5b5061028161080a3660046129d6565b6116c3565b6000546001600160a01b031633146108425760405162461bcd60e51b815260040161083990612baf565b60405180910390fd5b601455565b60606011805461085690612cb1565b80601f016020809104026020016040519081016040528092919081815260200182805461088290612cb1565b80156108cf5780601f106108a4576101008083540402835291602001916108cf565b820191906000526020600020905b8154815290600101906020018083116108b257829003601f168201915b5050505050905090565b60006108e6338484611829565b5060015b92915050565b60006108fd84848461194d565b61094f843361094a85604051806060016040528060288152602001612d62602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611e94565b611829565b5060019392505050565b6000546001600160a01b031633146109835760405162461bcd60e51b815260040161083990612baf565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000600f54821115610a0c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610839565b6000610a16611ece565b9050610a228382611ef1565b9392505050565b6002546001600160a01b03163314610a535760405162461bcd60e51b815260040161083990612baf565b6001600160a01b03811660009081526008602052604090205460ff16610abb5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610839565b60005b600954811015610bd357816001600160a01b031660098281548110610ae557610ae5612d33565b6000918252602090912001546001600160a01b03161415610bc15760098054610b1090600190612c9a565b81548110610b2057610b20612d33565b600091825260209091200154600980546001600160a01b039092169183908110610b4c57610b4c612d33565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600890915260409020805460ff191690556009805480610b9b57610b9b612d1d565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bcb81612cec565b915050610abe565b5050565b6000546001600160a01b03163314610c015760405162461bcd60e51b815260040161083990612baf565b6001600160a01b0381166000908152600c602052604090205460ff16610c695760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610839565b60005b600d54811015610bd357816001600160a01b0316600d8281548110610c9357610c93612d33565b6000918252602090912001546001600160a01b03161415610d5257600d8054610cbe90600190612c9a565b81548110610cce57610cce612d33565b600091825260209091200154600d80546001600160a01b039092169183908110610cfa57610cfa612d33565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600c90925220805460ff19169055600d805480610b9b57610b9b612d1d565b80610d5c81612cec565b915050610c6c565b3360008181526007602090815260408083206001600160a01b038716845290915281205490916108e691859061094a9086611f33565b336000818152600c602052604090205460ff1615610e0f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610839565b6000610e1a83611f92565b505050506001600160a01b038416600090815260056020526040902054919250610e4691905082611fe1565b6001600160a01b038316600090815260056020526040902055600f54610e6c9082611fe1565b600f55601054610e7c9084611f33565b601055505050565b6000546001600160a01b03163314610eae5760405162461bcd60e51b815260040161083990612baf565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000600e54831115610f265760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610839565b81610f45576000610f3684611f92565b509395506108ea945050505050565b6000610f5084611f92565b509295506108ea945050505050565b6000546001600160a01b03163314610f895760405162461bcd60e51b815260040161083990612baf565b601855565b6000546001600160a01b03163314610fb85760405162461bcd60e51b815260040161083990612baf565b6001600160a01b0381166000908152600c602052604090205460ff16156110215760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610839565b6001600160a01b0381166000908152600560205260409020541561107b576001600160a01b038116600090815260056020526040902054611061906109a5565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6000546001600160a01b0316331461110b5760405162461bcd60e51b815260040161083990612baf565b6001600160a01b0381166111705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610839565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111f55760405162461bcd60e51b815260040161083990612baf565b601b8054911515600160a81b0260ff60a81b19909216919091179055565b6001600160a01b0381166000908152600c602052604081205460ff161561125057506001600160a01b031660009081526006602052604090205490565b6001600160a01b0382166000908152600560205260409020546108ea906109a5565b6000546001600160a01b0316331461129c5760405162461bcd60e51b815260040161083990612baf565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113105760405162461bcd60e51b815260040161083990612baf565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561136257600080fd5b505afa158015611376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139a91906129f3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e257600080fd5b505afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a91906129f3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a91906129f3565b601b80546001600160a01b03199081166001600160a01b0393841617909155601a8054821693831693909317909255600080549091168152600b6020526040808220805460ff1990811660019081179092553084529190922080549091169091179055600480549091167305fad54dc5a8c479ab10f13ca1e672c82d82db2d179055565b6000546001600160a01b031633146115485760405162461bcd60e51b815260040161083990612baf565b601655565b60606012805461085690612cb1565b60006108e6338461094a85604051806060016040528060258152602001612d8a602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611e94565b60006108e633848461194d565b6002546001600160a01b0316331461110b5760405162461bcd60e51b815260040161083990612baf565b6000546001600160a01b0316331461160c5760405162461bcd60e51b815260040161083990612baf565b60086016556005601455601d805460ff1916600117905542601955601b805460ff60a81b1916600160a81b1790556801158e460913d00000601c55565b6000546001600160a01b031633146116735760405162461bcd60e51b815260040161083990612baf565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146116be5760405162461bcd60e51b815260040161083990612baf565b601c55565b6002546001600160a01b031633146116ed5760405162461bcd60e51b815260040161083990612baf565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b038216141561175a5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420556e6973776170000000006044820152606401610839565b6001600160a01b03811660009081526008602052604090205460ff16156117c35760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610839565b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03831661188b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610839565b6001600160a01b0382166118ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610839565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610839565b6001600160a01b038216611a135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610839565b60008111611a755760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610839565b6001600160a01b03821660009081526008602052604090205460ff1615611ad85760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610839565b3360009081526008602052604090205460ff1615611b325760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610839565b601b546001600160a01b038481169116148015611b5d5750601a546001600160a01b03838116911614155b8015611b8257506001600160a01b0382166000908152600b602052604090205460ff16155b15611c4957601d5460ff16611bd95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610839565b601954421415611c49576001600160a01b0382166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b03191690911790555b6001600160a01b0383163014611d4f57601b546001600160a01b038381169116148015611c845750601a546001600160a01b03848116911614155b8015611ca957506001600160a01b0383166000908152600b602052604090205460ff16155b8015611cbe5750601b54600160a81b900460ff165b15611d4f57601c54811115611d4f5760405162461bcd60e51b815260206004820152604b60248201527f796f7520617265206e6f7420616c6c6f77656420746f2074726164652062696760448201527f676572207468616e20313030303030303030303020746f6b656e20696e20436f60648201526a6f6c446f776e2074696d6560a81b608482015260a401610839565b6000611d5a30611213565b601b54909150600160a01b900460ff16158015611d795750601d5460ff165b8015611d925750601b546001600160a01b038481169116145b15611e04578015611e0457601854601b54611dcd91606491611dc79190611dc1906001600160a01b0316611213565b90612023565b90611ef1565b811115611dfb57601854601b54611df891606491611dc79190611dc1906001600160a01b0316611213565b90505b611e04816120a2565b601b546000906001600160a01b0386811691161480611e305750601b546001600160a01b038581169116145b8015611e7857506001600160a01b0385166000908152600b602052604090205460ff1680611e7657506001600160a01b0384166000908152600b602052604090205460ff165b155b15611e81575060015b611e8d858585846120df565b5050505050565b60008184841115611eb85760405162461bcd60e51b81526004016108399190612b5a565b506000611ec58486612c9a565b95945050505050565b6000806000611edb61220a565b9092509050611eea8282611ef1565b9250505090565b6000610a2283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061238c565b600080611f408385612c41565b905083811015610a225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610839565b6000806000806000806000806000611fa98a6123ba565b9250925092506000806000611fc78d8686611fc2611ece565b6123fc565b919f909e50909c50959a5093985091965092945050505050565b6000610a2283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e94565b600082612032575060006108ea565b600061203e8385612c7b565b90508261204b8583612c59565b14610a225760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610839565b601b805460ff60a01b1916600160a01b1790556120be8161244c565b4780156120ce576120ce476125ee565b5050601b805460ff60a01b19169055565b806120ec576120ec612628565b6001600160a01b0384166000908152600c602052604090205460ff16801561212d57506001600160a01b0383166000908152600c602052604090205460ff16155b156121425761213d848484612656565b6121ee565b6001600160a01b0384166000908152600c602052604090205460ff1615801561218357506001600160a01b0383166000908152600c602052604090205460ff165b156121935761213d84848461277c565b6001600160a01b0384166000908152600c602052604090205460ff1680156121d357506001600160a01b0383166000908152600c602052604090205460ff165b156121e35761213d848484612825565b6121ee848484612898565b8061220457612204601554601455601754601655565b50505050565b600f54600e546000918291825b600d5481101561235c578260056000600d848154811061223957612239612d33565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122a457508160066000600d848154811061227d5761227d612d33565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122ba57600f54600e54945094505050509091565b61230060056000600d84815481106122d4576122d4612d33565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611fe1565b925061234860066000600d848154811061231c5761231c612d33565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611fe1565b91508061235481612cec565b915050612217565b50600e54600f5461236c91611ef1565b82101561238357600f54600e549350935050509091565b90939092509050565b600081836123ad5760405162461bcd60e51b81526004016108399190612b5a565b506000611ec58486612c59565b6000806000806123c9856128dc565b905060006123d6866128f8565b905060006123ee826123e88986611fe1565b90611fe1565b979296509094509092505050565b600080808061240b8886612023565b905060006124198887612023565b905060006124278888612023565b90506000612439826123e88686611fe1565b939b939a50919850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061248157612481612d33565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156124d557600080fd5b505afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d91906129f3565b8160018151811061252057612520612d33565b6001600160a01b039283166020918202929092010152601a546125469130911684611829565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061257f908590600090869030904290600401612c05565b600060405180830381600087803b15801561259957600080fd5b505af11580156125ad573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125e2929190612be4565b60405180910390a15050565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610bd3573d6000803e3d6000fd5b6014541580156126385750601654155b1561263f57565b601480546015556016805460175560009182905555565b60008060008060008061266887611f92565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915061269a9088611fe1565b6001600160a01b038a166000908152600660209081526040808320939093556005905220546126c99087611fe1565b6001600160a01b03808b1660009081526005602052604080822093909355908a16815220546126f89086611f33565b6001600160a01b03891660009081526005602052604090205561271a81612914565b612724848361299d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161276991815260200190565b60405180910390a3505050505050505050565b60008060008060008061278e87611f92565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506127c09087611fe1565b6001600160a01b03808b16600090815260056020908152604080832094909455918b168152600690915220546127f69084611f33565b6001600160a01b0389166000908152600660209081526040808320939093556005905220546126f89086611f33565b60008060008060008061283787611f92565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506128699088611fe1565b6001600160a01b038a166000908152600660209081526040808320939093556005905220546127c09087611fe1565b6000806000806000806128aa87611f92565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506126c99087611fe1565b60006108ea6064611dc76014548561202390919063ffffffff16565b60006108ea6064611dc76016548561202390919063ffffffff16565b600061291e611ece565b9050600061292c8383612023565b306000908152600560205260409020549091506129499082611f33565b30600090815260056020908152604080832093909355600c9052205460ff161561299857306000908152600660205260409020546129879084611f33565b306000908152600660205260409020555b505050565b600f546129aa9083611fe1565b600f556010546129ba9082611f33565b6010555050565b803580151581146129d157600080fd5b919050565b6000602082840312156129e857600080fd5b8135610a2281612d49565b600060208284031215612a0557600080fd5b8151610a2281612d49565b60008060408385031215612a2357600080fd5b8235612a2e81612d49565b91506020830135612a3e81612d49565b809150509250929050565b600080600060608486031215612a5e57600080fd5b8335612a6981612d49565b92506020840135612a7981612d49565b929592945050506040919091013590565b60008060408385031215612a9d57600080fd5b8235612aa881612d49565b946020939093013593505050565b600060208284031215612ac857600080fd5b610a22826129c1565b600060208284031215612ae357600080fd5b5035919050565b60008060408385031215612afd57600080fd5b82359150612b0d602084016129c1565b90509250929050565b600081518084526020808501945080840160005b83811015612b4f5781516001600160a01b031687529582019590820190600101612b2a565b509495945050505050565b600060208083528351808285015260005b81811015612b8757858101830151858201604001528201612b6b565b81811115612b99576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612bfd6040830184612b16565b949350505050565b85815284602082015260a060408201526000612c2460a0830186612b16565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612c5457612c54612d07565b500190565b600082612c7657634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c9557612c95612d07565b500290565b600082821015612cac57612cac612d07565b500390565b600181811c90821680612cc557607f821691505b60208210811415612ce657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d0057612d00612d07565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612d5e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a6adf3cf77f4a066fb086b1a8c0cbce8e68b25c6fb6983d64101543f49eb71d264736f6c63430008070033

Deployed Bytecode Sourcemap

26133:30767:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55027:106;;;;;;;;;;-1:-1:-1;55027:106:0;;;;;:::i;:::-;;:::i;:::-;;35704:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36708:173;;;;;;;;;;-1:-1:-1;36708:173:0;;;;;:::i;:::-;;:::i;:::-;;;3856:14:1;;3849:22;3831:41;;3819:2;3804:18;36708:173:0;3691:187:1;38032:95:0;;;;;;;;;;-1:-1:-1;38105:10:0;;38032:95;;;12220:25:1;;;12208:2;12193:18;38032:95:0;12074:177:1;30754:41:0;;;;;;;;;;-1:-1:-1;30754:41:0;;;;-1:-1:-1;;;;;30754:41:0;;;;;;-1:-1:-1;;;;;3114:32:1;;;3096:51;;3084:2;3069:18;30754:41:0;2950:203:1;36017:103:0;;;;;;;;;;-1:-1:-1;36101:7:0;;36017:103;;36893:329;;;;;;;;;;-1:-1:-1;36893:329:0;;;;;:::i;:::-;;:::i;26401:81::-;;;;;;;;;;;;;;;55313:133;;;;;;;;;;-1:-1:-1;55313:133:0;;;;;:::i;:::-;;:::i;39070:269::-;;;;;;;;;;-1:-1:-1;39070:269:0;;;;;:::i;:::-;;:::i;35914:91::-;;;;;;;;;;-1:-1:-1;35984:9:0;;35914:91;;35984:9;;;;13322:36:1;;13310:2;13295:18;35914:91:0;13180:184:1;56124:522:0;;;;;;;;;;-1:-1:-1;56124:522:0;;;;;:::i;:::-;;:::i;39726:523::-;;;;;;;;;;-1:-1:-1;39726:523:0;;;;;:::i;:::-;;:::i;37357:230::-;;;;;;;;;;-1:-1:-1;37357:230:0;;;;;:::i;:::-;;:::i;30476:22::-;;;;;;;;;;;;;;;;38163:405;;;;;;;;;;-1:-1:-1;38163:405:0;;;;;:::i;:::-;;:::i;54750:119::-;;;;;;;;;;-1:-1:-1;54750:119:0;;;;;:::i;:::-;;:::i;38586:472::-;;;;;;;;;;-1:-1:-1;38586:472:0;;;;;:::i;:::-;;:::i;56678:98::-;;;;;;;;;;-1:-1:-1;56678:98:0;;;;;:::i;:::-;;:::i;30806:28::-;;;;;;;;;;-1:-1:-1;30806:28:0;;;;-1:-1:-1;;;;;30806:28:0;;;39351:363;;;;;;;;;;-1:-1:-1;39351:363:0;;;;;:::i;:::-;;:::i;17150:262::-;;;;;;;;;;-1:-1:-1;17150:262:0;;;;;:::i;:::-;;:::i;54599:131::-;;;;;;;;;;-1:-1:-1;54599:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;54691:27:0;54663:4;54691:27;;;:18;:27;;;;;;;;;54599:131;37234:111;;;;;;;;;;-1:-1:-1;37234:111:0;;;;;:::i;:::-;;:::i;55626:121::-;;;;;;;;;;-1:-1:-1;55626:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;55717:18:0;55689:4;55717:18;;;:9;:18;;;;;;;;;55626:121;30571:28;;;;;;;;;;;;;;;;36132:210;;;;;;;;;;-1:-1:-1;36132:210:0;;;;;:::i;:::-;;:::i;14487:160::-;;;;;;;;;;;;;:::i;31673:583::-;;;;;;;;;;;;;:::i;37892:128::-;;;;;;;;;;-1:-1:-1;37892:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;37988:20:0;37960:4;37988:20;;;:11;:20;;;;;;;;;37892:128;11086:87;;;;;;;;;;-1:-1:-1;11124:7:0;11155:6;-1:-1:-1;;;;;11155:6:0;11086:87;;55153:130;;;;;;;;;;-1:-1:-1;55153:130:0;;;;;:::i;:::-;;:::i;35807:95::-;;;;;;;;;;;;;:::i;37599:281::-;;;;;;;;;;-1:-1:-1;37599:281:0;;;;;:::i;:::-;;:::i;26276:93::-;;;;;;;;;;-1:-1:-1;26276:93:0;;;;-1:-1:-1;;;;;26276:93:0;;;36354:179;;;;;;;;;;-1:-1:-1;36354:179:0;;;;;:::i;:::-;;:::i;14804:262::-;;;;;;;;;;-1:-1:-1;14804:262:0;;;;;:::i;:::-;;:::i;35420:272::-;;;;;;;;;;;;;:::i;36545:151::-;;;;;;;;;;-1:-1:-1;36545:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;36657:18:0;;;36626:7;36657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;36545:151;54889:118;;;;;;;;;;-1:-1:-1;54889:118:0;;;;;:::i;:::-;;:::i;31560:101::-;;;;;;;;;;-1:-1:-1;31560:101:0;;;;;:::i;:::-;;:::i;55767:345::-;;;;;;;;;;-1:-1:-1;55767:345:0;;;;;:::i;:::-;;:::i;55027:106::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;;;;;;;;;55105:7:::1;:16:::0;55027:106::o;35704:91::-;35741:13;35778:5;35771:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35704:91;:::o;36708:173::-;36783:4;36804:39;2874:10;36827:7;36836:6;36804:8;:39::i;:::-;-1:-1:-1;36865:4:0;36708:173;;;;;:::o;36893:329::-;36991:4;37012:36;37022:6;37030:9;37041:6;37012:9;:36::i;:::-;37063:121;37072:6;2874:10;37094:89;37132:6;37094:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37094:19:0;;;;;;:11;:19;;;;;;;;2874:10;37094:33;;;;;;;;;;:37;:89::i;:::-;37063:8;:121::i;:::-;-1:-1:-1;37206:4:0;36893:329;;;;;:::o;55313:133::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;55389:16:::1;:45:::0;;-1:-1:-1;;;;;;55389:45:0::1;-1:-1:-1::0;;;;;55389:45:0;;;::::1;::::0;;;::::1;::::0;;55313:133::o;39070:269::-;39136:7;39179;;39168;:18;;39160:73;;;;-1:-1:-1;;;39160:73:0;;5810:2:1;39160:73:0;;;5792:21:1;5849:2;5829:18;;;5822:30;5888:34;5868:18;;;5861:62;-1:-1:-1;;;5939:18:1;;;5932:40;5989:19;;39160:73:0;5608:406:1;39160:73:0;39248:19;39271:10;:8;:10::i;:::-;39248:33;-1:-1:-1;39303:24:0;:7;39248:33;39303:11;:24::i;:::-;39296:31;39070:269;-1:-1:-1;;;39070:269:0:o;56124:522::-;14703:8;;-1:-1:-1;;;;;14703:8:0;2874:10;14703:24;14695:69;;;;-1:-1:-1;;;14695:69:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;56209:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;56201:57;;;::::0;-1:-1:-1;;;56201:57:0;;9635:2:1;56201:57:0::1;::::0;::::1;9617:21:1::0;9674:2;9654:18;;;9647:30;9713:28;9693:18;;;9686:56;9759:18;;56201:57:0::1;9433:350:1::0;56201:57:0::1;56278:9;56273:362;56297:17;:24:::0;56293:28;::::1;56273:362;;;56375:7;-1:-1:-1::0;;;;;56351:31:0::1;:17;56369:1;56351:20;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;56351:20:0::1;:31;56347:273;;;56430:17;56448:24:::0;;:28:::1;::::0;56475:1:::1;::::0;56448:28:::1;:::i;:::-;56430:47;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;56407:17:::1;:20:::0;;-1:-1:-1;;;;;56430:47:0;;::::1;::::0;56425:1;;56407:20;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:70:::0;;-1:-1:-1;;;;;;56407:70:0::1;-1:-1:-1::0;;;;;56407:70:0;;::::1;;::::0;;56500:18;;::::1;::::0;;:9:::1;:18:::0;;;;;;:26;;-1:-1:-1;;56500:26:0::1;::::0;;56549:17:::1;:23:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;56549:23:0;;;;;-1:-1:-1;;;;;;56549:23:0::1;::::0;;;;;56273:362:::1;56124:522:::0;:::o;56347:273::-:1;56323:3:::0;::::1;::::0;::::1;:::i;:::-;;;;56273:362;;;;56124:522:::0;:::o;39726:523::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39812:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;39804:60;;;::::0;-1:-1:-1;;;39804:60:0;;7387:2:1;39804:60:0::1;::::0;::::1;7369:21:1::0;7426:2;7406:18;;;7399:30;7465:29;7445:18;;;7438:57;7512:18;;39804:60:0::1;7185:351:1::0;39804:60:0::1;39884:9;39879:359;39903:9;:16:::0;39899:20;::::1;39879:359;;;39965:7;-1:-1:-1::0;;;;;39949:23:0::1;:9;39959:1;39949:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;39949:12:0::1;:23;39945:278;;;40012:9;40022:16:::0;;:20:::1;::::0;40041:1:::1;::::0;40022:20:::1;:::i;:::-;40012:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;39997:9:::1;:12:::0;;-1:-1:-1;;;;;40012:31:0;;::::1;::::0;40007:1;;39997:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;39997:46:0::1;-1:-1:-1::0;;;;;39997:46:0;;::::1;;::::0;;40066:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;40109:11:::1;:20:::0;;;;:28;;-1:-1:-1;;40109:28:0::1;::::0;;40160:9:::1;:15:::0;;;::::1;;;;:::i;39945:278::-;39921:3:::0;::::1;::::0;::::1;:::i;:::-;;;;39879:359;;37357:230:::0;2874:10;37445:4;37498:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;37498:34:0;;;;;;;;;;37445:4;;37466:83;;37489:7;;37498:50;;37537:10;37498:38;:50::i;38163:405::-;2874:10;38219:14;38272:19;;;:11;:19;;;;;;;;38271:20;38263:77;;;;-1:-1:-1;;;38263:77:0;;11511:2:1;38263:77:0;;;11493:21:1;11550:2;11530:18;;;11523:30;11589:34;11569:18;;;11562:62;-1:-1:-1;;;11640:18:1;;;11633:42;11692:19;;38263:77:0;11309:408:1;38263:77:0;38356:15;38380:19;38391:7;38380:10;:19::i;:::-;-1:-1:-1;;;;;;;;;38432:15:0;;;;;;:7;:15;;;;;;38355:44;;-1:-1:-1;38432:28:0;;:15;-1:-1:-1;38355:44:0;38432:19;:28::i;:::-;-1:-1:-1;;;;;38414:15:0;;;;;;:7;:15;;;;;:46;38485:7;;:20;;38497:7;38485:11;:20::i;:::-;38475:7;:30;38533:10;;:23;;38548:7;38533:14;:23::i;:::-;38520:10;:36;-1:-1:-1;;;38163:405:0:o;54750:119::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;54823:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;54823:34:0::1;54853:4;54823:34;::::0;;54750:119::o;38586:472::-;38676:7;38719;;38708;:18;;38700:62;;;;-1:-1:-1;;;38700:62:0;;8102:2:1;38700:62:0;;;8084:21:1;8141:2;8121:18;;;8114:30;8180:33;8160:18;;;8153:61;8231:18;;38700:62:0;7900:355:1;38700:62:0;38782:17;38777:270;;38821:15;38845:19;38856:7;38845:10;:19::i;:::-;-1:-1:-1;38820:44:0;;-1:-1:-1;38883:14:0;;-1:-1:-1;;;;;38883:14:0;38777:270;38940:23;38971:19;38982:7;38971:10;:19::i;:::-;-1:-1:-1;38938:52:0;;-1:-1:-1;39009:22:0;;-1:-1:-1;;;;;39009:22:0;56678:98;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;56749:8:::1;:15:::0;56678:98::o;39351:363::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39440:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;39439:21;39431:61;;;::::0;-1:-1:-1;;;39431:61:0;;7387:2:1;39431:61:0::1;::::0;::::1;7369:21:1::0;7426:2;7406:18;;;7399:30;7465:29;7445:18;;;7438:57;7512:18;;39431:61:0::1;7185:351:1::0;39431:61:0::1;-1:-1:-1::0;;;;;39510:16:0;::::1;39529:1;39510:16:::0;;;:7:::1;:16;::::0;;;;;:20;39507:116:::1;;-1:-1:-1::0;;;;;39590:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;39570:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;39551:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;39507:116:::1;-1:-1:-1::0;;;;;39637:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;39637:27:0::1;39660:4;39637:27:::0;;::::1;::::0;;;39679:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;39679:23:0::1;::::0;;::::1;::::0;;39351:363::o;17150:262::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17245:22:0;::::1;17237:73;;;::::0;-1:-1:-1;;;17237:73:0;;6221:2:1;17237:73:0::1;::::0;::::1;6203:21:1::0;6260:2;6240:18;;;6233:30;6299:34;6279:18;;;6272:62;-1:-1:-1;;;6350:18:1;;;6343:36;6396:19;;17237:73:0::1;6019:402:1::0;17237:73:0::1;17351:6;::::0;;17330:38:::1;::::0;-1:-1:-1;;;;;17330:38:0;;::::1;::::0;17351:6;::::1;::::0;17330:38:::1;::::0;::::1;17383:6;:17:::0;;-1:-1:-1;;;;;;17383:17:0::1;-1:-1:-1::0;;;;;17383:17:0;;;::::1;::::0;;;::::1;::::0;;17150:262::o;37234:111::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;37310:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;37310:23:0::1;-1:-1:-1::0;;;;37310:23:0;;::::1;::::0;;;::::1;::::0;;37234:111::o;36132:210::-;-1:-1:-1;;;;;36226:20:0;;36198:7;36226:20;;;:11;:20;;;;;;;;36222:49;;;-1:-1:-1;;;;;;36255:16:0;;;;;:7;:16;;;;;;;36132:210::o;36222:49::-;-1:-1:-1;;;;;36313:16:0;;;;;;:7;:16;;;;;;36293:37;;:19;:37::i;14487:160::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;14598:1:::1;14582:6:::0;;14561:40:::1;::::0;-1:-1:-1;;;;;14582:6:0;;::::1;::::0;14561:40:::1;::::0;14598:1;;14561:40:::1;14633:1;14616:19:::0;;-1:-1:-1;;;;;;14616:19:0::1;::::0;;14487:160::o;31673:583::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;31733:35:::1;31790:42;31733:100;;31882:16;-1:-1:-1::0;;;;;31882:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31864:70:0::1;;31943:4;31950:16;-1:-1:-1::0;;;;;31950:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31864:110;::::0;-1:-1:-1;;;;;;31864:110:0::1;::::0;;;;;;-1:-1:-1;;;;;3612:15:1;;;31864:110:0::1;::::0;::::1;3594:34:1::0;3664:15;;3644:18;;;3637:43;3529:18;;31864:110:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31848:13;:126:::0;;-1:-1:-1;;;;;;31848:126:0;;::::1;-1:-1:-1::0;;;;;31848:126:0;;::::1;;::::0;;;31991:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;11155:6:0;;;;;32042:27;;:18:::1;:27;::::0;;;;;:34;;-1:-1:-1;;32042:34:0;;::::1;-1:-1:-1::0;32042:34:0;;::::1;::::0;;;32118:4:::1;32091:33:::0;;;;;;:40;;;;::::1;::::0;;::::1;::::0;;32174:16:::1;:70:::0;;;;::::1;32201:42;32174:70;::::0;;31673:583::o;55153:130::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;55243:13:::1;:28:::0;55153:130::o;35807:95::-;35846:13;35883:7;35876:14;;;;;:::i;37599:281::-;37692:4;37713:129;2874:10;37736:7;37745:96;37784:15;37745:96;;;;;;;;;;;;;;;;;2874:10;37745:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;37745:34:0;;;;;;;;;;;;:38;:96::i;36354:179::-;36432:4;36453:42;2874:10;36477:9;36488:6;36453:9;:42::i;14804:262::-;14703:8;;-1:-1:-1;;;;;14703:8:0;2874:10;14703:24;14695:69;;;;-1:-1:-1;;;14695:69:0;;;;;;;:::i;35420:272::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;35493:1:::1;35479:13;:15:::0;35517:1:::1;35509:7;:9:::0;35533:11:::1;:18:::0;;-1:-1:-1;;35533:18:0::1;35547:4;35533:18;::::0;;35579:15:::1;35566:10;:28:::0;35609:15:::1;:22:::0;;-1:-1:-1;;;;35609:22:0::1;-1:-1:-1::0;;;35609:22:0::1;::::0;;35661:19:::1;35646:12;:34:::0;35420:272::o;54889:118::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;54960:27:0::1;54990:5;54960:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;54960:35:0::1;::::0;;54889:118::o;31560:101::-;11240:6;;-1:-1:-1;;;;;11240:6:0;2874:10;11240:22;11232:67;;;;-1:-1:-1;;;11232:67:0;;;;;;;:::i;:::-;31628:12:::1;:21:::0;31560:101::o;55767:345::-;14703:8;;-1:-1:-1;;;;;14703:8:0;2874:10;14703:24;14695:69;;;;-1:-1:-1;;;14695:69:0;;;;;;;:::i;:::-;55862:42:::1;-1:-1:-1::0;;;;;55851:53:0;::::1;;;55843:94;;;::::0;-1:-1:-1;;;55843:94:0;;9990:2:1;55843:94:0::1;::::0;::::1;9972:21:1::0;10029:2;10009:18;;;10002:30;10068;10048:18;;;10041:58;10116:18;;55843:94:0::1;9788:352:1::0;55843:94:0::1;-1:-1:-1::0;;;;;55961:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;55960:19;55952:62;;;::::0;-1:-1:-1;;;55952:62:0;;7743:2:1;55952:62:0::1;::::0;::::1;7725:21:1::0;7782:2;7762:18;;;7755:30;7821:32;7801:18;;;7794:60;7871:18;;55952:62:0::1;7541:354:1::0;55952:62:0::1;-1:-1:-1::0;;;;;56029:18:0::1;;::::0;;;:9:::1;:18;::::0;;;;:25;;-1:-1:-1;;56029:25:0::1;56050:4;56029:25:::0;;::::1;::::0;;;56069:17:::1;:31:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;56069:31:0::1;::::0;;::::1;::::0;;55767:345::o;40261:357::-;-1:-1:-1;;;;;40358:19:0;;40350:68;;;;-1:-1:-1;;;40350:68:0;;10753:2:1;40350:68:0;;;10735:21:1;10792:2;10772:18;;;10765:30;10831:34;10811:18;;;10804:62;-1:-1:-1;;;10882:18:1;;;10875:34;10926:19;;40350:68:0;10551:400:1;40350:68:0;-1:-1:-1;;;;;40441:21:0;;40433:68;;;;-1:-1:-1;;;40433:68:0;;6628:2:1;40433:68:0;;;6610:21:1;6667:2;6647:18;;;6640:30;6706:34;6686:18;;;6679:62;-1:-1:-1;;;6757:18:1;;;6750:32;6799:19;;40433:68:0;6426:398:1;40433:68:0;-1:-1:-1;;;;;40518:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;40574:32;;12220:25:1;;;40574:32:0;;12193:18:1;40574:32:0;;;;;;;40261:357;;;:::o;43774:2221::-;-1:-1:-1;;;;;43916:18:0;;43908:68;;;;-1:-1:-1;;;43908:68:0;;10347:2:1;43908:68:0;;;10329:21:1;10386:2;10366:18;;;10359:30;10425:34;10405:18;;;10398:62;-1:-1:-1;;;10476:18:1;;;10469:35;10521:19;;43908:68:0;10145:401:1;43908:68:0;-1:-1:-1;;;;;43999:16:0;;43991:64;;;;-1:-1:-1;;;43991:64:0;;4922:2:1;43991:64:0;;;4904:21:1;4961:2;4941:18;;;4934:30;5000:34;4980:18;;;4973:62;-1:-1:-1;;;5051:18:1;;;5044:33;5094:19;;43991:64:0;4720:399:1;43991:64:0;44087:1;44078:6;:10;44070:64;;;;-1:-1:-1;;;44070:64:0;;9225:2:1;44070:64:0;;;9207:21:1;9264:2;9244:18;;;9237:30;9303:34;9283:18;;;9276:62;-1:-1:-1;;;9354:18:1;;;9347:39;9403:19;;44070:64:0;9023:405:1;44070:64:0;-1:-1:-1;;;;;44158:13:0;;;;;;:9;:13;;;;;;;;44157:14;44149:50;;;;-1:-1:-1;;;44149:50:0;;11924:2:1;44149:50:0;;;11906:21:1;11963:2;11943:18;;;11936:30;-1:-1:-1;;;11982:18:1;;;11975:53;12045:18;;44149:50:0;11722:347:1;44149:50:0;44233:10;44223:21;;;;:9;:21;;;;;;;;44222:22;44214:58;;;;-1:-1:-1;;;44214:58:0;;11924:2:1;44214:58:0;;;11906:21:1;11963:2;11943:18;;;11936:30;-1:-1:-1;;;11982:18:1;;;11975:53;12045:18;;44214:58:0;11722:347:1;44214:58:0;44330:13;;-1:-1:-1;;;;;44322:21:0;;;44330:13;;44322:21;:55;;;;-1:-1:-1;44361:15:0;;-1:-1:-1;;;;;44347:30:0;;;44361:15;;44347:30;;44322:55;:82;;;;-1:-1:-1;;;;;;44382:22:0;;;;;;:18;:22;;;;;;;;44381:23;44322:82;44319:380;;;44433:11;;;;44425:48;;;;-1:-1:-1;;;44425:48:0;;11158:2:1;44425:48:0;;;11140:21:1;11197:2;11177:18;;;11170:30;11236:26;11216:18;;;11209:54;11280:18;;44425:48:0;10956:348:1;44425:48:0;44560:10;;44541:15;:29;44537:147;;;-1:-1:-1;;;;;44595:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;44595:20:0;44611:4;44595:20;;;;;;44638:17;:26;;;;;;;;;;;;;;-1:-1:-1;;;;;;44638:26:0;;;;;;44537:147;-1:-1:-1;;;;;44717:21:0;;44733:4;44717:21;44713:358;;44769:13;;-1:-1:-1;;;;;44763:19:0;;;44769:13;;44763:19;:55;;;;-1:-1:-1;44802:15:0;;-1:-1:-1;;;;;44786:32:0;;;44802:15;;44786:32;;44763:55;:85;;;;-1:-1:-1;;;;;;44824:24:0;;;;;;:18;:24;;;;;;;;44822:26;44763:85;:104;;;;-1:-1:-1;44852:15:0;;-1:-1:-1;;;44852:15:0;;;;44763:104;44759:297;;;44943:12;;44933:6;:22;;44925:111;;;;-1:-1:-1;;;44925:111:0;;5326:2:1;44925:111:0;;;5308:21:1;5365:2;5345:18;;;5338:30;5404:34;5384:18;;;5377:62;5475:34;5455:18;;;5448:62;-1:-1:-1;;;5526:19:1;;;5519:42;5578:19;;44925:111:0;5124:479:1;44925:111:0;45087:28;45118:24;45136:4;45118:9;:24::i;:::-;45204:16;;45087:55;;-1:-1:-1;;;;45204:16:0;;;;45203:17;:32;;;;-1:-1:-1;45224:11:0;;;;45203:32;:55;;;;-1:-1:-1;45245:13:0;;-1:-1:-1;;;;;45239:19:0;;;45245:13;;45239:19;45203:55;45199:435;;;45282:24;;45279:326;;45386:8;;45367:13;;45357:47;;45400:3;;45357:38;;45386:8;45357:24;;-1:-1:-1;;;;;45367:13:0;45357:9;:24::i;:::-;:28;;:38::i;:::-;:42;;:47::i;:::-;45334:20;:70;45331:196;;;45485:8;;45466:13;;45456:47;;45499:3;;45456:38;;45485:8;45456:24;;-1:-1:-1;;;;;45466:13:0;45456:9;:24::i;:47::-;45433:70;;45331:196;45549:32;45560:20;45549:10;:32::i;:::-;45761:13;;45662:12;;-1:-1:-1;;;;;45755:19:0;;;45761:13;;45755:19;;:40;;-1:-1:-1;45782:13:0;;-1:-1:-1;;;;;45778:17:0;;;45782:13;;45778:17;45755:40;45754:99;;;;-1:-1:-1;;;;;;45802:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;45830:22:0;;;;;;:18;:22;;;;;;;;45802:50;45800:53;45754:99;45749:156;;;-1:-1:-1;45885:4:0;45749:156;45945:38;45960:4;45965:2;45968:6;45975:7;45945:14;:38::i;:::-;43893:2102;;43774:2221;;;:::o;4297:208::-;4383:7;4423:12;4415:6;;;;4407:29;;;;-1:-1:-1;;;4407:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4451:9:0;4463:5;4467:1;4463;:5;:::i;:::-;4451:17;4297:208;-1:-1:-1;;;;;4297:208:0:o;52549:175::-;52590:7;52615:15;52632;52651:19;:17;:19::i;:::-;52614:56;;-1:-1:-1;52614:56:0;-1:-1:-1;52692:20:0;52614:56;;52692:11;:20::i;:::-;52685:27;;;;52549:175;:::o;4809:140::-;4867:7;4898:39;4902:1;4905;4898:39;;;;;;;;;;;;;;;;;:3;:39::i;3932:197::-;3990:7;;4026:5;4030:1;4026;:5;:::i;:::-;4014:17;;4059:1;4054;:6;;4046:46;;;;-1:-1:-1;;;4046:46:0;;7031:2:1;4046:46:0;;;7013:21:1;7070:2;7050:18;;;7043:30;7109:29;7089:18;;;7082:57;7156:18;;4046:46:0;6829:351:1;51275:435:0;51334:7;51343;51352;51361;51370;51379;51404:23;51429:12;51443:18;51465:20;51477:7;51465:11;:20::i;:::-;51403:82;;;;;;51501:15;51518:23;51543:12;51559:50;51571:7;51580:4;51586:10;51598;:8;:10::i;:::-;51559:11;:50::i;:::-;51500:109;;;;-1:-1:-1;51500:109:0;;-1:-1:-1;51664:15:0;;-1:-1:-1;51681:4:0;;-1:-1:-1;51687:10:0;;-1:-1:-1;51275:435:0;;-1:-1:-1;;;;;51275:435:0:o;4141:144::-;4199:7;4230:43;4234:1;4237;4230:43;;;;;;;;;;;;;;;;;:3;:43::i;4517:278::-;4575:7;4603:6;4599:55;;-1:-1:-1;4637:1:0;4630:8;;4599:55;4670:9;4682:5;4686:1;4682;:5;:::i;:::-;4670:17;-1:-1:-1;4719:1:0;4710:5;4714:1;4670:17;4710:5;:::i;:::-;:10;4702:56;;;;-1:-1:-1;;;4702:56:0;;8462:2:1;4702:56:0;;;8444:21:1;8501:2;8481:18;;;8474:30;8540:34;8520:18;;;8513:62;-1:-1:-1;;;8591:18:1;;;8584:31;8632:19;;4702:56:0;8260:397:1;46007:366:0;31292:16;:23;;-1:-1:-1;;;;31292:23:0;-1:-1:-1;;;31292:23:0;;;46092:38:::1;46109:20:::0;46092:16:::1;:38::i;:::-;46229:21;46268:22:::0;;46265:97:::1;;46311:35;46324:21;46311:12;:35::i;:::-;-1:-1:-1::0;;31346:16:0;:24;;-1:-1:-1;;;;31346:24:0;;;46007:366::o;47852:768::-;47967:7;47963:44;;47993:14;:12;:14::i;:::-;-1:-1:-1;;;;;48040:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;48064:22:0;;;;;;:11;:22;;;;;;;;48063:23;48040:46;48036:499;;;48107:48;48129:6;48137:9;48148:6;48107:21;:48::i;:::-;48036:499;;;-1:-1:-1;;;;;48182:19:0;;;;;;:11;:19;;;;;;;;48181:20;:46;;;;-1:-1:-1;;;;;;48205:22:0;;;;;;:11;:22;;;;;;;;48181:46;48177:358;;;48248:46;48268:6;48276:9;48287:6;48248:19;:46::i;48177:358::-;-1:-1:-1;;;;;48320:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;48343:22:0;;;;;;:11;:22;;;;;;;;48320:45;48316:219;;;48386:48;48408:6;48416:9;48427:6;48386:21;:48::i;48316:219::-;48475:44;48493:6;48501:9;48512:6;48475:17;:44::i;:::-;48567:7;48563:45;;48593:15;54508;;54498:7;:25;54554:21;;54538:13;:37;54450:137;48593:15;47852:768;;;;:::o;52736:601::-;52837:7;;52877;;52786;;;;;52905:305;52929:9;:16;52925:20;;52905:305;;;52999:7;52975;:21;52983:9;52993:1;52983:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;52983:12:0;52975:21;;;;;;;;;;;;;:31;;:66;;;53034:7;53010;:21;53018:9;53028:1;53018:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;53018:12:0;53010:21;;;;;;;;;;;;;:31;52975:66;52971:97;;;53051:7;;53060;;53043:25;;;;;;;52736:601;;:::o;52971:97::-;53097:34;53109:7;:21;53117:9;53127:1;53117:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;53117:12:0;53109:21;;;;;;;;;;;;;53097:7;;:11;:34::i;:::-;53087:44;;53160:34;53172:7;:21;53180:9;53190:1;53180:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;53180:12:0;53172:21;;;;;;;;;;;;;53160:7;;:11;:34::i;:::-;53150:44;-1:-1:-1;52947:3:0;;;;:::i;:::-;;;;52905:305;;;-1:-1:-1;53250:7:0;;53238;;:20;;:11;:20::i;:::-;53228:7;:30;53224:61;;;53268:7;;53277;;53260:25;;;;;;52736:601;;:::o;53224:61::-;53308:7;;53317;;-1:-1:-1;52736:601:0;-1:-1:-1;52736:601:0:o;4961:298::-;5047:7;5086:12;5079:5;5071:28;;;;-1:-1:-1;;;5071:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5114:9:0;5126:5;5130:1;5126;:5;:::i;51722:350::-;51782:7;51791;51800;51824:12;51839:24;51855:7;51839:15;:24::i;:::-;51824:39;;51878:18;51899:30;51921:7;51899:21;:30::i;:::-;51878:51;-1:-1:-1;51944:23:0;51970:33;51878:51;51970:17;:7;51982:4;51970:11;:17::i;:::-;:21;;:33::i;:::-;51944:59;52043:4;;-1:-1:-1;52049:10:0;;-1:-1:-1;51722:350:0;;-1:-1:-1;;;51722:350:0:o;52084:453::-;52199:7;;;;52259:24;:7;52271:11;52259;:24::i;:::-;52241:42;-1:-1:-1;52298:12:0;52313:21;:4;52322:11;52313:8;:21::i;:::-;52298:36;-1:-1:-1;52349:18:0;52370:27;:10;52385:11;52370:14;:27::i;:::-;52349:48;-1:-1:-1;52412:23:0;52438:33;52349:48;52438:17;:7;52450:4;52438:11;:17::i;:33::-;52494:7;;;;-1:-1:-1;52520:4:0;;-1:-1:-1;52084:453:0;;-1:-1:-1;;;;;;;52084:453:0:o;46527:730::-;46685:16;;;46699:1;46685:16;;;;;;;;46661:21;;46685:16;;;;;;;;;;-1:-1:-1;46685:16:0;46661:40;;46734:4;46716;46721:1;46716:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;46716:23:0;;;:7;;;;;;;;;;:23;;;;46764:15;;:22;;;-1:-1:-1;;;46764:22:0;;;;:15;;;;;:20;;:22;;;;;46716:7;;46764:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46754:4;46759:1;46754:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;46754:32:0;;;:7;;;;;;;;;:32;46835:15;;46803:62;;46820:4;;46835:15;46853:11;46803:8;:62::i;:::-;46912:15;;:264;;-1:-1:-1;;;46912:264:0;;-1:-1:-1;;;;;46912:15:0;;;;:66;;:264;;46997:11;;46912:15;;47075:4;;47106;;47146:15;;46912:264;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47210:35;47227:11;47240:4;47210:35;;;;;;;:::i;:::-;;;;;;;;46582:675;46527:730;:::o;46393:106::-;46454:16;;:33;;-1:-1:-1;;;;;46454:16:0;;;;:33;;;;;46480:6;;46454:16;:33;:16;:33;46480:6;46454:16;:33;;;;;;;;;;;;;;;;;;;54148:282;54198:7;;:12;:34;;;;-1:-1:-1;54214:13:0;;:18;54198:34;54195:46;;;54148:282::o;54195:46::-;54287:7;;;54269:15;:25;54333:13;;;54309:21;:37;-1:-1:-1;54375:11:0;;;;54401:17;54148:282::o;49804:598::-;49911:15;49928:23;49953:12;49967:23;49992:12;50006:18;50028:19;50039:7;50028:10;:19::i;:::-;-1:-1:-1;;;;;50080:15:0;;;;;;:7;:15;;;;;;49910:137;;-1:-1:-1;49910:137:0;;-1:-1:-1;49910:137:0;;-1:-1:-1;49910:137:0;-1:-1:-1;49910:137:0;-1:-1:-1;49910:137:0;-1:-1:-1;50080:28:0;;50100:7;50080:19;:28::i;:::-;-1:-1:-1;;;;;50062:15:0;;;;;;:7;:15;;;;;;;;:46;;;;50141:7;:15;;;;:28;;50161:7;50141:19;:28::i;:::-;-1:-1:-1;;;;;50123:15:0;;;;;;;:7;:15;;;;;;:46;;;;50205:18;;;;;;;:39;;50228:15;50205:22;:39::i;:::-;-1:-1:-1;;;;;50184:18:0;;;;;;:7;:18;;;;;:60;50262:26;50277:10;50262:14;:26::i;:::-;50303:23;50315:4;50321;50303:11;:23::i;:::-;50363:9;-1:-1:-1;;;;;50346:44:0;50355:6;-1:-1:-1;;;;;50346:44:0;;50374:15;50346:44;;;;12220:25:1;;12208:2;12193:18;;12074:177;50346:44:0;;;;;;;;49895:507;;;;;;49804:598;;;:::o;49174:618::-;49279:15;49296:23;49321:12;49335:23;49360:12;49374:18;49396:19;49407:7;49396:10;:19::i;:::-;-1:-1:-1;;;;;49448:15:0;;;;;;:7;:15;;;;;;49278:137;;-1:-1:-1;49278:137:0;;-1:-1:-1;49278:137:0;;-1:-1:-1;49278:137:0;-1:-1:-1;49278:137:0;-1:-1:-1;49278:137:0;-1:-1:-1;49448:28:0;;49278:137;49448:19;:28::i;:::-;-1:-1:-1;;;;;49430:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;49512:18;;;;;:7;:18;;;;;:39;;49535:15;49512:22;:39::i;:::-;-1:-1:-1;;;;;49491:18:0;;;;;;:7;:18;;;;;;;;:60;;;;49587:7;:18;;;;:39;;49610:15;49587:22;:39::i;50414:678::-;50521:15;50538:23;50563:12;50577:23;50602:12;50616:18;50638:19;50649:7;50638:10;:19::i;:::-;-1:-1:-1;;;;;50690:15:0;;;;;;:7;:15;;;;;;50520:137;;-1:-1:-1;50520:137:0;;-1:-1:-1;50520:137:0;;-1:-1:-1;50520:137:0;-1:-1:-1;50520:137:0;-1:-1:-1;50520:137:0;-1:-1:-1;50690:28:0;;50710:7;50690:19;:28::i;:::-;-1:-1:-1;;;;;50672:15:0;;;;;;:7;:15;;;;;;;;:46;;;;50751:7;:15;;;;:28;;50771:7;50751:19;:28::i;48632:530::-;48735:15;48752:23;48777:12;48791:23;48816:12;48830:18;48852:19;48863:7;48852:10;:19::i;:::-;-1:-1:-1;;;;;48904:15:0;;;;;;:7;:15;;;;;;48734:137;;-1:-1:-1;48734:137:0;;-1:-1:-1;48734:137:0;;-1:-1:-1;48734:137:0;-1:-1:-1;48734:137:0;-1:-1:-1;48734:137:0;-1:-1:-1;48904:28:0;;48734:137;48904:19;:28::i;53756:170::-;53820:7;53851:63;53894:5;53851:20;53863:7;;53851;:11;;:20;;;;:::i;53946:182::-;54016:7;54047:69;54096:5;54047:26;54059:13;;54047:7;:11;;:26;;;;:::i;53357:379::-;53424:19;53447:10;:8;:10::i;:::-;53424:33;-1:-1:-1;53472:18:0;53493:27;:10;53424:33;53493:14;:27::i;:::-;53576:4;53560:22;;;;:7;:22;;;;;;53472:48;;-1:-1:-1;53560:38:0;;53472:48;53560:26;:38::i;:::-;53551:4;53535:22;;;;:7;:22;;;;;;;;:63;;;;53616:11;:26;;;;;;53613:111;;;53702:4;53686:22;;;;:7;:22;;;;;;:38;;53713:10;53686:26;:38::i;:::-;53677:4;53661:22;;;;:7;:22;;;;;:63;53613:111;53409:327;;53357:379;:::o;51104:159::-;51186:7;;:17;;51198:4;51186:11;:17::i;:::-;51176:7;:27;51231:10;;:20;;51246:4;51231:14;:20::i;:::-;51218:10;:33;-1:-1:-1;;51104:159:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2231:248;;;;;:::o;2484:461::-;2537:3;2575:5;2569:12;2602:6;2597:3;2590:19;2628:4;2657:2;2652:3;2648:12;2641:19;;2694:2;2687:5;2683:14;2715:1;2725:195;2739:6;2736:1;2733:13;2725:195;;;2804:13;;-1:-1:-1;;;;;2800:39:1;2788:52;;2860:12;;;;2895:15;;;;2836:1;2754:9;2725:195;;;-1:-1:-1;2936:3:1;;2484:461;-1:-1:-1;;;;;2484:461:1:o;4118:597::-;4230:4;4259:2;4288;4277:9;4270:21;4320:6;4314:13;4363:6;4358:2;4347:9;4343:18;4336:34;4388:1;4398:140;4412:6;4409:1;4406:13;4398:140;;;4507:14;;;4503:23;;4497:30;4473:17;;;4492:2;4469:26;4462:66;4427:10;;4398:140;;;4556:6;4553:1;4550:13;4547:91;;;4626:1;4621:2;4612:6;4601:9;4597:22;4593:31;4586:42;4547:91;-1:-1:-1;4699:2:1;4678:15;-1:-1:-1;;4674:29:1;4659:45;;;;4706:2;4655:54;;4118:597;-1:-1:-1;;;4118:597:1:o;8662:356::-;8864:2;8846:21;;;8883:18;;;8876:30;8942:34;8937:2;8922:18;;8915:62;9009:2;8994:18;;8662:356::o;12256:332::-;12463:6;12452:9;12445:25;12506:2;12501;12490:9;12486:18;12479:30;12426:4;12526:56;12578:2;12567:9;12563:18;12555:6;12526:56;:::i;:::-;12518:64;12256:332;-1:-1:-1;;;;12256:332:1:o;12593:582::-;12892:6;12881:9;12874:25;12935:6;12930:2;12919:9;12915:18;12908:34;12978:3;12973:2;12962:9;12958:18;12951:31;12855:4;12999:57;13051:3;13040:9;13036:19;13028:6;12999:57;:::i;:::-;-1:-1:-1;;;;;13092:32:1;;;;13087:2;13072:18;;13065:60;-1:-1:-1;13156:3:1;13141:19;13134:35;12991:65;12593:582;-1:-1:-1;;;12593:582:1:o;13369:128::-;13409:3;13440:1;13436:6;13433:1;13430:13;13427:39;;;13446:18;;:::i;:::-;-1:-1:-1;13482:9:1;;13369:128::o;13502:217::-;13542:1;13568;13558:132;;13612:10;13607:3;13603:20;13600:1;13593:31;13647:4;13644:1;13637:15;13675:4;13672:1;13665:15;13558:132;-1:-1:-1;13704:9:1;;13502:217::o;13724:168::-;13764:7;13830:1;13826;13822:6;13818:14;13815:1;13812:21;13807:1;13800:9;13793:17;13789:45;13786:71;;;13837:18;;:::i;:::-;-1:-1:-1;13877:9:1;;13724:168::o;13897:125::-;13937:4;13965:1;13962;13959:8;13956:34;;;13970:18;;:::i;:::-;-1:-1:-1;14007:9:1;;13897:125::o;14027:380::-;14106:1;14102:12;;;;14149;;;14170:61;;14224:4;14216:6;14212:17;14202:27;;14170:61;14277:2;14269:6;14266:14;14246:18;14243:38;14240:161;;;14323:10;14318:3;14314:20;14311:1;14304:31;14358:4;14355:1;14348:15;14386:4;14383:1;14376:15;14240:161;;14027:380;;;:::o;14412:135::-;14451:3;-1:-1:-1;;14472:17:1;;14469:43;;;14492:18;;:::i;:::-;-1:-1:-1;14539:1:1;14528:13;;14412:135::o;14552:127::-;14613:10;14608:3;14604:20;14601:1;14594:31;14644:4;14641:1;14634:15;14668:4;14665:1;14658:15;14684:127;14745:10;14740:3;14736:20;14733:1;14726:31;14776:4;14773:1;14766:15;14800:4;14797:1;14790:15;14816:127;14877:10;14872:3;14868:20;14865:1;14858:31;14908:4;14905:1;14898:15;14932:4;14929:1;14922:15;15080:131;-1:-1:-1;;;;;15155:31:1;;15145:42;;15135:70;;15201:1;15198;15191:12;15135:70;15080:131;:::o

Swarm Source

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