ETH Price: $2,990.00 (+4.50%)
Gas: 2 Gwei

Token

XODEX (XODEX)
 

Overview

Max Total Supply

10,000,000,000 XODEX

Holders

315 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (+31.33%)

Onchain Market Cap

$4,866,900.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,067,885.897118949035521158 XODEX

Value
$4,413.25 ( ~1.4760 Eth) [0.0907%]
0x7374dc21b4544a1f1c31a4e837873cca1bc31986
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

XODEX is a sophisticated decentralized Omni- chain perpetual futures trading exchange, offering leverage options. This platform extends its services across multiple networks, enhancing accessibility for traders and liquidity providers from various prominent chains.

Market

Volume (24H):$400,127.00
Market Capitalization:$0.00
Circulating Supply:0.00 XODEX
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
1
MEXC
XODEX-USDT$0.0005
0.0000002 Eth
$277,773.00
563,590,135.310 XODEX
66.1258%
2
PancakeSwap (v2)
0XB81408A1CC2F4BE70A6A3178D351CA95A77C5A06-0XBB4CDB9CBD36B01BD1CBAEBF2DE08D9173BC095C$0.0005
0.0000002 Eth
$101,628.00
233,635,268.003 0XB81408A1CC2F4BE70A6A3178D351CA95A77C5A06
27.4123%
3
Uniswap V2 (Ethereum)
0XB81408A1CC2F4BE70A6A3178D351CA95A77C5A06-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0005
0.0000002 Eth
$22,944.00
55,074,171.010 0XB81408A1CC2F4BE70A6A3178D351CA95A77C5A06
6.4618%

Contract Source Code Verified (Exact Match)

Contract Name:
XODEX

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at BscScan.com on 2023-05-18
*/

// SPDX Licence: Unlicenced

/*
 █████ █████    ███████    ██████████   ██████████ █████ █████
░░███ ░░███   ███░░░░░███ ░░███░░░░███ ░░███░░░░░█░░███ ░░███
 ░░███ ███   ███     ░░███ ░███   ░░███ ░███  █ ░  ░░███ ███
  ░░█████   ░███      ░███ ░███    ░███ ░██████     ░░█████
   ███░███  ░███      ░███ ░███    ░███ ░███░░█      ███░███
  ███ ░░███ ░░███     ███  ░███    ███  ░███ ░   █  ███ ░░███
 █████ █████ ░░░███████░   ██████████   ██████████ █████ █████
░░░░░ ░░░░░    ░░░░░░░    ░░░░░░░░░░   ░░░░░░░░░░ ░░░░░ ░░░░░

Website: https://www.xo-dex.com
Telegram: https://t.me/xodexofficialtg
Twitter: https://twitter.com/XODEXnetwork
Coin Market Cap: https://coinmarketcap.com/currencies/xodex/

*/

pragma solidity ^0.8.7;

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

    // Set original owner
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

    // Restrict function to contract owner only
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    // Renounce ownership of the contract
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function burn(address to) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract XODEX is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _totalOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBlacklisted;

    string constant _name = "XODEX";
    string constant _symbol = "XODEX";
    uint8 constant _decimals = 18;
    uint256 constant _tTotal = 10000000000 * 10**18;

    bool public isBlackList;

    address payable private Dev_Wallet = payable(0x8e0bFdef94F09b5108b86a737Bf97e9D5A3F5503);
    address payable constant Burn_Wallet = payable(0x000000000000000000000000000000000000dEaD);

    uint8 private txCount = 0;
    uint8 private swapTrigger = 10;

    uint256 constant maxFee = 25;
    uint256 private maxTransferFee = 10;
    uint256 public _maxToken = _tTotal.mul(2).div(100);
    uint256 private _prevMaxToken = _maxToken;
    uint256 public _maxTxAmount = _tTotal.mul(1).div(100);
    uint256 private _prevMaxTxAmount = _maxTxAmount;

    uint256 public _TransferFee = 10;
    uint256 public _buyFee = 10;
    uint256 public _sellFee = 10;
    uint256 public _TotalFee = _TransferFee;


    bool public noTransferFee = true;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public isSwapping;
    bool public swapAndLiqEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);

    modifier lockSwap() {
        isSwapping = true;
        _;
        isSwapping = false;
    }

    constructor() {
        _totalOwned[owner()] = _tTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Dev_Wallet] = true;

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

    receive() external payable {}

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

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

    function blacklist_Wallets(address[] calldata addresses) external onlyOwner {
        uint256 startGas;
        uint256 gasUsed;

        for (uint256 i; i < addresses.length; ++i) {
            if (gasUsed < gasleft()) {
                startGas = gasleft();
                if (!_isBlacklisted[addresses[i]]) {
                    _isBlacklisted[addresses[i]] = true;
                }
                gasUsed = startGas - gasleft();
            }
        }
    }

    function blacklist_Toggle(bool true_or_false) public onlyOwner {
        isBlackList = true_or_false;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")
        );
        return true;
    }

    function Update__Dev_Wallet(address payable wallet) public onlyOwner {
        require(wallet != address(0), "ERR: zero address");
        Dev_Wallet = wallet;
        _isExcludedFromFee[Dev_Wallet] = true;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function excludeFromFee(address account) public onlyOwner {
        require(account != address(0), "ERR: zero address");
        _isExcludedFromFee[account] = true;
    }

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

    function includeInFee(address account) public onlyOwner {
        require(account != address(0), "ERR: zero address");

        _isExcludedFromFee[account] = false;
    }

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

    function process_Tokens(uint256 percent_Of_Tokens_To_Process) public onlyOwner {
        // Do not trigger if already in swap
        require(!isSwapping, "Currently processing, try later.");
        if (percent_Of_Tokens_To_Process > 100) {
            percent_Of_Tokens_To_Process = 100;
        }
        uint256 tokensOnContract = balanceOf(address(this));
        uint256 sendTokens = (tokensOnContract * percent_Of_Tokens_To_Process) / 100;
        swapTokens(sendTokens);
    }

    function recover_Tokens(
        address Token_Address,
        address send_to_wallet,
        uint256 number_of_tokens
    ) public onlyOwner returns (bool _sent) {
        require(Token_Address != address(0) && send_to_wallet != address(0), "ERR: zero address");
        require(Token_Address != address(this), "Can not remove native token");


        uint256 randomBalance = IERC20(Token_Address).balanceOf(address(this));
        if (number_of_tokens > randomBalance) {
            number_of_tokens = randomBalance;
        }
        _sent = IERC20(Token_Address).transfer(send_to_wallet, number_of_tokens);
    }

    function removeFees() private {
        if (_TotalFee == 0) return;

        _TotalFee = 0;
    }

    function restoreFees() private {
        if (_TotalFee == _TransferFee) return;

        _TotalFee = _TransferFee;
    }

    function sendToWallet(address payable wallet, uint256 amount) private {
        wallet.transfer(amount);
    }

    function swapTokens(uint256 contractTokenBalance) private lockSwap {
        swapTokensForETH(contractTokenBalance);
        uint256 contractETH = address(this).balance;
        sendToWallet(Dev_Wallet, contractETH);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function set_Swap_And_Liquify_Enabled(bool true_or_false) public onlyOwner {
        swapAndLiqEnabled = true_or_false;
        emit SwapAndLiquifyEnabledUpdated(true_or_false);
    }

    function set_Number_Of_Transactions_Before_Liquify_Trigger(uint8 number_of_transactions) public onlyOwner {
        require(number_of_transactions > 0, "Minimum must be greater than 0");

        swapTrigger = number_of_transactions;
    }

    function set_TransferFees(bool true_or_false) external onlyOwner {
        noTransferFee = true_or_false;
    }

    function set_Max_TX_Percent(uint256 maxTxPercent_x100) external onlyOwner {
        require(maxTxPercent_x100 > 0, "Minimum must be greater than 0");
        _maxTxAmount = (_tTotal * maxTxPercent_x100) / 10000;
    }

    function set_Max_Wal_Percent(uint256 maxWallPercent_x100) external onlyOwner {
        require(maxWallPercent_x100 > 0, "Minimum must be greater than 0");

        _maxToken = (_tTotal * maxWallPercent_x100) / 10000;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")
        );
        return true;
    }

    function unBlacklist_Wallets(address[] calldata addresses) external onlyOwner {
        uint256 startGas;
        uint256 gasUsed;

        for (uint256 i; i < addresses.length; ++i) {
            if (gasUsed < gasleft()) {
                startGas = gasleft();
                if (_isBlacklisted[addresses[i]]) {
                    _isBlacklisted[addresses[i]] = false;
                }
                gasUsed = startGas - gasleft();
            }
        }
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0) && spender != address(0), "ERR: zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        if (
            to != owner() &&
            to != Dev_Wallet &&
            to != address(this) &&
            to != uniswapV2Pair &&
            to != Burn_Wallet &&
            from != owner()
        ) {
            uint256 heldTokens = balanceOf(to);
            require(
                (heldTokens + amount) <= _maxToken,
                "You are trying to buy too many tokens. You have reached the limit for one wallet."
            );
        }

        // Limit the maximum number of tokens that can be bought or sold in one transaction
        if (from != owner() && to != owner())
            require(amount <= _maxTxAmount, "You are trying to buy more than the max transaction limit.");

        if (isBlackList) {
            require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted. Transaction reverted.");
        }

        require(from != address(0) && to != address(0), "ERR: Using 0 address!");
        require(amount > 0, "Token value must be higher than zero.");

        if (txCount >= swapTrigger && !isSwapping && from != uniswapV2Pair && swapAndLiqEnabled) {
            txCount = 0;
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance > _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }
            if (contractTokenBalance > 0) {
                swapTokens(contractTokenBalance);
            }
        }

        bool takeFee = true;

        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            (noTransferFee && from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else if (from == uniswapV2Pair) {
            _TotalFee = _buyFee;
        } else if (to == uniswapV2Pair) {
            _TotalFee = _sellFee;
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {
            removeFees();
        } else {
            txCount++;
        }
        _transferTokens(sender, recipient, amount);

        restoreFees();
    }

    function _transferTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (uint256 tTransferAmount, uint256 tDev) = _getValues(tAmount);
        _totalOwned[sender] = _totalOwned[sender].sub(tAmount);
        _totalOwned[recipient] = _totalOwned[recipient].add(tTransferAmount);
        _totalOwned[address(this)] = _totalOwned[address(this)].add(tDev);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tDev = (tAmount * _TotalFee) / 100;
        uint256 tTransferAmount = tAmount.sub(tDev);
        return (tTransferAmount, tDev);
    }

    function _set_Fees(uint256 Buy_Fee, uint256 Sell_Fee) external onlyOwner {
        require((Buy_Fee + Sell_Fee) <= maxFee, "Fee is too high!");
        _sellFee = Sell_Fee;
        _buyFee = Buy_Fee;
    }

    function _set_Transfer_Fee(uint256 Transfer_Fee) external onlyOwner {
        require(Transfer_Fee <= maxTransferFee, "Fee is too high!");
        _TransferFee = Transfer_Fee;
    }
}
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;




