ETH Price: $3,499.15 (+0.23%)

Token

Moon Token (MOON)

Overview

Max Total Supply

1,724,544.253431372549019159 MOON

Holders

111

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
MoonToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at zkevm.polygonscan.com on 2023-04-11
*/

// Sources flattened with hardhat v2.11.1 https://hardhat.org

// File contracts/MasterChef/utils/Context.sol

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

pragma solidity ^0.8.0;

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

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


// File contracts/MasterChef/libraries/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

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

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

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

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

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

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

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

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

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


// File contracts/MasterChef/interfaces/IBEP20.sol



pragma solidity >=0.4.0;

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

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

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

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

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address);

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


// File contracts/MasterChef/libraries/SafeMath.sol



pragma solidity >=0.4.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        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-contracts/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) {
        return div(a, b, 'SafeMath: division by zero');
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        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) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


// File contracts/MasterChef/libraries/Address.sol



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

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

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

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

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

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'Address: call to non-contract');

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// File contracts/MasterChef/token/BEP20.sol



pragma solidity >=0.4.0;
/**
 * @dev Implementation of the {IBEP20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {BEP20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-BEP20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of BEP20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IBEP20-approve}.
 */
contract BEP20 is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * 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_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external override view returns (address) {
        return owner();
    }

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

    /**
     * @dev Returns the token decimals.
     */
    function decimals() public override view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Returns the token symbol.
     */
    function symbol() public override view returns (string memory) {
        return _symbol;
    }

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

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

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

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

    /**
     * @dev See {BEP20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {BEP20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, 'BEP20: transfer amount exceeds allowance')
        );
        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 {BEP20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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 {BEP20-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 returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, 'BEP20: decreased allowance below zero')
        );
        return true;
    }

    /**
     * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing
     * the total supply.
     *
     * Requirements
     *
     * - `msg.sender` must be the token owner
     */
    function mint(uint256 amount) public virtual onlyOwner returns (bool) {
        _mint(_msgSender(), amount);
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), 'BEP20: transfer from the zero address');
        require(recipient != address(0), 'BEP20: transfer to the zero address');

        _balances[sender] = _balances[sender].sub(amount, 'BEP20: transfer amount exceeds balance');
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, 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
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), 'BEP20: mint to the zero address');

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(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 {
        require(account != address(0), 'BEP20: burn from the zero address');

        _balances[account] = _balances[account].sub(amount, 'BEP20: burn amount exceeds balance');
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is 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), 'BEP20: approve from the zero address');
        require(spender != address(0), 'BEP20: approve to the zero address');

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

    /**
     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(amount, 'BEP20: burn amount exceeds allowance')
        );
    }
}


// File contracts/MasterChef/token/MoonToken.sol


pragma solidity >0.6.6;
contract MoonToken is BEP20 {
    using SafeMath for uint256;
    uint256 public constant maxSupply = 10_000_000e18;

    constructor() BEP20('Moon Token', 'MOON') {
        _mint(msg.sender, 10_000e18);
    }

    /// @notice Creates `_amount` token to token address. Must only be called by the owner (MasterChef).
    function mint(uint256 _amount) public override onlyOwner returns (bool) {
        return mintFor(address(this), _amount);
    }

    function mintFor(address _address, uint256 _amount) public onlyOwner returns (bool) {
        _mint(_address, _amount);
        require(totalSupply() <= maxSupply, "reach max supply");
        return true;
    }

    // Safe cake transfer function, just in case if rounding error causes pool to not have enough cake.
    function safeCakeTransfer(address _to, uint256 _amount) public onlyOwner {
        uint256 moonBal = balanceOf(address(this));
        if (_amount > moonBal) {
            _transfer(address(this), _to, moonBal);
        } else {
            _transfer(address(this), _to, _amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintFor","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"safeCakeTransfer","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4d6f6f6e20546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d4f4f4e000000000000000000000000000000000000000000000000000000008152506200009e620000926200011060201b60201c565b6200011860201b60201c565b8160049080519060200190620000b6929190620003dc565b508060059080519060200190620000cf929190620003dc565b506012600660006101000a81548160ff021916908360ff16021790555050506200010a3369021e19e0c9bab2400000620001dc60201b60201c565b6200068e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200024f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002469062000543565b60405180910390fd5b6200026b816003546200037960201b62000a3f1790919060201c565b600381905550620002ca81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200037960201b62000a3f1790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200036d919062000565565b60405180910390a35050565b60008082846200038a919062000593565b905083811015620003d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c99062000521565b60405180910390fd5b8091505092915050565b828054620003ea90620005fa565b90600052602060002090601f0160209004810192826200040e57600085556200045a565b82601f106200042957805160ff19168380011785556200045a565b828001600101855582156200045a579182015b82811115620004595782518255916020019190600101906200043c565b5b5090506200046991906200046d565b5090565b5b80821115620004885760008160009055506001016200046e565b5090565b60006200049b601b8362000582565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000620004dd601f8362000582565b91507f42455032303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6200051b81620005f0565b82525050565b600060208201905081810360008301526200053c816200048c565b9050919050565b600060208201905081810360008301526200055e81620004ce565b9050919050565b60006020820190506200057c600083018462000510565b92915050565b600082825260208201905092915050565b6000620005a082620005f0565b9150620005ad83620005f0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005e557620005e462000630565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200061357607f821691505b602082108114156200062a57620006296200065f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611b38806200069e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063a9059cbb11610071578063a9059cbb14610320578063d5abeb0114610350578063da1919b31461036e578063dd62ed3e1461039e578063f2fde38b146103ce57610121565b80638da5cb5b1461026857806395d89b4114610286578063a0712d68146102a4578063a2e6ddcc146102d4578063a457c2d7146102f057610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806370a0823114610210578063715018a614610240578063893d20e81461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103ea565b60405161013b919061171a565b60405180910390f35b61015e6004803603810190610159919061130c565b61047c565b60405161016b91906116ff565b60405180910390f35b61017c61049a565b604051610189919061185c565b60405180910390f35b6101ac60048036038101906101a791906112bd565b6104a4565b6040516101b991906116ff565b60405180910390f35b6101ca61057d565b6040516101d79190611877565b60405180910390f35b6101fa60048036038101906101f5919061130c565b610594565b60405161020791906116ff565b60405180910390f35b61022a60048036038101906102259190611258565b610647565b604051610237919061185c565b60405180910390f35b610248610690565b005b6102526106a4565b60405161025f91906116e4565b60405180910390f35b6102706106b3565b60405161027d91906116e4565b60405180910390f35b61028e6106dc565b60405161029b919061171a565b60405180910390f35b6102be60048036038101906102b99190611348565b61076e565b6040516102cb91906116ff565b60405180910390f35b6102ee60048036038101906102e9919061130c565b610789565b005b61030a6004803603810190610305919061130c565b6107c7565b60405161031791906116ff565b60405180910390f35b61033a6004803603810190610335919061130c565b610894565b60405161034791906116ff565b60405180910390f35b6103586108b2565b604051610365919061185c565b60405180910390f35b6103886004803603810190610383919061130c565b6108c1565b60405161039591906116ff565b60405180910390f35b6103b860048036038101906103b39190611281565b610934565b6040516103c5919061185c565b60405180910390f35b6103e860048036038101906103e39190611258565b6109bb565b005b6060600480546103f9906119c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610425906119c0565b80156104725780601f1061044757610100808354040283529160200191610472565b820191906000526020600020905b81548152906001019060200180831161045557829003601f168201915b5050505050905090565b6000610490610489610a9d565b8484610aa5565b6001905092915050565b6000600354905090565b60006104b1848484610c70565b610572846104bd610a9d565b61056d85604051806060016040528060288152602001611a9060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610523610a9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efe9092919063ffffffff16565b610aa5565b600190509392505050565b6000600660009054906101000a900460ff16905090565b600061063d6105a1610a9d565b8461063885600260006105b2610a9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a3f90919063ffffffff16565b610aa5565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610698610f62565b6106a26000610fe0565b565b60006106ae6106b3565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546106eb906119c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610717906119c0565b80156107645780601f1061073957610100808354040283529160200191610764565b820191906000526020600020905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b6000610778610f62565b61078230836108c1565b9050919050565b610791610f62565b600061079c30610647565b9050808211156107b6576107b1308483610c70565b6107c2565b6107c1308484610c70565b5b505050565b600061088a6107d4610a9d565b8461088585604051806060016040528060258152602001611ade60259139600260006107fe610a9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efe9092919063ffffffff16565b610aa5565b6001905092915050565b60006108a86108a1610a9d565b8484610c70565b6001905092915050565b6a084595161401484a00000081565b60006108cb610f62565b6108d583836110a4565b6a084595161401484a0000006108e961049a565b111561092a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109219061177c565b60405180910390fd5b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109c3610f62565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a9061179c565b60405180910390fd5b610a3c81610fe0565b50565b6000808284610a4e91906118ae565b905083811015610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a906117bc565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061175c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c9061183c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c63919061185c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd79061173c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d479061181c565b60405180910390fd5b610dbc81604051806060016040528060268152602001611ab860269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efe9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a3f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef1919061185c565b60405180910390a3505050565b6000838311158290610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d919061171a565b60405180910390fd5b5060008385610f559190611904565b9050809150509392505050565b610f6a610a9d565b73ffffffffffffffffffffffffffffffffffffffff16610f886106b3565b73ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906117fc565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906117dc565b60405180910390fd5b61112981600354610a3f90919063ffffffff16565b60038190555061118181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a3f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611222919061185c565b60405180910390a35050565b60008135905061123d81611a61565b92915050565b60008135905061125281611a78565b92915050565b60006020828403121561126a57600080fd5b60006112788482850161122e565b91505092915050565b6000806040838503121561129457600080fd5b60006112a28582860161122e565b92505060206112b38582860161122e565b9150509250929050565b6000806000606084860312156112d257600080fd5b60006112e08682870161122e565b93505060206112f18682870161122e565b925050604061130286828701611243565b9150509250925092565b6000806040838503121561131f57600080fd5b600061132d8582860161122e565b925050602061133e85828601611243565b9150509250929050565b60006020828403121561135a57600080fd5b600061136884828501611243565b91505092915050565b61137a81611938565b82525050565b6113898161194a565b82525050565b600061139a82611892565b6113a4818561189d565b93506113b481856020860161198d565b6113bd81611a50565b840191505092915050565b60006113d560258361189d565b91507f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061143b60248361189d565b91507f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114a160108361189d565b91507f7265616368206d617820737570706c79000000000000000000000000000000006000830152602082019050919050565b60006114e160268361189d565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611547601b8361189d565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611587601f8361189d565b91507f42455032303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b60006115c760208361189d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061160760238361189d565b91507f42455032303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061166d60228361189d565b91507f42455032303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6116cf81611976565b82525050565b6116de81611980565b82525050565b60006020820190506116f96000830184611371565b92915050565b60006020820190506117146000830184611380565b92915050565b60006020820190508181036000830152611734818461138f565b905092915050565b60006020820190508181036000830152611755816113c8565b9050919050565b600060208201905081810360008301526117758161142e565b9050919050565b6000602082019050818103600083015261179581611494565b9050919050565b600060208201905081810360008301526117b5816114d4565b9050919050565b600060208201905081810360008301526117d58161153a565b9050919050565b600060208201905081810360008301526117f58161157a565b9050919050565b60006020820190508181036000830152611815816115ba565b9050919050565b60006020820190508181036000830152611835816115fa565b9050919050565b6000602082019050818103600083015261185581611660565b9050919050565b600060208201905061187160008301846116c6565b92915050565b600060208201905061188c60008301846116d5565b92915050565b600081519050919050565b600082825260208201905092915050565b60006118b982611976565b91506118c483611976565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118f9576118f86119f2565b5b828201905092915050565b600061190f82611976565b915061191a83611976565b92508282101561192d5761192c6119f2565b5b828203905092915050565b600061194382611956565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119ab578082015181840152602081019050611990565b838111156119ba576000848401525b50505050565b600060028204905060018216806119d857607f821691505b602082108114156119ec576119eb611a21565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a6a81611938565b8114611a7557600080fd5b50565b611a8181611976565b8114611a8c57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201955a6c338f17828b175944521b62b1e20ea4233e9658ae71f4fc1010817dc1264736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063a9059cbb11610071578063a9059cbb14610320578063d5abeb0114610350578063da1919b31461036e578063dd62ed3e1461039e578063f2fde38b146103ce57610121565b80638da5cb5b1461026857806395d89b4114610286578063a0712d68146102a4578063a2e6ddcc146102d4578063a457c2d7146102f057610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806370a0823114610210578063715018a614610240578063893d20e81461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103ea565b60405161013b919061171a565b60405180910390f35b61015e6004803603810190610159919061130c565b61047c565b60405161016b91906116ff565b60405180910390f35b61017c61049a565b604051610189919061185c565b60405180910390f35b6101ac60048036038101906101a791906112bd565b6104a4565b6040516101b991906116ff565b60405180910390f35b6101ca61057d565b6040516101d79190611877565b60405180910390f35b6101fa60048036038101906101f5919061130c565b610594565b60405161020791906116ff565b60405180910390f35b61022a60048036038101906102259190611258565b610647565b604051610237919061185c565b60405180910390f35b610248610690565b005b6102526106a4565b60405161025f91906116e4565b60405180910390f35b6102706106b3565b60405161027d91906116e4565b60405180910390f35b61028e6106dc565b60405161029b919061171a565b60405180910390f35b6102be60048036038101906102b99190611348565b61076e565b6040516102cb91906116ff565b60405180910390f35b6102ee60048036038101906102e9919061130c565b610789565b005b61030a6004803603810190610305919061130c565b6107c7565b60405161031791906116ff565b60405180910390f35b61033a6004803603810190610335919061130c565b610894565b60405161034791906116ff565b60405180910390f35b6103586108b2565b604051610365919061185c565b60405180910390f35b6103886004803603810190610383919061130c565b6108c1565b60405161039591906116ff565b60405180910390f35b6103b860048036038101906103b39190611281565b610934565b6040516103c5919061185c565b60405180910390f35b6103e860048036038101906103e39190611258565b6109bb565b005b6060600480546103f9906119c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610425906119c0565b80156104725780601f1061044757610100808354040283529160200191610472565b820191906000526020600020905b81548152906001019060200180831161045557829003601f168201915b5050505050905090565b6000610490610489610a9d565b8484610aa5565b6001905092915050565b6000600354905090565b60006104b1848484610c70565b610572846104bd610a9d565b61056d85604051806060016040528060288152602001611a9060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610523610a9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efe9092919063ffffffff16565b610aa5565b600190509392505050565b6000600660009054906101000a900460ff16905090565b600061063d6105a1610a9d565b8461063885600260006105b2610a9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a3f90919063ffffffff16565b610aa5565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610698610f62565b6106a26000610fe0565b565b60006106ae6106b3565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546106eb906119c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610717906119c0565b80156107645780601f1061073957610100808354040283529160200191610764565b820191906000526020600020905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b6000610778610f62565b61078230836108c1565b9050919050565b610791610f62565b600061079c30610647565b9050808211156107b6576107b1308483610c70565b6107c2565b6107c1308484610c70565b5b505050565b600061088a6107d4610a9d565b8461088585604051806060016040528060258152602001611ade60259139600260006107fe610a9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efe9092919063ffffffff16565b610aa5565b6001905092915050565b60006108a86108a1610a9d565b8484610c70565b6001905092915050565b6a084595161401484a00000081565b60006108cb610f62565b6108d583836110a4565b6a084595161401484a0000006108e961049a565b111561092a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109219061177c565b60405180910390fd5b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109c3610f62565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a9061179c565b60405180910390fd5b610a3c81610fe0565b50565b6000808284610a4e91906118ae565b905083811015610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a906117bc565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061175c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c9061183c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c63919061185c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd79061173c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d479061181c565b60405180910390fd5b610dbc81604051806060016040528060268152602001611ab860269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efe9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a3f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef1919061185c565b60405180910390a3505050565b6000838311158290610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d919061171a565b60405180910390fd5b5060008385610f559190611904565b9050809150509392505050565b610f6a610a9d565b73ffffffffffffffffffffffffffffffffffffffff16610f886106b3565b73ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906117fc565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906117dc565b60405180910390fd5b61112981600354610a3f90919063ffffffff16565b60038190555061118181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a3f90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611222919061185c565b60405180910390a35050565b60008135905061123d81611a61565b92915050565b60008135905061125281611a78565b92915050565b60006020828403121561126a57600080fd5b60006112788482850161122e565b91505092915050565b6000806040838503121561129457600080fd5b60006112a28582860161122e565b92505060206112b38582860161122e565b9150509250929050565b6000806000606084860312156112d257600080fd5b60006112e08682870161122e565b93505060206112f18682870161122e565b925050604061130286828701611243565b9150509250925092565b6000806040838503121561131f57600080fd5b600061132d8582860161122e565b925050602061133e85828601611243565b9150509250929050565b60006020828403121561135a57600080fd5b600061136884828501611243565b91505092915050565b61137a81611938565b82525050565b6113898161194a565b82525050565b600061139a82611892565b6113a4818561189d565b93506113b481856020860161198d565b6113bd81611a50565b840191505092915050565b60006113d560258361189d565b91507f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061143b60248361189d565b91507f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114a160108361189d565b91507f7265616368206d617820737570706c79000000000000000000000000000000006000830152602082019050919050565b60006114e160268361189d565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611547601b8361189d565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611587601f8361189d565b91507f42455032303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b60006115c760208361189d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061160760238361189d565b91507f42455032303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061166d60228361189d565b91507f42455032303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6116cf81611976565b82525050565b6116de81611980565b82525050565b60006020820190506116f96000830184611371565b92915050565b60006020820190506117146000830184611380565b92915050565b60006020820190508181036000830152611734818461138f565b905092915050565b60006020820190508181036000830152611755816113c8565b9050919050565b600060208201905081810360008301526117758161142e565b9050919050565b6000602082019050818103600083015261179581611494565b9050919050565b600060208201905081810360008301526117b5816114d4565b9050919050565b600060208201905081810360008301526117d58161153a565b9050919050565b600060208201905081810360008301526117f58161157a565b9050919050565b60006020820190508181036000830152611815816115ba565b9050919050565b60006020820190508181036000830152611835816115fa565b9050919050565b6000602082019050818103600083015261185581611660565b9050919050565b600060208201905061187160008301846116c6565b92915050565b600060208201905061188c60008301846116d5565b92915050565b600081519050919050565b600082825260208201905092915050565b60006118b982611976565b91506118c483611976565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118f9576118f86119f2565b5b828201905092915050565b600061190f82611976565b915061191a83611976565b92508282101561192d5761192c6119f2565b5b828203905092915050565b600061194382611956565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119ab578082015181840152602081019050611990565b838111156119ba576000848401525b50505050565b600060028204905060018216806119d857607f821691505b602082108114156119ec576119eb611a21565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a6a81611938565b8114611a7557600080fd5b50565b611a8181611976565b8114611a8c57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201955a6c338f17828b175944521b62b1e20ea4233e9658ae71f4fc1010817dc1264736f6c63430008000033

Deployed Bytecode Sourcemap

29639:1100:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21704:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23191:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22180:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23823:397;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21863:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24628:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22342:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2865:103;;;:::i;:::-;;21547:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2217:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22020:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29968:129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30433:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25340:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22673:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29707:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30105:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22902:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3123:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21704:92;21750:13;21783:5;21776:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21704:92;:::o;23191:161::-;23266:4;23283:39;23292:12;:10;:12::i;:::-;23306:7;23315:6;23283:8;:39::i;:::-;23340:4;23333:11;;23191:161;;;;:::o;22180:100::-;22233:7;22260:12;;22253:19;;22180:100;:::o;23823:397::-;23955:4;23972:36;23982:6;23990:9;24001:6;23972:9;:36::i;:::-;24019:171;24042:6;24063:12;:10;:12::i;:::-;24090:89;24128:6;24090:89;;;;;;;;;;;;;;;;;:11;:19;24102:6;24090:19;;;;;;;;;;;;;;;:33;24110:12;:10;:12::i;:::-;24090:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24019:8;:171::i;:::-;24208:4;24201:11;;23823:397;;;;;:::o;21863:92::-;21913:5;21938:9;;;;;;;;;;;21931:16;;21863:92;:::o;24628:210::-;24708:4;24725:83;24734:12;:10;:12::i;:::-;24748:7;24757:50;24796:10;24757:11;:25;24769:12;:10;:12::i;:::-;24757:25;;;;;;;;;;;;;;;:34;24783:7;24757:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;24725:8;:83::i;:::-;24826:4;24819:11;;24628:210;;;;:::o;22342:119::-;22408:7;22435:9;:18;22445:7;22435:18;;;;;;;;;;;;;;;;22428:25;;22342:119;;;:::o;2865:103::-;2103:13;:11;:13::i;:::-;2930:30:::1;2957:1;2930:18;:30::i;:::-;2865:103::o:0;21547:94::-;21599:7;21626;:5;:7::i;:::-;21619:14;;21547:94;:::o;2217:87::-;2263:7;2290:6;;;;;;;;;;;2283:13;;2217:87;:::o;22020:96::-;22068:13;22101:7;22094:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22020:96;:::o;29968:129::-;30034:4;2103:13;:11;:13::i;:::-;30058:31:::1;30074:4;30081:7;30058;:31::i;:::-;30051:38;;29968:129:::0;;;:::o;30433:303::-;2103:13;:11;:13::i;:::-;30517:15:::1;30535:24;30553:4;30535:9;:24::i;:::-;30517:42;;30584:7;30574;:17;30570:159;;;30608:38;30626:4;30633:3;30638:7;30608:9;:38::i;:::-;30570:159;;;30679:38;30697:4;30704:3;30709:7;30679:9;:38::i;:::-;30570:159;2127:1;30433:303:::0;;:::o;25340:311::-;25425:4;25442:179;25465:12;:10;:12::i;:::-;25492:7;25514:96;25553:15;25514:96;;;;;;;;;;;;;;;;;:11;:25;25526:12;:10;:12::i;:::-;25514:25;;;;;;;;;;;;;;;:34;25540:7;25514:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;25442:8;:179::i;:::-;25639:4;25632:11;;25340:311;;;;:::o;22673:167::-;22751:4;22768:42;22778:12;:10;:12::i;:::-;22792:9;22803:6;22768:9;:42::i;:::-;22828:4;22821:11;;22673:167;;;;:::o;29707:49::-;29743:13;29707:49;:::o;30105:215::-;30183:4;2103:13;:11;:13::i;:::-;30200:24:::1;30206:8;30216:7;30200:5;:24::i;:::-;29743:13;30243;:11;:13::i;:::-;:26;;30235:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;30308:4;30301:11;;30105:215:::0;;;;:::o;22902:143::-;22983:7;23010:11;:18;23022:5;23010:18;;;;;;;;;;;;;;;:27;23029:7;23010:27;;;;;;;;;;;;;;;;23003:34;;22902:143;;;;:::o;3123:201::-;2103:13;:11;:13::i;:::-;3232:1:::1;3212:22;;:8;:22;;;;3204:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3288:28;3307:8;3288:18;:28::i;:::-;3123:201:::0;:::o;7848:181::-;7906:7;7926:9;7942:1;7938;:5;;;;:::i;:::-;7926:17;;7967:1;7962;:6;;7954:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8020:1;8013:8;;;7848:181;;;;:::o;771:98::-;824:7;851:10;844:17;;771:98;:::o;28711:372::-;28856:1;28839:19;;:5;:19;;;;28831:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28937:1;28918:21;;:7;:21;;;;28910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29021:6;28991:11;:18;29003:5;28991:18;;;;;;;;;;;;;;;:27;29010:7;28991:27;;;;;;;;;;;;;;;:36;;;;29059:7;29043:32;;29052:5;29043:32;;;29068:6;29043:32;;;;;;:::i;:::-;;;;;;;;28711:372;;;:::o;26497:505::-;26647:1;26629:20;;:6;:20;;;;26621:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26731:1;26710:23;;:9;:23;;;;26702:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26806;26828:6;26806:71;;;;;;;;;;;;;;;;;:9;:17;26816:6;26806:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;26786:9;:17;26796:6;26786:17;;;;;;;;;;;;;;;:91;;;;26911:32;26936:6;26911:9;:20;26921:9;26911:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26888:9;:20;26898:9;26888:20;;;;;;;;;;;;;;;:55;;;;26976:9;26959:35;;26968:6;26959:35;;;26987:6;26959:35;;;;;;:::i;:::-;;;;;;;;26497:505;;;:::o;8751:226::-;8871:7;8904:1;8899;:6;;8907:12;8891:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8931:9;8947:1;8943;:5;;;;:::i;:::-;8931:17;;8968:1;8961:8;;;8751:226;;;;;:::o;2382:132::-;2457:12;:10;:12::i;:::-;2446:23;;:7;:5;:7::i;:::-;:23;;;2438:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2382:132::o;3484:191::-;3558:16;3577:6;;;;;;;;;;;3558:25;;3603:8;3594:6;;:17;;;;;;;;;;;;;;;;;;3658:8;3627:40;;3648:8;3627:40;;;;;;;;;;;;3484:191;;:::o;27283:308::-;27378:1;27359:21;;:7;:21;;;;27351:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;27444:24;27461:6;27444:12;;:16;;:24;;;;:::i;:::-;27429:12;:39;;;;27500:30;27523:6;27500:9;:18;27510:7;27500:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;27479:9;:18;27489:7;27479:18;;;;;;;;;;;;;;;:51;;;;27567:7;27546:37;;27563:1;27546:37;;;27576:6;27546:37;;;;;;:::i;:::-;;;;;;;;27283:308;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:364::-;;2572:39;2605:5;2572:39;:::i;:::-;2627:71;2691:6;2686:3;2627:71;:::i;:::-;2620:78;;2707:52;2752:6;2747:3;2740:4;2733:5;2729:16;2707:52;:::i;:::-;2784:29;2806:6;2784:29;:::i;:::-;2779:3;2775:39;2768:46;;2548:272;;;;;:::o;2826:369::-;;2989:67;3053:2;3048:3;2989:67;:::i;:::-;2982:74;;3086:34;3082:1;3077:3;3073:11;3066:55;3152:7;3147:2;3142:3;3138:12;3131:29;3186:2;3181:3;3177:12;3170:19;;2972:223;;;:::o;3201:368::-;;3364:67;3428:2;3423:3;3364:67;:::i;:::-;3357:74;;3461:34;3457:1;3452:3;3448:11;3441:55;3527:6;3522:2;3517:3;3513:12;3506:28;3560:2;3555:3;3551:12;3544:19;;3347:222;;;:::o;3575:314::-;;3738:67;3802:2;3797:3;3738:67;:::i;:::-;3731:74;;3835:18;3831:1;3826:3;3822:11;3815:39;3880:2;3875:3;3871:12;3864:19;;3721:168;;;:::o;3895:370::-;;4058:67;4122:2;4117:3;4058:67;:::i;:::-;4051:74;;4155:34;4151:1;4146:3;4142:11;4135:55;4221:8;4216:2;4211:3;4207:12;4200:30;4256:2;4251:3;4247:12;4240:19;;4041:224;;;:::o;4271:325::-;;4434:67;4498:2;4493:3;4434:67;:::i;:::-;4427:74;;4531:29;4527:1;4522:3;4518:11;4511:50;4587:2;4582:3;4578:12;4571:19;;4417:179;;;:::o;4602:329::-;;4765:67;4829:2;4824:3;4765:67;:::i;:::-;4758:74;;4862:33;4858:1;4853:3;4849:11;4842:54;4922:2;4917:3;4913:12;4906:19;;4748:183;;;:::o;4937:330::-;;5100:67;5164:2;5159:3;5100:67;:::i;:::-;5093:74;;5197:34;5193:1;5188:3;5184:11;5177:55;5258:2;5253:3;5249:12;5242:19;;5083:184;;;:::o;5273:367::-;;5436:67;5500:2;5495:3;5436:67;:::i;:::-;5429:74;;5533:34;5529:1;5524:3;5520:11;5513:55;5599:5;5594:2;5589:3;5585:12;5578:27;5631:2;5626:3;5622:12;5615:19;;5419:221;;;:::o;5646:366::-;;5809:67;5873:2;5868:3;5809:67;:::i;:::-;5802:74;;5906:34;5902:1;5897:3;5893:11;5886:55;5972:4;5967:2;5962:3;5958:12;5951:26;6003:2;5998:3;5994:12;5987:19;;5792:220;;;:::o;6018:118::-;6105:24;6123:5;6105:24;:::i;:::-;6100:3;6093:37;6083:53;;:::o;6142:112::-;6225:22;6241:5;6225:22;:::i;:::-;6220:3;6213:35;6203:51;;:::o;6260:222::-;;6391:2;6380:9;6376:18;6368:26;;6404:71;6472:1;6461:9;6457:17;6448:6;6404:71;:::i;:::-;6358:124;;;;:::o;6488:210::-;;6613:2;6602:9;6598:18;6590:26;;6626:65;6688:1;6677:9;6673:17;6664:6;6626:65;:::i;:::-;6580:118;;;;:::o;6704:313::-;;6855:2;6844:9;6840:18;6832:26;;6904:9;6898:4;6894:20;6890:1;6879:9;6875:17;6868:47;6932:78;7005:4;6996:6;6932:78;:::i;:::-;6924:86;;6822:195;;;;:::o;7023:419::-;;7227:2;7216:9;7212:18;7204:26;;7276:9;7270:4;7266:20;7262:1;7251:9;7247:17;7240:47;7304:131;7430:4;7304:131;:::i;:::-;7296:139;;7194:248;;;:::o;7448:419::-;;7652:2;7641:9;7637:18;7629:26;;7701:9;7695:4;7691:20;7687:1;7676:9;7672:17;7665:47;7729:131;7855:4;7729:131;:::i;:::-;7721:139;;7619:248;;;:::o;7873:419::-;;8077:2;8066:9;8062:18;8054:26;;8126:9;8120:4;8116:20;8112:1;8101:9;8097:17;8090:47;8154:131;8280:4;8154:131;:::i;:::-;8146:139;;8044:248;;;:::o;8298:419::-;;8502:2;8491:9;8487:18;8479:26;;8551:9;8545:4;8541:20;8537:1;8526:9;8522:17;8515:47;8579:131;8705:4;8579:131;:::i;:::-;8571:139;;8469:248;;;:::o;8723:419::-;;8927:2;8916:9;8912:18;8904:26;;8976:9;8970:4;8966:20;8962:1;8951:9;8947:17;8940:47;9004:131;9130:4;9004:131;:::i;:::-;8996:139;;8894:248;;;:::o;9148:419::-;;9352:2;9341:9;9337:18;9329:26;;9401:9;9395:4;9391:20;9387:1;9376:9;9372:17;9365:47;9429:131;9555:4;9429:131;:::i;:::-;9421:139;;9319:248;;;:::o;9573:419::-;;9777:2;9766:9;9762:18;9754:26;;9826:9;9820:4;9816:20;9812:1;9801:9;9797:17;9790:47;9854:131;9980:4;9854:131;:::i;:::-;9846:139;;9744:248;;;:::o;9998:419::-;;10202:2;10191:9;10187:18;10179:26;;10251:9;10245:4;10241:20;10237:1;10226:9;10222:17;10215:47;10279:131;10405:4;10279:131;:::i;:::-;10271:139;;10169:248;;;:::o;10423:419::-;;10627:2;10616:9;10612:18;10604:26;;10676:9;10670:4;10666:20;10662:1;10651:9;10647:17;10640:47;10704:131;10830:4;10704:131;:::i;:::-;10696:139;;10594:248;;;:::o;10848:222::-;;10979:2;10968:9;10964:18;10956:26;;10992:71;11060:1;11049:9;11045:17;11036:6;10992:71;:::i;:::-;10946:124;;;;:::o;11076:214::-;;11203:2;11192:9;11188:18;11180:26;;11216:67;11280:1;11269:9;11265:17;11256:6;11216:67;:::i;:::-;11170:120;;;;:::o;11296:99::-;;11382:5;11376:12;11366:22;;11355:40;;;:::o;11401:169::-;;11519:6;11514:3;11507:19;11559:4;11554:3;11550:14;11535:29;;11497:73;;;;:::o;11576:305::-;;11635:20;11653:1;11635:20;:::i;:::-;11630:25;;11669:20;11687:1;11669:20;:::i;:::-;11664:25;;11823:1;11755:66;11751:74;11748:1;11745:81;11742:2;;;11829:18;;:::i;:::-;11742:2;11873:1;11870;11866:9;11859:16;;11620:261;;;;:::o;11887:191::-;;11947:20;11965:1;11947:20;:::i;:::-;11942:25;;11981:20;11999:1;11981:20;:::i;:::-;11976:25;;12020:1;12017;12014:8;12011:2;;;12025:18;;:::i;:::-;12011:2;12070:1;12067;12063:9;12055:17;;11932:146;;;;:::o;12084:96::-;;12150:24;12168:5;12150:24;:::i;:::-;12139:35;;12129:51;;;:::o;12186:90::-;;12263:5;12256:13;12249:21;12238:32;;12228:48;;;:::o;12282:126::-;;12359:42;12352:5;12348:54;12337:65;;12327:81;;;:::o;12414:77::-;;12480:5;12469:16;;12459:32;;;:::o;12497:86::-;;12572:4;12565:5;12561:16;12550:27;;12540:43;;;:::o;12589:307::-;12657:1;12667:113;12681:6;12678:1;12675:13;12667:113;;;12766:1;12761:3;12757:11;12751:18;12747:1;12742:3;12738:11;12731:39;12703:2;12700:1;12696:10;12691:15;;12667:113;;;12798:6;12795:1;12792:13;12789:2;;;12878:1;12869:6;12864:3;12860:16;12853:27;12789:2;12638:258;;;;:::o;12902:320::-;;12983:1;12977:4;12973:12;12963:22;;13030:1;13024:4;13020:12;13051:18;13041:2;;13107:4;13099:6;13095:17;13085:27;;13041:2;13169;13161:6;13158:14;13138:18;13135:38;13132:2;;;13188:18;;:::i;:::-;13132:2;12953:269;;;;:::o;13228:180::-;13276:77;13273:1;13266:88;13373:4;13370:1;13363:15;13397:4;13394:1;13387:15;13414:180;13462:77;13459:1;13452:88;13559:4;13556:1;13549:15;13583:4;13580:1;13573:15;13600:102;;13692:2;13688:7;13683:2;13676:5;13672:14;13668:28;13658:38;;13648:54;;;:::o;13708:122::-;13781:24;13799:5;13781:24;:::i;:::-;13774:5;13771:35;13761:2;;13820:1;13817;13810:12;13761:2;13751:79;:::o;13836:122::-;13909:24;13927:5;13909:24;:::i;:::-;13902:5;13899:35;13889:2;;13948:1;13945;13938:12;13889:2;13879:79;:::o

Swarm Source

ipfs://1955a6c338f17828b175944521b62b1e20ea4233e9658ae71f4fc1010817dc12
[ 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.