ETH Price: $2,625.92 (+1.11%)

Token

Angry Frogs Famiglia (AFF)
 

Overview

Max Total Supply

77,262.865186038984396051 AFF

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Null: 0x000...000
Balance
0 AFF

Value
$0.00
0x0000000000000000000000000000000000000000
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:
AFF

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 6: AFF.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./SafeMath.sol";
import "./Ownable.sol";

contract AFF is Ownable {
    using SafeMath for uint256;

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

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

    uint256 _totalSupply;

    mapping(address => bool) public managers;

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

    constructor() {
        _name = "Angry Frogs Famiglia";
        _symbol = "AFF";
        _decimals = 18;
    }

    function addManager(address _address) external onlyOwner {
        managers[_address] = true;
    }

    function removeManager(address _address) external onlyOwner {
        managers[_address] = false;
    }

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public returns (bool) {
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount)
        );
        _transfer(sender, recipient, amount);

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0x0));
        require(recipient != address(0x0));

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);

        emit Transfer(sender, recipient, amount);
    }

    function mint(address to, uint256 amount) public {
        require(
            managers[msg.sender] == true,
            "This address is not allowed to interact with the contract"
        );
        _mint(to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0x0));

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);

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

    function burn(address from, uint256 amount) external {
        require(
            managers[msg.sender] == true,
            "This address is not allowed to interact with the contract"
        );
        _burn(from, amount);
    }

    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0x0));

        _balances[account] = _balances[account].sub(amount);
        _totalSupply = _totalSupply.sub(amount);

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0x0));
        require(spender != address(0x0));

        _allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }
}

File 1 of 6: Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @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) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://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"
        );

        (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"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 3 of 6: Context.sol
// SPDX-License-Identifier: MIT

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 4 of 6: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Context.sol";

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 5 of 6: SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

File 6 of 6: Strings.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length)
        internal
        pure
        returns (string memory)
    {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

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":"_address","type":"address"}],"name":"addManager","outputs":[],"stateMutability":"nonpayable","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":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"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":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"}]

