ETH Price: $2,655.61 (+1.12%)

Token

Gud Mornin (GM)
 

Overview

Max Total Supply

1,000,000,000 GM

Holders

279

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000667 GM

Value
$0.00
0xb4d54f84da687786bb6849aa0e1ac198609299dc
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:
GUDMORNIN

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

http://gudmornin.wtf
https://twitter.com/GudMorninERC
https://t.me/GudMorninERC

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠶⠛⠉⠀⠀⠀⠀⠉⠙⠶⠦⣀⡀⠀⠀⠀⣀⣠⠴⠶⠞⠛⠛⠶⠤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠲⣞⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⡄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠞⠁⠀⠀⠀⠀⠀⣀⣠⡤⠤⠤⠤⣤⣄⡀⠀⠀⠹⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣴⠃⠀⠀⠀⠀⢠⠶⠛⠉⠁⠀⠀⠀⠀⠀⠈⠙⠓⠦⢤⣿⠤⠖⠒⠒⠒⠒⠒⠚⠒⠓⠲⠾⢧⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⡤⠤⠤⠤⠤⣭⣳⣤⡀⠀⠀⠀⢀⣀⣀⣠⣤⣤⣤⣬⣙⣳⣦⣄⠀⠀
⠀⠀⠀⠀⢀⣀⣿⣷⣦⣤⣄⣀⡀⠀⣀⣀⣤⣤⣤⣶⣯⣭⣥⣶⣶⣯⣭⣽⣶⣶⣬⣭⣙⣴⢖⣫⣭⣿⣿⣶⣶⣶⣶⣶⣾⣿⣿⣿⣷⣤
⠀⠀⠀⣤⠛⢹⡇⠈⠉⠙⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⡿⣿⣿⣿⣿
⠀⢀⡞⠁⠀⠸⠇⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡣⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿
⢀⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠉⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⣀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⣉⣩⡭⠿⠛⠉⠁⠀⠀⠀⠀⠀⠙⠛⢿⡒⠛⠛⠛⠋⠻⡭⡉⠁⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠹⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⠛⠉⠉⠉⠳⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢀⣀⠀⠀⠀⠉⠙⠳⠦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣇⡀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⡄⠀⠈⠉⠛⠢⢤⣤⣀⠀⠀⠈⠉⠉⠑⠒⠒⠒⠢⠤⢤⣤⣤⣤⣤⣄⣠⣤⣤⡤⠔⠚⠋⠁⢀⡇⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⢦⣄⡀⠀⠀⠀⠈⠉⠙⠓⠒⠦⢦⣤⣤⣄⣀⣀⣀⣀⣀⣀⠀⠀⠈⠁⠀⢀⣀⣀⣠⣤⠖⠉⠀⠀
⠛⣻⣶⣦⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠲⢤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠁⠀⠈⠀⠉⠀⠉⠉⠉⠉⠉⣉⣉⣤⣥⣷⠾⠓⢲⣚⡟
⠈⣞⣷⣴⣌⣽⣫⣿⠷⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠛⠛⠛⠛⠷⠶⠶⠶⠶⢶⢦⣤⣤⣴⢿⣯⡉⠉⣁⣞⠗⢂⠹⡝⠅
⠀⣻⣿⣷⢪⣿⣋⠀⠀⢀⡈⣽⡛⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡟⣛⣍⣿⢷⡆⣈⣻⣮⠀⣻⣧⢿⣷⣶⠾
⠿⣿⣿⠾⠿⣿⡿⣵⣿⡏⣿⠹⣿⣞⢷⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣴⠟⡾⣿⣹⣿⣿⢷⡽⣏⠛⠓⠒⠛⠛⠛⠛⠛
⡼⢭⠥⣴⠬⣿⠿⢯⡿⢥⡿⢧⡿⢿⡿⢯⠭⢭⡿⢿⡿⢿⡿⢶⡶⢶⡾⢾⡿⢿⡭⢿⣿⠼⣧⠍⣭⠭⣥⠬⣷⢻⣆⣀⣦⣀⣴⣀⣀⠀
⢱⡿⠶⠿⠶⠾⠶⠾⠶⠾⠷⠾⠶⠾⠷⠾⠶⠾⠷⠾⠷⠾⠷⠾⠷⠾⠟⠛⠻⠞⠛⠛⠛⠛⠛⠛⠛⠋⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⢹⡀
⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇

*/

// SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.21;

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

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    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 IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    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 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 InterfaceLP {
    function sync() external;
}

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

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Gud Mornin";
    string constant _symbol = "GM";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(11).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(11).div(1000);

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

    
    mapping (address => bool) isFeeexempt;
    mapping (address => bool) isTxLimitexempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private utilityFee      = 1;
    uint256 private developerFee    = 0; 
    uint256 private stakingFee      = 0;
    uint256 private totalFee         = developerFee + marketingFee + liquidityFee + utilityFee + stakingFee;
    uint256 private feeDenominator  = 100;

    uint256 sellpercents = 900;
    uint256 buypercents = 500;
    uint256 transferpercents = 100; 

    address private LPReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private developerFeeReceiver;
    address private stakingFeeReceiver;
    
    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

    bool public KOLMode = false;
    mapping (address => bool) public isKOLed;   

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 70 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeexempt[msg.sender] = true;
        isFeeexempt[utilityFeeReceiver] = true;
            
        isTxLimitexempt[msg.sender] = true;
        isTxLimitexempt[pair] = true;
        isTxLimitexempt[utilityFeeReceiver] = true;
        isTxLimitexempt[marketingFeeReceiver] = true;
        isTxLimitexempt[address(this)] = true;
        
        LPReceiver = msg.sender;
        marketingFeeReceiver = 0x61209aAe9ff1da89e59Fa696149dBf7899e9055d;
        utilityFeeReceiver = 0xCfF48e1a314865509639231B06029b31e8aFb90f;
        developerFeeReceiver = msg.sender;
        stakingFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function setHolding(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

         
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
             if(KOLMode){
                require(isKOLed[recipient],"Not KOLed"); 
          }
        }
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != stakingFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitexempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeexempt[sender] || isFeeexempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(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 checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitexempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeexempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percents = transferpercents;

        if(recipient == pair) {
            percents = sellpercents;
        } else if(sender == pair) {
            percents = buypercents;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percents).div(feeDenominator * 100);
        uint256 stakingTokens = feeAmount.mul(stakingFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(stakingTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[stakingFeeReceiver] = _balances[stakingFeeReceiver].add(stakingTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(stakingTokens > 0){
            _totalSupply = _totalSupply.sub(stakingTokens);
            emit Transfer(sender, ZERO, stakingTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(utilityFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     
    function setNoMoreLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
             payable(utilityFeeReceiver).transfer(address(this).balance);

    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(LPReceiver, tokens);
    }

    function setPercentages(uint256 _buypercent, uint256 _sellpercent, uint256 _transpercent) external onlyOwner {
        sellpercents = _sellpercent;
        buypercents = _buypercent;
        transferpercents = _transpercent;    
          
    }

     function setMode(bool _status) public onlyOwner {
        KOLMode = _status;
    }

    function addMultipleToKOLList(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isKOLed[addresses[i]] = status;
        }
    }

    function openTrading() public onlyOwner {
        KOLMode = false;
        buypercents = 650;
        sellpercents = 1000;
        transferpercents = 1000;
    }

    function firstLowering() public onlyOwner {
        buypercents = 400;
        sellpercents = 650;
        transferpercents = 0;
    }

    function secondLowering() public onlyOwner {
        buypercents = 250;
        sellpercents = 400;
        transferpercents = 0;
    }

    function goGoGo() public onlyOwner {
        buypercents = 25;
        sellpercents = 25;
        transferpercents = 0;
    }
    
    function gudMornin() public onlyOwner {
        TradingOpen = true;
        KOLMode = true;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHdeveloper = amountETH.mul(developerFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(developerFeeReceiver).call{value: amountETHdeveloper}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                LPReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

     function setFees(uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _stakingFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        developerFee = _developerFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        stakingFee = _stakingFee;
        totalFee = _liquidityFee.add(_developerFee).add(_marketingFee).add(_utilityFee).add(_stakingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function setWalletAddresses(address _LPReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _stakingFeeReceiver, address _developerFeeReceiver) external onlyOwner {
        LPReceiver = _LPReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        stakingFeeReceiver = _stakingFeeReceiver;
        developerFeeReceiver = _developerFeeReceiver;
    }

    function setContractSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTarget(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"KOLMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addMultipleToKOLList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"firstLowering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goGoGo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gudMornin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isKOLed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondLowering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setContractSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setNoMoreLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buypercent","type":"uint256"},{"internalType":"uint256","name":"_sellpercent","type":"uint256"},{"internalType":"uint256","name":"_transpercent","type":"uint256"}],"name":"setPercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_LPReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_stakingFeeReceiver","type":"address"},{"internalType":"address","name":"_developerFeeReceiver","type":"address"}],"name":"setWalletAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006be565b6200004290633b9aca00620006ce565b600581905562000064906103e8906200005d90600b6200049b565b906200052e565b60065560055462000080906103e8906200005d90600b6200049b565b6007556001600c556002600d556001600e555f600f555f601055601054600e54600c54600d54600f54620000b59190620006e8565b620000c19190620006e8565b620000cd9190620006e8565b620000d99190620006e8565b601155606460128190556103846013556101f460145560158190556019601b55601c55601f805461ffff60a01b191690556021805460ff191660011790556005546103e8906200012b906046620006ce565b620001379190620006fe565b60225534801562000146575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000203573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022991906200071e565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000286573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ac91906200071e565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032191906200071e565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b16875284872080548316841790559686528386208054909116909117905560168054871682179055845486167361209aae9ff1da89e59fa696149dbf7899e9055d179094558554851673cff48e1a314865509639231b06029b31e8afb90f1790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000793565b5f825f03620004ac57505f62000528565b5f620004b98385620006ce565b905082620004c88583620006fe565b14620005255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200052583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200057760201b60201c565b5f81836200059a5760405162461bcd60e51b81526004016200051c919062000746565b505f620005a88486620006fe565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200060557815f1904821115620005e957620005e9620005b1565b80851615620005f757918102915b93841c9390800290620005ca565b509250929050565b5f826200061d5750600162000528565b816200062b57505f62000528565b81600181146200064457600281146200064f576200066f565b600191505062000528565b60ff841115620006635762000663620005b1565b50506001821b62000528565b5060208310610133831016604e8410600b841016171562000694575081810a62000528565b620006a08383620005c5565b805f1904821115620006b657620006b6620005b1565b029392505050565b5f6200052560ff8416836200060d565b8082028115828204841417620005285762000528620005b1565b80820180821115620005285762000528620005b1565b5f826200071957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200072f575f80fd5b81516001600160a01b038116811462000525575f80fd5b5f6020808352835180828501525f5b81811015620007735785810183015185820160400152820162000755565b505f604082860101526040601f19601f8301168501019250505092915050565b61225480620007a15f395ff3fe608060405260043610610261575f3560e01c80638251449d1161013f578063c0e705b8116100b3578063d51ed1c811610078578063d51ed1c8146106f9578063d78e139d14610718578063dd62ed3e14610737578063f2fde38b1461077b578063f527af571461079a578063f887ea40146107ae575f80fd5b8063c0e705b814610666578063c1061a1214610685578063c262ad4c146106a4578063c9567bf9146106d1578063cf59ca64146106e5575f80fd5b80638da5cb5b116101045780638da5cb5b146105a557806395d89b41146105c1578063a8aa1b31146105eb578063a9059cbb1461060a578063a9d3ce9914610629578063b2bdfa7b14610648575f80fd5b80638251449d1461050457806386f6c3c114610523578063893d20e8146105425780638a4068dd146105725780638c33c9e414610586575f80fd5b8063313ce567116101d65780636ddd17131161019b5780636ddd17131461045a57806370a0823114610473578063715018a6146104a757806377b54bad146104bb57806378109e54146104da5780637d1db4a5146104ef575f80fd5b8063313ce567146103d957806348a1df52146103f45780634d9ac7db14610413578063571ac8b0146104275780635e4452e014610446575f80fd5b80631161ae39116102275780631161ae391461033e57806318160ddd1461035d5780631d0f2c991461037157806323b872dd14610392578063296ae6a0146103b15780632b112e49146103c5575f80fd5b8062ba45081461026c5780630445b667146102a157806306fdde03146102c457806308fd3d05146102ff578063095ea7b31461031f575f80fd5b3661026857005b5f80fd5b348015610277575f80fd5b50601f5461028c90600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102ac575f80fd5b506102b660225481565b604051908152602001610298565b3480156102cf575f80fd5b5060408051808201909152600a81526923bab21026b7b93734b760b11b60208201525b6040516102989190611d8d565b34801561030a575f80fd5b50601f5461028c90600160a01b900460ff1681565b34801561032a575f80fd5b5061028c610339366004611df3565b6107cd565b348015610349575f80fd5b5061028c610358366004611e1b565b610839565b348015610368575f80fd5b506005546102b6565b34801561037c575f80fd5b5061039061038b366004611e1b565b61084c565b005b34801561039d575f80fd5b5061028c6103ac366004611e3b565b610889565b3480156103bc575f80fd5b50610390610947565b3480156103d0575f80fd5b506102b6610982565b3480156103e4575f80fd5b5060405160098152602001610298565b3480156103ff575f80fd5b5061039061040e366004611e81565b6109d2565b34801561041e575f80fd5b50610390610a6d565b348015610432575f80fd5b5061028c610441366004611f00565b610aa3565b348015610451575f80fd5b50610390610aaf565b348015610465575f80fd5b5060215461028c9060ff1681565b34801561047e575f80fd5b506102b661048d366004611f00565b6001600160a01b03165f9081526008602052604090205490565b3480156104b2575f80fd5b50610390610aef565b3480156104c6575f80fd5b5061028c6104d5366004611df3565b610b60565b3480156104e5575f80fd5b506102b660075481565b3480156104fa575f80fd5b506102b660065481565b34801561050f575f80fd5b5061039061051e366004611f19565b610c45565b34801561052e575f80fd5b5061039061053d366004611f7a565b610ccd565b34801561054d575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610298565b34801561057d575f80fd5b50610390610d92565b348015610591575f80fd5b506103906105a0366004611fb9565b610dcb565b3480156105b0575f80fd5b505f546001600160a01b031661055a565b3480156105cc575f80fd5b50604080518082019091526002815261474d60f01b60208201526102f2565b3480156105f6575f80fd5b50601f5461055a906001600160a01b031681565b348015610615575f80fd5b5061028c610624366004611df3565b610e12565b348015610634575f80fd5b50610390610643366004611fd4565b610e1e565b348015610653575f80fd5b505f5461055a906001600160a01b031681565b348015610671575f80fd5b50610390610680366004611ffd565b610e58565b348015610690575f80fd5b5061039061069f366004612014565b610ebf565b3480156106af575f80fd5b5061028c6106be366004611f00565b602080525f908152604090205460ff1681565b3480156106dc575f80fd5b50610390610eff565b3480156106f0575f80fd5b50610390610f48565b348015610704575f80fd5b506102b6610713366004611ffd565b610f82565b348015610723575f80fd5b50610390610732366004611ffd565b610fc7565b348015610742575f80fd5b506102b6610751366004612030565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610786575f80fd5b50610390610795366004611f00565b611018565b3480156107a5575f80fd5b506103906110ff565b3480156107b9575f80fd5b50601d5461055a906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108279086815260200190565b60405180910390a35060015b92915050565b5f8261084483610f82565b119392505050565b5f546001600160a01b0316331461087e5760405162461bcd60e51b815260040161087590612061565b60405180910390fd5b601b91909155601c55565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610932576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260098252838120338252909152919091205461090e918490611138565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b61093d848484611170565b90505b9392505050565b5f546001600160a01b031633146109705760405162461bcd60e51b815260040161087590612061565b61019060145561028a6013555f601555565b6004546001600160a01b03165f908152600860205260408120546109cd906003546001600160a01b03165f908152600860205260409020546109c7906005549061152e565b9061152e565b905090565b5f546001600160a01b031633146109fb5760405162461bcd60e51b815260040161087590612061565b5f5b82811015610a67578160205f868685818110610a1b57610a1b612096565b9050602002016020810190610a309190611f00565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610a60816120be565b90506109fd565b50505050565b5f546001600160a01b03163314610a965760405162461bcd60e51b815260040161087590612061565b6005546007819055600655565b5f610833825f196107cd565b5f546001600160a01b03163314610ad85760405162461bcd60e51b815260040161087590612061565b601f805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610b185760405162461bcd60e51b815260040161087590612061565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f815f03610bd1576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610baa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bce91906120d6565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c21573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094091906120ed565b5f546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161087590612061565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f546001600160a01b03163314610cf65760405162461bcd60e51b815260040161087590612061565b600c869055600f859055600d849055600e8390556010829055610d2782610d21858188818c8c61156f565b9061156f565b6011556012819055610d3a600582612108565b60115410610d8a5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610875565b505050505050565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dc8573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610df45760405162461bcd60e51b815260040161087590612061565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f610940338484611170565b5f546001600160a01b03163314610e475760405162461bcd60e51b815260040161087590612061565b601391909155601491909155601555565b5f546001600160a01b03163314610e815760405162461bcd60e51b815260040161087590612061565b6103e8600554610e919190612108565b6007541015610e9e575f80fd5b6103e881600554610eaf9190612127565b610eb99190612108565b60075550565b5f546001600160a01b03163314610ee85760405162461bcd60e51b815260040161087590612061565b6021805460ff191692151592909217909155602255565b5f546001600160a01b03163314610f285760405162461bcd60e51b815260040161087590612061565b601f805460ff60a81b1916905561028a6014556103e86013819055601555565b5f546001600160a01b03163314610f715760405162461bcd60e51b815260040161087590612061565b60fa6014556101906013555f601555565b5f610833610f8e610982565b601f546001600160a01b03165f90815260086020526040902054610fc190610fba906002905b906115cd565b85906115cd565b9061164b565b60185447906001600160a01b03166108fc6064610fe48585612127565b610fee9190612108565b6040518115909202915f818181858888f19350505050158015611013573d5f803e3d5ffd5b505050565b5f546001600160a01b031633146110415760405162461bcd60e51b815260040161087590612061565b6001600160a01b0381166110a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610875565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111285760405162461bcd60e51b815260040161087590612061565b601960148190556013555f601555565b5f818484111561115b5760405162461bcd60e51b81526004016108759190611d8d565b505f611167848661213e565b95945050505050565b6023545f9060ff161561118f5761118884848461168c565b9050610940565b6001600160a01b0384165f9081526001602052604090205460ff161580156111cf57506001600160a01b0383165f9081526001602052604090205460ff16155b1561128857601f54600160a01b900460ff166112245760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610875565b601f54600160a81b900460ff1615611288576001600160a01b0383165f90815260208052604090205460ff166112885760405162461bcd60e51b8152602060048201526009602482015268139bdd0812d3d3195960ba1b6044820152606401610875565b6001600160a01b0384165f9081526001602052604090205460ff161580156112b957506001600160a01b0383163014155b80156112d357506003546001600160a01b03848116911614155b80156112ed5750601f546001600160a01b03848116911614155b80156113075750601a546001600160a01b03848116911614155b801561132157506017546001600160a01b03848116911614155b801561134557506001600160a01b0383165f908152600b602052604090205460ff16155b156113e5576001600160a01b0383165f9081526008602052604090205460075461136f8483612151565b11156113e35760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610875565b505b6113ef848361175c565b6113f76117c8565b1561140457611404611815565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260089091529190912054611455918490611138565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff16806114a057506001600160a01b0384165f908152600a602052604090205460ff165b6114b4576114af858486611bdd565b6114b6565b825b6001600160a01b0385165f908152600860205260409020549091506114db908261156f565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f805160206121ff8339815191529061151b9085815260200190565b60405180910390a3506001949350505050565b5f61094083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611138565b5f8061157b8385612151565b9050838110156109405760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610875565b5f825f036115dc57505f610833565b5f6115e78385612127565b9050826115f48583612108565b146109405760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610875565b5f61094083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d61565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546116dc918490611138565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461170a908361156f565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f805160206121ff8339815191529061174a9086815260200190565b60405180910390a35060019392505050565b6006548111158061178457506001600160a01b0382165f908152600b602052604090205460ff165b6117c45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610875565b5050565b601f545f906001600160a01b031633148015906117e8575060235460ff16155b80156117f6575060215460ff165b80156109cd575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f9161183391610839565b61183f57600c54611841565b5f5b90505f6118646002610fc1601154610fc1866022546115cd90919063ffffffff16565b90505f61187c8260225461152e90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106118b4576118b4612096565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106118e5576118e5612096565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac9479061192e9086905f90879030904290600401612164565b5f604051808303815f87803b158015611945575f80fd5b505af1158015611957573d5f803e3d5ffd5b505050505f61196f824761152e90919063ffffffff16565b90505f61198961198088600261164b565b6011549061152e565b90505f61199d6002610fc18481878d6115cd565b90505f6119b983610fc1600d54876115cd90919063ffffffff16565b90505f6119d584610fc1600f54886115cd90919063ffffffff16565b90505f6119f185610fc1600e54896115cd90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611a40576040519150601f19603f3d011682016040523d82523d5f602084013e611a45565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611a92576040519150601f19603f3d011682016040523d82523d5f602084013e611a97565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611ae4576040519150601f19603f3d011682016040523d82523d5f602084013e611ae9565b606091505b505f9250508b159050611bc557601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611b63573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b8891906121d3565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611c025750601354611c1d565b601f546001600160a01b0390811690861603611c1d57506014545b5f611c496012546064611c309190612127565b610fc184610fb46011548a6115cd90919063ffffffff16565b90505f611c67601154610fc1601054856115cd90919063ffffffff16565b90505f611c74838361152e565b305f90815260086020526040902054909150611c90908261156f565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611cbd908361156f565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f805160206121ff833981519152910160405180910390a38115611d4b57600554611d15908361152e565b6005556004546040518381526001600160a01b03918216918a16905f805160206121ff8339815191529060200160405180910390a35b611d55878461152e565b98975050505050505050565b5f8183611d815760405162461bcd60e51b81526004016108759190611d8d565b505f6111678486612108565b5f6020808352835180828501525f5b81811015611db857858101830151858201604001528201611d9c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611dee575f80fd5b919050565b5f8060408385031215611e04575f80fd5b611e0d83611dd8565b946020939093013593505050565b5f8060408385031215611e2c575f80fd5b50508035926020909101359150565b5f805f60608486031215611e4d575f80fd5b611e5684611dd8565b9250611e6460208501611dd8565b9150604084013590509250925092565b8015158114610dc8575f80fd5b5f805f60408486031215611e93575f80fd5b833567ffffffffffffffff80821115611eaa575f80fd5b818601915086601f830112611ebd575f80fd5b813581811115611ecb575f80fd5b8760208260051b8501011115611edf575f80fd5b60209283019550935050840135611ef581611e74565b809150509250925092565b5f60208284031215611f10575f80fd5b61094082611dd8565b5f805f805f60a08688031215611f2d575f80fd5b611f3686611dd8565b9450611f4460208701611dd8565b9350611f5260408701611dd8565b9250611f6060608701611dd8565b9150611f6e60808701611dd8565b90509295509295909350565b5f805f805f8060c08789031215611f8f575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611fc9575f80fd5b813561094081611e74565b5f805f60608486031215611fe6575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561200d575f80fd5b5035919050565b5f8060408385031215612025575f80fd5b8235611e0d81611e74565b5f8060408385031215612041575f80fd5b61204a83611dd8565b915061205860208401611dd8565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016120cf576120cf6120aa565b5060010190565b5f602082840312156120e6575f80fd5b5051919050565b5f602082840312156120fd575f80fd5b815161094081611e74565b5f8261212257634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610833576108336120aa565b81810381811115610833576108336120aa565b80820180821115610833576108336120aa565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121b25784516001600160a01b03168352938301939183019160010161218d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156121e5575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122055e742fd651d3a152365a8eefe0dd77af143864fa93f9e7ccbe0c2d254d6d99964736f6c63430008150033

Deployed Bytecode

0x608060405260043610610261575f3560e01c80638251449d1161013f578063c0e705b8116100b3578063d51ed1c811610078578063d51ed1c8146106f9578063d78e139d14610718578063dd62ed3e14610737578063f2fde38b1461077b578063f527af571461079a578063f887ea40146107ae575f80fd5b8063c0e705b814610666578063c1061a1214610685578063c262ad4c146106a4578063c9567bf9146106d1578063cf59ca64146106e5575f80fd5b80638da5cb5b116101045780638da5cb5b146105a557806395d89b41146105c1578063a8aa1b31146105eb578063a9059cbb1461060a578063a9d3ce9914610629578063b2bdfa7b14610648575f80fd5b80638251449d1461050457806386f6c3c114610523578063893d20e8146105425780638a4068dd146105725780638c33c9e414610586575f80fd5b8063313ce567116101d65780636ddd17131161019b5780636ddd17131461045a57806370a0823114610473578063715018a6146104a757806377b54bad146104bb57806378109e54146104da5780637d1db4a5146104ef575f80fd5b8063313ce567146103d957806348a1df52146103f45780634d9ac7db14610413578063571ac8b0146104275780635e4452e014610446575f80fd5b80631161ae39116102275780631161ae391461033e57806318160ddd1461035d5780631d0f2c991461037157806323b872dd14610392578063296ae6a0146103b15780632b112e49146103c5575f80fd5b8062ba45081461026c5780630445b667146102a157806306fdde03146102c457806308fd3d05146102ff578063095ea7b31461031f575f80fd5b3661026857005b5f80fd5b348015610277575f80fd5b50601f5461028c90600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102ac575f80fd5b506102b660225481565b604051908152602001610298565b3480156102cf575f80fd5b5060408051808201909152600a81526923bab21026b7b93734b760b11b60208201525b6040516102989190611d8d565b34801561030a575f80fd5b50601f5461028c90600160a01b900460ff1681565b34801561032a575f80fd5b5061028c610339366004611df3565b6107cd565b348015610349575f80fd5b5061028c610358366004611e1b565b610839565b348015610368575f80fd5b506005546102b6565b34801561037c575f80fd5b5061039061038b366004611e1b565b61084c565b005b34801561039d575f80fd5b5061028c6103ac366004611e3b565b610889565b3480156103bc575f80fd5b50610390610947565b3480156103d0575f80fd5b506102b6610982565b3480156103e4575f80fd5b5060405160098152602001610298565b3480156103ff575f80fd5b5061039061040e366004611e81565b6109d2565b34801561041e575f80fd5b50610390610a6d565b348015610432575f80fd5b5061028c610441366004611f00565b610aa3565b348015610451575f80fd5b50610390610aaf565b348015610465575f80fd5b5060215461028c9060ff1681565b34801561047e575f80fd5b506102b661048d366004611f00565b6001600160a01b03165f9081526008602052604090205490565b3480156104b2575f80fd5b50610390610aef565b3480156104c6575f80fd5b5061028c6104d5366004611df3565b610b60565b3480156104e5575f80fd5b506102b660075481565b3480156104fa575f80fd5b506102b660065481565b34801561050f575f80fd5b5061039061051e366004611f19565b610c45565b34801561052e575f80fd5b5061039061053d366004611f7a565b610ccd565b34801561054d575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610298565b34801561057d575f80fd5b50610390610d92565b348015610591575f80fd5b506103906105a0366004611fb9565b610dcb565b3480156105b0575f80fd5b505f546001600160a01b031661055a565b3480156105cc575f80fd5b50604080518082019091526002815261474d60f01b60208201526102f2565b3480156105f6575f80fd5b50601f5461055a906001600160a01b031681565b348015610615575f80fd5b5061028c610624366004611df3565b610e12565b348015610634575f80fd5b50610390610643366004611fd4565b610e1e565b348015610653575f80fd5b505f5461055a906001600160a01b031681565b348015610671575f80fd5b50610390610680366004611ffd565b610e58565b348015610690575f80fd5b5061039061069f366004612014565b610ebf565b3480156106af575f80fd5b5061028c6106be366004611f00565b602080525f908152604090205460ff1681565b3480156106dc575f80fd5b50610390610eff565b3480156106f0575f80fd5b50610390610f48565b348015610704575f80fd5b506102b6610713366004611ffd565b610f82565b348015610723575f80fd5b50610390610732366004611ffd565b610fc7565b348015610742575f80fd5b506102b6610751366004612030565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610786575f80fd5b50610390610795366004611f00565b611018565b3480156107a5575f80fd5b506103906110ff565b3480156107b9575f80fd5b50601d5461055a906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108279086815260200190565b60405180910390a35060015b92915050565b5f8261084483610f82565b119392505050565b5f546001600160a01b0316331461087e5760405162461bcd60e51b815260040161087590612061565b60405180910390fd5b601b91909155601c55565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610932576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260098252838120338252909152919091205461090e918490611138565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b61093d848484611170565b90505b9392505050565b5f546001600160a01b031633146109705760405162461bcd60e51b815260040161087590612061565b61019060145561028a6013555f601555565b6004546001600160a01b03165f908152600860205260408120546109cd906003546001600160a01b03165f908152600860205260409020546109c7906005549061152e565b9061152e565b905090565b5f546001600160a01b031633146109fb5760405162461bcd60e51b815260040161087590612061565b5f5b82811015610a67578160205f868685818110610a1b57610a1b612096565b9050602002016020810190610a309190611f00565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610a60816120be565b90506109fd565b50505050565b5f546001600160a01b03163314610a965760405162461bcd60e51b815260040161087590612061565b6005546007819055600655565b5f610833825f196107cd565b5f546001600160a01b03163314610ad85760405162461bcd60e51b815260040161087590612061565b601f805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610b185760405162461bcd60e51b815260040161087590612061565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f815f03610bd1576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610baa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bce91906120d6565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c21573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094091906120ed565b5f546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161087590612061565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f546001600160a01b03163314610cf65760405162461bcd60e51b815260040161087590612061565b600c869055600f859055600d849055600e8390556010829055610d2782610d21858188818c8c61156f565b9061156f565b6011556012819055610d3a600582612108565b60115410610d8a5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610875565b505050505050565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dc8573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610df45760405162461bcd60e51b815260040161087590612061565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f610940338484611170565b5f546001600160a01b03163314610e475760405162461bcd60e51b815260040161087590612061565b601391909155601491909155601555565b5f546001600160a01b03163314610e815760405162461bcd60e51b815260040161087590612061565b6103e8600554610e919190612108565b6007541015610e9e575f80fd5b6103e881600554610eaf9190612127565b610eb99190612108565b60075550565b5f546001600160a01b03163314610ee85760405162461bcd60e51b815260040161087590612061565b6021805460ff191692151592909217909155602255565b5f546001600160a01b03163314610f285760405162461bcd60e51b815260040161087590612061565b601f805460ff60a81b1916905561028a6014556103e86013819055601555565b5f546001600160a01b03163314610f715760405162461bcd60e51b815260040161087590612061565b60fa6014556101906013555f601555565b5f610833610f8e610982565b601f546001600160a01b03165f90815260086020526040902054610fc190610fba906002905b906115cd565b85906115cd565b9061164b565b60185447906001600160a01b03166108fc6064610fe48585612127565b610fee9190612108565b6040518115909202915f818181858888f19350505050158015611013573d5f803e3d5ffd5b505050565b5f546001600160a01b031633146110415760405162461bcd60e51b815260040161087590612061565b6001600160a01b0381166110a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610875565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111285760405162461bcd60e51b815260040161087590612061565b601960148190556013555f601555565b5f818484111561115b5760405162461bcd60e51b81526004016108759190611d8d565b505f611167848661213e565b95945050505050565b6023545f9060ff161561118f5761118884848461168c565b9050610940565b6001600160a01b0384165f9081526001602052604090205460ff161580156111cf57506001600160a01b0383165f9081526001602052604090205460ff16155b1561128857601f54600160a01b900460ff166112245760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610875565b601f54600160a81b900460ff1615611288576001600160a01b0383165f90815260208052604090205460ff166112885760405162461bcd60e51b8152602060048201526009602482015268139bdd0812d3d3195960ba1b6044820152606401610875565b6001600160a01b0384165f9081526001602052604090205460ff161580156112b957506001600160a01b0383163014155b80156112d357506003546001600160a01b03848116911614155b80156112ed5750601f546001600160a01b03848116911614155b80156113075750601a546001600160a01b03848116911614155b801561132157506017546001600160a01b03848116911614155b801561134557506001600160a01b0383165f908152600b602052604090205460ff16155b156113e5576001600160a01b0383165f9081526008602052604090205460075461136f8483612151565b11156113e35760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610875565b505b6113ef848361175c565b6113f76117c8565b1561140457611404611815565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260089091529190912054611455918490611138565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff16806114a057506001600160a01b0384165f908152600a602052604090205460ff165b6114b4576114af858486611bdd565b6114b6565b825b6001600160a01b0385165f908152600860205260409020549091506114db908261156f565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f805160206121ff8339815191529061151b9085815260200190565b60405180910390a3506001949350505050565b5f61094083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611138565b5f8061157b8385612151565b9050838110156109405760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610875565b5f825f036115dc57505f610833565b5f6115e78385612127565b9050826115f48583612108565b146109405760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610875565b5f61094083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d61565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546116dc918490611138565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461170a908361156f565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f805160206121ff8339815191529061174a9086815260200190565b60405180910390a35060019392505050565b6006548111158061178457506001600160a01b0382165f908152600b602052604090205460ff165b6117c45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610875565b5050565b601f545f906001600160a01b031633148015906117e8575060235460ff16155b80156117f6575060215460ff165b80156109cd575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f9161183391610839565b61183f57600c54611841565b5f5b90505f6118646002610fc1601154610fc1866022546115cd90919063ffffffff16565b90505f61187c8260225461152e90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106118b4576118b4612096565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106118e5576118e5612096565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac9479061192e9086905f90879030904290600401612164565b5f604051808303815f87803b158015611945575f80fd5b505af1158015611957573d5f803e3d5ffd5b505050505f61196f824761152e90919063ffffffff16565b90505f61198961198088600261164b565b6011549061152e565b90505f61199d6002610fc18481878d6115cd565b90505f6119b983610fc1600d54876115cd90919063ffffffff16565b90505f6119d584610fc1600f54886115cd90919063ffffffff16565b90505f6119f185610fc1600e54896115cd90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611a40576040519150601f19603f3d011682016040523d82523d5f602084013e611a45565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611a92576040519150601f19603f3d011682016040523d82523d5f602084013e611a97565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611ae4576040519150601f19603f3d011682016040523d82523d5f602084013e611ae9565b606091505b505f9250508b159050611bc557601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611b63573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b8891906121d3565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611c025750601354611c1d565b601f546001600160a01b0390811690861603611c1d57506014545b5f611c496012546064611c309190612127565b610fc184610fb46011548a6115cd90919063ffffffff16565b90505f611c67601154610fc1601054856115cd90919063ffffffff16565b90505f611c74838361152e565b305f90815260086020526040902054909150611c90908261156f565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611cbd908361156f565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f805160206121ff833981519152910160405180910390a38115611d4b57600554611d15908361152e565b6005556004546040518381526001600160a01b03918216918a16905f805160206121ff8339815191529060200160405180910390a35b611d55878461152e565b98975050505050505050565b5f8183611d815760405162461bcd60e51b81526004016108759190611d8d565b505f6111678486612108565b5f6020808352835180828501525f5b81811015611db857858101830151858201604001528201611d9c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611dee575f80fd5b919050565b5f8060408385031215611e04575f80fd5b611e0d83611dd8565b946020939093013593505050565b5f8060408385031215611e2c575f80fd5b50508035926020909101359150565b5f805f60608486031215611e4d575f80fd5b611e5684611dd8565b9250611e6460208501611dd8565b9150604084013590509250925092565b8015158114610dc8575f80fd5b5f805f60408486031215611e93575f80fd5b833567ffffffffffffffff80821115611eaa575f80fd5b818601915086601f830112611ebd575f80fd5b813581811115611ecb575f80fd5b8760208260051b8501011115611edf575f80fd5b60209283019550935050840135611ef581611e74565b809150509250925092565b5f60208284031215611f10575f80fd5b61094082611dd8565b5f805f805f60a08688031215611f2d575f80fd5b611f3686611dd8565b9450611f4460208701611dd8565b9350611f5260408701611dd8565b9250611f6060608701611dd8565b9150611f6e60808701611dd8565b90509295509295909350565b5f805f805f8060c08789031215611f8f575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611fc9575f80fd5b813561094081611e74565b5f805f60608486031215611fe6575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561200d575f80fd5b5035919050565b5f8060408385031215612025575f80fd5b8235611e0d81611e74565b5f8060408385031215612041575f80fd5b61204a83611dd8565b915061205860208401611dd8565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016120cf576120cf6120aa565b5060010190565b5f602082840312156120e6575f80fd5b5051919050565b5f602082840312156120fd575f80fd5b815161094081611e74565b5f8261212257634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610833576108336120aa565b81810381811115610833576108336120aa565b80820180821115610833576108336120aa565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121b25784516001600160a01b03168352938301939183019160010161218d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156121e5575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122055e742fd651d3a152365a8eefe0dd77af143864fa93f9e7ccbe0c2d254d6d99964736f6c63430008150033

Deployed Bytecode Sourcemap

8879:14100:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10552:27;;;;;;;;;;-1:-1:-1;10552:27:0;;;;-1:-1:-1;;;10552:27:0;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;10552:27:0;;;;;;;;10675:55;;;;;;;;;;;;;;;;;;;352:25:1;;;340:2;325:18;10675:55:0;206:177:1;12218:80:0;;;;;;;;;;-1:-1:-1;12290:5:0;;;;;;;;;;;;-1:-1:-1;;;12290:5:0;;;;12218:80;;;;;;;:::i;10511:31::-;;;;;;;;;;-1:-1:-1;10511:31:0;;;;-1:-1:-1;;;10511:31:0;;;;;;12640:216;;;;;;;;;;-1:-1:-1;12640:216:0;;;;;:::i;:::-;;:::i;22753:150::-;;;;;;;;;;-1:-1:-1;22753:150:0;;;;;:::i;:::-;;:::i;11948:88::-;;;;;;;;;;-1:-1:-1;12021:12:0;;11948:88;;22243:173;;;;;;;;;;-1:-1:-1;22243:173:0;;;;;:::i;:::-;;:::i;:::-;;13158:370;;;;;;;;;;-1:-1:-1;13158:370:0;;;;;:::i;:::-;;:::i;18576:138::-;;;;;;;;;;;;;:::i;22428:142::-;;;;;;;;;;;;;:::i;12042:80::-;;;;;;;;;;-1:-1:-1;12042:80:0;;9220:1;2106:36:1;;2094:2;2079:18;12042:80:0;1964:184:1;18186:208:0;;;;;;;;;;-1:-1:-1;18186:208:0;;;;;:::i;:::-;;:::i;17289:136::-;;;;;;;;;;;;;:::i;12864:122::-;;;;;;;;;;-1:-1:-1;12864:122:0;;;;;:::i;:::-;;:::i;19010:100::-;;;;;;;;;;;;;:::i;10638:30::-;;;;;;;;;;-1:-1:-1;10638:30:0;;;;;;;;12388:105;;;;;;;;;;-1:-1:-1;12388:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12472:18:0;12454:7;12472:18;;;:9;:18;;;;;;;12388:105;6936:148;;;;;;;;;;;;;:::i;17556:271::-;;;;;;;;;;-1:-1:-1;17556:271:0;;;;;:::i;:::-;;:::i;9359:63::-;;;;;;;;;;;;;;;;9292:60;;;;;;;;;;;;;;;;21629:443;;;;;;;;;;-1:-1:-1;21629:443:0;;;;;:::i;:::-;;:::i;21021:600::-;;;;;;;;;;-1:-1:-1;21021:600:0;;;;;:::i;:::-;;:::i;12304:78::-;;;;;;;;;;-1:-1:-1;12356:7:0;6787:6;-1:-1:-1;;;;;6787:6:0;12304:78;;;-1:-1:-1;;;;;4403:32:1;;;4385:51;;4373:2;4358:18;12304:78:0;4239:203:1;17433:115:0;;;;;;;;;;;;;:::i;18094:84::-;;;;;;;;;;-1:-1:-1;18094:84:0;;;;;:::i;:::-;;:::i;6722:79::-;;;;;;;;;;-1:-1:-1;6760:7:0;6787:6;-1:-1:-1;;;;;6787:6:0;6722:79;;12128:84;;;;;;;;;;-1:-1:-1;12202:7:0;;;;;;;;;;;;-1:-1:-1;;;12202:7:0;;;;12128:84;;10479:19;;;;;;;;;;-1:-1:-1;10479:19:0;;;;-1:-1:-1;;;;;10479:19:0;;;12994:156;;;;;;;;;;-1:-1:-1;12994:156:0;;;;;:::i;:::-;;:::i;17835:250::-;;;;;;;;;;-1:-1:-1;17835:250:0;;;;;:::i;:::-;;:::i;6342:21::-;;;;;;;;;;-1:-1:-1;6342:21:0;;;;-1:-1:-1;;;;;6342:21:0;;;13540:217;;;;;;;;;;-1:-1:-1;13540:217:0;;;;;:::i;:::-;;:::i;22080:155::-;;;;;;;;;;-1:-1:-1;22080:155:0;;;;;:::i;:::-;;:::i;10586:40::-;;;;;;;;;;-1:-1:-1;10586:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18402:166;;;;;;;;;;;;;:::i;18722:139::-;;;;;;;;;;;;;:::i;22578:167::-;;;;;;;;;;-1:-1:-1;22578:167:0;;;;;:::i;:::-;;:::i;17073:201::-;;;;;;;;;;-1:-1:-1;17073:201:0;;;;;:::i;:::-;;:::i;12499:133::-;;;;;;;;;;-1:-1:-1;12499:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12601:19:0;;;12583:7;12601:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12499:133;7092:244;;;;;;;;;;-1:-1:-1;7092:244:0;;;;;:::i;:::-;;:::i;18869:129::-;;;;;;;;;;;;;:::i;10409:24::-;;;;;;;;;;-1:-1:-1;10409:24:0;;;;-1:-1:-1;;;;;10409:24:0;;;12640:216;12744:10;12715:4;12732:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12732:32:0;;;;;;;;;;:41;;;12789:37;12715:4;;12732:32;;12789:37;;;;12767:6;352:25:1;;340:2;325:18;;206:177;12789:37:0;;;;;;;;-1:-1:-1;12844:4:0;12640:216;;;;;:::o;22753:150::-;22833:4;22889:6;22857:29;22877:8;22857:19;:29::i;:::-;:38;;22753:150;-1:-1:-1;;;22753:150:0:o;22243:173::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;;;;;;;;;22331:15:::1;:25:::0;;;;22367:26:::1;:41:::0;22243:173::o;13158:370::-;-1:-1:-1;;;;;13278:19:0;;13258:4;13278:19;;;:11;:19;;;;;;;;13298:10;13278:31;;;;;;;;-1:-1:-1;;13278:52:0;13275:186;;13380:69;;;;;;;;;;;-1:-1:-1;;;13380:69:0;;;;;;;;-1:-1:-1;;;;;13380:19:0;;-1:-1:-1;13380:19:0;;;:11;:19;;;;;13400:10;13380:31;;;;;;;;;;:69;;13416:6;;13380:35;:69::i;:::-;-1:-1:-1;;;;;13346:19:0;;;;;;:11;:19;;;;;;;;13366:10;13346:31;;;;;;;:103;13275:186;13480:40;13494:6;13502:9;13513:6;13480:13;:40::i;:::-;13473:47;;13158:370;;;;;;:::o;18576:138::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;18643:3:::1;18629:11;:17:::0;18672:3:::1;18657:12;:18:::0;-1:-1:-1;18686:16:0::1;:20:::0;18576:138::o;22428:142::-;22556:4;;-1:-1:-1;;;;;22556:4:0;22481:7;12472:18;;;:9;:18;;;;;;22508:54;;22535:4;;-1:-1:-1;;;;;22535:4:0;12454:7;12472:18;;;:9;:18;;;;;;22508:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;22501:61;;22428:142;:::o;18186:208::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;18292:9:::1;18287:100;18303:20:::0;;::::1;18287:100;;;18369:6;18345:7;:21;18353:9;;18363:1;18353:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18345:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18345:21:0;:30;;-1:-1:-1;;18345:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18325:3:::1;::::0;::::1;:::i;:::-;;;18287:100;;;;18186:208:::0;;;:::o;17289:136::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;17365:12:::1;::::0;17347:15:::1;:30:::0;;;17388:12:::1;:27:::0;17289:136::o;12864:122::-;12919:4;12943:35;12951:7;-1:-1:-1;;12943:7:0;:35::i;19010:100::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;19059:11:::1;:18:::0;;-1:-1:-1;;;;19088:14:0;-1:-1:-1;;;19088:14:0;;;19010:100::o;6936:148::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;7043:1:::1;7027:6:::0;;7006:40:::1;::::0;-1:-1:-1;;;;;7027:6:0;;::::1;::::0;7006:40:::1;::::0;7043:1;;7006:40:::1;7074:1;7057:19:::0;;-1:-1:-1;;;;;;7057:19:0::1;::::0;;6936:148::o;17556:271::-;17635:4;17662:6;17672:1;17662:11;17659:95;;17698:44;;-1:-1:-1;;;17698:44:0;;17736:4;17698:44;;;4385:51:1;-1:-1:-1;;;;;17698:29:0;;;;;4358:18:1;;17698:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17689:53;;17659:95;17800:10;;17771:48;;-1:-1:-1;;;17771:48:0;;-1:-1:-1;;;;;17800:10:0;;;17771:48;;;7132:51:1;7199:18;;;7192:34;;;17771:28:0;;;;;;7105:18:1;;17771:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21629:443::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;21828:10:::1;:24:::0;;-1:-1:-1;;;;;;21828:24:0;;::::1;-1:-1:-1::0;;;;;21828:24:0;;::::1;;::::0;;;21863:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21918:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21969:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;22020:20:::1;:44:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;21629:443::o;21021:600::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;21204:12:::1;:28:::0;;;21243:12:::1;:28:::0;;;21282:12:::1;:28:::0;;;21321:10:::1;:24:::0;;;21356:10:::1;:24:::0;;;21402:85:::1;21369:11:::0;21402:68:::1;21334:11:::0;21402:68;21297:13;21402:68;21219:13;21258;21402:17:::1;:32::i;:::-;:36:::0;::::1;:51::i;:85::-;21391:8;:96:::0;21498:14:::1;:32:::0;;;21560:18:::1;21577:1;21515:15:::0;21560:18:::1;:::i;:::-;21549:8;;:29;21541:71;;;::::0;-1:-1:-1;;;21541:71:0;;7911:2:1;21541:71:0::1;::::0;::::1;7893:21:1::0;7950:2;7930:18;;;7923:30;7989:31;7969:18;;;7962:59;8038:18;;21541:71:0::1;7709:353:1::0;21541:71:0::1;21021:600:::0;;;;;;:::o;17433:115::-;17487:18;;17479:59;;-1:-1:-1;;;;;17487:18:0;;;;17516:21;17479:59;;;;;17487:18;17479:59;17487:18;17479:59;17516:21;17487:18;17479:59;;;;;;;;;;;;;;;;;;;;;17433:115::o;18094:84::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;18153:7:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;18153:17:0::1;-1:-1:-1::0;;;;18153:17:0;;::::1;::::0;;;::::1;::::0;;18094:84::o;12994:156::-;13074:4;13098:44;13112:10;13124:9;13135:6;13098:13;:44::i;17835:250::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;17955:12:::1;:27:::0;;;;17993:11:::1;:25:::0;;;;18029:16:::1;:32:::0;17835:250::o;13540:217::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;13657:4:::1;13642:12;;:19;;;;:::i;:::-;13623:15;;:38;;13615:47;;;::::0;::::1;;13727:4;13708:14;13693:12;;:29;;;;:::i;:::-;13692:39;;;;:::i;:::-;13674:15;:57:::0;-1:-1:-1;13540:217:0:o;22080:155::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;22171:11:::1;:22:::0;;-1:-1:-1;;22171:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;22204:13:::1;:23:::0;22080:155::o;18402:166::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;18453:7:::1;:15:::0;;-1:-1:-1;;;;18453:15:0::1;::::0;;18493:3:::1;18479:11;:17:::0;18522:4:::1;18507:12;:19:::0;;;18453:7:::1;18537:23:::0;18402:166::o;18722:139::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;18790:3:::1;18776:11;:17:::0;18819:3:::1;18804:12;:18:::0;-1:-1:-1;18833:16:0::1;:20:::0;18722:139::o;22578:167::-;22646:7;22673:64;22714:22;:20;:22::i;:::-;22696:4;;-1:-1:-1;;;;;22696:4:0;12454:7;12472:18;;;:9;:18;;;;;;22673:36;;22686:22;;22706:1;;22686:15;:19;;:22::i;:::-;22673:8;;:12;:36::i;:::-;:40;;:64::i;17073:201::-;17202:18;;17162:21;;-1:-1:-1;;;;;17202:18:0;17194:72;17262:3;17231:28;17243:16;17162:21;17231:28;:::i;:::-;:34;;;;:::i;:::-;17194:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17131:143;17073:201;:::o;7092:244::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7181:22:0;::::1;7173:73;;;::::0;-1:-1:-1;;;7173:73:0;;8442:2:1;7173:73:0::1;::::0;::::1;8424:21:1::0;8481:2;8461:18;;;8454:30;8520:34;8500:18;;;8493:62;-1:-1:-1;;;8571:18:1;;;8564:36;8617:19;;7173:73:0::1;8240:402:1::0;7173:73:0::1;7283:6;::::0;;7262:38:::1;::::0;-1:-1:-1;;;;;7262:38:0;;::::1;::::0;7283:6;::::1;::::0;7262:38:::1;::::0;::::1;7311:6;:17:::0;;-1:-1:-1;;;;;;7311:17:0::1;-1:-1:-1::0;;;;;7311:17:0;;;::::1;::::0;;;::::1;::::0;;7092:244::o;18869:129::-;6849:6;;-1:-1:-1;;;;;6849:6:0;6159:10;6849:22;6841:67;;;;-1:-1:-1;;;6841:67:0;;;;;;;:::i;:::-;18929:2:::1;18915:11;:16:::0;;;18942:12:::1;:17:::0;-1:-1:-1;18970:16:0::1;:20:::0;18869:129::o;4323:192::-;4409:7;4445:12;4437:6;;;;4429:29;;;;-1:-1:-1;;;4429:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4469:9:0;4481:5;4485:1;4481;:5;:::i;:::-;4469:17;4323:192;-1:-1:-1;;;;;4323:192:0:o;13776:1418::-;13888:6;;13868:4;;13888:6;;13885:63;;;13904:41;13919:6;13927:9;13938:6;13904:14;:41::i;:::-;13897:48;;;;13885:63;-1:-1:-1;;;;;13964:22:0;;;;;;:14;:22;;;;;;;;13963:23;:53;;;;-1:-1:-1;;;;;;13991:25:0;;;;;;:14;:25;;;;;;;;13990:26;13963:53;13960:236;;;14040:11;;-1:-1:-1;;;14040:11:0;;;;14032:43;;;;-1:-1:-1;;;14032:43:0;;8982:2:1;14032:43:0;;;8964:21:1;9021:2;9001:18;;;8994:30;-1:-1:-1;;;9040:18:1;;;9033:50;9100:18;;14032:43:0;8780:344:1;14032:43:0;14104:7;;-1:-1:-1;;;14104:7:0;;;;14101:84;;;-1:-1:-1;;;;;14139:18:0;;;;;;:7;:18;;;;;;;;14131:39;;;;-1:-1:-1;;;14131:39:0;;9331:2:1;14131:39:0;;;9313:21:1;9370:1;9350:18;;;9343:29;-1:-1:-1;;;9388:18:1;;;9381:39;9437:18;;14131:39:0;9129:332:1;14131:39:0;-1:-1:-1;;;;;14228:22:0;;;;;;:14;:22;;;;;;;;14227:23;:53;;;;-1:-1:-1;;;;;;14254:26:0;;14275:4;14254:26;;14227:53;:84;;;;-1:-1:-1;14306:4:0;;-1:-1:-1;;;;;14285:26:0;;;14306:4;;14285:26;;14227:84;:105;;;;-1:-1:-1;14328:4:0;;-1:-1:-1;;;;;14315:17:0;;;14328:4;;14315:17;;14227:105;:140;;;;-1:-1:-1;14349:18:0;;-1:-1:-1;;;;;14336:31:0;;;14349:18;;14336:31;;14227:140;:177;;;;-1:-1:-1;14384:20:0;;-1:-1:-1;;;;;14371:33:0;;;14384:20;;14371:33;;14227:177;:208;;;;-1:-1:-1;;;;;;14409:26:0;;;;;;:15;:26;;;;;;;;14408:27;14227:208;14223:400;;;-1:-1:-1;;;;;12472:18:0;;14451;12472;;;:9;:18;;;;;;14540:15;;14516:19;14529:6;12472:18;14516:19;:::i;:::-;14515:40;;14507:114;;;;-1:-1:-1;;;14507:114:0;;9798:2:1;14507:114:0;;;9780:21:1;9837:2;9817:18;;;9810:30;9876:34;9856:18;;;9849:62;9947:32;9927:18;;;9920:60;9997:19;;14507:114:0;9596:426:1;14507:114:0;14436:187;14223:400;14688:28;14701:6;14709;14688:12;:28::i;:::-;14733:16;:14;:16::i;:::-;14730:35;;;14752:10;:8;:10::i;:::-;14845:53;;;;;;;;;;;-1:-1:-1;;;14845:53:0;;;;;;;;-1:-1:-1;;;;;14845:17:0;;-1:-1:-1;14845:17:0;;;:9;:17;;;;;;;;:53;;14867:6;;14845:21;:53::i;:::-;-1:-1:-1;;;;;14825:17:0;;;;;;:9;:17;;;;;;;;:73;;;;14937:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;14960:22:0;;;;;;:11;:22;;;;;;;;14937:45;14936:93;;14995:34;15003:6;15011;15019:9;14995:7;:34::i;:::-;14936:93;;;14986:6;14936:93;-1:-1:-1;;;;;15063:20:0;;;;;;:9;:20;;;;;;14911:118;;-1:-1:-1;15063:40:0;;14911:118;15063:24;:40::i;:::-;-1:-1:-1;;;;;15040:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15121:43;;;;;;-1:-1:-1;;;;;;;;;;;15121:43:0;;;15149:14;352:25:1;;340:2;325:18;;206:177;15121:43:0;;;;;;;;-1:-1:-1;15182:4:0;;13776:1418;-1:-1:-1;;;;13776:1418:0:o;4181:136::-;4239:7;4266:43;4270:1;4273;4266:43;;;;;;;;;;;;;;;;;:3;:43::i;3994:181::-;4052:7;;4084:5;4088:1;4084;:5;:::i;:::-;4072:17;;4113:1;4108;:6;;4100:46;;;;-1:-1:-1;;;4100:46:0;;10229:2:1;4100:46:0;;;10211:21:1;10268:2;10248:18;;;10241:30;10307:29;10287:18;;;10280:57;10354:18;;4100:46:0;10027:351:1;4521:250:0;4579:7;4603:1;4608;4603:6;4599:47;;-1:-1:-1;4633:1:0;4626:8;;4599:47;4658:9;4670:5;4674:1;4670;:5;:::i;:::-;4658:17;-1:-1:-1;4703:1:0;4694:5;4698:1;4658:17;4694:5;:::i;:::-;:10;4686:56;;;;-1:-1:-1;;;4686:56:0;;10585:2:1;4686:56:0;;;10567:21:1;10624:2;10604:18;;;10597:30;10663:34;10643:18;;;10636:62;-1:-1:-1;;;10714:18:1;;;10707:31;10755:19;;4686:56:0;10383:397:1;4777:132:0;4835:7;4862:39;4866:1;4869;4862:39;;;;;;;;;;;;;;;;;:3;:39::i;15206:330::-;15336:53;;;;;;;;;;;-1:-1:-1;;;15336:53:0;;;;;;;;-1:-1:-1;;;;;15336:17:0;;15299:4;15336:17;;;:9;:17;;;;;;;:53;;15358:6;;15336:21;:53::i;:::-;-1:-1:-1;;;;;15316:17:0;;;;;;;:9;:17;;;;;;:73;;;;15423:20;;;;;;;:32;;15448:6;15423:24;:32::i;:::-;-1:-1:-1;;;;;15400:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15471:35;;;;;;-1:-1:-1;;;;;;;;;;;15471:35:0;;;15499:6;352:25:1;;340:2;325:18;;206:177;15471:35:0;;;;;;;;-1:-1:-1;15524:4:0;15206:330;;;;;:::o;15544:166::-;15641:12;;15631:6;:22;;:49;;;-1:-1:-1;;;;;;15657:23:0;;;;;;:15;:23;;;;;;;;15631:49;15623:79;;;;-1:-1:-1;;;15623:79:0;;10987:2:1;15623:79:0;;;10969:21:1;11026:2;11006:18;;;10999:30;-1:-1:-1;;;11045:18:1;;;11038:47;11102:18;;15623:79:0;10785:341:1;15623:79:0;15544:166;;:::o;16868:197::-;16955:4;;16917;;-1:-1:-1;;;;;16955:4:0;16941:10;:18;;;;:38;;-1:-1:-1;16973:6:0;;;;16972:7;16941:38;:62;;;;-1:-1:-1;16992:11:0;;;;16941:62;:116;;;;-1:-1:-1;;17044:13:0;;17034:4;17016:24;;;;:9;:24;;;;;;:41;;;16868:197::o;19126:1886::-;10778:6;:13;;-1:-1:-1;;10778:13:0;10787:4;10778:13;;;19221:15:::1;::::0;19238:26:::1;::::0;10778:6;;19205:60:::1;::::0;:15:::1;:60::i;:::-;:79;;19272:12;;19205:79;;;19268:1;19205:79;19175:109;;19295:23;19321:59;19378:1;19321:52;19364:8;;19321:38;19339:19;19321:13;;:17;;:38;;;;:::i;:59::-;19295:85;;19391:20;19414:34;19432:15;19414:13;;:17;;:34;;;;:::i;:::-;19485:16;::::0;;19499:1:::1;19485:16:::0;;;;;::::1;::::0;;19391:57;;-1:-1:-1;19461:21:0::1;::::0;19485:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19485:16:0::1;19461:40;;19530:4;19512;19517:1;19512:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19512:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;19556:4:::1;::::0;19546:7;;19556:4;::::1;::::0;19546;;19556;;19546:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;19546:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;19631:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;19631:188:0;;19597:21:::1;::::0;19631:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;19703:12;;19573:21:::1;::::0;19746:4;;19773::::1;::::0;19793:15:::1;::::0;19631:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19832:17;19852:40;19878:13;19852:21;:25;;:40;;;;:::i;:::-;19832:60:::0;-1:-1:-1;19905:19:0::1;19927:40;19940:26;:19:::0;19964:1:::1;19940:23;:26::i;:::-;19927:8;::::0;;:12:::1;:40::i;:::-;19905:62:::0;-1:-1:-1;19988:26:0::1;20017:58;20073:1;20017:51;19905:62:::0;20017:51;:9;20031:19;20017:13:::1;:34::i;:58::-;19988:87;;20086:26;20115:44;20147:11;20115:27;20129:12;;20115:9;:13;;:27;;;;:::i;:44::-;20086:73;;20170:26;20199:44;20231:11;20199:27;20213:12;;20199:9;:13;;:27;;;;:::i;:44::-;20170:73;;20254:24;20281:42;20311:11;20281:25;20295:10;;20281:9;:13;;:25;;;;:::i;:42::-;20365:20;::::0;20357:65:::1;::::0;20254:69;;-1:-1:-1;20337:15:0::1;::::0;-1:-1:-1;;;;;20365:20:0;;::::1;::::0;20399:18;;20337:15;20357:65;20337:15;20357:65;20399:18;20365:20;20357:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20457:18:0::1;::::0;20449:61:::1;::::0;20336:86;;-1:-1:-1;;;;;;20457:18:0::1;::::0;20489:16;;20449:61:::1;::::0;;;20489:16;20457:18;20449:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20545:20:0::1;::::0;20537:65:::1;::::0;20433:77;;-1:-1:-1;;;;;;20545:20:0::1;::::0;20579:18;;20537:65:::1;::::0;;;20579:18;20545:20;20537:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20636:5:0::1;::::0;-1:-1:-1;;20657:19:0;;;-1:-1:-1;20654:351:0::1;;20692:6;::::0;20866:10:::1;::::0;20692:233:::1;::::0;-1:-1:-1;;;20692:233:0;;20768:4:::1;20692:233;::::0;::::1;12799:34:1::0;12849:18;;;12842:34;;;20692:6:0::1;12892:18:1::0;;;12885:34;;;12935:18;;;12928:34;-1:-1:-1;;;;;20866:10:0;;::::1;12978:19:1::0;;;12971:44;20895:15:0::1;13031:19:1::0;;;13024:35;20692:6:0;::::1;::::0;:22:::1;::::0;20722:18;;12733:19:1;;20692:233:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;20945:48:0::1;::::0;;13555:25:1;;;13611:2;13596:18;;13589:34;;;20945:48:0::1;::::0;-1:-1:-1;13528:18:1;20945:48:0::1;;;;;;;20654:351;-1:-1:-1::0;;10796:6:0;:14;;-1:-1:-1;;10796:14:0;;;-1:-1:-1;;;;;;;;;;19126:1886:0:o;15840:1020::-;15975:16;;16020:4;;15926:7;;15975:16;-1:-1:-1;;;;;16020:4:0;;;16007:17;;;;16004:146;;-1:-1:-1;16052:12:0;;16004:146;;;16095:4;;-1:-1:-1;;;;;16095:4:0;;;16085:14;;;;16082:68;;-1:-1:-1;16127:11:0;;16082:68;16162:17;16182:60;16221:14;;16238:3;16221:20;;;;:::i;:::-;16182:34;16207:8;16182:20;16193:8;;16182:6;:10;;:20;;;;:::i;:60::-;16162:80;;16253:21;16277:39;16307:8;;16277:25;16291:10;;16277:9;:13;;:25;;;;:::i;:39::-;16253:63;-1:-1:-1;16327:22:0;16352:28;:9;16253:63;16352:13;:28::i;:::-;16438:4;16420:24;;;;:9;:24;;;;;;16327:53;;-1:-1:-1;16420:44:0;;16327:53;16420:28;:44::i;:::-;16411:4;16393:24;;;;:9;:24;;;;;;:71;;;;16517:18;;-1:-1:-1;;;;;16517:18:0;16507:29;;;;:48;;16541:13;16507:33;:48::i;:::-;16485:18;;-1:-1:-1;;;;;16485:18:0;;;16475:29;;;;:9;:29;;;;;;;;;:80;;;;16571:47;352:25:1;;;16596:4:0;;16571:47;;;;-1:-1:-1;;;;;;;;;;;16571:47:0;325:18:1;16571:47:0;;;;;;;16652:17;;16649:163;;16700:12;;:31;;16717:13;16700:16;:31::i;:::-;16685:12;:46;16768:4;;16751:37;;352:25:1;;;-1:-1:-1;;;;;16768:4:0;;;;16751:37;;;-1:-1:-1;;;;;;;;;;;16751:37:0;340:2:1;325:18;16751:37:0;;;;;;;16649:163;16831:21;:6;16842:9;16831:10;:21::i;:::-;16824:28;15840:1020;-1:-1:-1;;;;;;;;15840:1020:0:o;4915:189::-;5001:7;5036:12;5029:5;5021:28;;;;-1:-1:-1;;;5021:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5060:9:0;5072:5;5076:1;5072;:5;:::i;388:548:1:-;500:4;529:2;558;547:9;540:21;590:6;584:13;633:6;628:2;617:9;613:18;606:34;658:1;668:140;682:6;679:1;676:13;668:140;;;777:14;;;773:23;;767:30;743:17;;;762:2;739:26;732:66;697:10;;668:140;;;672:3;857:1;852:2;843:6;832:9;828:22;824:31;817:42;927:2;920;916:7;911:2;903:6;899:15;895:29;884:9;880:45;876:54;868:62;;;;388:548;;;;:::o;941:173::-;1009:20;;-1:-1:-1;;;;;1058:31:1;;1048:42;;1038:70;;1104:1;1101;1094:12;1038:70;941:173;;;:::o;1119:254::-;1187:6;1195;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1287:29;1306:9;1287:29;:::i;:::-;1277:39;1363:2;1348:18;;;;1335:32;;-1:-1:-1;;;1119:254:1:o;1378:248::-;1446:6;1454;1507:2;1495:9;1486:7;1482:23;1478:32;1475:52;;;1523:1;1520;1513:12;1475:52;-1:-1:-1;;1546:23:1;;;1616:2;1601:18;;;1588:32;;-1:-1:-1;1378:248:1:o;1631:328::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1816:29;1835:9;1816:29;:::i;:::-;1806:39;;1864:38;1898:2;1887:9;1883:18;1864:38;:::i;:::-;1854:48;;1949:2;1938:9;1934:18;1921:32;1911:42;;1631:328;;;;;:::o;2153:118::-;2239:5;2232:13;2225:21;2218:5;2215:32;2205:60;;2261:1;2258;2251:12;2276:750;2368:6;2376;2384;2437:2;2425:9;2416:7;2412:23;2408:32;2405:52;;;2453:1;2450;2443:12;2405:52;2493:9;2480:23;2522:18;2563:2;2555:6;2552:14;2549:34;;;2579:1;2576;2569:12;2549:34;2617:6;2606:9;2602:22;2592:32;;2662:7;2655:4;2651:2;2647:13;2643:27;2633:55;;2684:1;2681;2674:12;2633:55;2724:2;2711:16;2750:2;2742:6;2739:14;2736:34;;;2766:1;2763;2756:12;2736:34;2821:7;2814:4;2804:6;2801:1;2797:14;2793:2;2789:23;2785:34;2782:47;2779:67;;;2842:1;2839;2832:12;2779:67;2873:4;2865:13;;;;-1:-1:-1;2897:6:1;-1:-1:-1;;2938:20:1;;2925:34;2968:28;2925:34;2968:28;:::i;:::-;3015:5;3005:15;;;2276:750;;;;;:::o;3031:186::-;3090:6;3143:2;3131:9;3122:7;3118:23;3114:32;3111:52;;;3159:1;3156;3149:12;3111:52;3182:29;3201:9;3182:29;:::i;3222:484::-;3317:6;3325;3333;3341;3349;3402:3;3390:9;3381:7;3377:23;3373:33;3370:53;;;3419:1;3416;3409:12;3370:53;3442:29;3461:9;3442:29;:::i;:::-;3432:39;;3490:38;3524:2;3513:9;3509:18;3490:38;:::i;:::-;3480:48;;3547:38;3581:2;3570:9;3566:18;3547:38;:::i;:::-;3537:48;;3604:38;3638:2;3627:9;3623:18;3604:38;:::i;:::-;3594:48;;3661:39;3695:3;3684:9;3680:19;3661:39;:::i;:::-;3651:49;;3222:484;;;;;;;;:::o;3711:523::-;3815:6;3823;3831;3839;3847;3855;3908:3;3896:9;3887:7;3883:23;3879:33;3876:53;;;3925:1;3922;3915:12;3876:53;-1:-1:-1;;3948:23:1;;;4018:2;4003:18;;3990:32;;-1:-1:-1;4069:2:1;4054:18;;4041:32;;4120:2;4105:18;;4092:32;;-1:-1:-1;4171:3:1;4156:19;;4143:33;;-1:-1:-1;4223:3:1;4208:19;4195:33;;-1:-1:-1;3711:523:1;-1:-1:-1;3711:523:1:o;4447:241::-;4503:6;4556:2;4544:9;4535:7;4531:23;4527:32;4524:52;;;4572:1;4569;4562:12;4524:52;4611:9;4598:23;4630:28;4652:5;4630:28;:::i;4693:316::-;4770:6;4778;4786;4839:2;4827:9;4818:7;4814:23;4810:32;4807:52;;;4855:1;4852;4845:12;4807:52;-1:-1:-1;;4878:23:1;;;4948:2;4933:18;;4920:32;;-1:-1:-1;4999:2:1;4984:18;;;4971:32;;4693:316;-1:-1:-1;4693:316:1:o;5014:180::-;5073:6;5126:2;5114:9;5105:7;5101:23;5097:32;5094:52;;;5142:1;5139;5132:12;5094:52;-1:-1:-1;5165:23:1;;5014:180;-1:-1:-1;5014:180:1:o;5199:309::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5380:9;5367:23;5399:28;5421:5;5399:28;:::i;5513:260::-;5581:6;5589;5642:2;5630:9;5621:7;5617:23;5613:32;5610:52;;;5658:1;5655;5648:12;5610:52;5681:29;5700:9;5681:29;:::i;:::-;5671:39;;5729:38;5763:2;5752:9;5748:18;5729:38;:::i;:::-;5719:48;;5513:260;;;;;:::o;6004:356::-;6206:2;6188:21;;;6225:18;;;6218:30;6284:34;6279:2;6264:18;;6257:62;6351:2;6336:18;;6004:356::o;6365:127::-;6426:10;6421:3;6417:20;6414:1;6407:31;6457:4;6454:1;6447:15;6481:4;6478:1;6471:15;6497:127;6558:10;6553:3;6549:20;6546:1;6539:31;6589:4;6586:1;6579:15;6613:4;6610:1;6603:15;6629:135;6668:3;6689:17;;;6686:43;;6709:18;;:::i;:::-;-1:-1:-1;6756:1:1;6745:13;;6629:135::o;6769:184::-;6839:6;6892:2;6880:9;6871:7;6867:23;6863:32;6860:52;;;6908:1;6905;6898:12;6860:52;-1:-1:-1;6931:16:1;;6769:184;-1:-1:-1;6769:184:1:o;7237:245::-;7304:6;7357:2;7345:9;7336:7;7332:23;7328:32;7325:52;;;7373:1;7370;7363:12;7325:52;7405:9;7399:16;7424:28;7446:5;7424:28;:::i;7487:217::-;7527:1;7553;7543:132;;7597:10;7592:3;7588:20;7585:1;7578:31;7632:4;7629:1;7622:15;7660:4;7657:1;7650:15;7543:132;-1:-1:-1;7689:9:1;;7487:217::o;8067:168::-;8140:9;;;8171;;8188:15;;;8182:22;;8168:37;8158:71;;8209:18;;:::i;8647:128::-;8714:9;;;8735:11;;;8732:37;;;8749:18;;:::i;9466:125::-;9531:9;;;9552:10;;;9549:36;;;9565:18;;:::i;11263:980::-;11525:4;11573:3;11562:9;11558:19;11604:6;11593:9;11586:25;11630:2;11668:6;11663:2;11652:9;11648:18;11641:34;11711:3;11706:2;11695:9;11691:18;11684:31;11735:6;11770;11764:13;11801:6;11793;11786:22;11839:3;11828:9;11824:19;11817:26;;11878:2;11870:6;11866:15;11852:29;;11899:1;11909:195;11923:6;11920:1;11917:13;11909:195;;;11988:13;;-1:-1:-1;;;;;11984:39:1;11972:52;;12079:15;;;;12044:12;;;;12020:1;11938:9;11909:195;;;-1:-1:-1;;;;;;;12160:32:1;;;;12155:2;12140:18;;12133:60;-1:-1:-1;;;12224:3:1;12209:19;12202:35;12121:3;11263:980;-1:-1:-1;;;11263:980:1:o;13070:306::-;13158:6;13166;13174;13227:2;13215:9;13206:7;13202:23;13198:32;13195:52;;;13243:1;13240;13233:12;13195:52;13272:9;13266:16;13256:26;;13322:2;13311:9;13307:18;13301:25;13291:35;;13366:2;13355:9;13351:18;13345:25;13335:35;;13070:306;;;;;:::o

Swarm Source

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