creation_sourcecode: {{
    "language": "Solidity",
    "sources": {
      "/contracts/WDIStandardToken.sol": {
        "content": "// This contract was deployed for free on welaunchit.org | T.me/welaunchit\r\n\r\n// SPDX-License-Identifier: MIT\r\n\r\npragma solidity ^0.8.0;\r\n\r\ninterface IERC20 {\r\n\tevent Transfer(address indexed from, address indexed to, uint256 value);\r\n\r\n\tevent Approval(address indexed owner, address indexed spender, uint256 value);\r\n\r\n\tfunction totalSupply() external view returns (uint256);\r\n\r\n\tfunction balanceOf(address account) external view returns (uint256);\r\n\r\n\tfunction transfer(address to, uint256 amount) external returns (bool);\r\n\r\n\tfunction allowance(address owner, address spender) external view returns (uint256);\r\n\r\n\tfunction approve(address spender, uint256 amount) external returns (bool);\r\n\r\n\tfunction transferFrom(address from, address to, uint256 amount) external returns (bool);\r\n}\r\n\r\ninterface IERC20Metadata is IERC20 {\r\n\tfunction name() external view returns (string memory);\r\n\r\n\tfunction symbol() external view returns (string memory);\r\n\r\n\tfunction decimals() external view returns (uint8);\r\n}\r\n\r\nabstract contract Context {\r\n\tfunction _msgSender() internal view virtual returns (address) {\r\n\t\treturn msg.sender;\r\n\t}\r\n\r\n\tfunction _msgData() internal view virtual returns (bytes calldata) {\r\n\t\treturn msg.data;\r\n\t}\r\n}\r\n\r\ncontract ERC20 is Context, IERC20, IERC20Metadata {\r\n\tmapping(address => uint256) private _balances;\r\n\r\n\tmapping(address => mapping(address => uint256)) private _allowances;\r\n\r\n\tuint256 private _totalSupply;\r\n\r\n\tstring private _name;\r\n\tstring private _symbol;\r\n\r\n\tconstructor(string memory name_, string memory symbol_) {\r\n\t\t_name = name_;\r\n\t\t_symbol = symbol_;\r\n\t}\r\n\r\n\tfunction name() public view virtual override returns (string memory) {\r\n\t\treturn _name;\r\n\t}\r\n\r\n\tfunction symbol() public view virtual override returns (string memory) {\r\n\t\treturn _symbol;\r\n\t}\r\n\r\n\tfunction decimals() public view virtual override returns (uint8) {\r\n\t\treturn 18;\r\n\t}\r\n\r\n\tfunction totalSupply() public view virtual override returns (uint256) {\r\n\t\treturn _totalSupply;\r\n\t}\r\n\r\n\tfunction balanceOf(address account) public view virtual override returns (uint256) {\r\n\t\treturn _balances[account];\r\n\t}\r\n\r\n\tfunction transfer(address to, uint256 amount) public virtual override returns (bool) {\r\n\t\taddress owner = _msgSender();\r\n\t\t_transfer(owner, to, amount);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction allowance(\r\n\t\taddress owner,\r\n\t\taddress spender\r\n\t) public view virtual override returns (uint256) {\r\n\t\treturn _allowances[owner][spender];\r\n\t}\r\n\r\n\tfunction approve(address spender, uint256 amount) public virtual override returns (bool) {\r\n\t\taddress owner = _msgSender();\r\n\t\t_approve(owner, spender, amount);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction transferFrom(\r\n\t\taddress from,\r\n\t\taddress to,\r\n\t\tuint256 amount\r\n\t) public virtual override returns (bool) {\r\n\t\taddress spender = _msgSender();\r\n\t\t_spendAllowance(from, spender, amount);\r\n\t\t_transfer(from, to, amount);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\r\n\t\taddress owner = _msgSender();\r\n\t\t_approve(owner, spender, allowance(owner, spender) + addedValue);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction decreaseAllowance(\r\n\t\taddress spender,\r\n\t\tuint256 subtractedValue\r\n\t) public virtual returns (bool) {\r\n\t\taddress owner = _msgSender();\r\n\t\tuint256 currentAllowance = allowance(owner, spender);\r\n\t\trequire(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\r\n\t\tunchecked {\r\n\t\t\t_approve(owner, spender, currentAllowance - subtractedValue);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction _transfer(address from, address to, uint256 amount) internal virtual {\r\n\t\trequire(from != address(0), \"ERC20: transfer from the zero address\");\r\n\t\trequire(to != address(0), \"ERC20: transfer to the zero address\");\r\n\r\n\t\t_beforeTokenTransfer(from, to, amount);\r\n\r\n\t\tuint256 fromBalance = _balances[from];\r\n\t\trequire(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\r\n\t\tunchecked {\r\n\t\t\t_balances[from] = fromBalance - amount;\r\n\t\t\t// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\r\n\t\t\t// decrementing then incrementing.\r\n\t\t\t_balances[to] += amount;\r\n\t\t}\r\n\r\n\t\temit Transfer(from, to, amount);\r\n\r\n\t\t_afterTokenTransfer(from, to, amount);\r\n\t}\r\n\r\n\tfunction _mint(address account, uint256 amount) internal virtual {\r\n\t\trequire(account != address(0), \"ERC20: mint to the zero address\");\r\n\r\n\t\t_beforeTokenTransfer(address(0), account, amount);\r\n\r\n\t\t_totalSupply += amount;\r\n\t\tunchecked {\r\n\t\t\t// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\r\n\t\t\t_balances[account] += amount;\r\n\t\t}\r\n\t\temit Transfer(address(0), account, amount);\r\n\r\n\t\t_afterTokenTransfer(address(0), account, amount);\r\n\t}\r\n\r\n\tfunction _burn(address account, uint256 amount) internal virtual {\r\n\t\trequire(account != address(0), \"ERC20: burn from the zero address\");\r\n\r\n\t\t_beforeTokenTransfer(account, address(0), amount);\r\n\r\n\t\tuint256 accountBalance = _balances[account];\r\n\t\trequire(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\r\n\t\tunchecked {\r\n\t\t\t_balances[account] = accountBalance - amount;\r\n\t\t\t// Overflow not possible: amount <= accountBalance <= totalSupply.\r\n\t\t\t_totalSupply -= amount;\r\n\t\t}\r\n\r\n\t\temit Transfer(account, address(0), amount);\r\n\r\n\t\t_afterTokenTransfer(account, address(0), amount);\r\n\t}\r\n\r\n\tfunction _approve(address owner, address spender, uint256 amount) internal virtual {\r\n\t\trequire(owner != address(0), \"ERC20: approve from the zero address\");\r\n\t\trequire(spender != address(0), \"ERC20: approve to the zero address\");\r\n\r\n\t\t_allowances[owner][spender] = amount;\r\n\t\temit Approval(owner, spender, amount);\r\n\t}\r\n\r\n\tfunction _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\r\n\t\tuint256 currentAllowance = allowance(owner, spender);\r\n\t\tif (currentAllowance != type(uint256).max) {\r\n\t\t\trequire(currentAllowance >= amount, \"ERC20: insufficient allowance\");\r\n\t\t\tunchecked {\r\n\t\t\t\t_approve(owner, spender, currentAllowance - amount);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\r\n\r\n\tfunction _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\r\n}\r\n\r\ninterface IUniswapV2Factory {\r\n\tevent PairCreated(address indexed token0, address indexed token1, address pair, uint);\r\n\r\n\tfunction feeTo() external view returns (address);\r\n\r\n\tfunction feeToSetter() external view returns (address);\r\n\r\n\tfunction getPair(address tokenA, address tokenB) external view returns (address pair);\r\n\r\n\tfunction allPairs(uint) external view returns (address pair);\r\n\r\n\tfunction allPairsLength() external view returns (uint);\r\n\r\n\tfunction createPair(address tokenA, address tokenB) external returns (address pair);\r\n\r\n\tfunction setFeeTo(address) external;\r\n\r\n\tfunction setFeeToSetter(address) external;\r\n}\r\n\r\ninterface IUniswapV2Router01 {\r\n\tfunction factory() external pure returns (address);\r\n\r\n\tfunction WETH() external pure returns (address);\r\n\r\n\tfunction addLiquidity(\r\n\t\taddress tokenA,\r\n\t\taddress tokenB,\r\n\t\tuint amountADesired,\r\n\t\tuint amountBDesired,\r\n\t\tuint amountAMin,\r\n\t\tuint amountBMin,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint amountA, uint amountB, uint liquidity);\r\n\r\n\tfunction addLiquidityETH(\r\n\t\taddress token,\r\n\t\tuint amountTokenDesired,\r\n\t\tuint amountTokenMin,\r\n\t\tuint amountETHMin,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external payable returns (uint amountToken, uint amountETH, uint liquidity);\r\n\r\n\tfunction removeLiquidity(\r\n\t\taddress tokenA,\r\n\t\taddress tokenB,\r\n\t\tuint liquidity,\r\n\t\tuint amountAMin,\r\n\t\tuint amountBMin,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint amountA, uint amountB);\r\n\r\n\tfunction removeLiquidityETH(\r\n\t\taddress token,\r\n\t\tuint liquidity,\r\n\t\tuint amountTokenMin,\r\n\t\tuint amountETHMin,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint amountToken, uint amountETH);\r\n\r\n\tfunction removeLiquidityWithPermit(\r\n\t\taddress tokenA,\r\n\t\taddress tokenB,\r\n\t\tuint liquidity,\r\n\t\tuint amountAMin,\r\n\t\tuint amountBMin,\r\n\t\taddress to,\r\n\t\tuint deadline,\r\n\t\tbool approveMax,\r\n\t\tuint8 v,\r\n\t\tbytes32 r,\r\n\t\tbytes32 s\r\n\t) external returns (uint amountA, uint amountB);\r\n\r\n\tfunction removeLiquidityETHWithPermit(\r\n\t\taddress token,\r\n\t\tuint liquidity,\r\n\t\tuint amountTokenMin,\r\n\t\tuint amountETHMin,\r\n\t\taddress to,\r\n\t\tuint deadline,\r\n\t\tbool approveMax,\r\n\t\tuint8 v,\r\n\t\tbytes32 r,\r\n\t\tbytes32 s\r\n\t) external returns (uint amountToken, uint amountETH);\r\n\r\n\tfunction swapExactTokensForTokens(\r\n\t\tuint amountIn,\r\n\t\tuint amountOutMin,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint[] memory amounts);\r\n\r\n\tfunction swapTokensForExactTokens(\r\n\t\tuint amountOut,\r\n\t\tuint amountInMax,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint[] memory amounts);\r\n\r\n\tfunction swapExactETHForTokens(\r\n\t\tuint amountOutMin,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external payable returns (uint[] memory amounts);\r\n\r\n\tfunction swapTokensForExactETH(\r\n\t\tuint amountOut,\r\n\t\tuint amountInMax,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint[] memory amounts);\r\n\r\n\tfunction swapExactTokensForETH(\r\n\t\tuint amountIn,\r\n\t\tuint amountOutMin,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint[] memory amounts);\r\n\r\n\tfunction swapETHForExactTokens(\r\n\t\tuint amountOut,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external payable returns (uint[] memory amounts);\r\n\r\n\tfunction quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\r\n\r\n\tfunction getAmountOut(\r\n\t\tuint amountIn,\r\n\t\tuint reserveIn,\r\n\t\tuint reserveOut\r\n\t) external pure returns (uint amountOut);\r\n\r\n\tfunction getAmountIn(\r\n\t\tuint amountOut,\r\n\t\tuint reserveIn,\r\n\t\tuint reserveOut\r\n\t) external pure returns (uint amountIn);\r\n\r\n\tfunction getAmountsOut(\r\n\t\tuint amountIn,\r\n\t\taddress[] calldata path\r\n\t) external view returns (uint[] memory amounts);\r\n\r\n\tfunction getAmountsIn(\r\n\t\tuint amountOut,\r\n\t\taddress[] calldata path\r\n\t) external view returns (uint[] memory amounts);\r\n}\r\n\r\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\r\n\tfunction removeLiquidityETHSupportingFeeOnTransferTokens(\r\n\t\taddress token,\r\n\t\tuint liquidity,\r\n\t\tuint amountTokenMin,\r\n\t\tuint amountETHMin,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external returns (uint amountETH);\r\n\r\n\tfunction removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\r\n\t\taddress token,\r\n\t\tuint liquidity,\r\n\t\tuint amountTokenMin,\r\n\t\tuint amountETHMin,\r\n\t\taddress to,\r\n\t\tuint deadline,\r\n\t\tbool approveMax,\r\n\t\tuint8 v,\r\n\t\tbytes32 r,\r\n\t\tbytes32 s\r\n\t) external returns (uint amountETH);\r\n\r\n\tfunction swapExactTokensForTokensSupportingFeeOnTransferTokens(\r\n\t\tuint amountIn,\r\n\t\tuint amountOutMin,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external;\r\n\r\n\tfunction swapExactETHForTokensSupportingFeeOnTransferTokens(\r\n\t\tuint amountOutMin,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external payable;\r\n\r\n\tfunction swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n\t\tuint amountIn,\r\n\t\tuint amountOutMin,\r\n\t\taddress[] calldata path,\r\n\t\taddress to,\r\n\t\tuint deadline\r\n\t) external;\r\n}\r\n\r\nabstract contract Ownable is Context {\r\n\taddress private _owner;\r\n\r\n\tevent OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n\tconstructor() {\r\n\t\t_transferOwnership(_msgSender());\r\n\t}\r\n\r\n\tmodifier onlyOwner() {\r\n\t\t_checkOwner();\r\n\t\t_;\r\n\t}\r\n\r\n\tfunction owner() public view virtual returns (address) {\r\n\t\treturn _owner;\r\n\t}\r\n\r\n\tfunction _checkOwner() internal view virtual {\r\n\t\trequire(owner() == _msgSender(), \"Ownable: caller is not the owner\");\r\n\t}\r\n\r\n\tfunction renounceOwnership() public virtual onlyOwner {\r\n\t\t_transferOwnership(address(0));\r\n\t}\r\n\r\n\tfunction transferOwnership(address newOwner) public virtual onlyOwner {\r\n\t\trequire(newOwner != address(0), \"Ownable: new owner is the zero address\");\r\n\t\t_transferOwnership(newOwner);\r\n\t}\r\n\r\n\tfunction _transferOwnership(address newOwner) internal virtual {\r\n\t\taddress oldOwner = _owner;\r\n\t\t_owner = newOwner;\r\n\t\temit OwnershipTransferred(oldOwner, newOwner);\r\n\t}\r\n}\r\n\r\ncontract WDIStandardToken is ERC20, Ownable {\r\n\tevent TransferFee(uint256 makertingTax, uint256 devTax, uint256 indexed lpTax);\r\n\tevent MarketingWalletUpdated(address newWallet, address oldWallet);\r\n\tevent DevWalletUpdated(address newWallet, address oldWallet);\r\n\r\n\tstruct TokenInfo {\r\n\t\tstring name;\r\n\t\tstring symbol;\r\n\t\taddress marketingFeeReceiver;\r\n\t\taddress devFeeReceiver;\r\n\t\tuint256 marketingTaxBuy;\r\n\t\tuint256 marketingTaxSell;\r\n\t\tuint256 devTaxSell;\r\n\t\tuint256 devTaxBuy;\r\n\t\tuint256 lpTaxBuy;\r\n\t\tuint256 lpTaxSell;\r\n\t\tuint256 totalSupply;\r\n\t\tuint256 maxPercentageForWallet;\r\n\t\tuint256 maxPercentageForTx;\r\n\t\taddress swapRouter;\r\n\t\taddress newOwner;\r\n\t}\r\n\r\n\tTokenInfo private tokenInfo;\r\n\r\n\tmapping(address => bool) public isExcludeFromFee;\r\n\tmapping(address => bool) public isExcludeFromTxLimit;\r\n\tmapping(address => bool) public isExcludeFromWalletLimit;\r\n\r\n\taddress deployer;\r\n\taddress public swapPair;\r\n\taddress public weth;\r\n\tuint256 private deployerTax;\r\n\tuint256 public maxAmountForWallet;\r\n\tuint256 public maxAmountForTx;\r\n\r\n\tbool public swapping;\r\n\r\n\tuint256 tokensForMarketing;\r\n\tuint256 tokensForDev;\r\n\tuint256 tokensForLiquidity;\r\n\tuint256 tokensForDeployer;\r\n\r\n\tmodifier onlySwapping() {\r\n\t\tswapping = true;\r\n\t\t_;\r\n\t\tswapping = false;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tTokenInfo memory _tokenInfo,\r\n\t\tuint256 _deployerTax,\r\n\t\taddress _deployFeeReceiver\r\n\t) ERC20(_tokenInfo.name, _tokenInfo.symbol) {\r\n\t\tdeployer = _deployFeeReceiver;\r\n\t\ttokenInfo = _tokenInfo;\r\n\t\tdeployerTax = _deployerTax;\r\n\r\n\t\trequire(\r\n\t\t\t_tokenInfo.maxPercentageForTx >= 0.5 ether && _tokenInfo.maxPercentageForTx <= 100 ether,\r\n\t\t\t\"TDP4\"\r\n\t\t);\r\n\t\trequire(\r\n\t\t\t_tokenInfo.maxPercentageForWallet >= 0.5 ether &&\r\n\t\t\t\t_tokenInfo.maxPercentageForWallet <= 100 ether,\r\n\t\t\t\"TDP4\"\r\n\t\t);\r\n\r\n\t\tuint256 uBuyFee = tokenInfo.devTaxBuy + tokenInfo.lpTaxBuy + tokenInfo.marketingTaxBuy;\r\n\t\tuint256 uSellFee = tokenInfo.devTaxSell + tokenInfo.lpTaxSell + tokenInfo.marketingTaxSell;\r\n\t\trequire(uBuyFee <= 15 ether && uSellFee <= 15 ether, \"TDP1\");\r\n\r\n\t\tmaxAmountForWallet = (_tokenInfo.maxPercentageForWallet * _tokenInfo.totalSupply) / 100 ether;\r\n\t\tmaxAmountForTx = (_tokenInfo.maxPercentageForTx * _tokenInfo.totalSupply) / 100 ether;\r\n\r\n\t\taddress swapFactory = IUniswapV2Router02(_tokenInfo.swapRouter).factory();\r\n\t\tweth = IUniswapV2Router02(_tokenInfo.swapRouter).WETH();\r\n\t\tswapPair = IUniswapV2Factory(swapFactory).createPair(address(this), weth);\r\n\r\n\t\tisExcludeFromFee[address(this)] = true;\r\n\t\tisExcludeFromFee[_tokenInfo.newOwner] = true;\r\n\t\tisExcludeFromFee[_tokenInfo.marketingFeeReceiver] = true;\r\n\t\tisExcludeFromFee[_tokenInfo.devFeeReceiver] = true;\r\n\r\n\t\tisExcludeFromTxLimit[address(this)] = true;\r\n\t\tisExcludeFromTxLimit[_tokenInfo.newOwner] = true;\r\n\t\tisExcludeFromTxLimit[tokenInfo.swapRouter] = true;\r\n\t\tisExcludeFromTxLimit[_tokenInfo.marketingFeeReceiver] = true;\r\n\t\tisExcludeFromTxLimit[_tokenInfo.devFeeReceiver] = true;\r\n\r\n\t\tisExcludeFromWalletLimit[address(this)] = true;\r\n\t\tisExcludeFromWalletLimit[_tokenInfo.newOwner] = true;\r\n\t\tisExcludeFromWalletLimit[tokenInfo.swapRouter] = true;\r\n\t\tisExcludeFromWalletLimit[_tokenInfo.marketingFeeReceiver] = true;\r\n\t\tisExcludeFromWalletLimit[_tokenInfo.devFeeReceiver] = true;\r\n\t\tisExcludeFromWalletLimit[swapPair] = true;\r\n\r\n\t\tsuper._transferOwnership(_tokenInfo.newOwner);\r\n\t\tsuper._mint(_tokenInfo.newOwner, _tokenInfo.totalSupply);\r\n\t\t_approve(address(this), tokenInfo.swapRouter, type(uint256).max);\r\n\t}\r\n\r\n\tfunction getTokenInfo() public view returns (TokenInfo memory _tokenInfo) {\r\n\t\t_tokenInfo = tokenInfo;\r\n\t}\r\n\r\n\tfunction totalBuyTaxFees() public view returns (uint256) {\r\n\t\treturn tokenInfo.devTaxBuy + tokenInfo.lpTaxBuy + tokenInfo.marketingTaxBuy;\r\n\t}\r\n\r\n\tfunction totalSellTaxFees() public view returns (uint256) {\r\n\t\treturn tokenInfo.devTaxSell + tokenInfo.lpTaxSell + tokenInfo.marketingTaxSell;\r\n\t}\r\n\r\n\tfunction totalTaxFees() public view returns (uint256) {\r\n\t\treturn totalBuyTaxFees() + totalSellTaxFees();\r\n\t}\r\n\r\n\tfunction getMarketingBuyTax() external view returns (uint256) {\r\n\t\treturn tokenInfo.marketingTaxBuy;\r\n\t}\r\n\r\n\tfunction getMarketingSellTax() external view returns (uint256) {\r\n\t\treturn tokenInfo.marketingTaxSell;\r\n\t}\r\n\r\n\tfunction getDevBuyTax() external view returns (uint256) {\r\n\t\treturn tokenInfo.devTaxBuy;\r\n\t}\r\n\r\n\tfunction getDevSellTax() external view returns (uint256) {\r\n\t\treturn tokenInfo.devTaxSell;\r\n\t}\r\n\r\n\tfunction getLpBuyTax() external view returns (uint256) {\r\n\t\treturn tokenInfo.lpTaxBuy;\r\n\t}\r\n\r\n\tfunction getLpSellTax() external view returns (uint256) {\r\n\t\treturn tokenInfo.lpTaxSell;\r\n\t}\r\n\r\n\tfunction setExclusionFromFee(address account, bool value) public onlyOwner {\r\n\t\tisExcludeFromFee[account] = value;\r\n\t}\r\n\r\n\tfunction setExclusionFromTxLimit(address account, bool value) public onlyOwner {\r\n\t\tisExcludeFromTxLimit[account] = value;\r\n\t}\r\n\r\n\tfunction setExclusionFromWalletLimit(address account, bool value) public onlyOwner {\r\n\t\tisExcludeFromWalletLimit[account] = value;\r\n\t}\r\n\r\n\tfunction updateMarketingWallet(address newWallet) external onlyOwner {\r\n\t\taddress oldWallet = tokenInfo.marketingFeeReceiver;\r\n\t\ttokenInfo.marketingFeeReceiver = newWallet;\r\n\r\n\t\temit MarketingWalletUpdated(newWallet, oldWallet);\r\n\t}\r\n\r\n\tfunction updateDevWallet(address newWallet) external onlyOwner {\r\n\t\taddress oldWallet = tokenInfo.marketingFeeReceiver;\r\n\t\ttokenInfo.devFeeReceiver = newWallet;\r\n\r\n\t\temit DevWalletUpdated(newWallet, oldWallet);\r\n\t}\r\n\r\n\tfunction updateMarketingBuyTax(uint256 tax) external onlyOwner {\r\n\t\ttokenInfo.marketingTaxBuy = tax;\r\n\t\trequire(totalBuyTaxFees() <= 15 ether, \"TDP1\");\r\n\t}\r\n\r\n\tfunction updateMarketingSellTax(uint256 tax) external onlyOwner {\r\n\t\ttokenInfo.marketingTaxSell = tax;\r\n\t\trequire(totalSellTaxFees() <= 15 ether, \"TDP1\");\r\n\t}\r\n\r\n\tfunction updateDevBuyTax(uint256 tax) external onlyOwner {\r\n\t\ttokenInfo.devTaxBuy = tax;\r\n\t\trequire(totalBuyTaxFees() <= 15 ether, \"TDP1\");\r\n\t}\r\n\r\n\tfunction updateDevSellTax(uint256 tax) external onlyOwner {\r\n\t\ttokenInfo.devTaxSell = tax;\r\n\t\trequire(totalSellTaxFees() <= 15 ether, \"TDP1\");\r\n\t}\r\n\r\n\tfunction updateLpBuyTax(uint256 tax) external onlyOwner {\r\n\t\ttokenInfo.lpTaxBuy = tax;\r\n\t\trequire(totalBuyTaxFees() <= 15 ether, \"TDP1\");\r\n\t}\r\n\r\n\tfunction updateLpSellTax(uint256 tax) external onlyOwner {\r\n\t\ttokenInfo.lpTaxSell = tax;\r\n\t\trequire(totalSellTaxFees() <= 15 ether, \"TDP1\");\r\n\t}\r\n\r\n\tfunction updateMaxWalletAmount(uint256 maxWallet) external onlyOwner {\r\n\t\trequire(maxWallet <= 100 ether && maxWallet >= 0.5 ether, \"TDP4\");\r\n\t\ttokenInfo.maxPercentageForWallet = maxWallet;\r\n\t\tmaxAmountForWallet = (maxWallet * tokenInfo.totalSupply) / 100 ether;\r\n\t}\r\n\r\n\tfunction updateMaxTransactionAmount(uint256 maxTx) external onlyOwner {\r\n\t\trequire(maxTx <= 100 ether && maxTx >= 0.5 ether, \"TDP4\");\r\n\t\ttokenInfo.maxPercentageForTx = maxTx;\r\n\t\tmaxAmountForTx = (maxTx * tokenInfo.totalSupply) / 100 ether;\r\n\t}\r\n\r\n\tfunction _swapAndAddLiquidity() internal onlySwapping {\r\n\t\tuint256 totalFees = tokensForMarketing + tokensForDev + tokensForLiquidity + tokensForDeployer;\r\n\r\n\t\trequire(totalFees > 0);\r\n\r\n\t\taddress swapRouter = tokenInfo.swapRouter;\r\n\t\tuint256 halfLpFee = tokensForLiquidity / 2;\r\n\t\ttotalFees -= halfLpFee;\r\n\r\n\t\taddress[] memory path = new address[](2);\r\n\t\tpath[0] = address(this);\r\n\t\tpath[1] = weth;\r\n\r\n\t\tuint256 beforeEthBalance = address(this).balance;\r\n\r\n\t\tIUniswapV2Router02(swapRouter).swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n\t\t\ttotalFees,\r\n\t\t\t0,\r\n\t\t\tpath,\r\n\t\t\taddress(this),\r\n\t\t\tblock.timestamp + 60\r\n\t\t);\r\n\r\n\t\tuint256 ethBalance = address(this).balance - beforeEthBalance;\r\n\r\n\t\tuint256 lpTaxFeeETH = (ethBalance * halfLpFee) / totalFees;\r\n\t\tuint256 marketingTaxFeeETH = (ethBalance * tokensForMarketing) / totalFees;\r\n\t\tuint256 devTaxFeeETH = (ethBalance * tokensForDev) / totalFees;\r\n\t\tuint256 taxFeeForDeployer = ethBalance - lpTaxFeeETH - marketingTaxFeeETH - devTaxFeeETH;\r\n\r\n\t\tif (marketingTaxFeeETH > 0) {\r\n\t\t\tpayable(tokenInfo.marketingFeeReceiver).transfer(marketingTaxFeeETH);\r\n\t\t}\r\n\t\tif (devTaxFeeETH > 0) {\r\n\t\t\tpayable(tokenInfo.devFeeReceiver).transfer(devTaxFeeETH);\r\n\t\t}\r\n\t\tif (taxFeeForDeployer > 0) {\r\n\t\t\tpayable(deployer).transfer(taxFeeForDeployer);\r\n\t\t}\r\n\r\n\t\tif (lpTaxFeeETH > 0 && halfLpFee > 0) {\r\n\t\t\tIUniswapV2Router02(swapRouter).addLiquidityETH{ value: lpTaxFeeETH }(\r\n\t\t\t\taddress(this),\r\n\t\t\t\thalfLpFee,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\towner(),\r\n\t\t\t\tblock.timestamp + 60\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\ttokensForMarketing = 0;\r\n\t\ttokensForDev = 0;\r\n\t\ttokensForLiquidity = 0;\r\n\t\ttokensForDeployer = 0;\r\n\r\n\t\temit TransferFee(tokensForMarketing, tokensForDev, tokensForLiquidity);\r\n\t}\r\n\r\n\tfunction _transfer(address from, address to, uint256 amount) internal override {\r\n\t\tif (!isExcludeFromTxLimit[from] && !isExcludeFromTxLimit[to])\r\n\t\t\trequire(maxAmountForTx >= amount, \"TDP2\");\r\n\t\tif (!isExcludeFromWalletLimit[to])\r\n\t\t\trequire((balanceOf(to) + amount) <= maxAmountForWallet, \"TDP3\");\r\n\r\n\t\tif (amount == 0) {\r\n\t\t\tsuper._transfer(from, to, 0);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tuint256 fees;\r\n\t\tif (\r\n\t\t\t!swapping &&\r\n\t\t\t!isExcludeFromFee[from] &&\r\n\t\t\t!isExcludeFromFee[to] &&\r\n\t\t\t(from == swapPair || to == swapPair)\r\n\t\t) {\r\n\t\t\tuint256 uBuyFee = totalBuyTaxFees() + deployerTax;\r\n\t\t\tuint256 uSellFee = totalSellTaxFees() + deployerTax;\r\n\r\n\t\t\tif (from == swapPair && uBuyFee > 0) {\r\n\t\t\t\tfees = (amount * uBuyFee) / (100 ether);\r\n\t\t\t\ttokensForDeployer += (fees * deployerTax) / uBuyFee;\r\n\t\t\t\ttokensForDev += (fees * tokenInfo.devTaxBuy) / uBuyFee;\r\n\t\t\t\ttokensForLiquidity += (fees * tokenInfo.lpTaxBuy) / uBuyFee;\r\n\t\t\t\ttokensForMarketing += (fees * tokenInfo.marketingTaxBuy) / uBuyFee;\r\n\t\t\t}\r\n\t\t\tif (to == swapPair && uSellFee > 0) {\r\n\t\t\t\tfees = (amount * uSellFee) / (100 ether);\r\n\t\t\t\ttokensForDeployer += (fees * deployerTax) / uSellFee;\r\n\t\t\t\ttokensForDev += (fees * tokenInfo.devTaxSell) / uSellFee;\r\n\t\t\t\ttokensForLiquidity += (fees * tokenInfo.lpTaxSell) / uSellFee;\r\n\t\t\t\ttokensForMarketing += (fees * tokenInfo.marketingTaxSell) / uSellFee;\r\n\t\t\t}\r\n\r\n\t\t\tsuper._transfer(from, address(this), fees);\r\n\r\n\t\t\tif (to == swapPair && fees > 0) {\r\n\t\t\t\t_swapAndAddLiquidity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper._transfer(from, to, amount - fees);\r\n\t}\r\n\r\n\treceive() external payable {}\r\n}\r\n"
      }
    },
    "settings": {
      "remappings": [],
      "optimizer": {
        "enabled": true,
        "runs": 1500
      },
      "evmVersion": "london",
      "libraries": {},
      "outputSelection": {
        "*": {
          "*": [
            "evm.bytecode",
            "evm.deployedBytecode",
            "devdoc",
            "userdoc",
            "metadata",
            "abi"
          ]
        }
      }
    }
  }}