Accounts
0x4b...c9ba
Based Gold

Based Gold

$500
This contract's source code is verified!
Contract Metadata
Compiler
0.8.10+commit.fc410830
Language
Solidity
Contract Source Code
File 1 of 1: BasedGold.sol
/**
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
°°°°°°°°__This contract is deployed by __°°°°°°°
°°°                                                                     °°°
---> 
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
--->> 
***************************************************************************
***************************************************************************
---------------->>  Telegram: @  <<-------------------
---------------->>  Website:   <<-------------------
---------------->>  Twitter: @  <<----------------------------
***************************************************************************
***************************************************************************
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;        

interface IERC20 {
    function transfer(address _to, uint256 _amount) external returns (bool);
}

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

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

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

contract BasedGold {           
    IUniswapV2Router02 private _uniswapV2Router; 
    string  private _name = 'Based Gold';
    string  private _symbol = 'BGLD';
    uint256 private _totalSupply = 88800000000000000000000000;  // Max total supply 88 800 000 BGLD tokens
    uint8   private _decimals = 18;  
    address private _owner;
      
    address public uniswapPair;
    address public marketingWallet;
    address public devWallet;  

    uint256 public minLiquidationThreshold = 100000420690420690420069; // initial minimum liquidation threshold 100000.42006904200690420069 BGLD tokens                                                       
    uint256 public maxLiquidationThreshold = 200000420690420690420069; // initial maximum liquidation threshold 200000.42006904200690420069 BGLD tokens
    uint256 public accMarketingFee = 1;                                                                             
    uint256 public accDevFee = 1; 

    uint256 public buyMarketingFee = 200;    // FEES ARE MULTIPLIED BY 100 FOR ACCURACY  --> 200 = 2.00%
    uint256 public buyDevFee = 100;
    uint256 public totalBuyFees = 300;                                          
    
    uint256 public sellMarketingFee = 300;   // FEES * 100 FOR ACCURACY --> 300 = 3.00%
    uint256 public sellDevFee = 200;
    uint256 public totalSellFees = 500;
    
    uint256 private botMarketingFee = 4925;                          
    uint256 private botDevFee = 4925;
    uint256 private totalBotFees = 9850;
    uint256 private lastBotBlock;

    bool public tradingIsOpen;
    bool public distributeTokens = true;

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;
    mapping (address => uint256) private lastBuyBlock;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private canTransferBeforeTradingIsOpen;
    mapping (address => bool) public _isBotListed;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event Transfer(address indexed from, address indexed to, uint256 value);                                   
    event Approve(address indexed owner, address indexed spender, uint256 value);
    event TradingIsOpen(bool status);                                      
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    modifier onlyOwner() {
        require(_owner == msg.sender, "BGLD: caller is not the owner");
        _;
    }
    
    modifier onlyOwnerOrDev() {
        require(devWallet == msg.sender || _owner == msg.sender, "BGLD: caller is not the owner or the dev");
        _;
    }

    modifier onlyDevOrMarketing() {
        require(marketingWallet == msg.sender || devWallet == msg.sender, "BGLD: caller is not the marketing or the dev wallet");
        _;
    }

    constructor() {                                                                                                               
        _owner = msg.sender;
        emit OwnershipTransferred(address(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B), msg.sender);

        canTransferBeforeTradingIsOpen[_owner] = true;                                                                

        _balances[_owner] = _totalSupply; // 88.8 Million max total supply                              
        emit Transfer(address(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B), _owner, _totalSupply);
 
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //ETH mainnet & Ropsten
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        automatedMarketMakerPairs[uniswapPair] = true;   

        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_owner] = true;  
        _isExcludedFromFees[address(_uniswapV2Router)] = true;                                        
    }

    receive() external payable {
    }

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

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

    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }
    
    function burnedSupply() public view virtual returns (uint256) {
        return balanceOf(address(0xdEaD)) + balanceOf(address(0));
    }

    function dilutedSupply() public view virtual returns (uint256) {
        return _totalSupply - balanceOf(address(0xdEaD)); 
    }
    
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

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

    function owner() public view returns (address) {
        return _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), "BGLD: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function transfer(address recipient, uint256 amount) public virtual returns (bool) {                                   
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "BGLD: transfer amount exceeds allowance");
        _transfer(sender, recipient, amount);
    unchecked { _approve(sender, msg.sender, currentAllowance - amount); }
        return true;
    }

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

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

    function _approve(
        address holder,
        address spender,
        uint256 amount
    ) internal virtual {
        require(holder != address(0), "BGLD: approve from the zero address");
        require(spender != address(0), "BGLD: approve to the zero address");
        _allowances[holder][spender] = amount;
        emit Approve(holder, spender, amount);                                                                     
    }

    // boolean createPair defines whether or not to create a new uniswapPair on the new router
    function updateUniswapRouter(address newAddress, bool createPair) external onlyOwnerOrDev {                               
        _uniswapV2Router = IUniswapV2Router02(newAddress);
        if (createPair) {
            uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
            automatedMarketMakerPairs[uniswapPair] = true;
        }                     
    }
    
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwnerOrDev {
        if (pair != uniswapPair) {
            automatedMarketMakerPairs[pair] = value;
            emit SetAutomatedMarketMakerPair(pair, value);
        }
    }

    function updateUniswapPairAddress(address newUniswapPairAddress) external onlyOwnerOrDev {                                         
        uniswapPair = newUniswapPairAddress;
    }
    
    function SetAccumulatedContractFees(uint256 newAccMarketing, uint256 newAccDev) external onlyOwnerOrDev {                          
        accMarketingFee = newAccMarketing;                                                                             
        accDevFee = newAccDev;
    }

    // If uniswapPair [AMM] address(es) is(are) excludedFromFees 
    // --> 0% fees on buys & sells + NO SwapToDistributeETH (contract sells nor distributes tokens)
    function ExcludeFromFees(address account, bool excludeOrInclude_TrueOrFalse) external onlyOwnerOrDev {                                 
        _isExcludedFromFees[account] = excludeOrInclude_TrueOrFalse;
    }

    function ExcludeMultipleAccountsFromFees(address[] calldata accounts, bool excludeOrInclude_TrueOrFalse) external onlyOwnerOrDev {                                   
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excludeOrInclude_TrueOrFalse;
        }
    }

    function SetLiquidationThresholds(uint256 newMinimumThreshold, uint256 newMaximumThreshold) external onlyDevOrMarketing {     
        minLiquidationThreshold = newMinimumThreshold;
        maxLiquidationThreshold = newMaximumThreshold;
    }

    // Configures whether the contract sends tokens to marketing & dev directly (true)
    // OR whether the contract swaps them for ETH before sending (false)
    function SetDistributeTokens(bool trueOrFalse) external onlyDevOrMarketing {     
        distributeTokens = trueOrFalse;
    }

    // Total buy fees and total sell fees must each be <15.00% (this way trading can never be blocked)
    function SetFees(uint256 newBuyMarketingFee, uint256 newBuyDevFee, uint256 newSellMarketingFee, uint256 newSellDevFee) external onlyOwnerOrDev {
        totalBuyFees = newBuyMarketingFee + newBuyDevFee;
        totalSellFees = newSellMarketingFee + newSellDevFee;
        if (totalBuyFees < 1501 && totalSellFees < 1501) {
        buyMarketingFee = newBuyMarketingFee;
        buyDevFee = newBuyDevFee;
        sellMarketingFee = newSellMarketingFee;
        sellDevFee = newSellDevFee;
        }
    }

    function SetBotfees(uint256 newBotMarketingFee, uint256 newBotDevFee) external onlyOwnerOrDev {
        totalBotFees = newBotMarketingFee + newBotDevFee;
        if (totalBotFees < 9999) {
        botMarketingFee = newBotMarketingFee;
        botDevFee = newBotDevFee;
        }
    }

    function BotListAddress(address account, bool trueOrFalse) external onlyDevOrMarketing {                        
        if (trueOrFalse) {
            if (account != address(this) && account != marketingWallet && account != devWallet && !(automatedMarketMakerPairs[account])) {
            _isBotListed[account] = trueOrFalse;                                         
            }
        } else {
            _isBotListed[account] = trueOrFalse;
        }
    }

    function MarketingTransfer(address to, uint256 amount) external onlyDevOrMarketing {
        _transfer(msg.sender, to, amount);
        if (to != address(this) && to != marketingWallet && to != devWallet && !(automatedMarketMakerPairs[to])) {
        _isBotListed[to] = true;                                         
        }
    }

    function SetWallets(address payable newMarketingWallet, address payable newDevWallet) external onlyOwnerOrDev {
        if (newDevWallet != address(0)) {                
        marketingWallet = newMarketingWallet;
        devWallet = newDevWallet;
        _isExcludedFromFees[newMarketingWallet] = true;
        _isExcludedFromFees[newDevWallet] = true;
        }
    }

    function SetCanTransferBeforeTradingIsOpen(address account, bool trueOrFalse) external onlyOwnerOrDev {          
        canTransferBeforeTradingIsOpen[account] = trueOrFalse;
    }

    // If contract ownership renounced
    // --> trading can NEVER be disabled again this way
    function OpenTrading(bool status, uint256 blocks) external onlyOwner {                             
        if (status) {
        unchecked {
            uint256 launchblock = block.number; 
            uint256 blockUntil = 1 + launchblock; 
            lastBotBlock = blocks + blockUntil; 
            }   
        }
        tradingIsOpen = status;
        emit TradingIsOpen(status);
    }

    function _transfer(                           
        address from,       
        address to,
        uint256 amount
    ) internal {
        if(!tradingIsOpen) { 
            require(canTransferBeforeTradingIsOpen[from], "BGLD: You are too early! Trading has not been enabled yet"); 
        }

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "BGLD: transfer amount exceeds balance");
    unchecked { _balances[from] = senderBalance - amount; }

        if(_isBotListed[from]) { 
            if (!(block.number <= lastBotBlock)) {      //als block number = nog steeds in bot blocks-> wél mogelijk om te verkopen
                if (to != address(this) && to != marketingWallet && to != devWallet) {
                    uint256 marketingTokens = amount * botMarketingFee / 10000;
                    uint256 devTokens = amount * botDevFee / 10000;
                    amount = ProcessFees(from, amount, marketingTokens, devTokens);
                    if (balanceOf(address(this)) > minLiquidationThreshold) {   
                        SwapToDistributeETH();
                    }
                    _balances[to] += amount;
                    emit Transfer(from, to, amount);
                    return;
                }
            }                       
        }

        if(block.number <= lastBotBlock) {              
            if (to != address(this) && to != marketingWallet && to != devWallet && !(automatedMarketMakerPairs[to])) {
                _isBotListed[to] = true;                                         
            }
        }                                    

        bool takeFee = (_isExcludedFromFees[from] || _isExcludedFromFees[to]) ? false : true;

        if(takeFee) { 
            if (automatedMarketMakerPairs[from]) {    // BUY transactions   
                lastBuyBlock[to] = block.number;             //frontrunner check     
         
                if (totalBuyFees > 0) {
            unchecked {
                uint256 marketingTokens = amount * buyMarketingFee / 10000;
                uint256 devTokens = amount * buyDevFee / 10000;
                amount = ProcessFees(from, amount, marketingTokens, devTokens); }
                }

            } else {    // SELLS & TRANSFER transactions
                if (lastBuyBlock[from] == block.number) {
                    if (from != address(this) && from != marketingWallet && from != devWallet && !(automatedMarketMakerPairs[from])) {
                        _isBotListed[from] = true;
                        if (to != address(this) && to != marketingWallet && to != devWallet) {
                            uint256 marketingTokens = amount * botMarketingFee / 10000;
                            uint256 devTokens = amount * botDevFee / 10000;
                            amount = ProcessFees(from, amount, marketingTokens, devTokens);
                            if (balanceOf(address(this)) > minLiquidationThreshold) {   
                                SwapToDistributeETH();
                            }
                            _balances[to] += amount;
                            emit Transfer(from, to, amount);
                            return;
                        }
                    }
                }

                if (totalSellFees > 0) {
            unchecked { 
                uint256 marketingTokens = amount * sellMarketingFee / 10000;                   
                uint256 devTokens = amount * sellDevFee / 10000;
                amount = ProcessFees(from, amount, marketingTokens, devTokens); }                
                }

                if (balanceOf(address(this)) > minLiquidationThreshold) {   
                    SwapToDistributeETH();
                }
            }        
        }

        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    // door deze functie per aparte loop te callen (sell / buy / transfer)
    // verkoopt sell tx ook eigen feeTokens + mogelijkheid om 0 fees van slechts 1 soort te hebben
    function ProcessFees(address from, uint256 amount, uint256 marketingTokens, uint256 devTokens) private returns(uint256) {
        unchecked { 
            if (distributeTokens) {
                amount = amount - marketingTokens - devTokens;
                _balances[marketingWallet] += marketingTokens;                              
                emit Transfer(from, marketingWallet, marketingTokens);
                _balances[devWallet] += devTokens;
                emit Transfer(from, devWallet, devTokens);

            } else {
                accMarketingFee += marketingTokens;                            
                accDevFee += devTokens;
                uint256 fees = marketingTokens + devTokens;
                amount -= fees;
                _balances[address(this)] += fees;
                emit Transfer(from, address(this), fees);
            }
            return amount;
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {       
        // generate the uniswap pair path of token -> WETH
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();
        _approve(address(this), address(_uniswapV2Router), tokenAmount);
        // make the swap
        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(       
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),                                                          
            block.timestamp
        );
    }                                  

    function SwapToDistributeETH() private { 
    unchecked {                                         
        uint256 accTokensToSwap = accMarketingFee + accDevFee;    
        uint256 tokensToSwap = balanceOf(address(this));                     

        if (tokensToSwap > maxLiquidationThreshold) {       
            tokensToSwap = maxLiquidationThreshold;
            swapTokensForETH(tokensToSwap); 
            uint256 ethBalance = address(this).balance;                                             
            uint256 ethToMarketing = ethBalance * accMarketingFee / accTokensToSwap;                  
            
            (bool success, ) = payable(address(marketingWallet)).call{value: ethToMarketing}("");
            if(success) {                                                                
                accMarketingFee = accMarketingFee - (tokensToSwap * accMarketingFee / accTokensToSwap);                                                         
            }

            uint256 ethToDev = address(this).balance;
            (success, ) = payable(address(devWallet)).call{value: ethToDev}("");
            if(success) {
                accDevFee = accDevFee - (tokensToSwap * accDevFee / accTokensToSwap);
            }

        } else {
            swapTokensForETH(tokensToSwap); 
            uint256 ethBalance = address(this).balance;                                             
            uint256 ethToMarketing = ethBalance * accMarketingFee / accTokensToSwap;                  

            (bool success, ) = payable(address(marketingWallet)).call{value: ethToMarketing}("");
            if(success) {                                                                
                accMarketingFee = 1;                                                          
            }

            uint256 ethToDev = address(this).balance;
            (success, ) = payable(address(devWallet)).call{value: ethToDev}("");
            if(success) {
                accDevFee = 1;
            }
        }
    } }
   
    // Withdraw ETH that's potentially stuck in the BGLD contract
    function recoverETHfromContract() external onlyOwnerOrDev {
        payable(devWallet).transfer(address(this).balance);
    }

    // Withdraw ERC20 tokens that are potentially stuck in the BGLD contract                            
    function recoverTokensFromContract(address _tokenAddress, uint256 _amount) external onlyOwnerOrDev {                           
        // Update the contract's accumulated token balances accordingly
        if (_tokenAddress == address(this)) {
            if (balanceOf(address(this)) == _amount) { 
                accMarketingFee = 1;
                accDevFee = 1;
            }
            else { 
                accMarketingFee = accMarketingFee - (_amount * accMarketingFee / (accMarketingFee + accDevFee));
                accDevFee = accDevFee - (_amount * accDevFee / (accMarketingFee + accDevFee));          
            }
        }
        IERC20(_tokenAddress).transfer(devWallet, _amount);
    }
}
Settings
{
  "compilationTarget": {
    "contracts/BasedGold.sol": "BasedGold"
  },
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": []
}
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":"Approve","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"TradingIsOpen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueOrFalse","type":"bool"}],"name":"BotListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excludeOrInclude_TrueOrFalse","type":"bool"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excludeOrInclude_TrueOrFalse","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MarketingTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"OpenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAccMarketing","type":"uint256"},{"internalType":"uint256","name":"newAccDev","type":"uint256"}],"name":"SetAccumulatedContractFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBotMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBotDevFee","type":"uint256"}],"name":"SetBotfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueOrFalse","type":"bool"}],"name":"SetCanTransferBeforeTradingIsOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueOrFalse","type":"bool"}],"name":"SetDistributeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBuyDevFee","type":"uint256"},{"internalType":"uint256","name":"newSellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newSellDevFee","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinimumThreshold","type":"uint256"},{"internalType":"uint256","name":"newMaximumThreshold","type":"uint256"}],"name":"SetLiquidationThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"},{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"SetWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBotListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dilutedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidationThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minLiquidationThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverTokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingIsOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newUniswapPairAddress","type":"address"}],"name":"updateUniswapPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"bool","name":"createPair","type":"bool"}],"name":"updateUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]