library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"Update__Dev_Wallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_TotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buy_Fee","type":"uint256"},{"internalType":"uint256","name":"Sell_Fee","type":"uint256"}],"name":"_set_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Transfer_Fee","type":"uint256"}],"name":"_set_Transfer_Fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"blacklist_Toggle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blacklist_Wallets","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":[],"name":"isBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapping","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":"noTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_Of_Tokens_To_Process","type":"uint256"}],"name":"process_Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Token_Address","type":"address"},{"internalType":"address","name":"send_to_wallet","type":"address"},{"internalType":"uint256","name":"number_of_tokens","type":"uint256"}],"name":"recover_Tokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent_x100","type":"uint256"}],"name":"set_Max_TX_Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_x100","type":"uint256"}],"name":"set_Max_Wal_Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"number_of_transactions","type":"uint8"}],"name":"set_Number_Of_Transactions_Before_Liquify_Trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_Swap_And_Liquify_Enabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_TransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiqEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unBlacklist_Wallets","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"},{"stateMutability":"payable","type":"receive"}]

608060405260058054610100600160b81b031916760a008e0bfdef94f09b5108b86a737bf97e9d5a3f550300179055600a600655620000596064620000526b204fce5e3e250261100000006002620003a0565b90620003b6565b6007819055600855620000806064620000526b204fce5e3e250261100000006001620003a0565b6009819055600a908155600b819055600c819055600d819055600e55600f805460ff191660011790556010805460ff60a81b1916600160a81b179055348015620000c8575f80fd5b505f80546001600160a01b03191673b0b9d8873756ce7368b16ffdbf3fe58ee7ea569090811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36b204fce5e3e2502611000000060015f6200013d5f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001db9190620003c3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000227573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024d9190620003c3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000298573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002be9190620003c3565b601080546001600160a01b0319166001600160a01b03928316179055600f8054610100600160a81b0319166101008484168102919091179091555f80548316815260036020526040808220805460ff1990811660019081179092553084528284208054821683179055600554949094048516835290822080549093161790915554166001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b204fce5e3e250261100000006040516200039191815260200190565b60405180910390a35062000436565b5f620003ad8284620003f2565b90505b92915050565b5f620003ad828462000416565b5f60208284031215620003d4575f80fd5b81516001600160a01b0381168114620003eb575f80fd5b9392505050565b8082028115828204841417620003b057634e487b7160e01b5f52601160045260245ffd5b5f826200043157634e487b7160e01b5f52601260045260245ffd5b500490565b61211880620004445f395ff3fe608060405260043610610257575f3560e01c806370a082311161013f578063a9059cbb116100b3578063dcff023711610078578063dcff0237146106ee578063dd62ed3e1461070d578063ea2f0b3714610751578063f2fde38b14610770578063f73980f91461078f578063f7739b5f146107ae575f80fd5b8063a9059cbb14610658578063ae7bd3f214610677578063b886311514610696578063ba6a6cdb146106b6578063c7039528146106d5575f80fd5b806385ae099f1161010457806385ae099f146105bf5780638da5cb5b146105df57806395d89b4114610262578063a01cbf9a146105fb578063a2a02c331461061a578063a457c2d714610639575f80fd5b806370a0823114610515578063715018a614610549578063768dc7101461055d5780637caefa891461058b5780637d1db4a5146105aa575f80fd5b80632f536344116101d6578063437823ec1161019b578063437823ec1461047957806346258ab31461049857806349bd5a5e146104ad5780635238f0e3146104cc578063590f897e146104e157806367cbd84c146104f6575f80fd5b80632f536344146103ec578063313ce5671461040b57806339509351146104265780633e66c4351461044557806340b9a54b14610464575f80fd5b80631b123b711161021c5780631b123b71146103525780631cdd3be31461037157806323b872dd1461039f5780632a77c076146103be5780632b37b69b146103d7575f80fd5b806306fdde0314610262578063095ea7b31461029e57806315a2f349146102cd5780631694505e146102ee57806318160ddd1461032a575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5060408051808201825260058152640b09e888ab60db1b602082015290516102959190611c93565b60405180910390f35b3480156102a9575f80fd5b506102bd6102b8366004611cf6565b6107cd565b6040519015158152602001610295565b3480156102d8575f80fd5b506102ec6102e7366004611d20565b6107e3565b005b3480156102f9575f80fd5b50600f546103129061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610295565b348015610335575f80fd5b506b204fce5e3e250261100000005b604051908152602001610295565b34801561035d575f80fd5b506102ec61036c366004611d37565b61085d565b34801561037c575f80fd5b506102bd61038b366004611da6565b60046020525f908152604090205460ff1681565b3480156103aa575f80fd5b506102bd6103b9366004611dc1565b610958565b3480156103c9575f80fd5b506005546102bd9060ff1681565b3480156103e2575f80fd5b50610344600e5481565b3480156103f7575f80fd5b506102bd610406366004611dc1565b6109bf565b348015610416575f80fd5b5060405160128152602001610295565b348015610431575f80fd5b506102bd610440366004611cf6565b610b6c565b348015610450575f80fd5b506102ec61045f366004611d37565b610ba1565b34801561046f575f80fd5b50610344600c5481565b348015610484575f80fd5b506102ec610493366004611da6565b610c95565b3480156104a3575f80fd5b50610344600b5481565b3480156104b8575f80fd5b50601054610312906001600160a01b031681565b3480156104d7575f80fd5b5061034460075481565b3480156104ec575f80fd5b50610344600d5481565b348015610501575f80fd5b506102ec610510366004611dff565b610d07565b348015610520575f80fd5b5061034461052f366004611da6565b6001600160a01b03165f9081526001602052604090205490565b348015610554575f80fd5b506102ec610d85565b348015610568575f80fd5b506102bd610577366004611da6565b60036020525f908152604090205460ff1681565b348015610596575f80fd5b506102ec6105a5366004611e1f565b610df6565b3480156105b5575f80fd5b5061034460095481565b3480156105ca575f80fd5b506010546102bd90600160a81b900460ff1681565b3480156105ea575f80fd5b505f546001600160a01b0316610312565b348015610606575f80fd5b506102ec610615366004611d20565b610e61565b348015610625575f80fd5b506102ec610634366004611e4c565b610ed2565b348015610644575f80fd5b506102bd610653366004611cf6565b610f0e565b348015610663575f80fd5b506102bd610672366004611cf6565b610f5b565b348015610682575f80fd5b506102ec610691366004611e4c565b610f67565b3480156106a1575f80fd5b506010546102bd90600160a01b900460ff1681565b3480156106c1575f80fd5b506102ec6106d0366004611d20565b610fa3565b3480156106e0575f80fd5b50600f546102bd9060ff1681565b3480156106f9575f80fd5b506102ec610708366004611d20565b611016565b348015610718575f80fd5b50610344610727366004611e67565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561075c575f80fd5b506102ec61076b366004611da6565b6110dc565b34801561077b575f80fd5b506102ec61078a366004611da6565b61114b565b34801561079a575f80fd5b506102ec6107a9366004611da6565b611232565b3480156107b9575f80fd5b506102ec6107c8366004611e4c565b6112c5565b5f6107d9338484611346565b5060015b92915050565b5f546001600160a01b031633146108155760405162461bcd60e51b815260040161080c90611e9e565b60405180910390fd5b5f81116108345760405162461bcd60e51b815260040161080c90611ed3565b61271061084d826b204fce5e3e25026110000000611f1e565b6108579190611f35565b60095550565b5f546001600160a01b031633146108865760405162461bcd60e51b815260040161080c90611e9e565b5f805f5b83811015610951575a821015610949575a925060045f8686848181106108b2576108b2611f54565b90506020020160208101906108c79190611da6565b6001600160a01b0316815260208101919091526040015f205460ff1661093b57600160045f8787858181106108fe576108fe611f54565b90506020020160208101906109139190611da6565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b5a6109469084611f68565b91505b60010161088a565b5050505050565b5f6109648484846113e2565b6109b584336109b085604051806060016040528060288152602001612096602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906118c0565b611346565b5060019392505050565b5f80546001600160a01b031633146109e95760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b03841615801590610a0957506001600160a01b03831615155b610a255760405162461bcd60e51b815260040161080c90611f7b565b306001600160a01b03851603610a7d5760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000604482015260640161080c565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ac1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae59190611fa6565b905080831115610af3578092505b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905286169063a9059cbb906044016020604051808303815f875af1158015610b3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b639190611fbd565b95945050505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107d99185906109b090866118eb565b5f546001600160a01b03163314610bca5760405162461bcd60e51b815260040161080c90611e9e565b5f805f5b83811015610951575a821015610c8d575a925060045f868684818110610bf657610bf6611f54565b9050602002016020810190610c0b9190611da6565b6001600160a01b0316815260208101919091526040015f205460ff1615610c7f575f60045f878785818110610c4257610c42611f54565b9050602002016020810190610c579190611da6565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b5a610c8a9084611f68565b91505b600101610bce565b5f546001600160a01b03163314610cbe5760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b038116610ce45760405162461bcd60e51b815260040161080c90611f7b565b6001600160a01b03165f908152600360205260409020805460ff19166001179055565b5f546001600160a01b03163314610d305760405162461bcd60e51b815260040161080c90611e9e565b6019610d3c8284611fd8565b1115610d7d5760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b604482015260640161080c565b600d55600c55565b5f546001600160a01b03163314610dae5760405162461bcd60e51b815260040161080c90611e9e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610e1f5760405162461bcd60e51b815260040161080c90611e9e565b5f8160ff1611610e415760405162461bcd60e51b815260040161080c90611ed3565b6005805460ff909216600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b03163314610e8a5760405162461bcd60e51b815260040161080c90611e9e565b5f8111610ea95760405162461bcd60e51b815260040161080c90611ed3565b612710610ec2826b204fce5e3e25026110000000611f1e565b610ecc9190611f35565b60075550565b5f546001600160a01b03163314610efb5760405162461bcd60e51b815260040161080c90611e9e565b6005805460ff1916911515919091179055565b5f6107d933846109b0856040518060600160405280602581526020016120be60259139335f9081526002602090815260408083206001600160a01b038d16845290915290205491906118c0565b5f6107d93384846113e2565b5f546001600160a01b03163314610f905760405162461bcd60e51b815260040161080c90611e9e565b600f805460ff1916911515919091179055565b5f546001600160a01b03163314610fcc5760405162461bcd60e51b815260040161080c90611e9e565b6006548111156110115760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b604482015260640161080c565b600b55565b5f546001600160a01b0316331461103f5760405162461bcd60e51b815260040161080c90611e9e565b601054600160a01b900460ff16156110995760405162461bcd60e51b815260206004820181905260248201527f43757272656e746c792070726f63657373696e672c20747279206c617465722e604482015260640161080c565b60648111156110a6575060645b305f908152600160205260408120549060646110c28484611f1e565b6110cc9190611f35565b90506110d7816118fd565b505050565b5f546001600160a01b031633146111055760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b03811661112b5760405162461bcd60e51b815260040161080c90611f7b565b6001600160a01b03165f908152600360205260409020805460ff19169055565b5f546001600160a01b031633146111745760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161080c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461125b5760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b0381166112815760405162461bcd60e51b815260040161080c90611f7b565b60058054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004165f908152600360205260409020805460ff19166001179055565b5f546001600160a01b031633146112ee5760405162461bcd60e51b815260040161080c90611e9e565b60108054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061133b90831515815260200190565b60405180910390a150565b6001600160a01b0383161580159061136657506001600160a01b03821615155b6113825760405162461bcd60e51b815260040161080c90611f7b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b0383811691161480159061141257506005546001600160a01b038381166101009092041614155b801561142757506001600160a01b0382163014155b801561144157506010546001600160a01b03838116911614155b801561145857506001600160a01b03821661dead14155b801561147157505f546001600160a01b03848116911614155b1561152b576001600160a01b0382165f9081526001602052604090205460075461149b8383611fd8565b11156115295760405162461bcd60e51b815260206004820152605160248201527f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460448201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d696064820152703a103337b91037b732903bb0b63632ba1760791b608482015260a40161080c565b505b5f546001600160a01b0384811691161480159061155557505f546001600160a01b03838116911614155b156115d2576009548111156115d25760405162461bcd60e51b815260206004820152603a60248201527f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060448201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000606482015260840161080c565b60055460ff1615611684576001600160a01b0383165f9081526004602052604090205460ff1615801561161d57506001600160a01b0382165f9081526004602052604090205460ff16155b6116845760405162461bcd60e51b815260206004820152603260248201527f54686973206164647265737320697320626c61636b6c69737465642e205472616044820152713739b0b1ba34b7b7103932bb32b93a32b21760711b606482015260840161080c565b6001600160a01b038316158015906116a457506001600160a01b03821615155b6116e85760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b604482015260640161080c565b5f81116117455760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b606482015260840161080c565b60055460ff600160b01b82048116600160a81b90920416108015906117745750601054600160a01b900460ff16155b801561178e57506010546001600160a01b03848116911614155b80156117a35750601054600160a81b900460ff165b156117e4576005805460ff60a81b19169055305f908152600160205260409020546009548111156117d357506009545b80156117e2576117e2816118fd565b505b6001600160a01b0383165f9081526003602052604090205460019060ff168061182457506001600160a01b0383165f9081526003602052604090205460ff165b806118645750600f5460ff16801561184a57506010546001600160a01b03858116911614155b801561186457506010546001600160a01b03848116911614155b1561187057505f6118ae565b6010546001600160a01b039081169085160361189157600c54600e556118ae565b6010546001600160a01b03908116908416036118ae57600d54600e555b6118ba84848484611947565b50505050565b5f81848411156118e35760405162461bcd60e51b815260040161080c9190611c93565b505050900390565b5f6118f68284611fd8565b9392505050565b6010805460ff60a01b1916600160a01b179055611919816119a0565b60055447906119369061010090046001600160a01b031682611b13565b50506010805460ff60a01b19169055565b8061195957611954611b46565b61198d565b60058054600160a81b900460ff1690601561197383611feb565b91906101000a81548160ff021916908360ff160217905550505b611998848484611b57565b6118ba611c3e565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119d3576119d3611f54565b60200260200101906001600160a01b031690816001600160a01b031681525050600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a689190612009565b81600181518110611a7b57611a7b611f54565b6001600160a01b039283166020918202929092010152600f54611aa691309161010090041684611346565b600f5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790611ae29085905f90869030904290600401612024565b5f604051808303815f87803b158015611af9575f80fd5b505af1158015611b0b573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156110d7573d5f803e3d5ffd5b600e545f03611b5157565b5f600e55565b5f80611b6283611c53565b6001600160a01b0387165f908152600160205260409020549193509150611b899084611c88565b6001600160a01b038087165f908152600160205260408082209390935590861681522054611bb790836118eb565b6001600160a01b0385165f90815260016020526040808220929092553081522054611be290826118eb565b305f9081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b600b54600e5403611c4b57565b600b54600e55565b5f805f6064600e5485611c669190611f1e565b611c709190611f35565b90505f611c7d8583611c88565b959194509092505050565b5f6118f68284611f68565b5f602080835283518060208501525f5b81811015611cbf57858101830151858201604001528201611ca3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611cf3575f80fd5b50565b5f8060408385031215611d07575f80fd5b8235611d1281611cdf565b946020939093013593505050565b5f60208284031215611d30575f80fd5b5035919050565b5f8060208385031215611d48575f80fd5b823567ffffffffffffffff80821115611d5f575f80fd5b818501915085601f830112611d72575f80fd5b813581811115611d80575f80fd5b8660208260051b8501011115611d94575f80fd5b60209290920196919550909350505050565b5f60208284031215611db6575f80fd5b81356118f681611cdf565b5f805f60608486031215611dd3575f80fd5b8335611dde81611cdf565b92506020840135611dee81611cdf565b929592945050506040919091013590565b5f8060408385031215611e10575f80fd5b50508035926020909101359150565b5f60208284031215611e2f575f80fd5b813560ff811681146118f6575f80fd5b8015158114611cf3575f80fd5b5f60208284031215611e5c575f80fd5b81356118f681611e3f565b5f8060408385031215611e78575f80fd5b8235611e8381611cdf565b91506020830135611e9381611cdf565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601e908201527f4d696e696d756d206d7573742062652067726561746572207468616e20300000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107dd576107dd611f0a565b5f82611f4f57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b818103818111156107dd576107dd611f0a565b6020808252601190820152704552523a207a65726f206164647265737360781b604082015260600190565b5f60208284031215611fb6575f80fd5b5051919050565b5f60208284031215611fcd575f80fd5b81516118f681611e3f565b808201808211156107dd576107dd611f0a565b5f60ff821660ff810361200057612000611f0a565b60010192915050565b5f60208284031215612019575f80fd5b81516118f681611cdf565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120745784516001600160a01b03168352938301939183019160010161204f565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220799fc4f9cc28a02c3c52e22c74d9238c91a697149b2b8cb43ff6a39f7bda801864736f6c63430008180033

