BNB Price: $696.85 (-1.84%)
Gas: 1 GWei
 

Overview

Max Total Supply

1,000,000,000GPTG

Holders

16 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
BscScan: Donate
Balance
60,000,000 GPTG

Value
$0.00
0x71c7656ec7ab88b098defb751b7401b5f6d8976f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

GPTGold is an AI-powered meme coin built on the Binance Smart Chain (BEP-20), combining the fun of meme culture with cutting-edge AI integration. Designed for a community-centric experience.


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
GPTG

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at BscScan.com on 2024-11-29
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.22;

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

contract GPTG is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  liquidityFeeOnBuy;
    uint256 public  liquidityFeeOnSell;

    uint256 public  marketingFeeOnBuy;
    uint256 public  marketingFeeOnSell;

    uint256 private _totalFeesOnBuy;
    uint256 private _totalFeesOnSell;

    uint256 public  walletToWalletTransferFee;

    address public  marketingWallet;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event MarketingWalletChanged(address marketingWallet);
    event UpdateBuyFees(uint256 liquidityFeeOnBuy, uint256 marketingFeeOnBuy);
    event UpdateSellFees(uint256 liquidityFeeOnSell, uint256 marketingFeeOnSell);
    event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity);
    event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("GPTGold Token", "GPTG") 
    {   
        address router;
        address pinkLock;
        
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
            pinkLock = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE; // BSC PinkLock
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
            pinkLock = 0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5; // BSC Testnet PinkLock
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
            pinkLock = 0x71B5759d73262FBb223956913ecF4ecC51057641; // ETH PinkLock
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        liquidityFeeOnBuy  = 1;
        liquidityFeeOnSell = 1;

        marketingFeeOnBuy  = 2;
        marketingFeeOnSell = 2;

        _totalFeesOnBuy    = liquidityFeeOnBuy  + marketingFeeOnBuy;
        _totalFeesOnSell   = liquidityFeeOnSell + marketingFeeOnSell;

        walletToWalletTransferFee = 0;

        marketingWallet = 0x16F8c8Fe5522A119c8723Dc07Fc7EA7623656D72;

        maxTransactionLimitEnabled = true;

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[address(0xdead)] = true;
        _isExcludedFromMaxTxLimit[marketingWallet] = true;
        _isExcludedFromMaxTxLimit[pinkLock] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[pinkLock] = true;

        _mintOnce(owner(), 1e9 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 5_000;
	
        maxTransactionAmountBuy     = totalSupply() * 10 / 1000;
        maxTransactionAmountSell    = totalSupply() * 10 / 1000;
	
        tradingEnabled = false;
        swapEnabled = false;
    }

    receive() external payable {

  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    function updateBuyFees(uint256 _liquidityFeeOnBuy, uint256 _marketingFeeOnBuy) external onlyOwner {
        liquidityFeeOnBuy = _liquidityFeeOnBuy;
        marketingFeeOnBuy = _marketingFeeOnBuy;

        _totalFeesOnBuy   = liquidityFeeOnBuy + marketingFeeOnBuy;

        require(_totalFeesOnBuy <= 10, "Total Fees cannot exceed the maximum");

        emit UpdateBuyFees(liquidityFeeOnBuy, marketingFeeOnBuy);
    }

    function updateSellFees(uint256 _liquidityFeeOnSell, uint256 _marketingFeeOnSell) external onlyOwner {
        liquidityFeeOnSell = _liquidityFeeOnSell;
        marketingFeeOnSell = _marketingFeeOnSell;

        _totalFeesOnSell   = liquidityFeeOnSell + marketingFeeOnSell;

        require(_totalFeesOnSell <= 10, "Total Fees cannot exceed the maximum");

        emit UpdateSellFees(liquidityFeeOnSell, marketingFeeOnSell);
    }

    function updateWalletToWalletTransferFee(uint256 _walletToWalletTransferFee) external onlyOwner {
        require(_walletToWalletTransferFee <= 5, "Wallet to Wallet Transfer Fee cannot exceed the maximum");
        walletToWalletTransferFee = _walletToWalletTransferFee;

        emit UpdateWalletToWalletTransferFee(walletToWalletTransferFee);
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner{
        require(_marketingWallet != marketingWallet,"Marketing wallet is already that address");
        require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address");
        marketingWallet = _marketingWallet;

        emit MarketingWalletChanged(marketingWallet);
    }

    bool public tradingEnabled;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) 
        {
            if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
                !_isExcludedFromMaxTxLimit[from] && 
                !_isExcludedFromMaxTxLimit[to]
            ) {
                if (from == uniswapV2Pair) {
                    require(
                        amount <= maxTransactionAmountBuy,  
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                } else {
                    require(
                        amount <= maxTransactionAmountSell, 
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            _totalFeesOnBuy + _totalFeesOnSell > 0 &&
            swapEnabled
        ) {
            swapping = true;

            uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell;
            uint256 liquidityShare = liquidityFeeOnBuy + liquidityFeeOnSell;
            uint256 marketingShare = marketingFeeOnBuy + marketingFeeOnSell;

            if (liquidityShare > 0) {
                uint256 liquidityTokens = contractTokenBalance * liquidityShare / totalFee;
                swapAndLiquify(liquidityTokens);
            }
            
            if (marketingShare > 0) {
                uint256 marketingTokens = contractTokenBalance * marketingShare / totalFee;
                swapAndSendMarketing(marketingTokens);
            }          

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = _totalFeesOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees = _totalFeesOnSell;
        } else {
            _totalFees = walletToWalletTransferFee;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

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

    function setSwapEnabled(bool _enabled) external onlyOwner{
        require(swapEnabled != _enabled, "swapEnabled already at this state.");
        swapEnabled = _enabled;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            half,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {}
        
        uint256 newBalance = address(this).balance - initialBalance;

        try uniswapV2Router.addLiquidityETH{value: newBalance}(
            address(this),
            otherHalf,
            0,
            0,
            address(0xdead),
            block.timestamp
        ) {} catch {}

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapAndSendMarketing(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {}

        uint256 newBalance = address(this).balance - initialBalance;

        payable(marketingWallet).sendValue(newBalance);

        emit SwapAndSendMarketing(tokenAmount, newBalance);
    }

    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool    public  maxTransactionLimitEnabled;
    uint256 public  maxTransactionAmountBuy;
    uint256 public  maxTransactionAmountSell;

    event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
    event MaxTransactionLimitStateChanged(bool maxTransactionLimit);
    event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell);

    function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state");
        maxTransactionLimitEnabled = enable;

        emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
    }

    function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner {
        require(
            _maxTransactionAmountBuy  >= (totalSupply() / (10 ** decimals())) / 1_000 && 
            _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, 
            "Max Transaction limis cannot be lower than 0.1% of total supply"
        ); 
        maxTransactionAmountBuy  = _maxTransactionAmountBuy  * (10 ** decimals());
        maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals());

        emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell);
    }

    function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        require(account != address(this), "Can't set this address.");

        _isExcludedFromMaxTxLimit[account] = exclude;

        emit ExcludedFromMaxTransactionLimit(account, exclude);
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletToWalletTransferFee","type":"uint256"}],"name":"updateWalletToWalletTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801562000010575f80fd5b506040518060400160405280600d81526020016c23a82a23b7b632102a37b5b2b760991b815250604051806040016040528060048152602001634750544760e01b815250816003908162000065919062000847565b50600462000074828262000847565b5050505f620000886200059860201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f80466038036200011357507310ed43c718714eb63d5aa57b78b54704e256024e905073407993575c91ce7643a4d4ccacc9a98c36ee1bbe6200019c565b466061036200014f575073d99d1c33f9fc3444f8101754abc46c52416550d19050735e5b9be5fd939c578abe5800a90c566eeeba44a56200019c565b46600114806200015f5750466005145b15620001985750737a250d5630b4cf539739df2c5dacb4c659f2488d90507371b5759d73262fbb223956913ecf4ecc510576416200019c565b5f80fd5b5f8290505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000204919062000913565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000250573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000276919062000913565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002c1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000913565b600680546001600160a01b038086166001600160a01b031992831681179093556007805491851691909216179055909150620003279030905f196200059c565b60016009819055600a8190556002600b819055600c8190556200034a9162000956565b600d55600c54600a546200035f919062000956565b600e555f600f819055601080546001600160a01b0319167316f8c8fe5522a119c8723dc07fc7ea7623656d721790556014805460ff1916600190811790915590601390620003b56005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260139093528183208054851660019081179091557f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c80548616821790556010548216845282842080548616821790559087168352908220805490931681179092556008906200045c6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560089093527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805485166001908117909155308452828420805486168217905590871683529120805490921617905562000513620004ef6005546001600160a01b031690565b620004fd6012600a62000a6b565b6200050d90633b9aca0062000a7b565b620006c7565b6113886200052060025490565b6200052c919062000a95565b6011556103e86200053c60025490565b6200054990600a62000a7b565b62000555919062000a95565b6015556103e86200056560025490565b6200057290600a62000a7b565b6200057e919062000a95565b60165550506012805462ffff00191690555062000ab59050565b3390565b6001600160a01b038316620006045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620005fb565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166200071f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005fb565b8060025f82825462000732919062000956565b90915550506001600160a01b0382165f90815260208190526040812080548392906200076090849062000956565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620007d257607f821691505b602082108103620007f157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200084257805f5260205f20601f840160051c810160208510156200081e5750805b601f840160051c820191505b818110156200083f575f81556001016200082a565b50505b505050565b81516001600160401b03811115620008635762000863620007a9565b6200087b81620008748454620007bd565b84620007f7565b602080601f831160018114620008b1575f8415620008995750858301515b5f19600386901b1c1916600185901b1785556200090b565b5f85815260208120601f198616915b82811015620008e157888601518255948401946001909101908401620008c0565b5085821015620008ff57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000924575f80fd5b81516001600160a01b03811681146200093b575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156200096c576200096c62000942565b92915050565b600181815b80851115620009b257815f190482111562000996576200099662000942565b80851615620009a457918102915b93841c939080029062000977565b509250929050565b5f82620009ca575060016200096c565b81620009d857505f6200096c565b8160018114620009f15760028114620009fc5762000a1c565b60019150506200096c565b60ff84111562000a105762000a1062000942565b50506001821b6200096c565b5060208310610133831016604e8410600b841016171562000a41575081810a6200096c565b62000a4d838362000972565b805f190482111562000a635762000a6362000942565b029392505050565b5f6200093b60ff841683620009ba565b80820281158282048414176200096c576200096c62000942565b5f8262000ab057634e487b7160e01b5f52601260045260245ffd5b500490565b6127c88062000ac35f395ff3fe60806040526004361061024c575f3560e01c8063702509fd11610134578063a9059cbb116100b3578063dc4c7dbc11610078578063dc4c7dbc146106c2578063dd62ed3e146106d7578063e01af92c1461071b578063e2f456051461073a578063f2fde38b1461074f578063f9d0831a1461076e575f80fd5b8063a9059cbb14610627578063afa4f3b214610646578063b6f7f68114610665578063bb85c6d114610684578063c0246668146106a3575f80fd5b8063880bcbc1116100f9578063880bcbc1146105a45780638a8c523c146105c35780638da5cb5b146105d757806395d89b41146105f4578063a457c2d714610608575f80fd5b8063702509fd1461051357806370a0823114610528578063715018a61461055c57806375f0a874146105705780637b3c83b11461058f575f80fd5b8063313ce567116101cb57806356a6cabf1161019057806356a6cabf1461046e57806359136fa51461048d5780635fc2e596146104a257806364c98c44146104b757806366ca9b83146104d65780636ddd1713146104f5575f80fd5b8063313ce567146103bf57806339509351146103da57806349bd5a5e146103f95780634ada218b146104185780634fbee19314610437575f80fd5b806318160ddd1161021157806318160ddd1461032757806318d9ceae1461033b57806323b872dd146103725780632ba86bf2146103915780632ce86fbf146103aa575f80fd5b80630105d0fd1461025757806302dbd8f81461027f57806306fdde03146102a0578063095ea7b3146102c15780631694505e146102f0575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026c60155481565b6040519081526020015b60405180910390f35b34801561028a575f80fd5b5061029e6102993660046121f5565b61078d565b005b3480156102ab575f80fd5b506102b4610843565b6040516102769190612215565b3480156102cc575f80fd5b506102e06102db366004612275565b6108d3565b6040519015158152602001610276565b3480156102fb575f80fd5b5060065461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610276565b348015610332575f80fd5b5060025461026c565b348015610346575f80fd5b506102e061035536600461229f565b6001600160a01b03165f9081526013602052604090205460ff1690565b34801561037d575f80fd5b506102e061038c3660046122c1565b6108e9565b34801561039c575f80fd5b506014546102e09060ff1681565b3480156103b5575f80fd5b5061026c600a5481565b3480156103ca575f80fd5b5060405160128152602001610276565b3480156103e5575f80fd5b506102e06103f4366004612275565b610998565b348015610404575f80fd5b5060075461030f906001600160a01b031681565b348015610423575f80fd5b506012546102e09062010000900460ff1681565b348015610442575f80fd5b506102e061045136600461229f565b6001600160a01b03165f9081526008602052604090205460ff1690565b348015610479575f80fd5b5061029e61048836600461230c565b6109d3565b348015610498575f80fd5b5061026c60165481565b3480156104ad575f80fd5b5061026c600b5481565b3480156104c2575f80fd5b5061029e6104d1366004612327565b610abe565b3480156104e1575f80fd5b5061029e6104f03660046121f5565b610b94565b348015610500575f80fd5b506012546102e090610100900460ff1681565b34801561051e575f80fd5b5061026c600f5481565b348015610533575f80fd5b5061026c61054236600461229f565b6001600160a01b03165f9081526020819052604090205490565b348015610567575f80fd5b5061029e610c35565b34801561057b575f80fd5b5060105461030f906001600160a01b031681565b34801561059a575f80fd5b5061026c60095481565b3480156105af575f80fd5b5061029e6105be36600461233e565b610ca8565b3480156105ce575f80fd5b5061029e610e04565b3480156105e2575f80fd5b506005546001600160a01b031661030f565b3480156105ff575f80fd5b506102b4610e9a565b348015610613575f80fd5b506102e0610622366004612275565b610ea9565b348015610632575f80fd5b506102e0610641366004612275565b610f41565b348015610651575f80fd5b5061029e610660366004612327565b610f4d565b348015610670575f80fd5b5061029e61067f3660046121f5565b611037565b34801561068f575f80fd5b5061029e61069e36600461229f565b61119a565b3480156106ae575f80fd5b5061029e6106bd36600461233e565b6112eb565b3480156106cd575f80fd5b5061026c600c5481565b3480156106e2575f80fd5b5061026c6106f1366004612375565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610726575f80fd5b5061029e61073536600461230c565b6113ee565b348015610745575f80fd5b5061026c60115481565b34801561075a575f80fd5b5061029e61076936600461229f565b61149f565b348015610779575f80fd5b5061029e61078836600461229f565b611589565b6005546001600160a01b031633146107c05760405162461bcd60e51b81526004016107b7906123a1565b60405180910390fd5b600a829055600c8190556107d481836123ea565b600e819055600a10156107f95760405162461bcd60e51b81526004016107b7906123fd565b7f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051610837929190918252602082015260400190565b60405180910390a15050565b60606003805461085290612441565b80601f016020809104026020016040519081016040528092919081815260200182805461087e90612441565b80156108c95780601f106108a0576101008083540402835291602001916108c9565b820191905f5260205f20905b8154815290600101906020018083116108ac57829003601f168201915b5050505050905090565b5f6108df33848461172f565b5060015b92915050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f19811461098257828110156109755760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107b7565b610982853385840361172f565b61098d858585611852565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108df9185906109ce9086906123ea565b61172f565b6005546001600160a01b031633146109fd5760405162461bcd60e51b81526004016107b7906123a1565b60145460ff16151581151503610a705760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c72656164796044820152712073657420746f207468617420737461746560701b60648201526084016107b7565b6014805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf906020015b60405180910390a150565b6005546001600160a01b03163314610ae85760405162461bcd60e51b81526004016107b7906123a1565b6005811115610b5f5760405162461bcd60e51b815260206004820152603760248201527f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160448201527f6e6e6f742065786365656420746865206d6178696d756d00000000000000000060648201526084016107b7565b600f8190556040518181527f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b90602001610ab3565b6005546001600160a01b03163314610bbe5760405162461bcd60e51b81526004016107b7906123a1565b6009829055600b819055610bd281836123ea565b600d819055600a1015610bf75760405162461bcd60e51b81526004016107b7906123fd565b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b54604051610837929190918252602082015260400190565b6005546001600160a01b03163314610c5f5760405162461bcd60e51b81526004016107b7906123a1565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610cd25760405162461bcd60e51b81526004016107b7906123a1565b6001600160a01b0382165f9081526013602052604090205481151560ff909116151503610d4d5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b60648201526084016107b7565b306001600160a01b03831603610da55760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016107b7565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6005546001600160a01b03163314610e2e5760405162461bcd60e51b81526004016107b7906123a1565b60125462010000900460ff1615610e875760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016107b7565b6012805462ffff00191662010100179055565b60606004805461085290612441565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107b7565b610f37338585840361172f565b5060019392505050565b5f6108df338484611852565b6005546001600160a01b03163314610f775760405162461bcd60e51b81526004016107b7906123a1565b620f4240610f8460025490565b610f8e9190612479565b81116110025760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016107b7565b60118190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610ab3565b6005546001600160a01b031633146110615760405162461bcd60e51b81526004016107b7906123a1565b6103e86110706012600a612578565b60025461107d9190612479565b6110879190612479565b82101580156110bb57506103e86110a06012600a612578565b6002546110ad9190612479565b6110b79190612479565b8110155b61112d5760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c790060648201526084016107b7565b6111396012600a612578565b6111439083612586565b6015556111526012600a612578565b61115c9082612586565b60168190556015546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb13192610837928252602082015260400190565b6005546001600160a01b031633146111c45760405162461bcd60e51b81526004016107b7906123a1565b6010546001600160a01b03908116908216036112335760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016107b7565b6001600160a01b03811661129d5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016107b7565b601080546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610ab3565b6005546001600160a01b031633146113155760405162461bcd60e51b81526004016107b7906123a1565b6001600160a01b0382165f9081526008602052604090205481151560ff9091161515036113975760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016107b7565b6001600160a01b0382165f81815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610df8565b6005546001600160a01b031633146114185760405162461bcd60e51b81526004016107b7906123a1565b801515601260019054906101000a900460ff161515036114855760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c726561647920617420746869732073746174604482015261329760f11b60648201526084016107b7565b601280549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146114c95760405162461bcd60e51b81526004016107b7906123a1565b6001600160a01b03811661152e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b7565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115b35760405162461bcd60e51b81526004016107b7906123a1565b306001600160a01b038216036116315760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016107b7565b6001600160a01b03811661164d576116493347611c2c565b5050565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b7919061259d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015611704573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172891906125b4565b5050505b50565b6001600160a01b0383166117915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b7565b6001600160a01b0382166117f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118785760405162461bcd60e51b81526004016107b7906125cf565b6001600160a01b03821661189e5760405162461bcd60e51b81526004016107b790612614565b60125462010000900460ff16806118cc57506001600160a01b0383165f9081526008602052604090205460ff165b806118ee57506001600160a01b0382165f9081526008602052604090205460ff165b61193a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107b7565b805f036119515761194c83835f611cd6565b505050565b60145460ff1615611a31576007546001600160a01b038481169116148061198557506007546001600160a01b038381169116145b80156119a957506001600160a01b0383165f9081526013602052604090205460ff16155b80156119cd57506001600160a01b0382165f9081526013602052604090205460ff16155b15611a31576007546001600160a01b0390811690841603611a0f57601554811115611a0a5760405162461bcd60e51b81526004016107b790612657565b611a31565b601654811115611a315760405162461bcd60e51b81526004016107b790612657565b305f9081526020819052604090205460115481108015908190611a57575060125460ff16155b8015611a7057506007546001600160a01b038581169116145b8015611a8a57505f600e54600d54611a8891906123ea565b115b8015611a9d5750601254610100900460ff165b15611b48576012805460ff19166001179055600e54600d545f91611ac0916123ea565b90505f600a54600954611ad391906123ea565b90505f600c54600b54611ae691906123ea565b90508115611b11575f83611afa8488612586565b611b049190612479565b9050611b0f81611e29565b505b8015611b3a575f83611b238388612586565b611b2d9190612479565b9050611b388161205e565b505b50506012805460ff19169055505b6001600160a01b0385165f9081526008602052604081205460ff1680611b8557506001600160a01b0385165f9081526008602052604090205460ff165b80611b92575060125460ff165b15611b9e57505f611be1565b6007546001600160a01b0390811690871603611bbd5750600d54611be1565b6007546001600160a01b0390811690861603611bdc5750600e54611be1565b50600f545b8015611c19575f6064611bf48387612586565b611bfe9190612479565b9050611c0a81866126b4565b9450611c17873083611cd6565b505b611c24868686611cd6565b505050505050565b5f81471015611c7d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b7565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114611cc6576040519150601f19603f3d011682016040523d82523d5f602084013e611ccb565b606091505b509095945050505050565b6001600160a01b038316611cfc5760405162461bcd60e51b81526004016107b7906125cf565b6001600160a01b038216611d225760405162461bcd60e51b81526004016107b790612614565b6001600160a01b0383165f9081526020819052604090205481811015611d995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107b7565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611dcf9084906123ea565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1b91815260200190565b60405180910390a350505050565b5f611e35600283612479565b90505f611e4282846126b4565b60408051600280825260608201835292935047925f9260208301908036833701905050905030815f81518110611e7a57611e7a6126c7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef591906126db565b81600181518110611f0857611f086126c7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611f4d9087905f908690309042906004016126f6565b5f604051808303815f87803b158015611f64575f80fd5b505af1925050508015611f75575060015b505f611f8183476126b4565b60065460405163f305d71960e01b8152306004820152602481018790525f60448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af19350505050801561200c575060408051601f3d908101601f1916820190925261200991810190612767565b60015b15612015575050505b60408051868152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050565b60408051600280825260608201835247925f92919060208301908036833701905050905030815f81518110612095576120956126c7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061211091906126db565b81600181518110612123576121236126c7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac947906121689086905f908690309042906004016126f6565b5f604051808303815f87803b15801561217f575f80fd5b505af1925050508015612190575060015b505f61219c83476126b4565b6010549091506121b5906001600160a01b031682611c2c565b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b5f8060408385031215612206575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561224157858101830151858201604001528201612225565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461172c575f80fd5b5f8060408385031215612286575f80fd5b823561229181612261565b946020939093013593505050565b5f602082840312156122af575f80fd5b81356122ba81612261565b9392505050565b5f805f606084860312156122d3575f80fd5b83356122de81612261565b925060208401356122ee81612261565b929592945050506040919091013590565b801515811461172c575f80fd5b5f6020828403121561231c575f80fd5b81356122ba816122ff565b5f60208284031215612337575f80fd5b5035919050565b5f806040838503121561234f575f80fd5b823561235a81612261565b9150602083013561236a816122ff565b809150509250929050565b5f8060408385031215612386575f80fd5b823561239181612261565b9150602083013561236a81612261565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108e3576108e36123d6565b60208082526024908201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604082015263696d756d60e01b606082015260800190565b600181811c9082168061245557607f821691505b60208210810361247357634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8261249357634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b808511156124d257815f19048211156124b8576124b86123d6565b808516156124c557918102915b93841c939080029061249d565b509250929050565b5f826124e8575060016108e3565b816124f457505f6108e3565b816001811461250a576002811461251457612530565b60019150506108e3565b60ff841115612525576125256123d6565b50506001821b6108e3565b5060208310610133831016604e8410600b8410161715612553575081810a6108e3565b61255d8383612498565b805f1904821115612570576125706123d6565b029392505050565b5f6122ba60ff8416836124da565b80820281158282048414176108e3576108e36123d6565b5f602082840312156125ad575f80fd5b5051919050565b5f602082840312156125c4575f80fd5b81516122ba816122ff565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603b908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000606082015260800190565b818103818111156108e3576108e36123d6565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156126eb575f80fd5b81516122ba81612261565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127465784516001600160a01b031683529383019391830191600101612721565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612779575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212200d2aff70f479b9dfa06a302a148d7521e1e9534d43022fb925f788ecb05799d464736f6c63430008160033

Deployed Bytecode

0x60806040526004361061024c575f3560e01c8063702509fd11610134578063a9059cbb116100b3578063dc4c7dbc11610078578063dc4c7dbc146106c2578063dd62ed3e146106d7578063e01af92c1461071b578063e2f456051461073a578063f2fde38b1461074f578063f9d0831a1461076e575f80fd5b8063a9059cbb14610627578063afa4f3b214610646578063b6f7f68114610665578063bb85c6d114610684578063c0246668146106a3575f80fd5b8063880bcbc1116100f9578063880bcbc1146105a45780638a8c523c146105c35780638da5cb5b146105d757806395d89b41146105f4578063a457c2d714610608575f80fd5b8063702509fd1461051357806370a0823114610528578063715018a61461055c57806375f0a874146105705780637b3c83b11461058f575f80fd5b8063313ce567116101cb57806356a6cabf1161019057806356a6cabf1461046e57806359136fa51461048d5780635fc2e596146104a257806364c98c44146104b757806366ca9b83146104d65780636ddd1713146104f5575f80fd5b8063313ce567146103bf57806339509351146103da57806349bd5a5e146103f95780634ada218b146104185780634fbee19314610437575f80fd5b806318160ddd1161021157806318160ddd1461032757806318d9ceae1461033b57806323b872dd146103725780632ba86bf2146103915780632ce86fbf146103aa575f80fd5b80630105d0fd1461025757806302dbd8f81461027f57806306fdde03146102a0578063095ea7b3146102c15780631694505e146102f0575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026c60155481565b6040519081526020015b60405180910390f35b34801561028a575f80fd5b5061029e6102993660046121f5565b61078d565b005b3480156102ab575f80fd5b506102b4610843565b6040516102769190612215565b3480156102cc575f80fd5b506102e06102db366004612275565b6108d3565b6040519015158152602001610276565b3480156102fb575f80fd5b5060065461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610276565b348015610332575f80fd5b5060025461026c565b348015610346575f80fd5b506102e061035536600461229f565b6001600160a01b03165f9081526013602052604090205460ff1690565b34801561037d575f80fd5b506102e061038c3660046122c1565b6108e9565b34801561039c575f80fd5b506014546102e09060ff1681565b3480156103b5575f80fd5b5061026c600a5481565b3480156103ca575f80fd5b5060405160128152602001610276565b3480156103e5575f80fd5b506102e06103f4366004612275565b610998565b348015610404575f80fd5b5060075461030f906001600160a01b031681565b348015610423575f80fd5b506012546102e09062010000900460ff1681565b348015610442575f80fd5b506102e061045136600461229f565b6001600160a01b03165f9081526008602052604090205460ff1690565b348015610479575f80fd5b5061029e61048836600461230c565b6109d3565b348015610498575f80fd5b5061026c60165481565b3480156104ad575f80fd5b5061026c600b5481565b3480156104c2575f80fd5b5061029e6104d1366004612327565b610abe565b3480156104e1575f80fd5b5061029e6104f03660046121f5565b610b94565b348015610500575f80fd5b506012546102e090610100900460ff1681565b34801561051e575f80fd5b5061026c600f5481565b348015610533575f80fd5b5061026c61054236600461229f565b6001600160a01b03165f9081526020819052604090205490565b348015610567575f80fd5b5061029e610c35565b34801561057b575f80fd5b5060105461030f906001600160a01b031681565b34801561059a575f80fd5b5061026c60095481565b3480156105af575f80fd5b5061029e6105be36600461233e565b610ca8565b3480156105ce575f80fd5b5061029e610e04565b3480156105e2575f80fd5b506005546001600160a01b031661030f565b3480156105ff575f80fd5b506102b4610e9a565b348015610613575f80fd5b506102e0610622366004612275565b610ea9565b348015610632575f80fd5b506102e0610641366004612275565b610f41565b348015610651575f80fd5b5061029e610660366004612327565b610f4d565b348015610670575f80fd5b5061029e61067f3660046121f5565b611037565b34801561068f575f80fd5b5061029e61069e36600461229f565b61119a565b3480156106ae575f80fd5b5061029e6106bd36600461233e565b6112eb565b3480156106cd575f80fd5b5061026c600c5481565b3480156106e2575f80fd5b5061026c6106f1366004612375565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610726575f80fd5b5061029e61073536600461230c565b6113ee565b348015610745575f80fd5b5061026c60115481565b34801561075a575f80fd5b5061029e61076936600461229f565b61149f565b348015610779575f80fd5b5061029e61078836600461229f565b611589565b6005546001600160a01b031633146107c05760405162461bcd60e51b81526004016107b7906123a1565b60405180910390fd5b600a829055600c8190556107d481836123ea565b600e819055600a10156107f95760405162461bcd60e51b81526004016107b7906123fd565b7f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051610837929190918252602082015260400190565b60405180910390a15050565b60606003805461085290612441565b80601f016020809104026020016040519081016040528092919081815260200182805461087e90612441565b80156108c95780601f106108a0576101008083540402835291602001916108c9565b820191905f5260205f20905b8154815290600101906020018083116108ac57829003601f168201915b5050505050905090565b5f6108df33848461172f565b5060015b92915050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f19811461098257828110156109755760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107b7565b610982853385840361172f565b61098d858585611852565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108df9185906109ce9086906123ea565b61172f565b6005546001600160a01b031633146109fd5760405162461bcd60e51b81526004016107b7906123a1565b60145460ff16151581151503610a705760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c72656164796044820152712073657420746f207468617420737461746560701b60648201526084016107b7565b6014805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf906020015b60405180910390a150565b6005546001600160a01b03163314610ae85760405162461bcd60e51b81526004016107b7906123a1565b6005811115610b5f5760405162461bcd60e51b815260206004820152603760248201527f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160448201527f6e6e6f742065786365656420746865206d6178696d756d00000000000000000060648201526084016107b7565b600f8190556040518181527f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b90602001610ab3565b6005546001600160a01b03163314610bbe5760405162461bcd60e51b81526004016107b7906123a1565b6009829055600b819055610bd281836123ea565b600d819055600a1015610bf75760405162461bcd60e51b81526004016107b7906123fd565b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b54604051610837929190918252602082015260400190565b6005546001600160a01b03163314610c5f5760405162461bcd60e51b81526004016107b7906123a1565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610cd25760405162461bcd60e51b81526004016107b7906123a1565b6001600160a01b0382165f9081526013602052604090205481151560ff909116151503610d4d5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b60648201526084016107b7565b306001600160a01b03831603610da55760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016107b7565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6005546001600160a01b03163314610e2e5760405162461bcd60e51b81526004016107b7906123a1565b60125462010000900460ff1615610e875760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016107b7565b6012805462ffff00191662010100179055565b60606004805461085290612441565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107b7565b610f37338585840361172f565b5060019392505050565b5f6108df338484611852565b6005546001600160a01b03163314610f775760405162461bcd60e51b81526004016107b7906123a1565b620f4240610f8460025490565b610f8e9190612479565b81116110025760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016107b7565b60118190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610ab3565b6005546001600160a01b031633146110615760405162461bcd60e51b81526004016107b7906123a1565b6103e86110706012600a612578565b60025461107d9190612479565b6110879190612479565b82101580156110bb57506103e86110a06012600a612578565b6002546110ad9190612479565b6110b79190612479565b8110155b61112d5760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c790060648201526084016107b7565b6111396012600a612578565b6111439083612586565b6015556111526012600a612578565b61115c9082612586565b60168190556015546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb13192610837928252602082015260400190565b6005546001600160a01b031633146111c45760405162461bcd60e51b81526004016107b7906123a1565b6010546001600160a01b03908116908216036112335760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016107b7565b6001600160a01b03811661129d5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016107b7565b601080546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610ab3565b6005546001600160a01b031633146113155760405162461bcd60e51b81526004016107b7906123a1565b6001600160a01b0382165f9081526008602052604090205481151560ff9091161515036113975760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016107b7565b6001600160a01b0382165f81815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610df8565b6005546001600160a01b031633146114185760405162461bcd60e51b81526004016107b7906123a1565b801515601260019054906101000a900460ff161515036114855760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c726561647920617420746869732073746174604482015261329760f11b60648201526084016107b7565b601280549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146114c95760405162461bcd60e51b81526004016107b7906123a1565b6001600160a01b03811661152e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b7565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115b35760405162461bcd60e51b81526004016107b7906123a1565b306001600160a01b038216036116315760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016107b7565b6001600160a01b03811661164d576116493347611c2c565b5050565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b7919061259d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015611704573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172891906125b4565b5050505b50565b6001600160a01b0383166117915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b7565b6001600160a01b0382166117f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118785760405162461bcd60e51b81526004016107b7906125cf565b6001600160a01b03821661189e5760405162461bcd60e51b81526004016107b790612614565b60125462010000900460ff16806118cc57506001600160a01b0383165f9081526008602052604090205460ff165b806118ee57506001600160a01b0382165f9081526008602052604090205460ff165b61193a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107b7565b805f036119515761194c83835f611cd6565b505050565b60145460ff1615611a31576007546001600160a01b038481169116148061198557506007546001600160a01b038381169116145b80156119a957506001600160a01b0383165f9081526013602052604090205460ff16155b80156119cd57506001600160a01b0382165f9081526013602052604090205460ff16155b15611a31576007546001600160a01b0390811690841603611a0f57601554811115611a0a5760405162461bcd60e51b81526004016107b790612657565b611a31565b601654811115611a315760405162461bcd60e51b81526004016107b790612657565b305f9081526020819052604090205460115481108015908190611a57575060125460ff16155b8015611a7057506007546001600160a01b038581169116145b8015611a8a57505f600e54600d54611a8891906123ea565b115b8015611a9d5750601254610100900460ff165b15611b48576012805460ff19166001179055600e54600d545f91611ac0916123ea565b90505f600a54600954611ad391906123ea565b90505f600c54600b54611ae691906123ea565b90508115611b11575f83611afa8488612586565b611b049190612479565b9050611b0f81611e29565b505b8015611b3a575f83611b238388612586565b611b2d9190612479565b9050611b388161205e565b505b50506012805460ff19169055505b6001600160a01b0385165f9081526008602052604081205460ff1680611b8557506001600160a01b0385165f9081526008602052604090205460ff165b80611b92575060125460ff165b15611b9e57505f611be1565b6007546001600160a01b0390811690871603611bbd5750600d54611be1565b6007546001600160a01b0390811690861603611bdc5750600e54611be1565b50600f545b8015611c19575f6064611bf48387612586565b611bfe9190612479565b9050611c0a81866126b4565b9450611c17873083611cd6565b505b611c24868686611cd6565b505050505050565b5f81471015611c7d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b7565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114611cc6576040519150601f19603f3d011682016040523d82523d5f602084013e611ccb565b606091505b509095945050505050565b6001600160a01b038316611cfc5760405162461bcd60e51b81526004016107b7906125cf565b6001600160a01b038216611d225760405162461bcd60e51b81526004016107b790612614565b6001600160a01b0383165f9081526020819052604090205481811015611d995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107b7565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611dcf9084906123ea565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1b91815260200190565b60405180910390a350505050565b5f611e35600283612479565b90505f611e4282846126b4565b60408051600280825260608201835292935047925f9260208301908036833701905050905030815f81518110611e7a57611e7a6126c7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef591906126db565b81600181518110611f0857611f086126c7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611f4d9087905f908690309042906004016126f6565b5f604051808303815f87803b158015611f64575f80fd5b505af1925050508015611f75575060015b505f611f8183476126b4565b60065460405163f305d71960e01b8152306004820152602481018790525f60448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af19350505050801561200c575060408051601f3d908101601f1916820190925261200991810190612767565b60015b15612015575050505b60408051868152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050565b60408051600280825260608201835247925f92919060208301908036833701905050905030815f81518110612095576120956126c7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061211091906126db565b81600181518110612123576121236126c7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac947906121689086905f908690309042906004016126f6565b5f604051808303815f87803b15801561217f575f80fd5b505af1925050508015612190575060015b505f61219c83476126b4565b6010549091506121b5906001600160a01b031682611c2c565b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b5f8060408385031215612206575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561224157858101830151858201604001528201612225565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461172c575f80fd5b5f8060408385031215612286575f80fd5b823561229181612261565b946020939093013593505050565b5f602082840312156122af575f80fd5b81356122ba81612261565b9392505050565b5f805f606084860312156122d3575f80fd5b83356122de81612261565b925060208401356122ee81612261565b929592945050506040919091013590565b801515811461172c575f80fd5b5f6020828403121561231c575f80fd5b81356122ba816122ff565b5f60208284031215612337575f80fd5b5035919050565b5f806040838503121561234f575f80fd5b823561235a81612261565b9150602083013561236a816122ff565b809150509250929050565b5f8060408385031215612386575f80fd5b823561239181612261565b9150602083013561236a81612261565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108e3576108e36123d6565b60208082526024908201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604082015263696d756d60e01b606082015260800190565b600181811c9082168061245557607f821691505b60208210810361247357634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8261249357634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b808511156124d257815f19048211156124b8576124b86123d6565b808516156124c557918102915b93841c939080029061249d565b509250929050565b5f826124e8575060016108e3565b816124f457505f6108e3565b816001811461250a576002811461251457612530565b60019150506108e3565b60ff841115612525576125256123d6565b50506001821b6108e3565b5060208310610133831016604e8410600b8410161715612553575081810a6108e3565b61255d8383612498565b805f1904821115612570576125706123d6565b029392505050565b5f6122ba60ff8416836124da565b80820281158282048414176108e3576108e36123d6565b5f602082840312156125ad575f80fd5b5051919050565b5f602082840312156125c4575f80fd5b81516122ba816122ff565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603b908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000606082015260800190565b818103818111156108e3576108e36123d6565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156126eb575f80fd5b81516122ba81612261565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127465784516001600160a01b031683529383019391830191600101612721565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612779575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212200d2aff70f479b9dfa06a302a148d7521e1e9534d43022fb925f788ecb05799d464736f6c63430008160033

Deployed Bytecode Sourcemap

7956:13660:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19684:39;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;19684:39:0;;;;;;;;13131:440;;;;;;;;;;-1:-1:-1;13131:440:0;;;;;:::i;:::-;;:::i;:::-;;3867:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4781:169::-;;;;;;;;;;-1:-1:-1;4781:169:0;;;;;:::i;:::-;;:::i;:::-;;;1623:14:1;;1616:22;1598:41;;1586:2;1571:18;4781:169:0;1458:187:1;8037:41:0;;;;;;;;;;-1:-1:-1;8037:41:0;;;;-1:-1:-1;;;;;8037:41:0;;;;;;-1:-1:-1;;;;;1839:32:1;;;1821:51;;1809:2;1794:18;8037:41:0;1650:228:1;4188:108:0;;;;;;;;;;-1:-1:-1;4276:12:0;;4188:108;;21472:141;;;;;;;;;;-1:-1:-1;21472:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;21571:34:0;21547:4;21571:34;;;:25;:34;;;;;;;;;21472:141;4958:573;;;;;;;;;;-1:-1:-1;4958:573:0;;;;;:::i;:::-;;:::i;19635:42::-;;;;;;;;;;-1:-1:-1;19635:42:0;;;;;;;;8225:34;;;;;;;;;;;;;;;;4087:93;;;;;;;;;;-1:-1:-1;4087:93:0;;4170:2;2738:36:1;;2726:2;2711:18;4087:93:0;2596:184:1;5539:215:0;;;;;;;;;;-1:-1:-1;5539:215:0;;;;;:::i;:::-;;:::i;8085:29::-;;;;;;;;;;-1:-1:-1;8085:29:0;;;;-1:-1:-1;;;;;8085:29:0;;;14329:26;;;;;;;;;;-1:-1:-1;14329:26:0;;;;;;;;;;;12564:125;;;;;;;;;;-1:-1:-1;12564:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;12653:28:0;12629:4;12653:28;;;:19;:28;;;;;;;;;12564:125;20049:311;;;;;;;;;;-1:-1:-1;20049:311:0;;;;;:::i;:::-;;:::i;19730:40::-;;;;;;;;;;;;;;;;8268:33;;;;;;;;;;;;;;;;13579:355;;;;;;;;;;-1:-1:-1;13579:355:0;;;;;:::i;:::-;;:::i;12697:426::-;;;;;;;;;;-1:-1:-1;12697:426:0;;;;;:::i;:::-;;:::i;8594:26::-;;;;;;;;;;-1:-1:-1;8594:26:0;;;;;;;;;;;8430:41;;;;;;;;;;;;;;;;4304:127;;;;;;;;;;-1:-1:-1;4304:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4405:18:0;4378:7;4405:18;;;;;;;;;;;;4304:127;3056:148;;;;;;;;;;;;;:::i;8480:31::-;;;;;;;;;;-1:-1:-1;8480:31:0;;;;-1:-1:-1;;;;;8480:31:0;;;8185:33;;;;;;;;;;;;;;;;21065:399;;;;;;;;;;-1:-1:-1;21065:399:0;;;;;:::i;:::-;;:::i;14364:175::-;;;;;;;;;;;;;:::i;2842:79::-;;;;;;;;;;-1:-1:-1;2907:6:0;;-1:-1:-1;;;;;2907:6:0;2842:79;;3975:104;;;;;;;;;;;;;:::i;5762:413::-;;;;;;;;;;-1:-1:-1;5762:413:0;;;;;:::i;:::-;;:::i;4439:175::-;;;;;;;;;;-1:-1:-1;4439:175:0;;;;;:::i;:::-;;:::i;17654:304::-;;;;;;;;;;-1:-1:-1;17654:304:0;;;;;:::i;:::-;;:::i;20368:689::-;;;;;;;;;;-1:-1:-1;20368:689:0;;;;;:::i;:::-;;:::i;13942:379::-;;;;;;;;;;-1:-1:-1;13942:379:0;;;;;:::i;:::-;;:::i;12266:290::-;;;;;;;;;;-1:-1:-1;12266:290:0;;;;;:::i;:::-;;:::i;8308:34::-;;;;;;;;;;;;;;;;4622:151;;;;;;;;;;-1:-1:-1;4622:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4738:18:0;;;4711:7;4738:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4622:151;17467:179;;;;;;;;;;-1:-1:-1;17467:179:0;;;;;:::i;:::-;;:::i;8520:34::-;;;;;;;;;;;;;;;;3212:244;;;;;;;;;;-1:-1:-1;3212:244:0;;;;;:::i;:::-;;:::i;11793:465::-;;;;;;;;;;-1:-1:-1;11793:465:0;;;;;:::i;:::-;;:::i;13131:440::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;;;;;;;;;13243:18:::1;:40:::0;;;13294:18:::1;:40:::0;;;13368:39:::1;13315:19:::0;13264;13368:39:::1;:::i;:::-;13347:16;:60:::0;;;13448:2:::1;-1:-1:-1::0;13428:22:0::1;13420:71;;;;-1:-1:-1::0;;;13420:71:0::1;;;;;;;:::i;:::-;13509:54;13524:18;;13544;;13509:54;;;;;;5529:25:1::0;;;5585:2;5570:18;;5563:34;5517:2;5502:18;;5355:248;13509:54:0::1;;;;;;;;13131:440:::0;;:::o;3867:100::-;3921:13;3954:5;3947:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3867:100;:::o;4781:169::-;4864:4;4881:39;2245:10;4904:7;4913:6;4881:8;:39::i;:::-;-1:-1:-1;4938:4:0;4781:169;;;;;:::o;4958:573::-;-1:-1:-1;;;;;5142:19:0;;5098:4;5142:19;;;:11;:19;;;;;;;;2245:10;5142:33;;;;;;;;-1:-1:-1;;5190:37:0;;5186:265;;5272:6;5252:16;:26;;5244:79;;;;-1:-1:-1;;;5244:79:0;;6195:2:1;5244:79:0;;;6177:21:1;6234:2;6214:18;;;6207:30;6273:34;6253:18;;;6246:62;-1:-1:-1;;;6324:18:1;;;6317:38;6372:19;;5244:79:0;5993:404:1;5244:79:0;5367:57;5376:6;2245:10;5417:6;5398:16;:25;5367:8;:57::i;:::-;5463:36;5473:6;5481:9;5492:6;5463:9;:36::i;:::-;-1:-1:-1;5519:4:0;;4958:573;-1:-1:-1;;;;4958:573:0:o;5539:215::-;2245:10;5627:4;5676:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5676:34:0;;;;;;;;;;5627:4;;5644:80;;5667:7;;5676:47;;5713:10;;5676:47;:::i;:::-;5644:8;:80::i;20049:311::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;20148:26:::1;::::0;::::1;;20138:36;;::::0;::::1;;::::0;20130:99:::1;;;::::0;-1:-1:-1;;;20130:99:0;;6604:2:1;20130:99:0::1;::::0;::::1;6586:21:1::0;6643:2;6623:18;;;6616:30;6682:34;6662:18;;;6655:62;-1:-1:-1;;;6733:18:1;;;6726:48;6791:19;;20130:99:0::1;6402:414:1::0;20130:99:0::1;20240:26;:35:::0;;-1:-1:-1;;20240:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20293:59:::1;::::0;20240:35:::1;20325:26:::0;;;1623:14:1;1616:22;1598:41;;20293:59:0::1;::::0;1586:2:1;1571:18;20293:59:0::1;;;;;;;;20049:311:::0;:::o;13579:355::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;13724:1:::1;13694:26;:31;;13686:99;;;::::0;-1:-1:-1;;;13686:99:0;;7023:2:1;13686:99:0::1;::::0;::::1;7005:21:1::0;7062:2;7042:18;;;7035:30;7101:34;7081:18;;;7074:62;7172:25;7152:18;;;7145:53;7215:19;;13686:99:0::1;6821:419:1::0;13686:99:0::1;13796:25;:54:::0;;;13868:58:::1;::::0;160:25:1;;;13868:58:0::1;::::0;148:2:1;133:18;13868:58:0::1;14:177:1::0;12697:426:0;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;12806:17:::1;:38:::0;;;12855:17:::1;:38:::0;;;12926:37:::1;12875:18:::0;12826;12926:37:::1;:::i;:::-;12906:15;:57:::0;;;13003:2:::1;-1:-1:-1::0;12984:21:0::1;12976:70;;;;-1:-1:-1::0;;;12976:70:0::1;;;;;;;:::i;:::-;13064:51;13078:17;;13097;;13064:51;;;;;;5529:25:1::0;;;5585:2;5570:18;;5563:34;5517:2;5502:18;;5355:248;3056:148:0;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;3147:6:::1;::::0;3126:40:::1;::::0;3163:1:::1;::::0;-1:-1:-1;;;;;3147:6:0::1;::::0;3126:40:::1;::::0;3163:1;;3126:40:::1;3177:6;:19:::0;;-1:-1:-1;;;;;;3177:19:0::1;::::0;;3056:148::o;21065:399::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21175:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;:45;::::1;;:34;::::0;;::::1;:45;;::::0;21166:95:::1;;;::::0;-1:-1:-1;;;21166:95:0;;7447:2:1;21166:95:0::1;::::0;::::1;7429:21:1::0;7486:2;7466:18;;;7459:30;7525:34;7505:18;;;7498:62;-1:-1:-1;;;7576:18:1;;;7569:34;7620:19;;21166:95:0::1;7245:400:1::0;21166:95:0::1;21299:4;-1:-1:-1::0;;;;;21280:24:0;::::1;::::0;21272:60:::1;;;::::0;-1:-1:-1;;;21272:60:0;;7852:2:1;21272:60:0::1;::::0;::::1;7834:21:1::0;7891:2;7871:18;;;7864:30;7930:25;7910:18;;;7903:53;7973:18;;21272:60:0::1;7650:347:1::0;21272:60:0::1;-1:-1:-1::0;;;;;21345:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;;;;:44;;-1:-1:-1;;21345:44:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21407:49;;1598:41:1;;;21407:49:0::1;::::0;1571:18:1;21407:49:0::1;;;;;;;;21065:399:::0;;:::o;14364:175::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;14427:14:::1;::::0;;;::::1;;;14426:15;14418:52;;;::::0;-1:-1:-1;;;14418:52:0;;8204:2:1;14418:52:0::1;::::0;::::1;8186:21:1::0;8243:2;8223:18;;;8216:30;8282:26;8262:18;;;8255:54;8326:18;;14418:52:0::1;8002:348:1::0;14418:52:0::1;14481:14;:21:::0;;-1:-1:-1;;14513:18:0;;;;;14364:175::o;3975:104::-;4031:13;4064:7;4057:14;;;;;:::i;5762:413::-;2245:10;5855:4;5899:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5899:34:0;;;;;;;;;;5952:35;;;;5944:85;;;;-1:-1:-1;;;5944:85:0;;8557:2:1;5944:85:0;;;8539:21:1;8596:2;8576:18;;;8569:30;8635:34;8615:18;;;8608:62;-1:-1:-1;;;8686:18:1;;;8679:35;8731:19;;5944:85:0;8355:401:1;5944:85:0;6065:67;2245:10;6088:7;6116:15;6097:16;:34;6065:8;:67::i;:::-;-1:-1:-1;6163:4:0;;5762:413;-1:-1:-1;;;5762:413:0:o;4439:175::-;4525:4;4542:42;2245:10;4566:9;4577:6;4542:9;:42::i;17654:304::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;17769:9:::1;17753:13;4276:12:::0;;;4188:108;17753:13:::1;:25;;;;:::i;:::-;17741:9;:37;17733:113;;;::::0;-1:-1:-1;;;17733:113:0;;9185:2:1;17733:113:0::1;::::0;::::1;9167:21:1::0;9224:2;9204:18;;;9197:30;9263:34;9243:18;;;9236:62;9334:33;9314:18;;;9307:61;9385:19;;17733:113:0::1;8983:427:1::0;17733:113:0::1;17857:18;:30:::0;;;17905:45:::1;::::0;160:25:1;;;17905:45:0::1;::::0;148:2:1;133:18;17905:45:0::1;14:177:1::0;20368:689:0;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;20591:5:::1;20570:16;4170:2:::0;20570::::1;:16;:::i;:::-;4276:12:::0;;20553:34:::1;;;;:::i;:::-;20552:44;;;;:::i;:::-;20523:24;:73;;:164;;;;-1:-1:-1::0;20682:5:0::1;20661:16;4170:2:::0;20661::::1;:16;:::i;:::-;4276:12:::0;;20644:34:::1;;;;:::i;:::-;20643:44;;;;:::i;:::-;20614:25;:73;;20523:164;20501:278;;;::::0;-1:-1:-1;;;20501:278:0;;10994:2:1;20501:278:0::1;::::0;::::1;10976:21:1::0;11033:2;11013:18;;;11006:30;11072:34;11052:18;;;11045:62;11143:33;11123:18;;;11116:61;11194:19;;20501:278:0::1;10792:427:1::0;20501:278:0::1;20847:16;4170:2:::0;20847::::1;:16;:::i;:::-;20818:46;::::0;:24;:46:::1;:::i;:::-;20791:23;:73:::0;20931:16:::1;4170:2:::0;20931::::1;:16;:::i;:::-;20902:46;::::0;:25;:46:::1;:::i;:::-;20875:24;:73:::0;;;20999:23:::1;::::0;20966:83:::1;::::0;::::1;::::0;::::1;::::0;5529:25:1;;5585:2;5570:18;;5563:34;5517:2;5502:18;;5355:248;13942:379:0;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;14056:15:::1;::::0;-1:-1:-1;;;;;14056:15:0;;::::1;14036:35:::0;;::::1;::::0;14028:87:::1;;;::::0;-1:-1:-1;;;14028:87:0;;11599:2:1;14028:87:0::1;::::0;::::1;11581:21:1::0;11638:2;11618:18;;;11611:30;11677:34;11657:18;;;11650:62;-1:-1:-1;;;11728:18:1;;;11721:38;11776:19;;14028:87:0::1;11397:404:1::0;14028:87:0::1;-1:-1:-1::0;;;;;14134:30:0;::::1;14126:85;;;::::0;-1:-1:-1;;;14126:85:0;;12008:2:1;14126:85:0::1;::::0;::::1;11990:21:1::0;12047:2;12027:18;;;12020:30;12086:34;12066:18;;;12059:62;-1:-1:-1;;;12137:18:1;;;12130:41;12188:19;;14126:85:0::1;11806:407:1::0;14126:85:0::1;14222:15;:34:::0;;-1:-1:-1;;;;;;14222:34:0::1;-1:-1:-1::0;;;;;14222:34:0;::::1;::::0;;::::1;::::0;;;14274:39:::1;::::0;1821:51:1;;;14274:39:0::1;::::0;1809:2:1;1794:18;14274:39:0::1;1650:228:1::0;12266:290:0;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12360:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;12352:94:::1;;;::::0;-1:-1:-1;;;12352:94:0;;12420:2:1;12352:94:0::1;::::0;::::1;12402:21:1::0;12459:2;12439:18;;;12432:30;12498:34;12478:18;;;12471:62;-1:-1:-1;;;12549:18:1;;;12542:40;12599:19;;12352:94:0::1;12218:406:1::0;12352:94:0::1;-1:-1:-1::0;;;;;12457:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;12457:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12514:34;;1598:41:1;;;12514:34:0::1;::::0;1571:18:1;12514:34:0::1;1458:187:1::0;17467:179:0;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;17558:8:::1;17543:23;;:11;;;;;;;;;;;:23;;::::0;17535:70:::1;;;::::0;-1:-1:-1;;;17535:70:0;;12831:2:1;17535:70:0::1;::::0;::::1;12813:21:1::0;12870:2;12850:18;;;12843:30;12909:34;12889:18;;;12882:62;-1:-1:-1;;;12960:18:1;;;12953:32;13002:19;;17535:70:0::1;12629:398:1::0;17535:70:0::1;17616:11;:22:::0;;;::::1;;;;-1:-1:-1::0;;17616:22:0;;::::1;::::0;;;::::1;::::0;;17467:179::o;3212:244::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3301:22:0;::::1;3293:73;;;::::0;-1:-1:-1;;;3293:73:0;;13234:2:1;3293:73:0::1;::::0;::::1;13216:21:1::0;13273:2;13253:18;;;13246:30;13312:34;13292:18;;;13285:62;-1:-1:-1;;;13363:18:1;;;13356:36;13409:19;;3293:73:0::1;13032:402:1::0;3293:73:0::1;3403:6;::::0;3382:38:::1;::::0;-1:-1:-1;;;;;3382:38:0;;::::1;::::0;3403:6:::1;::::0;3382:38:::1;::::0;3403:6:::1;::::0;3382:38:::1;3431:6;:17:::0;;-1:-1:-1;;;;;;3431:17:0::1;-1:-1:-1::0;;;;;3431:17:0;;;::::1;::::0;;;::::1;::::0;;3212:244::o;11793:465::-;2969:6;;-1:-1:-1;;;;;2969:6:0;2245:10;2969:22;2961:67;;;;-1:-1:-1;;;2961:67:0;;;;;;;:::i;:::-;11889:4:::1;-1:-1:-1::0;;;;;11872:22:0;::::1;::::0;11864:90:::1;;;::::0;-1:-1:-1;;;11864:90:0;;13641:2:1;11864:90:0::1;::::0;::::1;13623:21:1::0;13680:2;13660:18;;;13653:30;13719:34;13699:18;;;13692:62;13790:25;13770:18;;;13763:53;13833:19;;11864:90:0::1;13439:419:1::0;11864:90:0::1;-1:-1:-1::0;;;;;11969:21:0;::::1;11965:127;;12007:52;12015:10;12037:21;12007:29;:52::i;:::-;;11793:465:::0;:::o;11965:127::-:1;12164:35;::::0;-1:-1:-1;;;12164:35:0;;12193:4:::1;12164:35;::::0;::::1;1821:51:1::0;12129:5:0;;12102:17:::1;::::0;-1:-1:-1;;;;;12164:20:0;::::1;::::0;::::1;::::0;1794:18:1;;12164:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12210:40;::::0;-1:-1:-1;;;12210:40:0;;12230:10:::1;12210:40;::::0;::::1;14226:51:1::0;14293:18;;;14286:34;;;12146:53:0;;-1:-1:-1;;;;;;12210:19:0;::::1;::::0;::::1;::::0;14199:18:1;;12210:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11853:405;;3039:1;11793:465:::0;:::o;7569:380::-;-1:-1:-1;;;;;7705:19:0;;7697:68;;;;-1:-1:-1;;;7697:68:0;;14783:2:1;7697:68:0;;;14765:21:1;14822:2;14802:18;;;14795:30;14861:34;14841:18;;;14834:62;-1:-1:-1;;;14912:18:1;;;14905:34;14956:19;;7697:68:0;14581:400:1;7697:68:0;-1:-1:-1;;;;;7784:21:0;;7776:68;;;;-1:-1:-1;;;7776:68:0;;15188:2:1;7776:68:0;;;15170:21:1;15227:2;15207:18;;;15200:30;15266:34;15246:18;;;15239:62;-1:-1:-1;;;15317:18:1;;;15310:32;15359:19;;7776:68:0;14986:398:1;7776:68:0;-1:-1:-1;;;;;7857:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7909:32;;160:25:1;;;7909:32:0;;133:18:1;7909:32:0;;;;;;;7569:380;;;:::o;14547:2912::-;-1:-1:-1;;;;;14644:18:0;;14636:68;;;;-1:-1:-1;;;14636:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14723:16:0;;14715:64;;;;-1:-1:-1;;;14715:64:0;;;;;;;:::i;:::-;14798:14;;;;;;;;:43;;-1:-1:-1;;;;;;14816:25:0;;;;;;:19;:25;;;;;;;;14798:43;:70;;;-1:-1:-1;;;;;;14845:23:0;;;;;;:19;:23;;;;;;;;14798:70;14790:107;;;;-1:-1:-1;;;14790:107:0;;16401:2:1;14790:107:0;;;16383:21:1;16440:2;16420:18;;;16413:30;16479:26;16459:18;;;16452:54;16523:18;;14790:107:0;16199:348:1;14790:107:0;14921:6;14931:1;14921:11;14917:93;;14949:28;14965:4;14971:2;14975:1;14949:15;:28::i;:::-;14547:2912;;;:::o;14917:93::-;15026:26;;;;15022:752;;;15092:13;;-1:-1:-1;;;;;15084:21:0;;;15092:13;;15084:21;;:44;;-1:-1:-1;15115:13:0;;-1:-1:-1;;;;;15109:19:0;;;15115:13;;15109:19;15084:44;15083:99;;;;-1:-1:-1;;;;;;15151:31:0;;;;;;:25;:31;;;;;;;;15150:32;15083:99;:151;;;;-1:-1:-1;;;;;;15205:29:0;;;;;;:25;:29;;;;;;;;15204:30;15083:151;15079:684;;;15281:13;;-1:-1:-1;;;;;15281:13:0;;;15273:21;;;;15269:479;;15363:23;;15353:6;:33;;15319:180;;;;-1:-1:-1;;;15319:180:0;;;;;;;:::i;:::-;15269:479;;;15592:24;;15582:6;:34;;15548:180;;;;-1:-1:-1;;;15548:180:0;;;;;;;:::i;:::-;15829:4;15780:28;4405:18;;;;;;;;;;;15887;;15863:42;;;;;;;15922:33;;-1:-1:-1;15947:8:0;;;;15946:9;15922:33;:69;;;;-1:-1:-1;15978:13:0;;-1:-1:-1;;;;;15972:19:0;;;15978:13;;15972:19;15922:69;:124;;;;;16045:1;16026:16;;16008:15;;:34;;;;:::i;:::-;:38;15922:124;:152;;;;-1:-1:-1;16063:11:0;;;;;;;15922:152;15918:895;;;16101:8;:15;;-1:-1:-1;;16101:15:0;16112:4;16101:15;;;16170:16;;16152:15;;16101:8;;16152:34;;;:::i;:::-;16133:53;;16201:22;16246:18;;16226:17;;:38;;;;:::i;:::-;16201:63;;16279:22;16324:18;;16304:17;;:38;;;;:::i;:::-;16279:63;-1:-1:-1;16363:18:0;;16359:183;;16402:23;16468:8;16428:37;16451:14;16428:20;:37;:::i;:::-;:48;;;;:::i;:::-;16402:74;;16495:31;16510:15;16495:14;:31::i;:::-;16383:159;16359:183;16574:18;;16570:189;;16613:23;16679:8;16639:37;16662:14;16639:20;:37;:::i;:::-;:48;;;;:::i;:::-;16613:74;;16706:37;16727:15;16706:20;:37::i;:::-;16594:165;16570:189;-1:-1:-1;;16785:8:0;:16;;-1:-1:-1;;16785:16:0;;;-1:-1:-1;15918:895:0;-1:-1:-1;;;;;16858:25:0;;16825:18;16858:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;16887:23:0;;;;;;:19;:23;;;;;;;;16858:52;:64;;;-1:-1:-1;16914:8:0;;;;16858:64;16854:357;;;-1:-1:-1;16952:1:0;16854:357;;;16983:13;;-1:-1:-1;;;;;16983:13:0;;;16975:21;;;;16971:240;;-1:-1:-1;17026:15:0;;16971:240;;;17069:13;;-1:-1:-1;;;;;17069:13:0;;;17063:19;;;;17059:152;;-1:-1:-1;17112:16:0;;17059:152;;;-1:-1:-1;17174:25:0;;17059:152;17227:14;;17223:183;;17258:12;17297:3;17274:19;17283:10;17274:6;:19;:::i;:::-;17273:27;;;;:::i;:::-;17258:42;-1:-1:-1;17324:13:0;17258:42;17324:6;:13;:::i;:::-;17315:22;;17352:42;17368:4;17382;17389;17352:15;:42::i;:::-;17243:163;17223:183;17418:33;17434:4;17440:2;17444:6;17418:15;:33::i;:::-;14625:2834;;;14547:2912;;;:::o;1840:285::-;1919:4;1968:6;1943:21;:31;;1935:73;;;;-1:-1:-1;;;1935:73:0;;17315:2:1;1935:73:0;;;17297:21:1;17354:2;17334:18;;;17327:30;17393:31;17373:18;;;17366:59;17442:18;;1935:73:0;17113:353:1;1935:73:0;2022:12;2040:9;-1:-1:-1;;;;;2040:14:0;2062:6;2040:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2021:52:0;;1840:285;-1:-1:-1;;;;;1840:285:0:o;6183:614::-;-1:-1:-1;;;;;6323:20:0;;6315:70;;;;-1:-1:-1;;;6315:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6404:23:0;;6396:71;;;;-1:-1:-1;;;6396:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6504:17:0;;6480:21;6504:17;;;;;;;;;;;6540:23;;;;6532:74;;;;-1:-1:-1;;;6532:74:0;;17883:2:1;6532:74:0;;;17865:21:1;17922:2;17902:18;;;17895:30;17961:34;17941:18;;;17934:62;-1:-1:-1;;;18012:18:1;;;18005:36;18058:19;;6532:74:0;17681:402:1;6532:74:0;-1:-1:-1;;;;;6642:17:0;;;:9;:17;;;;;;;;;;;6662:22;;;6642:42;;6706:20;;;;;;;;:30;;6678:6;;6642:9;6706:30;;6678:6;;6706:30;:::i;:::-;;;;;;;;6771:9;-1:-1:-1;;;;;6754:35:0;6763:6;-1:-1:-1;;;;;6754:35:0;;6782:6;6754:35;;;;160:25:1;;148:2;133:18;;14:177;6754:35:0;;;;;;;;6304:493;6183:614;;;:::o;17966:916::-;18025:12;18040:10;18049:1;18040:6;:10;:::i;:::-;18025:25;-1:-1:-1;18061:17:0;18081:13;18025:25;18081:6;:13;:::i;:::-;18190:16;;;18204:1;18190:16;;;;;;;;18061:33;;-1:-1:-1;18132:21:0;;18107:22;;18190:16;;;;;;;;;;-1:-1:-1;18190:16:0;18166:40;;18235:4;18217;18222:1;18217:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18217:23:0;;;:7;;;;;;;;;;:23;;;;18261:15;;:22;;;-1:-1:-1;;;18261:22:0;;;;:15;;;;;:20;;:22;;;;;18217:7;;18261:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18251:4;18256:1;18251:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18251:32:0;;;:7;;;;;;;;;:32;18300:15;;:189;;-1:-1:-1;;;18300:189:0;;:15;;;:66;;:189;;18381:4;;18300:15;;18416:4;;18443;;18463:15;;18300:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18296:205;18521:18;18542:38;18566:14;18542:21;:38;:::i;:::-;18597:15;;:205;;-1:-1:-1;;;18597:205:0;;18670:4;18597:205;;;19934:34:1;19984:18;;;19977:34;;;18597:15:0;20027:18:1;;;20020:34;;;20070:18;;;20063:34;18754:6:0;20113:19:1;;;20106:44;18776:15:0;20166:19:1;;;20159:35;18521:59:0;;-1:-1:-1;;;;;;18597:15:0;;:31;;18521:59;;19868:19:1;;18597:205:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18597:205:0;;;;;;;;-1:-1:-1;;18597:205:0;;;;;;;;;;;;:::i;:::-;;;18593:221;;;;;;;18831:43;;;20718:25:1;;;20774:2;20759:18;;20752:34;;;20802:18;;;20795:34;;;18831:43:0;;20706:2:1;20691:18;18831:43:0;;;;;;;18014:868;;;;;17966:916;:::o;18890:672::-;19043:16;;;19057:1;19043:16;;;;;;;;18985:21;;18960:22;;19043:16;19057:1;19043:16;;;;;;;;;;-1:-1:-1;19043:16:0;19019:40;;19088:4;19070;19075:1;19070:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19070:23:0;;;:7;;;;;;;;;;:23;;;;19114:15;;:22;;;-1:-1:-1;;;19114:22:0;;;;:15;;;;;:20;;:22;;;;;19070:7;;19114:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19104:4;19109:1;19104:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19104:32:0;;;:7;;;;;;;;;:32;19153:15;;:196;;-1:-1:-1;;;19153:196:0;;:15;;;:66;;:196;;19234:11;;19153:15;;19276:4;;19303;;19323:15;;19153:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19149:212;19373:18;19394:38;19418:14;19394:21;:38;:::i;:::-;19453:15;;19373:59;;-1:-1:-1;19445:46:0;;-1:-1:-1;;;;;19453:15:0;19373:59;19445:34;:46::i;:::-;-1:-1:-1;19509:45:0;;;5529:25:1;;;5585:2;5570:18;;5563:34;;;19509:45:0;;5502:18:1;19509:45:0;;;;;;;18949:613;;;18890:672;:::o;196:248:1:-;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;364:23:1;;;434:2;419:18;;;406:32;;-1:-1:-1;196:248:1:o;449:548::-;561:4;590:2;619;608:9;601:21;651:6;645:13;694:6;689:2;678:9;674:18;667:34;719:1;729:140;743:6;740:1;737:13;729:140;;;838:14;;;834:23;;828:30;804:17;;;823:2;800:26;793:66;758:10;;729:140;;;733:3;918:1;913:2;904:6;893:9;889:22;885:31;878:42;988:2;981;977:7;972:2;964:6;960:15;956:29;945:9;941:45;937:54;929:62;;;;449:548;;;;:::o;1002:131::-;-1:-1:-1;;;;;1077:31:1;;1067:42;;1057:70;;1123:1;1120;1113:12;1138:315;1206:6;1214;1267:2;1255:9;1246:7;1242:23;1238:32;1235:52;;;1283:1;1280;1273:12;1235:52;1322:9;1309:23;1341:31;1366:5;1341:31;:::i;:::-;1391:5;1443:2;1428:18;;;;1415:32;;-1:-1:-1;;;1138:315:1:o;1883:247::-;1942:6;1995:2;1983:9;1974:7;1970:23;1966:32;1963:52;;;2011:1;2008;2001:12;1963:52;2050:9;2037:23;2069:31;2094:5;2069:31;:::i;:::-;2119:5;1883:247;-1:-1:-1;;;1883:247:1:o;2135:456::-;2212:6;2220;2228;2281:2;2269:9;2260:7;2256:23;2252:32;2249:52;;;2297:1;2294;2287:12;2249:52;2336:9;2323:23;2355:31;2380:5;2355:31;:::i;:::-;2405:5;-1:-1:-1;2462:2:1;2447:18;;2434:32;2475:33;2434:32;2475:33;:::i;:::-;2135:456;;2527:7;;-1:-1:-1;;;2581:2:1;2566:18;;;;2553:32;;2135:456::o;2993:118::-;3079:5;3072:13;3065:21;3058:5;3055:32;3045:60;;3101:1;3098;3091:12;3116:241;3172:6;3225:2;3213:9;3204:7;3200:23;3196:32;3193:52;;;3241:1;3238;3231:12;3193:52;3280:9;3267:23;3299:28;3321:5;3299:28;:::i;3362:180::-;3421:6;3474:2;3462:9;3453:7;3449:23;3445:32;3442:52;;;3490:1;3487;3480:12;3442:52;-1:-1:-1;3513:23:1;;3362:180;-1:-1:-1;3362:180:1:o;3547:382::-;3612:6;3620;3673:2;3661:9;3652:7;3648:23;3644:32;3641:52;;;3689:1;3686;3679:12;3641:52;3728:9;3715:23;3747:31;3772:5;3747:31;:::i;:::-;3797:5;-1:-1:-1;3854:2:1;3839:18;;3826:32;3867:30;3826:32;3867:30;:::i;:::-;3916:7;3906:17;;;3547:382;;;;;:::o;3934:388::-;4002:6;4010;4063:2;4051:9;4042:7;4038:23;4034:32;4031:52;;;4079:1;4076;4069:12;4031:52;4118:9;4105:23;4137:31;4162:5;4137:31;:::i;:::-;4187:5;-1:-1:-1;4244:2:1;4229:18;;4216:32;4257:33;4216:32;4257:33;:::i;4327:356::-;4529:2;4511:21;;;4548:18;;;4541:30;4607:34;4602:2;4587:18;;4580:62;4674:2;4659:18;;4327:356::o;4688:127::-;4749:10;4744:3;4740:20;4737:1;4730:31;4780:4;4777:1;4770:15;4804:4;4801:1;4794:15;4820:125;4885:9;;;4906:10;;;4903:36;;;4919:18;;:::i;4950:400::-;5152:2;5134:21;;;5191:2;5171:18;;;5164:30;5230:34;5225:2;5210:18;;5203:62;-1:-1:-1;;;5296:2:1;5281:18;;5274:34;5340:3;5325:19;;4950:400::o;5608:380::-;5687:1;5683:12;;;;5730;;;5751:61;;5805:4;5797:6;5793:17;5783:27;;5751:61;5858:2;5850:6;5847:14;5827:18;5824:38;5821:161;;5904:10;5899:3;5895:20;5892:1;5885:31;5939:4;5936:1;5929:15;5967:4;5964:1;5957:15;5821:161;;5608:380;;;:::o;8761:217::-;8801:1;8827;8817:132;;8871:10;8866:3;8862:20;8859:1;8852:31;8906:4;8903:1;8896:15;8934:4;8931:1;8924:15;8817:132;-1:-1:-1;8963:9:1;;8761:217::o;9415:416::-;9504:1;9541:5;9504:1;9555:270;9576:7;9566:8;9563:21;9555:270;;;9635:4;9631:1;9627:6;9623:17;9617:4;9614:27;9611:53;;;9644:18;;:::i;:::-;9694:7;9684:8;9680:22;9677:55;;;9714:16;;;;9677:55;9793:22;;;;9753:15;;;;9555:270;;;9559:3;9415:416;;;;;:::o;9836:806::-;9885:5;9915:8;9905:80;;-1:-1:-1;9956:1:1;9970:5;;9905:80;10004:4;9994:76;;-1:-1:-1;10041:1:1;10055:5;;9994:76;10086:4;10104:1;10099:59;;;;10172:1;10167:130;;;;10079:218;;10099:59;10129:1;10120:10;;10143:5;;;10167:130;10204:3;10194:8;10191:17;10188:43;;;10211:18;;:::i;:::-;-1:-1:-1;;10267:1:1;10253:16;;10282:5;;10079:218;;10381:2;10371:8;10368:16;10362:3;10356:4;10353:13;10349:36;10343:2;10333:8;10330:16;10325:2;10319:4;10316:12;10312:35;10309:77;10306:159;;;-1:-1:-1;10418:19:1;;;10450:5;;10306:159;10497:34;10522:8;10516:4;10497:34;:::i;:::-;10567:6;10563:1;10559:6;10555:19;10546:7;10543:32;10540:58;;;10578:18;;:::i;:::-;10616:20;;9836:806;-1:-1:-1;;;9836:806:1:o;10647:140::-;10705:5;10734:47;10775:4;10765:8;10761:19;10755:4;10734:47;:::i;11224:168::-;11297:9;;;11328;;11345:15;;;11339:22;;11325:37;11315:71;;11366:18;;:::i;13863:184::-;13933:6;13986:2;13974:9;13965:7;13961:23;13957:32;13954:52;;;14002:1;13999;13992:12;13954:52;-1:-1:-1;14025:16:1;;13863:184;-1:-1:-1;13863:184:1:o;14331:245::-;14398:6;14451:2;14439:9;14430:7;14426:23;14422:32;14419:52;;;14467:1;14464;14457:12;14419:52;14499:9;14493:16;14518:28;14540:5;14518:28;:::i;15389:401::-;15591:2;15573:21;;;15630:2;15610:18;;;15603:30;15669:34;15664:2;15649:18;;15642:62;-1:-1:-1;;;15735:2:1;15720:18;;15713:35;15780:3;15765:19;;15389:401::o;15795:399::-;15997:2;15979:21;;;16036:2;16016:18;;;16009:30;16075:34;16070:2;16055:18;;16048:62;-1:-1:-1;;;16141:2:1;16126:18;;16119:33;16184:3;16169:19;;15795:399::o;16552:423::-;16754:2;16736:21;;;16793:2;16773:18;;;16766:30;16832:34;16827:2;16812:18;;16805:62;16903:29;16898:2;16883:18;;16876:57;16965:3;16950:19;;16552:423::o;16980:128::-;17047:9;;;17068:11;;;17065:37;;;17082:18;;:::i;18220:127::-;18281:10;18276:3;18272:20;18269:1;18262:31;18312:4;18309:1;18302:15;18336:4;18333:1;18326:15;18352:251;18422:6;18475:2;18463:9;18454:7;18450:23;18446:32;18443:52;;;18491:1;18488;18481:12;18443:52;18523:9;18517:16;18542:31;18567:5;18542:31;:::i;18608:980::-;18870:4;18918:3;18907:9;18903:19;18949:6;18938:9;18931:25;18975:2;19013:6;19008:2;18997:9;18993:18;18986:34;19056:3;19051:2;19040:9;19036:18;19029:31;19080:6;19115;19109:13;19146:6;19138;19131:22;19184:3;19173:9;19169:19;19162:26;;19223:2;19215:6;19211:15;19197:29;;19244:1;19254:195;19268:6;19265:1;19262:13;19254:195;;;19333:13;;-1:-1:-1;;;;;19329:39:1;19317:52;;19424:15;;;;19389:12;;;;19365:1;19283:9;19254:195;;;-1:-1:-1;;;;;;;19505:32:1;;;;19500:2;19485:18;;19478:60;-1:-1:-1;;;19569:3:1;19554:19;19547:35;19466:3;18608:980;-1:-1:-1;;;18608:980:1:o;20205:306::-;20293:6;20301;20309;20362:2;20350:9;20341:7;20337:23;20333:32;20330:52;;;20378:1;20375;20368:12;20330:52;20407:9;20401:16;20391:26;;20457:2;20446:9;20442:18;20436:25;20426:35;;20501:2;20490:9;20486:18;20480:25;20470:35;;20205:306;;;;;:::o

Swarm Source

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