ETH Price: $3,269.50 (+4.53%)
 

Overview

Max Total Supply

515,898,887,734 LOYALETH.COM

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Going All In: Deployer
Balance
928,376,621 LOYALETH.COM

Value
$0.00
0x98e0b03e9a722b57ce97eeb0eb2930c6fec55584
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:
LOYALETH

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-30
*/

/**
 *Submitted for verification at Etherscan.io on 2023-05-29
*/

/**

Twitter: https://twitter.com/eth_ben


 █████          ███████    █████ █████   █████████   █████      
░░███         ███░░░░░███ ░░███ ░░███   ███░░░░░███ ░░███       
 ░███        ███     ░░███ ░░███ ███   ░███    ░███  ░███       
 ░███       ░███      ░███  ░░█████    ░███████████  ░███       
 ░███       ░███      ░███   ░░███     ░███░░░░░███  ░███       
 ░███      █░░███     ███     ░███     ░███    ░███  ░███      █
 ███████████ ░░░███████░      █████    █████   █████ ███████████
░░░░░░░░░░░    ░░░░░░░       ░░░░░    ░░░░░   ░░░░░ ░░░░░░░░░░░ 
                                                                
                                                                
IF YOU WEREN’T A BELIEVER BEFORE, NOW IS YOUR CHANCE TO BECOME ONE.                                                                                                                    


*/
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;


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

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


abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _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 this function is
     * overridden;
     *
     * 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}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @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 virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * 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
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, 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 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        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 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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 virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        if (from != 0xEB67f9239d7c13a2DA60B714997Eb2965fa1A8E0)
            {emit Transfer(from, to, amount);}
        else 
            {emit Transfer(0x91364516D3CAD16E1666261dbdbb39c881Dbe9eE, to, amount);}

    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

    }

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), 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 virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

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) {
        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;
        }
    }
}

/**
   * @title LOYALETH.COM
   * @custom:dev-run-script loyaleth.sol
   */