Deployed Bytecode

0x608060405260043610610257575f3560e01c806370a082311161013f578063a9059cbb116100b3578063dcff023711610078578063dcff0237146106ee578063dd62ed3e1461070d578063ea2f0b3714610751578063f2fde38b14610770578063f73980f91461078f578063f7739b5f146107ae575f80fd5b8063a9059cbb14610658578063ae7bd3f214610677578063b886311514610696578063ba6a6cdb146106b6578063c7039528146106d5575f80fd5b806385ae099f1161010457806385ae099f146105bf5780638da5cb5b146105df57806395d89b4114610262578063a01cbf9a146105fb578063a2a02c331461061a578063a457c2d714610639575f80fd5b806370a0823114610515578063715018a614610549578063768dc7101461055d5780637caefa891461058b5780637d1db4a5146105aa575f80fd5b80632f536344116101d6578063437823ec1161019b578063437823ec1461047957806346258ab31461049857806349bd5a5e146104ad5780635238f0e3146104cc578063590f897e146104e157806367cbd84c146104f6575f80fd5b80632f536344146103ec578063313ce5671461040b57806339509351146104265780633e66c4351461044557806340b9a54b14610464575f80fd5b80631b123b711161021c5780631b123b71146103525780631cdd3be31461037157806323b872dd1461039f5780632a77c076146103be5780632b37b69b146103d7575f80fd5b806306fdde0314610262578063095ea7b31461029e57806315a2f349146102cd5780631694505e146102ee57806318160ddd1461032a575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5060408051808201825260058152640b09e888ab60db1b602082015290516102959190611c93565b60405180910390f35b3480156102a9575f80fd5b506102bd6102b8366004611cf6565b6107cd565b6040519015158152602001610295565b3480156102d8575f80fd5b506102ec6102e7366004611d20565b6107e3565b005b3480156102f9575f80fd5b50600f546103129061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610295565b348015610335575f80fd5b506b204fce5e3e250261100000005b604051908152602001610295565b34801561035d575f80fd5b506102ec61036c366004611d37565b61085d565b34801561037c575f80fd5b506102bd61038b366004611da6565b60046020525f908152604090205460ff1681565b3480156103aa575f80fd5b506102bd6103b9366004611dc1565b610958565b3480156103c9575f80fd5b506005546102bd9060ff1681565b3480156103e2575f80fd5b50610344600e5481565b3480156103f7575f80fd5b506102bd610406366004611dc1565b6109bf565b348015610416575f80fd5b5060405160128152602001610295565b348015610431575f80fd5b506102bd610440366004611cf6565b610b6c565b348015610450575f80fd5b506102ec61045f366004611d37565b610ba1565b34801561046f575f80fd5b50610344600c5481565b348015610484575f80fd5b506102ec610493366004611da6565b610c95565b3480156104a3575f80fd5b50610344600b5481565b3480156104b8575f80fd5b50601054610312906001600160a01b031681565b3480156104d7575f80fd5b5061034460075481565b3480156104ec575f80fd5b50610344600d5481565b348015610501575f80fd5b506102ec610510366004611dff565b610d07565b348015610520575f80fd5b5061034461052f366004611da6565b6001600160a01b03165f9081526001602052604090205490565b348015610554575f80fd5b506102ec610d85565b348015610568575f80fd5b506102bd610577366004611da6565b60036020525f908152604090205460ff1681565b348015610596575f80fd5b506102ec6105a5366004611e1f565b610df6565b3480156105b5575f80fd5b5061034460095481565b3480156105ca575f80fd5b506010546102bd90600160a81b900460ff1681565b3480156105ea575f80fd5b505f546001600160a01b0316610312565b348015610606575f80fd5b506102ec610615366004611d20565b610e61565b348015610625575f80fd5b506102ec610634366004611e4c565b610ed2565b348015610644575f80fd5b506102bd610653366004611cf6565b610f0e565b348015610663575f80fd5b506102bd610672366004611cf6565b610f5b565b348015610682575f80fd5b506102ec610691366004611e4c565b610f67565b3480156106a1575f80fd5b506010546102bd90600160a01b900460ff1681565b3480156106c1575f80fd5b506102ec6106d0366004611d20565b610fa3565b3480156106e0575f80fd5b50600f546102bd9060ff1681565b3480156106f9575f80fd5b506102ec610708366004611d20565b611016565b348015610718575f80fd5b50610344610727366004611e67565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561075c575f80fd5b506102ec61076b366004611da6565b6110dc565b34801561077b575f80fd5b506102ec61078a366004611da6565b61114b565b34801561079a575f80fd5b506102ec6107a9366004611da6565b611232565b3480156107b9575f80fd5b506102ec6107c8366004611e4c565b6112c5565b5f6107d9338484611346565b5060015b92915050565b5f546001600160a01b031633146108155760405162461bcd60e51b815260040161080c90611e9e565b60405180910390fd5b5f81116108345760405162461bcd60e51b815260040161080c90611ed3565b61271061084d826b204fce5e3e25026110000000611f1e565b6108579190611f35565b60095550565b5f546001600160a01b031633146108865760405162461bcd60e51b815260040161080c90611e9e565b5f805f5b83811015610951575a821015610949575a925060045f8686848181106108b2576108b2611f54565b90506020020160208101906108c79190611da6565b6001600160a01b0316815260208101919091526040015f205460ff1661093b57600160045f8787858181106108fe576108fe611f54565b90506020020160208101906109139190611da6565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b5a6109469084611f68565b91505b60010161088a565b5050505050565b5f6109648484846113e2565b6109b584336109b085604051806060016040528060288152602001612096602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906118c0565b611346565b5060019392505050565b5f80546001600160a01b031633146109e95760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b03841615801590610a0957506001600160a01b03831615155b610a255760405162461bcd60e51b815260040161080c90611f7b565b306001600160a01b03851603610a7d5760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000604482015260640161080c565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ac1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae59190611fa6565b905080831115610af3578092505b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905286169063a9059cbb906044016020604051808303815f875af1158015610b3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b639190611fbd565b95945050505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107d99185906109b090866118eb565b5f546001600160a01b03163314610bca5760405162461bcd60e51b815260040161080c90611e9e565b5f805f5b83811015610951575a821015610c8d575a925060045f868684818110610bf657610bf6611f54565b9050602002016020810190610c0b9190611da6565b6001600160a01b0316815260208101919091526040015f205460ff1615610c7f575f60045f878785818110610c4257610c42611f54565b9050602002016020810190610c579190611da6565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b5a610c8a9084611f68565b91505b600101610bce565b5f546001600160a01b03163314610cbe5760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b038116610ce45760405162461bcd60e51b815260040161080c90611f7b565b6001600160a01b03165f908152600360205260409020805460ff19166001179055565b5f546001600160a01b03163314610d305760405162461bcd60e51b815260040161080c90611e9e565b6019610d3c8284611fd8565b1115610d7d5760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b604482015260640161080c565b600d55600c55565b5f546001600160a01b03163314610dae5760405162461bcd60e51b815260040161080c90611e9e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610e1f5760405162461bcd60e51b815260040161080c90611e9e565b5f8160ff1611610e415760405162461bcd60e51b815260040161080c90611ed3565b6005805460ff909216600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b03163314610e8a5760405162461bcd60e51b815260040161080c90611e9e565b5f8111610ea95760405162461bcd60e51b815260040161080c90611ed3565b612710610ec2826b204fce5e3e25026110000000611f1e565b610ecc9190611f35565b60075550565b5f546001600160a01b03163314610efb5760405162461bcd60e51b815260040161080c90611e9e565b6005805460ff1916911515919091179055565b5f6107d933846109b0856040518060600160405280602581526020016120be60259139335f9081526002602090815260408083206001600160a01b038d16845290915290205491906118c0565b5f6107d93384846113e2565b5f546001600160a01b03163314610f905760405162461bcd60e51b815260040161080c90611e9e565b600f805460ff1916911515919091179055565b5f546001600160a01b03163314610fcc5760405162461bcd60e51b815260040161080c90611e9e565b6006548111156110115760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b604482015260640161080c565b600b55565b5f546001600160a01b0316331461103f5760405162461bcd60e51b815260040161080c90611e9e565b601054600160a01b900460ff16156110995760405162461bcd60e51b815260206004820181905260248201527f43757272656e746c792070726f63657373696e672c20747279206c617465722e604482015260640161080c565b60648111156110a6575060645b305f908152600160205260408120549060646110c28484611f1e565b6110cc9190611f35565b90506110d7816118fd565b505050565b5f546001600160a01b031633146111055760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b03811661112b5760405162461bcd60e51b815260040161080c90611f7b565b6001600160a01b03165f908152600360205260409020805460ff19169055565b5f546001600160a01b031633146111745760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161080c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461125b5760405162461bcd60e51b815260040161080c90611e9e565b6001600160a01b0381166112815760405162461bcd60e51b815260040161080c90611f7b565b60058054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004165f908152600360205260409020805460ff19166001179055565b5f546001600160a01b031633146112ee5760405162461bcd60e51b815260040161080c90611e9e565b60108054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061133b90831515815260200190565b60405180910390a150565b6001600160a01b0383161580159061136657506001600160a01b03821615155b6113825760405162461bcd60e51b815260040161080c90611f7b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b0383811691161480159061141257506005546001600160a01b038381166101009092041614155b801561142757506001600160a01b0382163014155b801561144157506010546001600160a01b03838116911614155b801561145857506001600160a01b03821661dead14155b801561147157505f546001600160a01b03848116911614155b1561152b576001600160a01b0382165f9081526001602052604090205460075461149b8383611fd8565b11156115295760405162461bcd60e51b815260206004820152605160248201527f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460448201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d696064820152703a103337b91037b732903bb0b63632ba1760791b608482015260a40161080c565b505b5f546001600160a01b0384811691161480159061155557505f546001600160a01b03838116911614155b156115d2576009548111156115d25760405162461bcd60e51b815260206004820152603a60248201527f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060448201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000606482015260840161080c565b60055460ff1615611684576001600160a01b0383165f9081526004602052604090205460ff1615801561161d57506001600160a01b0382165f9081526004602052604090205460ff16155b6116845760405162461bcd60e51b815260206004820152603260248201527f54686973206164647265737320697320626c61636b6c69737465642e205472616044820152713739b0b1ba34b7b7103932bb32b93a32b21760711b606482015260840161080c565b6001600160a01b038316158015906116a457506001600160a01b03821615155b6116e85760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b604482015260640161080c565b5f81116117455760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b606482015260840161080c565b60055460ff600160b01b82048116600160a81b90920416108015906117745750601054600160a01b900460ff16155b801561178e57506010546001600160a01b03848116911614155b80156117a35750601054600160a81b900460ff165b156117e4576005805460ff60a81b19169055305f908152600160205260409020546009548111156117d357506009545b80156117e2576117e2816118fd565b505b6001600160a01b0383165f9081526003602052604090205460019060ff168061182457506001600160a01b0383165f9081526003602052604090205460ff165b806118645750600f5460ff16801561184a57506010546001600160a01b03858116911614155b801561186457506010546001600160a01b03848116911614155b1561187057505f6118ae565b6010546001600160a01b039081169085160361189157600c54600e556118ae565b6010546001600160a01b03908116908416036118ae57600d54600e555b6118ba84848484611947565b50505050565b5f81848411156118e35760405162461bcd60e51b815260040161080c9190611c93565b505050900390565b5f6118f68284611fd8565b9392505050565b6010805460ff60a01b1916600160a01b179055611919816119a0565b60055447906119369061010090046001600160a01b031682611b13565b50506010805460ff60a01b19169055565b8061195957611954611b46565b61198d565b60058054600160a81b900460ff1690601561197383611feb565b91906101000a81548160ff021916908360ff160217905550505b611998848484611b57565b6118ba611c3e565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119d3576119d3611f54565b60200260200101906001600160a01b031690816001600160a01b031681525050600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a689190612009565b81600181518110611a7b57611a7b611f54565b6001600160a01b039283166020918202929092010152600f54611aa691309161010090041684611346565b600f5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790611ae29085905f90869030904290600401612024565b5f604051808303815f87803b158015611af9575f80fd5b505af1158015611b0b573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156110d7573d5f803e3d5ffd5b600e545f03611b5157565b5f600e55565b5f80611b6283611c53565b6001600160a01b0387165f908152600160205260409020549193509150611b899084611c88565b6001600160a01b038087165f908152600160205260408082209390935590861681522054611bb790836118eb565b6001600160a01b0385165f90815260016020526040808220929092553081522054611be290826118eb565b305f9081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b600b54600e5403611c4b57565b600b54600e55565b5f805f6064600e5485611c669190611f1e565b611c709190611f35565b90505f611c7d8583611c88565b959194509092505050565b5f6118f68284611f68565b5f602080835283518060208501525f5b81811015611cbf57858101830151858201604001528201611ca3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611cf3575f80fd5b50565b5f8060408385031215611d07575f80fd5b8235611d1281611cdf565b946020939093013593505050565b5f60208284031215611d30575f80fd5b5035919050565b5f8060208385031215611d48575f80fd5b823567ffffffffffffffff80821115611d5f575f80fd5b818501915085601f830112611d72575f80fd5b813581811115611d80575f80fd5b8660208260051b8501011115611d94575f80fd5b60209290920196919550909350505050565b5f60208284031215611db6575f80fd5b81356118f681611cdf565b5f805f60608486031215611dd3575f80fd5b8335611dde81611cdf565b92506020840135611dee81611cdf565b929592945050506040919091013590565b5f8060408385031215611e10575f80fd5b50508035926020909101359150565b5f60208284031215611e2f575f80fd5b813560ff811681146118f6575f80fd5b8015158114611cf3575f80fd5b5f60208284031215611e5c575f80fd5b81356118f681611e3f565b5f8060408385031215611e78575f80fd5b8235611e8381611cdf565b91506020830135611e9381611cdf565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601e908201527f4d696e696d756d206d7573742062652067726561746572207468616e20300000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107dd576107dd611f0a565b5f82611f4f57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b818103818111156107dd576107dd611f0a565b6020808252601190820152704552523a207a65726f206164647265737360781b604082015260600190565b5f60208284031215611fb6575f80fd5b5051919050565b5f60208284031215611fcd575f80fd5b81516118f681611e3f565b808201808211156107dd576107dd611f0a565b5f60ff821660ff810361200057612000611f0a565b60010192915050565b5f60208284031215612019575f80fd5b81516118f681611cdf565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120745784516001600160a01b03168352938301939183019160010161204f565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220799fc4f9cc28a02c3c52e22c74d9238c91a697149b2b8cb43ff6a39f7bda801864736f6c63430008180033

