ETH Price: $3,462.52 (-1.26%)
Gas: 4 Gwei

Token

PetBotWorld (PBT)
 

Overview

Max Total Supply

500,000,000 PBT

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
11,984.279168858783534499 PBT

Value
$0.00
0x4739c07bfa905bac8b6a294d6961f35e4c30b84a
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:
PBT

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//https://t.me/PetBotWorld
//https://www.petbot.world/
//https://t.me/OfficialPetBot
//https://docs.petbot.world/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/* Abstract Contracts */

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

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

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

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

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

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

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

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, 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 IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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 IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    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 IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}


contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    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 approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _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: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

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

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

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public bExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private bSwapping;

    mapping(address => bool) private blackList;
    
    constructor() ERC20("PetBotWorld", "PBT") {
        devWallet = address(0x1379E7fCC0db702B08b24db05e6E61f170c78821);
        marketingWallet = address(0x0f91226A30547b8CE9ec25680B89d1D96aB02C67);


        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        bExcludedMaxTokenAmountPerTxn[owner()] = true;
        bExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 500_000_000 * (10 ** decimals());
        minSwapTokenAmount = (totalSupply * 5) / 40000; // 0.05% swap wallet
        maxTokenAmountPerTxn = (totalSupply * 2) / 200; // 1% from total supply max transaction amount
        maxTokenAmountPerWallet = (totalSupply * 2) / 200;  // 1% from total supply max wallet amount
        bExcludedFromTax[address(this)] = true;
        bExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        bExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 10;
        sellDevTax = 10;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 35;
        buyDevTax = 35;
        buyTotalTax = buyMarketingTax + buyDevTax;


        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        bTradingActive = true;
        bSwapEnabled = true;
    }

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }

    function excludeFromMaxTokenAmountPerTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedMaxTokenAmountPerTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
    	external onlyOwner {
        bExcludedFromTax[account] = value;
    }

    function removeLimits()
    	external onlyOwner {
        limitsInEffect = false;
    }


    function updateSwapEnabled(bool enabled)
    	external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(uint256 amount)
    	external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }

    function updateMaxTokensPerWallet(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%");
        maxTokenAmountPerWallet = newNum * (10 ** decimals());
    }

    function updateMaxTokenAmountPerTxn(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%");
        maxTokenAmountPerTxn = newNum * (10 ** decimals());
    }

    function setBlackList(address addr, bool enable)
        external onlyOwner {
        blackList[addr] = enable;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
    	external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 95, "Must keep tax at 95% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 95, "Must keep tax at 95% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }

    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 20)
            tokenBalance = minSwapTokenAmount * 20;

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

        (success, ) = address(devWallet).call{value: ethForDev}("");
        (success, ) = address(marketingWallet).call{ value: address(this).balance }("");

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: from is black list");
        require(!blackList[to], "ERC20: to is black list");

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

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) {
                if (!bTradingActive) {
                    require(bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !bExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }


        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (bSwapEnabled && canSwap && !bSwapping &&
            !automatedMarketMakerPairs[from] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) {
            bSwapping = true;
            swapBack();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (bExcludedFromTax[from] || bExcludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    receive() external payable {}

    function swapTokensForEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","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":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805461ffff191690556012805460ff1916600117905534801562000028575f80fd5b506040518060400160405280600b81526020016a14195d109bdd15dbdc9b1960aa1b8152506040518060400160405280600381526020016214109560ea1b815250815f90816200007991906200065a565b5060016200008882826200065a565b505050620000a56200009f6200047e60201b60201c565b62000482565b600c8054731379e7fcc0db702b08b24db05e6e61f170c788216001600160a01b031991821617909155600b805462010000600160b01b031916750f91226a30547b8ce9ec25680b89d1d96ab02c67000017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000151573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000177919062000726565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fd919062000726565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000248573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026e919062000726565b600780546001600160a01b0319166001600160a01b03928316179055600554165f908152600f6020526040808220805460ff19908116600190811790925530845291832080549092161790556012620002c990600a62000864565b620002d990631dcd650062000874565b9050619c40620002eb82600562000874565b620002f791906200088e565b60085560c86200030982600262000874565b6200031591906200088e565b600a5560c86200032782600262000874565b6200033391906200088e565b600955305f9081526010602081905260408220805460ff1916600190811790915591620003686005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600780548316825260118552838220805487166001908117909155600f86527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f10805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead90915260109091527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b698054909216179055600a601481905560158190556200044d9080620008ae565b601355602360178190556018819055620004689080620008ae565b601655620004773382620004d3565b50620008c4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166200052e5760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b8060025f828254620005419190620008ae565b90915550506001600160a01b0382165f90815260036020526040812080548392906200056f908490620008ae565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005e657607f821691505b6020821081036200060557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005b857805f5260205f20601f840160051c81016020851015620006325750805b601f840160051c820191505b8181101562000653575f81556001016200063e565b5050505050565b81516001600160401b03811115620006765762000676620005bd565b6200068e81620006878454620005d1565b846200060b565b602080601f831160018114620006c4575f8415620006ac5750858301515b5f19600386901b1c1916600185901b1785556200071e565b5f85815260208120601f198616915b82811015620006f457888601518255948401946001909101908401620006d3565b50858210156200071257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000737575f80fd5b81516001600160a01b03811681146200074e575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620007a957815f19048211156200078d576200078d62000755565b808516156200079b57918102915b93841c93908002906200076e565b509250929050565b5f82620007c1575060016200085e565b81620007cf57505f6200085e565b8160018114620007e85760028114620007f35762000813565b60019150506200085e565b60ff84111562000807576200080762000755565b50506001821b6200085e565b5060208310610133831016604e8410600b841016171562000838575081810a6200085e565b62000844838362000769565b805f19048211156200085a576200085a62000755565b0290505b92915050565b5f6200074e60ff841683620007b1565b80820281158282048414176200085e576200085e62000755565b5f82620008a957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200085e576200085e62000755565b61267180620008d25f395ff3fe60806040526004361061028e575f3560e01c8063715018a611610155578063b62496f5116100be578063d4394cf811610078578063d4394cf814610798578063d929a083146107b7578063dd62ed3e146107d0578063e27a55fe14610814578063e96db1ef14610829578063f2fde38b1461083e575f80fd5b8063b62496f5146106e3578063b79c188614610711578063be69188314610730578063c31c9c0714610745578063c42c3f8814610764578063c6a3064714610779575f80fd5b8063924de9b71161010f578063924de9b71461063e57806395d89b411461065d578063a457c2d714610671578063a9059cbb14610690578063af8f26e7146106af578063b38d5ef4146106c4575f80fd5b8063715018a6146105a0578063751039fc146105b457806375f0a874146105c85780637d673170146105ed5780638da5cb5b146106025780638ea5220f1461061f575f80fd5b8063372b44b8116101f757806367b740e9116101b157806367b740e9146104cc57806368092bd9146104eb578063685fbc6b1461050a5780636f498e211461051f5780637070678b1461054d57806370a082311461056c575f80fd5b8063372b44b81461042c578063395093511461044157806345167f26146104605780634a62bb651461047f578063544d1ec9146104985780635df6e68e146104b7575f80fd5b806322f598351161024857806322f598351461035957806323b872dd1461038757806326991cc8146103a65780632c81355e146103dd578063313ce567146103fc5780633301241114610417575f80fd5b806306fdde0314610299578063095ea7b3146102c35780630bd05b69146102f2578063151d80391461030857806318160ddd1461032657806318c34be114610344575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ad61085d565b6040516102ba91906121f6565b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004612256565b6108ec565b60405190151581526020016102ba565b3480156102fd575f80fd5b50610306610902565b005b348015610313575f80fd5b50600b546102e290610100900460ff1681565b348015610331575f80fd5b506002545b6040519081526020016102ba565b34801561034f575f80fd5b50610336600d5481565b348015610364575f80fd5b506102e2610373366004612280565b60106020525f908152604090205460ff1681565b348015610392575f80fd5b506102e26103a136600461229b565b610946565b3480156103b1575f80fd5b506007546103c5906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b3480156103e8575f80fd5b506103066103f73660046122d9565b6109dd565b348015610407575f80fd5b50604051601281526020016102ba565b348015610422575f80fd5b5061033660175481565b348015610437575f80fd5b50610336600e5481565b34801561044c575f80fd5b506102e261045b366004612256565b610b28565b34801561046b575f80fd5b5061030661047a366004612304565b610b63565b34801561048a575f80fd5b506012546102e29060ff1681565b3480156104a3575f80fd5b506103066104b23660046122d9565b610c3b565b3480156104c2575f80fd5b5061033660165481565b3480156104d7575f80fd5b506103066104e63660046122d9565b610d1f565b3480156104f6575f80fd5b50610306610505366004612304565b610e06565b348015610515575f80fd5b5061033660095481565b34801561052a575f80fd5b506102e2610539366004612280565b600f6020525f908152604090205460ff1681565b348015610558575f80fd5b50610306610567366004612304565b610e5a565b348015610577575f80fd5b50610336610586366004612280565b6001600160a01b03165f9081526003602052604090205490565b3480156105ab575f80fd5b50610306610eae565b3480156105bf575f80fd5b50610306610ee3565b3480156105d3575f80fd5b50600b546103c5906201000090046001600160a01b031681565b3480156105f8575f80fd5b5061033660085481565b34801561060d575f80fd5b506005546001600160a01b03166103c5565b34801561062a575f80fd5b50600c546103c5906001600160a01b031681565b348015610649575f80fd5b50610306610658366004612337565b610f19565b348015610668575f80fd5b506102ad610f5d565b34801561067c575f80fd5b506102e261068b366004612256565b610f6c565b34801561069b575f80fd5b506102e26106aa366004612256565b610ff6565b3480156106ba575f80fd5b5061033660185481565b3480156106cf575f80fd5b506103066106de366004612350565b611002565b3480156106ee575f80fd5b506102e26106fd366004612280565b60116020525f908152604090205460ff1681565b34801561071c575f80fd5b5061030661072b366004612350565b611099565b34801561073b575f80fd5b5061033660155481565b348015610750575f80fd5b506006546103c5906001600160a01b031681565b34801561076f575f80fd5b50610336600a5481565b348015610784575f80fd5b50610306610793366004612304565b61112c565b3480156107a3575f80fd5b506103066107b2366004612370565b611180565b3480156107c2575f80fd5b50600b546102e29060ff1681565b3480156107db575f80fd5b506103366107ea3660046123a7565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561081f575f80fd5b5061033660135481565b348015610834575f80fd5b5061033660145481565b348015610849575f80fd5b50610306610858366004612280565b61140f565b60605f805461086b906123de565b80601f0160208091040260200160405190810160405280929190818152602001828054610897906123de565b80156108e25780601f106108b9576101008083540402835291602001916108e2565b820191905f5260205f20905b8154815290600101906020018083116108c557829003601f168201915b5050505050905090565b5f6108f833848461148f565b5060015b92915050565b6005546001600160a01b031633146109355760405162461bcd60e51b815260040161092c90612416565b60405180910390fd5b600b805461ffff1916610101179055565b5f61095284848461159b565b6001600160a01b0384165f908152600460209081526040808320338452909152902054828110156109c55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000604482015260640161092c565b6109d2853385840361148f565b506001949350505050565b6005546001600160a01b03163314610a075760405162461bcd60e51b815260040161092c90612416565b620186a0610a1460025490565b610a1f906001612451565b610a299190612468565b811015610a965760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161092c565b6103e8610aa260025490565b610aad906005612451565b610ab79190612468565b811115610b235760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161092c565b600855565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108f8918590610b5e908690612487565b61148f565b6005546001600160a01b03163314610b8d5760405162461bcd60e51b815260040161092c90612416565b6007546001600160a01b0390811690831603610c115760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161092c565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c655760405162461bcd60e51b815260040161092c90612416565b610c716012600a61257a565b6103e8610c7d60025490565b610c88906001612451565b610c929190612468565b610c9c9190612468565b811015610d035760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060448201526e6c6f776572207468616e20302e312560881b606482015260840161092c565b610d0f6012600a61257a565b610d199082612451565b600a5550565b6005546001600160a01b03163314610d495760405162461bcd60e51b815260040161092c90612416565b610d556012600a61257a565b6103e8610d6160025490565b610d6c906005612451565b610d769190612468565b610d809190612468565b811015610dea5760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c6044820152716574206c6f776572207468616e20302e352560701b606482015260840161092c565b610df66012600a61257a565b610e009082612451565b60095550565b6005546001600160a01b03163314610e305760405162461bcd60e51b815260040161092c90612416565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e845760405162461bcd60e51b815260040161092c90612416565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ed85760405162461bcd60e51b815260040161092c90612416565b610ee15f611d3d565b565b6005546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161092c90612416565b6012805460ff19169055565b6005546001600160a01b03163314610f435760405162461bcd60e51b815260040161092c90612416565b600b80549115156101000261ff0019909216919091179055565b60606001805461086b906123de565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610fdf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500604482015260640161092c565b610fec338585840361148f565b5060019392505050565b5f6108f833848461159b565b6005546001600160a01b0316331461102c5760405162461bcd60e51b815260040161092c90612416565b601782905560188190556110408183612487565b6016819055605f10156110955760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c65737300000000604482015260640161092c565b5050565b6005546001600160a01b031633146110c35760405162461bcd60e51b815260040161092c90612416565b601482905560158190556110d78183612487565b6013819055605f10156110955760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c65737300000000604482015260640161092c565b6005546001600160a01b031633146111565760405162461bcd60e51b815260040161092c90612416565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f828260405160200161131d92919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611385573d5f803e3d5ffd5b5050506020604051035190506113a36005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146113f75760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161092c565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146114395760405162461bcd60e51b815260040161092c90612416565b6001600160a01b0381166114835760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b604482015260640161092c565b61148c81611d3d565b50565b6001600160a01b0383166114e55760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d20616464726573732830290000604482015260640161092c565b6001600160a01b03821661153b5760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d2061646472657373283029604482015260640161092c565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115f15760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d20616464726573730000000000604482015260640161092c565b6001600160a01b0382166116475760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f206164647265737300000000000000604482015260640161092c565b6001600160a01b0383165f908152601a602052604090205460ff16156116af5760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c69737400000000000000604482015260640161092c565b6001600160a01b0382165f908152601a602052604090205460ff16156117175760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c697374000000000000000000604482015260640161092c565b805f0361172e5761172983835f611d8e565b505050565b60125460ff1615611a8f576005546001600160a01b0384811691161480159061176557506005546001600160a01b03838116911614155b801561177957506001600160a01b03821615155b801561179057506001600160a01b03821661dead14155b801561179f575060195460ff16155b15611a8f57600b5460ff16611830576001600160a01b0383165f9081526010602052604090205460ff16806117eb57506001600160a01b0382165f9081526010602052604090205460ff165b6118305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161092c565b6001600160a01b0383165f9081526011602052604090205460ff16801561186f57506001600160a01b0382165f908152600f602052604090205460ff16155b1561195257600a548111156118e45760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b606482015260840161092c565b6009546001600160a01b0383165f908152600360205260409020546119099083612487565b111561194d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161092c565b611a8f565b6001600160a01b0382165f9081526011602052604090205460ff16801561199157506001600160a01b0383165f908152600f602052604090205460ff16155b15611a0757600a5481111561194d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b606482015260840161092c565b6001600160a01b0382165f908152600f602052604090205460ff16611a8f576009546001600160a01b0383165f90815260036020526040902054611a4b9083612487565b1115611a8f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161092c565b305f90815260036020526040902054600854600b549082101590610100900460ff168015611aba5750805b8015611ac9575060195460ff16155b8015611aed57506001600160a01b0385165f9081526011602052604090205460ff16155b8015611b1157506001600160a01b0385165f9081526010602052604090205460ff16155b8015611b3557506001600160a01b0384165f9081526010602052604090205460ff16155b15611b5a576019805460ff19166001179055611b4f611f32565b6019805460ff191690555b6019546001600160a01b0386165f9081526010602052604090205460ff91821615911680611b9f57506001600160a01b0385165f9081526010602052604090205460ff165b15611ba757505f5b5f8115611d29576001600160a01b0386165f9081526011602052604090205460ff168015611bd657505f601354115b15611c6257611bfb6064611bf56013548861207e90919063ffffffff16565b90612090565b905060135460155482611c0e9190612451565b611c189190612468565b600e5f828254611c289190612487565b9091555050601354601454611c3d9083612451565b611c479190612468565b600d5f828254611c579190612487565b90915550611d0b9050565b6001600160a01b0387165f9081526011602052604090205460ff168015611c8a57505f601654115b15611d0b57611ca96064611bf56016548861207e90919063ffffffff16565b905060165460185482611cbc9190612451565b611cc69190612468565b600e5f828254611cd69190612487565b9091555050601654601754611ceb9083612451565b611cf59190612468565b600d5f828254611d059190612487565b90915550505b8015611d1c57611d1c873083611d8e565b611d268186612588565b94505b611d34878787611d8e565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611de45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d2061646472657373283029000000604482015260640161092c565b6001600160a01b038216611e3a5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d20616464726573732830290000000000604482015260640161092c565b6001600160a01b0383165f9081526003602052604090205481811015611ea25760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74604482015260640161092c565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611ed8908490612487565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2491815260200190565b60405180910390a350505050565b5f80600e54600d54611f449190612487565b305f90815260036020526040902054909150811580611f61575080155b15611f6b57505050565b600854611f79906014612451565b811115611f9157600854611f8e906014612451565b90505b47611f9b8261209b565b5f611fa647836121eb565b90505f611fc285611bf5600e548561207e90919063ffffffff16565b600c546040519192506001600160a01b03169082905f81818185875af1925050503d805f811461200d576040519150601f19603f3d011682016040523d82523d5f602084013e612012565b606091505b5050600b546040519197506201000090046001600160a01b03169047905f81818185875af1925050503d805f8114612065576040519150601f19603f3d011682016040523d82523d5f602084013e61206a565b606091505b50505f600d819055600e5550505050505050565b5f6120898284612451565b9392505050565b5f6120898284612468565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120ce576120ce61259b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612125573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214991906125af565b8160018151811061215c5761215c61259b565b6001600160a01b039283166020918202929092010152600654612182913091168461148f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906121ba9085905f908690309042906004016125ca565b5f604051808303815f87803b1580156121d1575f80fd5b505af11580156121e3573d5f803e3d5ffd5b505050505050565b5f6120898284612588565b5f602080835283518060208501525f5b8181101561222257858101830151858201604001528201612206565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461148c575f80fd5b5f8060408385031215612267575f80fd5b823561227281612242565b946020939093013593505050565b5f60208284031215612290575f80fd5b813561208981612242565b5f805f606084860312156122ad575f80fd5b83356122b881612242565b925060208401356122c881612242565b929592945050506040919091013590565b5f602082840312156122e9575f80fd5b5035919050565b803580151581146122ff575f80fd5b919050565b5f8060408385031215612315575f80fd5b823561232081612242565b915061232e602084016122f0565b90509250929050565b5f60208284031215612347575f80fd5b612089826122f0565b5f8060408385031215612361575f80fd5b50508035926020909101359150565b5f805f60608486031215612382575f80fd5b833560ff81168114612392575f80fd5b95602085013595506040909401359392505050565b5f80604083850312156123b8575f80fd5b82356123c381612242565b915060208301356123d381612242565b809150509250929050565b600181811c908216806123f257607f821691505b60208210810361241057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108fc576108fc61243d565b5f8261248257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108fc576108fc61243d565b600181815b808511156124d457815f19048211156124ba576124ba61243d565b808516156124c757918102915b93841c939080029061249f565b509250929050565b5f826124ea575060016108fc565b816124f657505f6108fc565b816001811461250c576002811461251657612532565b60019150506108fc565b60ff8411156125275761252761243d565b50506001821b6108fc565b5060208310610133831016604e8410600b8410161715612555575081810a6108fc565b61255f838361249a565b805f19048211156125725761257261243d565b029392505050565b5f61208960ff8416836124dc565b818103818111156108fc576108fc61243d565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125bf575f80fd5b815161208981612242565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561261a5784516001600160a01b0316835293830193918301916001016125f5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e21a451f13be44588526452a4ec71513e43ad7aabf8bd145022f747da3d2b4d564736f6c63430008170033

Deployed Bytecode

0x60806040526004361061028e575f3560e01c8063715018a611610155578063b62496f5116100be578063d4394cf811610078578063d4394cf814610798578063d929a083146107b7578063dd62ed3e146107d0578063e27a55fe14610814578063e96db1ef14610829578063f2fde38b1461083e575f80fd5b8063b62496f5146106e3578063b79c188614610711578063be69188314610730578063c31c9c0714610745578063c42c3f8814610764578063c6a3064714610779575f80fd5b8063924de9b71161010f578063924de9b71461063e57806395d89b411461065d578063a457c2d714610671578063a9059cbb14610690578063af8f26e7146106af578063b38d5ef4146106c4575f80fd5b8063715018a6146105a0578063751039fc146105b457806375f0a874146105c85780637d673170146105ed5780638da5cb5b146106025780638ea5220f1461061f575f80fd5b8063372b44b8116101f757806367b740e9116101b157806367b740e9146104cc57806368092bd9146104eb578063685fbc6b1461050a5780636f498e211461051f5780637070678b1461054d57806370a082311461056c575f80fd5b8063372b44b81461042c578063395093511461044157806345167f26146104605780634a62bb651461047f578063544d1ec9146104985780635df6e68e146104b7575f80fd5b806322f598351161024857806322f598351461035957806323b872dd1461038757806326991cc8146103a65780632c81355e146103dd578063313ce567146103fc5780633301241114610417575f80fd5b806306fdde0314610299578063095ea7b3146102c35780630bd05b69146102f2578063151d80391461030857806318160ddd1461032657806318c34be114610344575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ad61085d565b6040516102ba91906121f6565b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004612256565b6108ec565b60405190151581526020016102ba565b3480156102fd575f80fd5b50610306610902565b005b348015610313575f80fd5b50600b546102e290610100900460ff1681565b348015610331575f80fd5b506002545b6040519081526020016102ba565b34801561034f575f80fd5b50610336600d5481565b348015610364575f80fd5b506102e2610373366004612280565b60106020525f908152604090205460ff1681565b348015610392575f80fd5b506102e26103a136600461229b565b610946565b3480156103b1575f80fd5b506007546103c5906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b3480156103e8575f80fd5b506103066103f73660046122d9565b6109dd565b348015610407575f80fd5b50604051601281526020016102ba565b348015610422575f80fd5b5061033660175481565b348015610437575f80fd5b50610336600e5481565b34801561044c575f80fd5b506102e261045b366004612256565b610b28565b34801561046b575f80fd5b5061030661047a366004612304565b610b63565b34801561048a575f80fd5b506012546102e29060ff1681565b3480156104a3575f80fd5b506103066104b23660046122d9565b610c3b565b3480156104c2575f80fd5b5061033660165481565b3480156104d7575f80fd5b506103066104e63660046122d9565b610d1f565b3480156104f6575f80fd5b50610306610505366004612304565b610e06565b348015610515575f80fd5b5061033660095481565b34801561052a575f80fd5b506102e2610539366004612280565b600f6020525f908152604090205460ff1681565b348015610558575f80fd5b50610306610567366004612304565b610e5a565b348015610577575f80fd5b50610336610586366004612280565b6001600160a01b03165f9081526003602052604090205490565b3480156105ab575f80fd5b50610306610eae565b3480156105bf575f80fd5b50610306610ee3565b3480156105d3575f80fd5b50600b546103c5906201000090046001600160a01b031681565b3480156105f8575f80fd5b5061033660085481565b34801561060d575f80fd5b506005546001600160a01b03166103c5565b34801561062a575f80fd5b50600c546103c5906001600160a01b031681565b348015610649575f80fd5b50610306610658366004612337565b610f19565b348015610668575f80fd5b506102ad610f5d565b34801561067c575f80fd5b506102e261068b366004612256565b610f6c565b34801561069b575f80fd5b506102e26106aa366004612256565b610ff6565b3480156106ba575f80fd5b5061033660185481565b3480156106cf575f80fd5b506103066106de366004612350565b611002565b3480156106ee575f80fd5b506102e26106fd366004612280565b60116020525f908152604090205460ff1681565b34801561071c575f80fd5b5061030661072b366004612350565b611099565b34801561073b575f80fd5b5061033660155481565b348015610750575f80fd5b506006546103c5906001600160a01b031681565b34801561076f575f80fd5b50610336600a5481565b348015610784575f80fd5b50610306610793366004612304565b61112c565b3480156107a3575f80fd5b506103066107b2366004612370565b611180565b3480156107c2575f80fd5b50600b546102e29060ff1681565b3480156107db575f80fd5b506103366107ea3660046123a7565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561081f575f80fd5b5061033660135481565b348015610834575f80fd5b5061033660145481565b348015610849575f80fd5b50610306610858366004612280565b61140f565b60605f805461086b906123de565b80601f0160208091040260200160405190810160405280929190818152602001828054610897906123de565b80156108e25780601f106108b9576101008083540402835291602001916108e2565b820191905f5260205f20905b8154815290600101906020018083116108c557829003601f168201915b5050505050905090565b5f6108f833848461148f565b5060015b92915050565b6005546001600160a01b031633146109355760405162461bcd60e51b815260040161092c90612416565b60405180910390fd5b600b805461ffff1916610101179055565b5f61095284848461159b565b6001600160a01b0384165f908152600460209081526040808320338452909152902054828110156109c55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000604482015260640161092c565b6109d2853385840361148f565b506001949350505050565b6005546001600160a01b03163314610a075760405162461bcd60e51b815260040161092c90612416565b620186a0610a1460025490565b610a1f906001612451565b610a299190612468565b811015610a965760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161092c565b6103e8610aa260025490565b610aad906005612451565b610ab79190612468565b811115610b235760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161092c565b600855565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108f8918590610b5e908690612487565b61148f565b6005546001600160a01b03163314610b8d5760405162461bcd60e51b815260040161092c90612416565b6007546001600160a01b0390811690831603610c115760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161092c565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c655760405162461bcd60e51b815260040161092c90612416565b610c716012600a61257a565b6103e8610c7d60025490565b610c88906001612451565b610c929190612468565b610c9c9190612468565b811015610d035760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060448201526e6c6f776572207468616e20302e312560881b606482015260840161092c565b610d0f6012600a61257a565b610d199082612451565b600a5550565b6005546001600160a01b03163314610d495760405162461bcd60e51b815260040161092c90612416565b610d556012600a61257a565b6103e8610d6160025490565b610d6c906005612451565b610d769190612468565b610d809190612468565b811015610dea5760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c6044820152716574206c6f776572207468616e20302e352560701b606482015260840161092c565b610df66012600a61257a565b610e009082612451565b60095550565b6005546001600160a01b03163314610e305760405162461bcd60e51b815260040161092c90612416565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e845760405162461bcd60e51b815260040161092c90612416565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ed85760405162461bcd60e51b815260040161092c90612416565b610ee15f611d3d565b565b6005546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161092c90612416565b6012805460ff19169055565b6005546001600160a01b03163314610f435760405162461bcd60e51b815260040161092c90612416565b600b80549115156101000261ff0019909216919091179055565b60606001805461086b906123de565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610fdf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500604482015260640161092c565b610fec338585840361148f565b5060019392505050565b5f6108f833848461159b565b6005546001600160a01b0316331461102c5760405162461bcd60e51b815260040161092c90612416565b601782905560188190556110408183612487565b6016819055605f10156110955760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c65737300000000604482015260640161092c565b5050565b6005546001600160a01b031633146110c35760405162461bcd60e51b815260040161092c90612416565b601482905560158190556110d78183612487565b6013819055605f10156110955760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c65737300000000604482015260640161092c565b6005546001600160a01b031633146111565760405162461bcd60e51b815260040161092c90612416565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f828260405160200161131d92919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611385573d5f803e3d5ffd5b5050506020604051035190506113a36005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146113f75760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161092c565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146114395760405162461bcd60e51b815260040161092c90612416565b6001600160a01b0381166114835760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b604482015260640161092c565b61148c81611d3d565b50565b6001600160a01b0383166114e55760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d20616464726573732830290000604482015260640161092c565b6001600160a01b03821661153b5760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d2061646472657373283029604482015260640161092c565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115f15760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d20616464726573730000000000604482015260640161092c565b6001600160a01b0382166116475760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f206164647265737300000000000000604482015260640161092c565b6001600160a01b0383165f908152601a602052604090205460ff16156116af5760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c69737400000000000000604482015260640161092c565b6001600160a01b0382165f908152601a602052604090205460ff16156117175760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c697374000000000000000000604482015260640161092c565b805f0361172e5761172983835f611d8e565b505050565b60125460ff1615611a8f576005546001600160a01b0384811691161480159061176557506005546001600160a01b03838116911614155b801561177957506001600160a01b03821615155b801561179057506001600160a01b03821661dead14155b801561179f575060195460ff16155b15611a8f57600b5460ff16611830576001600160a01b0383165f9081526010602052604090205460ff16806117eb57506001600160a01b0382165f9081526010602052604090205460ff165b6118305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161092c565b6001600160a01b0383165f9081526011602052604090205460ff16801561186f57506001600160a01b0382165f908152600f602052604090205460ff16155b1561195257600a548111156118e45760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b606482015260840161092c565b6009546001600160a01b0383165f908152600360205260409020546119099083612487565b111561194d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161092c565b611a8f565b6001600160a01b0382165f9081526011602052604090205460ff16801561199157506001600160a01b0383165f908152600f602052604090205460ff16155b15611a0757600a5481111561194d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b606482015260840161092c565b6001600160a01b0382165f908152600f602052604090205460ff16611a8f576009546001600160a01b0383165f90815260036020526040902054611a4b9083612487565b1115611a8f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161092c565b305f90815260036020526040902054600854600b549082101590610100900460ff168015611aba5750805b8015611ac9575060195460ff16155b8015611aed57506001600160a01b0385165f9081526011602052604090205460ff16155b8015611b1157506001600160a01b0385165f9081526010602052604090205460ff16155b8015611b3557506001600160a01b0384165f9081526010602052604090205460ff16155b15611b5a576019805460ff19166001179055611b4f611f32565b6019805460ff191690555b6019546001600160a01b0386165f9081526010602052604090205460ff91821615911680611b9f57506001600160a01b0385165f9081526010602052604090205460ff165b15611ba757505f5b5f8115611d29576001600160a01b0386165f9081526011602052604090205460ff168015611bd657505f601354115b15611c6257611bfb6064611bf56013548861207e90919063ffffffff16565b90612090565b905060135460155482611c0e9190612451565b611c189190612468565b600e5f828254611c289190612487565b9091555050601354601454611c3d9083612451565b611c479190612468565b600d5f828254611c579190612487565b90915550611d0b9050565b6001600160a01b0387165f9081526011602052604090205460ff168015611c8a57505f601654115b15611d0b57611ca96064611bf56016548861207e90919063ffffffff16565b905060165460185482611cbc9190612451565b611cc69190612468565b600e5f828254611cd69190612487565b9091555050601654601754611ceb9083612451565b611cf59190612468565b600d5f828254611d059190612487565b90915550505b8015611d1c57611d1c873083611d8e565b611d268186612588565b94505b611d34878787611d8e565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611de45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d2061646472657373283029000000604482015260640161092c565b6001600160a01b038216611e3a5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d20616464726573732830290000000000604482015260640161092c565b6001600160a01b0383165f9081526003602052604090205481811015611ea25760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74604482015260640161092c565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611ed8908490612487565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2491815260200190565b60405180910390a350505050565b5f80600e54600d54611f449190612487565b305f90815260036020526040902054909150811580611f61575080155b15611f6b57505050565b600854611f79906014612451565b811115611f9157600854611f8e906014612451565b90505b47611f9b8261209b565b5f611fa647836121eb565b90505f611fc285611bf5600e548561207e90919063ffffffff16565b600c546040519192506001600160a01b03169082905f81818185875af1925050503d805f811461200d576040519150601f19603f3d011682016040523d82523d5f602084013e612012565b606091505b5050600b546040519197506201000090046001600160a01b03169047905f81818185875af1925050503d805f8114612065576040519150601f19603f3d011682016040523d82523d5f602084013e61206a565b606091505b50505f600d819055600e5550505050505050565b5f6120898284612451565b9392505050565b5f6120898284612468565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120ce576120ce61259b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612125573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214991906125af565b8160018151811061215c5761215c61259b565b6001600160a01b039283166020918202929092010152600654612182913091168461148f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906121ba9085905f908690309042906004016125ca565b5f604051808303815f87803b1580156121d1575f80fd5b505af11580156121e3573d5f803e3d5ffd5b505050505050565b5f6120898284612588565b5f602080835283518060208501525f5b8181101561222257858101830151858201604001528201612206565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461148c575f80fd5b5f8060408385031215612267575f80fd5b823561227281612242565b946020939093013593505050565b5f60208284031215612290575f80fd5b813561208981612242565b5f805f606084860312156122ad575f80fd5b83356122b881612242565b925060208401356122c881612242565b929592945050506040919091013590565b5f602082840312156122e9575f80fd5b5035919050565b803580151581146122ff575f80fd5b919050565b5f8060408385031215612315575f80fd5b823561232081612242565b915061232e602084016122f0565b90509250929050565b5f60208284031215612347575f80fd5b612089826122f0565b5f8060408385031215612361575f80fd5b50508035926020909101359150565b5f805f60608486031215612382575f80fd5b833560ff81168114612392575f80fd5b95602085013595506040909401359392505050565b5f80604083850312156123b8575f80fd5b82356123c381612242565b915060208301356123d381612242565b809150509250929050565b600181811c908216806123f257607f821691505b60208210810361241057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108fc576108fc61243d565b5f8261248257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108fc576108fc61243d565b600181815b808511156124d457815f19048211156124ba576124ba61243d565b808516156124c757918102915b93841c939080029061249f565b509250929050565b5f826124ea575060016108fc565b816124f657505f6108fc565b816001811461250c576002811461251657612532565b60019150506108fc565b60ff8411156125275761252761243d565b50506001821b6108fc565b5060208310610133831016604e8410600b8410161715612555575081810a6108fc565b61255f838361249a565b805f19048211156125725761257261243d565b029392505050565b5f61208960ff8416836124dc565b818103818111156108fc576108fc61243d565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125bf575f80fd5b815161208981612242565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561261a5784516001600160a01b0316835293830193918301916001016125f5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e21a451f13be44588526452a4ec71513e43ad7aabf8bd145022f747da3d2b4d564736f6c63430008170033

Deployed Bytecode Sourcemap

14097:10663:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10354:169;;;;;;;;;;-1:-1:-1;10354:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10354:169:0;1023:187:1;16723:116:0;;;;;;;;;;;;;:::i;:::-;;14419:32;;;;;;;;;;-1:-1:-1;14419:32:0;;;;;;;;;;;10103:108;;;;;;;;;;-1:-1:-1;10191:12:0;;10103:108;;;1361:25:1;;;1349:2;1334:18;10103:108:0;1215:177:1;14530:38:0;;;;;;;;;;;;;;;;14686:48;;;;;;;;;;-1:-1:-1;14686:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11034:397;;;;;;;;;;-1:-1:-1;11034:397:0;;;;;:::i;:::-;;:::i;14213:23::-;;;;;;;;;;-1:-1:-1;14213:23:0;;;;-1:-1:-1;;;;;14213:23:0;;;;;;-1:-1:-1;;;;;2274:32:1;;;2256:51;;2244:2;2229:18;14213:23:0;2110:203:1;18304:352:0;;;;;;;;;;-1:-1:-1;18304:352:0;;;;;:::i;:::-;;:::i;10002:93::-;;;;;;;;;;-1:-1:-1;10002:93:0;;10085:2;2645:36:1;;2633:2;2618:18;10002:93:0;2503:184:1;14990:30:0;;;;;;;;;;;;;;;;14575:32;;;;;;;;;;;;;;;;11608:211;;;;;;;;;;-1:-1:-1;11608:211:0;;;;;:::i;:::-;;:::i;19974:247::-;;;;;;;;;;-1:-1:-1;19974:247:0;;;;;:::i;:::-;;:::i;14809:33::-;;;;;;;;;;-1:-1:-1;14809:33:0;;;;;;;;18952:276;;;;;;;;;;-1:-1:-1;18952:276:0;;;;;:::i;:::-;;:::i;14957:26::-;;;;;;;;;;;;;;;;18664:280;;;;;;;;;;-1:-1:-1;18664:280:0;;;;;:::i;:::-;;:::i;19236:120::-;;;;;;;;;;-1:-1:-1;19236:120:0;;;;;:::i;:::-;;:::i;14289:38::-;;;;;;;;;;;;;;;;14616:61;;;;;;;;;;-1:-1:-1;14616:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17789:154;;;;;;;;;;-1:-1:-1;17789:154:0;;;;;:::i;:::-;;:::i;10219:127::-;;;;;;;;;;-1:-1:-1;10219:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10320:18:0;10293:7;10320:18;;;:9;:18;;;;;;;10219:127;1090:103;;;;;;;;;;;;;:::i;18089:90::-;;;;;;;;;;;;;:::i;14460:30::-;;;;;;;;;;-1:-1:-1;14460:30:0;;;;;;;-1:-1:-1;;;;;14460:30:0;;;14249:33;;;;;;;;;;;;;;;;807:87;;;;;;;;;;-1:-1:-1;880:6:0;;-1:-1:-1;;;;;880:6:0;807:87;;14497:24;;;;;;;;;;-1:-1:-1;14497:24:0;;;;-1:-1:-1;;;;;14497:24:0;;;18189:107;;;;;;;;;;-1:-1:-1;18189:107:0;;;;;:::i;:::-;;:::i;9890:104::-;;;;;;;;;;;;;:::i;11827:360::-;;;;;;;;;;-1:-1:-1;11827:360:0;;;;;:::i;:::-;;:::i;11439:161::-;;;;;;;;;;-1:-1:-1;11439:161:0;;;;;:::i;:::-;;:::i;15027:24::-;;;;;;;;;;;;;;;;19364:290;;;;;;;;;;-1:-1:-1;19364:290:0;;;;;:::i;:::-;;:::i;14743:57::-;;;;;;;;;;-1:-1:-1;14743:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19662:300;;;;;;;;;;-1:-1:-1;19662:300:0;;;;;:::i;:::-;;:::i;14923:25::-;;;;;;;;;;;;;;;;14170:36;;;;;;;;;;-1:-1:-1;14170:36:0;;;;-1:-1:-1;;;;;14170:36:0;;;14334:35;;;;;;;;;;;;;;;;17951:130;;;;;;;;;;-1:-1:-1;17951:130:0;;;;;:::i;:::-;;:::i;16847:934::-;;;;;;;;;;-1:-1:-1;16847:934:0;;;;;:::i;:::-;;:::i;14378:34::-;;;;;;;;;;-1:-1:-1;14378:34:0;;;;;;;;10875:151;;;;;;;;;;-1:-1:-1;10875:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10991:18:0;;;10964:7;10991:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10875:151;14851:27;;;;;;;;;;;;;;;;14885:31;;;;;;;;;;;;;;;;902:180;;;;;;;;;;-1:-1:-1;902:180:0;;;;;:::i;:::-;;:::i;9782:100::-;9836:13;9869:5;9862:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:100;:::o;10354:169::-;10437:4;10454:39;324:10;10477:7;10486:6;10454:8;:39::i;:::-;-1:-1:-1;10511:4:0;10354:169;;;;;:::o;16723:116::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;;;;;;;;;16780:14:::1;:21:::0;;-1:-1:-1;;16812:19:0;;;;;16723:116::o;11034:397::-;11131:4;11148:27;11158:4;11164:2;11168:6;11148:9;:27::i;:::-;-1:-1:-1;;;;;11205:17:0;;11186:16;11205:17;;;:11;:17;;;;;;;;324:10;11205:31;;;;;;;;11255:18;;;;11247:60;;;;-1:-1:-1;;;11247:60:0;;5581:2:1;11247:60:0;;;5563:21:1;5620:2;5600:18;;;5593:30;5659:31;5639:18;;;5632:59;5708:18;;11247:60:0;5379:353:1;11247:60:0;11343:47;11352:4;324:10;11383:6;11372:8;:17;11343:8;:47::i;:::-;-1:-1:-1;11419:4:0;;11034:397;-1:-1:-1;;;;11034:397:0:o;18304:352::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;18434:6:::1;18413:13;10191:12:::0;;;10103:108;18413:13:::1;:17;::::0;18429:1:::1;18413:17;:::i;:::-;18412:28;;;;:::i;:::-;18402:6;:38;;18394:104;;;::::0;-1:-1:-1;;;18394:104:0;;6466:2:1;18394:104:0::1;::::0;::::1;6448:21:1::0;6505:2;6485:18;;;6478:30;6544:34;6524:18;;;6517:62;-1:-1:-1;;;6595:18:1;;;6588:51;6656:19;;18394:104:0::1;6264:417:1::0;18394:104:0::1;18549:4;18528:13;10191:12:::0;;;10103:108;18528:13:::1;:17;::::0;18544:1:::1;18528:17;:::i;:::-;18527:26;;;;:::i;:::-;18517:6;:36;;18509:101;;;::::0;-1:-1:-1;;;18509:101:0;;6888:2:1;18509:101:0::1;::::0;::::1;6870:21:1::0;6927:2;6907:18;;;6900:30;6966:34;6946:18;;;6939:62;-1:-1:-1;;;7017:18:1;;;7010:50;7077:19;;18509:101:0::1;6686:416:1::0;18509:101:0::1;18621:18;:27:::0;18304:352::o;11608:211::-;324:10;11694:4;11743:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11743:34:0;;;;;;;;;;11694:4;;11711:78;;11734:7;;11743:45;;11780:8;;11743:45;:::i;:::-;11711:8;:78::i;19974:247::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;20093:8:::1;::::0;-1:-1:-1;;;;;20093:8:0;;::::1;20085:16:::0;;::::1;::::0;20077:86:::1;;;::::0;-1:-1:-1;;;20077:86:0;;7439:2:1;20077:86:0::1;::::0;::::1;7421:21:1::0;7478:2;7458:18;;;7451:30;7517:34;7497:18;;;7490:62;7588:27;7568:18;;;7561:55;7633:19;;20077:86:0::1;7237:421:1::0;20077:86:0::1;-1:-1:-1::0;;;;;20174:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;20174:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19974:247::o;18952:276::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;19090:16:::1;10085:2:::0;19090::::1;:16;:::i;:::-;19081:4;19060:13;10191:12:::0;;;10103:108;19060:13:::1;:17;::::0;19076:1:::1;19060:17;:::i;:::-;19059:26;;;;:::i;:::-;19058:49;;;;:::i;:::-;19048:6;:59;;19040:119;;;::::0;-1:-1:-1;;;19040:119:0;;9242:2:1;19040:119:0::1;::::0;::::1;9224:21:1::0;9281:2;9261:18;;;9254:30;9320:34;9300:18;;;9293:62;-1:-1:-1;;;9371:18:1;;;9364:45;9426:19;;19040:119:0::1;9040:411:1::0;19040:119:0::1;19203:16;10085:2:::0;19203::::1;:16;:::i;:::-;19193:27;::::0;:6;:27:::1;:::i;:::-;19170:20;:50:::0;-1:-1:-1;18952:276:0:o;18664:280::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;18800:16:::1;10085:2:::0;18800::::1;:16;:::i;:::-;18791:4;18770:13;10191:12:::0;;;10103:108;18770:13:::1;:17;::::0;18786:1:::1;18770:17;:::i;:::-;18769:26;;;;:::i;:::-;18768:49;;;;:::i;:::-;18758:6;:59;;18750:122;;;::::0;-1:-1:-1;;;18750:122:0;;9658:2:1;18750:122:0::1;::::0;::::1;9640:21:1::0;9697:2;9677:18;;;9670:30;9736:34;9716:18;;;9709:62;-1:-1:-1;;;9787:18:1;;;9780:48;9845:19;;18750:122:0::1;9456:414:1::0;18750:122:0::1;18919:16;10085:2:::0;18919::::1;:16;:::i;:::-;18909:27;::::0;:6;:27:::1;:::i;:::-;18883:23;:53:::0;-1:-1:-1;18664:280:0:o;19236:120::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19324:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:24;;-1:-1:-1;;19324:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19236:120::o;17789:154::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17892:35:0;;;::::1;;::::0;;;:29:::1;:35;::::0;;;;:43;;-1:-1:-1;;17892:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17789:154::o;1090:103::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;1155:30:::1;1182:1;1155:18;:30::i;:::-;1090:103::o:0;18089:90::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;18149:14:::1;:22:::0;;-1:-1:-1;;18149:22:0::1;::::0;;18089:90::o;18189:107::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;18266:12:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;18266:22:0;;::::1;::::0;;;::::1;::::0;;18189:107::o;9890:104::-;9946:13;9979:7;9972:14;;;;;:::i;11827:360::-;324:10;11913:4;11949:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11949:34:0;;;;;;;;;;12002:20;;;;11994:64;;;;-1:-1:-1;;;11994:64:0;;10077:2:1;11994:64:0;;;10059:21:1;10116:2;10096:18;;;10089:30;10155:33;10135:18;;;10128:61;10206:18;;11994:64:0;9875:355:1;11994:64:0;12094:52;324:10;12117:7;12137:8;12126;:19;12094:8;:52::i;:::-;-1:-1:-1;12175:4:0;;11827:360;-1:-1:-1;;;11827:360:0:o;11439:161::-;11518:4;11535:35;324:10;11559:2;11563:6;11535:9;:35::i;19364:290::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;19463:15:::1;:30:::0;;;19504:9:::1;:21:::0;;;19550:27:::1;19516:9:::0;19481:12;19550:27:::1;:::i;:::-;19536:11;:41:::0;;;19611:2:::1;-1:-1:-1::0;19596:17:0::1;19588:58;;;::::0;-1:-1:-1;;;19588:58:0;;10437:2:1;19588:58:0::1;::::0;::::1;10419:21:1::0;10476:2;10456:18;;;10449:30;10515;10495:18;;;10488:58;10563:18;;19588:58:0::1;10235:352:1::0;19588:58:0::1;19364:290:::0;;:::o;19662:300::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;19765:16:::1;:31:::0;;;19807:10:::1;:22:::0;;;19855:29:::1;19820:9:::0;19784:12;19855:29:::1;:::i;:::-;19840:12;:44:::0;;;19919:2:::1;-1:-1:-1::0;19903:18:0::1;19895:59;;;::::0;-1:-1:-1;;;19895:59:0;;10437:2:1;19895:59:0::1;::::0;::::1;10419:21:1::0;10476:2;10456:18;;;10449:30;10515;10495:18;;;10488:58;10563:18;;19895:59:0::1;10235:352:1::0;17951:130:0;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18040:25:0;;;::::1;;::::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;18040:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17951:130::o;16847:934::-;17109:22;;;;;;;;;;;-1:-1:-1;;;17109:22:0;;;;;17157:10;;;;;;;;;;-1:-1:-1;;;17157:10:0;;;;16964:271;;16989:95;16964:271;;;10851:25:1;;;;17099:33:0;10892:18:1;;;10885:34;;;;17147:21:0;10935:18:1;;;10928:34;17183:13:0;10978:18:1;;;10971:34;17219:4:0;11021:19:1;;;11014:61;-1:-1:-1;;10823:19:1;;16964:271:0;;;;;;-1:-1:-1;;16964:271:0;;;;;;16954:282;;16964:271;16954:282;;;;17377:23;;;;;;;;-1:-1:-1;;;17377:23:0;;;;;;;17278:159;;17303:49;17278:159;;;11288:25:1;;;;17367:34:0;11329:18:1;;;11322:34;;;;-1:-1:-1;11372:18:1;;;11365:34;;;16954:282:0;;-1:-1:-1;11261:18:1;;17278:159:0;;;;;;;;;;;;17268:170;;;;;;17247:191;;17449:14;17532:10;17557;17476:118;;;;;;;;-1:-1:-1;;;11668:27:1;;11720:1;11711:11;;11704:27;;;;11756:2;11747:12;;11740:28;11793:2;11784:12;;11410:392;17476:118:0;;;;-1:-1:-1;;17476:118:0;;;;;;;;;17466:129;;17476:118;17466:129;;;;17608:14;17625:26;;;;;;;;;12034:25:1;;;12107:4;12095:17;;12075:18;;;12068:45;;;;12129:18;;;12122:34;;;12172:18;;;12165:34;;;17466:129:0;;-1:-1:-1;17608:14:0;17625:26;;12006:19:1;;17625:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17608:43;;17680:7;880:6;;-1:-1:-1;;;;;880:6:0;;807:87;17680:7;-1:-1:-1;;;;;17670:17:0;:6;-1:-1:-1;;;;;17670:17:0;;17662:47;;;;-1:-1:-1;;;17662:47:0;;12412:2:1;17662:47:0;;;12394:21:1;12451:2;12431:18;;;12424:30;-1:-1:-1;;;12470:18:1;;;12463:47;12527:18;;17662:47:0;12210:341:1;17662:47:0;-1:-1:-1;;17722:14:0;:21;;-1:-1:-1;;17754:19:0;;;;;-1:-1:-1;;;;;16847:934:0:o;902:180::-;880:6;;-1:-1:-1;;;;;880:6:0;324:10;738:23;730:49;;;;-1:-1:-1;;;730:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;991:22:0;::::1;983:52;;;::::0;-1:-1:-1;;;983:52:0;;12758:2:1;983:52:0::1;::::0;::::1;12740:21:1::0;12797:2;12777:18;;;12770:30;-1:-1:-1;;;12816:18:1;;;12809:47;12873:18;;983:52:0::1;12556:341:1::0;983:52:0::1;1046:28;1065:8;1046:18;:28::i;:::-;902:180:::0;:::o;10531:336::-;-1:-1:-1;;;;;10633:19:0;;10625:62;;;;-1:-1:-1;;;10625:62:0;;13104:2:1;10625:62:0;;;13086:21:1;13143:2;13123:18;;;13116:30;13182:32;13162:18;;;13155:60;13232:18;;10625:62:0;12902:354:1;10625:62:0;-1:-1:-1;;;;;10706:21:0;;10698:66;;;;-1:-1:-1;;;10698:66:0;;13463:2:1;10698:66:0;;;13445:21:1;;;13482:18;;;13475:30;13541:34;13521:18;;;13514:62;13593:18;;10698:66:0;13261:356:1;10698:66:0;-1:-1:-1;;;;;10775:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10827:32;;1361:25:1;;;10827:32:0;;1334:18:1;10827:32:0;;;;;;;10531:336;;;:::o;21121:2915::-;-1:-1:-1;;;;;21253:18:0;;21245:58;;;;-1:-1:-1;;;21245:58:0;;13824:2:1;21245:58:0;;;13806:21:1;13863:2;13843:18;;;13836:30;13902:29;13882:18;;;13875:57;13949:18;;21245:58:0;13622:351:1;21245:58:0;-1:-1:-1;;;;;21322:16:0;;21314:54;;;;-1:-1:-1;;;21314:54:0;;14180:2:1;21314:54:0;;;14162:21:1;14219:2;14199:18;;;14192:30;14258:27;14238:18;;;14231:55;14303:18;;21314:54:0;13978:349:1;21314:54:0;-1:-1:-1;;;;;21388:15:0;;;;;;:9;:15;;;;;;;;21387:16;21379:54;;;;-1:-1:-1;;;21379:54:0;;14534:2:1;21379:54:0;;;14516:21:1;14573:2;14553:18;;;14546:30;14612:27;14592:18;;;14585:55;14657:18;;21379:54:0;14332:349:1;21379:54:0;-1:-1:-1;;;;;21453:13:0;;;;;;:9;:13;;;;;;;;21452:14;21444:50;;;;-1:-1:-1;;;21444:50:0;;14888:2:1;21444:50:0;;;14870:21:1;14927:2;14907:18;;;14900:30;14966:25;14946:18;;;14939:53;15009:18;;21444:50:0;14686:347:1;21444:50:0;21511:6;21521:1;21511:11;21507:93;;21539:28;21555:4;21561:2;21565:1;21539:15;:28::i;:::-;21121:2915;;;:::o;21507:93::-;21616:14;;;;21612:1085;;;880:6;;-1:-1:-1;;;;;21651:15:0;;;880:6;;21651:15;;;;:32;;-1:-1:-1;880:6:0;;-1:-1:-1;;;;;21670:13:0;;;880:6;;21670:13;;21651:32;:52;;;;-1:-1:-1;;;;;;21687:16:0;;;;21651:52;:77;;;;-1:-1:-1;;;;;;21707:21:0;;21721:6;21707:21;;21651:77;:91;;;;-1:-1:-1;21733:9:0;;;;21732:10;21651:91;21647:1039;;;21768:14;;;;21763:145;;-1:-1:-1;;;;;21815:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;21841:20:0;;;;;;:16;:20;;;;;;;;21815:46;21807:81;;;;-1:-1:-1;;;21807:81:0;;15240:2:1;21807:81:0;;;15222:21:1;15279:2;15259:18;;;15252:30;-1:-1:-1;;;15298:18:1;;;15291:52;15360:18;;21807:81:0;15038:346:1;21807:81:0;-1:-1:-1;;;;;21932:31:0;;;;;;:25;:31;;;;;;;;:69;;;;-1:-1:-1;;;;;;21968:33:0;;;;;;:29;:33;;;;;;;;21967:34;21932:69;21928:743;;;22044:20;;22034:6;:30;;22026:96;;;;-1:-1:-1;;;22026:96:0;;15591:2:1;22026:96:0;;;15573:21:1;15630:2;15610:18;;;15603:30;15669:34;15649:18;;;15642:62;-1:-1:-1;;;15720:18:1;;;15713:51;15781:19;;22026:96:0;15389:417:1;22026:96:0;22179:23;;-1:-1:-1;;;;;10320:18:0;;10293:7;10320:18;;;:9;:18;;;;;;22153:22;;:6;:22;:::i;:::-;:49;;22145:81;;;;-1:-1:-1;;;22145:81:0;;16013:2:1;22145:81:0;;;15995:21:1;16052:2;16032:18;;;16025:30;-1:-1:-1;;;16071:18:1;;;16064:49;16130:18;;22145:81:0;15811:343:1;22145:81:0;21928:743;;;-1:-1:-1;;;;;22273:29:0;;;;;;:25;:29;;;;;;;;:69;;;;-1:-1:-1;;;;;;22307:35:0;;;;;;:29;:35;;;;;;;;22306:36;22273:69;22269:402;;;22385:20;;22375:6;:30;;22367:97;;;;-1:-1:-1;;;22367:97:0;;16361:2:1;22367:97:0;;;16343:21:1;16400:2;16380:18;;;16373:30;16439:34;16419:18;;;16412:62;-1:-1:-1;;;16490:18:1;;;16483:52;16552:19;;22367:97:0;16159:418:1;22269:402:0;-1:-1:-1;;;;;22512:33:0;;;;;;:29;:33;;;;;;;;22507:164;;22604:23;;-1:-1:-1;;;;;10320:18:0;;10293:7;10320:18;;;:9;:18;;;;;;22578:22;;:6;:22;:::i;:::-;:49;;22570:81;;;;-1:-1:-1;;;22570:81:0;;16013:2:1;22570:81:0;;;15995:21:1;16052:2;16032:18;;;16025:30;-1:-1:-1;;;16071:18:1;;;16064:49;16130:18;;22570:81:0;15811:343:1;22570:81:0;22752:4;22711:20;10320:18;;;:9;:18;;;;;;22800;;22833:12;;22784:34;;;;;22833:12;;;;;:23;;;;;22849:7;22833:23;:37;;;;-1:-1:-1;22861:9:0;;;;22860:10;22833:37;:86;;;;-1:-1:-1;;;;;;22888:31:0;;;;;;:25;:31;;;;;;;;22887:32;22833:86;:113;;;;-1:-1:-1;;;;;;22924:22:0;;;;;;:16;:22;;;;;;;;22923:23;22833:113;:138;;;;-1:-1:-1;;;;;;22951:20:0;;;;;;:16;:20;;;;;;;;22950:21;22833:138;22829:244;;;22988:9;:16;;-1:-1:-1;;22988:16:0;23000:4;22988:16;;;23019:10;:8;:10::i;:::-;23044:9;:17;;-1:-1:-1;;23044:17:0;;;22829:244;23098:9;;-1:-1:-1;;;;;23122:22:0;;23085:9;23122:22;;;:16;:22;;;;;;23098:9;;;;23097:10;;23122:22;;:46;;-1:-1:-1;;;;;;23148:20:0;;;;;;:16;:20;;;;;;;;23122:46;23118:77;;;-1:-1:-1;23190:5:0;23118:77;23208:12;23239:4;23235:748;;;-1:-1:-1;;;;;23264:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;23312:1;23297:12;;:16;23264:49;23260:595;;;23341:33;23370:3;23341:24;23352:12;;23341:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;23334:40;;23436:12;;23422:10;;23415:4;:17;;;;:::i;:::-;23414:34;;;;:::i;:::-;23393:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;23522:12:0;;23502:16;;23495:23;;:4;:23;:::i;:::-;23494:40;;;;:::i;:::-;23467:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;23260:595:0;;-1:-1:-1;23260:595:0;;-1:-1:-1;;;;;23573:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;23622:1;23608:11;;:15;23573:50;23569:286;;;23651:32;23679:3;23651:23;23662:11;;23651:6;:10;;:23;;;;:::i;:32::-;23644:39;;23744:11;;23731:9;;23724:4;:16;;;;:::i;:::-;23723:32;;;;:::i;:::-;23702:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;23828:11:0;;23809:15;;23802:22;;:4;:22;:::i;:::-;23801:38;;;;:::i;:::-;23774:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;23569:286:0;23873:8;;23869:73;;23900:42;23916:4;23930;23937;23900:15;:42::i;:::-;23957:14;23967:4;23957:14;;:::i;:::-;;;23235:748;23995:33;24011:4;24017:2;24021:6;23995:15;:33::i;:::-;21234:2802;;;;21121:2915;;;:::o;1201:191::-;1294:6;;;-1:-1:-1;;;;;1311:17:0;;;-1:-1:-1;;;;;;1311:17:0;;;;;;;1344:40;;1294:6;;;1311:17;1294:6;;1344:40;;1275:16;;1344:40;1264:128;1201:191;:::o;13331:607::-;-1:-1:-1;;;;;13428:18:0;;13420:60;;;;-1:-1:-1;;;13420:60:0;;16917:2:1;13420:60:0;;;16899:21:1;16956:2;16936:18;;;16929:30;16995:31;16975:18;;;16968:59;17044:18;;13420:60:0;16715:353:1;13420:60:0;-1:-1:-1;;;;;13499:16:0;;13491:56;;;;-1:-1:-1;;;13491:56:0;;17275:2:1;13491:56:0;;;17257:21:1;17314:2;17294:18;;;17287:30;17353:29;17333:18;;;17326:57;17400:18;;13491:56:0;17073:351:1;13491:56:0;-1:-1:-1;;;;;13629:15:0;;13607:19;13629:15;;;:9;:15;;;;;;13663:21;;;;13655:66;;;;-1:-1:-1;;;13655:66:0;;17631:2:1;13655:66:0;;;17613:21:1;;;17650:18;;;17643:30;17709:34;17689:18;;;17682:62;17761:18;;13655:66:0;17429:356:1;13655:66:0;-1:-1:-1;;;;;13757:15:0;;;;;;;:9;:15;;;;;;13775:20;;;13757:38;;13817:13;;;;;;;;:23;;13789:6;;13757:15;13817:23;;13789:6;;13817:23;:::i;:::-;;;;;;;;13871:2;-1:-1:-1;;;;;13856:26:0;13865:4;-1:-1:-1;;;;;13856:26:0;;13875:6;13856:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;13856:26:0;;;;;;;;13409:529;13331:607;;;:::o;20229:884::-;20268:12;20291:25;20345:17;;20319:23;;:43;;;;:::i;:::-;20414:4;20373:20;10320:18;;;:9;:18;;;;;;20291:71;;-1:-1:-1;20437:22:0;;;:43;;-1:-1:-1;20463:17:0;;20437:43;20433:69;;;20495:7;;;20229:884::o;20433:69::-;20533:18;;:23;;20554:2;20533:23;:::i;:::-;20518:12;:38;20514:95;;;20586:18;;:23;;20607:2;20586:23;:::i;:::-;20571:38;;20514:95;20647:21;20679:30;20696:12;20679:16;:30::i;:::-;20722:18;20743:41;:21;20769:14;20743:25;:41::i;:::-;20722:62;;20795:17;20815:56;20853:17;20815:33;20830:17;;20815:10;:14;;:33;;;;:::i;:56::-;20906:9;;20898:45;;20795:76;;-1:-1:-1;;;;;;20906:9:0;;20795:76;;20898:45;;;;20795:76;20906:9;20898:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20976:15:0;;20968:65;;20884:59;;-1:-1:-1;20976:15:0;;;-1:-1:-1;;;;;20976:15:0;;21006:21;;20968:65;;;;21006:21;20976:15;20968:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21072:1:0;21046:23;:27;;;21084:17;:21;-1:-1:-1;;;;;;;20229:884:0:o;1423:98::-;1481:7;1508:5;1512:1;1508;:5;:::i;:::-;1501:12;1423:98;-1:-1:-1;;;1423:98:0:o;1807:::-;1865:7;1892:5;1896:1;1892;:5;:::i;24196:559::-;24341:16;;;24355:1;24341:16;;;;;;;;24317:21;;24341:16;;;;;;;;;;-1:-1:-1;24341:16:0;24317:40;;24386:4;24368;24373:1;24368:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24368:23:0;;;:7;;;;;;;;;;:23;;;;24412:10;;:17;;;-1:-1:-1;;;24412:17:0;;;;:10;;;;;:15;;:17;;;;;24368:7;;24412:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24402:4;24407:1;24402:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24402:27:0;;;:7;;;;;;;;;:27;24474:10;;24442:52;;24459:4;;24474:10;24487:6;24442:8;:52::i;:::-;24533:10;;:214;;-1:-1:-1;;;24533:214:0;;-1:-1:-1;;;;;24533:10:0;;;;:61;;:214;;24609:6;;24533:10;;24674:4;;24701;;24721:15;;24533:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24246:509;24196:559;:::o;2452:98::-;2510:7;2537:5;2541:1;2537;:5;:::i;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;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2318:180::-;2377:6;2430:2;2418:9;2409:7;2405:23;2401:32;2398:52;;;2446:1;2443;2436:12;2398:52;-1:-1:-1;2469:23:1;;2318:180;-1:-1:-1;2318:180:1:o;2692:160::-;2757:20;;2813:13;;2806:21;2796:32;;2786:60;;2842:1;2839;2832:12;2786:60;2692:160;;;:::o;2857:315::-;2922:6;2930;2983:2;2971:9;2962:7;2958:23;2954:32;2951:52;;;2999:1;2996;2989:12;2951:52;3038:9;3025:23;3057:31;3082:5;3057:31;:::i;:::-;3107:5;-1:-1:-1;3131:35:1;3162:2;3147:18;;3131:35;:::i;:::-;3121:45;;2857:315;;;;;:::o;3177:180::-;3233:6;3286:2;3274:9;3265:7;3261:23;3257:32;3254:52;;;3302:1;3299;3292:12;3254:52;3325:26;3341:9;3325:26;:::i;3362:248::-;3430:6;3438;3491:2;3479:9;3470:7;3466:23;3462:32;3459:52;;;3507:1;3504;3497:12;3459:52;-1:-1:-1;;3530:23:1;;;3600:2;3585:18;;;3572:32;;-1:-1:-1;3362:248:1:o;3849:405::-;3924:6;3932;3940;3993:2;3981:9;3972:7;3968:23;3964:32;3961:52;;;4009:1;4006;3999:12;3961:52;4048:9;4035:23;4098:4;4091:5;4087:16;4080:5;4077:27;4067:55;;4118:1;4115;4108:12;4067:55;4141:5;4193:2;4178:18;;4165:32;;-1:-1:-1;4244:2:1;4229:18;;;4216:32;;3849:405;-1:-1:-1;;;3849:405:1:o;4259:388::-;4327:6;4335;4388:2;4376:9;4367:7;4363:23;4359:32;4356:52;;;4404:1;4401;4394:12;4356:52;4443:9;4430:23;4462:31;4487:5;4462:31;:::i;:::-;4512:5;-1:-1:-1;4569:2:1;4554:18;;4541:32;4582:33;4541:32;4582:33;:::i;:::-;4634:7;4624:17;;;4259:388;;;;;:::o;4652:380::-;4731:1;4727:12;;;;4774;;;4795:61;;4849:4;4841:6;4837:17;4827:27;;4795:61;4902:2;4894:6;4891:14;4871:18;4868:38;4865:161;;4948:10;4943:3;4939:20;4936:1;4929:31;4983:4;4980:1;4973:15;5011:4;5008:1;5001:15;4865:161;;4652:380;;;:::o;5037:337::-;5239:2;5221:21;;;5278:2;5258:18;;;5251:30;-1:-1:-1;;;5312:2:1;5297:18;;5290:43;5365:2;5350:18;;5037:337::o;5737:127::-;5798:10;5793:3;5789:20;5786:1;5779:31;5829:4;5826:1;5819:15;5853:4;5850:1;5843:15;5869:168;5942:9;;;5973;;5990:15;;;5984:22;;5970:37;5960:71;;6011:18;;:::i;6042:217::-;6082:1;6108;6098:132;;6152:10;6147:3;6143:20;6140:1;6133:31;6187:4;6184:1;6177:15;6215:4;6212:1;6205:15;6098:132;-1:-1:-1;6244:9:1;;6042:217::o;7107:125::-;7172:9;;;7193:10;;;7190:36;;;7206:18;;:::i;7663:416::-;7752:1;7789:5;7752:1;7803:270;7824:7;7814:8;7811:21;7803:270;;;7883:4;7879:1;7875:6;7871:17;7865:4;7862:27;7859:53;;;7892:18;;:::i;:::-;7942:7;7932:8;7928:22;7925:55;;;7962:16;;;;7925:55;8041:22;;;;8001:15;;;;7803:270;;;7807:3;7663:416;;;;;:::o;8084:806::-;8133:5;8163:8;8153:80;;-1:-1:-1;8204:1:1;8218:5;;8153:80;8252:4;8242:76;;-1:-1:-1;8289:1:1;8303:5;;8242:76;8334:4;8352:1;8347:59;;;;8420:1;8415:130;;;;8327:218;;8347:59;8377:1;8368:10;;8391:5;;;8415:130;8452:3;8442:8;8439:17;8436:43;;;8459:18;;:::i;:::-;-1:-1:-1;;8515:1:1;8501:16;;8530:5;;8327:218;;8629:2;8619:8;8616:16;8610:3;8604:4;8601:13;8597:36;8591:2;8581:8;8578:16;8573:2;8567:4;8564:12;8560:35;8557:77;8554:159;;;-1:-1:-1;8666:19:1;;;8698:5;;8554:159;8745:34;8770:8;8764:4;8745:34;:::i;:::-;8815:6;8811:1;8807:6;8803:19;8794:7;8791:32;8788:58;;;8826:18;;:::i;:::-;8864:20;;8084:806;-1:-1:-1;;;8084:806:1:o;8895:140::-;8953:5;8982:47;9023:4;9013:8;9009:19;9003:4;8982:47;:::i;16582:128::-;16649:9;;;16670:11;;;16667:37;;;16684:18;;:::i;18132:127::-;18193:10;18188:3;18184:20;18181:1;18174:31;18224:4;18221:1;18214:15;18248:4;18245:1;18238:15;18264:251;18334:6;18387:2;18375:9;18366:7;18362:23;18358:32;18355:52;;;18403:1;18400;18393:12;18355:52;18435:9;18429:16;18454:31;18479:5;18454:31;:::i;18520:980::-;18782:4;18830:3;18819:9;18815:19;18861:6;18850:9;18843:25;18887:2;18925:6;18920:2;18909:9;18905:18;18898:34;18968:3;18963:2;18952:9;18948:18;18941:31;18992:6;19027;19021:13;19058:6;19050;19043:22;19096:3;19085:9;19081:19;19074:26;;19135:2;19127:6;19123:15;19109:29;;19156:1;19166:195;19180:6;19177:1;19174:13;19166:195;;;19245:13;;-1:-1:-1;;;;;19241:39:1;19229:52;;19336:15;;;;19301:12;;;;19277:1;19195:9;19166:195;;;-1:-1:-1;;;;;;;19417:32:1;;;;19412:2;19397:18;;19390:60;-1:-1:-1;;;19481:3:1;19466:19;19459:35;19378:3;18520:980;-1:-1:-1;;;18520:980:1:o

Swarm Source

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