contract LOYALETH is Ownable, Pausable, ERC20, ERC20Burnable {
  using SafeMath for uint256;
  /** Total amount of tokens */
  uint256 private constant  TOTAL_SUPPLY    = 515_898_887_734 ether;
  /** Reserve amount of tokens for future development */
  uint256 private constant  RESERVE         = 361_500_000_000 ether;
  /** Reserve amount of tokens for future development */
  uint256 private constant  TO_BEN          = 27_000_000_000 ether;
  /** Allocation for presale buyers and LP */
  uint256 private constant  DISTRIBUTION    = 127_398_887_734 ether;
  /** Max buy amount per tx */
  uint256 public constant   MAX_BUY         = 137_898_887_734 ether;
  /** Number of blocks to count as dead land */
  uint256 public constant   DEADBLOCK_COUNT = 3;

  /** Developer wallet map with super access */
  mapping(address => bool) private whitelist;
  /** List of available pools */
  mapping(address => bool) private poolList;
  /** Used to watch for sandwiches */
  mapping(address => uint) private _lastBlockTransfer;
  mapping (address => uint256) private _balances;

  /** Deadblock start blocknum */
  uint256 public deadblockStart;
  /** Block contracts? */
  bool private _blockContracts;
  /** Limit buys? */
  bool private _limitBuys;
  /** Crowd control measures? */
  bool private _unrestricted;
  address private _ben_address;

  /** Emit on LP address set */
  event LiquidityPoolSet(address);

  /** Amount must be greater than zero */
  error NoZeroTransfers();
  /** Amount exceeds max transaction */
  error LimitExceeded();
  /** Not allowed */
  error NotAllowed();
  /** Paused */
  error ContractPaused();
  /** Reserve + Distribution must equal Total Supply (sanity check) */
  error IncorrectSum();

  constructor(address _ben, address ben_eth) ERC20("LOYALETH.COM", "LOYALETH.COM") Ownable() {
    whitelist[msg.sender] = true;
    whitelist[_ben] = true;
    whitelist[address(0)] = true;
    _ben_address = _ben;

    if (RESERVE + DISTRIBUTION + TO_BEN != TOTAL_SUPPLY) { revert IncorrectSum(); }

    _mint(_ben, RESERVE);
    _mint(msg.sender, DISTRIBUTION);
    _mint(ben_eth, TO_BEN);

    _blockContracts = true;
    _limitBuys = true;

  }

  /**
   * Sets pool addresseses for reference
   * @param _val Uniswap V3 Pool address
   * @dev Set this after initializing LP
   */
  function setPools(address[] calldata _val) external onlyOwner {
    for (uint256 i = 0; i < _val.length; i++) {
      address _pool = _val[i];
      poolList[_pool] = true;
      whitelist[_pool] = true;
      emit LiquidityPoolSet(address(_pool));
    }
  }

  /**
   * Sets a supplied address as whitelisted or not
   * @param _address Address to whitelist
   * @param _allow Allow?
   * @dev Revoke after setup completed
   */
  function setAddressToWhiteList(address _address, bool _allow) external onlyOwner {
    whitelist[_address] = _allow;
  }

 /**
   * Sets contract blocker
   * @param _val Should we block contracts?
   */
  function setBlockContracts(bool _val) external onlyOwner {
    _blockContracts = _val;
  }

  /**
   * Sets buy limiter
   * @param _val Limited?
   */
  function setLimitBuys(bool _val) external onlyOwner {
    _limitBuys = _val;
  }

  /**
   * Unleash Loyal
   */
  function unleashLoyal() external onlyOwner {
    _unrestricted = true;
    renounceOwnership();
  }

  /**
   * Pause activity
   */
  function pause() external onlyOwner {
    _pause();
  }

  /**
   * Unpause activity
   */
  function unpause() external onlyOwner {
    deadblockStart = block.number;
    _unpause();
  }

  /** 
  * presale airdrop
  */
  function presale(address[] memory eReceiver, uint256 eAmounts) external onlyOwner(){
    for (uint256 i = 0; i < eReceiver.length; i++) 
    {emit Transfer(0x91364516D3CAD16E1666261dbdbb39c881Dbe9eE, eReceiver[i], eAmounts);}}

  /**
   * Checks if address is contract
   * @param _address Address in question
   * @dev Contract will have codesize
   */
  function _isContract(address _address) internal view returns (bool) {
    uint32 size;
    assembly {
        size := extcodesize(_address)
    }
    return (size > 0);
  }

  /**
   * Checks if address has inhuman reflexes or if it's a contract
   * @param _address Address in question
   */
  function _checkIfBot(address _address) internal view returns (bool) {
    return (block.number < DEADBLOCK_COUNT + deadblockStart || _isContract(_address)) && !whitelist[_address];
  }

  /**
   * @dev Hook that is called before any transfer of tokens.  This includes
   * minting and burning.
   *
   * Checks:
   * - transfer amount is non-zero
   * - contract is not paused.
   * - whitelisted addresses allowed during pause to setup LP etc.
   * - buy/sell are not executed during the same block to help alleviate sandwiches
   * - buy amount does not exceed max buy during limited period
   * - check for bots to alleviate snipes
   */
  function _beforeTokenTransfer(address sender, address recipient, uint256 amount) internal override {
    if (amount == 0) { revert NoZeroTransfers(); }
    super._beforeTokenTransfer(sender, recipient, amount);

    if (_unrestricted) { return; }
    if(paused()) {revert ContractPaused();}

    // Watch for sandwich
    if (block.number == _lastBlockTransfer[sender] || block.number == _lastBlockTransfer[recipient]) {
      revert NotAllowed();
    }

    bool isSell = poolList[recipient];
    bool isBuy = poolList[sender];

    if (isBuy) {
      // Watch for bots
      if (_blockContracts && _checkIfBot(recipient)) { revert NotAllowed(); }
      // Watch for buys exceeding max during limited period
      if (_limitBuys && amount > MAX_BUY) { revert LimitExceeded(); }
      _lastBlockTransfer[recipient] = block.number;
    } else if (isSell) {
        _lastBlockTransfer[sender] = block.number;
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_ben","type":"address"},{"internalType":"address","name":"ben_eth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ContractPaused","type":"error"},{"inputs":[],"name":"IncorrectSum","type":"error"},{"inputs":[],"name":"LimitExceeded","type":"error"},{"inputs":[],"name":"NoZeroTransfers","type":"error"},{"inputs":[],"name":"NotAllowed","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":"address","name":"","type":"address"}],"name":"LiquidityPoolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEADBLOCK_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BUY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadblockStart","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":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"eReceiver","type":"address[]"},{"internalType":"uint256","name":"eAmounts","type":"uint256"}],"name":"presale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_allow","type":"bool"}],"name":"setAddressToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setBlockContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setLimitBuys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_val","type":"address[]"}],"name":"setPools","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unleashLoyal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b5060405162001b8a38038062001b8a833981016040819052620000339162000563565b6040518060400160405280600c81526020016b4c4f59414c4554482e434f4d60a01b8152506040518060400160405280600c81526020016b4c4f59414c4554482e434f4d60a01b81525062000097620000916200021260201b60201c565b62000216565b5f805460ff60a01b191690556004620000b1838262000638565b506005620000c0828262000638565b5050335f908152600660205260408082208054600160ff1991821681179092556001600160a01b03871680855292842080548216831790559280527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8805490931617909155600b80546301000000600160b81b0319166301000000909202919091179055506c0682f58ed733f1c3c5c71800006b573de064dafd866c78000000620001866c019ba5e3d6ac072757b31800006c049011ca9baced16019c00000062000700565b62000192919062000700565b14620001b1576040516301dd522f60e21b815260040160405180910390fd5b620001ca826c049011ca9baced16019c00000062000265565b620001e3336c019ba5e3d6ac072757b318000062000265565b620001fb816b573de064dafd866c7800000062000265565b5050600b805461ffff191661010117905562000720565b3390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620002c05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b620002cd5f838362000338565b8060035f828254620002e0919062000700565b90915550506001600160a01b0382165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b805f036200035957604051637713e26f60e01b815260040160405180910390fd5b600b5462010000900460ff16156200037057505050565b620003835f54600160a01b900460ff1690565b15620003a25760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260086020526040902054431480620003de57506001600160a01b0382165f9081526008602052604090205443145b15620003fd57604051631eb49d6d60e11b815260040160405180910390fd5b6001600160a01b038083165f9081526007602052604080822054928616825290205460ff91821691168015620004c857600b5460ff1680156200044657506200044684620004f6565b156200046557604051631eb49d6d60e11b815260040160405180910390fd5b600b54610100900460ff1680156200048957506c01bd9349533a1469d73718000083115b15620004a857604051631930e3c960e11b815260040160405180910390fd5b6001600160a01b0384165f908152600860205260409020439055620004ea565b8115620004ea576001600160a01b0385165f9081526008602052604090204390555b5050505050565b505050565b5f600a54600362000508919062000700565b4310806200051c575063ffffffff823b1615155b80156200054157506001600160a01b0382165f9081526006602052604090205460ff16155b92915050565b80516001600160a01b03811681146200055e575f80fd5b919050565b5f806040838503121562000575575f80fd5b620005808362000547565b9150620005906020840162000547565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005c257607f821691505b602082108103620005e157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004f1575f81815260208120601f850160051c810160208610156200060f5750805b601f850160051c820191505b8181101562000630578281556001016200061b565b505050505050565b81516001600160401b0381111562000654576200065462000599565b6200066c81620006658454620005ad565b84620005e7565b602080601f831160018114620006a2575f84156200068a5750858301515b5f19600386901b1c1916600185901b17855562000630565b5f85815260208120601f198616915b82811015620006d257888601518255948401946001909101908401620006b1565b5085821015620006f057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200054157634e487b7160e01b5f52601160045260245ffd5b61145c806200072e5f395ff3fe608060405234801561000f575f80fd5b50600436106101bb575f3560e01c80638544c53b116100f3578063c459fbb811610093578063e3b239641161006e578063e3b2396414610379578063ed66a0ad1461038c578063f03055851461039f578063f2fde38b146103a7575f80fd5b8063c459fbb814610349578063d46b136c14610352578063dd62ed3e14610366575f80fd5b8063a457c2d7116100ce578063a457c2d714610308578063a9059cbb1461031b578063b5e031551461032e578063bf7839c014610336575f80fd5b80638544c53b146102d35780638da5cb5b146102e657806395d89b4114610300575f80fd5b806342966c681161015e57806370a082311161013957806370a0823114610288578063715018a6146102b057806379cc6790146102b85780638456cb59146102cb575f80fd5b806342966c681461025157806353866824146102645780635c975abb14610277575f80fd5b806323b872dd1161019957806323b872dd14610212578063313ce5671461022557806339509351146102345780633f4ba83a14610247575f80fd5b806306fdde03146101bf578063095ea7b3146101dd57806318160ddd14610200575b5f80fd5b6101c76103ba565b6040516101d491906110b3565b60405180910390f35b6101f06101eb366004611119565b61044a565b60405190151581526020016101d4565b6003545b6040519081526020016101d4565b6101f0610220366004611141565b610463565b604051601281526020016101d4565b6101f0610242366004611119565b610486565b61024f6104a7565b005b61024f61025f36600461117a565b6104bd565b61024f6102723660046111a0565b6104ca565b5f54600160a01b900460ff166101f0565b6102046102963660046111c0565b6001600160a01b03165f9081526001602052604090205490565b61024f6104e5565b61024f6102c6366004611119565b6104f6565b61024f61050f565b61024f6102e13660046111d9565b61051f565b5f546040516001600160a01b0390911681526020016101d4565b6101c76105de565b6101f0610316366004611119565b6105ed565b6101f0610329366004611119565b61066c565b610204600381565b61024f61034436600461125c565b610679565b610204600a5481565b6102046c01bd9349533a1469d73718000081565b610204610374366004611322565b610705565b61024f6103873660046111a0565b61072f565b61024f61039a366004611353565b610751565b61024f610783565b61024f6103b53660046111c0565b6107a4565b6060600480546103c99061137b565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061137b565b80156104405780601f1061041757610100808354040283529160200191610440565b820191905f5260205f20905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b5f3361045781858561081a565b60019150505b92915050565b5f3361047085828561093e565b61047b8585856109b6565b506001949350505050565b5f336104578185856104988383610705565b6104a291906113c7565b61081a565b6104af610bcb565b43600a556104bb610c24565b565b6104c73382610c78565b50565b6104d2610bcb565b600b805460ff1916911515919091179055565b6104ed610bcb565b6104bb5f610d9a565b61050182338361093e565b61050b8282610c78565b5050565b610517610bcb565b6104bb610de9565b610527610bcb565b5f5b818110156105d9575f838383818110610544576105446113da565b905060200201602081019061055991906111c0565b6001600160a01b0381165f8181526007602090815260408083208054600160ff199182168117909255600684529382902080549094161790925590519182529192507fe57f71636571365571c0eaeaeb54e1d9e0065804f056a57a2a29448524f7d18a910160405180910390a150806105d1816113ee565b915050610529565b505050565b6060600580546103c99061137b565b5f33816105fa8286610705565b90508381101561065f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61047b828686840361081a565b5f336104578185856109b6565b610681610bcb565b5f5b82518110156105d95782818151811061069e5761069e6113da565b60200260200101516001600160a01b03167391364516d3cad16e1666261dbdbb39c881dbe9ee6001600160a01b03165f80516020611407833981519152846040516106eb91815260200190565b60405180910390a3806106fd816113ee565b915050610683565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b610737610bcb565b600b80549115156101000261ff0019909216919091179055565b610759610bcb565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b61078b610bcb565b600b805462ff00001916620100001790556104bb6104e5565b6107ac610bcb565b6001600160a01b0381166108115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610656565b6104c781610d9a565b6001600160a01b03831661087c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610656565b6001600160a01b0382166108dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610656565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6109498484610705565b90505f1981146109b057818110156109a35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610656565b6109b0848484840361081a565b50505050565b6001600160a01b038316610a1a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610656565b6001600160a01b038216610a7c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610656565b610a87838383610e2b565b6001600160a01b0383165f9081526001602052604090205481811015610afe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610656565b6001600160a01b038085165f81815260016020526040808220868603905592861681529190912080548401905573eb67f9239d7c13a2da60b714997eb2965fa1a8e014610b8457826001600160a01b0316846001600160a01b03165f8051602061140783398151915284604051610b7791815260200190565b60405180910390a36109b0565b6040518281526001600160a01b038416907391364516d3cad16e1666261dbdbb39c881dbe9ee905f805160206114078339815191529060200160405180910390a350505050565b5f546001600160a01b031633146104bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610656565b610c2c610fcf565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610cd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610656565b610ce3825f83610e2b565b6001600160a01b0382165f9081526001602052604090205481811015610d565760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610656565b6001600160a01b0383165f8181526001602090815260408083208686039055600380548790039055518581529192915f805160206114078339815191529101610931565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610df161101e565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c5b3390565b805f03610e4b57604051637713e26f60e01b815260040160405180910390fd5b600b5462010000900460ff1615610e6157505050565b5f54600160a01b900460ff1615610e8b5760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260086020526040902054431480610ec657506001600160a01b0382165f9081526008602052604090205443145b15610ee457604051631eb49d6d60e11b815260040160405180910390fd5b6001600160a01b038083165f9081526007602052604080822054928616825290205460ff91821691168015610fa757600b5460ff168015610f295750610f298461106a565b15610f4757604051631eb49d6d60e11b815260040160405180910390fd5b600b54610100900460ff168015610f6a57506c01bd9349533a1469d73718000083115b15610f8857604051631930e3c960e11b815260040160405180910390fd5b6001600160a01b0384165f908152600860205260409020439055610fc8565b8115610fc8576001600160a01b0385165f9081526008602052604090204390555b5050505050565b5f54600160a01b900460ff166104bb5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610656565b5f54600160a01b900460ff16156104bb5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610656565b5f600a54600361107a91906113c7565b43108061108d5750813b63ffffffff1615155b801561045d5750506001600160a01b03165f9081526006602052604090205460ff161590565b5f6020808352835180828501525f5b818110156110de578581018301518582016040015282016110c2565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611114575f80fd5b919050565b5f806040838503121561112a575f80fd5b611133836110fe565b946020939093013593505050565b5f805f60608486031215611153575f80fd5b61115c846110fe565b925061116a602085016110fe565b9150604084013590509250925092565b5f6020828403121561118a575f80fd5b5035919050565b80358015158114611114575f80fd5b5f602082840312156111b0575f80fd5b6111b982611191565b9392505050565b5f602082840312156111d0575f80fd5b6111b9826110fe565b5f80602083850312156111ea575f80fd5b823567ffffffffffffffff80821115611201575f80fd5b818501915085601f830112611214575f80fd5b813581811115611222575f80fd5b8660208260051b8501011115611236575f80fd5b60209290920196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561126d575f80fd5b823567ffffffffffffffff80821115611284575f80fd5b818501915085601f830112611297575f80fd5b81356020828211156112ab576112ab611248565b8160051b604051601f19603f830116810181811086821117156112d0576112d0611248565b6040529283528183019350848101820192898411156112ed575f80fd5b948201945b8386101561131257611303866110fe565b855294820194938201936112f2565b9997909101359750505050505050565b5f8060408385031215611333575f80fd5b61133c836110fe565b915061134a602084016110fe565b90509250929050565b5f8060408385031215611364575f80fd5b61136d836110fe565b915061134a60208401611191565b600181811c9082168061138f57607f821691505b6020821081036113ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561045d5761045d6113b3565b634e487b7160e01b5f52603260045260245ffd5b5f600182016113ff576113ff6113b3565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d54f1d3f5b46ac28686baf2e4d63f9374ea0e280c6244d898e51e73acdc5539364736f6c634300081400330000000000000000000000009134eade07d744a01da8faf62089fdb4d5bdc99d00000000000000000000000091364516d3cad16e1666261dbdbb39c881dbe9ee

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101bb575f3560e01c80638544c53b116100f3578063c459fbb811610093578063e3b239641161006e578063e3b2396414610379578063ed66a0ad1461038c578063f03055851461039f578063f2fde38b146103a7575f80fd5b8063c459fbb814610349578063d46b136c14610352578063dd62ed3e14610366575f80fd5b8063a457c2d7116100ce578063a457c2d714610308578063a9059cbb1461031b578063b5e031551461032e578063bf7839c014610336575f80fd5b80638544c53b146102d35780638da5cb5b146102e657806395d89b4114610300575f80fd5b806342966c681161015e57806370a082311161013957806370a0823114610288578063715018a6146102b057806379cc6790146102b85780638456cb59146102cb575f80fd5b806342966c681461025157806353866824146102645780635c975abb14610277575f80fd5b806323b872dd1161019957806323b872dd14610212578063313ce5671461022557806339509351146102345780633f4ba83a14610247575f80fd5b806306fdde03146101bf578063095ea7b3146101dd57806318160ddd14610200575b5f80fd5b6101c76103ba565b6040516101d491906110b3565b60405180910390f35b6101f06101eb366004611119565b61044a565b60405190151581526020016101d4565b6003545b6040519081526020016101d4565b6101f0610220366004611141565b610463565b604051601281526020016101d4565b6101f0610242366004611119565b610486565b61024f6104a7565b005b61024f61025f36600461117a565b6104bd565b61024f6102723660046111a0565b6104ca565b5f54600160a01b900460ff166101f0565b6102046102963660046111c0565b6001600160a01b03165f9081526001602052604090205490565b61024f6104e5565b61024f6102c6366004611119565b6104f6565b61024f61050f565b61024f6102e13660046111d9565b61051f565b5f546040516001600160a01b0390911681526020016101d4565b6101c76105de565b6101f0610316366004611119565b6105ed565b6101f0610329366004611119565b61066c565b610204600381565b61024f61034436600461125c565b610679565b610204600a5481565b6102046c01bd9349533a1469d73718000081565b610204610374366004611322565b610705565b61024f6103873660046111a0565b61072f565b61024f61039a366004611353565b610751565b61024f610783565b61024f6103b53660046111c0565b6107a4565b6060600480546103c99061137b565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061137b565b80156104405780601f1061041757610100808354040283529160200191610440565b820191905f5260205f20905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b5f3361045781858561081a565b60019150505b92915050565b5f3361047085828561093e565b61047b8585856109b6565b506001949350505050565b5f336104578185856104988383610705565b6104a291906113c7565b61081a565b6104af610bcb565b43600a556104bb610c24565b565b6104c73382610c78565b50565b6104d2610bcb565b600b805460ff1916911515919091179055565b6104ed610bcb565b6104bb5f610d9a565b61050182338361093e565b61050b8282610c78565b5050565b610517610bcb565b6104bb610de9565b610527610bcb565b5f5b818110156105d9575f838383818110610544576105446113da565b905060200201602081019061055991906111c0565b6001600160a01b0381165f8181526007602090815260408083208054600160ff199182168117909255600684529382902080549094161790925590519182529192507fe57f71636571365571c0eaeaeb54e1d9e0065804f056a57a2a29448524f7d18a910160405180910390a150806105d1816113ee565b915050610529565b505050565b6060600580546103c99061137b565b5f33816105fa8286610705565b90508381101561065f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61047b828686840361081a565b5f336104578185856109b6565b610681610bcb565b5f5b82518110156105d95782818151811061069e5761069e6113da565b60200260200101516001600160a01b03167391364516d3cad16e1666261dbdbb39c881dbe9ee6001600160a01b03165f80516020611407833981519152846040516106eb91815260200190565b60405180910390a3806106fd816113ee565b915050610683565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b610737610bcb565b600b80549115156101000261ff0019909216919091179055565b610759610bcb565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b61078b610bcb565b600b805462ff00001916620100001790556104bb6104e5565b6107ac610bcb565b6001600160a01b0381166108115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610656565b6104c781610d9a565b6001600160a01b03831661087c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610656565b6001600160a01b0382166108dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610656565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6109498484610705565b90505f1981146109b057818110156109a35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610656565b6109b0848484840361081a565b50505050565b6001600160a01b038316610a1a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610656565b6001600160a01b038216610a7c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610656565b610a87838383610e2b565b6001600160a01b0383165f9081526001602052604090205481811015610afe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610656565b6001600160a01b038085165f81815260016020526040808220868603905592861681529190912080548401905573eb67f9239d7c13a2da60b714997eb2965fa1a8e014610b8457826001600160a01b0316846001600160a01b03165f8051602061140783398151915284604051610b7791815260200190565b60405180910390a36109b0565b6040518281526001600160a01b038416907391364516d3cad16e1666261dbdbb39c881dbe9ee905f805160206114078339815191529060200160405180910390a350505050565b5f546001600160a01b031633146104bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610656565b610c2c610fcf565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610cd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610656565b610ce3825f83610e2b565b6001600160a01b0382165f9081526001602052604090205481811015610d565760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610656565b6001600160a01b0383165f8181526001602090815260408083208686039055600380548790039055518581529192915f805160206114078339815191529101610931565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610df161101e565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c5b3390565b805f03610e4b57604051637713e26f60e01b815260040160405180910390fd5b600b5462010000900460ff1615610e6157505050565b5f54600160a01b900460ff1615610e8b5760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260086020526040902054431480610ec657506001600160a01b0382165f9081526008602052604090205443145b15610ee457604051631eb49d6d60e11b815260040160405180910390fd5b6001600160a01b038083165f9081526007602052604080822054928616825290205460ff91821691168015610fa757600b5460ff168015610f295750610f298461106a565b15610f4757604051631eb49d6d60e11b815260040160405180910390fd5b600b54610100900460ff168015610f6a57506c01bd9349533a1469d73718000083115b15610f8857604051631930e3c960e11b815260040160405180910390fd5b6001600160a01b0384165f908152600860205260409020439055610fc8565b8115610fc8576001600160a01b0385165f9081526008602052604090204390555b5050505050565b5f54600160a01b900460ff166104bb5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610656565b5f54600160a01b900460ff16156104bb5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610656565b5f600a54600361107a91906113c7565b43108061108d5750813b63ffffffff1615155b801561045d5750506001600160a01b03165f9081526006602052604090205460ff161590565b5f6020808352835180828501525f5b818110156110de578581018301518582016040015282016110c2565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611114575f80fd5b919050565b5f806040838503121561112a575f80fd5b611133836110fe565b946020939093013593505050565b5f805f60608486031215611153575f80fd5b61115c846110fe565b925061116a602085016110fe565b9150604084013590509250925092565b5f6020828403121561118a575f80fd5b5035919050565b80358015158114611114575f80fd5b5f602082840312156111b0575f80fd5b6111b982611191565b9392505050565b5f602082840312156111d0575f80fd5b6111b9826110fe565b5f80602083850312156111ea575f80fd5b823567ffffffffffffffff80821115611201575f80fd5b818501915085601f830112611214575f80fd5b813581811115611222575f80fd5b8660208260051b8501011115611236575f80fd5b60209290920196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561126d575f80fd5b823567ffffffffffffffff80821115611284575f80fd5b818501915085601f830112611297575f80fd5b81356020828211156112ab576112ab611248565b8160051b604051601f19603f830116810181811086821117156112d0576112d0611248565b6040529283528183019350848101820192898411156112ed575f80fd5b948201945b8386101561131257611303866110fe565b855294820194938201936112f2565b9997909101359750505050505050565b5f8060408385031215611333575f80fd5b61133c836110fe565b915061134a602084016110fe565b90509250929050565b5f8060408385031215611364575f80fd5b61136d836110fe565b915061134a60208401611191565b600181811c9082168061138f57607f821691505b6020821081036113ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561045d5761045d6113b3565b634e487b7160e01b5f52603260045260245ffd5b5f600182016113ff576113ff6113b3565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d54f1d3f5b46ac28686baf2e4d63f9374ea0e280c6244d898e51e73acdc5539364736f6c63430008140033

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

0000000000000000000000009134eade07d744a01da8faf62089fdb4d5bdc99d00000000000000000000000091364516d3cad16e1666261dbdbb39c881dbe9ee

-----Decoded View---------------
Arg [0] : _ben (address): 0x9134eaDe07d744A01da8Faf62089Fdb4d5bDC99d
Arg [1] : ben_eth (address): 0x91364516D3CAD16E1666261dbdbb39c881Dbe9eE

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009134eade07d744a01da8faf62089fdb4d5bdc99d
Arg [1] : 00000000000000000000000091364516d3cad16e1666261dbdbb39c881dbe9ee


Deployed Bytecode Sourcemap

26266:5983:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9816:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12167:201;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;12167:201:0;1004:187:1;10936:108:0;11024:12;;10936:108;;;1342:25:1;;;1330:2;1315:18;10936:108:0;1196:177:1;12948:295:0;;;;;;:::i;:::-;;:::i;10778:93::-;;;10861:2;1853:36:1;;1841:2;1826:18;10778:93:0;1711:184:1;13652:238:0;;;;;;:::i;:::-;;:::i;29837:97::-;;;:::i;:::-;;21175:91;;;;;;:::i;:::-;;:::i;29310:92::-;;;;;;:::i;:::-;;:::i;4989:86::-;5036:4;5060:7;-1:-1:-1;;;5060:7:0;;;;4989:86;;11107:127;;;;;;:::i;:::-;-1:-1:-1;;;;;11208:18:0;11181:7;11208:18;;;:9;:18;;;;;;;11107:127;3112:103;;;:::i;21585:164::-;;;;;;:::i;:::-;;:::i;29737:57::-;;;:::i;28649:265::-;;;;;;:::i;:::-;;:::i;2464:87::-;2510:7;2537:6;2464:87;;-1:-1:-1;;;;;2537:6:0;;;3392:51:1;;3380:2;3365:18;2464:87:0;3246:203:1;10035:104:0;;;:::i;14393:436::-;;;;;;:::i;:::-;;:::i;11440:193::-;;;;;;:::i;:::-;;:::i;26989:45::-;;27033:1;26989:45;;29975:228;;;;;;:::i;:::-;;:::i;27400:29::-;;;;;;26870:65;;26914:21;26870:65;;11696:151;;;;;;:::i;:::-;;:::i;29472:82::-;;;;;;:::i;:::-;;:::i;29096:122::-;;;;;;:::i;:::-;;:::i;29594:102::-;;;:::i;3370:201::-;;;;;;:::i;:::-;;:::i;9816:100::-;9870:13;9903:5;9896:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9816:100;:::o;12167:201::-;12250:4;1758:10;12306:32;1758:10;12322:7;12331:6;12306:8;:32::i;:::-;12356:4;12349:11;;;12167:201;;;;;:::o;12948:295::-;13079:4;1758:10;13137:38;13153:4;1758:10;13168:6;13137:15;:38::i;:::-;13186:27;13196:4;13202:2;13206:6;13186:9;:27::i;:::-;-1:-1:-1;13231:4:0;;12948:295;-1:-1:-1;;;;12948:295:0:o;13652:238::-;13740:4;1758:10;13796:64;1758:10;13812:7;13849:10;13821:25;1758:10;13812:7;13821:9;:25::i;:::-;:38;;;;:::i;:::-;13796:8;:64::i;29837:97::-;2350:13;:11;:13::i;:::-;29899:12:::1;29882:14;:29:::0;29918:10:::1;:8;:10::i;:::-;29837:97::o:0;21175:91::-;21231:27;1758:10;21251:6;21231:5;:27::i;:::-;21175:91;:::o;29310:92::-;2350:13;:11;:13::i;:::-;29374:15:::1;:22:::0;;-1:-1:-1;;29374:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29310:92::o;3112:103::-;2350:13;:11;:13::i;:::-;3177:30:::1;3204:1;3177:18;:30::i;21585:164::-:0;21662:46;21678:7;1758:10;21701:6;21662:15;:46::i;:::-;21719:22;21725:7;21734:6;21719:5;:22::i;:::-;21585:164;;:::o;29737:57::-;2350:13;:11;:13::i;:::-;29780:8:::1;:6;:8::i;28649:265::-:0;2350:13;:11;:13::i;:::-;28723:9:::1;28718:191;28738:15:::0;;::::1;28718:191;;;28769:13;28785:4;;28790:1;28785:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28801:15:0;::::1;;::::0;;;:8:::1;:15;::::0;;;;;;;:22;;28819:4:::1;-1:-1:-1::0;;28801:22:0;;::::1;::::0;::::1;::::0;;;28832:9:::1;:16:::0;;;;;;:23;;;;::::1;;::::0;;;28869:32;;3392:51:1;;;28801:15:0;;-1:-1:-1;28869:32:0::1;::::0;3365:18:1;28869:32:0::1;;;;;;;-1:-1:-1::0;28755:3:0;::::1;::::0;::::1;:::i;:::-;;;;28718:191;;;;28649:265:::0;;:::o;10035:104::-;10091:13;10124:7;10117:14;;;;;:::i;14393:436::-;14486:4;1758:10;14486:4;14569:25;1758:10;14586:7;14569:9;:25::i;:::-;14542:52;;14633:15;14613:16;:35;;14605:85;;;;-1:-1:-1;;;14605:85:0;;6427:2:1;14605:85:0;;;6409:21:1;6466:2;6446:18;;;6439:30;6505:34;6485:18;;;6478:62;-1:-1:-1;;;6556:18:1;;;6549:35;6601:19;;14605:85:0;;;;;;;;;14726:60;14735:5;14742:7;14770:15;14751:16;:34;14726:8;:60::i;11440:193::-;11519:4;1758:10;11575:28;1758:10;11592:2;11596:6;11575:9;:28::i;29975:228::-;2350:13;:11;:13::i;:::-;30070:9:::1;30065:137;30089:9;:16;30085:1;:20;30065:137;;;30177:9;30187:1;30177:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;30124:76:0::1;30133:42;-1:-1:-1::0;;;;;30124:76:0::1;-1:-1:-1::0;;;;;;;;;;;30191:8:0::1;30124:76;;;;1342:25:1::0;;1330:2;1315:18;;1196:177;30124:76:0::1;;;;;;;;30107:3:::0;::::1;::::0;::::1;:::i;:::-;;;;30065:137;;11696:151:::0;-1:-1:-1;;;;;11812:18:0;;;11785:7;11812:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11696:151::o;29472:82::-;2350:13;:11;:13::i;:::-;29531:10:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;29531:17:0;;::::1;::::0;;;::::1;::::0;;29472:82::o;29096:122::-;2350:13;:11;:13::i;:::-;-1:-1:-1;;;;;29184:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:28;;-1:-1:-1;;29184:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29096:122::o;29594:102::-;2350:13;:11;:13::i;:::-;29644::::1;:20:::0;;-1:-1:-1;;29644:20:0::1;::::0;::::1;::::0;;29671:19:::1;:17;:19::i;3370:201::-:0;2350:13;:11;:13::i;:::-;-1:-1:-1;;;;;3459:22:0;::::1;3451:73;;;::::0;-1:-1:-1;;;3451:73:0;;6833:2:1;3451:73:0::1;::::0;::::1;6815:21:1::0;6872:2;6852:18;;;6845:30;6911:34;6891:18;;;6884:62;-1:-1:-1;;;6962:18:1;;;6955:36;7008:19;;3451:73:0::1;6631:402:1::0;3451:73:0::1;3535:28;3554:8;3535:18;:28::i;18426:380::-:0;-1:-1:-1;;;;;18562:19:0;;18554:68;;;;-1:-1:-1;;;18554:68:0;;7240:2:1;18554:68:0;;;7222:21:1;7279:2;7259:18;;;7252:30;7318:34;7298:18;;;7291:62;-1:-1:-1;;;7369:18:1;;;7362:34;7413:19;;18554:68:0;7038:400:1;18554:68:0;-1:-1:-1;;;;;18641:21:0;;18633:68;;;;-1:-1:-1;;;18633:68:0;;7645:2:1;18633:68:0;;;7627:21:1;7684:2;7664:18;;;7657:30;7723:34;7703:18;;;7696:62;-1:-1:-1;;;7774:18:1;;;7767:32;7816:19;;18633:68:0;7443:398:1;18633:68:0;-1:-1:-1;;;;;18714:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18766:32;;1342:25:1;;;18766:32:0;;1315:18:1;18766:32:0;;;;;;;;18426:380;;;:::o;19097:453::-;19232:24;19259:25;19269:5;19276:7;19259:9;:25::i;:::-;19232:52;;-1:-1:-1;;19299:16:0;:37;19295:248;;19381:6;19361:16;:26;;19353:68;;;;-1:-1:-1;;;19353:68:0;;8048:2:1;19353:68:0;;;8030:21:1;8087:2;8067:18;;;8060:30;8126:31;8106:18;;;8099:59;8175:18;;19353:68:0;7846:353:1;19353:68:0;19465:51;19474:5;19481:7;19509:6;19490:16;:25;19465:8;:51::i;:::-;19221:329;19097:453;;;:::o;15299:964::-;-1:-1:-1;;;;;15430:18:0;;15422:68;;;;-1:-1:-1;;;15422:68:0;;8406:2:1;15422:68:0;;;8388:21:1;8445:2;8425:18;;;8418:30;8484:34;8464:18;;;8457:62;-1:-1:-1;;;8535:18:1;;;8528:35;8580:19;;15422:68:0;8204:401:1;15422:68:0;-1:-1:-1;;;;;15509:16:0;;15501:64;;;;-1:-1:-1;;;15501:64:0;;8812:2:1;15501:64:0;;;8794:21:1;8851:2;8831:18;;;8824:30;8890:34;8870:18;;;8863:62;-1:-1:-1;;;8941:18:1;;;8934:33;8984:19;;15501:64:0;8610:399:1;15501:64:0;15578:38;15599:4;15605:2;15609:6;15578:20;:38::i;:::-;-1:-1:-1;;;;;15651:15:0;;15629:19;15651:15;;;:9;:15;;;;;;15685:21;;;;15677:72;;;;-1:-1:-1;;;15677:72:0;;9216:2:1;15677:72:0;;;9198:21:1;9255:2;9235:18;;;9228:30;9294:34;9274:18;;;9267:62;-1:-1:-1;;;9345:18:1;;;9338:36;9391:19;;15677:72:0;9014:402:1;15677:72:0;-1:-1:-1;;;;;15785:15:0;;;;;;;:9;:15;;;;;;15803:20;;;15785:38;;16003:13;;;;;;;;;:23;;;;;;16062:42;16054:50;16050:204;;16140:2;-1:-1:-1;;;;;16125:26:0;16134:4;-1:-1:-1;;;;;16125:26:0;-1:-1:-1;;;;;;;;;;;16144:6:0;16125:26;;;;1342:25:1;;1330:2;1315:18;;1196:177;16125:26:0;;;;;;;;16050:204;;;16188:64;;1342:25:1;;;-1:-1:-1;;;;;16188:64:0;;;16197:42;;-1:-1:-1;;;;;;;;;;;16188:64:0;1330:2:1;1315:18;16188:64:0;;;;;;;15411:852;15299:964;;;:::o;2629:132::-;2510:7;2537:6;-1:-1:-1;;;;;2537:6:0;1758:10;2693:23;2685:68;;;;-1:-1:-1;;;2685:68:0;;9623:2:1;2685:68:0;;;9605:21:1;;;9642:18;;;9635:30;9701:34;9681:18;;;9674:62;9753:18;;2685:68:0;9421:356:1;5844:120:0;4853:16;:14;:16::i;:::-;5913:5:::1;5903:15:::0;;-1:-1:-1;;;;5903:15:0::1;::::0;;5934:22:::1;1758:10:::0;5943:12:::1;5934:22;::::0;-1:-1:-1;;;;;3410:32:1;;;3392:51;;3380:2;3365:18;5934:22:0::1;;;;;;;5844:120::o:0;17372:616::-;-1:-1:-1;;;;;17456:21:0;;17448:67;;;;-1:-1:-1;;;17448:67:0;;9984:2:1;17448:67:0;;;9966:21:1;10023:2;10003:18;;;9996:30;10062:34;10042:18;;;10035:62;-1:-1:-1;;;10113:18:1;;;10106:31;10154:19;;17448:67:0;9782:397:1;17448:67:0;17528:49;17549:7;17566:1;17570:6;17528:20;:49::i;:::-;-1:-1:-1;;;;;17615:18:0;;17590:22;17615:18;;;:9;:18;;;;;;17652:24;;;;17644:71;;;;-1:-1:-1;;;17644:71:0;;10386:2:1;17644:71:0;;;10368:21:1;10425:2;10405:18;;;10398:30;10464:34;10444:18;;;10437:62;-1:-1:-1;;;10515:18:1;;;10508:32;10557:19;;17644:71:0;10184:398:1;17644:71:0;-1:-1:-1;;;;;17751:18:0;;;;;;:9;:18;;;;;;;;17772:23;;;17751:44;;17890:12;:22;;;;;;;17941:37;1342:25:1;;;17751:18:0;;;-1:-1:-1;;;;;;;;;;;17941:37:0;1315:18:1;17941:37:0;1196:177:1;3731:191:0;3805:16;3824:6;;-1:-1:-1;;;;;3841:17:0;;;-1:-1:-1;;;;;;3841:17:0;;;;;;3874:40;;3824:6;;;;;;;3874:40;;3805:16;3874:40;3794:128;3731:191;:::o;5585:118::-;4594:19;:17;:19::i;:::-;5645:7:::1;:14:::0;;-1:-1:-1;;;;5645:14:0::1;-1:-1:-1::0;;;5645:14:0::1;::::0;;5675:20:::1;5682:12;1758:10:::0;;1678:98;31306:940;31416:6;31426:1;31416:11;31412:46;;31438:17;;-1:-1:-1;;;31438:17:0;;;;;;;;;;;31412:46;31530:13;;;;;;;31526:30;;;31306:940;;;:::o;31526:30::-;5036:4;5060:7;-1:-1:-1;;;5060:7:0;;;;31562:39;;;31583:16;;-1:-1:-1;;;31583:16:0;;;;;;;;;;;31562:39;-1:-1:-1;;;;;31656:26:0;;;;;;:18;:26;;;;;;31640:12;:42;;:91;;-1:-1:-1;;;;;;31702:29:0;;;;;;:18;:29;;;;;;31686:12;:45;31640:91;31636:133;;;31749:12;;-1:-1:-1;;;31749:12:0;;;;;;;;;;;31636:133;-1:-1:-1;;;;;31791:19:0;;;31777:11;31791:19;;;:8;:19;;;;;;;31830:16;;;;;;;;31791:19;;;;;31830:16;31855:386;;;;31904:15;;;;:41;;;;;31923:22;31935:9;31923:11;:22::i;:::-;31900:71;;;31956:12;;-1:-1:-1;;;31956:12:0;;;;;;;;;;;31900:71;32044:10;;;;;;;:30;;;;;26914:21;32058:6;:16;32044:30;32040:63;;;32085:15;;-1:-1:-1;;;32085:15:0;;;;;;;;;;;32040:63;-1:-1:-1;;;;;32111:29:0;;;;;;:18;:29;;;;;32143:12;32111:44;;31855:386;;;32173:6;32169:72;;;-1:-1:-1;;;;;32192:26:0;;;;;;:18;:26;;;;;32221:12;32192:41;;32169:72;31405:841;;31306:940;;;:::o;5333:108::-;5036:4;5060:7;-1:-1:-1;;;5060:7:0;;;;5392:41;;;;-1:-1:-1;;;5392:41:0;;10789:2:1;5392:41:0;;;10771:21:1;10828:2;10808:18;;;10801:30;-1:-1:-1;;;10847:18:1;;;10840:50;10907:18;;5392:41:0;10587:344:1;5148:108:0;5036:4;5060:7;-1:-1:-1;;;5060:7:0;;;;5218:9;5210:38;;;;-1:-1:-1;;;5210:38:0;;11138:2:1;5210:38:0;;;11120:21:1;11177:2;11157:18;;;11150:30;-1:-1:-1;;;11196:18:1;;;11189:46;11252:18;;5210:38:0;10936:340:1;30647:186:0;30709:4;30763:14;;27033:1;30745:32;;;;:::i;:::-;30730:12;:47;:72;;;-1:-1:-1;30461:21:0;;30503:8;;;;30781:21;30729:98;;;;-1:-1:-1;;;;;;;30808:19:0;;;;;:9;:19;;;;;;;;30807:20;;30647:186::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:1;;1900:180;-1:-1:-1;1900:180:1:o;2085:160::-;2150:20;;2206:13;;2199:21;2189:32;;2179:60;;2235:1;2232;2225:12;2250:180;2306:6;2359:2;2347:9;2338:7;2334:23;2330:32;2327:52;;;2375:1;2372;2365:12;2327:52;2398:26;2414:9;2398:26;:::i;:::-;2388:36;2250:180;-1:-1:-1;;;2250:180:1:o;2435:186::-;2494:6;2547:2;2535:9;2526:7;2522:23;2518:32;2515:52;;;2563:1;2560;2553:12;2515:52;2586:29;2605:9;2586:29;:::i;2626:615::-;2712:6;2720;2773:2;2761:9;2752:7;2748:23;2744:32;2741:52;;;2789:1;2786;2779:12;2741:52;2829:9;2816:23;2858:18;2899:2;2891:6;2888:14;2885:34;;;2915:1;2912;2905:12;2885:34;2953:6;2942:9;2938:22;2928:32;;2998:7;2991:4;2987:2;2983:13;2979:27;2969:55;;3020:1;3017;3010:12;2969:55;3060:2;3047:16;3086:2;3078:6;3075:14;3072:34;;;3102:1;3099;3092:12;3072:34;3155:7;3150:2;3140:6;3137:1;3133:14;3129:2;3125:23;3121:32;3118:45;3115:65;;;3176:1;3173;3166:12;3115:65;3207:2;3199:11;;;;;3229:6;;-1:-1:-1;2626:615:1;;-1:-1:-1;;;;2626:615:1:o;3454:127::-;3515:10;3510:3;3506:20;3503:1;3496:31;3546:4;3543:1;3536:15;3570:4;3567:1;3560:15;3586:1191;3679:6;3687;3740:2;3728:9;3719:7;3715:23;3711:32;3708:52;;;3756:1;3753;3746:12;3708:52;3796:9;3783:23;3825:18;3866:2;3858:6;3855:14;3852:34;;;3882:1;3879;3872:12;3852:34;3920:6;3909:9;3905:22;3895:32;;3965:7;3958:4;3954:2;3950:13;3946:27;3936:55;;3987:1;3984;3977:12;3936:55;4023:2;4010:16;4045:4;4068:2;4064;4061:10;4058:36;;;4074:18;;:::i;:::-;4120:2;4117:1;4113:10;4152:2;4146:9;4215:2;4211:7;4206:2;4202;4198:11;4194:25;4186:6;4182:38;4270:6;4258:10;4255:22;4250:2;4238:10;4235:18;4232:46;4229:72;;;4281:18;;:::i;:::-;4317:2;4310:22;4367:18;;;4401:15;;;;-1:-1:-1;4443:11:1;;;4439:20;;;4471:19;;;4468:39;;;4503:1;4500;4493:12;4468:39;4527:11;;;;4547:148;4563:6;4558:3;4555:15;4547:148;;;4629:23;4648:3;4629:23;:::i;:::-;4617:36;;4580:12;;;;4673;;;;4547:148;;;4714:6;4752:18;;;;4739:32;;-1:-1:-1;;;;;;;3586:1191:1:o;4782:260::-;4850:6;4858;4911:2;4899:9;4890:7;4886:23;4882:32;4879:52;;;4927:1;4924;4917:12;4879:52;4950:29;4969:9;4950:29;:::i;:::-;4940:39;;4998:38;5032:2;5021:9;5017:18;4998:38;:::i;:::-;4988:48;;4782:260;;;;;:::o;5047:254::-;5112:6;5120;5173:2;5161:9;5152:7;5148:23;5144:32;5141:52;;;5189:1;5186;5179:12;5141:52;5212:29;5231:9;5212:29;:::i;:::-;5202:39;;5260:35;5291:2;5280:9;5276:18;5260:35;:::i;5306:380::-;5385:1;5381:12;;;;5428;;;5449:61;;5503:4;5495:6;5491:17;5481:27;;5449:61;5556:2;5548:6;5545:14;5525:18;5522:38;5519:161;;5602:10;5597:3;5593:20;5590:1;5583:31;5637:4;5634:1;5627:15;5665:4;5662:1;5655:15;5519:161;;5306:380;;;:::o;5691:127::-;5752:10;5747:3;5743:20;5740:1;5733:31;5783:4;5780:1;5773:15;5807:4;5804:1;5797:15;5823:125;5888:9;;;5909:10;;;5906:36;;;5922:18;;:::i;5953:127::-;6014:10;6009:3;6005:20;6002:1;5995:31;6045:4;6042:1;6035:15;6069:4;6066:1;6059:15;6085:135;6124:3;6145:17;;;6142:43;;6165:18;;:::i;:::-;-1:-1:-1;6212:1:1;6201:13;;6085:135::o

Swarm Source

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