608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805180820190915260148082527f416e6772792046726f67732046616d69676c69610000000000000000000000006020909201918252610096916003916100d4565b506040805180820190915260038082526220a32360e91b60209092019182526100c1916004916100d4565b506005805460ff191660121790556101a8565b8280546100e09061016d565b90600052602060002090601f0160209004810192826101025760008555610148565b82601f1061011b57805160ff1916838001178555610148565b82800160010185558215610148579182015b8281111561014857825182559160200191906001019061012d565b50610154929150610158565b5090565b5b808211156101545760008155600101610159565b600181811c9082168061018157607f821691505b602082108114156101a257634e487b7160e01b600052602260045260246000fd5b50919050565b610ba580620001b86000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063a9059cbb11610071578063a9059cbb14610238578063ac18de431461024b578063dd62ed3e1461025e578063f2fde38b14610297578063fdff9b4d146102aa57600080fd5b8063715018a6146101fa5780638da5cb5b1461020257806395d89b411461021d5780639dc29fac1461022557600080fd5b80632d06177a116100e95780632d06177a14610181578063313ce5671461019657806340c10f19146101ab57806342966c68146101be57806370a08231146101d157600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd1461016e575b600080fd5b6101236102cd565b6040516101309190610a08565b60405180910390f35b61014c6101473660046109c5565b61035f565b6040519015158152602001610130565b6006545b604051908152602001610130565b61014c61017c366004610989565b610375565b61019461018f36600461093b565b6103c3565b005b60055460405160ff9091168152602001610130565b6101946101b93660046109c5565b61041a565b6101946101cc3660046109ef565b61045c565b6101606101df36600461093b565b6001600160a01b031660009081526001602052604090205490565b610194610469565b6000546040516001600160a01b039091168152602001610130565b6101236104dd565b6101946102333660046109c5565b6104ec565b61014c6102463660046109c5565b61052a565b61019461025936600461093b565b610537565b61016061026c366004610956565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101946102a536600461093b565b610582565b61014c6102b836600461093b565b60076020526000908152604090205460ff1681565b6060600380546102dc90610b1e565b80601f016020809104026020016040519081016040528092919081815260200182805461030890610b1e565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b600061036c33848461066c565b50600192915050565b6001600160a01b03831660009081526002602090815260408083203380855292528220546103ae9186916103a990866106f4565b61066c565b6103b9848484610707565b5060019392505050565b6000546001600160a01b031633146103f65760405162461bcd60e51b81526004016103ed90610aba565b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b3360009081526007602052604090205460ff16151560011461044e5760405162461bcd60e51b81526004016103ed90610a5d565b61045882826107d3565b5050565b6104663382610876565b50565b6000546001600160a01b031633146104935760405162461bcd60e51b81526004016103ed90610aba565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600480546102dc90610b1e565b3360009081526007602052604090205460ff1615156001146105205760405162461bcd60e51b81526004016103ed90610a5d565b6104588282610876565b600061036c338484610707565b6000546001600160a01b031633146105615760405162461bcd60e51b81526004016103ed90610aba565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146105ac5760405162461bcd60e51b81526004016103ed90610aba565b6001600160a01b0381166106115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661067f57600080fd5b6001600160a01b03821661069257600080fd5b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107008284610b07565b9392505050565b6001600160a01b03831661071a57600080fd5b6001600160a01b03821661072d57600080fd5b6001600160a01b03831660009081526001602052604090205461075090826106f4565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461077f9082610913565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106e79085815260200190565b6001600160a01b0382166107e657600080fd5b6006546107f39082610913565b6006556001600160a01b0382166000908152600160205260409020546108199082610913565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061086a9085815260200190565b60405180910390a35050565b6001600160a01b03821661088957600080fd5b6001600160a01b0382166000908152600160205260409020546108ac90826106f4565b6001600160a01b0383166000908152600160205260409020556006546108d290826106f4565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161086a565b60006107008284610aef565b80356001600160a01b038116811461093657600080fd5b919050565b60006020828403121561094d57600080fd5b6107008261091f565b6000806040838503121561096957600080fd5b6109728361091f565b91506109806020840161091f565b90509250929050565b60008060006060848603121561099e57600080fd5b6109a78461091f565b92506109b56020850161091f565b9150604084013590509250925092565b600080604083850312156109d857600080fd5b6109e18361091f565b946020939093013593505050565b600060208284031215610a0157600080fd5b5035919050565b600060208083528351808285015260005b81811015610a3557858101830151858201604001528201610a19565b81811115610a47576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526039908201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f206960408201527f6e74657261637420776974682074686520636f6e747261637400000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610b0257610b02610b59565b500190565b600082821015610b1957610b19610b59565b500390565b600181811c90821680610b3257607f821691505b60208210811415610b5357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220fa8cc18ee6821f65ef6909f7519bb718b3808488e4b6d9e49f3a17a774cb6d8864736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063a9059cbb11610071578063a9059cbb14610238578063ac18de431461024b578063dd62ed3e1461025e578063f2fde38b14610297578063fdff9b4d146102aa57600080fd5b8063715018a6146101fa5780638da5cb5b1461020257806395d89b411461021d5780639dc29fac1461022557600080fd5b80632d06177a116100e95780632d06177a14610181578063313ce5671461019657806340c10f19146101ab57806342966c68146101be57806370a08231146101d157600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd1461016e575b600080fd5b6101236102cd565b6040516101309190610a08565b60405180910390f35b61014c6101473660046109c5565b61035f565b6040519015158152602001610130565b6006545b604051908152602001610130565b61014c61017c366004610989565b610375565b61019461018f36600461093b565b6103c3565b005b60055460405160ff9091168152602001610130565b6101946101b93660046109c5565b61041a565b6101946101cc3660046109ef565b61045c565b6101606101df36600461093b565b6001600160a01b031660009081526001602052604090205490565b610194610469565b6000546040516001600160a01b039091168152602001610130565b6101236104dd565b6101946102333660046109c5565b6104ec565b61014c6102463660046109c5565b61052a565b61019461025936600461093b565b610537565b61016061026c366004610956565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101946102a536600461093b565b610582565b61014c6102b836600461093b565b60076020526000908152604090205460ff1681565b6060600380546102dc90610b1e565b80601f016020809104026020016040519081016040528092919081815260200182805461030890610b1e565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b600061036c33848461066c565b50600192915050565b6001600160a01b03831660009081526002602090815260408083203380855292528220546103ae9186916103a990866106f4565b61066c565b6103b9848484610707565b5060019392505050565b6000546001600160a01b031633146103f65760405162461bcd60e51b81526004016103ed90610aba565b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b3360009081526007602052604090205460ff16151560011461044e5760405162461bcd60e51b81526004016103ed90610a5d565b61045882826107d3565b5050565b6104663382610876565b50565b6000546001600160a01b031633146104935760405162461bcd60e51b81526004016103ed90610aba565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600480546102dc90610b1e565b3360009081526007602052604090205460ff1615156001146105205760405162461bcd60e51b81526004016103ed90610a5d565b6104588282610876565b600061036c338484610707565b6000546001600160a01b031633146105615760405162461bcd60e51b81526004016103ed90610aba565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146105ac5760405162461bcd60e51b81526004016103ed90610aba565b6001600160a01b0381166106115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661067f57600080fd5b6001600160a01b03821661069257600080fd5b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107008284610b07565b9392505050565b6001600160a01b03831661071a57600080fd5b6001600160a01b03821661072d57600080fd5b6001600160a01b03831660009081526001602052604090205461075090826106f4565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461077f9082610913565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106e79085815260200190565b6001600160a01b0382166107e657600080fd5b6006546107f39082610913565b6006556001600160a01b0382166000908152600160205260409020546108199082610913565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061086a9085815260200190565b60405180910390a35050565b6001600160a01b03821661088957600080fd5b6001600160a01b0382166000908152600160205260409020546108ac90826106f4565b6001600160a01b0383166000908152600160205260409020556006546108d290826106f4565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161086a565b60006107008284610aef565b80356001600160a01b038116811461093657600080fd5b919050565b60006020828403121561094d57600080fd5b6107008261091f565b6000806040838503121561096957600080fd5b6109728361091f565b91506109806020840161091f565b90509250929050565b60008060006060848603121561099e57600080fd5b6109a78461091f565b92506109b56020850161091f565b9150604084013590509250925092565b600080604083850312156109d857600080fd5b6109e18361091f565b946020939093013593505050565b600060208284031215610a0157600080fd5b5035919050565b600060208083528351808285015260005b81811015610a3557858101830151858201604001528201610a19565b81811115610a47576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526039908201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f206960408201527f6e74657261637420776974682074686520636f6e747261637400000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610b0257610b02610b59565b500190565b600082821015610b1957610b19610b59565b500390565b600181811c90821680610b3257607f821691505b60208210811415610b5357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220fa8cc18ee6821f65ef6909f7519bb718b3808488e4b6d9e49f3a17a774cb6d8864736f6c63430008070033

