ETH Price: $3,672.86 (+0.90%)

Token

ERC-20: Teh Great Race (F12)
 

Overview

Max Total Supply

1,000,000,000,000 F12

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,071,011,427.967195509 F12

Value
$0.00
0x4be1ad217502d1217b851c885767194b52a04314
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:
TehGreatRace

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : TehGreatRace1.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/utils/Context.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

error Zero_Address(string where);
error Amount_Zero();
error Exceeds_MaxAmount(string Amount);
error In_Cooldown();
error Already_Open();
error Withdraw_Failed();
error Sale_is_not_Safe();

contract TehGreatRace is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint) private cooldown;

    uint256 private constant _tTotal = 1e13 * 10 ** 8;
    uint256 private _buyProjectFee = 0;
    uint256 private _previousBuyProjectFee = _buyProjectFee;
    uint256 private _sellProjectFee = 0;
    uint256 private _previousSellProjectFee = _sellProjectFee;

    address payable private _projectWallet;

    string private constant _name = "Teh Great Race";
    string private constant _symbol = "F12";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    bool public tradingOpen;
    bool private swapping;
    bool private inSwap = false;
    bool private swapFeeForWethEnabled = false;
    bool private preventUnsafeSale = false;
    bool private cooldownEnabled = false;

    uint256 private _maxBuyAmount = _tTotal;
    uint256 private _maxSellAmount = _tTotal;
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private swapTokensForWethAmount = 0;

    event MaxBuyAmountUpdated(uint256 _maxBuyAmount);
    event MaxSellAmountUpdated(uint256 _maxSellAmount);

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

    constructor(address _uniswapV2Router, address projectWallet) {
        uniswapV2Router = IUniswapV2Router02(_uniswapV2Router);
        _projectWallet = payable(projectWallet);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_projectWallet] = true;

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function setCooldownEnabled() external onlyOwner {
        cooldownEnabled = !cooldownEnabled;
    }

    function setSwapFeeForWethEnabled() external onlyOwner {
        swapFeeForWethEnabled = !swapFeeForWethEnabled;
    }

    function setPreventUnsafeSale() public onlyOwner {
        preventUnsafeSale = !preventUnsafeSale;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) revert Zero_Address("owner");
        if (spender == address(0)) revert Zero_Address("spender");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        if (from == address(0)) revert Zero_Address("transfer_from");
        if (to == address(0)) revert Zero_Address("transfer_to");
        if (amount <= 0) revert Amount_Zero();
        bool takeTaxFee = false;
        bool swapForWeth = false;
        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !swapping
        ) {
            require(!bots[from] && !bots[to]);

            takeTaxFee = true;
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                if (amount >= _maxBuyAmount) revert Exceeds_MaxAmount("Buy");

                if (balanceOf(to) + amount >= _maxWalletAmount)
                    revert Exceeds_MaxAmount("Wallet");
                if (cooldown[to] > block.timestamp) revert In_Cooldown();
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (
                to == uniswapV2Pair &&
                from != address(uniswapV2Router) &&
                !_isExcludedFromFee[from] &&
                cooldownEnabled
            ) {
                if (preventUnsafeSale) revert Sale_is_not_Safe();
                if (amount >= _maxSellAmount) revert Exceeds_MaxAmount("Sell");
                swapForWeth = true;
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeTaxFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwapWeth = (contractTokenBalance > swapTokensForWethAmount) &&
            swapForWeth;

        if (
            canSwapWeth &&
            swapFeeForWethEnabled &&
            !swapping &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        _tokenTransfer(from, to, amount, takeTaxFee, swapForWeth);
    }

    function swapBack() private {
        uint256 tokensForProject = balanceOf(address(this));

        bool success;

        if (tokensForProject == 0) {
            return;
        }

        if (tokensForProject > swapTokensForWethAmount * 10) {
            tokensForProject = swapTokensForWethAmount * 10;
        }

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(tokensForProject);

        (success, ) = address(_projectWallet).call{
            value: address(this).balance - initialETHBalance
        }("");
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function openTrading() external onlyOwner {
        if (tradingOpen) revert Already_Open();
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp + 10 minutes
        );
        swapFeeForWethEnabled = true;
        cooldownEnabled = true;
        _maxBuyAmount = 1e11 * 10 ** 8;
        _maxSellAmount = 1e11 * 10 ** 8;
        _maxWalletAmount = 3e11 * 10 ** 8;
        swapTokensForWethAmount = 5e5 * 10 ** 8;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function setBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setMaxBuyAmount(uint256 maxBuy) public onlyOwner {
        _maxBuyAmount = maxBuy;
    }

    function setMaxSellAmount(uint256 maxSell) public onlyOwner {
        _maxSellAmount = maxSell;
    }

    function setMaxWalletAmount(uint256 maxToken) public onlyOwner {
        _maxWalletAmount = maxToken;
    }

    function setSwapTokensForWethAmount(uint256 newAmount) public onlyOwner {
        if (newAmount <= 1e3 * 10 ** 9) revert();
        if (newAmount >= 5e6 * 10 ** 9) revert();
        swapTokensForWethAmount = newAmount;
    }

    function setProjectWallet(address projectWallet) public onlyOwner {
        if (projectWallet == address(0)) revert Zero_Address("wallet");
        _isExcludedFromFee[_projectWallet] = false;
        _projectWallet = payable(projectWallet);
        _isExcludedFromFee[_projectWallet] = true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyFee(uint256 buyProjectFee) external onlyOwner {
        _buyProjectFee = buyProjectFee;
    }

    function setSellFee(uint256 sellProjectFee) external onlyOwner {
        _sellProjectFee = sellProjectFee;
    }

    function removeAllFee() private {
        if (
            _buyProjectFee == 0 &&
            _sellProjectFee == 0 &&
            _previousBuyProjectFee == 0 &&
            _previousSellProjectFee == 0
        ) return;

        _previousBuyProjectFee = _buyProjectFee;
        _previousSellProjectFee = _sellProjectFee;

        _buyProjectFee = 0;
        _sellProjectFee = 0;
    }

    function restoreAllFee() private {
        _buyProjectFee = _previousBuyProjectFee;
        _sellProjectFee = _previousSellProjectFee;
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeTaxFee,
        bool isSell
    ) private {
        if (!takeTaxFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);

        if (!takeTaxFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(
        address sender,
        uint256 amount,
        bool isSell
    ) private returns (uint256) {
        uint256 pjctFee;
        if (isSell) {
            pjctFee = _sellProjectFee;
        } else {
            pjctFee = _buyProjectFee;
        }

        uint256 tokensForProject = amount.mul(pjctFee).div(100);
        if (tokensForProject > 0) {
            _transferStandard(sender, address(this), tokensForProject);
        }

        return amount -= tokensForProject;
    }

    receive() external payable {}

    function manualswap() public onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        (bool success, ) = address(msg.sender).call{
            value: address(this).balance
        }("");
        if (!success) revert Withdraw_Failed();
    }

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

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

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

File 2 of 5 : SafeMath.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

File 3 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/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. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

File 4 of 5 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

File 5 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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 amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` 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 amount) 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 `amount` 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 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` 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 amount) external returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_uniswapV2Router","type":"address"},{"internalType":"address","name":"projectWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Already_Open","type":"error"},{"inputs":[],"name":"Amount_Zero","type":"error"},{"inputs":[{"internalType":"string","name":"Amount","type":"string"}],"name":"Exceeds_MaxAmount","type":"error"},{"inputs":[],"name":"In_Cooldown","type":"error"},{"inputs":[],"name":"Sale_is_not_Safe","type":"error"},{"inputs":[],"name":"Withdraw_Failed","type":"error"},{"inputs":[{"internalType":"string","name":"where","type":"string"}],"name":"Zero_Address","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyProjectFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPreventUnsafeSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"projectWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellProjectFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSwapFeeForWethEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensForWethAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600060065560065460075560006008556008546009556000600b60166101000a81548160ff0219169083151502179055506000600b60176101000a81548160ff0219169083151502179055506000600b60186101000a81548160ff0219169083151502179055506000600b60196101000a81548160ff021916908315150217905550683635c9adc5dea00000600c55683635c9adc5dea00000600d55683635c9adc5dea00000600e556000600f55348015620000bf57600080fd5b5060405162003c6238038062003c628339818101604052810190620000e59190620004f6565b62000105620000f96200039760201b60201c565b6200039f60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea0000060016000620001986200039760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620001ec6200046360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200031f6200039760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162000387919062000558565b60405180910390a3505062000575565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004be8262000491565b9050919050565b620004d081620004b1565b8114620004dc57600080fd5b50565b600081519050620004f081620004c5565b92915050565b6000806040838503121562000510576200050f6200048c565b5b60006200052085828601620004df565b92505060206200053385828601620004df565b9150509250929050565b6000819050919050565b62000552816200053d565b82525050565b60006020820190506200056f600083018462000547565b92915050565b60805161368b620005d7600039600081816107ae01528181610dde01528181610e0e01528181610eb901528181610fe80152818161117901528181611a1e01528181611c9f015281816121c7015281816122a801526122cf015261368b6000f3fe6080604052600436106101e75760003560e01c80638b4cee0811610102578063dd62ed3e11610095578063f2fde38b11610064578063f2fde38b14610675578063f34eb0b81461069e578063f5648a4f146106c7578063ffb54a99146106de576101ee565b8063dd62ed3e146105cf578063e63aff631461060c578063e99c9d0914610623578063ea2f0b371461064c576101ee565b8063a9059cbb116100d1578063a9059cbb1461053b578063b515566a14610578578063c3c8cd80146105a1578063c9567bf9146105b8576101ee565b80638b4cee08146104a55780638da5cb5b146104ce57806395d89b41146104f9578063a235d6a414610524576101ee565b806327a14fc21161017a57806349bd5a5e1161014957806349bd5a5e146103fd57806370a0823114610428578063715018a6146104655780638a7804471461047c576101ee565b806327a14fc21461036957806327c8194b14610392578063313ce567146103a9578063437823ec146103d4576101ee565b80631694505e116101b65780631694505e146102ad57806318160ddd146102d857806323b872dd14610303578063273123b714610340576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630cc835a31461025b5780630f83034b14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610709565b604051610215919061280d565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906128d7565b610746565b6040516102529190612932565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d919061294d565b610764565b005b34801561029057600080fd5b506102ab60048036038101906102a6919061294d565b610776565b005b3480156102b957600080fd5b506102c26107ac565b6040516102cf91906129d9565b60405180910390f35b3480156102e457600080fd5b506102ed6107d0565b6040516102fa9190612a03565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190612a1e565b6107e1565b6040516103379190612932565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190612a71565b6108ba565b005b34801561037557600080fd5b50610390600480360381019061038b919061294d565b61091d565b005b34801561039e57600080fd5b506103a761092f565b005b3480156103b557600080fd5b506103be610963565b6040516103cb9190612aba565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190612a71565b61096c565b005b34801561040957600080fd5b506104126109cf565b60405161041f9190612ae4565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190612a71565b6109f5565b60405161045c9190612a03565b60405180910390f35b34801561047157600080fd5b5061047a610a3e565b005b34801561048857600080fd5b506104a3600480360381019061049e9190612a71565b610a52565b005b3480156104b157600080fd5b506104cc60048036038101906104c7919061294d565b610c01565b005b3480156104da57600080fd5b506104e3610c13565b6040516104f09190612ae4565b60405180910390f35b34801561050557600080fd5b5061050e610c3c565b60405161051b919061280d565b60405180910390f35b34801561053057600080fd5b50610539610c79565b005b34801561054757600080fd5b50610562600480360381019061055d91906128d7565b610cad565b60405161056f9190612932565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612c47565b610ccb565b005b3480156105ad57600080fd5b506105b6610d68565b005b3480156105c457600080fd5b506105cd610d89565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612c90565b61121c565b6040516106039190612a03565b60405180910390f35b34801561061857600080fd5b506106216112a3565b005b34801561062f57600080fd5b5061064a6004803603810190610645919061294d565b6112d7565b005b34801561065857600080fd5b50610673600480360381019061066e9190612a71565b6112e9565b005b34801561068157600080fd5b5061069c60048036038101906106979190612a71565b61134c565b005b3480156106aa57600080fd5b506106c560048036038101906106c0919061294d565b6113cf565b005b3480156106d357600080fd5b506106dc6113e1565b005b3480156106ea57600080fd5b506106f361148f565b6040516107009190612932565b60405180910390f35b60606040518060400160405280600e81526020017f5465682047726561742052616365000000000000000000000000000000000000815250905090565b600061075a6107536114a2565b84846114aa565b6001905092915050565b61076c611673565b8060068190555050565b61077e611673565b64e8d4a51000811161078f57600080fd5b6611c37937e0800081106107a257600080fd5b80600f8190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000683635c9adc5dea00000905090565b60006107ee8484846116f1565b6108af846107fa6114a2565b6108aa8560405180606001604052806028815260200161362e60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108606114a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff49092919063ffffffff16565b6114aa565b600190509392505050565b6108c2611673565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610925611673565b80600e8190555050565b610937611673565b600b60179054906101000a900460ff1615600b60176101000a81548160ff021916908315150217905550565b60006009905090565b610974611673565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a46611673565b610a506000612049565b565b610a5a611673565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ac9576040517f0f2d6085000000000000000000000000000000000000000000000000000000008152600401610ac090612d1c565b60405180910390fd5b600060036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c09611673565b8060088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4631320000000000000000000000000000000000000000000000000000000000815250905090565b610c81611673565b600b60189054906101000a900460ff1615600b60186101000a81548160ff021916908315150217905550565b6000610cc1610cba6114a2565b84846116f1565b6001905092915050565b610cd3611673565b60005b8151811015610d6457600160046000848481518110610cf857610cf7612d3c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d5c90612d9a565b915050610cd6565b5050565b610d70611673565b6000610d7b306109f5565b9050610d868161210d565b50565b610d91611673565b600b60149054906101000a900460ff1615610dd8576040517fb570a37400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e0c307f0000000000000000000000000000000000000000000000000000000000000000683635c9adc5dea000006114aa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b9190612df7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190612df7565b6040518363ffffffff1660e01b8152600401610f63929190612e24565b6020604051808303816000875af1158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190612df7565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719473061102d306109f5565b600080611038610c13565b610258426110469190612e4d565b6040518863ffffffff1660e01b815260040161106796959493929190612ebc565b60606040518083038185885af1158015611085573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110aa9190612f32565b5050506001600b60176101000a81548160ff0219169083151502179055506001600b60196101000a81548160ff021916908315150217905550678ac7230489e80000600c81905550678ac7230489e80000600d819055506801a055690d9db80000600e81905550652d79883d2000600f819055506001600b60146101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111d6929190612f85565b6020604051808303816000875af11580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190612fda565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112ab611673565b600b60199054906101000a900460ff1615600b60196101000a81548160ff021916908315150217905550565b6112df611673565b80600d8190555050565b6112f1611673565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611354611673565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613079565b60405180910390fd5b6113cc81612049565b50565b6113d7611673565b80600c8190555050565b6113e9611673565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161140f906130ca565b60006040518083038185875af1925050503d806000811461144c576040519150601f19603f3d011682016040523d82523d6000602084013e611451565b606091505b505090508061148c576040517f11cdafc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600b60149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611519576040517f0f2d60850000000000000000000000000000000000000000000000000000000081526004016115109061312b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611588576040517f0f2d608500000000000000000000000000000000000000000000000000000000815260040161157f90613197565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116669190612a03565b60405180910390a3505050565b61167b6114a2565b73ffffffffffffffffffffffffffffffffffffffff16611699610c13565b73ffffffffffffffffffffffffffffffffffffffff16146116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690613203565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611760576040517f0f2d60850000000000000000000000000000000000000000000000000000000081526004016117579061326f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f0f2d60850000000000000000000000000000000000000000000000000000000081526004016117c6906132db565b60405180910390fd5b60008111611809576040517f950e6d2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611814610c13565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156118825750611852610c13565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118bb5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118f5575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561190e5750600b60159054906101000a900460ff16155b15611df257600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119b75750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119c057600080fd5b60019150600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a6d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611adb5750600b60199054906101000a900460ff165b15611c4557600c548310611b24576040517f21c5c35d000000000000000000000000000000000000000000000000000000008152600401611b1b90613347565b60405180910390fd5b600e5483611b31866109f5565b611b3b9190612e4d565b10611b7b576040517f21c5c35d000000000000000000000000000000000000000000000000000000008152600401611b72906133b3565b60405180910390fd5b42600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611bf4576040517fe786fd5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e42611c019190612e4d565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cee57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d445750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d5c5750600b60199054906101000a900460ff165b15611df157600b60189054906101000a900460ff1615611da8576040517f0da544c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d548310611dec576040517f21c5c35d000000000000000000000000000000000000000000000000000000008152600401611de39061341f565b60405180910390fd5b600190505b5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e935750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e9d57600091505b6000611ea8306109f5565b90506000600f5482118015611eba5750825b9050808015611ed55750600b60179054906101000a900460ff165b8015611eee5750600b60159054906101000a900460ff16155b8015611f445750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f9a5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fde576001600b60156101000a81548160ff021916908315150217905550611fc2612380565b6000600b60156101000a81548160ff0219169083151502179055505b611feb8787878787612472565b50505050505050565b600083831115829061203c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612033919061280d565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561214557612144612b04565b5b6040519080825280602002602001820160405280156121735781602001602082028036833780820191505090505b509050308160008151811061218b5761218a612d3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122549190612df7565b8160018151811061226857612267612d3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cd307f0000000000000000000000000000000000000000000000000000000000000000846114aa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161232f9594939291906134fd565b600060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b50505050506000600b60166101000a81548160ff02191690831515021790555050565b600061238b306109f5565b9050600080820361239d575050612470565b600a600f546123ac9190613557565b8211156123c557600a600f546123c29190613557565b91505b60004790506123d38361210d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681476124189190613599565b604051612424906130ca565b60006040518083038185875af1925050503d8060008114612461576040519150601f19603f3d011682016040523d82523d6000602084013e612466565b606091505b5050809250505050505b565b816124845761247f6124b2565b612492565b61248f85848361250b565b92505b61249d85858561257d565b816124ab576124aa612711565b5b5050505050565b60006006541480156124c657506000600854145b80156124d457506000600754145b80156124e257506000600954145b61250957600654600781905550600854600981905550600060068190555060006008819055505b565b600080821561251e576008549050612524565b60065490505b600061254c606461253e848861272590919063ffffffff16565b61273b90919063ffffffff16565b905060008111156125635761256286308361257d565b5b808561256f9190613599565b945084925050509392505050565b6125cf81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127049190612a03565b60405180910390a3505050565b600754600681905550600954600881905550565b600081836127339190613557565b905092915050565b6000818361274991906135fc565b905092915050565b6000818361275f9190613599565b905092915050565b600081836127759190612e4d565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127b757808201518184015260208101905061279c565b60008484015250505050565b6000601f19601f8301169050919050565b60006127df8261277d565b6127e98185612788565b93506127f9818560208601612799565b612802816127c3565b840191505092915050565b6000602082019050818103600083015261282781846127d4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286e82612843565b9050919050565b61287e81612863565b811461288957600080fd5b50565b60008135905061289b81612875565b92915050565b6000819050919050565b6128b4816128a1565b81146128bf57600080fd5b50565b6000813590506128d1816128ab565b92915050565b600080604083850312156128ee576128ed612839565b5b60006128fc8582860161288c565b925050602061290d858286016128c2565b9150509250929050565b60008115159050919050565b61292c81612917565b82525050565b60006020820190506129476000830184612923565b92915050565b60006020828403121561296357612962612839565b5b6000612971848285016128c2565b91505092915050565b6000819050919050565b600061299f61299a61299584612843565b61297a565b612843565b9050919050565b60006129b182612984565b9050919050565b60006129c3826129a6565b9050919050565b6129d3816129b8565b82525050565b60006020820190506129ee60008301846129ca565b92915050565b6129fd816128a1565b82525050565b6000602082019050612a1860008301846129f4565b92915050565b600080600060608486031215612a3757612a36612839565b5b6000612a458682870161288c565b9350506020612a568682870161288c565b9250506040612a67868287016128c2565b9150509250925092565b600060208284031215612a8757612a86612839565b5b6000612a958482850161288c565b91505092915050565b600060ff82169050919050565b612ab481612a9e565b82525050565b6000602082019050612acf6000830184612aab565b92915050565b612ade81612863565b82525050565b6000602082019050612af96000830184612ad5565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b3c826127c3565b810181811067ffffffffffffffff82111715612b5b57612b5a612b04565b5b80604052505050565b6000612b6e61282f565b9050612b7a8282612b33565b919050565b600067ffffffffffffffff821115612b9a57612b99612b04565b5b602082029050602081019050919050565b600080fd5b6000612bc3612bbe84612b7f565b612b64565b90508083825260208201905060208402830185811115612be657612be5612bab565b5b835b81811015612c0f5780612bfb888261288c565b845260208401935050602081019050612be8565b5050509392505050565b600082601f830112612c2e57612c2d612aff565b5b8135612c3e848260208601612bb0565b91505092915050565b600060208284031215612c5d57612c5c612839565b5b600082013567ffffffffffffffff811115612c7b57612c7a61283e565b5b612c8784828501612c19565b91505092915050565b60008060408385031215612ca757612ca6612839565b5b6000612cb58582860161288c565b9250506020612cc68582860161288c565b9150509250929050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b6000612d06600683612788565b9150612d1182612cd0565b602082019050919050565b60006020820190508181036000830152612d3581612cf9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612da5826128a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dd757612dd6612d6b565b5b600182019050919050565b600081519050612df181612875565b92915050565b600060208284031215612e0d57612e0c612839565b5b6000612e1b84828501612de2565b91505092915050565b6000604082019050612e396000830185612ad5565b612e466020830184612ad5565b9392505050565b6000612e58826128a1565b9150612e63836128a1565b9250828201905080821115612e7b57612e7a612d6b565b5b92915050565b6000819050919050565b6000612ea6612ea1612e9c84612e81565b61297a565b6128a1565b9050919050565b612eb681612e8b565b82525050565b600060c082019050612ed16000830189612ad5565b612ede60208301886129f4565b612eeb6040830187612ead565b612ef86060830186612ead565b612f056080830185612ad5565b612f1260a08301846129f4565b979650505050505050565b600081519050612f2c816128ab565b92915050565b600080600060608486031215612f4b57612f4a612839565b5b6000612f5986828701612f1d565b9350506020612f6a86828701612f1d565b9250506040612f7b86828701612f1d565b9150509250925092565b6000604082019050612f9a6000830185612ad5565b612fa760208301846129f4565b9392505050565b612fb781612917565b8114612fc257600080fd5b50565b600081519050612fd481612fae565b92915050565b600060208284031215612ff057612fef612839565b5b6000612ffe84828501612fc5565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613063602683612788565b915061306e82613007565b604082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b600081905092915050565b50565b60006130b4600083613099565b91506130bf826130a4565b600082019050919050565b60006130d5826130a7565b9150819050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b6000613115600583612788565b9150613120826130df565b602082019050919050565b6000602082019050818103600083015261314481613108565b9050919050565b7f7370656e64657200000000000000000000000000000000000000000000000000600082015250565b6000613181600783612788565b915061318c8261314b565b602082019050919050565b600060208201905081810360008301526131b081613174565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ed602083612788565b91506131f8826131b7565b602082019050919050565b6000602082019050818103600083015261321c816131e0565b9050919050565b7f7472616e736665725f66726f6d00000000000000000000000000000000000000600082015250565b6000613259600d83612788565b915061326482613223565b602082019050919050565b600060208201905081810360008301526132888161324c565b9050919050565b7f7472616e736665725f746f000000000000000000000000000000000000000000600082015250565b60006132c5600b83612788565b91506132d08261328f565b602082019050919050565b600060208201905081810360008301526132f4816132b8565b9050919050565b7f4275790000000000000000000000000000000000000000000000000000000000600082015250565b6000613331600383612788565b915061333c826132fb565b602082019050919050565b6000602082019050818103600083015261336081613324565b9050919050565b7f57616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061339d600683612788565b91506133a882613367565b602082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f53656c6c00000000000000000000000000000000000000000000000000000000600082015250565b6000613409600483612788565b9150613414826133d3565b602082019050919050565b60006020820190508181036000830152613438816133fc565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61347481612863565b82525050565b6000613486838361346b565b60208301905092915050565b6000602082019050919050565b60006134aa8261343f565b6134b4818561344a565b93506134bf8361345b565b8060005b838110156134f05781516134d7888261347a565b97506134e283613492565b9250506001810190506134c3565b5085935050505092915050565b600060a08201905061351260008301886129f4565b61351f6020830187612ead565b8181036040830152613531818661349f565b90506135406060830185612ad5565b61354d60808301846129f4565b9695505050505050565b6000613562826128a1565b915061356d836128a1565b925082820261357b816128a1565b9150828204841483151761359257613591612d6b565b5b5092915050565b60006135a4826128a1565b91506135af836128a1565b92508282039050818111156135c7576135c6612d6b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613607826128a1565b9150613612836128a1565b925082613622576136216135cd565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fea585a27ef0d4261f05a6871b1373d09f10aaf90a83adc23db73ffcd16fdff164736f6c634300081200330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d08fc56b8ebf2e572e2857f07367675456bbfd46

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80638b4cee0811610102578063dd62ed3e11610095578063f2fde38b11610064578063f2fde38b14610675578063f34eb0b81461069e578063f5648a4f146106c7578063ffb54a99146106de576101ee565b8063dd62ed3e146105cf578063e63aff631461060c578063e99c9d0914610623578063ea2f0b371461064c576101ee565b8063a9059cbb116100d1578063a9059cbb1461053b578063b515566a14610578578063c3c8cd80146105a1578063c9567bf9146105b8576101ee565b80638b4cee08146104a55780638da5cb5b146104ce57806395d89b41146104f9578063a235d6a414610524576101ee565b806327a14fc21161017a57806349bd5a5e1161014957806349bd5a5e146103fd57806370a0823114610428578063715018a6146104655780638a7804471461047c576101ee565b806327a14fc21461036957806327c8194b14610392578063313ce567146103a9578063437823ec146103d4576101ee565b80631694505e116101b65780631694505e146102ad57806318160ddd146102d857806323b872dd14610303578063273123b714610340576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630cc835a31461025b5780630f83034b14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610709565b604051610215919061280d565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906128d7565b610746565b6040516102529190612932565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d919061294d565b610764565b005b34801561029057600080fd5b506102ab60048036038101906102a6919061294d565b610776565b005b3480156102b957600080fd5b506102c26107ac565b6040516102cf91906129d9565b60405180910390f35b3480156102e457600080fd5b506102ed6107d0565b6040516102fa9190612a03565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190612a1e565b6107e1565b6040516103379190612932565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190612a71565b6108ba565b005b34801561037557600080fd5b50610390600480360381019061038b919061294d565b61091d565b005b34801561039e57600080fd5b506103a761092f565b005b3480156103b557600080fd5b506103be610963565b6040516103cb9190612aba565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190612a71565b61096c565b005b34801561040957600080fd5b506104126109cf565b60405161041f9190612ae4565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190612a71565b6109f5565b60405161045c9190612a03565b60405180910390f35b34801561047157600080fd5b5061047a610a3e565b005b34801561048857600080fd5b506104a3600480360381019061049e9190612a71565b610a52565b005b3480156104b157600080fd5b506104cc60048036038101906104c7919061294d565b610c01565b005b3480156104da57600080fd5b506104e3610c13565b6040516104f09190612ae4565b60405180910390f35b34801561050557600080fd5b5061050e610c3c565b60405161051b919061280d565b60405180910390f35b34801561053057600080fd5b50610539610c79565b005b34801561054757600080fd5b50610562600480360381019061055d91906128d7565b610cad565b60405161056f9190612932565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612c47565b610ccb565b005b3480156105ad57600080fd5b506105b6610d68565b005b3480156105c457600080fd5b506105cd610d89565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612c90565b61121c565b6040516106039190612a03565b60405180910390f35b34801561061857600080fd5b506106216112a3565b005b34801561062f57600080fd5b5061064a6004803603810190610645919061294d565b6112d7565b005b34801561065857600080fd5b50610673600480360381019061066e9190612a71565b6112e9565b005b34801561068157600080fd5b5061069c60048036038101906106979190612a71565b61134c565b005b3480156106aa57600080fd5b506106c560048036038101906106c0919061294d565b6113cf565b005b3480156106d357600080fd5b506106dc6113e1565b005b3480156106ea57600080fd5b506106f361148f565b6040516107009190612932565b60405180910390f35b60606040518060400160405280600e81526020017f5465682047726561742052616365000000000000000000000000000000000000815250905090565b600061075a6107536114a2565b84846114aa565b6001905092915050565b61076c611673565b8060068190555050565b61077e611673565b64e8d4a51000811161078f57600080fd5b6611c37937e0800081106107a257600080fd5b80600f8190555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000683635c9adc5dea00000905090565b60006107ee8484846116f1565b6108af846107fa6114a2565b6108aa8560405180606001604052806028815260200161362e60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108606114a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff49092919063ffffffff16565b6114aa565b600190509392505050565b6108c2611673565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610925611673565b80600e8190555050565b610937611673565b600b60179054906101000a900460ff1615600b60176101000a81548160ff021916908315150217905550565b60006009905090565b610974611673565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a46611673565b610a506000612049565b565b610a5a611673565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ac9576040517f0f2d6085000000000000000000000000000000000000000000000000000000008152600401610ac090612d1c565b60405180910390fd5b600060036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c09611673565b8060088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4631320000000000000000000000000000000000000000000000000000000000815250905090565b610c81611673565b600b60189054906101000a900460ff1615600b60186101000a81548160ff021916908315150217905550565b6000610cc1610cba6114a2565b84846116f1565b6001905092915050565b610cd3611673565b60005b8151811015610d6457600160046000848481518110610cf857610cf7612d3c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d5c90612d9a565b915050610cd6565b5050565b610d70611673565b6000610d7b306109f5565b9050610d868161210d565b50565b610d91611673565b600b60149054906101000a900460ff1615610dd8576040517fb570a37400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e0c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d683635c9adc5dea000006114aa565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b9190612df7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190612df7565b6040518363ffffffff1660e01b8152600401610f63929190612e24565b6020604051808303816000875af1158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190612df7565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719473061102d306109f5565b600080611038610c13565b610258426110469190612e4d565b6040518863ffffffff1660e01b815260040161106796959493929190612ebc565b60606040518083038185885af1158015611085573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110aa9190612f32565b5050506001600b60176101000a81548160ff0219169083151502179055506001600b60196101000a81548160ff021916908315150217905550678ac7230489e80000600c81905550678ac7230489e80000600d819055506801a055690d9db80000600e81905550652d79883d2000600f819055506001600b60146101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111d6929190612f85565b6020604051808303816000875af11580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190612fda565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112ab611673565b600b60199054906101000a900460ff1615600b60196101000a81548160ff021916908315150217905550565b6112df611673565b80600d8190555050565b6112f1611673565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611354611673565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613079565b60405180910390fd5b6113cc81612049565b50565b6113d7611673565b80600c8190555050565b6113e9611673565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161140f906130ca565b60006040518083038185875af1925050503d806000811461144c576040519150601f19603f3d011682016040523d82523d6000602084013e611451565b606091505b505090508061148c576040517f11cdafc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600b60149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611519576040517f0f2d60850000000000000000000000000000000000000000000000000000000081526004016115109061312b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611588576040517f0f2d608500000000000000000000000000000000000000000000000000000000815260040161157f90613197565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116669190612a03565b60405180910390a3505050565b61167b6114a2565b73ffffffffffffffffffffffffffffffffffffffff16611699610c13565b73ffffffffffffffffffffffffffffffffffffffff16146116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690613203565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611760576040517f0f2d60850000000000000000000000000000000000000000000000000000000081526004016117579061326f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f0f2d60850000000000000000000000000000000000000000000000000000000081526004016117c6906132db565b60405180910390fd5b60008111611809576040517f950e6d2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611814610c13565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156118825750611852610c13565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118bb5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118f5575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561190e5750600b60159054906101000a900460ff16155b15611df257600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119b75750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119c057600080fd5b60019150600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a6d57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611adb5750600b60199054906101000a900460ff165b15611c4557600c548310611b24576040517f21c5c35d000000000000000000000000000000000000000000000000000000008152600401611b1b90613347565b60405180910390fd5b600e5483611b31866109f5565b611b3b9190612e4d565b10611b7b576040517f21c5c35d000000000000000000000000000000000000000000000000000000008152600401611b72906133b3565b60405180910390fd5b42600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611bf4576040517fe786fd5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e42611c019190612e4d565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cee57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d445750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d5c5750600b60199054906101000a900460ff165b15611df157600b60189054906101000a900460ff1615611da8576040517f0da544c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d548310611dec576040517f21c5c35d000000000000000000000000000000000000000000000000000000008152600401611de39061341f565b60405180910390fd5b600190505b5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e935750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e9d57600091505b6000611ea8306109f5565b90506000600f5482118015611eba5750825b9050808015611ed55750600b60179054906101000a900460ff165b8015611eee5750600b60159054906101000a900460ff16155b8015611f445750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f9a5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fde576001600b60156101000a81548160ff021916908315150217905550611fc2612380565b6000600b60156101000a81548160ff0219169083151502179055505b611feb8787878787612472565b50505050505050565b600083831115829061203c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612033919061280d565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561214557612144612b04565b5b6040519080825280602002602001820160405280156121735781602001602082028036833780820191505090505b509050308160008151811061218b5761218a612d3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122549190612df7565b8160018151811061226857612267612d3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114aa565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161232f9594939291906134fd565b600060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b50505050506000600b60166101000a81548160ff02191690831515021790555050565b600061238b306109f5565b9050600080820361239d575050612470565b600a600f546123ac9190613557565b8211156123c557600a600f546123c29190613557565b91505b60004790506123d38361210d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681476124189190613599565b604051612424906130ca565b60006040518083038185875af1925050503d8060008114612461576040519150601f19603f3d011682016040523d82523d6000602084013e612466565b606091505b5050809250505050505b565b816124845761247f6124b2565b612492565b61248f85848361250b565b92505b61249d85858561257d565b816124ab576124aa612711565b5b5050505050565b60006006541480156124c657506000600854145b80156124d457506000600754145b80156124e257506000600954145b61250957600654600781905550600854600981905550600060068190555060006008819055505b565b600080821561251e576008549050612524565b60065490505b600061254c606461253e848861272590919063ffffffff16565b61273b90919063ffffffff16565b905060008111156125635761256286308361257d565b5b808561256f9190613599565b945084925050509392505050565b6125cf81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127049190612a03565b60405180910390a3505050565b600754600681905550600954600881905550565b600081836127339190613557565b905092915050565b6000818361274991906135fc565b905092915050565b6000818361275f9190613599565b905092915050565b600081836127759190612e4d565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127b757808201518184015260208101905061279c565b60008484015250505050565b6000601f19601f8301169050919050565b60006127df8261277d565b6127e98185612788565b93506127f9818560208601612799565b612802816127c3565b840191505092915050565b6000602082019050818103600083015261282781846127d4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286e82612843565b9050919050565b61287e81612863565b811461288957600080fd5b50565b60008135905061289b81612875565b92915050565b6000819050919050565b6128b4816128a1565b81146128bf57600080fd5b50565b6000813590506128d1816128ab565b92915050565b600080604083850312156128ee576128ed612839565b5b60006128fc8582860161288c565b925050602061290d858286016128c2565b9150509250929050565b60008115159050919050565b61292c81612917565b82525050565b60006020820190506129476000830184612923565b92915050565b60006020828403121561296357612962612839565b5b6000612971848285016128c2565b91505092915050565b6000819050919050565b600061299f61299a61299584612843565b61297a565b612843565b9050919050565b60006129b182612984565b9050919050565b60006129c3826129a6565b9050919050565b6129d3816129b8565b82525050565b60006020820190506129ee60008301846129ca565b92915050565b6129fd816128a1565b82525050565b6000602082019050612a1860008301846129f4565b92915050565b600080600060608486031215612a3757612a36612839565b5b6000612a458682870161288c565b9350506020612a568682870161288c565b9250506040612a67868287016128c2565b9150509250925092565b600060208284031215612a8757612a86612839565b5b6000612a958482850161288c565b91505092915050565b600060ff82169050919050565b612ab481612a9e565b82525050565b6000602082019050612acf6000830184612aab565b92915050565b612ade81612863565b82525050565b6000602082019050612af96000830184612ad5565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b3c826127c3565b810181811067ffffffffffffffff82111715612b5b57612b5a612b04565b5b80604052505050565b6000612b6e61282f565b9050612b7a8282612b33565b919050565b600067ffffffffffffffff821115612b9a57612b99612b04565b5b602082029050602081019050919050565b600080fd5b6000612bc3612bbe84612b7f565b612b64565b90508083825260208201905060208402830185811115612be657612be5612bab565b5b835b81811015612c0f5780612bfb888261288c565b845260208401935050602081019050612be8565b5050509392505050565b600082601f830112612c2e57612c2d612aff565b5b8135612c3e848260208601612bb0565b91505092915050565b600060208284031215612c5d57612c5c612839565b5b600082013567ffffffffffffffff811115612c7b57612c7a61283e565b5b612c8784828501612c19565b91505092915050565b60008060408385031215612ca757612ca6612839565b5b6000612cb58582860161288c565b9250506020612cc68582860161288c565b9150509250929050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b6000612d06600683612788565b9150612d1182612cd0565b602082019050919050565b60006020820190508181036000830152612d3581612cf9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612da5826128a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dd757612dd6612d6b565b5b600182019050919050565b600081519050612df181612875565b92915050565b600060208284031215612e0d57612e0c612839565b5b6000612e1b84828501612de2565b91505092915050565b6000604082019050612e396000830185612ad5565b612e466020830184612ad5565b9392505050565b6000612e58826128a1565b9150612e63836128a1565b9250828201905080821115612e7b57612e7a612d6b565b5b92915050565b6000819050919050565b6000612ea6612ea1612e9c84612e81565b61297a565b6128a1565b9050919050565b612eb681612e8b565b82525050565b600060c082019050612ed16000830189612ad5565b612ede60208301886129f4565b612eeb6040830187612ead565b612ef86060830186612ead565b612f056080830185612ad5565b612f1260a08301846129f4565b979650505050505050565b600081519050612f2c816128ab565b92915050565b600080600060608486031215612f4b57612f4a612839565b5b6000612f5986828701612f1d565b9350506020612f6a86828701612f1d565b9250506040612f7b86828701612f1d565b9150509250925092565b6000604082019050612f9a6000830185612ad5565b612fa760208301846129f4565b9392505050565b612fb781612917565b8114612fc257600080fd5b50565b600081519050612fd481612fae565b92915050565b600060208284031215612ff057612fef612839565b5b6000612ffe84828501612fc5565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613063602683612788565b915061306e82613007565b604082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b600081905092915050565b50565b60006130b4600083613099565b91506130bf826130a4565b600082019050919050565b60006130d5826130a7565b9150819050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b6000613115600583612788565b9150613120826130df565b602082019050919050565b6000602082019050818103600083015261314481613108565b9050919050565b7f7370656e64657200000000000000000000000000000000000000000000000000600082015250565b6000613181600783612788565b915061318c8261314b565b602082019050919050565b600060208201905081810360008301526131b081613174565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ed602083612788565b91506131f8826131b7565b602082019050919050565b6000602082019050818103600083015261321c816131e0565b9050919050565b7f7472616e736665725f66726f6d00000000000000000000000000000000000000600082015250565b6000613259600d83612788565b915061326482613223565b602082019050919050565b600060208201905081810360008301526132888161324c565b9050919050565b7f7472616e736665725f746f000000000000000000000000000000000000000000600082015250565b60006132c5600b83612788565b91506132d08261328f565b602082019050919050565b600060208201905081810360008301526132f4816132b8565b9050919050565b7f4275790000000000000000000000000000000000000000000000000000000000600082015250565b6000613331600383612788565b915061333c826132fb565b602082019050919050565b6000602082019050818103600083015261336081613324565b9050919050565b7f57616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061339d600683612788565b91506133a882613367565b602082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f53656c6c00000000000000000000000000000000000000000000000000000000600082015250565b6000613409600483612788565b9150613414826133d3565b602082019050919050565b60006020820190508181036000830152613438816133fc565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61347481612863565b82525050565b6000613486838361346b565b60208301905092915050565b6000602082019050919050565b60006134aa8261343f565b6134b4818561344a565b93506134bf8361345b565b8060005b838110156134f05781516134d7888261347a565b97506134e283613492565b9250506001810190506134c3565b5085935050505092915050565b600060a08201905061351260008301886129f4565b61351f6020830187612ead565b8181036040830152613531818661349f565b90506135406060830185612ad5565b61354d60808301846129f4565b9695505050505050565b6000613562826128a1565b915061356d836128a1565b925082820261357b816128a1565b9150828204841483151761359257613591612d6b565b5b5092915050565b60006135a4826128a1565b91506135af836128a1565b92508282039050818111156135c7576135c6612d6b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613607826128a1565b9150613612836128a1565b925082613622576136216135cd565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fea585a27ef0d4261f05a6871b1373d09f10aaf90a83adc23db73ffcd16fdff164736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d08fc56b8ebf2e572e2857f07367675456bbfd46

-----Decoded View---------------
Arg [0] : _uniswapV2Router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : projectWallet (address): 0xD08FC56b8eBf2E572e2857F07367675456bBfd46

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000d08fc56b8ebf2e572e2857f07367675456bbfd46


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.