ETH Price: $1,822.75 (-14.98%)
 

Overview

Max Total Supply

100,000,000 DAY

Holders

4

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Dayhub

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion
/*
💬 Telegram: https://t.me/dayhub_news

💬 Discord Server: https://discord.gg/dayhub

🗙 Twitter: https://x.com/dayhub_io

🌐 Website: https://dayhub.io/

📝Docs: https://docs.dayhub.io/
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "./Context.sol";
import "./Ownable.sol";
import "./Address.sol";
import "./IUniswap.sol";

contract Dayhub is Context, IERC20, Ownable {
  using Address for address;
  //Mapping section for better tracking.
  mapping(address => uint256) private _tOwned;
  mapping(address => mapping(address => uint256)) private _allowances;
  mapping(address => bool) private _isExcludedFromFee;

  //Loging and Event Information for better troubleshooting.
  event Log(string, uint256);
  event AuditLog(string, address);
  event RewardLiquidityProviders(uint256 tokenAmount);
  event SwapAndLiquifyEnabledUpdated(bool enabled);
  event SwapAndLiquify(
    uint256 tokensSwapped,
    uint256 ethReceived,
    uint256 tokensIntoLiqudity
  );
  event SwapTokensForETH(uint256 amountIn, address[] path);
  //Supply Definition.
  uint256 private _tTotal = 100_000_000 ether;
  uint256 private _tFeeTotal;
  //Token Definition.
  string public constant name = "Dayhub";
  string public constant symbol = "DAY";
  uint8 public constant decimals = 18;
  //Definition of Wallets for Marketing or team.
  address payable public marketingWallet = payable(msg.sender);
  address payable public revenueWallet = payable(msg.sender);
  //Dead Wallet for SAFU Contract
  address public constant deadWallet =
    0x000000000000000000000000000000000000dEaD;

  //Taxes Definition.
  uint public buyFee = 4;

  uint256 public sellFee = 4;
  uint public revenueFee = 1;
  uint public marketingFee = 3;

  uint256 public marketingTokensCollected = 0;

  uint256 public totalMarketingTokensCollected = 0;

  uint256 public minimumTokensBeforeSwap = 10_000 ether;

  //Oracle Price Update, Manual Process.
  uint256 public swapOutput = 0;
  //Router and Pair Configuration.
  IUniswapV2Router02 public uniswapV2Router;
  address public uniswapV2Pair;
  address private WETH;
  //Tracking of Automatic Swap vs Manual Swap.
  bool public inSwapAndLiquify;
  bool public swapAndLiquifyEnabled = true;
  bool public tradingOpen;

  modifier lockTheSwap() {
    inSwapAndLiquify = true;
    _;
    inSwapAndLiquify = false;
  }

  constructor() {
    _tOwned[_msgSender()] = _tTotal;
    address currentRouter;
    //Adding Variables for all the routers for easier deployment for our customers.
    if (block.chainid == 56) {
      currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // PCS Router
    } else if (block.chainid == 97) {
      currentRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // PCS Testnet
    } else if (block.chainid == 43114) {
      currentRouter = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; //Avax Mainnet
    } else if (block.chainid == 137) {
      currentRouter = 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff; //Polygon Ropsten
    } else if (block.chainid == 6066) {
      currentRouter = 0x4169Db906fcBFB8b12DbD20d98850Aee05B7D889; //Tres Leches Chain
    } else if (block.chainid == 250) {
      currentRouter = 0xF491e7B69E4244ad4002BC14e878a34207E38c29; //SpookySwap FTM
    } else if (block.chainid == 8453) {
      currentRouter = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; //Arbitrum Sushi
    } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 5) {
      currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Mainnet
    } else {
      revert("You're not Blade");
    }

    //End of Router Variables.
    //Create Pair in the contructor, this may fail on some blockchains and can be done in a separate line if needed.
    IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter);
    WETH = _uniswapV2Router.WETH();
    uniswapV2Router = _uniswapV2Router;
    _isExcludedFromFee[owner()] = true;
    _isExcludedFromFee[address(this)] = true;

    emit Transfer(address(0), _msgSender(), _tTotal);
  }

  //Readable Functions.
  function totalSupply() public view override returns (uint256) {
    return _tTotal;
  }

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

  //ERC 20 Standard Transfer Functions
  function transfer(
    address recipient,
    uint256 amount
  ) public override returns (bool) {
    _transfer(_msgSender(), recipient, amount);
    return true;
  }

  //ERC 20 Standard Allowance Function
  function allowance(
    address _owner,
    address spender
  ) public view override returns (uint256) {
    return _allowances[_owner][spender];
  }

  //ERC 20 Standard Approve Function
  function approve(
    address spender,
    uint256 amount
  ) public override returns (bool) {
    _approve(_msgSender(), spender, amount);
    return true;
  }

  //ERC 20 Standard Transfer From
  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) public override returns (bool) {
    uint currentAllowance = _allowances[sender][_msgSender()];
    require(
      currentAllowance >= amount,
      "ERC20: transfer amount exceeds allowance"
    );
    _transfer(sender, recipient, amount);
    _approve(sender, _msgSender(), currentAllowance - amount);
    return true;
  }

  //ERC 20 Standard increase Allowance
  function increaseAllowance(
    address spender,
    uint256 addedValue
  ) public virtual returns (bool) {
    _approve(
      _msgSender(),
      spender,
      _allowances[_msgSender()][spender] + addedValue
    );
    return true;
  }

  //ERC 20 Standard decrease Allowance
  function decreaseAllowance(
    address spender,
    uint256 subtractedValue
  ) public virtual returns (bool) {
    _approve(
      _msgSender(),
      spender,
      _allowances[_msgSender()][spender] - subtractedValue
    );
    return true;
  }

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

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

  //Transfer function, validate correct wallet structure, take fees, and other custom taxes are done during the transfer.
  function _transfer(address from, address to, uint256 amount) private {
    require(from != address(0), "ERC20: transfer from the zero address");
    require(to != address(0), "ERC20: transfer to the zero address");
    require(amount > 0, "Transfer amount must be greater than zero");
    require(_tOwned[from] >= amount, "ERC20: transfer amount exceeds balance");

    if (!tradingOpen) {
      require((from == owner()) || (to == owner()), "trading is not open");
    }

    //Adding logic for automatic swap.
    uint256 contractTokenBalance = balanceOf(address(this));
    bool overMinimumTokenBalance = contractTokenBalance >=
      minimumTokensBeforeSwap;
    uint fee = 0;
    //if any account belongs to _isExcludedFromFee account then remove the fee
    if (
      !inSwapAndLiquify &&
      from != uniswapV2Pair &&
      overMinimumTokenBalance &&
      swapAndLiquifyEnabled
    ) {
      swapAndLiquify();
    }
    if (to == uniswapV2Pair && !_isExcludedFromFee[from]) {
      fee = (sellFee * amount) / 100;
    }
    if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
      fee = (buyFee * amount) / 100;
    }
    amount -= fee;
    if (fee > 0) {
      _tokenTransfer(from, address(this), fee);
      marketingTokensCollected += fee;
      totalMarketingTokensCollected += fee;
    }
    _tokenTransfer(from, to, amount);
  }

  //Swap Tokens for ETH or to add liquidity either automatically or manual, by default this is set to manual.
  //Corrected newBalance bug, it sending ETH to wallet and any remaining is on contract and can be recoverred.
  function swapAndLiquify() public lockTheSwap {
    uint256 totalTokens = balanceOf(address(this));
    swapTokensForEth(totalTokens);
    uint ethBalance = address(this).balance;
    uint totalFees = revenueFee + marketingFee;
    if (totalFees == 0) totalFees = 1;
    uint revenueAmount = (ethBalance * revenueFee) / totalFees;
    ethBalance -= revenueAmount;
    transferToAddressETH(revenueWallet, revenueAmount);
    transferToAddressETH(marketingWallet, ethBalance);

    marketingTokensCollected = 0;
  }

  //swap for eth is to support the converstion of tokens to weth during swapandliquify this is a supporting function
  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] = WETH;
    _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    emit SwapTokensForETH(tokenAmount, path);
  }

  //ERC 20 standard transfer, only added if taking fees to countup the amount of fees for better tracking and split purpose.
  function _tokenTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) private {
    _tOwned[sender] -= amount;
    _tOwned[recipient] += amount;

    emit Transfer(sender, recipient, amount);
  }

  function isExcludedFromFee(address account) external view returns (bool) {
    return _isExcludedFromFee[account];
  }

  function enableTrading() external onlyOwner {
    tradingOpen = true;
    uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).getPair(
      address(this),
      WETH
    );
  }

  //exclude wallets from fees, this is needed for launch or other contracts.
  function excludeFromFee(address account) external onlyOwner {
    _isExcludedFromFee[account] = true;
    emit AuditLog("We have excluded the following walled in fees:", account);
  }

  //include wallet back in fees.
  function includeInFee(address account) external onlyOwner {
    _isExcludedFromFee[account] = false;
    emit AuditLog("We have including the following walled in fees:", account);
  }

  //Automatic Swap Configuration.
  function setTokensToSwap(
    uint256 _minimumTokensBeforeSwap
  ) external onlyOwner {
    require(
      _minimumTokensBeforeSwap >= 100 ether,
      "You need to enter more than 100 tokens."
    );
    minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
    emit Log(
      "We have updated minimunTokensBeforeSwap to:",
      minimumTokensBeforeSwap
    );
  }

  function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
    require(swapAndLiquifyEnabled != _enabled, "Value already set");
    swapAndLiquifyEnabled = _enabled;
    emit SwapAndLiquifyEnabledUpdated(_enabled);
  }

  //set a new marketing wallet.
  function setMarketingWallet(address _marketingWallet) external onlyOwner {
    require(_marketingWallet != address(0), "setMarketingWallet: ZERO");
    marketingWallet = payable(_marketingWallet);
    emit AuditLog("We have Updated the MarketingWallet:", marketingWallet);
  }

  //set a new team wallet.
  function setRevenueWallet(address _revenueWallet) external onlyOwner {
    require(_revenueWallet != address(0), "setRevenueWallet: ZERO");
    revenueWallet = payable(_revenueWallet);
    emit AuditLog("We have Updated the RarketingWallet:", revenueWallet);
  }

  function transferToAddressETH(
    address payable recipient,
    uint256 amount
  ) private {
    if (amount == 0) return;
    (bool succ, ) = recipient.call{ value: amount }("");
    require(succ, "Transfer failed.");
  }

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

  /////---fallback--////
  //This cannot be removed as is a fallback to the swapAndLiquify
  event SwapETHForTokens(uint256 amountIn, address[] path);

  function swapETHForTokens(uint256 amount) private {
    // generate the uniswap pair path of token -> weth
    address[] memory path = new address[](2);
    path[0] = WETH;
    path[1] = address(this);
    emit SwapETHForTokens(amount, path);
  }

  // Withdraw ETH that's potentially stuck in the Contract
  function recoverETHfromContract() external onlyOwner {
    uint ethBalance = address(this).balance;
    (bool succ, ) = payable(marketingWallet).call{ value: ethBalance }("");
    require(succ, "Transfer failed");
    emit AuditLog(
      "We have recover the stock eth from contract.",
      marketingWallet
    );
  }

  // Withdraw ERC20 tokens that are potentially stuck in Contract
  function recoverTokensFromContract(
    address _tokenAddress,
    uint256 _amount
  ) external onlyOwner {
    require(
      _tokenAddress != address(this),
      "Owner can't claim contract's balance of its own tokens"
    );
    bool succ = IERC20(_tokenAddress).transfer(marketingWallet, _amount);
    require(succ, "Transfer failed");
    emit Log("We have recovered tokens from contract:", _amount);
  }

  function setFeeLimit(uint _buyFee, uint _sellFee) external onlyOwner {
    buyFee = _buyFee;
    sellFee = _sellFee;
  }

  //Final Dev notes, this code has been tested and audited, last update to code was done to re-add swapandliquify function to the transfer as option, is recommended to be used manually instead of automatic.
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

pragma solidity ^0.8.26;

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                0,
                "Address: low-level call failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data
    ) internal view returns (bytes memory) {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(
        bytes memory returndata,
        string memory errorMessage
    ) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

pragma solidity ^0.8.26;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.24;

interface IUniRouter {
  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;

  function swapExactTokensForETH(
    uint amountIn,
    uint amountOutMin,
    address[] calldata path,
    address to,
    uint deadline
  ) external;
}

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

  function getPair(
    address tokenA,
    address tokenB
  ) external returns (address pair);
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

File 7 of 9 : Lib.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function per(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= 100, "Percentage must be between 0 and 100");
        return (a * b) / 100;
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

pragma solidity ^0.8.26;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    /**
     * @dev Multiplies two numbers, throws on overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
     * @dev Integer division of two numbers, truncating the quotient.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
     * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
     * @dev Adds two numbers, throws on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "cancun",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"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":"string","name":"","type":"string"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"AuditLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Log","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":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokensCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","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":"revenueFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFeeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_revenueWallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingTokensCollected","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":"tradingOpen","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e40000006004908155600680546001600160a01b03199081163390811790925560078054909116909117905560088190556009556001600a556003600b555f600c819055600d81905569021e19e0c9bab2400000600e55600f556012805460ff60a81b1916600160a81b179055348015610084575f80fd5b5061008e33610358565b600454335f90815260016020526040812091909155466038036100c657507310ed43c718714eb63d5aa57b78b54704e256024e610214565b466061036100e9575073d99d1c33f9fc3444f8101754abc46c52416550d1610214565b4661a86a0361010d57507360ae616a2155ee3d9a68541ba4544862310933d4610214565b46608903610130575073a5e0829caced8ffdd4de3c43696c57f7d7a678ff610214565b466117b2036101545750734169db906fcbfb8b12dbd20d98850aee05b7d889610214565b4660fa03610177575073f491e7b69e4244ad4002bc14e878a34207e38c29610214565b466121050361019b5750734752ba5dbc23f44d87826276bf6fd6b1c372ad24610214565b46600114806101aa5750466004145b806101b55750466005145b156101d55750737a250d5630b4cf539739df2c5dacb4c659f2488d610214565b60405162461bcd60e51b815260206004820152601060248201526f596f75277265206e6f7420426c61646560801b604482015260640160405180910390fd5b5f819050806001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610254573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027891906103a7565b601280546001600160a01b03199081166001600160a01b039384161790915560108054909116918316919091179055600160035f6102bd5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff1995861617905530815260039092529020805490911660011790556103033390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405161034991815260200190565b60405180910390a350506103d4565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156103b7575f80fd5b81516001600160a01b03811681146103cd575f80fd5b9392505050565b611d84806103e15f395ff3fe60806040526004361061024c575f3560e01c80636ca60bc611610134578063b29ad50a116100b3578063dd62ed3e11610078578063dd62ed3e146106c0578063e6be4a7214610704578063ea2f0b3714610723578063f2fde38b14610742578063fb235f3414610761578063ffb54a9914610780575f80fd5b8063b29ad50a14610645578063c125a79514610659578063c49b9a8014610678578063ce831ed514610697578063d2d7ad83146106ab575f80fd5b80638a8c523c116100f95780638a8c523c146105a95780638da5cb5b146105bd57806395d89b41146105d9578063a457c2d714610607578063a9059cbb14610626575f80fd5b80636ca60bc61461051857806370a082311461052d578063715018a61461056157806375f0a8741461057557806385141a7714610594575f80fd5b806340763503116101cb57806349bd5a5e1161019057806349bd5a5e146104595780634a74bb02146104785780635342acb4146104985780635d098b38146104cf5780635eaa8247146104ee5780636b67c4df14610503575f80fd5b806340763503146103d0578063437823ec146103e55780634447842514610406578063461d9476146104255780634706240214610444575f80fd5b806323b872dd1161021157806323b872dd146103425780632b14ca5614610361578063313ce5671461037657806336e4ec641461039c57806339509351146103b1575f80fd5b806306fdde0314610257578063095ea7b31461029e5780631694505e146102cd57806318160ddd14610304578063220f669614610322575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b50610288604051806040016040528060068152602001652230bcb43ab160d11b81525081565b6040516102959190611a6d565b60405180910390f35b3480156102a9575f80fd5b506102bd6102b8366004611ab6565b6107a0565b6040519015158152602001610295565b3480156102d8575f80fd5b506010546102ec906001600160a01b031681565b6040516001600160a01b039091168152602001610295565b34801561030f575f80fd5b506004545b604051908152602001610295565b34801561032d575f80fd5b506012546102bd90600160a01b900460ff1681565b34801561034d575f80fd5b506102bd61035c366004611ae0565b6107b6565b34801561036c575f80fd5b5061031460095481565b348015610381575f80fd5b5061038a601281565b60405160ff9091168152602001610295565b3480156103a7575f80fd5b50610314600a5481565b3480156103bc575f80fd5b506102bd6103cb366004611ab6565b610869565b3480156103db575f80fd5b50610314600d5481565b3480156103f0575f80fd5b506104046103ff366004611b1e565b61089f565b005b348015610411575f80fd5b506007546102ec906001600160a01b031681565b348015610430575f80fd5b5061040461043f366004611b40565b61094b565b34801561044f575f80fd5b5061031460085481565b348015610464575f80fd5b506011546102ec906001600160a01b031681565b348015610483575f80fd5b506012546102bd90600160a81b900460ff1681565b3480156104a3575f80fd5b506102bd6104b2366004611b1e565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156104da575f80fd5b506104046104e9366004611b1e565b610a3c565b3480156104f9575f80fd5b50610314600f5481565b34801561050e575f80fd5b50610314600b5481565b348015610523575f80fd5b50610314600c5481565b348015610538575f80fd5b50610314610547366004611b1e565b6001600160a01b03165f9081526001602052604090205490565b34801561056c575f80fd5b50610404610b1a565b348015610580575f80fd5b506006546102ec906001600160a01b031681565b34801561059f575f80fd5b506102ec61dead81565b3480156105b4575f80fd5b50610404610b2d565b3480156105c8575f80fd5b505f546001600160a01b03166102ec565b3480156105e4575f80fd5b506102886040518060400160405280600381526020016244415960e81b81525081565b348015610612575f80fd5b506102bd610621366004611ab6565b610c47565b348015610631575f80fd5b506102bd610640366004611ab6565b610c7d565b348015610650575f80fd5b50610404610c89565b348015610664575f80fd5b50610404610673366004611b57565b610d43565b348015610683575f80fd5b50610404610692366004611b84565b610d56565b3480156106a2575f80fd5b50610404610e01565b3480156106b6575f80fd5b50610314600e5481565b3480156106cb575f80fd5b506103146106da366004611b9f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561070f575f80fd5b5061040461071e366004611ab6565b610f1c565b34801561072e575f80fd5b5061040461073d366004611b1e565b6110cc565b34801561074d575f80fd5b5061040461075c366004611b1e565b611160565b34801561076c575f80fd5b5061040461077b366004611b1e565b6111d9565b34801561078b575f80fd5b506012546102bd90600160b01b900460ff1681565b5f6107ac3384846112b0565b5060015b92915050565b6001600160a01b0383165f9081526002602090815260408083203384529091528120548281101561083f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61084a8585856113d4565b61085e85336108598685611bea565b6112b0565b506001949350505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107ac918590610859908690611bfd565b6108a7611764565b6001600160a01b0381165f9081526003602052604090819020805460ff19166001179055515f80516020611d2f833981519152906109409083906040808252602e908201527f57652068617665206578636c756465642074686520666f6c6c6f77696e67207760608201526d30b63632b21034b7103332b2b99d60911b60808201526001600160a01b0391909116602082015260a00190565b60405180910390a150565b610953611764565b68056bc75e2d631000008110156109bc5760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f20656e746572206d6f7265207468616e20313030206044820152663a37b5b2b7399760c91b6064820152608401610836565b600e81905560408051818152602b918101919091527f576520686176652075706461746564206d696e696d756e546f6b656e7342656660608201526a37b932a9bbb0b8103a379d60a91b6080820152602081018290527fdd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b59060a001610940565b610a44611764565b6001600160a01b038116610a9a5760405162461bcd60e51b815260206004820152601860248201527f7365744d61726b6574696e6757616c6c65743a205a45524f00000000000000006044820152606401610836565b600680546001600160a01b0319166001600160a01b038316908117909155604080518181526024918101919091527f57652068617665205570646174656420746865204d61726b6574696e6757616c6060820152633632ba1d60e11b608082015260208101919091525f80516020611d2f8339815191529060a001610940565b610b22611764565b610b2b5f6117bd565b565b610b35611764565b6012805460ff60b01b1916600160b01b1790556010546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa158015610b90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb49190611c10565b60125460405163e6a4390560e01b81523060048201526001600160a01b03918216602482015291169063e6a4390590604401602060405180830381865afa158015610c01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c259190611c10565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107ac918590610859908690611bea565b5f6107ac3384846113d4565b6012805460ff60a01b1916600160a01b179055305f908152600160205260408120549050610cb68161180c565b600b54600a5447915f91610cca9190611bfd565b9050805f03610cd7575060015b5f81600a5484610ce79190611c2b565b610cf19190611c42565b9050610cfd8184611bea565b600754909350610d16906001600160a01b03168261192c565b600654610d2c906001600160a01b03168461192c565b50505f600c5550506012805460ff60a01b19169055565b610d4b611764565b600891909155600955565b610d5e611764565b801515601260159054906101000a900460ff16151503610db45760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610836565b60128054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061094090831515815260200190565b610e09611764565b60065460405147915f916001600160a01b039091169083908381818185875af1925050503d805f8114610e57576040519150601f19603f3d011682016040523d82523d5f602084013e610e5c565b606091505b5050905080610e9f5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610836565b60065460408051818152602c918101919091527f57652068617665207265636f766572207468652073746f636b2065746820667260608201526b37b69031b7b73a3930b1ba1760a11b60808201526001600160a01b0390911660208201525f80516020611d2f8339815191529060a0015b60405180910390a15050565b610f24611764565b306001600160a01b03831603610f9b5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610836565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390525f9184169063a9059cbb906044016020604051808303815f875af1158015610fec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190611c61565b9050806110515760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610836565b604080518181526027818301527f57652068617665207265636f766572656420746f6b656e732066726f6d20636f606082015266373a3930b1ba1d60c91b60808201526020810184905290517fdd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b59181900360a00190a1505050565b6110d4611764565b6001600160a01b0381165f81815260036020908152604091829020805460ff191690558151828152602f928101929092527f5765206861766520696e636c7564696e672074686520666f6c6c6f77696e672060608301526e3bb0b63632b21034b7103332b2b99d60891b60808301528101919091525f80516020611d2f8339815191529060a001610940565b611168611764565b6001600160a01b0381166111cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610836565b6111d6816117bd565b50565b6111e1611764565b6001600160a01b0381166112305760405162461bcd60e51b8152602060048201526016602482015275736574526576656e756557616c6c65743a205a45524f60501b6044820152606401610836565b600780546001600160a01b0319166001600160a01b038316908117909155604080518181526024918101919091527f57652068617665205570646174656420746865205261726b6574696e6757616c6060820152633632ba1d60e11b608082015260208101919091525f80516020611d2f8339815191529060a001610940565b6001600160a01b0383166113125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610836565b6001600160a01b0382166113735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610836565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166114385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610836565b6001600160a01b03821661149a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610836565b5f81116114fb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610836565b6001600160a01b0383165f908152600160205260409020548111156115715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610836565b601254600160b01b900460ff166115eb575f546001600160a01b03848116911614806115a957505f546001600160a01b038381169116145b6115eb5760405162461bcd60e51b81526020600482015260136024820152723a3930b234b7339034b9903737ba1037b832b760691b6044820152606401610836565b305f90815260016020526040812054600e5460125491929083101591600160a01b900460ff1615801561162c57506011546001600160a01b03878116911614155b80156116355750815b801561164a5750601254600160a81b900460ff165b1561165757611657610c89565b6011546001600160a01b03868116911614801561168c57506001600160a01b0386165f9081526003602052604090205460ff16155b156116ae576064846009546116a19190611c2b565b6116ab9190611c42565b90505b6011546001600160a01b0387811691161480156116e357506001600160a01b0385165f9081526003602052604090205460ff16155b15611705576064846008546116f89190611c2b565b6117029190611c42565b90505b61170f8185611bea565b93508015611751576117228630836119ce565b80600c5f8282546117339190611bfd565b9250508190555080600d5f82825461174b9190611bfd565b90915550505b61175c8686866119ce565b505050505050565b5f546001600160a01b03163314610b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610836565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061183f5761183f611c7c565b6001600160a01b03928316602091820292909201015260125482519116908290600190811061187057611870611c7c565b6001600160a01b03928316602091820292909201015260105461189691309116846112b0565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906118ce9085905f90869030904290600401611cd3565b5f604051808303815f87803b1580156118e5575f80fd5b505af11580156118f7573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051610f10929190611d0e565b805f03611937575050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611980576040519150601f19603f3d011682016040523d82523d5f602084013e611985565b606091505b50509050806119c95760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610836565b505050565b6001600160a01b0383165f90815260016020526040812080548392906119f5908490611bea565b90915550506001600160a01b0382165f9081526001602052604081208054839290611a21908490611bfd565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c791815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146111d6575f80fd5b5f8060408385031215611ac7575f80fd5b8235611ad281611aa2565b946020939093013593505050565b5f805f60608486031215611af2575f80fd5b8335611afd81611aa2565b92506020840135611b0d81611aa2565b929592945050506040919091013590565b5f60208284031215611b2e575f80fd5b8135611b3981611aa2565b9392505050565b5f60208284031215611b50575f80fd5b5035919050565b5f8060408385031215611b68575f80fd5b50508035926020909101359150565b80151581146111d6575f80fd5b5f60208284031215611b94575f80fd5b8135611b3981611b77565b5f8060408385031215611bb0575f80fd5b8235611bbb81611aa2565b91506020830135611bcb81611aa2565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107b0576107b0611bd6565b808201808211156107b0576107b0611bd6565b5f60208284031215611c20575f80fd5b8151611b3981611aa2565b80820281158282048414176107b0576107b0611bd6565b5f82611c5c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c71575f80fd5b8151611b3981611b77565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b82811015611cc95781516001600160a01b0316865260209586019590910190600101611ca2565b5093949350505050565b85815284602082015260a060408201525f611cf160a0830186611c90565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611d266040830184611c90565b94935050505056fe025dbd6ad989fe1a64db7dc049e29723ff9d35a97d84ae9aab96196f00ec1a00a2646970667358221220820b982b148818e0a0d22c1b129e021a17d91c795ea92dcd63ecb22da2d990f364736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061024c575f3560e01c80636ca60bc611610134578063b29ad50a116100b3578063dd62ed3e11610078578063dd62ed3e146106c0578063e6be4a7214610704578063ea2f0b3714610723578063f2fde38b14610742578063fb235f3414610761578063ffb54a9914610780575f80fd5b8063b29ad50a14610645578063c125a79514610659578063c49b9a8014610678578063ce831ed514610697578063d2d7ad83146106ab575f80fd5b80638a8c523c116100f95780638a8c523c146105a95780638da5cb5b146105bd57806395d89b41146105d9578063a457c2d714610607578063a9059cbb14610626575f80fd5b80636ca60bc61461051857806370a082311461052d578063715018a61461056157806375f0a8741461057557806385141a7714610594575f80fd5b806340763503116101cb57806349bd5a5e1161019057806349bd5a5e146104595780634a74bb02146104785780635342acb4146104985780635d098b38146104cf5780635eaa8247146104ee5780636b67c4df14610503575f80fd5b806340763503146103d0578063437823ec146103e55780634447842514610406578063461d9476146104255780634706240214610444575f80fd5b806323b872dd1161021157806323b872dd146103425780632b14ca5614610361578063313ce5671461037657806336e4ec641461039c57806339509351146103b1575f80fd5b806306fdde0314610257578063095ea7b31461029e5780631694505e146102cd57806318160ddd14610304578063220f669614610322575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b50610288604051806040016040528060068152602001652230bcb43ab160d11b81525081565b6040516102959190611a6d565b60405180910390f35b3480156102a9575f80fd5b506102bd6102b8366004611ab6565b6107a0565b6040519015158152602001610295565b3480156102d8575f80fd5b506010546102ec906001600160a01b031681565b6040516001600160a01b039091168152602001610295565b34801561030f575f80fd5b506004545b604051908152602001610295565b34801561032d575f80fd5b506012546102bd90600160a01b900460ff1681565b34801561034d575f80fd5b506102bd61035c366004611ae0565b6107b6565b34801561036c575f80fd5b5061031460095481565b348015610381575f80fd5b5061038a601281565b60405160ff9091168152602001610295565b3480156103a7575f80fd5b50610314600a5481565b3480156103bc575f80fd5b506102bd6103cb366004611ab6565b610869565b3480156103db575f80fd5b50610314600d5481565b3480156103f0575f80fd5b506104046103ff366004611b1e565b61089f565b005b348015610411575f80fd5b506007546102ec906001600160a01b031681565b348015610430575f80fd5b5061040461043f366004611b40565b61094b565b34801561044f575f80fd5b5061031460085481565b348015610464575f80fd5b506011546102ec906001600160a01b031681565b348015610483575f80fd5b506012546102bd90600160a81b900460ff1681565b3480156104a3575f80fd5b506102bd6104b2366004611b1e565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156104da575f80fd5b506104046104e9366004611b1e565b610a3c565b3480156104f9575f80fd5b50610314600f5481565b34801561050e575f80fd5b50610314600b5481565b348015610523575f80fd5b50610314600c5481565b348015610538575f80fd5b50610314610547366004611b1e565b6001600160a01b03165f9081526001602052604090205490565b34801561056c575f80fd5b50610404610b1a565b348015610580575f80fd5b506006546102ec906001600160a01b031681565b34801561059f575f80fd5b506102ec61dead81565b3480156105b4575f80fd5b50610404610b2d565b3480156105c8575f80fd5b505f546001600160a01b03166102ec565b3480156105e4575f80fd5b506102886040518060400160405280600381526020016244415960e81b81525081565b348015610612575f80fd5b506102bd610621366004611ab6565b610c47565b348015610631575f80fd5b506102bd610640366004611ab6565b610c7d565b348015610650575f80fd5b50610404610c89565b348015610664575f80fd5b50610404610673366004611b57565b610d43565b348015610683575f80fd5b50610404610692366004611b84565b610d56565b3480156106a2575f80fd5b50610404610e01565b3480156106b6575f80fd5b50610314600e5481565b3480156106cb575f80fd5b506103146106da366004611b9f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561070f575f80fd5b5061040461071e366004611ab6565b610f1c565b34801561072e575f80fd5b5061040461073d366004611b1e565b6110cc565b34801561074d575f80fd5b5061040461075c366004611b1e565b611160565b34801561076c575f80fd5b5061040461077b366004611b1e565b6111d9565b34801561078b575f80fd5b506012546102bd90600160b01b900460ff1681565b5f6107ac3384846112b0565b5060015b92915050565b6001600160a01b0383165f9081526002602090815260408083203384529091528120548281101561083f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61084a8585856113d4565b61085e85336108598685611bea565b6112b0565b506001949350505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107ac918590610859908690611bfd565b6108a7611764565b6001600160a01b0381165f9081526003602052604090819020805460ff19166001179055515f80516020611d2f833981519152906109409083906040808252602e908201527f57652068617665206578636c756465642074686520666f6c6c6f77696e67207760608201526d30b63632b21034b7103332b2b99d60911b60808201526001600160a01b0391909116602082015260a00190565b60405180910390a150565b610953611764565b68056bc75e2d631000008110156109bc5760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f20656e746572206d6f7265207468616e20313030206044820152663a37b5b2b7399760c91b6064820152608401610836565b600e81905560408051818152602b918101919091527f576520686176652075706461746564206d696e696d756e546f6b656e7342656660608201526a37b932a9bbb0b8103a379d60a91b6080820152602081018290527fdd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b59060a001610940565b610a44611764565b6001600160a01b038116610a9a5760405162461bcd60e51b815260206004820152601860248201527f7365744d61726b6574696e6757616c6c65743a205a45524f00000000000000006044820152606401610836565b600680546001600160a01b0319166001600160a01b038316908117909155604080518181526024918101919091527f57652068617665205570646174656420746865204d61726b6574696e6757616c6060820152633632ba1d60e11b608082015260208101919091525f80516020611d2f8339815191529060a001610940565b610b22611764565b610b2b5f6117bd565b565b610b35611764565b6012805460ff60b01b1916600160b01b1790556010546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa158015610b90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb49190611c10565b60125460405163e6a4390560e01b81523060048201526001600160a01b03918216602482015291169063e6a4390590604401602060405180830381865afa158015610c01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c259190611c10565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107ac918590610859908690611bea565b5f6107ac3384846113d4565b6012805460ff60a01b1916600160a01b179055305f908152600160205260408120549050610cb68161180c565b600b54600a5447915f91610cca9190611bfd565b9050805f03610cd7575060015b5f81600a5484610ce79190611c2b565b610cf19190611c42565b9050610cfd8184611bea565b600754909350610d16906001600160a01b03168261192c565b600654610d2c906001600160a01b03168461192c565b50505f600c5550506012805460ff60a01b19169055565b610d4b611764565b600891909155600955565b610d5e611764565b801515601260159054906101000a900460ff16151503610db45760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610836565b60128054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061094090831515815260200190565b610e09611764565b60065460405147915f916001600160a01b039091169083908381818185875af1925050503d805f8114610e57576040519150601f19603f3d011682016040523d82523d5f602084013e610e5c565b606091505b5050905080610e9f5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610836565b60065460408051818152602c918101919091527f57652068617665207265636f766572207468652073746f636b2065746820667260608201526b37b69031b7b73a3930b1ba1760a11b60808201526001600160a01b0390911660208201525f80516020611d2f8339815191529060a0015b60405180910390a15050565b610f24611764565b306001600160a01b03831603610f9b5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610836565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390525f9184169063a9059cbb906044016020604051808303815f875af1158015610fec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190611c61565b9050806110515760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610836565b604080518181526027818301527f57652068617665207265636f766572656420746f6b656e732066726f6d20636f606082015266373a3930b1ba1d60c91b60808201526020810184905290517fdd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b59181900360a00190a1505050565b6110d4611764565b6001600160a01b0381165f81815260036020908152604091829020805460ff191690558151828152602f928101929092527f5765206861766520696e636c7564696e672074686520666f6c6c6f77696e672060608301526e3bb0b63632b21034b7103332b2b99d60891b60808301528101919091525f80516020611d2f8339815191529060a001610940565b611168611764565b6001600160a01b0381166111cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610836565b6111d6816117bd565b50565b6111e1611764565b6001600160a01b0381166112305760405162461bcd60e51b8152602060048201526016602482015275736574526576656e756557616c6c65743a205a45524f60501b6044820152606401610836565b600780546001600160a01b0319166001600160a01b038316908117909155604080518181526024918101919091527f57652068617665205570646174656420746865205261726b6574696e6757616c6060820152633632ba1d60e11b608082015260208101919091525f80516020611d2f8339815191529060a001610940565b6001600160a01b0383166113125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610836565b6001600160a01b0382166113735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610836565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166114385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610836565b6001600160a01b03821661149a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610836565b5f81116114fb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610836565b6001600160a01b0383165f908152600160205260409020548111156115715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610836565b601254600160b01b900460ff166115eb575f546001600160a01b03848116911614806115a957505f546001600160a01b038381169116145b6115eb5760405162461bcd60e51b81526020600482015260136024820152723a3930b234b7339034b9903737ba1037b832b760691b6044820152606401610836565b305f90815260016020526040812054600e5460125491929083101591600160a01b900460ff1615801561162c57506011546001600160a01b03878116911614155b80156116355750815b801561164a5750601254600160a81b900460ff165b1561165757611657610c89565b6011546001600160a01b03868116911614801561168c57506001600160a01b0386165f9081526003602052604090205460ff16155b156116ae576064846009546116a19190611c2b565b6116ab9190611c42565b90505b6011546001600160a01b0387811691161480156116e357506001600160a01b0385165f9081526003602052604090205460ff16155b15611705576064846008546116f89190611c2b565b6117029190611c42565b90505b61170f8185611bea565b93508015611751576117228630836119ce565b80600c5f8282546117339190611bfd565b9250508190555080600d5f82825461174b9190611bfd565b90915550505b61175c8686866119ce565b505050505050565b5f546001600160a01b03163314610b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610836565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061183f5761183f611c7c565b6001600160a01b03928316602091820292909201015260125482519116908290600190811061187057611870611c7c565b6001600160a01b03928316602091820292909201015260105461189691309116846112b0565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906118ce9085905f90869030904290600401611cd3565b5f604051808303815f87803b1580156118e5575f80fd5b505af11580156118f7573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051610f10929190611d0e565b805f03611937575050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611980576040519150601f19603f3d011682016040523d82523d5f602084013e611985565b606091505b50509050806119c95760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610836565b505050565b6001600160a01b0383165f90815260016020526040812080548392906119f5908490611bea565b90915550506001600160a01b0382165f9081526001602052604081208054839290611a21908490611bfd565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c791815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146111d6575f80fd5b5f8060408385031215611ac7575f80fd5b8235611ad281611aa2565b946020939093013593505050565b5f805f60608486031215611af2575f80fd5b8335611afd81611aa2565b92506020840135611b0d81611aa2565b929592945050506040919091013590565b5f60208284031215611b2e575f80fd5b8135611b3981611aa2565b9392505050565b5f60208284031215611b50575f80fd5b5035919050565b5f8060408385031215611b68575f80fd5b50508035926020909101359150565b80151581146111d6575f80fd5b5f60208284031215611b94575f80fd5b8135611b3981611b77565b5f8060408385031215611bb0575f80fd5b8235611bbb81611aa2565b91506020830135611bcb81611aa2565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107b0576107b0611bd6565b808201808211156107b0576107b0611bd6565b5f60208284031215611c20575f80fd5b8151611b3981611aa2565b80820281158282048414176107b0576107b0611bd6565b5f82611c5c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c71575f80fd5b8151611b3981611b77565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b82811015611cc95781516001600160a01b0316865260209586019590910190600101611ca2565b5093949350505050565b85815284602082015260a060408201525f611cf160a0830186611c90565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611d266040830184611c90565b94935050505056fe025dbd6ad989fe1a64db7dc049e29723ff9d35a97d84ae9aab96196f00ec1a00a2646970667358221220820b982b148818e0a0d22c1b129e021a17d91c795ea92dcd63ecb22da2d990f364736f6c634300081a0033

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.