Deployed Bytecode Sourcemap

108:3981:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1777:150;;;;;;:::i;:::-;;:::i;:::-;;;1798:14:6;;1791:22;1773:41;;1761:2;1746:18;1777:150:0;1633:187:6;1240:89:0;1310:12;;1240:89;;;3767:25:6;;;3755:2;3740:18;1240:89:0;3621:177:6;1933:333:0;;;;;;:::i;:::-;;:::i;761:99::-;;;;;;:::i;:::-;;:::i;:::-;;1153:81;1218:9;;1153:81;;1218:9;;;;3945:36:6;;3933:2;3918:18;1153:81:0;3803:184:6;2663:225:0;;;;;;:::i;:::-;;:::i;3417:81::-;;;;;;:::i;:::-;;:::i;1335:108::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:18:0;1392:7;1418:18;;;:9;:18;;;;;;;1335:108;1715:145:3;;;:::i;1083:85::-;1129:7;1155:6;1083:85;;-1:-1:-1;;;;;1155:6:3;;;1571:51:6;;1559:2;1544:18;1083:85:3;1425:203:6;1062:85:0;;;:::i;3180:231::-;;;;;;:::i;:::-;;:::i;1449:156::-;;;;;;:::i;:::-;;:::i;866:103::-;;;;;;:::i;:::-;;:::i;1611:160::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1737:18:0;;;1707:7;1737:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1611:160;2009:274:3;;;;;;:::i;:::-;;:::i;407:40:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;975:81;1012:13;1044:5;1037:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:81;:::o;1777:150::-;1843:4;1859:39;666:10:2;1882:7:0;1891:6;1859:8;:39::i;:::-;-1:-1:-1;1916:4:0;1777:150;;;;:::o;1933:333::-;-1:-1:-1;;;;;2136:19:0;;2052:4;2136:19;;;:11;:19;;;;;;;;666:10:2;2136:33:0;;;;;;;;2068:123;;2090:6;;2136:45;;2174:6;2136:37;:45::i;:::-;2068:8;:123::i;:::-;2201:36;2211:6;2219:9;2230:6;2201:9;:36::i;:::-;-1:-1:-1;2255:4:0;1933:333;;;;;:::o;761:99::-;1129:7:3;1155:6;-1:-1:-1;;;;;1155:6:3;666:10:2;1295:23:3;1287:68;;;;-1:-1:-1;;;1287:68:3;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;828:18:0::1;;::::0;;;:8:::1;:18;::::0;;;;:25;;-1:-1:-1;;828:25:0::1;849:4;828:25;::::0;;761:99::o;2663:225::-;2752:10;2743:20;;;;:8;:20;;;;;;;;:28;;:20;:28;2722:132;;;;-1:-1:-1;;;2722:132:0;;;;;;;:::i;:::-;2864:17;2870:2;2874:6;2864:5;:17::i;:::-;2663:225;;:::o;3417:81::-;3466:25;3472:10;3484:6;3466:5;:25::i;:::-;3417:81;:::o;1715:145:3:-;1129:7;1155:6;-1:-1:-1;;;;;1155:6:3;666:10:2;1295:23:3;1287:68;;;;-1:-1:-1;;;1287:68:3;;;;;;;:::i;:::-;1821:1:::1;1805:6:::0;;1784:40:::1;::::0;-1:-1:-1;;;;;1805:6:3;;::::1;::::0;1784:40:::1;::::0;1821:1;;1784:40:::1;1851:1;1834:19:::0;;-1:-1:-1;;;;;;1834:19:3::1;::::0;;1715:145::o;1062:85:0:-;1101:13;1133:7;1126:14;;;;;:::i;3180:231::-;3273:10;3264:20;;;;:8;:20;;;;;;;;:28;;:20;:28;3243:132;;;;-1:-1:-1;;;3243:132:0;;;;;;;:::i;:::-;3385:19;3391:4;3397:6;3385:5;:19::i;1449:156::-;1518:4;1534:42;666:10:2;1558:9:0;1569:6;1534:9;:42::i;866:103::-;1129:7:3;1155:6;-1:-1:-1;;;;;1155:6:3;666:10:2;1295:23:3;1287:68;;;;-1:-1:-1;;;1287:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;936:18:0::1;957:5;936:18:::0;;;:8:::1;:18;::::0;;;;:26;;-1:-1:-1;;936:26:0::1;::::0;;866:103::o;2009:274:3:-;1129:7;1155:6;-1:-1:-1;;;;;1155:6:3;666:10:2;1295:23:3;1287:68;;;;-1:-1:-1;;;1287:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;2110:22:3;::::1;2089:107;;;::::0;-1:-1:-1;;;2089:107:3;;2629:2:6;2089:107:3::1;::::0;::::1;2611:21:6::0;2668:2;2648:18;;;2641:30;2707:34;2687:18;;;2680:62;-1:-1:-1;;;2758:18:6;;;2751:36;2804:19;;2089:107:3::1;2427:402:6::0;2089:107:3::1;2232:6;::::0;;2211:38:::1;::::0;-1:-1:-1;;;;;2211:38:3;;::::1;::::0;2232:6;::::1;::::0;2211:38:::1;::::0;::::1;2259:6;:17:::0;;-1:-1:-1;;;;;;2259:17:3::1;-1:-1:-1::0;;;;;2259:17:3;;;::::1;::::0;;;::::1;::::0;;2009:274::o;3790:297:0:-;-1:-1:-1;;;;;3921:21:0;;3913:30;;;;;;-1:-1:-1;;;;;3961:23:0;;3953:32;;;;;;-1:-1:-1;;;;;3996:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4048:32;;3767:25:6;;;4048:32:0;;3740:18:6;4048:32:0;;;;;;;;3790:297;;;:::o;3189:96:4:-;3247:7;3273:5;3277:1;3273;:5;:::i;:::-;3266:12;3189:96;-1:-1:-1;;;3189:96:4:o;2272:385:0:-;-1:-1:-1;;;;;2407:22:0;;2399:31;;;;;;-1:-1:-1;;;;;2448:25:0;;2440:34;;;;;;-1:-1:-1;;;;;2505:17:0;;;;;;:9;:17;;;;;;:29;;2527:6;2505:21;:29::i;:::-;-1:-1:-1;;;;;2485:17:0;;;;;;;:9;:17;;;;;;:49;;;;2567:20;;;;;;;:32;;2592:6;2567:24;:32::i;:::-;-1:-1:-1;;;;;2544:20:0;;;;;;;:9;:20;;;;;;;:55;;;;2615:35;;;;;;;;;;2643:6;3767:25:6;;3755:2;3740:18;;3621:177;2894:280:0;-1:-1:-1;;;;;2977:23:0;;2969:32;;;;;;3027:12;;:24;;3044:6;3027:16;:24::i;:::-;3012:12;:39;-1:-1:-1;;;;;3082:18:0;;;;;;:9;:18;;;;;;:30;;3105:6;3082:22;:30::i;:::-;-1:-1:-1;;;;;3061:18:0;;;;;;:9;:18;;;;;;:51;;;;3128:39;;3061:18;;;3128:39;;;;3160:6;3767:25:6;;3755:2;3740:18;;3621:177;3128:39:0;;;;;;;;2894:280;;:::o;3504:::-;-1:-1:-1;;;;;3587:23:0;;3579:32;;;;;;-1:-1:-1;;;;;3643:18:0;;;;;;:9;:18;;;;;;:30;;3666:6;3643:22;:30::i;:::-;-1:-1:-1;;;;;3622:18:0;;;;;;:9;:18;;;;;:51;3698:12;;:24;;3715:6;3698:16;:24::i;:::-;3683:12;:39;3738;;3767:25:6;;;3764:3:0;;-1:-1:-1;;;;;3738:39:0;;;;;3755:2:6;3740:18;3738:39:0;3621:177:6;2822:96:4;2880:7;2906:5;2910:1;2906;:5;:::i;14:173:6:-;82:20;;-1:-1:-1;;;;;131:31:6;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:254::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:52;;;1126:1;1123;1116:12;1078:52;1149:29;1168:9;1149:29;:::i;:::-;1139:39;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;981:254:6:o;1240:180::-;1299:6;1352:2;1340:9;1331:7;1327:23;1323:32;1320:52;;;1368:1;1365;1358:12;1320:52;-1:-1:-1;1391:23:6;;1240:180;-1:-1:-1;1240:180:6:o;1825:597::-;1937:4;1966:2;1995;1984:9;1977:21;2027:6;2021:13;2070:6;2065:2;2054:9;2050:18;2043:34;2095:1;2105:140;2119:6;2116:1;2113:13;2105:140;;;2214:14;;;2210:23;;2204:30;2180:17;;;2199:2;2176:26;2169:66;2134:10;;2105:140;;;2263:6;2260:1;2257:13;2254:91;;;2333:1;2328:2;2319:6;2308:9;2304:22;2300:31;2293:42;2254:91;-1:-1:-1;2406:2:6;2385:15;-1:-1:-1;;2381:29:6;2366:45;;;;2413:2;2362:54;;1825:597;-1:-1:-1;;;1825:597:6:o;2834:421::-;3036:2;3018:21;;;3075:2;3055:18;;;3048:30;3114:34;3109:2;3094:18;;3087:62;3185:27;3180:2;3165:18;;3158:55;3245:3;3230:19;;2834:421::o;3260:356::-;3462:2;3444:21;;;3481:18;;;3474:30;3540:34;3535:2;3520:18;;3513:62;3607:2;3592:18;;3260:356::o;3992:128::-;4032:3;4063:1;4059:6;4056:1;4053:13;4050:39;;;4069:18;;:::i;:::-;-1:-1:-1;4105:9:6;;3992:128::o;4125:125::-;4165:4;4193:1;4190;4187:8;4184:34;;;4198:18;;:::i;:::-;-1:-1:-1;4235:9:6;;4125:125::o;4255:380::-;4334:1;4330:12;;;;4377;;;4398:61;;4452:4;4444:6;4440:17;4430:27;;4398:61;4505:2;4497:6;4494:14;4474:18;4471:38;4468:161;;;4551:10;4546:3;4542:20;4539:1;4532:31;4586:4;4583:1;4576:15;4614:4;4611:1;4604:15;4468:161;;4255:380;;;:::o;4640:127::-;4701:10;4696:3;4692:20;4689:1;4682:31;4732:4;4729:1;4722:15;4756:4;4753:1;4746:15

Swarm Source

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