{"id":1,"sourceCode":"//SPDX-License-Identifier: MIT \r\n/**\r\n *Submitted for verification at BscScan.com on 2022-03-14\r\n*/\r\n\r\n// TunnelRushCoin $_$\r\n\r\n// telegram : https://t.me/TunnelRushOfficial\r\npragma solidity ^0.8.11;\r\n\r\n\r\n\r\ninterface IERC20 {\r\n\r\n    function totalSupply() external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Returns the amount of tokens owned by `account`.\r\n     */\r\n    function balanceOf(address account) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transfer(address recipient, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Returns the remaining number of tokens that `spender` will be\r\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\r\n     * zero by default.\r\n     *\r\n     * This value changes when {approve} or {transferFrom} are called.\r\n     */\r\n\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\r\n     * that someone may use both the old and the new allowance by unfortunate\r\n     * transaction ordering. One possible solution to mitigate this race\r\n     * condition is to first reduce the spender's allowance to 0 and set the\r\n     * desired value afterwards:\r\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\r\n     *\r\n     * Emits an {Approval} event.\r\n     */\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\r\n     * allowance mechanism. `amount` is then deducted from the caller's\r\n     * allowance.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\r\n     * another (`to`).\r\n     *\r\n     * Note that `value` may be zero.\r\n     */\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n\r\n    /**\r\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\r\n     * a call to {approve}. `value` is the new allowance.\r\n     */\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n}\r\n\r\nlibrary SafeMath {\r\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        uint256 c = a + b;\r\n        require(c >= a, \"SafeMath: addition overflow\");\r\n\r\n        return c;\r\n    }\r\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        return sub(a, b, \"SafeMath: subtraction overflow\");\r\n    }\r\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\r\n        require(b <= a, errorMessage);\r\n        uint256 c = a - b;\r\n\r\n        return c;\r\n    }\r\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        if (a == 0) {\r\n            return 0;\r\n        }\r\n\r\n        uint256 c = a * b;\r\n        require(c / a == b, \"SafeMath: multiplication overflow\");\r\n\r\n        return c;\r\n    }\r\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        return div(a, b, \"SafeMath: division by zero\");\r\n    }\r\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\r\n        // Solidity only automatically asserts when dividing by 0\r\n        require(b > 0, errorMessage);\r\n        uint256 c = a / b;\r\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\r\n\r\n        return c;\r\n    }\r\n}\r\n\r\nabstract contract Context {\r\n    function _msgSender() internal view returns (address payable) {\r\n        return payable(msg.sender);\r\n    }\r\n\r\n    function _msgData() internal view returns (bytes memory) {\r\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\r\n        return msg.data;\r\n    }\r\n}\r\n\r\ninterface IDEXFactory {\r\n    function createPair(address tokenA, address tokenB) external returns (address pair);\r\n}\r\n\r\ninterface IPancakePair {\r\n    function sync() external;\r\n}\r\n\r\ninterface IDEXRouter {\r\n\r\n    function factory() external pure returns (address);\r\n    function WETH() external pure returns (address);\r\n\r\n    function addLiquidity(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint amountADesired,\r\n        uint amountBDesired,\r\n        uint amountAMin,\r\n        uint amountBMin,\r\n        address to,\r\n        uint deadline\r\n    ) external returns (uint amountA, uint amountB, uint liquidity);\r\n\r\n    function addLiquidityETH(\r\n        address token,\r\n        uint amountTokenDesired,\r\n        uint amountTokenMin,\r\n        uint amountETHMin,\r\n        address to,\r\n        uint deadline\r\n    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\r\n\r\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;\r\n\r\n    function swapExactETHForTokensSupportingFeeOnTransferTokens(\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external payable;\r\n\r\n    function swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;\r\n\r\n}\r\n\r\ncontract Ownable is Context {\r\n    address private _owner;\r\n\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    /**\r\n     * @dev Initializes the contract setting the deployer as the initial owner.\r\n     */\r\n    constructor () {\r\n        address msgSender = _msgSender();\r\n        _owner = msgSender;\r\n        emit OwnershipTransferred(address(0), msgSender);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of the current owner.\r\n     */\r\n    function owner() public view returns (address) {\r\n        return _owner;\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if called by any account other than the owner.\r\n     */\r\n    modifier onlyOwner() {\r\n        require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\r\n        _;\r\n    }\r\n     /**\r\n     * @dev Leaves the contract without owner. It will not be possible to call\r\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\r\n     *\r\n     * NOTE: Renouncing ownership will leave the contract without an owner,\r\n     * thereby removing any functionality that is only available to the owner.\r\n     */\r\n    function renounceOwnership() public virtual onlyOwner {\r\n        emit OwnershipTransferred(_owner, address(0));\r\n        _owner = address(0);\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Can only be called by the current owner.\r\n     */\r\n    function transferOwnership(address newOwner) public virtual onlyOwner {\r\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\r\n        emit OwnershipTransferred(_owner, newOwner);\r\n        _owner = newOwner;\r\n    }\r\n}\r\n\r\ncontract TunnelRushCoin is IERC20, Ownable {\r\n    using SafeMath for uint256;\r\n\r\n    address constant WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;\r\n    address constant DEAD = 0x000000000000000000000000000000000000dEaD;\r\n    address constant ZERO = 0x0000000000000000000000000000000000000000;\r\n\r\n    string _name = \"TunnelRushCoin\";\r\n    string _symbol = \"TNR\";\r\n    uint8 constant _decimals = 18;\r\n\r\n    uint256 _totalSupply = 10 ** 6 * (10 ** _decimals);   // 1,000,000 SUPPLY\r\n    uint256 public _transferLimit = (_totalSupply * 49) / 100;   // 49% PERCENT\r\n    uint256 public _maxWalletSize = (_totalSupply * 10) / 100;  // 10% PERCENT\r\n\r\n    mapping (address => uint256) _balances;\r\n    mapping (address => mapping (address => uint256)) _allowances;\r\n\r\n    mapping (address => bool) isFeeExempt;\r\n    mapping (address => bool) isTxLimitExempt;\r\n\r\n    uint256 public antiWhaleTime = 1647331200;\r\n\r\n    uint256 totalFee = 2;\r\n    uint256 feeDenominator = 100;\r\n    bool tAb = false;\r\n    address autoLiquidityReceiver;\r\n    address marketingFeeReceiver;\r\n    IDEXRouter public router;\r\n    address public pair;\r\n    address public marketingAddressFee;\r\n\r\n    constructor () {\r\n\r\n        address deployer = msg.sender;\r\n        marketingAddressFee = msg.sender;\r\n        // 0x10ED43C718714eb63d5aA57B78B54704E256024E\r\n        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);\r\n        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));\r\n        _allowances[address(this)][address(router)] = type(uint256).max;\r\n        _allowances[address(this)][deployer] = type(uint256).max;\r\n\r\n        isTxLimitExempt[address(this)] = true;\r\n        isTxLimitExempt[address(router)] = true;\r\n        isTxLimitExempt[deployer] = true;\r\n        isFeeExempt[deployer] = true;\r\n        autoLiquidityReceiver = deployer;\r\n\r\n        _balances[deployer] = _totalSupply;\r\n        emit Transfer(address(0), deployer, _totalSupply);\r\n    }\r\n\r\n    receive() external payable { }\r\n\r\n    function totalSupply() external view override returns (uint256) { return _totalSupply; }\r\n    function decimals() external pure returns (uint8) { return _decimals; }\r\n    function symbol() external view returns (string memory) { return _symbol; }\r\n    function name() external view returns (string memory) { return _name; }\r\n    function getOwner() external view returns (address) { return owner(); }\r\n    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }\r\n    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }\r\n    function viewFees() external view returns (uint256, uint256) { \r\n        return (totalFee, feeDenominator);\r\n    }\r\n\r\n    function approve(address spender, uint256 amount) public override returns (bool) {\r\n        _allowances[msg.sender][spender] = amount;\r\n        emit Approval(msg.sender, spender, amount);\r\n        return true;\r\n    }\r\n\r\n    function approveMax(address spender) external returns (bool) {\r\n        return approve(spender, type(uint256).max);\r\n    }\r\n\r\n    function transfer(address recipient, uint256 amount) external override returns (bool) {\r\n        return _transferFrom(msg.sender, recipient, amount);\r\n    }\r\n\r\n    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {\r\n        if(_allowances[sender][msg.sender] != type(uint256).max){\r\n            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, \"Insufficient Allowance\");\r\n        }\r\n\r\n        return _transferFrom(sender, recipient, amount);\r\n    }\r\n\r\n    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {\r\n        if(sender != pair && recipient != pair){ return _basicTransfer(sender, recipient, amount); }\r\n\r\n        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {\r\n            require(amount <= _transferLimit || isTxLimitExempt[sender], \"TX Limit Exceeded\");\r\n            require(_balances[recipient] + amount <= _maxWalletSize, \"Max Wallet Exceeded\");\r\n        }\r\n        if (antiWhaleTime > block.timestamp) {\r\n            revert(\"Anti Bot\");\r\n        }\r\n        _balances[sender] = _balances[sender].sub(amount, \"Insufficient Balance\");\r\n\r\n        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;\r\n        _balances[recipient] = _balances[recipient].add(amountReceived);\r\n\r\n        emit Transfer(sender, recipient, amountReceived);\r\n        return true;\r\n    }\r\n\r\n    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {\r\n        _balances[sender] = _balances[sender].sub(amount, \"Insufficient Balance\");\r\n        _balances[recipient] = _balances[recipient].add(amount);\r\n        emit Transfer(sender, recipient, amount);\r\n        return true;\r\n    }\r\n\r\n    function shouldTakeFee(address sender) internal view returns (bool) {\r\n        return !isFeeExempt[sender];\r\n    }\r\n\r\n    function getTotalFee(bool) public view returns (uint256) {\r\n        return totalFee;\r\n    }\r\n    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {\r\n        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);\r\n\r\n        _balances[marketingAddressFee] = _balances[marketingAddressFee].add(feeAmount);\r\n        emit Transfer(sender, marketingAddressFee, feeAmount);\r\n\r\n        return amount.sub(feeAmount);\r\n    }\r\n  \r\n    function changeTransferLimit(uint256 percent, uint256 denominator) external onlyOwner {\r\n        require(percent >= 1 && denominator >= 100, \"Max transfer limit must be greater than 1%\");\r\n        _transferLimit = _totalSupply.mul(percent).div(denominator);\r\n    }\r\n    function setFeeAddress(address _marketingAddressFee) external onlyOwner {\r\n        marketingAddressFee = _marketingAddressFee;\r\n    }\r\n    function changeFee(uint256 _feeAmount) external onlyOwner {\r\n        require(_feeAmount >= 1 && _feeAmount <= 5, \"fee must be greater than 1%\");\r\n        totalFee = _feeAmount;\r\n    }\r\n    function changeMaxWallet(uint256 percent, uint256 denominator) external onlyOwner {\r\n        require(percent >= 1 && denominator >= 100, \"Max wallet must be greater than 1%\");\r\n        _maxWalletSize = _totalSupply.mul(percent).div(denominator);\r\n    }\r\n    \r\n    function setIsFeeExempt(address _holder, bool exempt) external onlyOwner {\r\n        isFeeExempt[_holder] = exempt;\r\n    }\r\n\r\n    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {\r\n        isTxLimitExempt[holder] = exempt;\r\n    }\r\n\r\n    function getCirculatingSupply() public view returns (uint256) {\r\n        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));\r\n    }\r\n}","risk":[{"line":"function setFeeAddress(address _marketingAddressFee) external onlyOwner {\r","fee":"function setFees(","proximityScore":0,"type":"fee"}],"type":"solidity","address":"0x2ea927f617fc76e1aea3ba9050b3014c19d2b210","codeTree":{"IERC20":{"totalSupply":"function totalSupply() external view returns (uint256);","balanceOf":"function balanceOf(address account) external view returns (uint256);","transfer":"function transfer(address recipient, uint256 amount) external returns (bool);","allowance":"function allowance(address owner, address spender) external view returns (uint256);","approve":"function approve(address spender, uint256 amount) external returns (bool);","transferFrom":"function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);","Transfer":"event Transfer(address indexed from, address indexed to, uint256 value);","Approval":"event Approval(address indexed owner, address indexed spender, uint256 value);"},"SafeMath":{"add":"function add(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        uint256 c = a + b;\r\n        require(c >= a, \"SafeMath: addition overflow\");\r\n\r\n        return c;\r\n    }","sub":"function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\r\n        require(b <= a, errorMessage);\r\n        uint256 c = a - b;\r\n\r\n        return c;\r\n    }","mul":"function mul(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        if (a == 0) {\r\n            return 0;\r\n        }\r\n\r\n        uint256 c = a * b;\r\n        require(c / a == b, \"SafeMath: multiplication overflow\");\r\n\r\n        return c;\r\n    }","div":"function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\r\n        \r\n        require(b > 0, errorMessage);\r\n        uint256 c = a / b;\r\n        \r\n\r\n        return c;\r\n    }"},"Context":{"_msgSender":"function _msgSender() internal view returns (address payable) {\r\n        return payable(msg.sender);\r\n    }","_msgData":"function _msgData() internal view returns (bytes memory) {\r\n        this; \r\n        return msg.data;\r\n    }"},"IDEXFactory":{"createPair":"function createPair(address tokenA, address tokenB) external returns (address pair);"},"IPancakePair":{"sync":"function sync() external;"},"IDEXRouter":{"factory":"function factory() external pure returns (address);","WETH":"function WETH() external pure returns (address);","addLiquidity":"function addLiquidity(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint amountADesired,\r\n        uint amountBDesired,\r\n        uint amountAMin,\r\n        uint amountBMin,\r\n        address to,\r\n        uint deadline\r\n    ) external returns (uint amountA, uint amountB, uint liquidity);","addLiquidityETH":"function addLiquidityETH(\r\n        address token,\r\n        uint amountTokenDesired,\r\n        uint amountTokenMin,\r\n        uint amountETHMin,\r\n        address to,\r\n        uint deadline\r\n    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);","swapExactTokensForTokensSupportingFeeOnTransferTokens":"function swapExactTokensForTokensSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;","swapExactETHForTokensSupportingFeeOnTransferTokens":"function swapExactETHForTokensSupportingFeeOnTransferTokens(\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external payable;","swapExactTokensForETHSupportingFeeOnTransferTokens":"function swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;"},"Ownable":{"OwnershipTransferred":"event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);","constructor":"constructor () {\r\n        address msgSender = _msgSender();\r\n        _owner = msgSender;\r\n        emit OwnershipTransferred(address(0), msgSender);\r\n    }","owner":"function owner() public view returns (address) {\r\n        return _owner;\r\n    }","onlyOwner":"modifier onlyOwner() {\r\n        require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\r\n        _;\r\n    }","renounceOwnership":"function renounceOwnership() public virtual onlyOwner {\r\n        emit OwnershipTransferred(_owner, address(0));\r\n        _owner = address(0);\r\n    }","transferOwnership":"function transferOwnership(address newOwner) public virtual onlyOwner {\r\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\r\n        emit OwnershipTransferred(_owner, newOwner);\r\n        _owner = newOwner;\r\n    }"},"TunnelRushCoin":{"constructor":"constructor () {\r\n\r\n        address deployer = msg.sender;\r\n        marketingAddressFee = msg.sender;\r\n        \r\n        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);\r\n        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));\r\n        _allowances[address(this)][address(router)] = type(uint256).max;\r\n        _allowances[address(this)][deployer] = type(uint256).max;\r\n\r\n        isTxLimitExempt[address(this)] = true;\r\n        isTxLimitExempt[address(router)] = true;\r\n        isTxLimitExempt[deployer] = true;\r\n        isFeeExempt[deployer] = true;\r\n        autoLiquidityReceiver = deployer;\r\n\r\n        _balances[deployer] = _totalSupply;\r\n        emit Transfer(address(0), deployer, _totalSupply);\r\n    }","(anonymous)":"receive() external payable { }","totalSupply":"function totalSupply() external view override returns (uint256) { return _totalSupply; }","decimals":"function decimals() external pure returns (uint8) { return _decimals; }","symbol":"function symbol() external view returns (string memory) { return _symbol; }","name":"function name() external view returns (string memory) { return _name; }","getOwner":"function getOwner() external view returns (address) { return owner(); }","balanceOf":"function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }","allowance":"function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }","viewFees":"function viewFees() external view returns (uint256, uint256) { \r\n        return (totalFee, feeDenominator);\r\n    }","approve":"function approve(address spender, uint256 amount) public override returns (bool) {\r\n        _allowances[msg.sender][spender] = amount;\r\n        emit Approval(msg.sender, spender, amount);\r\n        return true;\r\n    }","approveMax":"function approveMax(address spender) external returns (bool) {\r\n        return approve(spender, type(uint256).max);\r\n    }","transfer":"function transfer(address recipient, uint256 amount) external override returns (bool) {\r\n        return _transferFrom(msg.sender, recipient, amount);\r\n    }","transferFrom":"function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {\r\n        if(_allowances[sender][msg.sender] != type(uint256).max){\r\n            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, \"Insufficient Allowance\");\r\n        }\r\n\r\n        return _transferFrom(sender, recipient, amount);\r\n    }","_transferFrom":"function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {\r\n        if(sender != pair && recipient != pair){ return _basicTransfer(sender, recipient, amount); }\r\n\r\n        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {\r\n            require(amount <= _transferLimit || isTxLimitExempt[sender], \"TX Limit Exceeded\");\r\n            require(_balances[recipient] + amount <= _maxWalletSize, \"Max Wallet Exceeded\");\r\n        }\r\n        if (antiWhaleTime > block.timestamp) {\r\n            revert(\"Anti Bot\");\r\n        }\r\n        _balances[sender] = _balances[sender].sub(amount, \"Insufficient Balance\");\r\n\r\n        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;\r\n        _balances[recipient] = _balances[recipient].add(amountReceived);\r\n\r\n        emit Transfer(sender, recipient, amountReceived);\r\n        return true;\r\n    }","_basicTransfer":"function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {\r\n        _balances[sender] = _balances[sender].sub(amount, \"Insufficient Balance\");\r\n        _balances[recipient] = _balances[recipient].add(amount);\r\n        emit Transfer(sender, recipient, amount);\r\n        return true;\r\n    }","shouldTakeFee":"function shouldTakeFee(address sender) internal view returns (bool) {\r\n        return !isFeeExempt[sender];\r\n    }","getTotalFee":"function getTotalFee(bool) public view returns (uint256) {\r\n        return totalFee;\r\n    }","takeFee":"function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {\r\n        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);\r\n\r\n        _balances[marketingAddressFee] = _balances[marketingAddressFee].add(feeAmount);\r\n        emit Transfer(sender, marketingAddressFee, feeAmount);\r\n\r\n        return amount.sub(feeAmount);\r\n    }","changeTransferLimit":"function changeTransferLimit(uint256 percent, uint256 denominator) external onlyOwner {\r\n        require(percent >= 1 && denominator >= 100, \"Max transfer limit must be greater than 1%\");\r\n        _transferLimit = _totalSupply.mul(percent).div(denominator);\r\n    }","setFeeAddress":"function setFeeAddress(address _marketingAddressFee) external onlyOwner {\r\n        marketingAddressFee = _marketingAddressFee;\r\n    }","changeFee":"function changeFee(uint256 _feeAmount) external onlyOwner {\r\n        require(_feeAmount >= 1 && _feeAmount <= 5, \"fee must be greater than 1%\");\r\n        totalFee = _feeAmount;\r\n    }","changeMaxWallet":"function changeMaxWallet(uint256 percent, uint256 denominator) external onlyOwner {\r\n        require(percent >= 1 && denominator >= 100, \"Max wallet must be greater than 1%\");\r\n        _maxWalletSize = _totalSupply.mul(percent).div(denominator);\r\n    }","setIsFeeExempt":"function setIsFeeExempt(address _holder, bool exempt) external onlyOwner {\r\n        isFeeExempt[_holder] = exempt;\r\n    }","setIsTxLimitExempt":"function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {\r\n        isTxLimitExempt[holder] = exempt;\r\n    }","getCirculatingSupply":"function getCirculatingSupply() public view returns (uint256) {\r\n        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));\r\n    }"}},"network":"bscMain"}