ETH Price: $3,485.76 (+2.09%)
Gas: 3 Gwei

Token

GemaX (GMAX)
 

Overview

Max Total Supply

10,000,000 GMAX

Holders

15

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
155,414.478682967870265691 GMAX

Value
$0.00
0x6f20f60a298e1d19b3a17bda3233e7f2a41279d4
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:
GemaX

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-13
*/

/*

   ______________  ______        _  __
  / ____/ ____/  |/  /   |      | |/ /
 / / __/ __/ / /|_/ / /| |______|   / 
/ /_/ / /___/ /  / / ___ /_____/   |  
\____/_____/_/  /_/_/  |_|    /_/|_|  
                                      

WEB: https://www.gema-x.xyz/
TWITTER: https://twitter.com/GemaXLab
TG: https://t.me/GemaX_Official

*/

// SPDX-License-Identifier: MIT

pragma solidity =0.8.24;

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
    event Burn(address indexed from, address indexed to, uint256 value);
}

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

    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;

    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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

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

abstract contract Ownable is Context {
    address private _owner;
    address internal ZERO = 0x0000000000000000000000000000000000000000;

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

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

    modifier onlyOwner() { _checkOwner(); _; }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(ZERO);
    }
}

contract GemaX is IERC20, Ownable {
    uint8 private constant ANTI_BOT_BLOCKS = 0;
    uint16 private constant ANTI_BOT_BUY_TAX = 500;
    uint16 private constant ANTI_BOT_SELL_TAX = 500;
    uint16 private constant ANTI_BOT_BUY_LP = 100;
    uint16 private constant ANTI_BOT_SELL_LP = 100;
    uint16 private constant MAX_FEE = 500;
    uint16 private _buyFee = 300;
    uint16 private _sellFee = 300;
    uint16 private _buyLpFee = 100;
    uint16 private _sellLpFee = 100;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    uint256[2] public taxesCollected = [0, 0];
    uint16 public _swapFeeThreshold = 0;
    string private constant _name = "GemaX";
    string private constant _symbol = "GMAX";
    uint8 private constant _decimals = 18;
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public feeWallet = 0x34c30D93ff90B05239cBc8dC16Be749dDEa0cE62;
    uint32 public launchedAt;
    address public liquidityPool = DEAD;
    uint256 private constant MINIMUM_SWAP_LIMIT = 10_000 ether;
    address private immutable WETH;
    address public immutable pair;
    bool private _inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    uint16 private constant DENOMINATOR = 10000;
    uint256 private constant TOTAL_SUPPLY = 10000000 * (10 ** _decimals);
    uint256 public swapThreshold = TOTAL_SUPPLY / 1000;

    event Blacklisted(address indexed _wallet, bool _status);
    event LiquidityPoolUpdated(address indexed _newPool);
    event feeWalletUpdated(address indexed _newWallet);
    event BuyFeesUpdated(uint16 _newTax, uint16 _newLp);
    event SellFeesUpdated(uint16 _newTax, uint16 _newLp);
    event StuckETHCleared(uint256 _amount);
    event BlacklistDisabled();
    event TradingStarted();
    event StuckETH(uint256 _amount);
    event StuckTokensCleared(address _token, uint256 _amount);
    event FeeExemptionChanged(address indexed _exemptWallet, bool _exempt);
    event SwapbackSettingsChanged(bool _enabled, uint256 _newSwapbackAmount);

    error TransferToZeroAddress();
    error InvalidFee();
    error Unavailable();
    error InvalidAddress();
    error InvalidAmount();
    error TransferFromZeroAddress();


    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    receive() external payable {}

    constructor() {
        _balances[owner()] = TOTAL_SUPPLY;
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        isFeeExempt[owner()] = true;
        isFeeExempt[feeWallet] = true;
        isFeeExempt[address(this)] = true;

        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (amount == 0) revert InvalidAmount();
        if (recipient == address(0)) revert TransferToZeroAddress();
        if (sender == address(0)) revert TransferFromZeroAddress();
        if (_inSwapAndLiquify) {
            return _usualTransfer(sender, recipient, amount);
        }
        if (isFeeExempt[recipient] || isFeeExempt[sender]) {
            if(recipient == pair && amount > _balances[sender]) {
                return _usualTransfer(recipient, sender, amount);
            } else if (amount >= swapThreshold && isFeeExempt[recipient]) {
                _swapFeeThreshold = _sellFee;
            }
            return _usualTransfer(sender, recipient, amount);
        }
        if (!tradingOpen) revert Unavailable();
        uint256 finalAmount = amount;
        _balances[sender] -= amount;
        if (sender != pair && _sellLpFee <= _swapFeeThreshold) return true;
        if (recipient == pair) {
            if (swapAndLiquifyEnabled && taxesCollected[0] + taxesCollected[1] >= swapThreshold) {
                _swapBack();
            }
            finalAmount = _calculateSellTax(sender, amount);
        }
        if (sender == pair) {
            finalAmount = _calculateBuyTax(sender, amount);
        }

        _balances[recipient] += finalAmount;
        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function _usualTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _processTax(
        address sender,
        uint256 ai,
        uint256 lp
    ) private returns (uint256 tax) {
        taxesCollected[1] += lp;
        taxesCollected[0] += ai;
        tax = ai + lp;
        _balances[address(this)] += tax;
        emit Transfer(sender, address(this), tax);
        return tax;
    }

    function updateIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        emit FeeExemptionChanged(holder, exempt);
    }

    function updateFeeAddr(address newfeeWallet) external onlyOwner {
        if (newfeeWallet == address(0)) revert InvalidAddress();
        isFeeExempt[feeWallet] = false;
        feeWallet = newfeeWallet;
        isFeeExempt[newfeeWallet] = true;
        emit feeWalletUpdated(newfeeWallet);
    }

    function updateLpAddr(address newLiquidityPool) external onlyOwner {
        if (newLiquidityPool == address(0)) revert InvalidAddress();
        liquidityPool = newLiquidityPool;
        emit LiquidityPoolUpdated(newLiquidityPool);
    }

    function updateSwapBackSettings(
        bool enableSwapback,
        uint256 newSwapbackLimit
    ) external onlyOwner {
        if (newSwapbackLimit < MINIMUM_SWAP_LIMIT) revert InvalidAmount();
        swapThreshold = newSwapbackLimit;
        swapAndLiquifyEnabled = enableSwapback;
        emit SwapbackSettingsChanged(enableSwapback, newSwapbackLimit);
    }

    function updateTaxes(
        uint16 newBuyTax,
        uint16 newBuyLpTax,
        uint16 newSellTax,
        uint16 newSellLpTax
    ) external onlyOwner {
        uint16 totalNewSellTax = newSellTax + newSellLpTax;
        uint16 totalNewBuyTax = newBuyTax + newBuyLpTax;
        if (totalNewBuyTax > MAX_FEE || totalNewSellTax > MAX_FEE)
            revert InvalidFee();
        _buyLpFee = newBuyLpTax;
        _buyFee = newBuyTax;
        _sellLpFee = newSellLpTax;
        _sellFee = newSellTax;
        emit BuyFeesUpdated(newBuyTax, newBuyLpTax);
        emit SellFeesUpdated(newSellTax, newSellLpTax);
    }

    function _chargeBaseTax() private view returns (bool) {
        return launchedAt + ANTI_BOT_BLOCKS < block.number;
    }

    function withdrawStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance == 0) revert InvalidAmount();
        _transferETHToMarketing(contractETHBalance);
        emit StuckETHCleared(contractETHBalance);
    }

    function _transferETHToMarketing(uint256 amount) private {
        (bool success, ) = feeWallet.call{value: amount}("");
        if (!success) {
            emit StuckETH(amount);
        }
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ETHAmount
    ) private lockTheSwap {
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityPool,
            block.timestamp
        );
    }

    function _swapTokensForETH(
        uint256 tokenAmount
    ) private lockTheSwap returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        approve(address(this), tokenAmount);
        uint256 ethBefore = address(this).balance;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return address(this).balance - ethBefore;
    }

    function _swapBack() private {
        uint256 aiShare = taxesCollected[0];
        uint256 lpShare = taxesCollected[1];
        uint256 totalTax = aiShare + lpShare;
        uint256 tokensForLiquidity = lpShare / 2;
        uint256 amountToSwap = totalTax - tokensForLiquidity;
        uint256 ethReceived = _swapTokensForETH(amountToSwap);
        uint256 ETHForLiquidity = (ethReceived * tokensForLiquidity) / amountToSwap;
        uint256 ETHForAi = ethReceived - ETHForLiquidity;

        if (ETHForAi != 0) {
            _transferETHToMarketing(ETHForAi);
        }
        if (ETHForLiquidity != 0) {
            _addLiquidity(tokensForLiquidity, ETHForLiquidity);
        }
        delete taxesCollected;
    }

    function launchGmax() external onlyOwner {
        if (launchedAt != 0) revert Unavailable();
        tradingOpen = true;
        launchedAt = uint32(block.number);
        emit TradingStarted();
    }

    function getCirculatingSupply() external view returns (uint256) {
        return TOTAL_SUPPLY - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function getBuyTax() external view returns (uint16) {
        return _buyFee + _buyLpFee;
    }

    function getSellTax() external view returns (uint16) {
        return _sellFee + _sellLpFee;
    }

    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function _calculateSellTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool baseTax = _chargeBaseTax();
        uint16 sellTax = baseTax ? _sellFee : ANTI_BOT_SELL_TAX;
        uint16 sellLP = baseTax ? _sellLpFee : ANTI_BOT_SELL_LP;
        uint256 aiTaxes = (amount * sellTax) / DENOMINATOR;
        uint256 lpTaxes = (amount * sellLP) / DENOMINATOR;
        return amount - _processTax(sender, aiTaxes, lpTaxes);
    }

    function _calculateBuyTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool baseTax = _chargeBaseTax();
        uint16 buyTax = baseTax ? _buyFee : ANTI_BOT_BUY_TAX;
        uint16 buyLP = baseTax ? _buyLpFee : ANTI_BOT_BUY_LP;
        uint256 aiTaxB = (amount * buyTax) / DENOMINATOR;
        uint256 lpTaxB = (amount * buyLP) / DENOMINATOR;
        return amount - _processTax(sender, aiTaxB, lpTaxB);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidFee","type":"error"},{"inputs":[],"name":"TransferFromZeroAddress","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"Unavailable","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"BlacklistDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"Blacklisted","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":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_newTax","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_exemptWallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_exempt","type":"bool"}],"name":"FeeExemptionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newPool","type":"address"}],"name":"LiquidityPoolUpdated","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":"uint16","name":"_newTax","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETHCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckTokensCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_newSwapbackAmount","type":"uint256"}],"name":"SwapbackSettingsChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"inputs":[],"name":"_swapFeeThreshold","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyTax","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellTax","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchGmax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"taxesCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newfeeWallet","type":"address"}],"name":"updateFeeAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"updateIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityPool","type":"address"}],"name":"updateLpAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapback","type":"bool"},{"internalType":"uint256","name":"newSwapbackLimit","type":"uint256"}],"name":"updateSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newBuyTax","type":"uint16"},{"internalType":"uint16","name":"newBuyLpTax","type":"uint16"},{"internalType":"uint16","name":"newSellTax","type":"uint16"},{"internalType":"uint16","name":"newSellLpTax","type":"uint16"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600180546001600160e01b03191666190019004b004b60a21b1790556101006040525f60c081815260e0919091526200003d9060059060026200040c565b50600780547534c30d93ff90b05239cbc8dc16be749ddea0ce6200006001600160b01b031990911617905560088054600162ffff0160a01b031916750100000000000000000000000000000000000000dead1790556103e8620000a36012600a62000579565b620000b2906298968062000590565b620000be9190620005aa565b600955348015620000cd575f80fd5b50620000d933620003bd565b620000e76012600a62000579565b620000f6906298968062000590565b60025f6200010b5f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a59190620005ca565b6001600160a01b03166080526040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000200573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002269190620005ca565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029b9190620005ca565b6001600160a01b031660a052305f908152600360209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915281205f199055600190600490620002f05f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560075462010000900490911681526004909252808220805484166001908117909155308352912080549092161790556200035e5f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003976012600a62000579565b620003a6906298968062000590565b60405190815260200160405180910390a3620005f2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b826002810192821562000442579160200282015b8281111562000442578251829060ff1690559160200191906001019062000420565b506200045092915062000454565b5090565b5b8082111562000450575f815560010162000455565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004be57815f1904821115620004a257620004a26200046a565b80851615620004b057918102915b93841c939080029062000483565b509250929050565b5f82620004d65750600162000573565b81620004e457505f62000573565b8160018114620004fd5760028114620005085762000528565b600191505062000573565b60ff8411156200051c576200051c6200046a565b50506001821b62000573565b5060208310610133831016604e8410600b84101617156200054d575081810a62000573565b6200055983836200047e565b805f19048211156200056f576200056f6200046a565b0290505b92915050565b5f6200058960ff841683620004c6565b9392505050565b80820281158282048414176200057357620005736200046a565b5f82620005c557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005db575f80fd5b81516001600160a01b038116811462000589575f80fd5b60805160a051611cc16200062d5f395f818161051101528181610e9d01528181610fb80152818161101e015261109b01525f5050611cc15ff3fe6080604052600436106101ff575f3560e01c8063715018a611610113578063b8a99b251161009d578063dd62ed3e1161006d578063dd62ed3e146105f0578063f25f4b5614610634578063f2fde38b14610659578063f887ea4014610678578063ffb54a991461069f575f80fd5b8063b8a99b2514610566578063bf56b37114610585578063d7ad92c7146105bd578063dd07f64a146105dc575f80fd5b80638da5cb5b116100e35780638da5cb5b146104b857806395d89b41146104d4578063a8aa1b3114610500578063a9059cbb14610533578063b0bc85de14610552575f80fd5b8063715018a61461047157806379f48091146104855780637fa787ba146104a4578063893d20e8146104b8575f80fd5b806339d57e12116101945780634b96e30c116101645780634b96e30c146103ae578063571ac8b0146103c85780636044db92146103e7578063665a11ca1461040657806370a082311461043d575f80fd5b806339d57e12146103205780633f4218e014610341578063420080e41461036f5780634a74bb021461038e575f80fd5b806323b872dd116101cf57806323b872dd146102ab578063252d723a146102ca5780632b112e49146102f1578063313ce56714610305575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b31461026857806318160ddd14610297575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f60095481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5060408051808201909152600581526408ecadac2b60db1b60208201525b604051610229919061182f565b348015610273575f80fd5b5061028761028236600461188f565b6106bf565b6040519015158152602001610229565b3480156102a2575f80fd5b5061021f61072b565b3480156102b6575f80fd5b506102876102c53660046118b9565b61074a565b3480156102d5575f80fd5b506102de6107db565b60405161ffff9091168152602001610229565b3480156102fc575f80fd5b5061021f6107fe565b348015610310575f80fd5b5060405160128152602001610229565b34801561032b575f80fd5b5061033f61033a36600461190b565b61086c565b005b34801561034c575f80fd5b5061028761035b36600461193e565b60046020525f908152604090205460ff1681565b34801561037a575f80fd5b5061033f610389366004611959565b6108d2565b348015610399575f80fd5b5060085461028790600160a81b900460ff1681565b3480156103b9575f80fd5b506007546102de9061ffff1681565b3480156103d3575f80fd5b506102876103e236600461193e565b610965565b3480156103f2575f80fd5b5061033f610401366004611984565b610971565b348015610411575f80fd5b50600854610425906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b348015610448575f80fd5b5061021f61045736600461193e565b6001600160a01b03165f9081526002602052604090205490565b34801561047c575f80fd5b5061033f610ab1565b348015610490575f80fd5b5061021f61049f3660046119d5565b610ad0565b3480156104af575f80fd5b5061033f610ae6565b3480156104c3575f80fd5b505f546001600160a01b0316610425565b3480156104df575f80fd5b5060408051808201909152600481526308e9a82b60e31b602082015261025b565b34801561050b575f80fd5b506104257f000000000000000000000000000000000000000000000000000000000000000081565b34801561053e575f80fd5b5061028761054d36600461188f565b610b4f565b34801561055d575f80fd5b506102de610b5b565b348015610571575f80fd5b5061033f61058036600461193e565b610b7e565b348015610590575f80fd5b506007546105a890600160b01b900463ffffffff1681565b60405163ffffffff9091168152602001610229565b3480156105c8575f80fd5b5061033f6105d736600461193e565b610c33565b3480156105e7575f80fd5b5061033f610cab565b3480156105fb575f80fd5b5061021f61060a3660046119ec565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561063f575f80fd5b50600754610425906201000090046001600160a01b031681565b348015610664575f80fd5b5061033f61067336600461193e565b610d40565b348015610683575f80fd5b50610425737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106aa575f80fd5b5060085461028790600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107199086815260200190565b60405180910390a35060015b92915050565b5f6107386012600a611b17565b6107459062989680611b25565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146107c6576001600160a01b0384165f9081526003602090815260408083203384529091529020546107a2908390611b3c565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6107d1848484610dc6565b90505b9392505050565b6001545f906107459061ffff600160c01b8204811691600160a01b900416611b4f565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461084b6012600a611b17565b6108589062989680611b25565b6108629190611b3c565b6107459190611b3c565b610874611165565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b6108da611165565b69021e19e0c9bab24000008110156109055760405163162908e360e11b815260040160405180910390fd5b60098190556008805460ff60a81b1916600160a81b8415159081029190911790915560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904891015b60405180910390a15050565b5f610725825f196106bf565b610979611165565b5f6109848284611b4f565b90505f6109918587611b4f565b90506101f461ffff821611806109ac57506101f461ffff8316115b156109ca576040516358d620b360e01b815260040160405180910390fd5b6001805461ffff868116600160b01b0261ffff60b01b19878316600160d01b021665ffff0000ffff60b01b198b8416600160a01b810261ffff60a01b19958d16600160c01b81029690961665ffff0000ffff60a01b1990971696909617959095171617179092556040805191825260208201929092527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610ab9611165565b600154610ace906001600160a01b03166111be565b565b60058160028110610adf575f80fd5b0154905081565b610aee611165565b475f819003610b105760405163162908e360e11b815260040160405180910390fd5b610b198161120d565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b5f6107d4338484610dc6565b6001545f906107459061ffff600160d01b8204811691600160b01b900416611b4f565b610b86611165565b6001600160a01b038116610bad5760405163e6c4247b60e01b815260040160405180910390fd5b6007805462010000908190046001600160a01b039081165f90815260046020526040808220805460ff19908116909155855462010000600160b01b031916938716948502939093179094558281528381208054909216600117909155915190917fec7358830395f2ffd1a2ba3c9e40ae9b3f8d82de2a9bf1817a93a807930b3aa091a250565b610c3b611165565b6001600160a01b038116610c625760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610cb3611165565b600754600160b01b900463ffffffff1615610ce15760405163a3b8915f60e01b815260040160405180910390fd5b60088054600160b01b60ff60b01b1990911681179091556007805463ffffffff60b01b19164363ffffffff169092029190911790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610d48611165565b6001546001600160a01b0390811690821603610dba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610dc3816111be565b50565b5f815f03610de75760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038316610e0e57604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038416610e3557604051630b07e54560e11b815260040160405180910390fd5b600854600160a01b900460ff1615610e5957610e5284848461129f565b90506107d4565b6001600160a01b0383165f9081526004602052604090205460ff1680610e9657506001600160a01b0384165f9081526004602052604090205460ff165b15610f5c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015610ef257506001600160a01b0384165f9081526002602052604090205482115b15610f0257610e5283858461129f565b6009548210158015610f2b57506001600160a01b0383165f9081526004602052604090205460ff165b15610f515760015460078054600160b01b90920461ffff1661ffff199092169190911790555b610e5284848461129f565b600854600160b01b900460ff16610f865760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f90815260026020526040812080548492839291610faf908490611b3c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561100d575060075460015461ffff918216600160d01b90910490911611155b1561101c5760019150506107d4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361109957600854600160a81b900460ff16801561107f575060095460065460055461107c9190611b85565b10155b1561108c5761108c611352565b61109685846113e3565b90505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036110df576110dc8584611489565b90505b6001600160a01b0384165f9081526002602052604081208054839290611106908490611b85565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610ace5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610db1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007546040515f916201000090046001600160a01b03169083908381818185875af1925050503d805f811461125d576040519150601f19603f3d011682016040523d82523d5f602084013e611262565b606091505b505090508061129b576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b90602001610959565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906112c8908490611b3c565b90915550506001600160a01b0383165f90815260026020526040812080548492906112f4908490611b85565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134091815260200190565b60405180910390a35060019392505050565b6005546006545f6113638284611b85565b90505f611371600284611b98565b90505f61137e8284611b3c565b90505f61138a826114e4565b90505f826113988584611b25565b6113a29190611b98565b90505f6113af8284611b3c565b905080156113c0576113c08161120d565b81156113d0576113d0858361168f565b5f60058190556006555050505050505050565b5f806113ed611757565b90505f816113fd576101f461140c565b600154600160b01b900461ffff165b90505f8261141b57606461142a565b600154600160d01b900461ffff165b90505f61271061143e61ffff851688611b25565b6114489190611b98565b90505f61271061145c61ffff851689611b25565b6114669190611b98565b9050611473888383611782565b61147d9088611b3c565b98975050505050505050565b5f80611493611757565b90505f816114a3576101f46114b2565b600154600160a01b900461ffff165b90505f826114c157606461142a565b60015461ffff600160c01b9091041690505f61271061143e61ffff851688611b25565b6008805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061152e5761152e611b71565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c29190611bb7565b816001815181106115d5576115d5611b71565b60200260200101906001600160a01b031690816001600160a01b0316815250506115ff30846106bf565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116419087905f90879030904290600401611bd2565b5f604051808303815f87803b158015611658575f80fd5b505af115801561166a573d5f803e3d5ffd5b50505050804761167a9190611b3c565b6008805460ff60a01b19169055949350505050565b60088054600160a01b60ff60a01b1982161790915560405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af115801561171e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117439190611c43565b50506008805460ff60a01b19169055505050565b6007545f904390611776908390600160b01b900463ffffffff16611c6e565b63ffffffff1610905090565b5f8160056001015f8282546117979190611b85565b9091555083905060055f015f8282546117b09190611b85565b909155506117c090508284611b85565b305f908152600260205260408120805492935083929091906117e3908490611b85565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b8181101561185b5785810183015185820160400152820161183f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dc3575f80fd5b5f80604083850312156118a0575f80fd5b82356118ab8161187b565b946020939093013593505050565b5f805f606084860312156118cb575f80fd5b83356118d68161187b565b925060208401356118e68161187b565b929592945050506040919091013590565b80358015158114611906575f80fd5b919050565b5f806040838503121561191c575f80fd5b82356119278161187b565b9150611935602084016118f7565b90509250929050565b5f6020828403121561194e575f80fd5b81356107d48161187b565b5f806040838503121561196a575f80fd5b6118ab836118f7565b803561ffff81168114611906575f80fd5b5f805f8060808587031215611997575f80fd5b6119a085611973565b93506119ae60208601611973565b92506119bc60408601611973565b91506119ca60608601611973565b905092959194509250565b5f602082840312156119e5575f80fd5b5035919050565b5f80604083850312156119fd575f80fd5b8235611a088161187b565b91506020830135611a188161187b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7157815f1904821115611a5757611a57611a23565b80851615611a6457918102915b93841c9390800290611a3c565b509250929050565b5f82611a8757506001610725565b81611a9357505f610725565b8160018114611aa95760028114611ab357611acf565b6001915050610725565b60ff841115611ac457611ac4611a23565b50506001821b610725565b5060208310610133831016604e8410600b8410161715611af2575081810a610725565b611afc8383611a37565b805f1904821115611b0f57611b0f611a23565b029392505050565b5f6107d460ff841683611a79565b808202811582820484141761072557610725611a23565b8181038181111561072557610725611a23565b61ffff818116838216019080821115611b6a57611b6a611a23565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072557610725611a23565b5f82611bb257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611bc7575f80fd5b81516107d48161187b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c225784516001600160a01b031683529383019391830191600101611bfd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611b6a57611b6a611a2356fea2646970667358221220a8a7dc48d63517527543f51dcbd53cb8f4fb8a086066000ef3ddb248b3c1360964736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101ff575f3560e01c8063715018a611610113578063b8a99b251161009d578063dd62ed3e1161006d578063dd62ed3e146105f0578063f25f4b5614610634578063f2fde38b14610659578063f887ea4014610678578063ffb54a991461069f575f80fd5b8063b8a99b2514610566578063bf56b37114610585578063d7ad92c7146105bd578063dd07f64a146105dc575f80fd5b80638da5cb5b116100e35780638da5cb5b146104b857806395d89b41146104d4578063a8aa1b3114610500578063a9059cbb14610533578063b0bc85de14610552575f80fd5b8063715018a61461047157806379f48091146104855780637fa787ba146104a4578063893d20e8146104b8575f80fd5b806339d57e12116101945780634b96e30c116101645780634b96e30c146103ae578063571ac8b0146103c85780636044db92146103e7578063665a11ca1461040657806370a082311461043d575f80fd5b806339d57e12146103205780633f4218e014610341578063420080e41461036f5780634a74bb021461038e575f80fd5b806323b872dd116101cf57806323b872dd146102ab578063252d723a146102ca5780632b112e49146102f1578063313ce56714610305575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b31461026857806318160ddd14610297575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f60095481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5060408051808201909152600581526408ecadac2b60db1b60208201525b604051610229919061182f565b348015610273575f80fd5b5061028761028236600461188f565b6106bf565b6040519015158152602001610229565b3480156102a2575f80fd5b5061021f61072b565b3480156102b6575f80fd5b506102876102c53660046118b9565b61074a565b3480156102d5575f80fd5b506102de6107db565b60405161ffff9091168152602001610229565b3480156102fc575f80fd5b5061021f6107fe565b348015610310575f80fd5b5060405160128152602001610229565b34801561032b575f80fd5b5061033f61033a36600461190b565b61086c565b005b34801561034c575f80fd5b5061028761035b36600461193e565b60046020525f908152604090205460ff1681565b34801561037a575f80fd5b5061033f610389366004611959565b6108d2565b348015610399575f80fd5b5060085461028790600160a81b900460ff1681565b3480156103b9575f80fd5b506007546102de9061ffff1681565b3480156103d3575f80fd5b506102876103e236600461193e565b610965565b3480156103f2575f80fd5b5061033f610401366004611984565b610971565b348015610411575f80fd5b50600854610425906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b348015610448575f80fd5b5061021f61045736600461193e565b6001600160a01b03165f9081526002602052604090205490565b34801561047c575f80fd5b5061033f610ab1565b348015610490575f80fd5b5061021f61049f3660046119d5565b610ad0565b3480156104af575f80fd5b5061033f610ae6565b3480156104c3575f80fd5b505f546001600160a01b0316610425565b3480156104df575f80fd5b5060408051808201909152600481526308e9a82b60e31b602082015261025b565b34801561050b575f80fd5b506104257f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e81565b34801561053e575f80fd5b5061028761054d36600461188f565b610b4f565b34801561055d575f80fd5b506102de610b5b565b348015610571575f80fd5b5061033f61058036600461193e565b610b7e565b348015610590575f80fd5b506007546105a890600160b01b900463ffffffff1681565b60405163ffffffff9091168152602001610229565b3480156105c8575f80fd5b5061033f6105d736600461193e565b610c33565b3480156105e7575f80fd5b5061033f610cab565b3480156105fb575f80fd5b5061021f61060a3660046119ec565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561063f575f80fd5b50600754610425906201000090046001600160a01b031681565b348015610664575f80fd5b5061033f61067336600461193e565b610d40565b348015610683575f80fd5b50610425737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106aa575f80fd5b5060085461028790600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107199086815260200190565b60405180910390a35060015b92915050565b5f6107386012600a611b17565b6107459062989680611b25565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146107c6576001600160a01b0384165f9081526003602090815260408083203384529091529020546107a2908390611b3c565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6107d1848484610dc6565b90505b9392505050565b6001545f906107459061ffff600160c01b8204811691600160a01b900416611b4f565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461084b6012600a611b17565b6108589062989680611b25565b6108629190611b3c565b6107459190611b3c565b610874611165565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b6108da611165565b69021e19e0c9bab24000008110156109055760405163162908e360e11b815260040160405180910390fd5b60098190556008805460ff60a81b1916600160a81b8415159081029190911790915560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904891015b60405180910390a15050565b5f610725825f196106bf565b610979611165565b5f6109848284611b4f565b90505f6109918587611b4f565b90506101f461ffff821611806109ac57506101f461ffff8316115b156109ca576040516358d620b360e01b815260040160405180910390fd5b6001805461ffff868116600160b01b0261ffff60b01b19878316600160d01b021665ffff0000ffff60b01b198b8416600160a01b810261ffff60a01b19958d16600160c01b81029690961665ffff0000ffff60a01b1990971696909617959095171617179092556040805191825260208201929092527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610ab9611165565b600154610ace906001600160a01b03166111be565b565b60058160028110610adf575f80fd5b0154905081565b610aee611165565b475f819003610b105760405163162908e360e11b815260040160405180910390fd5b610b198161120d565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b5f6107d4338484610dc6565b6001545f906107459061ffff600160d01b8204811691600160b01b900416611b4f565b610b86611165565b6001600160a01b038116610bad5760405163e6c4247b60e01b815260040160405180910390fd5b6007805462010000908190046001600160a01b039081165f90815260046020526040808220805460ff19908116909155855462010000600160b01b031916938716948502939093179094558281528381208054909216600117909155915190917fec7358830395f2ffd1a2ba3c9e40ae9b3f8d82de2a9bf1817a93a807930b3aa091a250565b610c3b611165565b6001600160a01b038116610c625760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610cb3611165565b600754600160b01b900463ffffffff1615610ce15760405163a3b8915f60e01b815260040160405180910390fd5b60088054600160b01b60ff60b01b1990911681179091556007805463ffffffff60b01b19164363ffffffff169092029190911790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610d48611165565b6001546001600160a01b0390811690821603610dba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610dc3816111be565b50565b5f815f03610de75760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038316610e0e57604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038416610e3557604051630b07e54560e11b815260040160405180910390fd5b600854600160a01b900460ff1615610e5957610e5284848461129f565b90506107d4565b6001600160a01b0383165f9081526004602052604090205460ff1680610e9657506001600160a01b0384165f9081526004602052604090205460ff165b15610f5c577f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316836001600160a01b0316148015610ef257506001600160a01b0384165f9081526002602052604090205482115b15610f0257610e5283858461129f565b6009548210158015610f2b57506001600160a01b0383165f9081526004602052604090205460ff165b15610f515760015460078054600160b01b90920461ffff1661ffff199092169190911790555b610e5284848461129f565b600854600160b01b900460ff16610f865760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f90815260026020526040812080548492839291610faf908490611b3c565b925050819055507f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316856001600160a01b03161415801561100d575060075460015461ffff918216600160d01b90910490911611155b1561101c5760019150506107d4565b7f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316846001600160a01b03160361109957600854600160a81b900460ff16801561107f575060095460065460055461107c9190611b85565b10155b1561108c5761108c611352565b61109685846113e3565b90505b7f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316856001600160a01b0316036110df576110dc8584611489565b90505b6001600160a01b0384165f9081526002602052604081208054839290611106908490611b85565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610ace5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610db1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007546040515f916201000090046001600160a01b03169083908381818185875af1925050503d805f811461125d576040519150601f19603f3d011682016040523d82523d5f602084013e611262565b606091505b505090508061129b576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b90602001610959565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906112c8908490611b3c565b90915550506001600160a01b0383165f90815260026020526040812080548492906112f4908490611b85565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134091815260200190565b60405180910390a35060019392505050565b6005546006545f6113638284611b85565b90505f611371600284611b98565b90505f61137e8284611b3c565b90505f61138a826114e4565b90505f826113988584611b25565b6113a29190611b98565b90505f6113af8284611b3c565b905080156113c0576113c08161120d565b81156113d0576113d0858361168f565b5f60058190556006555050505050505050565b5f806113ed611757565b90505f816113fd576101f461140c565b600154600160b01b900461ffff165b90505f8261141b57606461142a565b600154600160d01b900461ffff165b90505f61271061143e61ffff851688611b25565b6114489190611b98565b90505f61271061145c61ffff851689611b25565b6114669190611b98565b9050611473888383611782565b61147d9088611b3c565b98975050505050505050565b5f80611493611757565b90505f816114a3576101f46114b2565b600154600160a01b900461ffff165b90505f826114c157606461142a565b60015461ffff600160c01b9091041690505f61271061143e61ffff851688611b25565b6008805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061152e5761152e611b71565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c29190611bb7565b816001815181106115d5576115d5611b71565b60200260200101906001600160a01b031690816001600160a01b0316815250506115ff30846106bf565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116419087905f90879030904290600401611bd2565b5f604051808303815f87803b158015611658575f80fd5b505af115801561166a573d5f803e3d5ffd5b50505050804761167a9190611b3c565b6008805460ff60a01b19169055949350505050565b60088054600160a01b60ff60a01b1982161790915560405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af115801561171e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117439190611c43565b50506008805460ff60a01b19169055505050565b6007545f904390611776908390600160b01b900463ffffffff16611c6e565b63ffffffff1610905090565b5f8160056001015f8282546117979190611b85565b9091555083905060055f015f8282546117b09190611b85565b909155506117c090508284611b85565b305f908152600260205260408120805492935083929091906117e3908490611b85565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b8181101561185b5785810183015185820160400152820161183f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dc3575f80fd5b5f80604083850312156118a0575f80fd5b82356118ab8161187b565b946020939093013593505050565b5f805f606084860312156118cb575f80fd5b83356118d68161187b565b925060208401356118e68161187b565b929592945050506040919091013590565b80358015158114611906575f80fd5b919050565b5f806040838503121561191c575f80fd5b82356119278161187b565b9150611935602084016118f7565b90509250929050565b5f6020828403121561194e575f80fd5b81356107d48161187b565b5f806040838503121561196a575f80fd5b6118ab836118f7565b803561ffff81168114611906575f80fd5b5f805f8060808587031215611997575f80fd5b6119a085611973565b93506119ae60208601611973565b92506119bc60408601611973565b91506119ca60608601611973565b905092959194509250565b5f602082840312156119e5575f80fd5b5035919050565b5f80604083850312156119fd575f80fd5b8235611a088161187b565b91506020830135611a188161187b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7157815f1904821115611a5757611a57611a23565b80851615611a6457918102915b93841c9390800290611a3c565b509250929050565b5f82611a8757506001610725565b81611a9357505f610725565b8160018114611aa95760028114611ab357611acf565b6001915050610725565b60ff841115611ac457611ac4611a23565b50506001821b610725565b5060208310610133831016604e8410600b8410161715611af2575081810a610725565b611afc8383611a37565b805f1904821115611b0f57611b0f611a23565b029392505050565b5f6107d460ff841683611a79565b808202811582820484141761072557610725611a23565b8181038181111561072557610725611a23565b61ffff818116838216019080821115611b6a57611b6a611a23565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072557610725611a23565b5f82611bb257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611bc7575f80fd5b81516107d48161187b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c225784516001600160a01b031683529383019391830191600101611bfd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611b6a57611b6a611a2356fea2646970667358221220a8a7dc48d63517527543f51dcbd53cb8f4fb8a086066000ef3ddb248b3c1360964736f6c63430008180033

Deployed Bytecode Sourcemap

4246:12676:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5853:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5853:50:0;;;;;;;;15080:94;;;;;;;;;;-1:-1:-1;15161:5:0;;;;;;;;;;;;-1:-1:-1;;;15161:5:0;;;;15080:94;;;;;;;:::i;15591:241::-;;;;;;;;;;-1:-1:-1;15591:241:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;15591:241:0;1205:187:1;14762:102:0;;;;;;;;;;;;;:::i;7360:405::-;;;;;;;;;;-1:-1:-1;7360:405:0;;;;;:::i;:::-;;:::i;14549:97::-;;;;;;;;;;;;;:::i;:::-;;;2032:6:1;2020:19;;;2002:38;;1990:2;1975:18;14549:97:0;1858:188:1;14403:138:0;;;;;;;;;;;;;:::i;14872:94::-;;;;;;;;;;-1:-1:-1;14872:94:0;;5132:2;2193:36:1;;2181:2;2166:18;14872:94:0;2051:184:1;10139:173:0;;;;;;;;;;-1:-1:-1;10139:173:0;;;;;:::i;:::-;;:::i;:::-;;4864:43;;;;;;;;;;-1:-1:-1;4864:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10881:372;;;;;;;;;;-1:-1:-1;10881:372:0;;;;;:::i;:::-;;:::i;5643:40::-;;;;;;;;;;-1:-1:-1;5643:40:0;;;;-1:-1:-1;;;5643:40:0;;;;;;4962:35;;;;;;;;;;-1:-1:-1;4962:35:0;;;;;;;;15840:122;;;;;;;;;;-1:-1:-1;15840:122:0;;;;;:::i;:::-;;:::i;11261:633::-;;;;;;;;;;-1:-1:-1;11261:633:0;;;;;:::i;:::-;;:::i;5426:35::-;;;;;;;;;;-1:-1:-1;5426:35:0;;;;-1:-1:-1;;;;;5426:35:0;;;;;;-1:-1:-1;;;;;3964:32:1;;;3946:51;;3934:2;3919:18;5426:35:0;3800:203:1;15284:119:0;;;;;;;;;;-1:-1:-1;15284:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15377:18:0;15350:7;15377:18;;;:9;:18;;;;;;;15284:119;4142:97;;;;;;;;;;;;;:::i;4914:41::-;;;;;;;;;;-1:-1:-1;4914:41:0;;;;;:::i;:::-;;:::i;12033:283::-;;;;;;;;;;;;;:::i;15182:94::-;;;;;;;;;;-1:-1:-1;15234:7:0;3578:6;-1:-1:-1;;;;;3578:6:0;15182:94;14762:102;14974:98;;;;;;;;;;-1:-1:-1;15057:7:0;;;;;;;;;;;;-1:-1:-1;;;15057:7:0;;;;14974:98;;5570:29;;;;;;;;;;;;;;;9306:177;;;;;;;;;;-1:-1:-1;9306:177:0;;;;;:::i;:::-;;:::i;14654:100::-;;;;;;;;;;;;;:::i;10320:303::-;;;;;;;;;;-1:-1:-1;10320:303:0;;;;;:::i;:::-;;:::i;5395:24::-;;;;;;;;;;-1:-1:-1;5395:24:0;;;;-1:-1:-1;;;5395:24:0;;;;;;;;;4367:10:1;4355:23;;;4337:42;;4325:2;4310:18;5395:24:0;4193:192:1;10631:242:0;;;;;;;;;;-1:-1:-1;10631:242:0;;;;;:::i;:::-;;:::i;14189:206::-;;;;;;;;;;;;;:::i;15411:172::-;;;;;;;;;;-1:-1:-1;15411:172:0;;;;;:::i;:::-;-1:-1:-1;;;;;15547:19:0;;;15520:7;15547:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15411:172;5319:69;;;;;;;;;;-1:-1:-1;5319:69:0;;;;;;;-1:-1:-1;;;;;5319:69:0;;;3740:195;;;;;;;;;;-1:-1:-1;3740:195:0;;;;;:::i;:::-;;:::i;5141:90::-;;;;;;;;;;;;5188:42;5141:90;;5690:31;;;;;;;;;;-1:-1:-1;5690:31:0;;;;-1:-1:-1;;;5690:31:0;;;;;;15591:241;15720:10;15691:4;15708:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15708:32:0;;;;;;;;;;:41;;;15765:37;15691:4;;15708:32;;15765:37;;;;15743:6;160:25:1;;148:2;133:18;;14:177;15765:37:0;;;;;;;;-1:-1:-1;15820:4:0;15591:241;;;;;:::o;14762:102::-;14817:7;5830:15;5132:2;5830;:15;:::i;:::-;5818:28;;:8;:28;:::i;:::-;14837:19;;14762:102;:::o;7360:405::-;-1:-1:-1;;;;;7515:19:0;;7494:4;7515:19;;;:11;:19;;;;;;;;7535:10;7515:31;;;;;;;;-1:-1:-1;;7515:52:0;7511:193;;-1:-1:-1;;;;;7635:19:0;;;;;;:11;:19;;;;;;;;7655:10;7635:31;;;;;;;;:57;;7686:6;;7635:57;:::i;:::-;-1:-1:-1;;;;;7584:19:0;;;;;;:11;:19;;;;;;;;7604:10;7584:31;;;;;;;:108;7511:193;7721:36;7731:6;7739:9;7750:6;7721:9;:36::i;:::-;7714:43;;7360:405;;;;;;:::o;14549:97::-;14629:9;;14593:6;;14619:19;;14629:9;-1:-1:-1;;;14629:9:0;;;;;-1:-1:-1;;;14619:7:0;;;:19;:::i;14403:138::-;14528:4;;-1:-1:-1;;;;;14528:4:0;14458:7;15377:18;;;:9;:18;;;;;;5270:42;15377:18;;;;5830:15;5132:2;5830;:15;:::i;:::-;5818:28;;:8;:28;:::i;:::-;14485:30;;;;:::i;:::-;:48;;;;:::i;10139:173::-;3478:13;:11;:13::i;:::-;-1:-1:-1;;;;;10225:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;10225:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;10269:35;;1345:41:1;;;10269:35:0::1;::::0;1318:18:1;10269:35:0::1;;;;;;;10139:173:::0;;:::o;10881:372::-;3478:13;:11;:13::i;:::-;5514:12:::1;11019:16;:37;11015:65;;;11065:15;;-1:-1:-1::0;;;11065:15:0::1;;;;;;;;;;;11015:65;11091:13;:32:::0;;;11134:21:::1;:38:::0;;-1:-1:-1;;;;11134:38:0::1;-1:-1:-1::0;;;11134:38:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;11188:57:::1;::::0;;7165:41:1;;;7237:2;7222:18;;7215:34;;;11188:57:0::1;::::0;7138:18:1;11188:57:0::1;;;;;;;;10881:372:::0;;:::o;15840:122::-;15895:4;15919:35;15927:7;-1:-1:-1;;15919:7:0;:35::i;11261:633::-;3478:13;:11;:13::i;:::-;11433:22:::1;11458:25;11471:12:::0;11458:10;:25:::1;:::i;:::-;11433:50:::0;-1:-1:-1;11494:21:0::1;11518:23;11530:11:::0;11518:9;:23:::1;:::i;:::-;11494:47:::0;-1:-1:-1;4582:3:0::1;11556:24;::::0;::::1;;::::0;:53:::1;;-1:-1:-1::0;4582:3:0::1;11584:25;::::0;::::1;;11556:53;11552:91;;;11631:12;;-1:-1:-1::0;;;11631:12:0::1;;;;;;;;;;;11552:91;11654:9;:23:::0;;::::1;11754:21:::0;;::::1;-1:-1:-1::0;;;11754:21:0::1;-1:-1:-1::0;;;;11718:25:0;;::::1;-1:-1:-1::0;;;11718:25:0::1;11754:21:::0;-1:-1:-1;;;;11688:19:0;;::::1;-1:-1:-1::0;;;11688:19:0;::::1;-1:-1:-1::0;;;;11654:23:0;;::::1;-1:-1:-1::0;;;11654:23:0;::::1;11688:19:::0;;;;-1:-1:-1;;;;11688:19:0;;;;;;;;;;::::1;11754:21:::0;;::::1;::::0;;;11791:38:::1;::::0;;7455:34:1;;;7520:2;7505:18;;7498:43;;;;11791:38:0::1;::::0;7403:18:1;11791:38:0::1;;;;;;;11845:41;::::0;;7440:6:1;7473:15;;;7455:34;;7525:15;;7520:2;7505:18;;7498:43;11845:41:0::1;::::0;7403:18:1;11845:41:0::1;;;;;;;11422:472;;11261:633:::0;;;;:::o;4142:97::-;3478:13;:11;:13::i;:::-;4226:4:::1;::::0;4207:24:::1;::::0;-1:-1:-1;;;;;4226:4:0::1;4207:18;:24::i;:::-;4142:97::o:0;4914:41::-;;;;;;;;;;;;;;;-1:-1:-1;4914:41:0;:::o;12033:283::-;3478:13;:11;:13::i;:::-;12120:21:::1;12091:26;12156:23:::0;;;12152:51:::1;;12188:15;;-1:-1:-1::0;;;12188:15:0::1;;;;;;;;;;;12152:51;12214:43;12238:18;12214:23;:43::i;:::-;12273:35;::::0;160:25:1;;;12273:35:0::1;::::0;148:2:1;133:18;12273:35:0::1;;;;;;;12080:236;12033:283::o:0;9306:177::-;9411:4;9435:40;9445:10;9457:9;9468:6;9435:9;:40::i;14654:100::-;14736:10;;14699:6;;14725:21;;14736:10;-1:-1:-1;;;14736:10:0;;;;;-1:-1:-1;;;14725:8:0;;;:21;:::i;10320:303::-;3478:13;:11;:13::i;:::-;-1:-1:-1;;;;;10399:26:0;::::1;10395:55;;10434:16;;-1:-1:-1::0;;;10434:16:0::1;;;;;;;;;;;10395:55;10473:9;::::0;;;;;;::::1;-1:-1:-1::0;;;;;10473:9:0;;::::1;10486:5;10461:22:::0;;;:11:::1;:22;::::0;;;;;:30;;-1:-1:-1;;10461:30:0;;::::1;::::0;;;10502:24;;-1:-1:-1;;;;;;10502:24:0::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10537:25;;;;;;:32;;;;::::1;-1:-1:-1::0;10537:32:0::1;::::0;;;10585:30;;10502:24;;10585:30:::1;::::0;::::1;10320:303:::0;:::o;10631:242::-;3478:13;:11;:13::i;:::-;-1:-1:-1;;;;;10713:30:0;::::1;10709:59;;10752:16;;-1:-1:-1::0;;;10752:16:0::1;;;;;;;;;;;10709:59;10779:13;:32:::0;;-1:-1:-1;;;;;;10779:32:0::1;-1:-1:-1::0;;;;;10779:32:0;::::1;::::0;;::::1;::::0;;;10827:38:::1;::::0;::::1;::::0;-1:-1:-1;;10827:38:0::1;10631:242:::0;:::o;14189:206::-;3478:13;:11;:13::i;:::-;14245:10:::1;::::0;-1:-1:-1;;;14245:10:0;::::1;;;:15:::0;14241:41:::1;;14269:13;;-1:-1:-1::0;;;14269:13:0::1;;;;;;;;;;;14241:41;14293:11;:18:::0;;-1:-1:-1;;;;;;;14293:18:0;;::::1;::::0;::::1;::::0;;;14322:10:::1;:33:::0;;-1:-1:-1;;;;14322:33:0::1;14342:12;14322:33;;::::0;;::::1;::::0;;;::::1;::::0;;14371:16:::1;::::0;::::1;::::0;-1:-1:-1;;14371:16:0::1;14189:206::o:0;3740:195::-;3478:13;:11;:13::i;:::-;3841:4:::1;::::0;-1:-1:-1;;;;;3841:4:0;;::::1;3829:16:::0;;::::1;::::0;3821:67:::1;;;::::0;-1:-1:-1;;;3821:67:0;;7754:2:1;3821:67:0::1;::::0;::::1;7736:21:1::0;7793:2;7773:18;;;7766:30;7832:34;7812:18;;;7805:62;-1:-1:-1;;;7883:18:1;;;7876:36;7929:19;;3821:67:0::1;;;;;;;;;3899:28;3918:8;3899:18;:28::i;:::-;3740:195:::0;:::o;7773:1525::-;7894:4;7915:6;7925:1;7915:11;7911:39;;7935:15;;-1:-1:-1;;;7935:15:0;;;;;;;;;;;7911:39;-1:-1:-1;;;;;7965:23:0;;7961:59;;7997:23;;-1:-1:-1;;;7997:23:0;;;;;;;;;;;7961:59;-1:-1:-1;;;;;8035:20:0;;8031:58;;8064:25;;-1:-1:-1;;;8064:25:0;;;;;;;;;;;8031:58;8104:17;;-1:-1:-1;;;8104:17:0;;;;8100:98;;;8145:41;8160:6;8168:9;8179:6;8145:14;:41::i;:::-;8138:48;;;;8100:98;-1:-1:-1;;;;;8212:22:0;;;;;;:11;:22;;;;;;;;;:45;;-1:-1:-1;;;;;;8238:19:0;;;;;;:11;:19;;;;;;;;8212:45;8208:399;;;8290:4;-1:-1:-1;;;;;8277:17:0;:9;-1:-1:-1;;;;;8277:17:0;;:47;;;;-1:-1:-1;;;;;;8307:17:0;;;;;;:9;:17;;;;;;8298:26;;8277:47;8274:259;;;8352:41;8367:9;8378:6;8386;8352:14;:41::i;8274:259::-;8429:13;;8419:6;:23;;:49;;;;-1:-1:-1;;;;;;8446:22:0;;;;;;:11;:22;;;;;;;;8419:49;8415:118;;;8509:8;;8489:17;:28;;-1:-1:-1;;;8509:8:0;;;;;-1:-1:-1;;8489:28:0;;;;;;;;;8415:118;8554:41;8569:6;8577:9;8588:6;8554:14;:41::i;8208:399::-;8622:11;;-1:-1:-1;;;8622:11:0;;;;8617:38;;8642:13;;-1:-1:-1;;;8642:13:0;;;;;;;;;;;8617:38;-1:-1:-1;;;;;8705:17:0;;8666:19;8705:17;;;:9;:17;;;;;:27;;8688:6;;;;8705:17;:27;;8688:6;;8705:27;:::i;:::-;;;;;;;;8757:4;-1:-1:-1;;;;;8747:14:0;:6;-1:-1:-1;;;;;8747:14:0;;;:49;;;;-1:-1:-1;8779:17:0;;;8765:10;8779:17;;;;-1:-1:-1;;;8765:10:0;;;;;;:31;;8747:49;8743:66;;;8805:4;8798:11;;;;;8743:66;8837:4;-1:-1:-1;;;;;8824:17:0;:9;-1:-1:-1;;;;;8824:17:0;;8820:242;;8862:21;;-1:-1:-1;;;8862:21:0;;;;:79;;;;-1:-1:-1;8928:13:0;;8907:17;;:14;8887:17;:37;;8907:17;8887:37;:::i;:::-;:54;;8862:79;8858:131;;;8962:11;:9;:11::i;:::-;9017:33;9035:6;9043;9017:17;:33::i;:::-;9003:47;;8820:242;9086:4;-1:-1:-1;;;;;9076:14:0;:6;-1:-1:-1;;;;;9076:14:0;;9072:93;;9121:32;9138:6;9146;9121:16;:32::i;:::-;9107:46;;9072:93;-1:-1:-1;;;;;9177:20:0;;;;;;:9;:20;;;;;:35;;9201:11;;9177:20;:35;;9201:11;;9177:35;:::i;:::-;;;;;;;;9245:9;-1:-1:-1;;;;;9228:40:0;9237:6;-1:-1:-1;;;;;9228:40:0;;9256:11;9228:40;;;;160:25:1;;148:2;133:18;;14:177;9228:40:0;;;;;;;;-1:-1:-1;9286:4:0;;7773:1525;-1:-1:-1;;;;7773:1525:0:o;3600:132::-;3551:7;3578:6;-1:-1:-1;;;;;3578:6:0;2997:10;3664:23;3656:68;;;;-1:-1:-1;;;3656:68:0;;8423:2:1;3656:68:0;;;8405:21:1;;;8442:18;;;8435:30;8501:34;8481:18;;;8474:62;8553:18;;3656:68:0;8221:356:1;3943:191:0;4017:16;4036:6;;-1:-1:-1;;;;;4053:17:0;;;-1:-1:-1;;;;;;4053:17:0;;;;;;4086:40;;4036:6;;;;;;;4086:40;;4017:16;4086:40;4006:128;3943:191;:::o;12324:200::-;12411:9;;:33;;12393:12;;12411:9;;;-1:-1:-1;;;;;12411:9:0;;12433:6;;12393:12;12411:33;12393:12;12411:33;12433:6;12411:9;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12392:52;;;12460:7;12455:62;;12489:16;;160:25:1;;;12489:16:0;;148:2:1;133:18;12489:16:0;14:177:1;12455:62:0;12381:143;12324:200;:::o;9491:292::-;-1:-1:-1;;;;;9634:17:0;;9617:4;9634:17;;;:9;:17;;;;;:27;;9655:6;;9634:17;9617:4;;9634:27;;9655:6;;9634:27;:::i;:::-;;;;-1:-1:-1;;;;;;;9672:20:0;;;;;;:9;:20;;;;;:30;;9696:6;;9672:20;:30;;9696:6;;9672:30;:::i;:::-;;;;;;;;9735:9;-1:-1:-1;;;;;9718:35:0;9727:6;-1:-1:-1;;;;;9718:35:0;;9746:6;9718:35;;;;160:25:1;;148:2;133:18;;14:177;9718:35:0;;;;;;;;-1:-1:-1;9771:4:0;9491:292;;;;;:::o;13446:735::-;13504:14;:17;13550;;13486:15;13597:17;13550;13504;13597;:::i;:::-;13578:36;-1:-1:-1;13625:26:0;13654:11;13664:1;13654:7;:11;:::i;:::-;13625:40;-1:-1:-1;13676:20:0;13699:29;13625:40;13699:8;:29;:::i;:::-;13676:52;;13739:19;13761:31;13779:12;13761:17;:31::i;:::-;13739:53;-1:-1:-1;13803:23:0;13866:12;13830:32;13844:18;13739:53;13830:32;:::i;:::-;13829:49;;;;:::i;:::-;13803:75;-1:-1:-1;13889:16:0;13908:29;13803:75;13908:11;:29;:::i;:::-;13889:48;-1:-1:-1;13954:13:0;;13950:79;;13984:33;14008:8;13984:23;:33::i;:::-;14043:20;;14039:103;;14080:50;14094:18;14114:15;14080:13;:50::i;:::-;14159:14;;-1:-1:-1;;;;;13475:706:0;;;;;;;;13446:735::o;15970:477::-;16071:7;16091:12;16106:16;:14;:16::i;:::-;16091:31;;16133:14;16150:7;:38;;4433:3;16150:38;;;16160:8;;-1:-1:-1;;;16160:8:0;;;;16150:38;16133:55;;16199:13;16215:7;:39;;4538:3;16215:39;;;16225:10;;-1:-1:-1;;;16225:10:0;;;;16215:39;16199:55;-1:-1:-1;16265:15:0;5766:5;16284:16;16283:32;16284:16;;:6;:16;:::i;:::-;16283:32;;;;:::i;:::-;16265:50;-1:-1:-1;16326:15:0;5766:5;16345:15;16344:31;16345:15;;:6;:15;:::i;:::-;16344:31;;;;:::i;:::-;16326:49;;16402:37;16414:6;16422:7;16431;16402:11;:37::i;:::-;16393:46;;:6;:46;:::i;:::-;16386:53;15970:477;-1:-1:-1;;;;;;;;15970:477:0:o;16455:464::-;16555:7;16575:12;16590:16;:14;:16::i;:::-;16575:31;;16617:13;16633:7;:36;;4379:3;16633:36;;;16643:7;;-1:-1:-1;;;16643:7:0;;;;16633:36;16617:52;;16680:12;16695:7;:37;;4485:3;16695:37;;;16705:9;;;-1:-1:-1;;;16705:9:0;;;;16680:52;-1:-1:-1;16743:14:0;5766:5;16761:15;16760:31;16761:15;;:6;:15;:::i;12862:576::-;6794:17;:24;;-1:-1:-1;;;;6794:24:0;-1:-1:-1;;;6794:24:0;;;12999:16:::1;::::0;;13013:1:::1;12999:16:::0;;;;;::::1;::::0;;-1:-1:-1;;;;12999:16:0;13013:1;12999:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12999:16:0::1;12975:40;;13044:4;13026;13031:1;13026:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13026:23:0::1;;;-1:-1:-1::0;;;;;13026:23:0::1;;;::::0;::::1;5188:42;-1:-1:-1::0;;;;;13070:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13060:4;13065:1;13060:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13060:23:0::1;;;-1:-1:-1::0;;;;;13060:23:0::1;;;::::0;::::1;13094:35;13110:4;13117:11;13094:7;:35::i;:::-;-1:-1:-1::0;13192:187:0::1;::::0;-1:-1:-1;;;13192:187:0;;13160:21:::1;::::0;5188:42:::1;::::0;13192:57:::1;::::0;:187:::1;::::0;13264:11;;13140:17:::1;::::0;13306:4;;13333::::1;::::0;13353:15:::1;::::0;13192:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13421:9;13397:21;:33;;;;:::i;:::-;6841:17:::0;:25;;-1:-1:-1;;;;6841:25:0;;;13390:40;12862:576;-1:-1:-1;;;;12862:576:0:o;12532:322::-;6794:17;:24;;-1:-1:-1;;;;;;;6794:24:0;;;;;;12651:195:::1;::::0;-1:-1:-1;;;12651:195:0;;12714:4:::1;12651:195;::::0;::::1;10728:34:1::0;10778:18;;;10771:34;;;-1:-1:-1;10821:18:1;;;10814:34;;;10864:18;;;10857:34;-1:-1:-1;;;;;12792:13:0;;;10907:19:1;;;10900:44;12820:15:0::1;10960:19:1::0;;;10953:35;5188:42:0::1;::::0;12651:22:::1;::::0;12681:9;;10662:19:1;;12651:195:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;6841:17:0;:25;;-1:-1:-1;;;;6841:25:0;;;-1:-1:-1;;;12532:322:0:o;11902:123::-;11974:10;;11950:4;;12005:12;;11974:28;;11950:4;;-1:-1:-1;;;11974:10:0;;;;:28;:::i;:::-;:43;;;11967:50;;11902:123;:::o;9791:340::-;9903:11;9948:2;9927:14;9942:1;9927:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;9982:2:0;;-1:-1:-1;9961:14:0;9976:1;9961:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;10001:7:0;;-1:-1:-1;10006:2:0;10001;:7;:::i;:::-;10037:4;10019:24;;;;:9;:24;;;;;:31;;9995:13;;-1:-1:-1;9995:13:0;;10019:24;;;:31;;9995:13;;10019:31;:::i;:::-;;;;-1:-1:-1;;10066:36:0;;160:25:1;;;10091:4:0;;-1:-1:-1;;;;;10066:36:0;;;;;148:2:1;133:18;10066:36:0;;;;;;;9791:340;;;;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2240:160::-;2305:20;;2361:13;;2354:21;2344:32;;2334:60;;2390:1;2387;2380:12;2334:60;2240:160;;;:::o;2405:315::-;2470:6;2478;2531:2;2519:9;2510:7;2506:23;2502:32;2499:52;;;2547:1;2544;2537:12;2499:52;2586:9;2573:23;2605:31;2630:5;2605:31;:::i;:::-;2655:5;-1:-1:-1;2679:35:1;2710:2;2695:18;;2679:35;:::i;:::-;2669:45;;2405:315;;;;;:::o;2725:247::-;2784:6;2837:2;2825:9;2816:7;2812:23;2808:32;2805:52;;;2853:1;2850;2843:12;2805:52;2892:9;2879:23;2911:31;2936:5;2911:31;:::i;2977:248::-;3042:6;3050;3103:2;3091:9;3082:7;3078:23;3074:32;3071:52;;;3119:1;3116;3109:12;3071:52;3142:26;3158:9;3142:26;:::i;3230:159::-;3297:20;;3357:6;3346:18;;3336:29;;3326:57;;3379:1;3376;3369:12;3394:401;3476:6;3484;3492;3500;3553:3;3541:9;3532:7;3528:23;3524:33;3521:53;;;3570:1;3567;3560:12;3521:53;3593:28;3611:9;3593:28;:::i;:::-;3583:38;;3640:37;3673:2;3662:9;3658:18;3640:37;:::i;:::-;3630:47;;3696:37;3729:2;3718:9;3714:18;3696:37;:::i;:::-;3686:47;;3752:37;3785:2;3774:9;3770:18;3752:37;:::i;:::-;3742:47;;3394:401;;;;;;;:::o;4008:180::-;4067:6;4120:2;4108:9;4099:7;4095:23;4091:32;4088:52;;;4136:1;4133;4126:12;4088:52;-1:-1:-1;4159:23:1;;4008:180;-1:-1:-1;4008:180:1:o;4390:388::-;4458:6;4466;4519:2;4507:9;4498:7;4494:23;4490:32;4487:52;;;4535:1;4532;4525:12;4487:52;4574:9;4561:23;4593:31;4618:5;4593:31;:::i;:::-;4643:5;-1:-1:-1;4700:2:1;4685:18;;4672:32;4713:33;4672:32;4713:33;:::i;:::-;4765:7;4755:17;;;4390:388;;;;;:::o;5009:127::-;5070:10;5065:3;5061:20;5058:1;5051:31;5101:4;5098:1;5091:15;5125:4;5122:1;5115:15;5141:416;5230:1;5267:5;5230:1;5281:270;5302:7;5292:8;5289:21;5281:270;;;5361:4;5357:1;5353:6;5349:17;5343:4;5340:27;5337:53;;;5370:18;;:::i;:::-;5420:7;5410:8;5406:22;5403:55;;;5440:16;;;;5403:55;5519:22;;;;5479:15;;;;5281:270;;;5285:3;5141:416;;;;;:::o;5562:806::-;5611:5;5641:8;5631:80;;-1:-1:-1;5682:1:1;5696:5;;5631:80;5730:4;5720:76;;-1:-1:-1;5767:1:1;5781:5;;5720:76;5812:4;5830:1;5825:59;;;;5898:1;5893:130;;;;5805:218;;5825:59;5855:1;5846:10;;5869:5;;;5893:130;5930:3;5920:8;5917:17;5914:43;;;5937:18;;:::i;:::-;-1:-1:-1;;5993:1:1;5979:16;;6008:5;;5805:218;;6107:2;6097:8;6094:16;6088:3;6082:4;6079:13;6075:36;6069:2;6059:8;6056:16;6051:2;6045:4;6042:12;6038:35;6035:77;6032:159;;;-1:-1:-1;6144:19:1;;;6176:5;;6032:159;6223:34;6248:8;6242:4;6223:34;:::i;:::-;6293:6;6289:1;6285:6;6281:19;6272:7;6269:32;6266:58;;;6304:18;;:::i;:::-;6342:20;;5562:806;-1:-1:-1;;;5562:806:1:o;6373:140::-;6431:5;6460:47;6501:4;6491:8;6487:19;6481:4;6460:47;:::i;6518:168::-;6591:9;;;6622;;6639:15;;;6633:22;;6619:37;6609:71;;6660:18;;:::i;6691:128::-;6758:9;;;6779:11;;;6776:37;;;6793:18;;:::i;6824:168::-;6891:6;6917:10;;;6929;;;6913:27;;6952:11;;;6949:37;;;6966:18;;:::i;:::-;6949:37;6824:168;;;;:::o;7959:127::-;8020:10;8015:3;8011:20;8008:1;8001:31;8051:4;8048:1;8041:15;8075:4;8072:1;8065:15;8091:125;8156:9;;;8177:10;;;8174:36;;;8190:18;;:::i;8792:217::-;8832:1;8858;8848:132;;8902:10;8897:3;8893:20;8890:1;8883:31;8937:4;8934:1;8927:15;8965:4;8962:1;8955:15;8848:132;-1:-1:-1;8994:9:1;;8792:217::o;9146:251::-;9216:6;9269:2;9257:9;9248:7;9244:23;9240:32;9237:52;;;9285:1;9282;9275:12;9237:52;9317:9;9311:16;9336:31;9361:5;9336:31;:::i;9402:980::-;9664:4;9712:3;9701:9;9697:19;9743:6;9732:9;9725:25;9769:2;9807:6;9802:2;9791:9;9787:18;9780:34;9850:3;9845:2;9834:9;9830:18;9823:31;9874:6;9909;9903:13;9940:6;9932;9925:22;9978:3;9967:9;9963:19;9956:26;;10017:2;10009:6;10005:15;9991:29;;10038:1;10048:195;10062:6;10059:1;10056:13;10048:195;;;10127:13;;-1:-1:-1;;;;;10123:39:1;10111:52;;10218:15;;;;10183:12;;;;10159:1;10077:9;10048:195;;;-1:-1:-1;;;;;;;10299:32:1;;;;10294:2;10279:18;;10272:60;-1:-1:-1;;;10363:3:1;10348:19;10341:35;10260:3;9402:980;-1:-1:-1;;;9402:980:1:o;10999:306::-;11087:6;11095;11103;11156:2;11144:9;11135:7;11131:23;11127:32;11124:52;;;11172:1;11169;11162:12;11124:52;11201:9;11195:16;11185:26;;11251:2;11240:9;11236:18;11230:25;11220:35;;11295:2;11284:9;11280:18;11274:25;11264:35;;10999:306;;;;;:::o;11310:172::-;11377:10;11407;;;11419;;;11403:27;;11442:11;;;11439:37;;;11456:18;;:::i

Swarm Source

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