ETH Price: $2,577.57 (-4.01%)
Gas: 6 Gwei

Token

BUMPER (BUMPER)
 

Overview

Max Total Supply

607,089,778.850134086192958105 BUMPER

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,370,860.7699200886101072 BUMPER

Value
$0.00
0xa3ddb245cb5b0c8fdd3d17a77b8c31ef7f59681f
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:
BUMPER

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
Bumper is a risk management tool which provides price protection for crypto assets from downside volatility and market crashes.

Website: https://www.bumpfinance.org
Dapp: https://app.bumpfinance.org
Telegram: https://t.me/BumpFi_erc
Twitter: https://twitter.com/BumpFi_erc
*/ 

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IUniswapRouter public immutable dexRouter;
    address public immutable dexPair;
    address public routerAddr = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    bool private swapping;
    uint256 public maxTxAmount;
    uint256 public swapThreshold;
    uint256 public maxWalletSize;

    uint256 public finalFeeOnSell;
    uint256 public mktFeeOnSell;
    uint256 public lpFeeOnSell;
    uint256 public devFeeOnSell;

    uint256 public finalFeeOnBuy;
    uint256 public mktFeeOnBuy;
    uint256 public lpFeeOnBuy;
    uint256 public devFeeOnBuy;

    uint256 public tokensForMarketing;
    uint256 public tokensForLp;
    uint256 public tokensForDev;
    
    address public mktAddress;
    address public devAddress;
    address public lpAddress;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedFromMaxTx;
    mapping(address => bool) private _isExcludedFromMaxWallet;
    mapping(address => bool) public automaticMarketingPairs;

    bool public hasLimitsInEffect = true;
    bool public tradeStarted = false;
    bool public swapEnabled = false;
    
    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    modifier onlyOperation {
      require(isExcludedFrmFee(msg.sender));_;
    }

    constructor() ERC20("BUMPER", "BUMPER") {
        IUniswapRouter _uniswapV2Router = IUniswapRouter(routerAddr); 

        excludeFromMaxTx(address(_uniswapV2Router), true);
        dexRouter = _uniswapV2Router;

        dexPair = IUniswapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTx(address(dexPair), true);
        setPairAddress(address(dexPair), true);

        // launch buy fees
        uint256 _buyMarketingFee = 20;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;
        
        // launch sell fees
        uint256 _sellMarketingFee = 20;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTxAmount = 20_000_000 * 1e18;
        maxWalletSize = 20_000_000 * 1e18;
        swapThreshold = (totalSupply * 1) / 10000;

        mktFeeOnBuy = _buyMarketingFee;
        lpFeeOnBuy = _buyLiquidityFee;
        devFeeOnBuy = _buyDevFee;
        finalFeeOnBuy = mktFeeOnBuy + lpFeeOnBuy + devFeeOnBuy;

        mktFeeOnSell = _sellMarketingFee;
        lpFeeOnSell = _sellLiquidityFee;
        devFeeOnSell = _sellDevFee;
        finalFeeOnSell = mktFeeOnSell + lpFeeOnSell + devFeeOnSell;

        mktAddress = address(0x7D95448e1b8241B6944862bEC46Dd33Ac6b50781); 
        devAddress = msg.sender; 
        lpAddress = msg.sender; 

        // exclude from paying fees or having max transaction amount
        excludeFromFee(owner(), true);
        excludeFromFee(address(this), true);
        excludeFromFee(address(0xdead), true);
        excludeFromFee(address(mktAddress), true);
        excludeFromFee(address(lpAddress), true);

        excludeFromMaxTx(owner(), true);
        excludeFromMaxTx(address(this), true);
        excludeFromMaxTx(address(0xdead), true);
        excludeFromMaxTx(address(mktAddress), true);
        excludeFromMaxTx(address(lpAddress), true);

        excludeFromMaxWallet(owner(), true);
        excludeFromMaxWallet(address(this), true);
        excludeFromMaxWallet(address(0xdead), true);
        excludeFromMaxWallet(address(mktAddress), true);
        excludeFromMaxWallet(address(lpAddress), true);

        _mint(msg.sender, totalSupply);
    }
    
    function setPairAddress(address pair, bool value) private {
        automaticMarketingPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function enableTrading() external onlyOwner {
        require(!tradeStarted, "Token launched");
        tradeStarted = true;
        swapEnabled = true;
    }
    
    function excludeFromMaxTx(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedFromMaxTx[updAds] = isEx;
    }

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

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

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

        // Halve the amount of liquidity tokens
        uint256 tokensToLp = (contractBalance * tokensForLp) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(tokensToLp);

        uint256 initialETHBalance = address(this).balance;

        swapTokensToETH(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMark = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMark - ethForDev;

        tokensForLp = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devAddress).call{value: ethForDev}("");

        if (tokensToLp > 0 && ethForLiquidity > 0) {
            addLiquidity(tokensToLp, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLp
            );
        }
        payable(mktAddress).transfer(address(this).balance);
    }

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

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

        if (hasLimitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradeStarted) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automaticMarketingPairs[from] &&
                    !_isExcludedFromMaxTx[to]
                ) {
                    require(
                        amount <= maxTxAmount,
                        "Buy transfer amount exceeds the maxTxAmount."
                    );
                    if (!_isExcludedFromMaxWallet[to]) { // Added this condition
                        require(
                            amount + balanceOf(to) <= maxWalletSize,
                            "Max wallet exceeded"
                        );
                    }
                }
                //when sell
                else if (
                    automaticMarketingPairs[to] &&
                    !_isExcludedFromMaxTx[from]
                ) {
                    require(
                        amount <= maxTxAmount,
                        "Sell transfer amount exceeds the maxTxAmount."
                    );
                } else if (!_isExcludedFromMaxTx[to]) {
                    if (!_isExcludedFromMaxWallet[to]) { // Added this condition
                        require(
                            amount + balanceOf(to) <= maxWalletSize,
                            "Max wallet exceeded"
                        );
                    }
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapThreshold;

        if (
            canSwap &&
            amount > swapThreshold &&
            swapEnabled &&
            !swapping &&
            !automaticMarketingPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automaticMarketingPairs[to] && finalFeeOnSell > 0) {
                fees = amount.mul(finalFeeOnSell).div(100);
                tokensForLp += (fees * lpFeeOnSell) / finalFeeOnSell;
                tokensForDev += (fees * devFeeOnSell) / finalFeeOnSell;
                tokensForMarketing += (fees * mktFeeOnSell) / finalFeeOnSell;
            }
            // on buy
            else if (automaticMarketingPairs[from] && finalFeeOnBuy > 0) {
                fees = amount.mul(finalFeeOnBuy).div(100);
                tokensForLp += (fees * lpFeeOnBuy) / finalFeeOnBuy;
                tokensForDev += (fees * devFeeOnBuy) / finalFeeOnBuy;
                tokensForMarketing += (fees * mktFeeOnBuy) / finalFeeOnBuy;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    receive() external payable {}
        
    function excludeFromFee(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTxAmount lower than 0.1%"
        );
        maxTxAmount = newNum * (10**18);
    }
    
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWalletSize lower than 0.5%"
        );
        maxWalletSize = newNum * (10**18);
    }

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

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

    function excludeFromMaxWallet(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedFromMaxWallet[updAds] = isEx;
    }
    function swapTokensToETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

    function removeLimits() external onlyOwner returns (bool) {
        mktFeeOnBuy = 1;
        lpFeeOnBuy = 0;
        devFeeOnBuy = 0;
        finalFeeOnBuy = 1;
        hasLimitsInEffect = false;

        mktFeeOnSell = 1;
        lpFeeOnSell = 0;
        devFeeOnSell = 0;
        finalFeeOnSell = 1;
        return true;
    }

    function burn(uint256 amount) external {
      _burn(msg.sender, amount);
    }

    function burn(address account, uint256 amount) external onlyOperation {
      _burn(account, amount);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automaticMarketingPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasLimitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFrmFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","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":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeStarted","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":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055601c805462ffffff191660011790553480156200004657600080fd5b50604080518082018252600680825265212aa6a822a960d11b60208084018290528451808601909552918452908301529060036200008583826200085f565b5060046200009482826200085f565b505050620000b1620000ab6200048d60201b60201c565b62000491565b6006546001600160a01b0316620000ca816001620004e3565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013b91906200092b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af91906200092b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022391906200092b565b6001600160a01b031660a08190526200023e906001620004e3565b60a0516200024e9060016200055d565b6a108b2a2c28029094000000600781905560095560146000808281806b033b2e3c9fd0803ce80000006127106200028782600162000973565b62000293919062000993565b600855600f8790556010869055601185905584620002b28789620009b6565b620002be9190620009b6565b600e55600b849055600c839055600d82905581620002dd8486620009b6565b620002e99190620009b6565b600a55601580546001600160a01b0319908116737d95448e1b8241b6944862bec46dd33ac6b507811790915560168054821633908117909155601780549092161790556200034b620003436005546001600160a01b031690565b6001620005b1565b62000358306001620005b1565b6200036761dead6001620005b1565b60155462000380906001600160a01b03166001620005b1565b60175462000399906001600160a01b03166001620005b1565b620003b8620003b06005546001600160a01b031690565b6001620004e3565b620003c5306001620004e3565b620003d461dead6001620004e3565b601554620003ed906001600160a01b03166001620004e3565b60175462000406906001600160a01b03166001620004e3565b620004256200041d6005546001600160a01b031690565b60016200065b565b620004323060016200065b565b6200044161dead60016200065b565b6015546200045a906001600160a01b031660016200065b565b60175462000473906001600160a01b031660016200065b565b6200047f3382620006d1565b5050505050505050620009cc565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620005325760405162461bcd60e51b8152602060048201819052602482015260008051602062002e0883398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005fc5760405162461bcd60e51b8152602060048201819052602482015260008051602062002e08833981519152604482015260640162000529565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314620006a65760405162461bcd60e51b8152602060048201819052602482015260008051602062002e08833981519152604482015260640162000529565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b038216620007295760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000529565b80600260008282546200073d9190620009b6565b90915550506001600160a01b038216600090815260208190526040812080548392906200076c908490620009b6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007e657607f821691505b6020821081036200080757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007b657600081815260208120601f850160051c81016020861015620008365750805b601f850160051c820191505b81811015620008575782815560010162000842565b505050505050565b81516001600160401b038111156200087b576200087b620007bb565b62000893816200088c8454620007d1565b846200080d565b602080601f831160018114620008cb5760008415620008b25750858301515b600019600386901b1c1916600185901b17855562000857565b600085815260208120601f198616915b82811015620008fc57888601518255948401946001909101908401620008db565b50858210156200091b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200093e57600080fd5b81516001600160a01b03811681146200095657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200098d576200098d6200095d565b92915050565b600082620009b157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200098d576200098d6200095d565b60805160a0516123f362000a15600039600061085d01526000818161030001528181611dbe01528181611e7701528181611eb301528181611f2d0152611f9501526123f36000f3fe6080604052600436106102975760003560e01c80637c0ff2051161015a578063a457c2d7116100c1578063d4c989d31161007a578063d4c989d3146107a5578063d8559034146107c5578063dd62ed3e146107e5578063df8408fe1461082b578063f242ab411461084b578063f2fde38b1461087f57600080fd5b8063a457c2d7146106df578063a9059cbb146106ff578063b2c850c61461071f578063bdf8c14c14610735578063c18bc19514610765578063d2fcc0011461078557600080fd5b80638f3fa860116101135780638f3fa860146106485780639502c4261461065e57806395d89b41146106745780639b4dc8cc146106895780639dc29fac146106a95780639fccce32146106c957600080fd5b80637c0ff205146105bd5780638900f097146105d35780638a0c84e2146105e95780638a8c523c146105ff5780638c0b5e22146106145780638da5cb5b1461062a57600080fd5b806339509351116101fe57806357797423116101b757806357797423146105075780636b90694c1461051d5780636ddd17131461053d57806370a082311461055d578063715018a614610593578063751039fc146105a857600080fd5b8063395093511461046557806339899f26146104855780633ad10ef61461049b57806342966c68146104bb578063436ac337146104db5780634f0086c3146104f157600080fd5b8063203e727e11610250578063203e727e1461039557806323b872dd146103b757806328857c7b146103d757806329d42dbd146103f15780633136117914610410578063313ce5671461044957600080fd5b80630445b667146102a357806306fdde03146102cc5780630758d924146102ee578063095ea7b31461033a57806318160ddd1461036a5780631f3fed8f1461037f57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960085481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b506102e161089f565b6040516102c3919061200d565b3480156102fa57600080fd5b506103227f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c3565b34801561034657600080fd5b5061035a610355366004612070565b610931565b60405190151581526020016102c3565b34801561037657600080fd5b506002546102b9565b34801561038b57600080fd5b506102b960125481565b3480156103a157600080fd5b506103b56103b036600461209c565b610948565b005b3480156103c357600080fd5b5061035a6103d23660046120b5565b610a25565b3480156103e357600080fd5b50601c5461035a9060ff1681565b3480156103fd57600080fd5b50601c5461035a90610100900460ff1681565b34801561041c57600080fd5b5061035a61042b3660046120f6565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561045557600080fd5b50604051601281526020016102c3565b34801561047157600080fd5b5061035a610480366004612070565b610acf565b34801561049157600080fd5b506102b960115481565b3480156104a757600080fd5b50601654610322906001600160a01b031681565b3480156104c757600080fd5b506103b56104d636600461209c565b610b0b565b3480156104e757600080fd5b506102b9600e5481565b3480156104fd57600080fd5b506102b9600a5481565b34801561051357600080fd5b506102b9600b5481565b34801561052957600080fd5b50600654610322906001600160a01b031681565b34801561054957600080fd5b50601c5461035a9062010000900460ff1681565b34801561056957600080fd5b506102b96105783660046120f6565b6001600160a01b031660009081526020819052604090205490565b34801561059f57600080fd5b506103b5610b18565b3480156105b457600080fd5b5061035a610b4e565b3480156105c957600080fd5b506102b9600c5481565b3480156105df57600080fd5b506102b960105481565b3480156105f557600080fd5b506102b960135481565b34801561060b57600080fd5b506103b5610bb3565b34801561062057600080fd5b506102b960075481565b34801561063657600080fd5b506005546001600160a01b0316610322565b34801561065457600080fd5b506102b960095481565b34801561066a57600080fd5b506102b9600d5481565b34801561068057600080fd5b506102e1610c39565b34801561069557600080fd5b50601754610322906001600160a01b031681565b3480156106b557600080fd5b506103b56106c4366004612070565b610c48565b3480156106d557600080fd5b506102b960145481565b3480156106eb57600080fd5b5061035a6106fa366004612070565b610c72565b34801561070b57600080fd5b5061035a61071a366004612070565b610d0b565b34801561072b57600080fd5b506102b9600f5481565b34801561074157600080fd5b5061035a6107503660046120f6565b601b6020526000908152604090205460ff1681565b34801561077157600080fd5b506103b561078036600461209c565b610d18565b34801561079157600080fd5b506103b56107a0366004612113565b610dee565b3480156107b157600080fd5b506103b56107c0366004612113565b610e43565b3480156107d157600080fd5b50601554610322906001600160a01b031681565b3480156107f157600080fd5b506102b9610800366004612151565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561083757600080fd5b506103b5610846366004612113565b610e98565b34801561085757600080fd5b506103227f000000000000000000000000000000000000000000000000000000000000000081565b34801561088b57600080fd5b506103b561089a3660046120f6565b610f21565b6060600380546108ae9061217f565b80601f01602080910402602001604051908101604052809291908181526020018280546108da9061217f565b80156109275780601f106108fc57610100808354040283529160200191610927565b820191906000526020600020905b81548152906001019060200180831161090a57829003601f168201915b5050505050905090565b600061093e338484610fb9565b5060015b92915050565b6005546001600160a01b0316331461097b5760405162461bcd60e51b8152600401610972906121b9565b60405180910390fd5b670de0b6b3a76400006103e861099060025490565b61099b906001612204565b6109a5919061221b565b6109af919061221b565b811015610a0d5760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468616044820152656e20302e312560d01b6064820152608401610972565b610a1f81670de0b6b3a7640000612204565b60075550565b6000610a328484846110dd565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ab75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610972565b610ac48533858403610fb9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161093e918590610b0690869061223d565b610fb9565b610b153382611828565b50565b6005546001600160a01b03163314610b425760405162461bcd60e51b8152600401610972906121b9565b610b4c6000611976565b565b6005546000906001600160a01b03163314610b7b5760405162461bcd60e51b8152600401610972906121b9565b506001600f819055600060108190556011819055600e829055601c805460ff19169055600b829055600c819055600d55600a81905590565b6005546001600160a01b03163314610bdd5760405162461bcd60e51b8152600401610972906121b9565b601c54610100900460ff1615610c265760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b881b185d5b98da195960921b6044820152606401610972565b601c805462ffff00191662010100179055565b6060600480546108ae9061217f565b3360009081526018602052604090205460ff16610c6457600080fd5b610c6e8282611828565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610cf45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610972565b610d013385858403610fb9565b5060019392505050565b600061093e3384846110dd565b6005546001600160a01b03163314610d425760405162461bcd60e51b8152600401610972906121b9565b670de0b6b3a76400006103e8610d5760025490565b610d62906005612204565b610d6c919061221b565b610d76919061221b565b811015610dd65760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b6064820152608401610972565b610de881670de0b6b3a7640000612204565b60095550565b6005546001600160a01b03163314610e185760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e6d5760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f4b5760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b038116610fb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610972565b610b1581611976565b6001600160a01b03831661101b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610972565b6001600160a01b03821661107c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610972565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111035760405162461bcd60e51b815260040161097290612250565b6001600160a01b0382166111295760405162461bcd60e51b815260040161097290612295565b806000036111425761113d838360006119c8565b505050565b601c5460ff16156114e6576005546001600160a01b0384811691161480159061117957506005546001600160a01b03838116911614155b801561118d57506001600160a01b03821615155b80156111a457506001600160a01b03821661dead14155b80156111ba5750600654600160a01b900460ff16155b156114e657601c54610100900460ff16611252576001600160a01b03831660009081526018602052604090205460ff168061120d57506001600160a01b03821660009081526018602052604090205460ff165b6112525760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610972565b6001600160a01b0383166000908152601b602052604090205460ff16801561129357506001600160a01b03821660009081526019602052604090205460ff16155b1561138e576007548111156112ff5760405162461bcd60e51b815260206004820152602c60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526b36b0bc2a3c20b6b7bab73a1760a11b6064820152608401610972565b6001600160a01b0382166000908152601a602052604090205460ff16611389576009546001600160a01b038316600090815260208190526040902054611345908361223d565b11156113895760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610972565b6114e6565b6001600160a01b0382166000908152601b602052604090205460ff1680156113cf57506001600160a01b03831660009081526019602052604090205460ff16155b1561143c576007548111156113895760405162461bcd60e51b815260206004820152602d60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526c1036b0bc2a3c20b6b7bab73a1760991b6064820152608401610972565b6001600160a01b03821660009081526019602052604090205460ff166114e6576001600160a01b0382166000908152601a602052604090205460ff166114e6576009546001600160a01b0383166000908152602081905260409020546114a2908361223d565b11156114e65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610972565b306000908152602081905260409020546008548110801590819061150b575060085483115b801561151f5750601c5462010000900460ff165b80156115355750600654600160a01b900460ff16155b801561155a57506001600160a01b0385166000908152601b602052604090205460ff16155b801561157f57506001600160a01b03851660009081526018602052604090205460ff16155b80156115a457506001600160a01b03841660009081526018602052604090205460ff16155b156115d2576006805460ff60a01b1916600160a01b1790556115c4611b1d565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526018602052604090205460ff600160a01b90920482161591168061162057506001600160a01b03851660009081526018602052604090205460ff165b15611629575060005b60008115611814576001600160a01b0386166000908152601b602052604090205460ff16801561165b57506000600a54115b1561171957611680606461167a600a5488611d3c90919063ffffffff16565b90611d4f565b9050600a54600c54826116939190612204565b61169d919061221b565b601360008282546116ae919061223d565b9091555050600a54600d546116c39083612204565b6116cd919061221b565b601460008282546116de919061223d565b9091555050600a54600b546116f39083612204565b6116fd919061221b565b6012600082825461170e919061223d565b909155506117f69050565b6001600160a01b0387166000908152601b602052604090205460ff16801561174357506000600e54115b156117f657611762606461167a600e5488611d3c90919063ffffffff16565b9050600e54601054826117759190612204565b61177f919061221b565b60136000828254611790919061223d565b9091555050600e546011546117a59083612204565b6117af919061221b565b601460008282546117c0919061223d565b9091555050600e54600f546117d59083612204565b6117df919061221b565b601260008282546117f0919061223d565b90915550505b8015611807576118078730836119c8565b61181181866122d8565b94505b61181f8787876119c8565b50505050505050565b6001600160a01b0382166118885760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610972565b6001600160a01b038216600090815260208190526040902054818110156118fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610972565b6001600160a01b038316600090815260208190526040812083830390556002805484929061192b9084906122d8565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166119ee5760405162461bcd60e51b815260040161097290612250565b6001600160a01b038216611a145760405162461bcd60e51b815260040161097290612295565b6001600160a01b03831660009081526020819052604090205481811015611a8c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610972565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ac390849061223d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0f91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601454601254601354611b44919061223d565b611b4e919061223d565b90506000821580611b5d575081155b15611b6757505050565b600854611b75906014612204565b831115611b8d57600854611b8a906014612204565b92505b600060028360135486611ba09190612204565b611baa919061221b565b611bb4919061221b565b90506000611bc28583611d5b565b905047611bce82611d67565b6000611bda4783611d5b565b90506000611bf78761167a60125485611d3c90919063ffffffff16565b90506000611c148861167a60145486611d3c90919063ffffffff16565b9050600081611c2384866122d8565b611c2d91906122d8565b60006013819055601281905560148190556016546040519293506001600160a01b031691849181818185875af1925050503d8060008114611c8a576040519150601f19603f3d011682016040523d82523d6000602084013e611c8f565b606091505b50909850508615801590611ca35750600081115b15611cf657611cb28782611f27565b601354604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6015546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d2f573d6000803e3d6000fd5b5050505050505050505050565b6000611d488284612204565b9392505050565b6000611d48828461221b565b6000611d4882846122d8565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9c57611d9c6122eb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190612301565b81600181518110611e5157611e516122eb565b60200260200101906001600160a01b031690816001600160a01b031681525050611e9c307f000000000000000000000000000000000000000000000000000000000000000084610fb9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611ef190859060009086903090429060040161231e565b600060405180830381600087803b158015611f0b57600080fd5b505af1158015611f1f573d6000803e3d6000fd5b505050505050565b611f52307f000000000000000000000000000000000000000000000000000000000000000084610fb9565b60175460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af1158015611fe1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612006919061238f565b5050505050565b600060208083528351808285015260005b8181101561203a5785810183015185820160400152820161201e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b1557600080fd5b6000806040838503121561208357600080fd5b823561208e8161205b565b946020939093013593505050565b6000602082840312156120ae57600080fd5b5035919050565b6000806000606084860312156120ca57600080fd5b83356120d58161205b565b925060208401356120e58161205b565b929592945050506040919091013590565b60006020828403121561210857600080fd5b8135611d488161205b565b6000806040838503121561212657600080fd5b82356121318161205b565b91506020830135801515811461214657600080fd5b809150509250929050565b6000806040838503121561216457600080fd5b823561216f8161205b565b915060208301356121468161205b565b600181811c9082168061219357607f821691505b6020821081036121b357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610942576109426121ee565b60008261223857634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610942576109426121ee565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610942576109426121ee565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561231357600080fd5b8151611d488161205b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561236e5784516001600160a01b031683529383019391830191600101612349565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156123a457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212204c9421f92745bb8f60075b958d420db1e355615cc93922cd985b1553a68a5f7564736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102975760003560e01c80637c0ff2051161015a578063a457c2d7116100c1578063d4c989d31161007a578063d4c989d3146107a5578063d8559034146107c5578063dd62ed3e146107e5578063df8408fe1461082b578063f242ab411461084b578063f2fde38b1461087f57600080fd5b8063a457c2d7146106df578063a9059cbb146106ff578063b2c850c61461071f578063bdf8c14c14610735578063c18bc19514610765578063d2fcc0011461078557600080fd5b80638f3fa860116101135780638f3fa860146106485780639502c4261461065e57806395d89b41146106745780639b4dc8cc146106895780639dc29fac146106a95780639fccce32146106c957600080fd5b80637c0ff205146105bd5780638900f097146105d35780638a0c84e2146105e95780638a8c523c146105ff5780638c0b5e22146106145780638da5cb5b1461062a57600080fd5b806339509351116101fe57806357797423116101b757806357797423146105075780636b90694c1461051d5780636ddd17131461053d57806370a082311461055d578063715018a614610593578063751039fc146105a857600080fd5b8063395093511461046557806339899f26146104855780633ad10ef61461049b57806342966c68146104bb578063436ac337146104db5780634f0086c3146104f157600080fd5b8063203e727e11610250578063203e727e1461039557806323b872dd146103b757806328857c7b146103d757806329d42dbd146103f15780633136117914610410578063313ce5671461044957600080fd5b80630445b667146102a357806306fdde03146102cc5780630758d924146102ee578063095ea7b31461033a57806318160ddd1461036a5780631f3fed8f1461037f57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960085481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b506102e161089f565b6040516102c3919061200d565b3480156102fa57600080fd5b506103227f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102c3565b34801561034657600080fd5b5061035a610355366004612070565b610931565b60405190151581526020016102c3565b34801561037657600080fd5b506002546102b9565b34801561038b57600080fd5b506102b960125481565b3480156103a157600080fd5b506103b56103b036600461209c565b610948565b005b3480156103c357600080fd5b5061035a6103d23660046120b5565b610a25565b3480156103e357600080fd5b50601c5461035a9060ff1681565b3480156103fd57600080fd5b50601c5461035a90610100900460ff1681565b34801561041c57600080fd5b5061035a61042b3660046120f6565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561045557600080fd5b50604051601281526020016102c3565b34801561047157600080fd5b5061035a610480366004612070565b610acf565b34801561049157600080fd5b506102b960115481565b3480156104a757600080fd5b50601654610322906001600160a01b031681565b3480156104c757600080fd5b506103b56104d636600461209c565b610b0b565b3480156104e757600080fd5b506102b9600e5481565b3480156104fd57600080fd5b506102b9600a5481565b34801561051357600080fd5b506102b9600b5481565b34801561052957600080fd5b50600654610322906001600160a01b031681565b34801561054957600080fd5b50601c5461035a9062010000900460ff1681565b34801561056957600080fd5b506102b96105783660046120f6565b6001600160a01b031660009081526020819052604090205490565b34801561059f57600080fd5b506103b5610b18565b3480156105b457600080fd5b5061035a610b4e565b3480156105c957600080fd5b506102b9600c5481565b3480156105df57600080fd5b506102b960105481565b3480156105f557600080fd5b506102b960135481565b34801561060b57600080fd5b506103b5610bb3565b34801561062057600080fd5b506102b960075481565b34801561063657600080fd5b506005546001600160a01b0316610322565b34801561065457600080fd5b506102b960095481565b34801561066a57600080fd5b506102b9600d5481565b34801561068057600080fd5b506102e1610c39565b34801561069557600080fd5b50601754610322906001600160a01b031681565b3480156106b557600080fd5b506103b56106c4366004612070565b610c48565b3480156106d557600080fd5b506102b960145481565b3480156106eb57600080fd5b5061035a6106fa366004612070565b610c72565b34801561070b57600080fd5b5061035a61071a366004612070565b610d0b565b34801561072b57600080fd5b506102b9600f5481565b34801561074157600080fd5b5061035a6107503660046120f6565b601b6020526000908152604090205460ff1681565b34801561077157600080fd5b506103b561078036600461209c565b610d18565b34801561079157600080fd5b506103b56107a0366004612113565b610dee565b3480156107b157600080fd5b506103b56107c0366004612113565b610e43565b3480156107d157600080fd5b50601554610322906001600160a01b031681565b3480156107f157600080fd5b506102b9610800366004612151565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561083757600080fd5b506103b5610846366004612113565b610e98565b34801561085757600080fd5b506103227f000000000000000000000000a2815580af0499c7f6ba7f452deaceea6c9c83ae81565b34801561088b57600080fd5b506103b561089a3660046120f6565b610f21565b6060600380546108ae9061217f565b80601f01602080910402602001604051908101604052809291908181526020018280546108da9061217f565b80156109275780601f106108fc57610100808354040283529160200191610927565b820191906000526020600020905b81548152906001019060200180831161090a57829003601f168201915b5050505050905090565b600061093e338484610fb9565b5060015b92915050565b6005546001600160a01b0316331461097b5760405162461bcd60e51b8152600401610972906121b9565b60405180910390fd5b670de0b6b3a76400006103e861099060025490565b61099b906001612204565b6109a5919061221b565b6109af919061221b565b811015610a0d5760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468616044820152656e20302e312560d01b6064820152608401610972565b610a1f81670de0b6b3a7640000612204565b60075550565b6000610a328484846110dd565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ab75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610972565b610ac48533858403610fb9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161093e918590610b0690869061223d565b610fb9565b610b153382611828565b50565b6005546001600160a01b03163314610b425760405162461bcd60e51b8152600401610972906121b9565b610b4c6000611976565b565b6005546000906001600160a01b03163314610b7b5760405162461bcd60e51b8152600401610972906121b9565b506001600f819055600060108190556011819055600e829055601c805460ff19169055600b829055600c819055600d55600a81905590565b6005546001600160a01b03163314610bdd5760405162461bcd60e51b8152600401610972906121b9565b601c54610100900460ff1615610c265760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b881b185d5b98da195960921b6044820152606401610972565b601c805462ffff00191662010100179055565b6060600480546108ae9061217f565b3360009081526018602052604090205460ff16610c6457600080fd5b610c6e8282611828565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610cf45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610972565b610d013385858403610fb9565b5060019392505050565b600061093e3384846110dd565b6005546001600160a01b03163314610d425760405162461bcd60e51b8152600401610972906121b9565b670de0b6b3a76400006103e8610d5760025490565b610d62906005612204565b610d6c919061221b565b610d76919061221b565b811015610dd65760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b6064820152608401610972565b610de881670de0b6b3a7640000612204565b60095550565b6005546001600160a01b03163314610e185760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e6d5760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f4b5760405162461bcd60e51b8152600401610972906121b9565b6001600160a01b038116610fb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610972565b610b1581611976565b6001600160a01b03831661101b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610972565b6001600160a01b03821661107c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610972565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111035760405162461bcd60e51b815260040161097290612250565b6001600160a01b0382166111295760405162461bcd60e51b815260040161097290612295565b806000036111425761113d838360006119c8565b505050565b601c5460ff16156114e6576005546001600160a01b0384811691161480159061117957506005546001600160a01b03838116911614155b801561118d57506001600160a01b03821615155b80156111a457506001600160a01b03821661dead14155b80156111ba5750600654600160a01b900460ff16155b156114e657601c54610100900460ff16611252576001600160a01b03831660009081526018602052604090205460ff168061120d57506001600160a01b03821660009081526018602052604090205460ff165b6112525760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610972565b6001600160a01b0383166000908152601b602052604090205460ff16801561129357506001600160a01b03821660009081526019602052604090205460ff16155b1561138e576007548111156112ff5760405162461bcd60e51b815260206004820152602c60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526b36b0bc2a3c20b6b7bab73a1760a11b6064820152608401610972565b6001600160a01b0382166000908152601a602052604090205460ff16611389576009546001600160a01b038316600090815260208190526040902054611345908361223d565b11156113895760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610972565b6114e6565b6001600160a01b0382166000908152601b602052604090205460ff1680156113cf57506001600160a01b03831660009081526019602052604090205460ff16155b1561143c576007548111156113895760405162461bcd60e51b815260206004820152602d60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526c1036b0bc2a3c20b6b7bab73a1760991b6064820152608401610972565b6001600160a01b03821660009081526019602052604090205460ff166114e6576001600160a01b0382166000908152601a602052604090205460ff166114e6576009546001600160a01b0383166000908152602081905260409020546114a2908361223d565b11156114e65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610972565b306000908152602081905260409020546008548110801590819061150b575060085483115b801561151f5750601c5462010000900460ff165b80156115355750600654600160a01b900460ff16155b801561155a57506001600160a01b0385166000908152601b602052604090205460ff16155b801561157f57506001600160a01b03851660009081526018602052604090205460ff16155b80156115a457506001600160a01b03841660009081526018602052604090205460ff16155b156115d2576006805460ff60a01b1916600160a01b1790556115c4611b1d565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526018602052604090205460ff600160a01b90920482161591168061162057506001600160a01b03851660009081526018602052604090205460ff165b15611629575060005b60008115611814576001600160a01b0386166000908152601b602052604090205460ff16801561165b57506000600a54115b1561171957611680606461167a600a5488611d3c90919063ffffffff16565b90611d4f565b9050600a54600c54826116939190612204565b61169d919061221b565b601360008282546116ae919061223d565b9091555050600a54600d546116c39083612204565b6116cd919061221b565b601460008282546116de919061223d565b9091555050600a54600b546116f39083612204565b6116fd919061221b565b6012600082825461170e919061223d565b909155506117f69050565b6001600160a01b0387166000908152601b602052604090205460ff16801561174357506000600e54115b156117f657611762606461167a600e5488611d3c90919063ffffffff16565b9050600e54601054826117759190612204565b61177f919061221b565b60136000828254611790919061223d565b9091555050600e546011546117a59083612204565b6117af919061221b565b601460008282546117c0919061223d565b9091555050600e54600f546117d59083612204565b6117df919061221b565b601260008282546117f0919061223d565b90915550505b8015611807576118078730836119c8565b61181181866122d8565b94505b61181f8787876119c8565b50505050505050565b6001600160a01b0382166118885760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610972565b6001600160a01b038216600090815260208190526040902054818110156118fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610972565b6001600160a01b038316600090815260208190526040812083830390556002805484929061192b9084906122d8565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166119ee5760405162461bcd60e51b815260040161097290612250565b6001600160a01b038216611a145760405162461bcd60e51b815260040161097290612295565b6001600160a01b03831660009081526020819052604090205481811015611a8c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610972565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ac390849061223d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0f91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601454601254601354611b44919061223d565b611b4e919061223d565b90506000821580611b5d575081155b15611b6757505050565b600854611b75906014612204565b831115611b8d57600854611b8a906014612204565b92505b600060028360135486611ba09190612204565b611baa919061221b565b611bb4919061221b565b90506000611bc28583611d5b565b905047611bce82611d67565b6000611bda4783611d5b565b90506000611bf78761167a60125485611d3c90919063ffffffff16565b90506000611c148861167a60145486611d3c90919063ffffffff16565b9050600081611c2384866122d8565b611c2d91906122d8565b60006013819055601281905560148190556016546040519293506001600160a01b031691849181818185875af1925050503d8060008114611c8a576040519150601f19603f3d011682016040523d82523d6000602084013e611c8f565b606091505b50909850508615801590611ca35750600081115b15611cf657611cb28782611f27565b601354604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6015546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d2f573d6000803e3d6000fd5b5050505050505050505050565b6000611d488284612204565b9392505050565b6000611d48828461221b565b6000611d4882846122d8565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9c57611d9c6122eb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190612301565b81600181518110611e5157611e516122eb565b60200260200101906001600160a01b031690816001600160a01b031681525050611e9c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fb9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611ef190859060009086903090429060040161231e565b600060405180830381600087803b158015611f0b57600080fd5b505af1158015611f1f573d6000803e3d6000fd5b505050505050565b611f52307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fb9565b60175460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af1158015611fe1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612006919061238f565b5050505050565b600060208083528351808285015260005b8181101561203a5785810183015185820160400152820161201e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b1557600080fd5b6000806040838503121561208357600080fd5b823561208e8161205b565b946020939093013593505050565b6000602082840312156120ae57600080fd5b5035919050565b6000806000606084860312156120ca57600080fd5b83356120d58161205b565b925060208401356120e58161205b565b929592945050506040919091013590565b60006020828403121561210857600080fd5b8135611d488161205b565b6000806040838503121561212657600080fd5b82356121318161205b565b91506020830135801515811461214657600080fd5b809150509250929050565b6000806040838503121561216457600080fd5b823561216f8161205b565b915060208301356121468161205b565b600181811c9082168061219357607f821691505b6020821081036121b357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610942576109426121ee565b60008261223857634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610942576109426121ee565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610942576109426121ee565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561231357600080fd5b8151611d488161205b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561236e5784516001600160a01b031683529383019391830191600101612349565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156123a457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212204c9421f92745bb8f60075b958d420db1e355615cc93922cd985b1553a68a5f7564736f6c63430008130033

Deployed Bytecode Sourcemap

11031:12896:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11338:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;11338:28:0;;;;;;;;6397:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11107:41::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;935:32:1;;;917:51;;905:2;890:18;11107:41:0;749:225:1;7311:169:0;;;;;;;;;;-1:-1:-1;7311:169:0;;;;;:::i;:::-;;:::i;:::-;;;1600:14:1;;1593:22;1575:41;;1563:2;1548:18;7311:169:0;1435:187:1;6718:108:0;;;;;;;;;;-1:-1:-1;6806:12:0;;6718:108;;11684:33;;;;;;;;;;;;;;;;21455:257;;;;;;;;;;-1:-1:-1;21455:257:0;;;;;:::i;:::-;;:::i;:::-;;7488:492;;;;;;;;;;-1:-1:-1;7488:492:0;;;;;:::i;:::-;;:::i;12141:36::-;;;;;;;;;;-1:-1:-1;12141:36:0;;;;;;;;12184:32;;;;;;;;;;-1:-1:-1;12184:32:0;;;;;;;;;;;23800:124;;;;;;;;;;-1:-1:-1;23800:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;23888:28:0;23864:4;23888:28;;;:19;:28;;;;;;;;;23800:124;6617:93;;;;;;;;;;-1:-1:-1;6617:93:0;;6700:2;2667:36:1;;2655:2;2640:18;6617:93:0;2525:184:1;7988:215:0;;;;;;;;;;-1:-1:-1;7988:215:0;;;;;:::i;:::-;;:::i;11649:26::-;;;;;;;;;;;;;;;;11829:25;;;;;;;;;;-1:-1:-1;11829:25:0;;;;-1:-1:-1;;;;;11829:25:0;;;23594:81;;;;;;;;;;-1:-1:-1;23594:81:0;;;;;:::i;:::-;;:::i;11549:28::-;;;;;;;;;;;;;;;;11410:29;;;;;;;;;;;;;;;;11446:27;;;;;;;;;;;;;;;;11194:70;;;;;;;;;;-1:-1:-1;11194:70:0;;;;-1:-1:-1;;;;;11194:70:0;;;12223:31;;;;;;;;;;-1:-1:-1;12223:31:0;;;;;;;;;;;6834:127;;;;;;;;;;-1:-1:-1;6834:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6935:18:0;6908:7;6935:18;;;;;;;;;;;;6834:127;2250:103;;;;;;;;;;;;;:::i;23246:340::-;;;;;;;;;;;;;:::i;11480:26::-;;;;;;;;;;;;;;;;11617:25;;;;;;;;;;;;;;;;11724:26;;;;;;;;;;;;;;;;15174:162;;;;;;;;;;;;;:::i;11305:26::-;;;;;;;;;;;;;;;;2027:87;;;;;;;;;;-1:-1:-1;2100:6:0;;-1:-1:-1;;;;;2100:6:0;2027:87;;11373:28;;;;;;;;;;;;;;;;11513:27;;;;;;;;;;;;;;;;6505:104;;;;;;;;;;;;;:::i;11861:24::-;;;;;;;;;;-1:-1:-1;11861:24:0;;;;-1:-1:-1;;;;;11861:24:0;;;23683:109;;;;;;;;;;-1:-1:-1;23683:109:0;;;;;:::i;:::-;;:::i;11757:27::-;;;;;;;;;;;;;;;;8211:413;;;;;;;;;;-1:-1:-1;8211:413:0;;;;;:::i;:::-;;:::i;6969:175::-;;;;;;;;;;-1:-1:-1;6969:175:0;;;;;:::i;:::-;;:::i;11584:26::-;;;;;;;;;;;;;;;;12077:55;;;;;;;;;;-1:-1:-1;12077:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21724:264;;;;;;;;;;-1:-1:-1;21724:264:0;;;;;:::i;:::-;;:::i;22507:155::-;;;;;;;;;;-1:-1:-1;22507:155:0;;;;;:::i;:::-;;:::i;15348:147::-;;;;;;;;;;-1:-1:-1;15348:147:0;;;;;:::i;:::-;;:::i;11797:25::-;;;;;;;;;;-1:-1:-1;11797:25:0;;;;-1:-1:-1;;;;;11797:25:0;;;7152:151;;;;;;;;;;-1:-1:-1;7152:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;7268:18:0;;;7241:7;7268:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7152:151;21262:181;;;;;;;;;;-1:-1:-1;21262:181:0;;;;;:::i;:::-;;:::i;11155:32::-;;;;;;;;;;;;;;;2361:201;;;;;;;;;;-1:-1:-1;2361:201:0;;;;;:::i;:::-;;:::i;6397:100::-;6451:13;6484:5;6477:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6397:100;:::o;7311:169::-;7394:4;7411:39;467:10;7434:7;7443:6;7411:8;:39::i;:::-;-1:-1:-1;7468:4:0;7311:169;;;;;:::o;21455:257::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;;;;;;;;;21592:4:::1;21584;21563:13;6806:12:::0;;;6718:108;21563:13:::1;:17;::::0;21579:1:::1;21563:17;:::i;:::-;21562:26;;;;:::i;:::-;21561:35;;;;:::i;:::-;21551:6;:45;;21529:133;;;::::0;-1:-1:-1;;;21529:133:0;;5211:2:1;21529:133:0::1;::::0;::::1;5193:21:1::0;5250:2;5230:18;;;5223:30;5289:34;5269:18;;;5262:62;-1:-1:-1;;;5340:18:1;;;5333:36;5386:19;;21529:133:0::1;5009:402:1::0;21529:133:0::1;21687:17;:6:::0;21697::::1;21687:17;:::i;:::-;21673:11;:31:::0;-1:-1:-1;21455:257:0:o;7488:492::-;7628:4;7645:36;7655:6;7663:9;7674:6;7645:9;:36::i;:::-;-1:-1:-1;;;;;7721:19:0;;7694:24;7721:19;;;:11;:19;;;;;;;;467:10;7721:33;;;;;;;;7773:26;;;;7765:79;;;;-1:-1:-1;;;7765:79:0;;5618:2:1;7765:79:0;;;5600:21:1;5657:2;5637:18;;;5630:30;5696:34;5676:18;;;5669:62;-1:-1:-1;;;5747:18:1;;;5740:38;5795:19;;7765:79:0;5416:404:1;7765:79:0;7880:57;7889:6;467:10;7930:6;7911:16;:25;7880:8;:57::i;:::-;-1:-1:-1;7968:4:0;;7488:492;-1:-1:-1;;;;7488:492:0:o;7988:215::-;467:10;8076:4;8125:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8125:34:0;;;;;;;;;;8076:4;;8093:80;;8116:7;;8125:47;;8162:10;;8125:47;:::i;:::-;8093:8;:80::i;23594:81::-;23642:25;23648:10;23660:6;23642:5;:25::i;:::-;23594:81;:::o;2250:103::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;2315:30:::1;2342:1;2315:18;:30::i;:::-;2250:103::o:0;23246:340::-;2100:6;;23298:4;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;-1:-1:-1;23329:1:0::1;23315:11;:15:::0;;;23354:1:::1;23341:10;:14:::0;;;23366:11:::1;:15:::0;;;23392:13:::1;:17:::0;;;23420::::1;:25:::0;;-1:-1:-1;;23420:25:0::1;::::0;;23458:12:::1;:16:::0;;;23485:11:::1;:15:::0;;;23511:12:::1;:16:::0;23538:14:::1;:18:::0;;;23246:340;:::o;15174:162::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;15238:12:::1;::::0;::::1;::::0;::::1;;;15237:13;15229:40;;;::::0;-1:-1:-1;;;15229:40:0;;6157:2:1;15229:40:0::1;::::0;::::1;6139:21:1::0;6196:2;6176:18;;;6169:30;-1:-1:-1;;;6215:18:1;;;6208:44;6269:18;;15229:40:0::1;5955:338:1::0;15229:40:0::1;15280:12;:19:::0;;-1:-1:-1;;15310:18:0;;;;;15174:162::o;6505:104::-;6561:13;6594:7;6587:14;;;;;:::i;23683:109::-;12616:10;23864:4;23888:28;;;:19;:28;;;;;;;;12591:37;;;;;;23762:22:::1;23768:7;23777:6;23762:5;:22::i;:::-;23683:109:::0;;:::o;8211:413::-;467:10;8304:4;8348:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8348:34:0;;;;;;;;;;8401:35;;;;8393:85;;;;-1:-1:-1;;;8393:85:0;;6500:2:1;8393:85:0;;;6482:21:1;6539:2;6519:18;;;6512:30;6578:34;6558:18;;;6551:62;-1:-1:-1;;;6629:18:1;;;6622:35;6674:19;;8393:85:0;6298:401:1;8393:85:0;8514:67;467:10;8537:7;8565:15;8546:16;:34;8514:8;:67::i;:::-;-1:-1:-1;8612:4:0;;8211:413;-1:-1:-1;;;8211:413:0:o;6969:175::-;7055:4;7072:42;467:10;7096:9;7107:6;7072:9;:42::i;21724:264::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;21864:4:::1;21856;21835:13;6806:12:::0;;;6718:108;21835:13:::1;:17;::::0;21851:1:::1;21835:17;:::i;:::-;21834:26;;;;:::i;:::-;21833:35;;;;:::i;:::-;21823:6;:45;;21801:135;;;::::0;-1:-1:-1;;;21801:135:0;;6906:2:1;21801:135:0::1;::::0;::::1;6888:21:1::0;6945:2;6925:18;;;6918:30;6984:34;6964:18;;;6957:62;-1:-1:-1;;;7035:18:1;;;7028:38;7083:19;;21801:135:0::1;6704:404:1::0;21801:135:0::1;21963:17;:6:::0;21973::::1;21963:17;:::i;:::-;21947:13;:33:::0;-1:-1:-1;21724:264:0:o;22507:155::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22615:32:0;;;::::1;;::::0;;;:24:::1;:32;::::0;;;;:39;;-1:-1:-1;;22615:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22507:155::o;15348:147::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15452:28:0;;;::::1;;::::0;;;:20:::1;:28;::::0;;;;:35;;-1:-1:-1;;15452:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15348:147::o;21262:181::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21346:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21346:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21401:34;;1575:41:1;;;21401:34:0::1;::::0;1548:18:1;21401:34:0::1;;;;;;;21262:181:::0;;:::o;2361:201::-;2100:6;;-1:-1:-1;;;;;2100:6:0;467:10;2162:23;2154:68;;;;-1:-1:-1;;;2154:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2450:22:0;::::1;2442:73;;;::::0;-1:-1:-1;;;2442:73:0;;7315:2:1;2442:73:0::1;::::0;::::1;7297:21:1::0;7354:2;7334:18;;;7327:30;7393:34;7373:18;;;7366:62;-1:-1:-1;;;7444:18:1;;;7437:36;7490:19;;2442:73:0::1;7113:402:1::0;2442:73:0::1;2526:28;2545:8;2526:18;:28::i;10379:380::-:0;-1:-1:-1;;;;;10515:19:0;;10507:68;;;;-1:-1:-1;;;10507:68:0;;7722:2:1;10507:68:0;;;7704:21:1;7761:2;7741:18;;;7734:30;7800:34;7780:18;;;7773:62;-1:-1:-1;;;7851:18:1;;;7844:34;7895:19;;10507:68:0;7520:400:1;10507:68:0;-1:-1:-1;;;;;10594:21:0;;10586:68;;;;-1:-1:-1;;;10586:68:0;;8127:2:1;10586:68:0;;;8109:21:1;8166:2;8146:18;;;8139:30;8205:34;8185:18;;;8178:62;-1:-1:-1;;;8256:18:1;;;8249:32;8298:19;;10586:68:0;7925:398:1;10586:68:0;-1:-1:-1;;;;;10667:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10719:32;;160:25:1;;;10719:32:0;;133:18:1;10719:32:0;;;;;;;10379:380;;;:::o;17097:4114::-;-1:-1:-1;;;;;17229:18:0;;17221:68;;;;-1:-1:-1;;;17221:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17308:16:0;;17300:64;;;;-1:-1:-1;;;17300:64:0;;;;;;;:::i;:::-;17381:6;17391:1;17381:11;17377:93;;17409:28;17425:4;17431:2;17435:1;17409:15;:28::i;:::-;17097:4114;;;:::o;17377:93::-;17486:17;;;;17482:1873;;;2100:6;;-1:-1:-1;;;;;17542:15:0;;;2100:6;;17542:15;;;;:49;;-1:-1:-1;2100:6:0;;-1:-1:-1;;;;;17578:13:0;;;2100:6;;17578:13;;17542:49;:86;;;;-1:-1:-1;;;;;;17612:16:0;;;;17542:86;:128;;;;-1:-1:-1;;;;;;17649:21:0;;17663:6;17649:21;;17542:128;:158;;;;-1:-1:-1;17692:8:0;;-1:-1:-1;;;17692:8:0;;;;17691:9;17542:158;17520:1824;;;17740:12;;;;;;;17735:222;;-1:-1:-1;;;;;17811:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17840:23:0;;;;;;:19;:23;;;;;;;;17811:52;17777:160;;;;-1:-1:-1;;;17777:160:0;;9340:2:1;17777:160:0;;;9322:21:1;9379:2;9359:18;;;9352:30;-1:-1:-1;;;9398:18:1;;;9391:52;9460:18;;17777:160:0;9138:346:1;17777:160:0;-1:-1:-1;;;;;18031:29:0;;;;;;:23;:29;;;;;;;;:79;;;;-1:-1:-1;;;;;;18086:24:0;;;;;;:20;:24;;;;;;;;18085:25;18031:79;18005:1324;;;18197:11;;18187:6;:21;;18153:151;;;;-1:-1:-1;;;18153:151:0;;9691:2:1;18153:151:0;;;9673:21:1;9730:2;9710:18;;;9703:30;9769:34;9749:18;;;9742:62;-1:-1:-1;;;9820:18:1;;;9813:42;9872:19;;18153:151:0;9489:408:1;18153:151:0;-1:-1:-1;;;;;18332:28:0;;;;;;:24;:28;;;;;;;;18327:266;;18477:13;;-1:-1:-1;;;;;6935:18:0;;6908:7;6935:18;;;;;;;;;;;18451:22;;:6;:22;:::i;:::-;:39;;18413:156;;;;-1:-1:-1;;;18413:156:0;;10104:2:1;18413:156:0;;;10086:21:1;10143:2;10123:18;;;10116:30;-1:-1:-1;;;10162:18:1;;;10155:49;10221:18;;18413:156:0;9902:343:1;18413:156:0;18005:1324;;;-1:-1:-1;;;;;18690:27:0;;;;;;:23;:27;;;;;;;;:79;;;;-1:-1:-1;;;;;;18743:26:0;;;;;;:20;:26;;;;;;;;18742:27;18690:79;18664:665;;;18856:11;;18846:6;:21;;18812:152;;;;-1:-1:-1;;;18812:152:0;;10452:2:1;18812:152:0;;;10434:21:1;10491:2;10471:18;;;10464:30;10530:34;10510:18;;;10503:62;-1:-1:-1;;;10581:18:1;;;10574:43;10634:19;;18812:152:0;10250:409:1;18664:665:0;-1:-1:-1;;;;;18995:24:0;;;;;;:20;:24;;;;;;;;18990:339;;-1:-1:-1;;;;;19049:28:0;;;;;;:24;:28;;;;;;;;19044:266;;19194:13;;-1:-1:-1;;;;;6935:18:0;;6908:7;6935:18;;;;;;;;;;;19168:22;;:6;:22;:::i;:::-;:39;;19130:156;;;;-1:-1:-1;;;19130:156:0;;10104:2:1;19130:156:0;;;10086:21:1;10143:2;10123:18;;;10116:30;-1:-1:-1;;;10162:18:1;;;10155:49;10221:18;;19130:156:0;9902:343:1;19130:156:0;19416:4;19367:28;6935:18;;;;;;;;;;;19474:13;;19450:37;;;;;;;19518:46;;;19551:13;;19542:6;:22;19518:46;:74;;;;-1:-1:-1;19581:11:0;;;;;;;19518:74;:100;;;;-1:-1:-1;19610:8:0;;-1:-1:-1;;;19610:8:0;;;;19609:9;19518:100;:147;;;;-1:-1:-1;;;;;;19636:29:0;;;;;;:23;:29;;;;;;;;19635:30;19518:147;:190;;;;-1:-1:-1;;;;;;19683:25:0;;;;;;:19;:25;;;;;;;;19682:26;19518:190;:231;;;;-1:-1:-1;;;;;;19726:23:0;;;;;;:19;:23;;;;;;;;19725:24;19518:231;19500:363;;;19776:8;:15;;-1:-1:-1;;;;19776:15:0;-1:-1:-1;;;19776:15:0;;;19808:10;:8;:10::i;:::-;19835:8;:16;;-1:-1:-1;;;;19835:16:0;;;19500:363;19891:8;;-1:-1:-1;;;;;20002:25:0;;19875:12;20002:25;;;:19;:25;;;;;;19891:8;-1:-1:-1;;;19891:8:0;;;;;19890:9;;20002:25;;:52;;-1:-1:-1;;;;;;20031:23:0;;;;;;:19;:23;;;;;;;;20002:52;19998:100;;;-1:-1:-1;20081:5:0;19998:100;20110:12;20215:7;20211:947;;;-1:-1:-1;;;;;20267:27:0;;;;;;:23;:27;;;;;;;;:49;;;;;20315:1;20298:14;;:18;20267:49;20263:746;;;20344:35;20375:3;20344:26;20355:14;;20344:6;:10;;:26;;;;:::i;:::-;:30;;:35::i;:::-;20337:42;;20436:14;;20421:11;;20414:4;:18;;;;:::i;:::-;20413:37;;;;:::i;:::-;20398:11;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;20509:14:0;;20493:12;;20486:19;;:4;:19;:::i;:::-;20485:38;;;;:::i;:::-;20469:12;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;20588:14:0;;20572:12;;20565:19;;:4;:19;:::i;:::-;20564:38;;;;:::i;:::-;20542:18;;:60;;;;;;;:::i;:::-;;;;-1:-1:-1;20263:746:0;;-1:-1:-1;20263:746:0;;-1:-1:-1;;;;;20664:29:0;;;;;;:23;:29;;;;;;;;:50;;;;;20713:1;20697:13;;:17;20664:50;20660:349;;;20742:34;20772:3;20742:25;20753:13;;20742:6;:10;;:25;;;;:::i;:34::-;20735:41;;20832:13;;20818:10;;20811:4;:17;;;;:::i;:::-;20810:35;;;;:::i;:::-;20795:11;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;20903:13:0;;20888:11;;20881:18;;:4;:18;:::i;:::-;20880:36;;;;:::i;:::-;20864:12;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;20980:13:0;;20965:11;;20958:18;;:4;:18;:::i;:::-;20957:36;;;;:::i;:::-;20935:18;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;;20660:349:0;21029:8;;21025:91;;21058:42;21074:4;21088;21095;21058:15;:42::i;:::-;21132:14;21142:4;21132:14;;:::i;:::-;;;20211:947;21170:33;21186:4;21192:2;21196:6;21170:15;:33::i;:::-;17210:4001;;;;17097:4114;;;:::o;9780:591::-;-1:-1:-1;;;;;9864:21:0;;9856:67;;;;-1:-1:-1;;;9856:67:0;;10999:2:1;9856:67:0;;;10981:21:1;11038:2;11018:18;;;11011:30;11077:34;11057:18;;;11050:62;-1:-1:-1;;;11128:18:1;;;11121:31;11169:19;;9856:67:0;10797:397:1;9856:67:0;-1:-1:-1;;;;;10023:18:0;;9998:22;10023:18;;;;;;;;;;;10060:24;;;;10052:71;;;;-1:-1:-1;;;10052:71:0;;11401:2:1;10052:71:0;;;11383:21:1;11440:2;11420:18;;;11413:30;11479:34;11459:18;;;11452:62;-1:-1:-1;;;11530:18:1;;;11523:32;11572:19;;10052:71:0;11199:398:1;10052:71:0;-1:-1:-1;;;;;10159:18:0;;:9;:18;;;;;;;;;;10180:23;;;10159:44;;10225:12;:22;;10197:6;;10159:9;10225:22;;10197:6;;10225:22;:::i;:::-;;;;-1:-1:-1;;10265:37:0;;160:25:1;;;10291:1:0;;-1:-1:-1;;;;;10265:37:0;;;;;148:2:1;133:18;10265:37:0;;;;;;;17097:4114;;;:::o;2570:191::-;2663:6;;;-1:-1:-1;;;;;2680:17:0;;;-1:-1:-1;;;;;;2680:17:0;;;;;;;2713:40;;2663:6;;;2680:17;2663:6;;2713:40;;2644:16;;2713:40;2633:128;2570:191;:::o;8632:733::-;-1:-1:-1;;;;;8772:20:0;;8764:70;;;;-1:-1:-1;;;8764:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8853:23:0;;8845:71;;;;-1:-1:-1;;;8845:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9013:17:0;;8989:21;9013:17;;;;;;;;;;;9049:23;;;;9041:74;;;;-1:-1:-1;;;9041:74:0;;11804:2:1;9041:74:0;;;11786:21:1;11843:2;11823:18;;;11816:30;11882:34;11862:18;;;11855:62;-1:-1:-1;;;11933:18:1;;;11926:36;11979:19;;9041:74:0;11602:402:1;9041:74:0;-1:-1:-1;;;;;9151:17:0;;;:9;:17;;;;;;;;;;;9171:22;;;9151:42;;9215:20;;;;;;;;:30;;9187:6;;9151:9;9215:30;;9187:6;;9215:30;:::i;:::-;;;;;;;;9280:9;-1:-1:-1;;;;;9263:35:0;9272:6;-1:-1:-1;;;;;9263:35:0;;9291:6;9263:35;;;;160:25:1;;148:2;133:18;;14:177;9263:35:0;;;;;;;;8753:612;8632:733;;;:::o;15503:1586::-;15586:4;15542:23;6935:18;;;;;;;;;;;15542:50;;15603:25;15692:12;;15658:18;;15631:11;;:45;;;;:::i;:::-;:73;;;;:::i;:::-;15603:101;-1:-1:-1;15715:12:0;15744:20;;;:46;;-1:-1:-1;15768:22:0;;15744:46;15740:85;;;15807:7;;;15503:1586::o;15740:85::-;15859:13;;:18;;15875:2;15859:18;:::i;:::-;15841:15;:36;15837:105;;;15912:13;;:18;;15928:2;15912:18;:::i;:::-;15894:36;;15837:105;16003:18;16078:1;16058:17;16043:11;;16025:15;:29;;;;:::i;:::-;16024:51;;;;:::i;:::-;:55;;;;:::i;:::-;16003:76;-1:-1:-1;16090:26:0;16119:31;:15;16003:76;16119:19;:31::i;:::-;16090:60;-1:-1:-1;16191:21:0;16225:35;16090:60;16225:15;:35::i;:::-;16273:18;16294:44;:21;16320:17;16294:25;:44::i;:::-;16273:65;;16351:18;16372:57;16411:17;16372:34;16387:18;;16372:10;:14;;:34;;;;:::i;:57::-;16351:78;;16440:17;16460:51;16493:17;16460:28;16475:12;;16460:10;:14;;:28;;;;:::i;:51::-;16440:71;-1:-1:-1;16524:23:0;16440:71;16550:23;16563:10;16550;:23;:::i;:::-;:35;;;;:::i;:::-;16612:1;16598:11;:15;;;16624:18;:22;;;16657:12;:16;;;16708:10;;16700:46;;16524:61;;-1:-1:-1;;;;;;16708:10:0;;16732:9;;16700:46;16612:1;16700:46;16732:9;16708:10;16700:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16686:60:0;;-1:-1:-1;;16763:14:0;;;;;:37;;;16799:1;16781:15;:19;16763:37;16759:261;;;16817:41;16830:10;16842:15;16817:12;:41::i;:::-;16982:11;;16878:130;;;12421:25:1;;;12477:2;12462:18;;12455:34;;;12505:18;;;12498:34;;;;16878:130:0;;;;;;12409:2:1;16878:130:0;;;16759:261;17038:10;;17030:51;;-1:-1:-1;;;;;17038:10:0;;;;17059:21;17030:51;;;;;17038:10;17030:51;17038:10;17030:51;17059:21;17038:10;17030:51;;;;;;;;;;;;;;;;;;;;;15531:1558;;;;;;;;;;15503:1586::o;728:98::-;786:7;813:5;817:1;813;:5;:::i;:::-;806:12;728:98;-1:-1:-1;;;728:98:0:o;834:::-;892:7;919:5;923:1;919;:5;:::i;622:98::-;680:7;707:5;711:1;707;:5;:::i;22668:570::-;22817:16;;;22831:1;22817:16;;;;;;;;22793:21;;22817:16;;;;;;;;;;-1:-1:-1;22817:16:0;22793:40;;22862:4;22844;22849:1;22844:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22844:23:0;;;-1:-1:-1;;;;;22844:23:0;;;;;22888:9;-1:-1:-1;;;;;22888:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22878:4;22883:1;22878:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;22878:26:0;;;-1:-1:-1;;;;;22878:26:0;;;;;22917:56;22934:4;22949:9;22961:11;22917:8;:56::i;:::-;23012:218;;-1:-1:-1;;;23012:218:0;;-1:-1:-1;;;;;23012:9:0;:60;;;;:218;;23087:11;;23113:1;;23157:4;;23184;;23204:15;;23012:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22722:516;22668:570;:::o;21996:503::-;22144:56;22161:4;22176:9;22188:11;22144:8;:56::i;:::-;22441:9;;22243:248;;-1:-1:-1;;;22243:248:0;;22309:4;22243:248;;;14389:34:1;14439:18;;;14432:34;;;22355:1:0;14482:18:1;;;14475:34;;;14525:18;;;14518:34;-1:-1:-1;;;;;22441:9:0;;;14568:19:1;;;14561:44;22465:15:0;14621:19:1;;;14614:35;22243:9:0;:25;;;;;;22276:9;;14323:19:1;;22243:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21996:503;;:::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;979:131::-;-1:-1:-1;;;;;1054:31:1;;1044:42;;1034:70;;1100:1;1097;1090:12;1115:315;1183:6;1191;1244:2;1232:9;1223:7;1219:23;1215:32;1212:52;;;1260:1;1257;1250:12;1212:52;1299:9;1286:23;1318:31;1343:5;1318:31;:::i;:::-;1368:5;1420:2;1405:18;;;;1392:32;;-1:-1:-1;;;1115:315:1:o;1627:180::-;1686:6;1739:2;1727:9;1718:7;1714:23;1710:32;1707:52;;;1755:1;1752;1745:12;1707:52;-1:-1:-1;1778:23:1;;1627:180;-1:-1:-1;1627:180:1:o;1812:456::-;1889:6;1897;1905;1958:2;1946:9;1937:7;1933:23;1929:32;1926:52;;;1974:1;1971;1964:12;1926:52;2013:9;2000:23;2032:31;2057:5;2032:31;:::i;:::-;2082:5;-1:-1:-1;2139:2:1;2124:18;;2111:32;2152:33;2111:32;2152:33;:::i;:::-;1812:456;;2204:7;;-1:-1:-1;;;2258:2:1;2243:18;;;;2230:32;;1812:456::o;2273:247::-;2332:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:52;;;2401:1;2398;2391:12;2353:52;2440:9;2427:23;2459:31;2484:5;2459:31;:::i;2922:416::-;2987:6;2995;3048:2;3036:9;3027:7;3023:23;3019:32;3016:52;;;3064:1;3061;3054:12;3016:52;3103:9;3090:23;3122:31;3147:5;3122:31;:::i;:::-;3172:5;-1:-1:-1;3229:2:1;3214:18;;3201:32;3271:15;;3264:23;3252:36;;3242:64;;3302:1;3299;3292:12;3242:64;3325:7;3315:17;;;2922:416;;;;;:::o;3343:388::-;3411:6;3419;3472:2;3460:9;3451:7;3447:23;3443:32;3440:52;;;3488:1;3485;3478:12;3440:52;3527:9;3514:23;3546:31;3571:5;3546:31;:::i;:::-;3596:5;-1:-1:-1;3653:2:1;3638:18;;3625:32;3666:33;3625:32;3666:33;:::i;3736:380::-;3815:1;3811:12;;;;3858;;;3879:61;;3933:4;3925:6;3921:17;3911:27;;3879:61;3986:2;3978:6;3975:14;3955:18;3952:38;3949:161;;4032:10;4027:3;4023:20;4020:1;4013:31;4067:4;4064:1;4057:15;4095:4;4092:1;4085:15;3949:161;;3736:380;;;:::o;4121:356::-;4323:2;4305:21;;;4342:18;;;4335:30;4401:34;4396:2;4381:18;;4374:62;4468:2;4453:18;;4121:356::o;4482:127::-;4543:10;4538:3;4534:20;4531:1;4524:31;4574:4;4571:1;4564:15;4598:4;4595:1;4588:15;4614:168;4687:9;;;4718;;4735:15;;;4729:22;;4715:37;4705:71;;4756:18;;:::i;4787:217::-;4827:1;4853;4843:132;;4897:10;4892:3;4888:20;4885:1;4878:31;4932:4;4929:1;4922:15;4960:4;4957:1;4950:15;4843:132;-1:-1:-1;4989:9:1;;4787:217::o;5825:125::-;5890:9;;;5911:10;;;5908:36;;;5924:18;;:::i;8328:401::-;8530:2;8512:21;;;8569:2;8549:18;;;8542:30;8608:34;8603:2;8588:18;;8581:62;-1:-1:-1;;;8674:2:1;8659:18;;8652:35;8719:3;8704:19;;8328:401::o;8734:399::-;8936:2;8918:21;;;8975:2;8955:18;;;8948:30;9014:34;9009:2;8994:18;;8987:62;-1:-1:-1;;;9080:2:1;9065:18;;9058:33;9123:3;9108:19;;8734:399::o;10664:128::-;10731:9;;;10752:11;;;10749:37;;;10766:18;;:::i;12675:127::-;12736:10;12731:3;12727:20;12724:1;12717:31;12767:4;12764:1;12757:15;12791:4;12788:1;12781:15;12807:251;12877:6;12930:2;12918:9;12909:7;12905:23;12901:32;12898:52;;;12946:1;12943;12936:12;12898:52;12978:9;12972:16;12997:31;13022:5;12997:31;:::i;13063:980::-;13325:4;13373:3;13362:9;13358:19;13404:6;13393:9;13386:25;13430:2;13468:6;13463:2;13452:9;13448:18;13441:34;13511:3;13506:2;13495:9;13491:18;13484:31;13535:6;13570;13564:13;13601:6;13593;13586:22;13639:3;13628:9;13624:19;13617:26;;13678:2;13670:6;13666:15;13652:29;;13699:1;13709:195;13723:6;13720:1;13717:13;13709:195;;;13788:13;;-1:-1:-1;;;;;13784:39:1;13772:52;;13879:15;;;;13844:12;;;;13820:1;13738:9;13709:195;;;-1:-1:-1;;;;;;;13960:32:1;;;;13955:2;13940:18;;13933:60;-1:-1:-1;;;14024:3:1;14009:19;14002:35;13921:3;13063:980;-1:-1:-1;;;13063:980:1:o;14660:306::-;14748:6;14756;14764;14817:2;14805:9;14796:7;14792:23;14788:32;14785:52;;;14833:1;14830;14823:12;14785:52;14862:9;14856:16;14846:26;;14912:2;14901:9;14897:18;14891:25;14881:35;;14956:2;14945:9;14941:18;14935:25;14925:35;;14660:306;;;;;:::o

Swarm Source

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