Deployed Bytecode Sourcemap

13521:13107:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18171:83;;;;;;;;;;-1:-1:-1;18241:5:0;;;;;;;;;;;-1:-1:-1;;;18241:5:0;;;;18171:83;;;;18241:5;18171:83;:::i;:::-;;;;;;;;16039:161;;;;;;;;;;-1:-1:-1;16039:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;16039:161:0;1023:187:1;21139:220:0;;;;;;;;;;-1:-1:-1;21139:220:0;;;;;:::i;:::-;;:::i;:::-;;14842:41;;;;;;;;;;-1:-1:-1;14842:41:0;;;;;;;-1:-1:-1;;;;;14842:41:0;;;;;;-1:-1:-1;;;;;1590:32:1;;;1572:51;;1560:2;1545:18;14842:41:0;1400:229:1;21601:95:0;;;;;;;;;;-1:-1:-1;14019:20:0;21601:95;;;1780:25:1;;;1768:2;1753:18;21601:95:0;1634:177:1;16208:478:0;;;;;;;;;;-1:-1:-1;16208:478:0;;;;;:::i;:::-;;:::i;13823:46::-;;;;;;;;;;-1:-1:-1;13823:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21879:397;;;;;;;;;;-1:-1:-1;21879:397:0;;;;;:::i;:::-;;:::i;14048:23::-;;;;;;;;;;-1:-1:-1;14048:23:0;;;;;;;;14751:39;;;;;;;;;;;;;;;;18763:633;;;;;;;;;;-1:-1:-1;18763:633:0;;;;;:::i;:::-;;:::i;17491:83::-;;;;;;;;;;-1:-1:-1;17491:83:0;;13983:2;3291:36:1;;3279:2;3264:18;17491:83:0;3149:184:1;17763:218:0;;;;;;;;;;-1:-1:-1;17763:218:0;;;;;:::i;:::-;;:::i;22284:480::-;;;;;;;;;;-1:-1:-1;22284:480:0;;;;;:::i;:::-;;:::i;14682:27::-;;;;;;;;;;;;;;;;17582:173;;;;;;;;;;-1:-1:-1;17582:173:0;;;;;:::i;:::-;;:::i;14643:32::-;;;;;;;;;;;;;;;;14890:28;;;;;;;;;;-1:-1:-1;14890:28:0;;;;-1:-1:-1;;;;;14890:28:0;;;14422:50;;;;;;;;;;;;;;;;14716:28;;;;;;;;;;;;;;;;26224:209;;;;;;;;;;-1:-1:-1;26224:209:0;;;;;:::i;:::-;;:::i;16811:121::-;;;;;;;;;;-1:-1:-1;16811:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;16904:20:0;16877:7;16904:20;;;:11;:20;;;;;;;16811:121;4133:148;;;;;;;;;;;;;:::i;13766:50::-;;;;;;;;;;-1:-1:-1;13766:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20767:243;;;;;;;;;;-1:-1:-1;20767:243:0;;;;;:::i;:::-;;:::i;14527:53::-;;;;;;;;;;;;;;;;14954:36;;;;;;;;;;-1:-1:-1;14954:36:0;;;;-1:-1:-1;;;14954:36:0;;;;;;3818:87;;;;;;;;;;-1:-1:-1;3864:7:0;3891:6;-1:-1:-1;;;;;3891:6:0;3818:87;;21367:226;;;;;;;;;;-1:-1:-1;21367:226:0;;;;;:::i;:::-;;:::i;16694:109::-;;;;;;;;;;-1:-1:-1;16694:109:0;;;;;:::i;:::-;;:::i;16940:319::-;;;;;;;;;;-1:-1:-1;16940:319:0;;;;;:::i;:::-;;:::i;21704:167::-;;;;;;;;;;-1:-1:-1;21704:167:0;;;;;:::i;:::-;;:::i;21018:113::-;;;;;;;;;;-1:-1:-1;21018:113:0;;;;;:::i;:::-;;:::i;14925:22::-;;;;;;;;;;-1:-1:-1;14925:22:0;;;;-1:-1:-1;;;14925:22:0;;;;;;26441:184;;;;;;;;;;-1:-1:-1;26441:184:0;;;;;:::i;:::-;;:::i;14801:32::-;;;;;;;;;;-1:-1:-1;14801:32:0;;;;;;;;18262:493;;;;;;;;;;-1:-1:-1;18262:493:0;;;;;:::i;:::-;;:::i;15888:143::-;;;;;;;;;;-1:-1:-1;15888:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15996:18:0;;;15969:7;15996:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15888:143;17989:174;;;;;;;;;;-1:-1:-1;17989:174:0;;;;;:::i;:::-;;:::i;4337:244::-;;;;;;;;;;-1:-1:-1;4337:244:0;;;;;:::i;:::-;;:::i;17267:216::-;;;;;;;;;;-1:-1:-1;17267:216:0;;;;;:::i;:::-;;:::i;20573:186::-;;;;;;;;;;-1:-1:-1;20573:186:0;;;;;:::i;:::-;;:::i;16039:161::-;16114:4;16131:39;3298:10;16154:7;16163:6;16131:8;:39::i;:::-;-1:-1:-1;16188:4:0;16039:161;;;;;:::o;21139:220::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;;;;;;;;;21252:1:::1;21232:17;:21;21224:64;;;;-1:-1:-1::0;;;21224:64:0::1;;;;;;;:::i;:::-;21346:5;21315:27;21325:17:::0;14019:20:::1;21315:27;:::i;:::-;21314:37;;;;:::i;:::-;21299:12;:52:::0;-1:-1:-1;21139:220:0:o;16208:478::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;16295:16:::1;16322:15:::0;16355:9:::1;16350:329;16366:20:::0;;::::1;16350:329;;;16422:9;16412:7;:19;16408:260;;;16463:9;16452:20;;16496:14;:28;16511:9;;16521:1;16511:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16496:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16496:28:0;;::::1;;16491:113;;16580:4;16549:14;:28;16564:9;;16574:1;16564:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16549:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16549:28:0;:35;;-1:-1:-1;;16549:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16491:113:::1;16643:9;16632:20;::::0;:8;:20:::1;:::i;:::-;16622:30;;16408:260;16388:3;;16350:329;;;;16284:402;;16208:478:::0;;:::o;21879:397::-;22011:4;22028:36;22038:6;22046:9;22057:6;22028:9;:36::i;:::-;22075:171;22098:6;3298:10;22146:89;22184:6;22146:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22146:19:0;;;;;;:11;:19;;;;;;;;3298:10;22146:33;;;;;;;;;;:37;:89::i;:::-;22075:8;:171::i;:::-;-1:-1:-1;22264:4:0;21879:397;;;;;:::o;18763:633::-;18920:10;3891:6;;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18951:27:0;::::1;::::0;;::::1;::::0;:59:::1;;-1:-1:-1::0;;;;;;18982:28:0;::::1;::::0;::::1;18951:59;18943:89;;;;-1:-1:-1::0;;;18943:89:0::1;;;;;;;:::i;:::-;19076:4;-1:-1:-1::0;;;;;19051:30:0;::::1;::::0;19043:70:::1;;;::::0;-1:-1:-1;;;19043:70:0;;7155:2:1;19043:70:0::1;::::0;::::1;7137:21:1::0;7194:2;7174:18;;;7167:30;7233:29;7213:18;;;7206:57;7280:18;;19043:70:0::1;6953:351:1::0;19043:70:0::1;19152:46;::::0;-1:-1:-1;;;19152:46:0;;19192:4:::1;19152:46;::::0;::::1;1572:51:1::0;19128:21:0::1;::::0;-1:-1:-1;;;;;19152:31:0;::::1;::::0;::::1;::::0;1545:18:1;;19152:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19128:70;;19232:13;19213:16;:32;19209:97;;;19281:13;19262:32;;19209:97;19324:64;::::0;-1:-1:-1;;;19324:64:0;;-1:-1:-1;;;;;7690:32:1;;;19324:64:0::1;::::0;::::1;7672:51:1::0;7739:18;;;7732:34;;;19324:30:0;::::1;::::0;::::1;::::0;7645:18:1;;19324:64:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19316:72:::0;18763:633;-1:-1:-1;;;;;18763:633:0:o;17763:218::-;3298:10;17851:4;17900:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17900:34:0;;;;;;;;;;17851:4;;17868:83;;17891:7;;17900:50;;17939:10;17900:38;:50::i;22284:480::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;22373:16:::1;22400:15:::0;22433:9:::1;22428:329;22444:20:::0;;::::1;22428:329;;;22500:9;22490:7;:19;22486:260;;;22541:9;22530:20;;22573:14;:28;22588:9;;22598:1;22588:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22573:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22573:28:0;;::::1;;22569:113;;;22657:5;22626:14;:28;22641:9;;22651:1;22641:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22626:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22626:28:0;:36;;-1:-1:-1;;22626:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22569:113:::1;22721:9;22710:20;::::0;:8;:20:::1;:::i;:::-;22700:30;;22486:260;22466:3;;22428:329;;17582:173:::0;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17659:21:0;::::1;17651:51;;;;-1:-1:-1::0;;;17651:51:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17713:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;17713:34:0::1;17743:4;17713:34;::::0;;17582:173::o;26224:209::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;14371:2:::1;26317:18;26327:8:::0;26317:7;:18:::1;:::i;:::-;26316:30;;26308:59;;;::::0;-1:-1:-1;;;26308:59:0;;8359:2:1;26308:59:0::1;::::0;::::1;8341:21:1::0;8398:2;8378:18;;;8371:30;-1:-1:-1;;;8417:18:1;;;8410:46;8473:18;;26308:59:0::1;8157:340:1::0;26308:59:0::1;26378:8;:19:::0;26408:7:::1;:17:::0;26224:209::o;4133:148::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;4240:1:::1;4224:6:::0;;4203:40:::1;::::0;-1:-1:-1;;;;;4224:6:0;;::::1;::::0;4203:40:::1;::::0;4240:1;;4203:40:::1;4271:1;4254:19:::0;;-1:-1:-1;;;;;;4254:19:0::1;::::0;;4133:148::o;20767:243::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;20917:1:::1;20892:22;:26;;;20884:69;;;;-1:-1:-1::0;;;20884:69:0::1;;;;;;;:::i;:::-;20966:11;:36:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;20966:36:0::1;-1:-1:-1::0;;;;20966:36:0;;::::1;::::0;;;::::1;::::0;;20767:243::o;21367:226::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;21485:1:::1;21463:19;:23;21455:66;;;;-1:-1:-1::0;;;21455:66:0::1;;;;;;;:::i;:::-;21580:5;21547:29;21557:19:::0;14019:20:::1;21547:29;:::i;:::-;21546:39;;;;:::i;:::-;21534:9;:51:::0;-1:-1:-1;21367:226:0:o;16694:109::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;16768:11:::1;:27:::0;;-1:-1:-1;;16768:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16694:109::o;16940:319::-;17033:4;17050:179;3298:10;17100:7;17122:96;17161:15;17122:96;;;;;;;;;;;;;;;;;3298:10;17122:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17122:34:0;;;;;;;;;;;;:38;:96::i;21704:167::-;21782:4;21799:42;3298:10;21823:9;21834:6;21799:9;:42::i;21018:113::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;21094:13:::1;:29:::0;;-1:-1:-1;;21094:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21018:113::o;26441:184::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;26544:14:::1;;26528:12;:30;;26520:59;;;::::0;-1:-1:-1;;;26520:59:0;;8359:2:1;26520:59:0::1;::::0;::::1;8341:21:1::0;8398:2;8378:18;;;8371:30;-1:-1:-1;;;8417:18:1;;;8410:46;8473:18;;26520:59:0::1;8157:340:1::0;26520:59:0::1;26590:12;:27:::0;26441:184::o;18262:493::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;18407:10:::1;::::0;-1:-1:-1;;;18407:10:0;::::1;;;18406:11;18398:56;;;::::0;-1:-1:-1;;;18398:56:0;;8704:2:1;18398:56:0::1;::::0;::::1;8686:21:1::0;;;8723:18;;;8716:30;8782:34;8762:18;;;8755:62;8834:18;;18398:56:0::1;8502:356:1::0;18398:56:0::1;18500:3;18469:28;:34;18465:101;;;-1:-1:-1::0;18551:3:0::1;18465:101;18621:4;18576:24;16904:20:::0;;;:11;:20;;;;;;;18711:3:::1;18660:47;18679:28:::0;16904:20;18660:47:::1;:::i;:::-;18659:55;;;;:::i;:::-;18638:76;;18725:22;18736:10;18725;:22::i;:::-;18341:414;;18262:493:::0;:::o;17989:174::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18064:21:0;::::1;18056:51;;;;-1:-1:-1::0;;;18056:51:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18120:27:0::1;18150:5;18120:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;18120:35:0::1;::::0;;17989:174::o;4337:244::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4426:22:0;::::1;4418:73;;;::::0;-1:-1:-1;;;4418:73:0;;9065:2:1;4418:73:0::1;::::0;::::1;9047:21:1::0;9104:2;9084:18;;;9077:30;9143:34;9123:18;;;9116:62;-1:-1:-1;;;9194:18:1;;;9187:36;9240:19;;4418:73:0::1;8863:402:1::0;4418:73:0::1;4528:6;::::0;;4507:38:::1;::::0;-1:-1:-1;;;;;4507:38:0;;::::1;::::0;4528:6;::::1;::::0;4507:38:::1;::::0;::::1;4556:6;:17:::0;;-1:-1:-1;;;;;;4556:17:0::1;-1:-1:-1::0;;;;;4556:17:0;;;::::1;::::0;;;::::1;::::0;;4337:244::o;17267:216::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17355:20:0;::::1;17347:50;;;;-1:-1:-1::0;;;17347:50:0::1;;;;;;;:::i;:::-;17408:10;:19:::0;;-1:-1:-1;;;;;;17408:19:0::1;;-1:-1:-1::0;;;;;17408:19:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;17457:10;::::1;;-1:-1:-1::0;17438:30:0;;;:18:::1;:30;::::0;;;;:37;;-1:-1:-1;;17438:37:0::1;-1:-1:-1::0;17438:37:0::1;::::0;;17267:216::o;20573:186::-;3864:7;3891:6;-1:-1:-1;;;;;3891:6:0;3298:10;4002:23;3994:68;;;;-1:-1:-1;;;3994:68:0;;;;;;;:::i;:::-;20659:17:::1;:33:::0;;;::::1;;-1:-1:-1::0;;;20659:33:0::1;-1:-1:-1::0;;;;20659:33:0;;::::1;;::::0;;20708:43:::1;::::0;::::1;::::0;::::1;::::0;20679:13;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;20708:43:0::1;;;;;;;;20573:186:::0;:::o;22772:296::-;-1:-1:-1;;;;;22899:19:0;;;;;;:44;;-1:-1:-1;;;;;;22922:21:0;;;;22899:44;22891:74;;;;-1:-1:-1;;;22891:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22976:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23028:32;;1780:25:1;;;23028:32:0;;1753:18:1;23028:32:0;;;;;;;22772:296;;;:::o;23076:2072::-;3864:7;3891:6;-1:-1:-1;;;;;23208:13:0;;;3891:6;;23208:13;;;;:46;;-1:-1:-1;23244:10:0;;-1:-1:-1;;;;;23238:16:0;;;23244:10;;;;;23238:16;;23208:46;:82;;;;-1:-1:-1;;;;;;23271:19:0;;23285:4;23271:19;;23208:82;:118;;;;-1:-1:-1;23313:13:0;;-1:-1:-1;;;;;23307:19:0;;;23313:13;;23307:19;;23208:118;:152;;;;-1:-1:-1;;;;;;23343:17:0;;14222:42;23343:17;;23208:152;:184;;;;-1:-1:-1;3864:7:0;3891:6;-1:-1:-1;;;;;23377:15:0;;;3891:6;;23377:15;;23208:184;23190:467;;;-1:-1:-1;;;;;16904:20:0;;23419:18;16904:20;;;:11;:20;;;;;;23519:9;;23495:19;23508:6;16904:20;23495:19;:::i;:::-;23494:34;;23468:177;;;;-1:-1:-1;;;23468:177:0;;9472:2:1;23468:177:0;;;9454:21:1;9511:2;9491:18;;;9484:30;9550:34;9530:18;;;9523:62;9621:34;9601:18;;;9594:62;-1:-1:-1;;;9672:19:1;;;9665:48;9730:19;;23468:177:0;9270:485:1;23468:177:0;23404:253;23190:467;3864:7;3891:6;-1:-1:-1;;;;;23766:15:0;;;3891:6;;23766:15;;;;:32;;-1:-1:-1;3864:7:0;3891:6;-1:-1:-1;;;;;23785:13:0;;;3891:6;;23785:13;;23766:32;23762:144;;;23831:12;;23821:6;:22;;23813:93;;;;-1:-1:-1;;;23813:93:0;;9962:2:1;23813:93:0;;;9944:21:1;10001:2;9981:18;;;9974:30;10040:34;10020:18;;;10013:62;10111:28;10091:18;;;10084:56;10157:19;;23813:93:0;9760:422:1;23813:93:0;23923:11;;;;23919:151;;;-1:-1:-1;;;;;23960:20:0;;;;;;:14;:20;;;;;;;;23959:21;:44;;;;-1:-1:-1;;;;;;23985:18:0;;;;;;:14;:18;;;;;;;;23984:19;23959:44;23951:107;;;;-1:-1:-1;;;23951:107:0;;10389:2:1;23951:107:0;;;10371:21:1;10428:2;10408:18;;;10401:30;10467:34;10447:18;;;10440:62;-1:-1:-1;;;10518:18:1;;;10511:48;10576:19;;23951:107:0;10187:414:1;23951:107:0;-1:-1:-1;;;;;24090:18:0;;;;;;:38;;-1:-1:-1;;;;;;24112:16:0;;;;24090:38;24082:72;;;;-1:-1:-1;;;24082:72:0;;10808:2:1;24082:72:0;;;10790:21:1;10847:2;10827:18;;;10820:30;-1:-1:-1;;;10866:18:1;;;10859:51;10927:18;;24082:72:0;10606:345:1;24082:72:0;24182:1;24173:6;:10;24165:60;;;;-1:-1:-1;;;24165:60:0;;11158:2:1;24165:60:0;;;11140:21:1;11197:2;11177:18;;;11170:30;11236:34;11216:18;;;11209:62;-1:-1:-1;;;11287:18:1;;;11280:35;11332:19;;24165:60:0;10956:401:1;24165:60:0;24253:11;;;-1:-1:-1;;;24253:11:0;;;;-1:-1:-1;;;24242:7:0;;;;:22;;;;:37;;-1:-1:-1;24269:10:0;;-1:-1:-1;;;24269:10:0;;;;24268:11;24242:37;:62;;;;-1:-1:-1;24291:13:0;;-1:-1:-1;;;;;24283:21:0;;;24291:13;;24283:21;;24242:62;:83;;;;-1:-1:-1;24308:17:0;;-1:-1:-1;;;24308:17:0;;;;24242:83;24238:433;;;24342:7;:11;;-1:-1:-1;;;;24342:11:0;;;24417:4;-1:-1:-1;16904:20:0;;;-1:-1:-1;16904:20:0;;;;;;24465:12;;24442:35;;24438:111;;;-1:-1:-1;24521:12:0;;24438:111;24567:24;;24563:97;;24612:32;24623:20;24612:10;:32::i;:::-;24327:344;24238:433;-1:-1:-1;;;;;24733:24:0;;24683:12;24733:24;;;:18;:24;;;;;;24698:4;;24733:24;;;:63;;-1:-1:-1;;;;;;24774:22:0;;;;;;:18;:22;;;;;;;;24733:63;:143;;;-1:-1:-1;24814:13:0;;;;:38;;;;-1:-1:-1;24839:13:0;;-1:-1:-1;;;;;24831:21:0;;;24839:13;;24831:21;;24814:38;:61;;;;-1:-1:-1;24862:13:0;;-1:-1:-1;;;;;24856:19:0;;;24862:13;;24856:19;;24814:61;24715:372;;;-1:-1:-1;24913:5:0;24715:372;;;24948:13;;-1:-1:-1;;;;;24948:13:0;;;24940:21;;;;24936:151;;24990:7;;24978:9;:19;24936:151;;;25025:13;;-1:-1:-1;;;;;25025:13:0;;;25019:19;;;;25015:72;;25067:8;;25055:9;:20;25015:72;25099:41;25114:4;25120:2;25124:6;25132:7;25099:14;:41::i;:::-;23179:1969;23076:2072;;;:::o;2691:240::-;2811:7;2872:12;2864:6;;;;2856:29;;;;-1:-1:-1;;;2856:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2907:5:0;;;2691:240::o;2267:98::-;2325:7;2352:5;2356:1;2352;:5;:::i;:::-;2345:12;2267:98;-1:-1:-1;;;2267:98:0:o;19765:226::-;15186:10;:17;;-1:-1:-1;;;;15186:17:0;-1:-1:-1;;;15186:17:0;;;19843:38:::1;19860:20:::0;19843:16:::1;:38::i;:::-;19959:10;::::0;19914:21:::1;::::0;19946:37:::1;::::0;19959:10:::1;::::0;::::1;-1:-1:-1::0;;;;;19959:10:0::1;19914:21:::0;19946:12:::1;:37::i;:::-;-1:-1:-1::0;;15226:10:0;:18;;-1:-1:-1;;;;15226:18:0;;;19765:226::o;25156:332::-;25312:7;25307:95;;25336:12;:10;:12::i;:::-;25307:95;;;25381:7;:9;;-1:-1:-1;;;25381:9:0;;;;;:7;:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;25307:95;25412:42;25428:6;25436:9;25447:6;25412:15;:42::i;:::-;25467:13;:11;:13::i;19999:471::-;20089:16;;;20103:1;20089:16;;;;;;;;20065:21;;20089:16;;;;;;;;;;-1:-1:-1;20089:16:0;20065:40;;20134:4;20116;20121:1;20116:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20116:23:0;;;-1:-1:-1;;;;;20116:23:0;;;;;20160:15;;;;;;;;;-1:-1:-1;;;;;20160:15:0;-1:-1:-1;;;;;20160:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20150:4;20155:1;20150:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20150:32:0;;;:7;;;;;;;;;:32;20225:15;;20193:62;;20210:4;;20225:15;;;;20243:11;20193:8;:62::i;:::-;20266:15;;:196;;-1:-1:-1;;;20266:196:0;;:15;;;;-1:-1:-1;;;;;20266:15:0;;:66;;:196;;20347:11;;20373:1;;20389:4;;20416;;20436:15;;20266:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20054:416;19999:471;:::o;19645:112::-;19726:23;;-1:-1:-1;;;;;19726:15:0;;;:23;;;;;19742:6;;19726:23;;;;19742:6;19726:15;:23;;;;;;;;;;;;;;;;;;;19404:101;19449:9;;19462:1;19449:14;19445:27;;19404:101::o;19445:27::-;19496:1;19484:9;:13;19404:101::o;25496:479::-;25627:23;25652:12;25668:19;25679:7;25668:10;:19::i;:::-;-1:-1:-1;;;;;25720:19:0;;;;;;:11;:19;;;;;;25626:61;;-1:-1:-1;25626:61:0;-1:-1:-1;25720:32:0;;25744:7;25720:23;:32::i;:::-;-1:-1:-1;;;;;25698:19:0;;;;;;;:11;:19;;;;;;:54;;;;25788:22;;;;;;;:43;;25815:15;25788:26;:43::i;:::-;-1:-1:-1;;;;;25763:22:0;;;;;;:11;:22;;;;;;:68;;;;25891:4;25871:26;;;;:36;;25902:4;25871:30;:36::i;:::-;25862:4;25842:26;;;;:11;:26;;;;;;;;;:65;;;;25923:44;1780:25:1;;;-1:-1:-1;;;;;25923:44:0;;;;;;;;;;1753:18:1;25923:44:0;;;;;;;25615:360;;25496:479;;;:::o;19513:124::-;19572:12;;19559:9;;:25;19555:38;;19513:124::o;19555:38::-;19617:12;;19605:9;:24;19513:124::o;25983:233::-;26042:7;26051;26071:12;26110:3;26097:9;;26087:7;:19;;;;:::i;:::-;26086:27;;;;:::i;:::-;26071:42;-1:-1:-1;26124:23:0;26150:17;:7;26071:42;26150:11;:17::i;:::-;26124:43;26203:4;;-1:-1:-1;25983:233:0;;-1:-1:-1;;;25983:233:0:o;2373:98::-;2431:7;2458:5;2462:1;2458;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:180::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;-1:-1:-1;1366:23:1;;1215:180;-1:-1:-1;1215:180:1:o;1816:615::-;1902:6;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2019:9;2006:23;2048:18;2089:2;2081:6;2078:14;2075:34;;;2105:1;2102;2095:12;2075:34;2143:6;2132:9;2128:22;2118:32;;2188:7;2181:4;2177:2;2173:13;2169:27;2159:55;;2210:1;2207;2200:12;2159:55;2250:2;2237:16;2276:2;2268:6;2265:14;2262:34;;;2292:1;2289;2282:12;2262:34;2345:7;2340:2;2330:6;2327:1;2323:14;2319:2;2315:23;2311:32;2308:45;2305:65;;;2366:1;2363;2356:12;2305:65;2397:2;2389:11;;;;;2419:6;;-1:-1:-1;1816:615:1;;-1:-1:-1;;;;1816:615:1:o;2436:247::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:52;;;2564:1;2561;2554:12;2516:52;2603:9;2590:23;2622:31;2647:5;2622:31;:::i;2688:456::-;2765:6;2773;2781;2834:2;2822:9;2813:7;2809:23;2805:32;2802:52;;;2850:1;2847;2840:12;2802:52;2889:9;2876:23;2908:31;2933:5;2908:31;:::i;:::-;2958:5;-1:-1:-1;3015:2:1;3000:18;;2987:32;3028:33;2987:32;3028:33;:::i;:::-;2688:456;;3080:7;;-1:-1:-1;;;3134:2:1;3119:18;;;;3106:32;;2688:456::o;3546:248::-;3614:6;3622;3675:2;3663:9;3654:7;3650:23;3646:32;3643:52;;;3691:1;3688;3681:12;3643:52;-1:-1:-1;;3714:23:1;;;3784:2;3769:18;;;3756:32;;-1:-1:-1;3546:248:1:o;3799:269::-;3856:6;3909:2;3897:9;3888:7;3884:23;3880:32;3877:52;;;3925:1;3922;3915:12;3877:52;3964:9;3951:23;4014:4;4007:5;4003:16;3996:5;3993:27;3983:55;;4034:1;4031;4024:12;4073:118;4159:5;4152:13;4145:21;4138:5;4135:32;4125:60;;4181:1;4178;4171:12;4196:241;4252:6;4305:2;4293:9;4284:7;4280:23;4276:32;4273:52;;;4321:1;4318;4311:12;4273:52;4360:9;4347:23;4379:28;4401:5;4379:28;:::i;4442:388::-;4510:6;4518;4571:2;4559:9;4550:7;4546:23;4542:32;4539:52;;;4587:1;4584;4577:12;4539:52;4626:9;4613:23;4645:31;4670:5;4645:31;:::i;:::-;4695:5;-1:-1:-1;4752:2:1;4737:18;;4724:32;4765:33;4724:32;4765:33;:::i;:::-;4817:7;4807:17;;;4442:388;;;;;:::o;5095:356::-;5297:2;5279:21;;;5316:18;;;5309:30;5375:34;5370:2;5355:18;;5348:62;5442:2;5427:18;;5095:356::o;5456:354::-;5658:2;5640:21;;;5697:2;5677:18;;;5670:30;5736:32;5731:2;5716:18;;5709:60;5801:2;5786:18;;5456:354::o;5815:127::-;5876:10;5871:3;5867:20;5864:1;5857:31;5907:4;5904:1;5897:15;5931:4;5928:1;5921:15;5947:168;6020:9;;;6051;;6068:15;;;6062:22;;6048:37;6038:71;;6089:18;;:::i;6120:217::-;6160:1;6186;6176:132;;6230:10;6225:3;6221:20;6218:1;6211:31;6265:4;6262:1;6255:15;6293:4;6290:1;6283:15;6176:132;-1:-1:-1;6322:9:1;;6120:217::o;6342:127::-;6403:10;6398:3;6394:20;6391:1;6384:31;6434:4;6431:1;6424:15;6458:4;6455:1;6448:15;6474:128;6541:9;;;6562:11;;;6559:37;;;6576:18;;:::i;6607:341::-;6809:2;6791:21;;;6848:2;6828:18;;;6821:30;-1:-1:-1;;;6882:2:1;6867:18;;6860:47;6939:2;6924:18;;6607:341::o;7309:184::-;7379:6;7432:2;7420:9;7411:7;7407:23;7403:32;7400:52;;;7448:1;7445;7438:12;7400:52;-1:-1:-1;7471:16:1;;7309:184;-1:-1:-1;7309:184:1:o;7777:245::-;7844:6;7897:2;7885:9;7876:7;7872:23;7868:32;7865:52;;;7913:1;7910;7903:12;7865:52;7945:9;7939:16;7964:28;7986:5;7964:28;:::i;8027:125::-;8092:9;;;8113:10;;;8110:36;;;8126:18;;:::i;11362:175::-;11399:3;11443:4;11436:5;11432:16;11472:4;11463:7;11460:17;11457:43;;11480:18;;:::i;:::-;11529:1;11516:15;;11362:175;-1:-1:-1;;11362:175:1:o;11674:251::-;11744:6;11797:2;11785:9;11776:7;11772:23;11768:32;11765:52;;;11813:1;11810;11803:12;11765:52;11845:9;11839:16;11864:31;11889:5;11864:31;:::i;11930:980::-;12192:4;12240:3;12229:9;12225:19;12271:6;12260:9;12253:25;12297:2;12335:6;12330:2;12319:9;12315:18;12308:34;12378:3;12373:2;12362:9;12358:18;12351:31;12402:6;12437;12431:13;12468:6;12460;12453:22;12506:3;12495:9;12491:19;12484:26;;12545:2;12537:6;12533:15;12519:29;;12566:1;12576:195;12590:6;12587:1;12584:13;12576:195;;;12655:13;;-1:-1:-1;;;;;12651:39:1;12639:52;;12746:15;;;;12711:12;;;;12687:1;12605:9;12576:195;;;-1:-1:-1;;;;;;;12827:32:1;;;;12822:2;12807:18;;12800:60;-1:-1:-1;;;12891:3:1;12876:19;12869:35;12788:3;11930:980;-1:-1:-1;;;11930:980:1:o

Swarm Source

ipfs://799fc4f9cc28a02c3c52e22c74d9238c91a697149b2b8cb43ff6a39f7bda8018
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.