ETH Price: $3,431.96 (+5.42%)
Gas: 8 Gwei

Token

World Peace - Love (WPL)
 

Overview

Max Total Supply

642,537,284.358904281706701258 WPL

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,205,641.046655117054736327 WPL

Value
$0.00
0xff3e7b96a810d210f57363a265c390563fbfdc36
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:
WPL

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-16
*/

/**
"Peace is always beautiful."
"When the power of love overcomes the love of power, the world will know peace."

Website: https://wpeace.world
Twitter: https://twitter.com/WPEACE_LOVE
Telegram: https://t.me/WPEACE_LOVE
*/ 

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

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

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

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 IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IUniswapRouter public immutable uniswapRouter;
    address public immutable uniswapPair;
    address public routerAddr = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromMaxTxn;
    mapping(address => bool) private _isExcludedFromMaxWallet;

    bool private swapping;
    uint256 public maxTransaction;
    uint256 public swapTokensAt;
    uint256 public maxWallet;

    bool public hasLimitsInTemporary = true;
    bool public tradeActivated = false;
    bool public swapEnabled = false;

    uint256 public sellFees;
    uint256 public marketingSellFee;
    uint256 public lpSellFee;
    uint256 public devSellFee;

    uint256 public buyFees;
    uint256 public marketingTaxBuy;
    uint256 public lpTaxBuy;
    uint256 public devTaxBuy;

    uint256 public marketingFeeTokens;
    uint256 public lpFeeTokens;
    uint256 public devFeeTokens;
    
    address public developmentAddress;
    address public marketingAddress;
    address public lpAddress;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _lastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 private launchBlock;
    uint256 private deadBlocks;
    mapping(address => bool) public automatedMarketMakerPairs;

    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(isFeeExcluded(msg.sender));_;
    }

    constructor() ERC20("World Peace - Love", "WPL") {
        IUniswapRouter _uniswapV2Router = IUniswapRouter(routerAddr); 

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

        uniswapPair = IUniswapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapPair), true);
        _setAutomaticMarketMaker(address(uniswapPair), true);

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

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTransaction = 25_000_000 * 1e18;
        maxWallet = 25_000_000 * 1e18;
        swapTokensAt = (totalSupply * 1) / 10000;

        marketingTaxBuy = _buyMarketingFee;
        lpTaxBuy = _buyLiquidityFee;
        devTaxBuy = _buyDevFee;
        buyFees = marketingTaxBuy + lpTaxBuy + devTaxBuy;

        marketingSellFee = _sellMarketingFee;
        lpSellFee = _sellLiquidityFee;
        devSellFee = _sellDevFee;
        sellFees = marketingSellFee + lpSellFee + devSellFee;

        developmentAddress = address(0x2fb197CF3640Ef6D864073fB867dE150301dF04D); 
        marketingAddress = msg.sender; 
        lpAddress = msg.sender; 

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

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

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

        _mint(msg.sender, totalSupply);
    }
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransaction lower than 0.1%"
        );
        maxTransaction = newNum * (10**18);
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        marketingTaxBuy = 1;
        lpTaxBuy = 0;
        devTaxBuy = 0;
        buyFees = 1;
        hasLimitsInTemporary = false;

        marketingSellFee = 1;
        lpSellFee = 0;
        devSellFee = 0;
        sellFees = 1;
        return true;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

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

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

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

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

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

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    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] = uniswapRouter.WETH();

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = lpFeeTokens +
            marketingFeeTokens +
            devFeeTokens;
        bool success;

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

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

        // Halve the amount of liquidity tokens
        uint256 tokensToLp = (contractBalance * lpFeeTokens) / 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(marketingFeeTokens).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(devFeeTokens).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMark - ethForDev;

        lpFeeTokens = 0;
        marketingFeeTokens = 0;
        devFeeTokens = 0;

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

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

    function isFeeExcluded(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function enableTrading() external onlyOwner {
        require(!tradeActivated, "Token launched");
        tradeActivated = true;
        launchBlock = block.number;
        swapEnabled = true;
        deadBlocks = 0;
    }

    receive() external payable {}

    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 (hasLimitsInTemporary) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradeActivated) {
                    require(
                        _isExcludedFromFee[from] || _isExcludedFromFee[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapRouter) &&
                        to != address(uniswapPair)
                    ) {
                        require(
                            _lastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _lastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAt;

        if (
            canSwap &&
            amount > swapTokensAt &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellFees > 0) {
                fees = amount.mul(sellFees).div(100);
                lpFeeTokens += (fees * lpSellFee) / sellFees;
                devFeeTokens += (fees * devSellFee) / sellFees;
                marketingFeeTokens += (fees * marketingSellFee) / sellFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyFees > 0) {
                fees = amount.mul(buyFees).div(100);
                lpFeeTokens += (fees * lpTaxBuy) / buyFees;
                devFeeTokens += (fees * devTaxBuy) / buyFees;
                marketingFeeTokens += (fees * marketingTaxBuy) / buyFees;
            }

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

            amount -= fees;
        }

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

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":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFeeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentAddress","outputs":[{"internalType":"address","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":"excludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hasLimitsInTemporary","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":"isFeeExcluded","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":"lpFeeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeActivated","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","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"}]

60c0604052600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600e805462ffffff19166001908117909155601e805460ff191690911790553480156200005657600080fd5b5060405180604001604052806012815260200171576f726c64205065616365202d204c6f766560701b8152506040518060400160405280600381526020016215d41360ea1b8152508160039081620000af919062000889565b506004620000be828262000889565b505050620000db620000d5620004b760201b60201c565b620004bb565b6006546001600160a01b0316620000f48160016200050d565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000955565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d9919062000955565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000955565b6001600160a01b031660a0819052620002689060016200050d565b60a0516200027890600162000587565b6a14adf4b7320334b9000000600b819055600d5560126000808281806b033b2e3c9fd0803ce8000000612710620002b18260016200099d565b620002bd9190620009bd565b600c5560148790556015869055601685905584620002dc8789620009e0565b620002e89190620009e0565b60135560108490556011839055601282905581620003078486620009e0565b620003139190620009e0565b600f55601a80546001600160a01b0319908116732fb197cf3640ef6d864073fb867de150301df04d17909155601b8054821633908117909155601c8054909216179055620003756200036d6005546001600160a01b031690565b6001620005db565b62000382306001620005db565b6200039161dead6001620005db565b601a54620003aa906001600160a01b03166001620005db565b601c54620003c3906001600160a01b03166001620005db565b620003e2620003da6005546001600160a01b031690565b60016200050d565b620003ef3060016200050d565b620003fe61dead60016200050d565b601a5462000417906001600160a01b031660016200050d565b601c5462000430906001600160a01b031660016200050d565b6200044f620004476005546001600160a01b031690565b600162000685565b6200045c30600162000685565b6200046b61dead600162000685565b601a5462000484906001600160a01b0316600162000685565b601c546200049d906001600160a01b0316600162000685565b620004a93382620006fb565b5050505050505050620009f6565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b031633146200055c5760405162461bcd60e51b8152602060048201819052602482015260008051602062002fab83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620006265760405162461bcd60e51b8152602060048201819052602482015260008051602062002fab833981519152604482015260640162000553565b6001600160a01b038216600081815260076020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314620006d05760405162461bcd60e51b8152602060048201819052602482015260008051602062002fab833981519152604482015260640162000553565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038216620007535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000553565b8060026000828254620007679190620009e0565b90915550506001600160a01b0382166000908152602081905260408120805483929062000796908490620009e0565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200081057607f821691505b6020821081036200083157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007e057600081815260208120601f850160051c81016020861015620008605750805b601f850160051c820191505b8181101562000881578281556001016200086c565b505050505050565b81516001600160401b03811115620008a557620008a5620007e5565b620008bd81620008b68454620007fb565b8462000837565b602080601f831160018114620008f55760008415620008dc5750858301515b600019600386901b1c1916600185901b17855562000881565b600085815260208120601f198616915b82811015620009265788860151825594840194600190910190840162000905565b5085821015620009455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200096857600080fd5b81516001600160a01b03811681146200098057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620009b757620009b762000987565b92915050565b600082620009db57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620009b757620009b762000987565b60805160a05161255e62000a4d6000396000818161078e01526112eb015260008181610511015281816112ad01528181611f2901528181611fe20152818161201e015281816120980152612100015261255e6000f3fe6080604052600436106102b25760003560e01c80638da5cb5b11610175578063c2db0760116100dc578063dd62ed3e11610095578063e7f444b31161006f578063e7f444b314610872578063ee1510a314610888578063f2fde38b1461089e578063f8b45b05146108be57600080fd5b8063dd62ed3e14610800578063e0f3ccf514610846578063e4748b9e1461085c57600080fd5b8063c2db076014610750578063c3f70b5214610766578063c816841b1461077c578063c876d0b9146107b0578063d2fcc001146107ca578063d36e8239146107ea57600080fd5b8063a9059cbb1161012e578063a9059cbb1461067b578063b45e83f81461069b578063b62496f5146106b1578063bca238aa146106e1578063bfb0f8fb1461071a578063c18bc1951461073057600080fd5b80638da5cb5b146105c857806395d89b41146105e65780639b4dc8cc146105fb5780639dc29fac1461061b578063a457c2d71461063b578063a5ece9411461065b57600080fd5b80636b90694c11610219578063751039fc116101d2578063751039fc146105335780637571336a146105485780637a88f5dc146105685780637cf1fb39146105875780638a8c523c1461059d5780638c81f0d3146105b257600080fd5b80636b90694c1461045e5780636ddd17131461047e57806370a082311461049e578063715018a6146104d4578063721e6233146104e9578063735de9f7146104ff57600080fd5b8063313ce5671161026b578063313ce5671461039a57806339509351146103b657806342966c68146103d6578063467677f9146103f65780634a5bf27314610410578063638b1b141461042657600080fd5b806306fdde03146102be578063095ea7b3146102e95780631714bf1b1461031957806318160ddd1461033b578063203e727e1461035a57806323b872dd1461037a57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108d4565b6040516102e09190612178565b60405180910390f35b3480156102f557600080fd5b506103096103043660046121db565b610966565b60405190151581526020016102e0565b34801561032557600080fd5b50610339610334366004612207565b61097d565b005b34801561034757600080fd5b506002545b6040519081526020016102e0565b34801561036657600080fd5b50610339610375366004612245565b610a0f565b34801561038657600080fd5b5061030961039536600461225e565b610ae6565b3480156103a657600080fd5b50604051601281526020016102e0565b3480156103c257600080fd5b506103096103d13660046121db565b610b90565b3480156103e257600080fd5b506103396103f1366004612245565b610bcc565b34801561040257600080fd5b50600e546103099060ff1681565b34801561041c57600080fd5b5061034c60165481565b34801561043257600080fd5b50601a54610446906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561046a57600080fd5b50600654610446906001600160a01b031681565b34801561048a57600080fd5b50600e546103099062010000900460ff1681565b3480156104aa57600080fd5b5061034c6104b936600461229f565b6001600160a01b031660009081526020819052604090205490565b3480156104e057600080fd5b50610339610bd9565b3480156104f557600080fd5b5061034c60145481565b34801561050b57600080fd5b506104467f000000000000000000000000000000000000000000000000000000000000000081565b34801561053f57600080fd5b50610309610c0f565b34801561055457600080fd5b50610339610563366004612207565b610c74565b34801561057457600080fd5b50600e5461030990610100900460ff1681565b34801561059357600080fd5b5061034c60155481565b3480156105a957600080fd5b50610339610cc9565b3480156105be57600080fd5b5061034c60115481565b3480156105d457600080fd5b506005546001600160a01b0316610446565b3480156105f257600080fd5b506102d3610d58565b34801561060757600080fd5b50601c54610446906001600160a01b031681565b34801561062757600080fd5b506103396106363660046121db565b610d67565b34801561064757600080fd5b506103096106563660046121db565b610d91565b34801561066757600080fd5b50601b54610446906001600160a01b031681565b34801561068757600080fd5b506103096106963660046121db565b610e2a565b3480156106a757600080fd5b5061034c60125481565b3480156106bd57600080fd5b506103096106cc36600461229f565b60216020526000908152604090205460ff1681565b3480156106ed57600080fd5b506103096106fc36600461229f565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561072657600080fd5b5061034c60195481565b34801561073c57600080fd5b5061033961074b366004612245565b610e37565b34801561075c57600080fd5b5061034c60185481565b34801561077257600080fd5b5061034c600b5481565b34801561078857600080fd5b506104467f000000000000000000000000000000000000000000000000000000000000000081565b3480156107bc57600080fd5b50601e546103099060ff1681565b3480156107d657600080fd5b506103396107e5366004612207565b610f08565b3480156107f657600080fd5b5061034c600c5481565b34801561080c57600080fd5b5061034c61081b3660046122bc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561085257600080fd5b5061034c600f5481565b34801561086857600080fd5b5061034c60135481565b34801561087e57600080fd5b5061034c60105481565b34801561089457600080fd5b5061034c60175481565b3480156108aa57600080fd5b506103396108b936600461229f565b610f5d565b3480156108ca57600080fd5b5061034c600d5481565b6060600380546108e3906122ea565b80601f016020809104026020016040519081016040528092919081815260200182805461090f906122ea565b801561095c5780601f106109315761010080835404028352916020019161095c565b820191906000526020600020905b81548152906001019060200180831161093f57829003601f168201915b5050505050905090565b6000610973338484610ff5565b5060015b92915050565b6005546001600160a01b031633146109b05760405162461bcd60e51b81526004016109a790612324565b60405180910390fd5b6001600160a01b038216600081815260076020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610a395760405162461bcd60e51b81526004016109a790612324565b670de0b6b3a76400006103e8610a4e60025490565b610a5990600161236f565b610a639190612386565b610a6d9190612386565b811015610ace5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b60648201526084016109a7565b610ae081670de0b6b3a764000061236f565b600b5550565b6000610af3848484611119565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b785760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109a7565b610b858533858403610ff5565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610973918590610bc79086906123a8565b610ff5565b610bd63382611993565b50565b6005546001600160a01b03163314610c035760405162461bcd60e51b81526004016109a790612324565b610c0d6000611ae1565b565b6005546000906001600160a01b03163314610c3c5760405162461bcd60e51b81526004016109a790612324565b50600160148190556000601581905560168190556013829055600e805460ff1916905560108290556011819055601255600f81905590565b6005546001600160a01b03163314610c9e5760405162461bcd60e51b81526004016109a790612324565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cf35760405162461bcd60e51b81526004016109a790612324565b600e54610100900460ff1615610d3c5760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b881b185d5b98da195960921b60448201526064016109a7565b600e805443601f5562ffff001916620101001790556000602055565b6060600480546108e3906122ea565b3360009081526007602052604090205460ff16610d8357600080fd5b610d8d8282611993565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a7565b610e203385858403610ff5565b5060019392505050565b6000610973338484611119565b6005546001600160a01b03163314610e615760405162461bcd60e51b81526004016109a790612324565b670de0b6b3a76400006103e8610e7660025490565b610e8190600561236f565b610e8b9190612386565b610e959190612386565b811015610ef05760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016109a7565b610f0281670de0b6b3a764000061236f565b600d5550565b6005546001600160a01b03163314610f325760405162461bcd60e51b81526004016109a790612324565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f875760405162461bcd60e51b81526004016109a790612324565b6001600160a01b038116610fec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a7565b610bd681611ae1565b6001600160a01b0383166110575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a7565b6001600160a01b0382166110b85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661113f5760405162461bcd60e51b81526004016109a7906123bb565b6001600160a01b0382166111655760405162461bcd60e51b81526004016109a790612400565b8060000361117e5761117983836000611b33565b505050565b600e5460ff1615611668576005546001600160a01b038481169116148015906111b557506005546001600160a01b03838116911614155b80156111c957506001600160a01b03821615155b80156111e057506001600160a01b03821661dead14155b80156111ef5750600a5460ff16155b1561166857600e54610100900460ff16611287576001600160a01b03831660009081526007602052604090205460ff168061124257506001600160a01b03821660009081526007602052604090205460ff165b6112875760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109a7565b601e5460ff16156113ce576005546001600160a01b038381169116148015906112e257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561132057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156113ce57326000908152601d602052604090205443116113bb5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016109a7565b326000908152601d602052604090204390555b6001600160a01b03831660009081526021602052604090205460ff16801561140f57506001600160a01b03821660009081526008602052604090205460ff16155b1561150d57600b5481111561147e5760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b60648201526084016109a7565b6001600160a01b03821660009081526009602052604090205460ff1661150857600d546001600160a01b0383166000908152602081905260409020546114c490836123a8565b11156115085760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a7565b611668565b6001600160a01b03821660009081526021602052604090205460ff16801561154e57506001600160a01b03831660009081526008602052604090205460ff16155b156115be57600b548111156115085760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b60648201526084016109a7565b6001600160a01b03821660009081526008602052604090205460ff16611668576001600160a01b03821660009081526009602052604090205460ff1661166857600d546001600160a01b03831660009081526020819052604090205461162490836123a8565b11156116685760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a7565b30600090815260208190526040902054600c548110801590819061168d5750600c5483115b80156116a15750600e5462010000900460ff165b80156116b05750600a5460ff16155b80156116d557506001600160a01b03851660009081526021602052604090205460ff16155b80156116fa57506001600160a01b03851660009081526007602052604090205460ff16155b801561171f57506001600160a01b03841660009081526007602052604090205460ff16155b1561174457600a805460ff19166001179055611739611c88565b600a805460ff191690555b600a546001600160a01b03861660009081526007602052604090205460ff9182161591168061178b57506001600160a01b03851660009081526007602052604090205460ff165b15611794575060005b6000811561197f576001600160a01b03861660009081526021602052604090205460ff1680156117c657506000600f54115b15611884576117eb60646117e5600f5488611ea790919063ffffffff16565b90611eba565b9050600f54601154826117fe919061236f565b6118089190612386565b6018600082825461181991906123a8565b9091555050600f5460125461182e908361236f565b6118389190612386565b6019600082825461184991906123a8565b9091555050600f5460105461185e908361236f565b6118689190612386565b6017600082825461187991906123a8565b909155506119619050565b6001600160a01b03871660009081526021602052604090205460ff1680156118ae57506000601354115b15611961576118cd60646117e560135488611ea790919063ffffffff16565b9050601354601554826118e0919061236f565b6118ea9190612386565b601860008282546118fb91906123a8565b9091555050601354601654611910908361236f565b61191a9190612386565b6019600082825461192b91906123a8565b9091555050601354601454611940908361236f565b61194a9190612386565b6017600082825461195b91906123a8565b90915550505b801561197257611972873083611b33565b61197c8186612443565b94505b61198a878787611b33565b50505050505050565b6001600160a01b0382166119f35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109a7565b6001600160a01b03821660009081526020819052604090205481811015611a675760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109a7565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611a96908490612443565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611b595760405162461bcd60e51b81526004016109a7906123bb565b6001600160a01b038216611b7f5760405162461bcd60e51b81526004016109a790612400565b6001600160a01b03831660009081526020819052604090205481811015611bf75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a7565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c2e9084906123a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c7a91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601954601754601854611caf91906123a8565b611cb991906123a8565b90506000821580611cc8575081155b15611cd257505050565b600c54611ce090601461236f565b831115611cf857600c54611cf590601461236f565b92505b600060028360185486611d0b919061236f565b611d159190612386565b611d1f9190612386565b90506000611d2d8583611ec6565b905047611d3982611ed2565b6000611d454783611ec6565b90506000611d62876117e560175485611ea790919063ffffffff16565b90506000611d7f886117e560195486611ea790919063ffffffff16565b9050600081611d8e8486612443565b611d989190612443565b6000601881905560178190556019819055601b546040519293506001600160a01b031691849181818185875af1925050503d8060008114611df5576040519150601f19603f3d011682016040523d82523d6000602084013e611dfa565b606091505b50909850508615801590611e0e5750600081115b15611e6157611e1d8782612092565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b601a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611e9a573d6000803e3d6000fd5b5050505050505050505050565b6000611eb3828461236f565b9392505050565b6000611eb38284612386565b6000611eb38284612443565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f0757611f07612456565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa9919061246c565b81600181518110611fbc57611fbc612456565b60200260200101906001600160a01b031690816001600160a01b031681525050612007307f000000000000000000000000000000000000000000000000000000000000000084610ff5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061205c908590600090869030904290600401612489565b600060405180830381600087803b15801561207657600080fd5b505af115801561208a573d6000803e3d6000fd5b505050505050565b6120bd307f000000000000000000000000000000000000000000000000000000000000000084610ff5565b601c5460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af115801561214c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061217191906124fa565b5050505050565b600060208083528351808285015260005b818110156121a557858101830151858201604001528201612189565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bd657600080fd5b600080604083850312156121ee57600080fd5b82356121f9816121c6565b946020939093013593505050565b6000806040838503121561221a57600080fd5b8235612225816121c6565b91506020830135801515811461223a57600080fd5b809150509250929050565b60006020828403121561225757600080fd5b5035919050565b60008060006060848603121561227357600080fd5b833561227e816121c6565b9250602084013561228e816121c6565b929592945050506040919091013590565b6000602082840312156122b157600080fd5b8135611eb3816121c6565b600080604083850312156122cf57600080fd5b82356122da816121c6565b9150602083013561223a816121c6565b600181811c908216806122fe57607f821691505b60208210810361231e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761097757610977612359565b6000826123a357634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561097757610977612359565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561097757610977612359565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561247e57600080fd5b8151611eb3816121c6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d95784516001600160a01b0316835293830193918301916001016124b4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ac74f01fc8db64ca8ad492380c45194aee45e31b58c9990fed1a04e0f2c58f2e64736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80638da5cb5b11610175578063c2db0760116100dc578063dd62ed3e11610095578063e7f444b31161006f578063e7f444b314610872578063ee1510a314610888578063f2fde38b1461089e578063f8b45b05146108be57600080fd5b8063dd62ed3e14610800578063e0f3ccf514610846578063e4748b9e1461085c57600080fd5b8063c2db076014610750578063c3f70b5214610766578063c816841b1461077c578063c876d0b9146107b0578063d2fcc001146107ca578063d36e8239146107ea57600080fd5b8063a9059cbb1161012e578063a9059cbb1461067b578063b45e83f81461069b578063b62496f5146106b1578063bca238aa146106e1578063bfb0f8fb1461071a578063c18bc1951461073057600080fd5b80638da5cb5b146105c857806395d89b41146105e65780639b4dc8cc146105fb5780639dc29fac1461061b578063a457c2d71461063b578063a5ece9411461065b57600080fd5b80636b90694c11610219578063751039fc116101d2578063751039fc146105335780637571336a146105485780637a88f5dc146105685780637cf1fb39146105875780638a8c523c1461059d5780638c81f0d3146105b257600080fd5b80636b90694c1461045e5780636ddd17131461047e57806370a082311461049e578063715018a6146104d4578063721e6233146104e9578063735de9f7146104ff57600080fd5b8063313ce5671161026b578063313ce5671461039a57806339509351146103b657806342966c68146103d6578063467677f9146103f65780634a5bf27314610410578063638b1b141461042657600080fd5b806306fdde03146102be578063095ea7b3146102e95780631714bf1b1461031957806318160ddd1461033b578063203e727e1461035a57806323b872dd1461037a57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108d4565b6040516102e09190612178565b60405180910390f35b3480156102f557600080fd5b506103096103043660046121db565b610966565b60405190151581526020016102e0565b34801561032557600080fd5b50610339610334366004612207565b61097d565b005b34801561034757600080fd5b506002545b6040519081526020016102e0565b34801561036657600080fd5b50610339610375366004612245565b610a0f565b34801561038657600080fd5b5061030961039536600461225e565b610ae6565b3480156103a657600080fd5b50604051601281526020016102e0565b3480156103c257600080fd5b506103096103d13660046121db565b610b90565b3480156103e257600080fd5b506103396103f1366004612245565b610bcc565b34801561040257600080fd5b50600e546103099060ff1681565b34801561041c57600080fd5b5061034c60165481565b34801561043257600080fd5b50601a54610446906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561046a57600080fd5b50600654610446906001600160a01b031681565b34801561048a57600080fd5b50600e546103099062010000900460ff1681565b3480156104aa57600080fd5b5061034c6104b936600461229f565b6001600160a01b031660009081526020819052604090205490565b3480156104e057600080fd5b50610339610bd9565b3480156104f557600080fd5b5061034c60145481565b34801561050b57600080fd5b506104467f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561053f57600080fd5b50610309610c0f565b34801561055457600080fd5b50610339610563366004612207565b610c74565b34801561057457600080fd5b50600e5461030990610100900460ff1681565b34801561059357600080fd5b5061034c60155481565b3480156105a957600080fd5b50610339610cc9565b3480156105be57600080fd5b5061034c60115481565b3480156105d457600080fd5b506005546001600160a01b0316610446565b3480156105f257600080fd5b506102d3610d58565b34801561060757600080fd5b50601c54610446906001600160a01b031681565b34801561062757600080fd5b506103396106363660046121db565b610d67565b34801561064757600080fd5b506103096106563660046121db565b610d91565b34801561066757600080fd5b50601b54610446906001600160a01b031681565b34801561068757600080fd5b506103096106963660046121db565b610e2a565b3480156106a757600080fd5b5061034c60125481565b3480156106bd57600080fd5b506103096106cc36600461229f565b60216020526000908152604090205460ff1681565b3480156106ed57600080fd5b506103096106fc36600461229f565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561072657600080fd5b5061034c60195481565b34801561073c57600080fd5b5061033961074b366004612245565b610e37565b34801561075c57600080fd5b5061034c60185481565b34801561077257600080fd5b5061034c600b5481565b34801561078857600080fd5b506104467f00000000000000000000000087ee53fa8e245c6b249648a242b5bb86a65d932981565b3480156107bc57600080fd5b50601e546103099060ff1681565b3480156107d657600080fd5b506103396107e5366004612207565b610f08565b3480156107f657600080fd5b5061034c600c5481565b34801561080c57600080fd5b5061034c61081b3660046122bc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561085257600080fd5b5061034c600f5481565b34801561086857600080fd5b5061034c60135481565b34801561087e57600080fd5b5061034c60105481565b34801561089457600080fd5b5061034c60175481565b3480156108aa57600080fd5b506103396108b936600461229f565b610f5d565b3480156108ca57600080fd5b5061034c600d5481565b6060600380546108e3906122ea565b80601f016020809104026020016040519081016040528092919081815260200182805461090f906122ea565b801561095c5780601f106109315761010080835404028352916020019161095c565b820191906000526020600020905b81548152906001019060200180831161093f57829003601f168201915b5050505050905090565b6000610973338484610ff5565b5060015b92915050565b6005546001600160a01b031633146109b05760405162461bcd60e51b81526004016109a790612324565b60405180910390fd5b6001600160a01b038216600081815260076020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610a395760405162461bcd60e51b81526004016109a790612324565b670de0b6b3a76400006103e8610a4e60025490565b610a5990600161236f565b610a639190612386565b610a6d9190612386565b811015610ace5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b60648201526084016109a7565b610ae081670de0b6b3a764000061236f565b600b5550565b6000610af3848484611119565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b785760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109a7565b610b858533858403610ff5565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610973918590610bc79086906123a8565b610ff5565b610bd63382611993565b50565b6005546001600160a01b03163314610c035760405162461bcd60e51b81526004016109a790612324565b610c0d6000611ae1565b565b6005546000906001600160a01b03163314610c3c5760405162461bcd60e51b81526004016109a790612324565b50600160148190556000601581905560168190556013829055600e805460ff1916905560108290556011819055601255600f81905590565b6005546001600160a01b03163314610c9e5760405162461bcd60e51b81526004016109a790612324565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cf35760405162461bcd60e51b81526004016109a790612324565b600e54610100900460ff1615610d3c5760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b881b185d5b98da195960921b60448201526064016109a7565b600e805443601f5562ffff001916620101001790556000602055565b6060600480546108e3906122ea565b3360009081526007602052604090205460ff16610d8357600080fd5b610d8d8282611993565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a7565b610e203385858403610ff5565b5060019392505050565b6000610973338484611119565b6005546001600160a01b03163314610e615760405162461bcd60e51b81526004016109a790612324565b670de0b6b3a76400006103e8610e7660025490565b610e8190600561236f565b610e8b9190612386565b610e959190612386565b811015610ef05760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016109a7565b610f0281670de0b6b3a764000061236f565b600d5550565b6005546001600160a01b03163314610f325760405162461bcd60e51b81526004016109a790612324565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f875760405162461bcd60e51b81526004016109a790612324565b6001600160a01b038116610fec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a7565b610bd681611ae1565b6001600160a01b0383166110575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a7565b6001600160a01b0382166110b85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661113f5760405162461bcd60e51b81526004016109a7906123bb565b6001600160a01b0382166111655760405162461bcd60e51b81526004016109a790612400565b8060000361117e5761117983836000611b33565b505050565b600e5460ff1615611668576005546001600160a01b038481169116148015906111b557506005546001600160a01b03838116911614155b80156111c957506001600160a01b03821615155b80156111e057506001600160a01b03821661dead14155b80156111ef5750600a5460ff16155b1561166857600e54610100900460ff16611287576001600160a01b03831660009081526007602052604090205460ff168061124257506001600160a01b03821660009081526007602052604090205460ff165b6112875760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109a7565b601e5460ff16156113ce576005546001600160a01b038381169116148015906112e257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561132057507f00000000000000000000000087ee53fa8e245c6b249648a242b5bb86a65d93296001600160a01b0316826001600160a01b031614155b156113ce57326000908152601d602052604090205443116113bb5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016109a7565b326000908152601d602052604090204390555b6001600160a01b03831660009081526021602052604090205460ff16801561140f57506001600160a01b03821660009081526008602052604090205460ff16155b1561150d57600b5481111561147e5760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b60648201526084016109a7565b6001600160a01b03821660009081526009602052604090205460ff1661150857600d546001600160a01b0383166000908152602081905260409020546114c490836123a8565b11156115085760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a7565b611668565b6001600160a01b03821660009081526021602052604090205460ff16801561154e57506001600160a01b03831660009081526008602052604090205460ff16155b156115be57600b548111156115085760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b60648201526084016109a7565b6001600160a01b03821660009081526008602052604090205460ff16611668576001600160a01b03821660009081526009602052604090205460ff1661166857600d546001600160a01b03831660009081526020819052604090205461162490836123a8565b11156116685760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a7565b30600090815260208190526040902054600c548110801590819061168d5750600c5483115b80156116a15750600e5462010000900460ff165b80156116b05750600a5460ff16155b80156116d557506001600160a01b03851660009081526021602052604090205460ff16155b80156116fa57506001600160a01b03851660009081526007602052604090205460ff16155b801561171f57506001600160a01b03841660009081526007602052604090205460ff16155b1561174457600a805460ff19166001179055611739611c88565b600a805460ff191690555b600a546001600160a01b03861660009081526007602052604090205460ff9182161591168061178b57506001600160a01b03851660009081526007602052604090205460ff165b15611794575060005b6000811561197f576001600160a01b03861660009081526021602052604090205460ff1680156117c657506000600f54115b15611884576117eb60646117e5600f5488611ea790919063ffffffff16565b90611eba565b9050600f54601154826117fe919061236f565b6118089190612386565b6018600082825461181991906123a8565b9091555050600f5460125461182e908361236f565b6118389190612386565b6019600082825461184991906123a8565b9091555050600f5460105461185e908361236f565b6118689190612386565b6017600082825461187991906123a8565b909155506119619050565b6001600160a01b03871660009081526021602052604090205460ff1680156118ae57506000601354115b15611961576118cd60646117e560135488611ea790919063ffffffff16565b9050601354601554826118e0919061236f565b6118ea9190612386565b601860008282546118fb91906123a8565b9091555050601354601654611910908361236f565b61191a9190612386565b6019600082825461192b91906123a8565b9091555050601354601454611940908361236f565b61194a9190612386565b6017600082825461195b91906123a8565b90915550505b801561197257611972873083611b33565b61197c8186612443565b94505b61198a878787611b33565b50505050505050565b6001600160a01b0382166119f35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109a7565b6001600160a01b03821660009081526020819052604090205481811015611a675760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109a7565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611a96908490612443565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611b595760405162461bcd60e51b81526004016109a7906123bb565b6001600160a01b038216611b7f5760405162461bcd60e51b81526004016109a790612400565b6001600160a01b03831660009081526020819052604090205481811015611bf75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a7565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c2e9084906123a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c7a91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601954601754601854611caf91906123a8565b611cb991906123a8565b90506000821580611cc8575081155b15611cd257505050565b600c54611ce090601461236f565b831115611cf857600c54611cf590601461236f565b92505b600060028360185486611d0b919061236f565b611d159190612386565b611d1f9190612386565b90506000611d2d8583611ec6565b905047611d3982611ed2565b6000611d454783611ec6565b90506000611d62876117e560175485611ea790919063ffffffff16565b90506000611d7f886117e560195486611ea790919063ffffffff16565b9050600081611d8e8486612443565b611d989190612443565b6000601881905560178190556019819055601b546040519293506001600160a01b031691849181818185875af1925050503d8060008114611df5576040519150601f19603f3d011682016040523d82523d6000602084013e611dfa565b606091505b50909850508615801590611e0e5750600081115b15611e6157611e1d8782612092565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b601a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611e9a573d6000803e3d6000fd5b5050505050505050505050565b6000611eb3828461236f565b9392505050565b6000611eb38284612386565b6000611eb38284612443565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f0757611f07612456565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa9919061246c565b81600181518110611fbc57611fbc612456565b60200260200101906001600160a01b031690816001600160a01b031681525050612007307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ff5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061205c908590600090869030904290600401612489565b600060405180830381600087803b15801561207657600080fd5b505af115801561208a573d6000803e3d6000fd5b505050505050565b6120bd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ff5565b601c5460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af115801561214c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061217191906124fa565b5050505050565b600060208083528351808285015260005b818110156121a557858101830151858201604001528201612189565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bd657600080fd5b600080604083850312156121ee57600080fd5b82356121f9816121c6565b946020939093013593505050565b6000806040838503121561221a57600080fd5b8235612225816121c6565b91506020830135801515811461223a57600080fd5b809150509250929050565b60006020828403121561225757600080fd5b5035919050565b60008060006060848603121561227357600080fd5b833561227e816121c6565b9250602084013561228e816121c6565b929592945050506040919091013590565b6000602082840312156122b157600080fd5b8135611eb3816121c6565b600080604083850312156122cf57600080fd5b82356122da816121c6565b9150602083013561223a816121c6565b600181811c908216806122fe57607f821691505b60208210810361231e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761097757610977612359565b6000826123a357634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561097757610977612359565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561097757610977612359565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561247e57600080fd5b8151611eb3816121c6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d95784516001600160a01b0316835293830193918301916001016124b4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ac74f01fc8db64ca8ad492380c45194aee45e31b58c9990fed1a04e0f2c58f2e64736f6c63430008130033

Deployed Bytecode Sourcemap

11035:14104:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6401:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7315:169;;;;;;;;;;-1:-1:-1;7315:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7315:169:0;1023:187:1;16793:177:0;;;;;;;;;;-1:-1:-1;16793:177:0;;;;;:::i;:::-;;:::i;:::-;;6722:108;;;;;;;;;;-1:-1:-1;6810:12:0;;6722:108;;;1782:25:1;;;1770:2;1755:18;6722:108:0;1636:177:1;15341:263:0;;;;;;;;;;-1:-1:-1;15341:263:0;;;;;:::i;:::-;;:::i;7492:492::-;;;;;;;;;;-1:-1:-1;7492:492:0;;;;;:::i;:::-;;:::i;6621:93::-;;;;;;;;;;-1:-1:-1;6621:93:0;;6704:2;2606:36:1;;2594:2;2579:18;6621:93:0;2464:184:1;7992:215:0;;;;;;;;;;-1:-1:-1;7992:215:0;;;;;:::i;:::-;;:::i;16587:81::-;;;;;;;;;;-1:-1:-1;16587:81:0;;;;;:::i;:::-;;:::i;11598:39::-;;;;;;;;;;-1:-1:-1;11598:39:0;;;;;;;;11954:24;;;;;;;;;;;;;;;;12100:33;;;;;;;;;;-1:-1:-1;12100:33:0;;;;-1:-1:-1;;;;;12100:33:0;;;;;;-1:-1:-1;;;;;2817:32:1;;;2799:51;;2787:2;2772:18;12100:33:0;2653:203:1;11203:70:0;;;;;;;;;;-1:-1:-1;11203:70:0;;;;-1:-1:-1;;;;;11203:70:0;;;11685:31;;;;;;;;;;-1:-1:-1;11685:31:0;;;;;;;;;;;6838:127;;;;;;;;;;-1:-1:-1;6838:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6939:18:0;6912:7;6939:18;;;;;;;;;;;;6838:127;898:103;;;;;;;;;;;;;:::i;11887:30::-;;;;;;;;;;;;;;;;11108:45;;;;;;;;;;;;;;;15656:331;;;;;;;;;;;;;:::i;16259:157::-;;;;;;;;;;-1:-1:-1;16259:157:0;;;;;:::i;:::-;;:::i;11644:34::-;;;;;;;;;;-1:-1:-1;11644:34:0;;;;;;;;;;;11924:23;;;;;;;;;;;;;;;;20019:228;;;;;;;;;;;;;:::i;11793:24::-;;;;;;;;;;;;;;;;675:87;;;;;;;;;;-1:-1:-1;748:6:0;;-1:-1:-1;;;;;748:6:0;675:87;;6509:104;;;;;;;;;;;;;:::i;12178:24::-;;;;;;;;;;-1:-1:-1;12178:24:0;;;;-1:-1:-1;;;;;12178:24:0;;;16676:109;;;;;;;;;;-1:-1:-1;16676:109:0;;;;;:::i;:::-;;:::i;8215:413::-;;;;;;;;;;-1:-1:-1;8215:413:0;;;;;:::i;:::-;;:::i;12140:31::-;;;;;;;;;;-1:-1:-1;12140:31:0;;;;-1:-1:-1;;;;;12140:31:0;;;6973:175;;;;;;;;;;-1:-1:-1;6973:175:0;;;;;:::i;:::-;;:::i;11824:25::-;;;;;;;;;;;;;;;;12444:57;;;;;;;;;;-1:-1:-1;12444:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19891:120;;;;;;;;;;-1:-1:-1;19891:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19976:27:0;19952:4;19976:27;;;:18;:27;;;;;;;;;19891:120;12060:27;;;;;;;;;;;;;;;;15995:256;;;;;;;;;;-1:-1:-1;15995:256:0;;;;;:::i;:::-;;:::i;12027:26::-;;;;;;;;;;;;;;;;11495:29;;;;;;;;;;;;;;;;11160:36;;;;;;;;;;;;;;;12331:39;;;;;;;;;;-1:-1:-1;12331:39:0;;;;;;;;16424:155;;;;;;;;;;-1:-1:-1;16424:155:0;;;;;:::i;:::-;;:::i;11531:27::-;;;;;;;;;;;;;;;;7156:151;;;;;;;;;;-1:-1:-1;7156:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;7272:18:0;;;7245:7;7272:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7156:151;11725:23;;;;;;;;;;;;;;;;11858:22;;;;;;;;;;;;;;;;11755:31;;;;;;;;;;;;;;;;11987:33;;;;;;;;;;;;;;;;1009:201;;;;;;;;;;-1:-1:-1;1009:201:0;;;;;:::i;:::-;;:::i;11565:24::-;;;;;;;;;;;;;;;;6401:100;6455:13;6488:5;6481:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6401:100;:::o;7315:169::-;7398:4;7415:39;410:10;7438:7;7447:6;7415:8;:39::i;:::-;-1:-1:-1;7472:4:0;7315:169;;;;;:::o;16793:177::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16874:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;16874:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16928:34;;1163:41:1;;;16928:34:0::1;::::0;1136:18:1;16928:34:0::1;;;;;;;16793:177:::0;;:::o;15341:263::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;15478:4:::1;15470;15449:13;6810:12:::0;;;6722:108;15449:13:::1;:17;::::0;15465:1:::1;15449:17;:::i;:::-;15448:26;;;;:::i;:::-;15447:35;;;;:::i;:::-;15437:6;:45;;15415:136;;;::::0;-1:-1:-1;;;15415:136:0;;5211:2:1;15415:136: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:39;5389:19;;15415:136:0::1;5009:405:1::0;15415:136:0::1;15579:17;:6:::0;15589::::1;15579:17;:::i;:::-;15562:14;:34:::0;-1:-1:-1;15341:263:0:o;7492:492::-;7632:4;7649:36;7659:6;7667:9;7678:6;7649:9;:36::i;:::-;-1:-1:-1;;;;;7725:19:0;;7698:24;7725:19;;;:11;:19;;;;;;;;410:10;7725:33;;;;;;;;7777:26;;;;7769:79;;;;-1:-1:-1;;;7769:79:0;;5621:2:1;7769:79:0;;;5603:21:1;5660:2;5640:18;;;5633:30;5699:34;5679:18;;;5672:62;-1:-1:-1;;;5750:18:1;;;5743:38;5798:19;;7769:79:0;5419:404:1;7769:79:0;7884:57;7893:6;410:10;7934:6;7915:16;:25;7884:8;:57::i;:::-;-1:-1:-1;7972:4:0;;7492:492;-1:-1:-1;;;;7492:492:0:o;7992:215::-;410:10;8080:4;8129:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8129:34:0;;;;;;;;;;8080:4;;8097:80;;8120:7;;8129:47;;8166:10;;8129:47;:::i;:::-;8097:8;:80::i;16587:81::-;16635:25;16641:10;16653:6;16635:5;:25::i;:::-;16587:81;:::o;898:103::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;963:30:::1;990:1;963:18;:30::i;:::-;898:103::o:0;15656:331::-;748:6;;15708:4;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;-1:-1:-1;15743:1:0::1;15725:15;:19:::0;;;15766:1:::1;15755:8;:12:::0;;;15778:9:::1;:13:::0;;;15802:7:::1;:11:::0;;;15824:20:::1;:28:::0;;-1:-1:-1;;15824:28:0::1;::::0;;15865:16:::1;:20:::0;;;15896:9:::1;:13:::0;;;15920:10:::1;:14:::0;15945:8:::1;:12:::0;;;15656:331;:::o;16259:157::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16372:29:0;;;::::1;;::::0;;;:21:::1;:29;::::0;;;;:36;;-1:-1:-1;;16372:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16259:157::o;20019:228::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;20083:14:::1;::::0;::::1;::::0;::::1;;;20082:15;20074:42;;;::::0;-1:-1:-1;;;20074:42:0;;6160:2:1;20074:42:0::1;::::0;::::1;6142:21:1::0;6199:2;6179:18;;;6172:30;-1:-1:-1;;;6218:18:1;;;6211:44;6272:18;;20074:42:0::1;5958:338:1::0;20074:42:0::1;20127:14;:21:::0;;20173:12:::1;20159:11;:26:::0;-1:-1:-1;;20196:18:0;;;;;-1:-1:-1;20225:10:0::1;:14:::0;20019:228::o;6509:104::-;6565:13;6598:7;6591:14;;;;;:::i;16676:109::-;12856:10;19952:4;19976:27;;;:18;:27;;;;;;;;12834:34;;;;;;16755:22:::1;16761:7;16770:6;16755:5;:22::i;:::-;16676:109:::0;;:::o;8215:413::-;410:10;8308:4;8352:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8352:34:0;;;;;;;;;;8405:35;;;;8397:85;;;;-1:-1:-1;;;8397:85:0;;6503:2:1;8397:85:0;;;6485:21:1;6542:2;6522:18;;;6515:30;6581:34;6561:18;;;6554:62;-1:-1:-1;;;6632:18:1;;;6625:35;6677:19;;8397:85:0;6301:401:1;8397:85:0;8518:67;410:10;8541:7;8569:15;8550:16;:34;8518:8;:67::i;:::-;-1:-1:-1;8616:4:0;;8215:413;-1:-1:-1;;;8215:413:0:o;6973:175::-;7059:4;7076:42;410:10;7100:9;7111:6;7076:9;:42::i;15995:256::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;16135:4:::1;16127;16106:13;6810:12:::0;;;6722:108;16106:13:::1;:17;::::0;16122:1:::1;16106:17;:::i;:::-;16105:26;;;;:::i;:::-;16104:35;;;;:::i;:::-;16094:6;:45;;16072:131;;;::::0;-1:-1:-1;;;16072:131:0;;6909:2:1;16072:131:0::1;::::0;::::1;6891:21:1::0;6948:2;6928:18;;;6921:30;6987:34;6967:18;;;6960:62;-1:-1:-1;;;7038:18:1;;;7031:34;7082:19;;16072:131:0::1;6707:400:1::0;16072:131:0::1;16226:17;:6:::0;16236::::1;16226:17;:::i;:::-;16214:9;:29:::0;-1:-1:-1;15995:256:0:o;16424:155::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16532:32:0;;;::::1;;::::0;;;:24:::1;:32;::::0;;;;:39;;-1:-1:-1;;16532:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16424:155::o;1009:201::-;748:6;;-1:-1:-1;;;;;748:6:0;410:10;810:23;802:68;;;;-1:-1:-1;;;802:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1098:22:0;::::1;1090:73;;;::::0;-1:-1:-1;;;1090:73:0;;7314:2:1;1090:73:0::1;::::0;::::1;7296:21:1::0;7353:2;7333:18;;;7326:30;7392:34;7372:18;;;7365:62;-1:-1:-1;;;7443:18:1;;;7436:36;7489:19;;1090:73:0::1;7112:402:1::0;1090:73:0::1;1174:28;1193:8;1174:18;:28::i;10383:380::-:0;-1:-1:-1;;;;;10519:19:0;;10511:68;;;;-1:-1:-1;;;10511:68:0;;7721:2:1;10511:68:0;;;7703:21:1;7760:2;7740:18;;;7733:30;7799:34;7779:18;;;7772:62;-1:-1:-1;;;7850:18:1;;;7843:34;7894:19;;10511:68:0;7519:400:1;10511:68:0;-1:-1:-1;;;;;10598:21:0;;10590:68;;;;-1:-1:-1;;;10590:68:0;;8126:2:1;10590:68:0;;;8108:21:1;8165:2;8145:18;;;8138:30;8204:34;8184:18;;;8177:62;-1:-1:-1;;;8255:18:1;;;8248:32;8297:19;;10590:68:0;7924:398:1;10590:68:0;-1:-1:-1;;;;;10671:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10723:32;;1782:25:1;;;10723:32:0;;1755:18:1;10723:32:0;;;;;;;10383:380;;;:::o;20292:4844::-;-1:-1:-1;;;;;20424:18:0;;20416:68;;;;-1:-1:-1;;;20416:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20503:16:0;;20495:64;;;;-1:-1:-1;;;20495:64:0;;;;;;;:::i;:::-;20576:6;20586:1;20576:11;20572:93;;20604:28;20620:4;20626:2;20630:1;20604:15;:28::i;:::-;20292:4844;;;:::o;20572:93::-;20681:20;;;;20677:2664;;;748:6;;-1:-1:-1;;;;;20740:15:0;;;748:6;;20740:15;;;;:49;;-1:-1:-1;748:6:0;;-1:-1:-1;;;;;20776:13:0;;;748:6;;20776:13;;20740:49;:86;;;;-1:-1:-1;;;;;;20810:16:0;;;;20740:86;:128;;;;-1:-1:-1;;;;;;20847:21:0;;20861:6;20847:21;;20740:128;:158;;;;-1:-1:-1;20890:8:0;;;;20889:9;20740:158;20718:2612;;;20938:14;;;;;;;20933:222;;-1:-1:-1;;;;;21011:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;21039:22:0;;;;;;:18;:22;;;;;;;;21011:50;20977:158;;;;-1:-1:-1;;;20977:158:0;;9339:2:1;20977:158:0;;;9321:21:1;9378:2;9358:18;;;9351:30;-1:-1:-1;;;9397:18:1;;;9390:52;9459:18;;20977:158:0;9137:346:1;20977:158:0;21311:20;;;;21307:625;;;748:6;;-1:-1:-1;;;;;21386:13:0;;;748:6;;21386:13;;;;:70;;;21442:13;-1:-1:-1;;;;;21428:28:0;:2;-1:-1:-1;;;;;21428:28:0;;;21386:70;:125;;;;;21499:11;-1:-1:-1;;;;;21485:26:0;:2;-1:-1:-1;;;;;21485:26:0;;;21386:125;21356:557;;;21623:9;21600:33;;;;:22;:33;;;;;;21669:12;-1:-1:-1;21562:252:0;;;;-1:-1:-1;;;21562:252:0;;9690:2:1;21562:252:0;;;9672:21:1;9729:2;9709:18;;;9702:30;9768:34;9748:18;;;9741:62;9839:34;9819:18;;;9812:62;-1:-1:-1;;;9890:19:1;;;9883:40;9940:19;;21562:252:0;9488:477:1;21562:252:0;21864:9;21841:33;;;;:22;:33;;;;;21877:12;21841:48;;21356:557;-1:-1:-1;;;;;22006:31:0;;;;;;:25;:31;;;;;;;;:82;;;;-1:-1:-1;;;;;;22063:25:0;;;;;;:21;:25;;;;;;;;22062:26;22006:82;21980:1335;;;22175:14;;22165:6;:24;;22131:157;;;;-1:-1:-1;;;22131:157:0;;10172:2:1;22131:157:0;;;10154:21:1;10211:2;10191:18;;;10184:30;10250:34;10230:18;;;10223:62;-1:-1:-1;;;10301:18:1;;;10294:45;10356:19;;22131:157:0;9970:411:1;22131:157:0;-1:-1:-1;;;;;22316:28:0;;;;;;:24;:28;;;;;;;;22311:262;;22461:9;;-1:-1:-1;;;;;6939:18:0;;6912:7;6939:18;;;;;;;;;;;22435:22;;:6;:22;:::i;:::-;:35;;22397:152;;;;-1:-1:-1;;;22397:152:0;;10588:2:1;22397:152:0;;;10570:21:1;10627:2;10607:18;;;10600:30;-1:-1:-1;;;10646:18:1;;;10639:49;10705:18;;22397:152:0;10386:343:1;22397:152:0;21980:1335;;;-1:-1:-1;;;;;22670:29:0;;;;;;:25;:29;;;;;;;;:82;;;;-1:-1:-1;;;;;;22725:27:0;;;;;;:21;:27;;;;;;;;22724:28;22670:82;22644:671;;;22839:14;;22829:6;:24;;22795:158;;;;-1:-1:-1;;;22795:158:0;;10936:2:1;22795:158:0;;;10918:21:1;10975:2;10955:18;;;10948:30;11014:34;10994:18;;;10987:62;-1:-1:-1;;;11065:18:1;;;11058:46;11121:19;;22795:158:0;10734:412:1;22644:671:0;-1:-1:-1;;;;;22984:25:0;;;;;;:21;:25;;;;;;;;22979:336;;-1:-1:-1;;;;;23039:28:0;;;;;;:24;:28;;;;;;;;23034:262;;23184:9;;-1:-1:-1;;;;;6939:18:0;;6912:7;6939:18;;;;;;;;;;;23158:22;;:6;:22;:::i;:::-;:35;;23120:152;;;;-1:-1:-1;;;23120:152:0;;10588:2:1;23120:152:0;;;10570:21:1;10627:2;10607:18;;;10600:30;-1:-1:-1;;;10646:18:1;;;10639:49;10705:18;;23120:152:0;10386:343:1;23120:152:0;23402:4;23353:28;6939:18;;;;;;;;;;;23460:12;;23436:36;;;;;;;23503:45;;;23536:12;;23527:6;:21;23503:45;:73;;;;-1:-1:-1;23565:11:0;;;;;;;23503:73;:99;;;;-1:-1:-1;23594:8:0;;;;23593:9;23503:99;:148;;;;-1:-1:-1;;;;;;23620:31:0;;;;;;:25;:31;;;;;;;;23619:32;23503:148;:190;;;;-1:-1:-1;;;;;;23669:24:0;;;;;;:18;:24;;;;;;;;23668:25;23503:190;:230;;;;-1:-1:-1;;;;;;23711:22:0;;;;;;:18;:22;;;;;;;;23710:23;23503:230;23485:362;;;23760:8;:15;;-1:-1:-1;;23760:15:0;23771:4;23760:15;;;23792:10;:8;:10::i;:::-;23819:8;:16;;-1:-1:-1;;23819:16:0;;;23485:362;23875:8;;-1:-1:-1;;;;;23985:24:0;;23859:12;23985:24;;;:18;:24;;;;;;23875:8;;;;23874:9;;23985:24;;:50;;-1:-1:-1;;;;;;24013:22:0;;;;;;:18;:22;;;;;;;;23985:50;23981:98;;;-1:-1:-1;24062:5:0;23981:98;24091:12;24196:7;24192:891;;;-1:-1:-1;;;;;24248:29:0;;;;;;:25;:29;;;;;;;;:45;;;;;24292:1;24281:8;;:12;24248:45;24244:690;;;24321:29;24346:3;24321:20;24332:8;;24321:6;:10;;:20;;;;:::i;:::-;:24;;:29::i;:::-;24314:36;;24405:8;;24392:9;;24385:4;:16;;;;:::i;:::-;24384:29;;;;:::i;:::-;24369:11;;:44;;;;;;;:::i;:::-;;;;-1:-1:-1;;24470:8:0;;24456:10;;24449:17;;:4;:17;:::i;:::-;24448:30;;;;:::i;:::-;24432:12;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;24547:8:0;;24527:16;;24520:23;;:4;:23;:::i;:::-;24519:36;;;;:::i;:::-;24497:18;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;24244:690:0;;-1:-1:-1;24244:690:0;;-1:-1:-1;;;;;24617:31:0;;;;;;:25;:31;;;;;;;;:46;;;;;24662:1;24652:7;;:11;24617:46;24613:321;;;24691:28;24715:3;24691:19;24702:7;;24691:6;:10;;:19;;;;:::i;:28::-;24684:35;;24773:7;;24761:8;;24754:4;:15;;;;:::i;:::-;24753:27;;;;:::i;:::-;24738:11;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;24836:7:0;;24823:9;;24816:16;;:4;:16;:::i;:::-;24815:28;;;;:::i;:::-;24799:12;;:44;;;;;;;:::i;:::-;;;;-1:-1:-1;;24911:7:0;;24892:15;;24885:22;;:4;:22;:::i;:::-;24884:34;;;;:::i;:::-;24862:18;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;;24613:321:0;24954:8;;24950:91;;24983:42;24999:4;25013;25020;24983:15;:42::i;:::-;25057:14;25067:4;25057:14;;:::i;:::-;;;24192:891;25095:33;25111:4;25117:2;25121:6;25095:15;:33::i;:::-;20405:4731;;;;20292:4844;;;:::o;9784:591::-;-1:-1:-1;;;;;9868:21:0;;9860:67;;;;-1:-1:-1;;;9860:67:0;;11486:2:1;9860:67:0;;;11468:21:1;11525:2;11505:18;;;11498:30;11564:34;11544:18;;;11537:62;-1:-1:-1;;;11615:18:1;;;11608:31;11656:19;;9860:67:0;11284:397:1;9860:67:0;-1:-1:-1;;;;;10027:18:0;;10002:22;10027:18;;;;;;;;;;;10064:24;;;;10056:71;;;;-1:-1:-1;;;10056:71:0;;11888:2:1;10056:71:0;;;11870:21:1;11927:2;11907:18;;;11900:30;11966:34;11946:18;;;11939:62;-1:-1:-1;;;12017:18:1;;;12010:32;12059:19;;10056:71:0;11686:398:1;10056:71:0;-1:-1:-1;;;;;10163:18:0;;:9;:18;;;;;;;;;;10184:23;;;10163:44;;10229:12;:22;;10201:6;;10163:9;10229:22;;10201:6;;10229:22;:::i;:::-;;;;-1:-1:-1;;10269:37:0;;1782:25:1;;;10295:1:0;;-1:-1:-1;;;;;10269:37:0;;;;;1770:2:1;1755:18;10269:37:0;;;;;;;20292:4844;;;:::o;1218:191::-;1311:6;;;-1:-1:-1;;;;;1328:17:0;;;-1:-1:-1;;;;;;1328:17:0;;;;;;;1361:40;;1311:6;;;1328:17;1311:6;;1361:40;;1292:16;;1361:40;1281:128;1218:191;:::o;8636:733::-;-1:-1:-1;;;;;8776:20:0;;8768:70;;;;-1:-1:-1;;;8768:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8857:23:0;;8849:71;;;;-1:-1:-1;;;8849:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9017:17:0;;8993:21;9017:17;;;;;;;;;;;9053:23;;;;9045:74;;;;-1:-1:-1;;;9045:74:0;;12291:2:1;9045:74:0;;;12273:21:1;12330:2;12310:18;;;12303:30;12369:34;12349:18;;;12342:62;-1:-1:-1;;;12420:18:1;;;12413:36;12466:19;;9045:74:0;12089:402:1;9045:74:0;-1:-1:-1;;;;;9155:17:0;;;:9;:17;;;;;;;;;;;9175:22;;;9155:42;;9219:20;;;;;;;;:30;;9191:6;;9155:9;9219:30;;9191:6;;9219:30;:::i;:::-;;;;;;;;9284:9;-1:-1:-1;;;;;9267:35:0;9276:6;-1:-1:-1;;;;;9267:35:0;;9295:6;9267:35;;;;1782:25:1;;1770:2;1755:18;;1636:177;9267:35:0;;;;;;;;8757:612;8636:733;;;:::o;18285:1598::-;18368:4;18324:23;6939:18;;;;;;;;;;;18324:50;;18385:25;18474:12;;18440:18;;18413:11;;:45;;;;:::i;:::-;:73;;;;:::i;:::-;18385:101;-1:-1:-1;18497:12:0;18526:20;;;:46;;-1:-1:-1;18550:22:0;;18526:46;18522:85;;;18589:7;;;18285:1598::o;18522:85::-;18641:12;;:17;;18656:2;18641:17;:::i;:::-;18623:15;:35;18619:103;;;18693:12;;:17;;18708:2;18693:17;:::i;:::-;18675:35;;18619:103;18783:18;18858:1;18838:17;18823:11;;18805:15;:29;;;;:::i;:::-;18804:51;;;;:::i;:::-;:55;;;;:::i;:::-;18783:76;-1:-1:-1;18870:26:0;18899:31;:15;18783:76;18899:19;:31::i;:::-;18870:60;-1:-1:-1;18971:21:0;19005:35;18870:60;19005:15;:35::i;:::-;19053:18;19074:44;:21;19100:17;19074:25;:44::i;:::-;19053:65;;19131:18;19152:57;19191:17;19152:34;19167:18;;19152:10;:14;;:34;;;;:::i;:57::-;19131:78;;19220:17;19240:51;19273:17;19240:28;19255:12;;19240:10;:14;;:28;;;;:::i;:51::-;19220:71;-1:-1:-1;19304:23:0;19220:71;19330:23;19343:10;19330;:23;:::i;:::-;:35;;;;:::i;:::-;19392:1;19378:11;:15;;;19404:18;:22;;;19437:12;:16;;;19488;;19480:52;;19304:61;;-1:-1:-1;;;;;;19488:16:0;;19518:9;;19480:52;19392:1;19480:52;19518:9;19488:16;19480:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19466:66:0;;-1:-1:-1;;19549:14:0;;;;;:37;;;19585:1;19567:15;:19;19549:37;19545:261;;;19603:41;19616:10;19628:15;19603:12;:41::i;:::-;19768:11;;19664:130;;;12908:25:1;;;12964:2;12949:18;;12942:34;;;12992:18;;;12985:34;;;;19664:130:0;;;;;;12896:2:1;19664:130:0;;;19545:261;19824:18;;19816:59;;-1:-1:-1;;;;;19824:18:0;;;;19853:21;19816:59;;;;;19824:18;19816:59;19824:18;19816:59;19853:21;19824:18;19816:59;;;;;;;;;;;;;;;;;;;;;18313:1570;;;;;;;;;;18285:1598::o;1652:98::-;1710:7;1737:5;1741:1;1737;:5;:::i;:::-;1730:12;1652:98;-1:-1:-1;;;1652:98:0:o;1758:::-;1816:7;1843:5;1847:1;1843;:5;:::i;1546:98::-;1604:7;1631:5;1635:1;1631;:5;:::i;17170:582::-;17319:16;;;17333:1;17319:16;;;;;;;;17295:21;;17319:16;;;;;;;;;;-1:-1:-1;17319:16:0;17295:40;;17364:4;17346;17351:1;17346:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;17346:23:0;;;-1:-1:-1;;;;;17346:23:0;;;;;17390:13;-1:-1:-1;;;;;17390:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17380:4;17385:1;17380:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;17380:30:0;;;-1:-1:-1;;;;;17380:30:0;;;;;17423:60;17440:4;17455:13;17471:11;17423:8;:60::i;:::-;17522:222;;-1:-1:-1;;;17522:222:0;;-1:-1:-1;;;;;17522:13:0;:64;;;;:222;;17601:11;;17627:1;;17671:4;;17698;;17718:15;;17522:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17224:528;17170:582;:::o;17766:511::-;17914:60;17931:4;17946:13;17962:11;17914:8;:60::i;:::-;18219:9;;18017:252;;-1:-1:-1;;;18017:252:0;;18087:4;18017:252;;;14876:34:1;14926:18;;;14919:34;;;18133:1:0;14969:18:1;;;14962:34;;;15012:18;;;15005:34;-1:-1:-1;;;;;18219:9:0;;;15055:19:1;;;15048:44;18243:15:0;15108:19:1;;;15101:35;18017:13:0;:29;;;;;;18054:9;;14810:19:1;;18017:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17766:511;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:416::-;1280:6;1288;1341:2;1329:9;1320:7;1316:23;1312:32;1309:52;;;1357:1;1354;1347:12;1309:52;1396:9;1383:23;1415:31;1440:5;1415:31;:::i;:::-;1465:5;-1:-1:-1;1522:2:1;1507:18;;1494:32;1564:15;;1557:23;1545:36;;1535:64;;1595:1;1592;1585:12;1535:64;1618:7;1608:17;;;1215:416;;;;;:::o;1818:180::-;1877:6;1930:2;1918:9;1909:7;1905:23;1901:32;1898:52;;;1946:1;1943;1936:12;1898:52;-1:-1:-1;1969:23:1;;1818:180;-1:-1:-1;1818:180:1:o;2003:456::-;2080:6;2088;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2204:9;2191:23;2223:31;2248:5;2223:31;:::i;:::-;2273:5;-1:-1:-1;2330:2:1;2315:18;;2302:32;2343:33;2302:32;2343:33;:::i;:::-;2003:456;;2395:7;;-1:-1:-1;;;2449:2:1;2434:18;;;;2421:32;;2003:456::o;2861:247::-;2920:6;2973:2;2961:9;2952:7;2948:23;2944:32;2941:52;;;2989:1;2986;2979:12;2941:52;3028:9;3015:23;3047:31;3072:5;3047:31;:::i;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;5828:125::-;5893:9;;;5914:10;;;5911:36;;;5927:18;;:::i;8327:401::-;8529:2;8511:21;;;8568:2;8548:18;;;8541:30;8607:34;8602:2;8587:18;;8580:62;-1:-1:-1;;;8673:2:1;8658:18;;8651:35;8718:3;8703:19;;8327:401::o;8733:399::-;8935:2;8917:21;;;8974:2;8954:18;;;8947:30;9013:34;9008:2;8993:18;;8986:62;-1:-1:-1;;;9079:2:1;9064:18;;9057:33;9122:3;9107:19;;8733:399::o;11151:128::-;11218:9;;;11239:11;;;11236:37;;;11253:18;;:::i;13162:127::-;13223:10;13218:3;13214:20;13211:1;13204:31;13254:4;13251:1;13244:15;13278:4;13275:1;13268:15;13294:251;13364:6;13417:2;13405:9;13396:7;13392:23;13388:32;13385:52;;;13433:1;13430;13423:12;13385:52;13465:9;13459:16;13484:31;13509:5;13484:31;:::i;13550:980::-;13812:4;13860:3;13849:9;13845:19;13891:6;13880:9;13873:25;13917:2;13955:6;13950:2;13939:9;13935:18;13928:34;13998:3;13993:2;13982:9;13978:18;13971:31;14022:6;14057;14051:13;14088:6;14080;14073:22;14126:3;14115:9;14111:19;14104:26;;14165:2;14157:6;14153:15;14139:29;;14186:1;14196:195;14210:6;14207:1;14204:13;14196:195;;;14275:13;;-1:-1:-1;;;;;14271:39:1;14259:52;;14366:15;;;;14331:12;;;;14307:1;14225:9;14196:195;;;-1:-1:-1;;;;;;;14447:32:1;;;;14442:2;14427:18;;14420:60;-1:-1:-1;;;14511:3:1;14496:19;14489:35;14408:3;13550:980;-1:-1:-1;;;13550:980:1:o;15147:306::-;15235:6;15243;15251;15304:2;15292:9;15283:7;15279:23;15275:32;15272:52;;;15320:1;15317;15310:12;15272:52;15349:9;15343:16;15333:26;;15399:2;15388:9;15384:18;15378:25;15368:35;;15443:2;15432:9;15428:18;15422:25;15412:35;;15147:306;;;;;:::o

Swarm Source

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