ETH Price: $2,531.51 (+3.70%)

Token

KEI finance (KEI)
 

Overview

Max Total Supply

1,000,000,000 KEI

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
dangai.eth
Balance
13,356,382.418649315 KEI

Value
$0.00
0x2e754b9859ff6c47c3adaf720b6a809282c5daa2
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KEI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-13
*/

/**
KEI finance | Cross-Chain Algorithmic Trading Pools & Crypto Payment Solution. 
Pay Direct From Your Crypto Wallet

Web: https://keifinance.org
Tg: https://t.me/kei_finance_official
X: https://twitter.com/KEI_FINANCE_ORG
M: https://medium.com/@kei.finance
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IUniswapRouterV1 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapRouterV2 is IUniswapRouterV1 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

library AddressLibrary {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "AddressLibrary: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "AddressLibrary: 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, "AddressLibrary: 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, "AddressLibrary: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "AddressLibrary: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        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 KEI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using AddressLibrary for address;
    
    string private _name = "KEI finance";
    string private _symbol = "KEI";
    uint8 private _decimals = 9;

    uint256 private _supply = 10 ** 9 * 10**9;
    uint256 public maxTransaction = 15 * 10 ** 6 * 10**9;
    uint256 public maxWalletSize = 15 * 10 ** 6 * 10**9;
    uint256 private _feeThreshold = 10 ** 5 * 10**9; 

    address payable private teamAddress = payable(0x784AB60599Ca134924Da479C0bdB5Edfc09fb6EC);
    address payable private marketingAddress = payable(0x784AB60599Ca134924Da479C0bdB5Edfc09fb6EC);

    uint256 public buyLiquidityFee = 0;
    uint256 public buyMarketingFee = 29;
    uint256 public buyDevFee = 0;

    uint256 public sellLpFees = 0;
    uint256 public sellMktFees = 29;
    uint256 public sellDevFees = 0;

    uint256 public lpDivide = 0;
    uint256 public marketingDivide = 10;
    uint256 public devDivide = 0;

    uint256 public tBuyFees = 29;
    uint256 public tSellFees = 29;
    uint256 public totalShares = 10;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _feeExcludes;
    mapping (address => bool) public _maxWalletExcludes;
    mapping (address => bool) public _maxTxExcludes;
    mapping (address => bool) public _ammPair;

    IUniswapRouterV2 public routerV2;
    address public pairV2;
    
    bool _swapping;
    bool public swapEnabled = true;
    bool public hasSwapThreshold = false;
    bool public hasMaxWallet = true;
    
    modifier lockSwap {
        _swapping = true;
        _;
        _swapping = false;
    }
    
    constructor () {
        IUniswapRouterV2 _uniswapV2Router = IUniswapRouterV2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        pairV2 = IUniswapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        routerV2 = _uniswapV2Router;
        _allowances[address(this)][address(routerV2)] = _supply;
        _feeExcludes[owner()] = true;
        _feeExcludes[teamAddress] = true;
        _feeExcludes[marketingAddress] = true;
        tBuyFees = buyLiquidityFee.add(buyMarketingFee).add(buyDevFee);
        tSellFees = sellLpFees.add(sellMktFees).add(sellDevFees);
        totalShares = lpDivide.add(marketingDivide).add(devDivide);
        _maxWalletExcludes[owner()] = true;
        _maxWalletExcludes[address(pairV2)] = true;
        _maxWalletExcludes[address(this)] = true;
        _maxTxExcludes[owner()] = true;
        _maxTxExcludes[teamAddress] = true;
        _maxTxExcludes[marketingAddress] = true;
        _maxTxExcludes[address(this)] = true;
        _ammPair[address(pairV2)] = true;
        _balances[_msgSender()] = _supply;
        emit Transfer(address(0), _msgSender(), _supply);
    }

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

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

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

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

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

    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 sendETHFee(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

     //to recieve ETH from routerV2 when swaping
    receive() external payable {}

    function _transferStandard(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapBack(uint256 tAmount) private lockSwap {
        
        uint256 tokensForLP = tAmount.mul(lpDivide).div(totalShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensToETH(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = totalShares.sub(lpDivide.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(lpDivide).div(totalETHFee).div(2);
        uint256 amountETHDevelopment = amountReceived.mul(devDivide).div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHDevelopment);

        if(amountETHMarketing > 0)
            sendETHFee(teamAddress, amountETHMarketing);

        if(amountETHDevelopment > 0)
            sendETHFee(marketingAddress, amountETHDevelopment);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }
    
    function swapTokensToETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = routerV2.WETH();

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

        // make the swapBack
        routerV2.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(_ammPair[sender]) {
            feeAmount = amount.mul(tBuyFees).div(100);
        }
        else if(_ammPair[recipient]) {
            feeAmount = amount.mul(tSellFees).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function removeLimits() external onlyOwner {
        maxTransaction = _supply;
        hasMaxWallet = false;
        buyMarketingFee = 1;
        sellMktFees = 1;
        tBuyFees = 1;
        tSellFees = 1;
    }

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

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

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

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

    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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(_swapping)
        { 
            return _transferStandard(sender, recipient, amount); 
        }
        else
        {
            if(!_maxTxExcludes[sender] && !_maxTxExcludes[recipient]) {
                require(amount <= maxTransaction, "Transfer amount exceeds the maxTransaction.");
            }            

            uint256 swapAmount = balanceOf(address(this));
            bool minimumSwap = swapAmount >= _feeThreshold;
            
            if (minimumSwap && !_swapping && _ammPair[recipient] && swapEnabled && !_feeExcludes[sender] && amount > _feeThreshold) 
            {
                if(hasSwapThreshold)
                    swapAmount = _feeThreshold;
                swapBack(swapAmount);    
            }

            uint256 receiverAmount = (_feeExcludes[sender] || _feeExcludes[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(hasMaxWallet && !_maxWalletExcludes[recipient])
                require(balanceOf(recipient).add(receiverAmount) <= maxWalletSize);

            uint256 sAmount = (!hasMaxWallet && _feeExcludes[sender]) ? amount.sub(receiverAmount) : amount;
            _balances[sender] = _balances[sender].sub(sAmount, "Insufficient Balance");
            _balances[recipient] = _balances[recipient].add(receiverAmount);

            emit Transfer(sender, recipient, receiverAmount);
            return true;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_ammPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeExcludes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_maxTxExcludes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_maxWalletExcludes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devDivide","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasSwapThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpDivide","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingDivide","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairV2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerV2","outputs":[{"internalType":"contract IUniswapRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLpFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMktFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

60c0604052600b60809081526a4b45492066696e616e636560a81b60a0526002906200002c90826200068b565b50604080518082019091526003808252624b454960e81b6020830152906200005590826200068b565b5060048054600960ff199091168117909155670de0b6b3a764000060055566354a6ba7a180006006819055600755655af3107a4000600855805473784ab60599ca134924da479c0bdb5edfc09fb6ec6001600160a01b03199182168117909255600a805490911690911781556000600b819055601d600c819055600d829055600e829055600f8190556010829055601182905560128390556013919091556014819055601555601655601e805462ffffff60a81b19166201000160a81b1790553480156200012257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000757565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000256919062000757565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ca919062000757565b601e80546001600160a01b039283166001600160a01b031991821617909155601d8054928416929091168217905560055430600090815260186020908152604080832094835293905291822055600190601990620003306000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600954821681526019909352818320805485166001908117909155600a54909116835291208054909216179055600d54600c54600b54620003ad9291620003a6919062000577565b9062000577565b601455601054600f54600e54620003cb9291620003a6919062000577565b601555601354601254601154620003e99291620003a6919062000577565b6016556001601a6000620004056000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601e549091168152601a90925280822080548416600190811790915530835290822080549093168117909255601b90620004756000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560095482168152601b8452828120805486166001908117909155600a548316825283822080548716821790553082528382208054871682179055601e549092168152601c90935290822080549093161790915560055490601790620005053390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200056891815260200190565b60405180910390a350620007a4565b60008062000586838562000782565b905083811015620005dd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200061157607f821691505b6020821081036200063257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068657600081815260208120601f850160051c81016020861015620006615750805b601f850160051c820191505b8181101562000682578281556001016200066d565b5050505b505050565b81516001600160401b03811115620006a757620006a7620005e6565b620006bf81620006b88454620005fc565b8462000638565b602080601f831160018114620006f75760008415620006de5750858301515b600019600386901b1c1916600185901b17855562000682565b600085815260208120601f198616915b82811015620007285788860151825594840194600190910190840162000707565b5085821015620007475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200076a57600080fd5b81516001600160a01b0381168114620005dd57600080fd5b80820180821115620005e057634e487b7160e01b600052601160045260246000fd5b6119b080620007b46000396000f3fe6080604052600436106102135760003560e01c80637e42a7a111610118578063b0d60853116100a0578063cc1977411161006f578063cc197741146105e3578063dd62ed3e14610613578063f11a24d314610659578063f2fde38b1461066f578063f819c74b1461068f57600080fd5b8063b0d6085314610571578063c0cbfdf914610587578063c3f58ab11461059d578063c3f70b52146105cd57600080fd5b806395d89b41116100e757806395d89b41146104e05780639c3b4fdc146104f55780639d90e1ea1461050b578063a9059cbb14610521578063ac5fe32d1461054157600080fd5b80637e42a7a11461046b5780638da5cb5b1461048c5780638f3fa860146104aa5780638fffabed146104c057600080fd5b80633a98ef391161019b57806370a082311161016a57806370a08231146103dd578063715018a614610413578063751039fc1461042a5780637bce5a041461043f5780637e247f5e1461045557600080fd5b80633a98ef3914610358578063502f74461461036e5780636d829cab146103a65780636ddd1713146103bc57600080fd5b806318160ddd116101e257806318160ddd146102cb578063197e14d8146102ea5780631c16be001461030057806323b872dd14610316578063313ce5671461033657600080fd5b806306fdde031461021f57806308824ab41461024a578063095ea7b31461027b5780630c7bfdf11461029b57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106a5565b6040516102419190611673565b60405180910390f35b34801561025657600080fd5b50601e5461026b90600160b01b900460ff1681565b6040519015158152602001610241565b34801561028757600080fd5b5061026b6102963660046116d9565b610737565b3480156102a757600080fd5b5061026b6102b6366004611705565b601a6020526000908152604090205460ff1681565b3480156102d757600080fd5b506005545b604051908152602001610241565b3480156102f657600080fd5b506102dc60145481565b34801561030c57600080fd5b506102dc60105481565b34801561032257600080fd5b5061026b610331366004611722565b61074e565b34801561034257600080fd5b5060045460405160ff9091168152602001610241565b34801561036457600080fd5b506102dc60165481565b34801561037a57600080fd5b50601d5461038e906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156103b257600080fd5b506102dc60135481565b3480156103c857600080fd5b50601e5461026b90600160a81b900460ff1681565b3480156103e957600080fd5b506102dc6103f8366004611705565b6001600160a01b031660009081526017602052604090205490565b34801561041f57600080fd5b506104286107b9565b005b34801561043657600080fd5b50610428610836565b34801561044b57600080fd5b506102dc600c5481565b34801561046157600080fd5b506102dc600e5481565b34801561047757600080fd5b50601e5461026b90600160b81b900460ff1681565b34801561049857600080fd5b506000546001600160a01b031661038e565b3480156104b657600080fd5b506102dc60075481565b3480156104cc57600080fd5b50601e5461038e906001600160a01b031681565b3480156104ec57600080fd5b50610234610889565b34801561050157600080fd5b506102dc600d5481565b34801561051757600080fd5b506102dc60115481565b34801561052d57600080fd5b5061026b61053c3660046116d9565b610898565b34801561054d57600080fd5b5061026b61055c366004611705565b601c6020526000908152604090205460ff1681565b34801561057d57600080fd5b506102dc60125481565b34801561059357600080fd5b506102dc600f5481565b3480156105a957600080fd5b5061026b6105b8366004611705565b60196020526000908152604090205460ff1681565b3480156105d957600080fd5b506102dc60065481565b3480156105ef57600080fd5b5061026b6105fe366004611705565b601b6020526000908152604090205460ff1681565b34801561061f57600080fd5b506102dc61062e366004611763565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b34801561066557600080fd5b506102dc600b5481565b34801561067b57600080fd5b5061042861068a366004611705565b6108a5565b34801561069b57600080fd5b506102dc60155481565b6060600280546106b49061179c565b80601f01602080910402602001604051908101604052809291908181526020018280546106e09061179c565b801561072d5780601f106107025761010080835404028352916020019161072d565b820191906000526020600020905b81548152906001019060200180831161071057829003601f168201915b5050505050905090565b600061074433848461098f565b5060015b92915050565b600061075b848484610ab3565b506107ae84336107a985604051806060016040528060288152602001611953602891396001600160a01b038a1660009081526018602090815260408083203384529091529020549190610f1a565b61098f565b5060015b9392505050565b6000546001600160a01b031633146107ec5760405162461bcd60e51b81526004016107e3906117d6565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108605760405162461bcd60e51b81526004016107e3906117d6565b600554600655601e805460ff60b81b191690556001600c819055600f8190556014819055601555565b6060600380546106b49061179c565b60006107ae338484610ab3565b6000546001600160a01b031633146108cf5760405162461bcd60e51b81526004016107e3906117d6565b6001600160a01b0381166109345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109f15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e3565b6001600160a01b038216610a525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e3565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610b195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e3565b6001600160a01b038316610b7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e3565b601e54600160a01b900460ff1615610b9f57610b98848484610f54565b90506107b2565b6001600160a01b0384166000908152601b602052604090205460ff16158015610be157506001600160a01b0383166000908152601b602052604090205460ff16155b15610c4c57600654821115610c4c5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201526a3930b739b0b1ba34b7b71760a91b60648201526084016107e3565b3060009081526017602052604090205460085481108015908190610c7a5750601e54600160a01b900460ff16155b8015610c9e57506001600160a01b0385166000908152601c602052604090205460ff165b8015610cb35750601e54600160a81b900460ff165b8015610cd857506001600160a01b03861660009081526019602052604090205460ff16155b8015610ce5575060085484115b15610d0b57601e54600160b01b900460ff1615610d025760085491505b610d0b8261103a565b6001600160a01b03861660009081526019602052604081205460ff1680610d4a57506001600160a01b03861660009081526019602052604090205460ff165b610d5e57610d59878787611170565b610d60565b845b601e54909150600160b81b900460ff168015610d9557506001600160a01b0386166000908152601a602052604090205460ff16155b15610dd157600754610dc682610dc0896001600160a01b031660009081526017602052604090205490565b90611276565b1115610dd157600080fd5b601e54600090600160b81b900460ff16158015610e0657506001600160a01b03881660009081526019602052604090205460ff165b610e105785610e1a565b610e1a86836112d5565b9050610e828160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250601760008c6001600160a01b03166001600160a01b0316815260200190815260200160002054610f1a9092919063ffffffff16565b6001600160a01b03808a166000908152601760205260408082209390935590891681522054610eb19083611276565b6001600160a01b0380891660008181526017602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f059086815260200190565b60405180910390a360019450505050506107b2565b60008184841115610f3e5760405162461bcd60e51b81526004016107e39190611673565b506000610f4b8486611821565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601790915291822054610fa5918490610f1a565b6001600160a01b038086166000908152601760205260408082209390935590851681522054610fd49083611276565b6001600160a01b0380851660008181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110289086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790556016546011546000916110709160029161106a9182908790611317565b90611399565b9050600061107e83836112d5565b9050611089816113db565b60115447906000906110a9906110a0906002611399565b601654906112d5565b905060006110cb600261106a8461106a6011548861131790919063ffffffff16565b905060006110e88361106a6013548761131790919063ffffffff16565b90506000611100826110fa87866112d5565b906112d5565b9050801561111e5760095461111e906001600160a01b031682611535565b811561113a57600a5461113a906001600160a01b031683611535565b60008311801561114a5750600087115b15611159576111598784611570565b5050601e805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152601c6020526040812054819060ff16156111b4576111ad606461106a6014548661131790919063ffffffff16565b90506111f2565b6001600160a01b0384166000908152601c602052604090205460ff16156111f2576111ef606461106a6015548661131790919063ffffffff16565b90505b801561126c57306000908152601760205260409020546112129082611276565b30600081815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112639085815260200190565b60405180910390a35b610f4b83826112d5565b6000806112838385611834565b9050838110156107b25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107e3565b60006107b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f1a565b60008260000361132957506000610748565b60006113358385611847565b905082611342858361185e565b146107b25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107e3565b60006107b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611645565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061141057611410611880565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190611896565b816001815181106114a0576114a0611880565b6001600160a01b039283166020918202929092010152601d546114c6913091168461098f565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906114ff9085906000908690309042906004016118b3565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561156b573d6000803e3d6000fd5b505050565b601d546115889030906001600160a01b03168461098f565b601d546001600160a01b031663f305d7198230856000806115b16000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611619573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163e9190611924565b5050505050565b600081836116665760405162461bcd60e51b81526004016107e39190611673565b506000610f4b848661185e565b600060208083528351808285015260005b818110156116a057858101830151858201604001528201611684565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116d657600080fd5b50565b600080604083850312156116ec57600080fd5b82356116f7816116c1565b946020939093013593505050565b60006020828403121561171757600080fd5b81356107b2816116c1565b60008060006060848603121561173757600080fd5b8335611742816116c1565b92506020840135611752816116c1565b929592945050506040919091013590565b6000806040838503121561177657600080fd5b8235611781816116c1565b91506020830135611791816116c1565b809150509250929050565b600181811c908216806117b057607f821691505b6020821081036117d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107485761074861180b565b808201808211156107485761074861180b565b80820281158282048414176107485761074861180b565b60008261187b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118a857600080fd5b81516107b2816116c1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119035784516001600160a01b0316835293830193918301916001016118de565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561193957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122014523f7a676703f6b1839407cd1e0f89208a4ab6932e2170bb8bb9d6e18deb4264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80637e42a7a111610118578063b0d60853116100a0578063cc1977411161006f578063cc197741146105e3578063dd62ed3e14610613578063f11a24d314610659578063f2fde38b1461066f578063f819c74b1461068f57600080fd5b8063b0d6085314610571578063c0cbfdf914610587578063c3f58ab11461059d578063c3f70b52146105cd57600080fd5b806395d89b41116100e757806395d89b41146104e05780639c3b4fdc146104f55780639d90e1ea1461050b578063a9059cbb14610521578063ac5fe32d1461054157600080fd5b80637e42a7a11461046b5780638da5cb5b1461048c5780638f3fa860146104aa5780638fffabed146104c057600080fd5b80633a98ef391161019b57806370a082311161016a57806370a08231146103dd578063715018a614610413578063751039fc1461042a5780637bce5a041461043f5780637e247f5e1461045557600080fd5b80633a98ef3914610358578063502f74461461036e5780636d829cab146103a65780636ddd1713146103bc57600080fd5b806318160ddd116101e257806318160ddd146102cb578063197e14d8146102ea5780631c16be001461030057806323b872dd14610316578063313ce5671461033657600080fd5b806306fdde031461021f57806308824ab41461024a578063095ea7b31461027b5780630c7bfdf11461029b57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106a5565b6040516102419190611673565b60405180910390f35b34801561025657600080fd5b50601e5461026b90600160b01b900460ff1681565b6040519015158152602001610241565b34801561028757600080fd5b5061026b6102963660046116d9565b610737565b3480156102a757600080fd5b5061026b6102b6366004611705565b601a6020526000908152604090205460ff1681565b3480156102d757600080fd5b506005545b604051908152602001610241565b3480156102f657600080fd5b506102dc60145481565b34801561030c57600080fd5b506102dc60105481565b34801561032257600080fd5b5061026b610331366004611722565b61074e565b34801561034257600080fd5b5060045460405160ff9091168152602001610241565b34801561036457600080fd5b506102dc60165481565b34801561037a57600080fd5b50601d5461038e906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156103b257600080fd5b506102dc60135481565b3480156103c857600080fd5b50601e5461026b90600160a81b900460ff1681565b3480156103e957600080fd5b506102dc6103f8366004611705565b6001600160a01b031660009081526017602052604090205490565b34801561041f57600080fd5b506104286107b9565b005b34801561043657600080fd5b50610428610836565b34801561044b57600080fd5b506102dc600c5481565b34801561046157600080fd5b506102dc600e5481565b34801561047757600080fd5b50601e5461026b90600160b81b900460ff1681565b34801561049857600080fd5b506000546001600160a01b031661038e565b3480156104b657600080fd5b506102dc60075481565b3480156104cc57600080fd5b50601e5461038e906001600160a01b031681565b3480156104ec57600080fd5b50610234610889565b34801561050157600080fd5b506102dc600d5481565b34801561051757600080fd5b506102dc60115481565b34801561052d57600080fd5b5061026b61053c3660046116d9565b610898565b34801561054d57600080fd5b5061026b61055c366004611705565b601c6020526000908152604090205460ff1681565b34801561057d57600080fd5b506102dc60125481565b34801561059357600080fd5b506102dc600f5481565b3480156105a957600080fd5b5061026b6105b8366004611705565b60196020526000908152604090205460ff1681565b3480156105d957600080fd5b506102dc60065481565b3480156105ef57600080fd5b5061026b6105fe366004611705565b601b6020526000908152604090205460ff1681565b34801561061f57600080fd5b506102dc61062e366004611763565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b34801561066557600080fd5b506102dc600b5481565b34801561067b57600080fd5b5061042861068a366004611705565b6108a5565b34801561069b57600080fd5b506102dc60155481565b6060600280546106b49061179c565b80601f01602080910402602001604051908101604052809291908181526020018280546106e09061179c565b801561072d5780601f106107025761010080835404028352916020019161072d565b820191906000526020600020905b81548152906001019060200180831161071057829003601f168201915b5050505050905090565b600061074433848461098f565b5060015b92915050565b600061075b848484610ab3565b506107ae84336107a985604051806060016040528060288152602001611953602891396001600160a01b038a1660009081526018602090815260408083203384529091529020549190610f1a565b61098f565b5060015b9392505050565b6000546001600160a01b031633146107ec5760405162461bcd60e51b81526004016107e3906117d6565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108605760405162461bcd60e51b81526004016107e3906117d6565b600554600655601e805460ff60b81b191690556001600c819055600f8190556014819055601555565b6060600380546106b49061179c565b60006107ae338484610ab3565b6000546001600160a01b031633146108cf5760405162461bcd60e51b81526004016107e3906117d6565b6001600160a01b0381166109345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109f15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e3565b6001600160a01b038216610a525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e3565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610b195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e3565b6001600160a01b038316610b7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e3565b601e54600160a01b900460ff1615610b9f57610b98848484610f54565b90506107b2565b6001600160a01b0384166000908152601b602052604090205460ff16158015610be157506001600160a01b0383166000908152601b602052604090205460ff16155b15610c4c57600654821115610c4c5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201526a3930b739b0b1ba34b7b71760a91b60648201526084016107e3565b3060009081526017602052604090205460085481108015908190610c7a5750601e54600160a01b900460ff16155b8015610c9e57506001600160a01b0385166000908152601c602052604090205460ff165b8015610cb35750601e54600160a81b900460ff165b8015610cd857506001600160a01b03861660009081526019602052604090205460ff16155b8015610ce5575060085484115b15610d0b57601e54600160b01b900460ff1615610d025760085491505b610d0b8261103a565b6001600160a01b03861660009081526019602052604081205460ff1680610d4a57506001600160a01b03861660009081526019602052604090205460ff165b610d5e57610d59878787611170565b610d60565b845b601e54909150600160b81b900460ff168015610d9557506001600160a01b0386166000908152601a602052604090205460ff16155b15610dd157600754610dc682610dc0896001600160a01b031660009081526017602052604090205490565b90611276565b1115610dd157600080fd5b601e54600090600160b81b900460ff16158015610e0657506001600160a01b03881660009081526019602052604090205460ff165b610e105785610e1a565b610e1a86836112d5565b9050610e828160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250601760008c6001600160a01b03166001600160a01b0316815260200190815260200160002054610f1a9092919063ffffffff16565b6001600160a01b03808a166000908152601760205260408082209390935590891681522054610eb19083611276565b6001600160a01b0380891660008181526017602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f059086815260200190565b60405180910390a360019450505050506107b2565b60008184841115610f3e5760405162461bcd60e51b81526004016107e39190611673565b506000610f4b8486611821565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601790915291822054610fa5918490610f1a565b6001600160a01b038086166000908152601760205260408082209390935590851681522054610fd49083611276565b6001600160a01b0380851660008181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110289086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790556016546011546000916110709160029161106a9182908790611317565b90611399565b9050600061107e83836112d5565b9050611089816113db565b60115447906000906110a9906110a0906002611399565b601654906112d5565b905060006110cb600261106a8461106a6011548861131790919063ffffffff16565b905060006110e88361106a6013548761131790919063ffffffff16565b90506000611100826110fa87866112d5565b906112d5565b9050801561111e5760095461111e906001600160a01b031682611535565b811561113a57600a5461113a906001600160a01b031683611535565b60008311801561114a5750600087115b15611159576111598784611570565b5050601e805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152601c6020526040812054819060ff16156111b4576111ad606461106a6014548661131790919063ffffffff16565b90506111f2565b6001600160a01b0384166000908152601c602052604090205460ff16156111f2576111ef606461106a6015548661131790919063ffffffff16565b90505b801561126c57306000908152601760205260409020546112129082611276565b30600081815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112639085815260200190565b60405180910390a35b610f4b83826112d5565b6000806112838385611834565b9050838110156107b25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107e3565b60006107b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f1a565b60008260000361132957506000610748565b60006113358385611847565b905082611342858361185e565b146107b25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107e3565b60006107b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611645565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061141057611410611880565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190611896565b816001815181106114a0576114a0611880565b6001600160a01b039283166020918202929092010152601d546114c6913091168461098f565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906114ff9085906000908690309042906004016118b3565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561156b573d6000803e3d6000fd5b505050565b601d546115889030906001600160a01b03168461098f565b601d546001600160a01b031663f305d7198230856000806115b16000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611619573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163e9190611924565b5050505050565b600081836116665760405162461bcd60e51b81526004016107e39190611673565b506000610f4b848661185e565b600060208083528351808285015260005b818110156116a057858101830151858201604001528201611684565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116d657600080fd5b50565b600080604083850312156116ec57600080fd5b82356116f7816116c1565b946020939093013593505050565b60006020828403121561171757600080fd5b81356107b2816116c1565b60008060006060848603121561173757600080fd5b8335611742816116c1565b92506020840135611752816116c1565b929592945050506040919091013590565b6000806040838503121561177657600080fd5b8235611781816116c1565b91506020830135611791816116c1565b809150509250929050565b600181811c908216806117b057607f821691505b6020821081036117d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107485761074861180b565b808201808211156107485761074861180b565b80820281158282048414176107485761074861180b565b60008261187b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118a857600080fd5b81516107b2816116c1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119035784516001600160a01b0316835293830193918301916001016118de565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561193957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122014523f7a676703f6b1839407cd1e0f89208a4ab6932e2170bb8bb9d6e18deb4264736f6c63430008130033

Deployed Bytecode Sourcemap

12222:9877:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15192:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13812:36;;;;;;;;;;-1:-1:-1;13812:36:0;;;;-1:-1:-1;;;13812:36:0;;;;;;;;;732:14:1;;725:22;707:41;;695:2;680:18;13812:36:0;567:187:1;15850:161:0;;;;;;;;;;-1:-1:-1;15850:161:0;;;;;:::i;:::-;;:::i;13519:51::-;;;;;;;;;;-1:-1:-1;13519:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15469:95;;;;;;;;;;-1:-1:-1;15549:7:0;;15469:95;;;1613:25:1;;;1601:2;1586:18;15469:95:0;1467:177:1;13231:28:0;;;;;;;;;;;;;;;;13079:30;;;;;;;;;;;;;;;;20027:313;;;;;;;;;;-1:-1:-1;20027:313:0;;;;;:::i;:::-;;:::i;15378:83::-;;;;;;;;;;-1:-1:-1;15444:9:0;;15378:83;;15444:9;;;;2252:36:1;;2240:2;2225:18;15378:83:0;2110:184:1;13302:31:0;;;;;;;;;;;;;;;;13681:32;;;;;;;;;;-1:-1:-1;13681:32:0;;;;-1:-1:-1;;;;;13681:32:0;;;;;;-1:-1:-1;;;;;2487:32:1;;;2469:51;;2457:2;2442:18;13681:32:0;2299:227:1;13194:28:0;;;;;;;;;;;;;;;;13775:30;;;;;;;;;;-1:-1:-1;13775:30:0;;;;-1:-1:-1;;;13775:30:0;;;;;;15572:119;;;;;;;;;;-1:-1:-1;15572:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15665:18:0;15638:7;15665:18;;;:9;:18;;;;;;;15572:119;3548:148;;;;;;;;;;;;;:::i;:::-;;18947:220;;;;;;;;;;;;;:::i;12926:35::-;;;;;;;;;;;;;;;;13005:29;;;;;;;;;;;;;;;;13855:31;;;;;;;;;;-1:-1:-1;13855:31:0;;;;-1:-1:-1;;;13855:31:0;;;;;;3323:79;;;;;;;;;;-1:-1:-1;3361:7:0;3388:6;-1:-1:-1;;;;;3388:6:0;3323:79;;12571:51;;;;;;;;;;;;;;;;13720:21;;;;;;;;;;-1:-1:-1;13720:21:0;;;;-1:-1:-1;;;;;13720:21:0;;;15283:87;;;;;;;;;;;;;:::i;12968:28::-;;;;;;;;;;;;;;;;13118:27;;;;;;;;;;;;;;;;18768:167;;;;;;;;;;-1:-1:-1;18768:167:0;;;;;:::i;:::-;;:::i;13631:41::-;;;;;;;;;;-1:-1:-1;13631:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13152:35;;;;;;;;;;;;;;;;13041:31;;;;;;;;;;;;;;;;13467:45;;;;;;;;;;-1:-1:-1;13467:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12512:52;;;;;;;;;;;;;;;;13577:47;;;;;;;;;;-1:-1:-1;13577:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15699:143;;;;;;;;;;-1:-1:-1;15699:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15807:18:0;;;15780:7;15807:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15699:143;12885:34;;;;;;;;;;;;;;;;3704:244;;;;;;;;;;-1:-1:-1;3704:244:0;;;;;:::i;:::-;;:::i;13266:29::-;;;;;;;;;;;;;;;;15192:83;15229:13;15262:5;15255:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15192:83;:::o;15850:161::-;15925:4;15942:39;2699:10;15965:7;15974:6;15942:8;:39::i;:::-;-1:-1:-1;15999:4:0;15850:161;;;;;:::o;20027:313::-;20125:4;20142:36;20152:6;20160:9;20171:6;20142:9;:36::i;:::-;-1:-1:-1;20189:121:0;20198:6;2699:10;20220:89;20258:6;20220:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20220:19:0;;;;;;:11;:19;;;;;;;;2699:10;20220:33;;;;;;;;;;:37;:89::i;:::-;20189:8;:121::i;:::-;-1:-1:-1;20328:4:0;20027:313;;;;;;:::o;3548:148::-;3457:6;;-1:-1:-1;;;;;3457:6:0;2699:10;3457:22;3449:67;;;;-1:-1:-1;;;3449:67:0;;;;;;;:::i;:::-;;;;;;;;;3655:1:::1;3639:6:::0;;3618:40:::1;::::0;-1:-1:-1;;;;;3639:6:0;;::::1;::::0;3618:40:::1;::::0;3655:1;;3618:40:::1;3686:1;3669:19:::0;;-1:-1:-1;;;;;;3669:19:0::1;::::0;;3548:148::o;18947:220::-;3457:6;;-1:-1:-1;;;;;3457:6:0;2699:10;3457:22;3449:67;;;;-1:-1:-1;;;3449:67:0;;;;;;;:::i;:::-;19018:7:::1;::::0;19001:14:::1;:24:::0;19036:12:::1;:20:::0;;-1:-1:-1;;;;19036:20:0::1;::::0;;;19067:15:::1;:19:::0;;;19097:11:::1;:15:::0;;;19123:8:::1;:12:::0;;;19146:9:::1;:13:::0;18947:220::o;15283:87::-;15322:13;15355:7;15348:14;;;;;:::i;18768:167::-;18846:4;18863:42;2699:10;18887:9;18898:6;18863:9;:42::i;3704:244::-;3457:6;;-1:-1:-1;;;;;3457:6:0;2699:10;3457:22;3449:67;;;;-1:-1:-1;;;3449:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3793:22:0;::::1;3785:73;;;::::0;-1:-1:-1;;;3785:73:0;;4080:2:1;3785:73:0::1;::::0;::::1;4062:21:1::0;4119:2;4099:18;;;4092:30;4158:34;4138:18;;;4131:62;-1:-1:-1;;;4209:18:1;;;4202:36;4255:19;;3785:73:0::1;3878:402:1::0;3785:73:0::1;3895:6;::::0;;3874:38:::1;::::0;-1:-1:-1;;;;;3874:38:0;;::::1;::::0;3895:6;::::1;::::0;3874:38:::1;::::0;::::1;3923:6;:17:::0;;-1:-1:-1;;;;;;3923:17:0::1;-1:-1:-1::0;;;;;3923:17:0;;;::::1;::::0;;;::::1;::::0;;3704:244::o;19175:337::-;-1:-1:-1;;;;;19268:19:0;;19260:68;;;;-1:-1:-1;;;19260:68:0;;4487:2:1;19260:68:0;;;4469:21:1;4526:2;4506:18;;;4499:30;4565:34;4545:18;;;4538:62;-1:-1:-1;;;4616:18:1;;;4609:34;4660:19;;19260:68:0;4285:400:1;19260:68:0;-1:-1:-1;;;;;19347:21:0;;19339:68;;;;-1:-1:-1;;;19339:68:0;;4892:2:1;19339:68:0;;;4874:21:1;4931:2;4911:18;;;4904:30;4970:34;4950:18;;;4943:62;-1:-1:-1;;;5021:18:1;;;5014:32;5063:19;;19339:68:0;4690:398:1;19339:68:0;-1:-1:-1;;;;;19420:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19472:32;;1613:25:1;;;19472:32:0;;1586:18:1;19472:32:0;;;;;;;19175:337;;;:::o;20348:1748::-;20435:4;-1:-1:-1;;;;;20462:20:0;;20454:70;;;;-1:-1:-1;;;20454:70:0;;5295:2:1;20454:70:0;;;5277:21:1;5334:2;5314:18;;;5307:30;5373:34;5353:18;;;5346:62;-1:-1:-1;;;5424:18:1;;;5417:35;5469:19;;20454:70:0;5093:401:1;20454:70:0;-1:-1:-1;;;;;20543:23:0;;20535:71;;;;-1:-1:-1;;;20535:71:0;;5701:2:1;20535:71:0;;;5683:21:1;5740:2;5720:18;;;5713:30;5779:34;5759:18;;;5752:62;-1:-1:-1;;;5830:18:1;;;5823:33;5873:19;;20535:71:0;5499:399:1;20535:71:0;20622:9;;-1:-1:-1;;;20622:9:0;;;;20619:1470;;;20665:44;20683:6;20691:9;20702:6;20665:17;:44::i;:::-;20658:51;;;;20619:1470;-1:-1:-1;;;;;20765:22:0;;;;;;:14;:22;;;;;;;;20764:23;:53;;;;-1:-1:-1;;;;;;20792:25:0;;;;;;:14;:25;;;;;;;;20791:26;20764:53;20761:173;;;20856:14;;20846:6;:24;;20838:80;;;;-1:-1:-1;;;20838:80:0;;6105:2:1;20838:80:0;;;6087:21:1;6144:2;6124:18;;;6117:30;6183:34;6163:18;;;6156:62;-1:-1:-1;;;6234:18:1;;;6227:41;6285:19;;20838:80:0;5903:407:1;20838:80:0;21001:4;20962:18;15665;;;:9;:18;;;;;;21055:13;;21041:27;;;;;;;21101:25;;-1:-1:-1;21117:9:0;;-1:-1:-1;;;21117:9:0;;;;21116:10;21101:25;:48;;;;-1:-1:-1;;;;;;21130:19:0;;;;;;:8;:19;;;;;;;;21101:48;:63;;;;-1:-1:-1;21153:11:0;;-1:-1:-1;;;21153:11:0;;;;21101:63;:88;;;;-1:-1:-1;;;;;;21169:20:0;;;;;;:12;:20;;;;;;;;21168:21;21101:88;:114;;;;;21202:13;;21193:6;:22;21101:114;21097:280;;;21253:16;;-1:-1:-1;;;21253:16:0;;;;21250:68;;;21305:13;;21292:26;;21250:68;21337:20;21346:10;21337:8;:20::i;:::-;-1:-1:-1;;;;;21419:20:0;;21393:22;21419:20;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;21443:23:0;;;;;;:12;:23;;;;;;;;21419:47;21418:138;;21522:34;21530:6;21538:9;21549:6;21522:7;:34::i;:::-;21418:138;;;21513:6;21418:138;21576:12;;21393:163;;-1:-1:-1;;;;21576:12:0;;;;:46;;;;-1:-1:-1;;;;;;21593:29:0;;;;;;:18;:29;;;;;;;;21592:30;21576:46;21573:134;;;21693:13;;21649:40;21674:14;21649:20;21659:9;-1:-1:-1;;;;;15665:18:0;15638:7;15665:18;;;:9;:18;;;;;;;15572:119;21649:20;:24;;:40::i;:::-;:57;;21641:66;;;;;;21744:12;;21724:15;;-1:-1:-1;;;21744:12:0;;;;21743:13;:37;;;;-1:-1:-1;;;;;;21760:20:0;;;;;;:12;:20;;;;;;;;21743:37;21742:77;;21813:6;21742:77;;;21784:26;:6;21795:14;21784:10;:26::i;:::-;21724:95;;21854:54;21876:7;21854:54;;;;;;;;;;;;;-1:-1:-1;;;21854:54:0;;;:9;:17;21864:6;-1:-1:-1;;;;;21854:17:0;-1:-1:-1;;;;;21854:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;21834:17:0;;;;;;;:9;:17;;;;;;:74;;;;21946:20;;;;;;;:40;;21971:14;21946:24;:40::i;:::-;-1:-1:-1;;;;;21923:20:0;;;;;;;:9;:20;;;;;;;:63;;;;22008:43;;;;;;;;;;22036:14;1613:25:1;;1601:2;1586:18;;1467:177;22008:43:0;;;;;;;;22073:4;22066:11;;;;;;;;698:192;784:7;820:12;812:6;;;;804:29;;;;-1:-1:-1;;;804:29:0;;;;;;;;:::i;:::-;-1:-1:-1;844:9:0;856:5;860:1;856;:5;:::i;:::-;844:17;698:192;-1:-1:-1;;;;;698:192:0:o;16230:333::-;16363:53;;;;;;;;;;;-1:-1:-1;;;16363:53:0;;;;;;;;-1:-1:-1;;;;;16363:17:0;;16326:4;16363:17;;;:9;:17;;;;;;;:53;;16385:6;;16363:21;:53::i;:::-;-1:-1:-1;;;;;16343:17:0;;;;;;;:9;:17;;;;;;:73;;;;16450:20;;;;;;;:32;;16475:6;16450:24;:32::i;:::-;-1:-1:-1;;;;;16427:20:0;;;;;;;:9;:20;;;;;;;:55;;;;16498:35;;;;;;;;;;16526:6;1613:25:1;;1601:2;1586:18;;1467:177;16498:35:0;;;;;;;;-1:-1:-1;16551:4:0;16230:333;;;;;:::o;16571:986::-;13928:9;:16;;-1:-1:-1;;;;13928:16:0;-1:-1:-1;;;13928:16:0;;;16692:11:::1;::::0;16678:8:::1;::::0;13928:16;;16666:45:::1;::::0;16709:1:::1;::::0;16666:38:::1;::::0;;;:7;;:11:::1;:21::i;:::-;:25:::0;::::1;:38::i;:45::-;16644:67:::0;-1:-1:-1;16722:21:0::1;16746:24;:7:::0;16644:67;16746:11:::1;:24::i;:::-;16722:48;;16783:30;16799:13;16783:15;:30::i;:::-;16921:8;::::0;16849:21:::1;::::0;16824:22:::1;::::0;16905:32:::1;::::0;16921:15:::1;::::0;16934:1:::1;16921:12;:15::i;:::-;16905:11;::::0;;:15:::1;:32::i;:::-;16883:54;;16958:26;16987:52;17037:1;16987:45;17020:11;16987:28;17006:8;;16987:14;:18;;:28;;;;:::i;:52::-;16958:81;;17050:28;17081:46;17115:11;17081:29;17100:9;;17081:14;:18;;:29;;;;:::i;:46::-;17050:77:::0;-1:-1:-1;17138:26:0::1;17167:64;17050:77:::0;17167:38:::1;:14:::0;17186:18;17167::::1;:38::i;:::-;:42:::0;::::1;:64::i;:::-;17138:93:::0;-1:-1:-1;17247:22:0;;17244:83:::1;;17295:11;::::0;17284:43:::1;::::0;-1:-1:-1;;;;;17295:11:0::1;17308:18:::0;17284:10:::1;:43::i;:::-;17343:24:::0;;17340:92:::1;;17393:16;::::0;17382:50:::1;::::0;-1:-1:-1;;;;;17393:16:0::1;17411:20:::0;17382:10:::1;:50::i;:::-;17469:1;17448:18;:22;:41;;;;;17488:1;17474:11;:15;17448:41;17445:104;;;17504:45;17517:11;17530:18;17504:12;:45::i;:::-;-1:-1:-1::0;;13967:9:0;:17;;-1:-1:-1;;;;13967:17:0;;;-1:-1:-1;;;;;;16571:986:0:o;18164:596::-;-1:-1:-1;;;;;18325:16:0;;18250:7;18325:16;;;:8;:16;;;;;;18250:7;;18325:16;;18322:197;;;18370:29;18395:3;18370:20;18381:8;;18370:6;:10;;:20;;;;:::i;:29::-;18358:41;;18322:197;;;-1:-1:-1;;;;;18429:19:0;;;;;;:8;:19;;;;;;;;18426:93;;;18477:30;18503:3;18477:21;18488:9;;18477:6;:10;;:21;;;;:::i;:30::-;18465:42;;18426:93;18542:13;;18539:173;;18617:4;18599:24;;;;:9;:24;;;;;;:39;;18628:9;18599:28;:39::i;:::-;18590:4;18572:24;;;;:9;:24;;;;;;;:66;;;;18658:42;;-1:-1:-1;;;;;18658:42:0;;;;;;;18690:9;1613:25:1;;1601:2;1586:18;;1467:177;18658:42:0;;;;;;;;18539:173;18731:21;:6;18742:9;18731:10;:21::i;365:181::-;423:7;;455:5;459:1;455;:5;:::i;:::-;443:17;;484:1;479;:6;;471:46;;;;-1:-1:-1;;;471:46:0;;6912:2:1;471:46:0;;;6894:21:1;6951:2;6931:18;;;6924:30;6990:29;6970:18;;;6963:57;7037:18;;471:46:0;6710:351:1;554:136:0;612:7;639:43;643:1;646;639:43;;;;;;;;;;;;;;;;;:3;:43::i;898:250::-;956:7;980:1;985;980:6;976:47;;-1:-1:-1;1010:1:0;1003:8;;976:47;1035:9;1047:5;1051:1;1047;:5;:::i;:::-;1035:17;-1:-1:-1;1080:1:0;1071:5;1075:1;1035:17;1071:5;:::i;:::-;:10;1063:56;;;;-1:-1:-1;;;1063:56:0;;7663:2:1;1063:56:0;;;7645:21:1;7702:2;7682:18;;;7675:30;7741:34;7721:18;;;7714:62;-1:-1:-1;;;7792:18:1;;;7785:31;7833:19;;1063:56:0;7461:397:1;1156:132:0;1214:7;1241:39;1245:1;1248;1241:39;;;;;;;;;;;;;;;;;:3;:39::i;17569:587::-;17718:16;;;17732:1;17718:16;;;;;;;;17694:21;;17718:16;;;;;;;;;;-1:-1:-1;17718:16:0;17694:40;;17763:4;17745;17750:1;17745:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17745:23:0;;;:7;;;;;;;;;;:23;;;;17789:8;;:15;;;-1:-1:-1;;;17789:15:0;;;;:8;;;;;:13;;:15;;;;;17745:7;;17789:15;;;;;:8;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17779:4;17784:1;17779:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17779:25:0;;;:7;;;;;;;;;:25;17849:8;;17817:55;;17834:4;;17849:8;17860:11;17817:8;:55::i;:::-;17915:8;;:233;;-1:-1:-1;;;17915:233:0;;-1:-1:-1;;;;;17915:8:0;;;;:59;;:233;;17989:11;;17915:8;;18059:4;;18086;;18122:15;;17915:233;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17623:533;17569:587;:::o;16019:116::-;16101:26;;-1:-1:-1;;;;;16101:18:0;;;:26;;;;;16120:6;;16101:26;;;;16120:6;16101:18;:26;;;;;;;;;;;;;;;;;;;;;16019:116;;:::o;19520:499::-;19700:8;;19668:55;;19685:4;;-1:-1:-1;;;;;19700:8:0;19711:11;19668:8;:55::i;:::-;19766:8;;-1:-1:-1;;;;;19766:8:0;:24;19798:9;19831:4;19851:11;19766:8;;19963:7;3361;3388:6;-1:-1:-1;;;;;3388:6:0;;3323:79;19963:7;19766:245;;;;;;-1:-1:-1;;;;;;19766:245:0;;;-1:-1:-1;;;;;9727:15:1;;;19766:245:0;;;9709:34:1;9759:18;;;9752:34;;;;9802:18;;;9795:34;;;;9845:18;;;9838:34;9909:15;;;9888:19;;;9881:44;19985:15:0;9941:19:1;;;9934:35;9643:19;;19766:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19520:499;;:::o;1296:278::-;1382:7;1417:12;1410:5;1402:28;;;;-1:-1:-1;;;1402:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1441:9:0;1453:5;1457:1;1453;: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;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;814:70;759:131;:::o;895:315::-;963:6;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1079:9;1066:23;1098:31;1123:5;1098:31;:::i;:::-;1148:5;1200:2;1185:18;;;;1172:32;;-1:-1:-1;;;895:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2739:388::-;2807:6;2815;2868:2;2856:9;2847:7;2843:23;2839:32;2836:52;;;2884:1;2881;2874:12;2836:52;2923:9;2910:23;2942:31;2967:5;2942:31;:::i;:::-;2992:5;-1:-1:-1;3049:2:1;3034:18;;3021:32;3062:33;3021:32;3062:33;:::i;:::-;3114:7;3104:17;;;2739:388;;;;;:::o;3132:380::-;3211:1;3207:12;;;;3254;;;3275:61;;3329:4;3321:6;3317:17;3307:27;;3275:61;3382:2;3374:6;3371:14;3351:18;3348:38;3345:161;;3428:10;3423:3;3419:20;3416:1;3409:31;3463:4;3460:1;3453:15;3491:4;3488:1;3481:15;3345:161;;3132:380;;;:::o;3517:356::-;3719:2;3701:21;;;3738:18;;;3731:30;3797:34;3792:2;3777:18;;3770:62;3864:2;3849:18;;3517:356::o;6315:127::-;6376:10;6371:3;6367:20;6364:1;6357:31;6407:4;6404:1;6397:15;6431:4;6428:1;6421:15;6447:128;6514:9;;;6535:11;;;6532:37;;;6549:18;;:::i;6580:125::-;6645:9;;;6666:10;;;6663:36;;;6679:18;;:::i;7066:168::-;7139:9;;;7170;;7187:15;;;7181:22;;7167:37;7157:71;;7208:18;;:::i;7239:217::-;7279:1;7305;7295:132;;7349:10;7344:3;7340:20;7337:1;7330:31;7384:4;7381:1;7374:15;7412:4;7409:1;7402:15;7295:132;-1:-1:-1;7441:9:1;;7239:217::o;7995:127::-;8056:10;8051:3;8047:20;8044:1;8037:31;8087:4;8084:1;8077:15;8111:4;8108:1;8101:15;8127:251;8197:6;8250:2;8238:9;8229:7;8225:23;8221:32;8218:52;;;8266:1;8263;8256:12;8218:52;8298:9;8292:16;8317:31;8342:5;8317:31;:::i;8383:980::-;8645:4;8693:3;8682:9;8678:19;8724:6;8713:9;8706:25;8750:2;8788:6;8783:2;8772:9;8768:18;8761:34;8831:3;8826:2;8815:9;8811:18;8804:31;8855:6;8890;8884:13;8921:6;8913;8906:22;8959:3;8948:9;8944:19;8937:26;;8998:2;8990:6;8986:15;8972:29;;9019:1;9029:195;9043:6;9040:1;9037:13;9029:195;;;9108:13;;-1:-1:-1;;;;;9104:39:1;9092:52;;9199:15;;;;9164:12;;;;9140:1;9058:9;9029:195;;;-1:-1:-1;;;;;;;9280:32:1;;;;9275:2;9260:18;;9253:60;-1:-1:-1;;;9344:3:1;9329:19;9322:35;9241:3;8383:980;-1:-1:-1;;;8383:980:1:o;9980:306::-;10068:6;10076;10084;10137:2;10125:9;10116:7;10112:23;10108:32;10105:52;;;10153:1;10150;10143:12;10105:52;10182:9;10176:16;10166:26;;10232:2;10221:9;10217:18;10211:25;10201:35;;10276:2;10265:9;10261:18;10255:25;10245:35;;9980:306;;;;;:::o

Swarm Source

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