ETH Price: $2,942.33 (-0.52%)
Gas: 0.03 Gwei
 

Overview

Max Total Supply

100,000,000 BDOGE

Holders

115

Transfers

-
3

Market

Onchain Market Cap

-

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
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BattleDogeToken

Compiler Version
v0.8.33+commit.64118f21

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2026-01-06
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.33;

/*
    BattleDogeToken.sol (single file, no imports)

    Purpose:
    - Minimal, fixed-supply ERC-20 token for the BattleDoge ecosystem.
    - Uses OpenZeppelin Contracts v5.4.0 ERC20 logic embedded directly (no imports).

    Key Properties:
    - Name:    Battle Doge
    - Symbol:  BDOGE
    - Decimals: 18 (OpenZeppelin default)
    - Total supply: 100,000,000 * 1e18 (fully minted once, in the constructor)
    - Minting: one-time mint in constructor to deployer (msg.sender)
    - No Permit, no Ownable/admin surface, no token-level sales/airdrop logic
    - "Burn" is done by sink-transfer at the application layer (token does not implement burn())
    - Reject accidental ETH transfers via receive()/fallback()
      NOTE: no contract can fully prevent forced ETH via SELFDESTRUCT; this only blocks normal sends.

    Security stance:
    - Keep ERC-20 surface area small and familiar.
    - No privileged roles or upgrade hooks.
*/

/**
 * @dev Custom error used to revert if someone tries to send ETH to this token contract.
 * Using a custom error is cheaper than revert strings.
 */
error ETHNotAccepted();

/* ============ OpenZeppelin Contracts (v5.4.0) — embedded ============ */
/* Source basis: OpenZeppelin Contracts v5.4.0 ERC20 + dependencies. */

/**
 * @dev Provides information about the current execution context (msg.sender, msg.data).
 * In meta-transaction systems, msg.sender may differ from the account paying gas.
 * Here we keep it standard, but inheriting this matches OpenZeppelin's structure.
 */
abstract contract Context {
    /// @dev Returns the sender of the transaction (or the relayer in meta-tx contexts).
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    /// @dev Returns the full calldata of the transaction.
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    /**
     * @dev Used by some advanced meta-transaction patterns in OZ to strip context suffixes.
     * Default is zero; retained for compatibility with OZ's internal patterns.
     */
    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

/**
 * @dev Interface of the ERC-20 standard (EIP-20).
 * This is the minimal external surface: transfer, approve, allowance, transferFrom, balances, totalSupply.
 */
interface IERC20 {
    /// @dev Emitted when `value` tokens move from `from` to `to`.
    event Transfer(address indexed from, address indexed to, uint256 value);

    /// @dev Emitted when `owner` sets `spender` allowance to `value`.
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /// @dev Total token supply in existence.
    function totalSupply() external view returns (uint256);

    /// @dev Balance of a given account.
    function balanceOf(address account) external view returns (uint256);

    /// @dev Transfer tokens from caller to `to`.
    function transfer(address to, uint256 value) external returns (bool);

    /// @dev Allowance `spender` has from `owner`.
    function allowance(address owner, address spender) external view returns (uint256);

    /// @dev Approve `spender` to spend `value` from caller.
    function approve(address spender, uint256 value) external returns (bool);

    /// @dev Transfer tokens from `from` to `to` using allowance mechanism.
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

/**
 * @dev Optional metadata functions from the ERC-20 standard (name/symbol/decimals).
 */
interface IERC20Metadata is IERC20 {
    /// @dev Human-readable token name.
    function name() external view returns (string memory);

    /// @dev Human-readable token symbol.
    function symbol() external view returns (string memory);

    /// @dev Number of decimals used to get the user representation (commonly 18).
    function decimals() external view returns (uint8);
}

/**
 * @dev ERC-6093 custom errors for ERC-20 tokens (the ERC-20 subset only).
 * These are standardized error names used by OpenZeppelin v5.x for clear revert reasons.
 */
interface IERC20Errors {
    /// @dev Thrown when an account tries to transfer/burn more tokens than it owns.
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /// @dev Thrown when a transfer/burn is initiated from the zero address.
    error ERC20InvalidSender(address sender);

    /// @dev Thrown when a transfer/mint is directed to the zero address.
    error ERC20InvalidReceiver(address receiver);

    /// @dev Thrown when allowance is insufficient for transferFrom / spendAllowance.
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /// @dev Thrown when approve is attempted from the zero address.
    error ERC20InvalidApprover(address approver);

    /// @dev Thrown when approve is attempted to the zero address.
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev OpenZeppelin ERC20 implementation (v5.4.0).
 *
 * Notes:
 * - v5.x centralizes all balance/supply changes in `_update(from, to, value)`:
 *   - mint:  from = address(0)
 *   - burn:  to   = address(0)
 *   - transfer: neither is zero
 * - This contract intentionally does NOT include EIP-2612 Permit or Ownable.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    /// @dev Mapping from account to balance.
    mapping(address account => uint256) private _balances;

    /// @dev Mapping owner => (spender => allowance).
    mapping(address account => mapping(address spender => uint256)) private _allowances;

    /// @dev Total token supply tracked by the contract.
    uint256 private _totalSupply;

    /// @dev Token name and symbol (immutable after construction).
    string private _name;
    string private _symbol;

    /**
     * @dev Sets token name and symbol at deployment time.
     * The derived token contract calls this via `ERC20("Name","SYM")`.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /// @inheritdoc IERC20Metadata
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /// @inheritdoc IERC20Metadata
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @inheritdoc IERC20Metadata
     */
     /*
     * OpenZeppelin default is 18, matching the common ERC-20 convention.
     */
    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    /// @inheritdoc IERC20
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /// @inheritdoc IERC20
    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    /**
     * @inheritdoc IERC20
     */
     /*
     * Moves `value` tokens from caller to `to`.
     * Returns true on success per ERC-20 convention.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

    /// @inheritdoc IERC20
    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @inheritdoc IERC20
     */
     /*
     * Sets allowance for `spender` to spend caller's tokens.
     */
    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    /**
     * @inheritdoc IERC20
     */
     /*
     * Spends allowance from `from` by caller (spender), then transfers to `to`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Internal transfer primitive.
     * Reverts if `from` or `to` is the zero address.
     * Actual balance/supply bookkeeping is performed in `_update`.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Central accounting hook for transfers/mints/burns.
     *
     * Cases:
     * - Mint: from == address(0), to != address(0)
     * - Burn: from != address(0), to == address(0)
     * - Transfer: from != address(0), to != address(0)
     *
     * Emits a Transfer event in all cases (including mint/burn), per ERC-20 conventions.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Mint path: increase total supply
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            // Transfer/Burn path: decrease `from` balance
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            // Burn path: reduce total supply
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            // Transfer/Mint path: increase `to` balance
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        // ERC-20 canonical event for all token movements.
        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates `value` tokens and assigns them to `account`.
     * Reverts if `account` is the zero address.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys `value` tokens from `account`, reducing total supply.
     * Reverts if `account` is the zero address.
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Internal approve with default behavior: emits Approval event.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Internal approve primitive.
     * - `emitEvent` is used by `_spendAllowance` to avoid emitting Approval on transferFrom,
     *   saving gas and matching OZ v5 behavior.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[owner][spender] = value;

        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    /**
     * @dev Spends `value` from the allowance of `owner` toward `spender`.
     *
     * Special case:
     * - If allowance is `type(uint256).max`, it is treated as "infinite" and not decreased.
     */
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                // Update allowance without emitting Approval to save gas.
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

/* ======================= BattleDogeToken ======================= */

/**
 * @title BattleDogeToken
 * @dev Fixed-supply ERC-20 token for the BattleDoge ecosystem.
 *
 * Deployment notes:
 * - Deployer address receives the full supply.
 * - There are no administrative functions after deployment.
 * - ETH sends are rejected (receive/fallback revert).
 */
contract BattleDogeToken is ERC20 {
    /**
     * @dev Total supply constant (100M tokens with 18 decimals).
     * Declared as a compile-time constant so it cannot be changed.
     */
    uint256 public constant TOTAL_SUPPLY = 100_000_000 * 1e18;

    /**
     * @dev Initializes the token name/symbol and mints the full supply to the deployer.
     */
    constructor() ERC20("Battle Doge", "BDOGE") {
        _mint(_msgSender(), TOTAL_SUPPLY);
    }

    /**
     * @dev Reject direct ETH transfers.
     * Users should not send ETH to an ERC-20 token contract.
     */
    receive() external payable {
        revert ETHNotAccepted();
    }

    /**
     * @dev Reject unknown calls and ETH transfers to non-existent functions.
     */
    fallback() external payable {
        revert ETHNotAccepted();
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ETHNotAccepted","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561000f575f5ffd5b506040518060400160405280600b81526020017f426174746c6520446f67650000000000000000000000000000000000000000008152506040518060400160405280600581526020017f42444f4745000000000000000000000000000000000000000000000000000000815250816003908161008b91906105be565b50806004908161009b91906105be565b5050506100c66100af6100cb60201b60201c565b6a52b7d2dcc80cd2e40000006100d260201b60201c565b6107a2565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610142575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161013991906106cc565b60405180910390fd5b6101535f838361015760201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101a7578060025f82825461019b9190610712565b92505081905550610275565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610230578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161022793929190610754565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102bc578060025f8282540392505081905550610306565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103639190610789565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103eb57607f821691505b6020821081036103fe576103fd6103a7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610425565b61046a8683610425565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104ae6104a96104a484610482565b61048b565b610482565b9050919050565b5f819050919050565b6104c783610494565b6104db6104d3826104b5565b848454610431565b825550505050565b5f5f905090565b6104f26104e3565b6104fd8184846104be565b505050565b5f5b82811015610523576105185f8284016104ea565b600181019050610504565b505050565b601f82111561057657828211156105755761054281610404565b61054b83610416565b61055485610416565b6020861015610561575f90505b80830161057082840382610502565b505050505b5b505050565b5f82821c905092915050565b5f6105965f198460080261057b565b1980831691505092915050565b5f6105ae8383610587565b9150826002028217905092915050565b6105c782610370565b67ffffffffffffffff8111156105e0576105df61037a565b5b6105ea82546103d4565b6105f5828285610528565b5f60209050601f831160018114610626575f8415610614578287015190505b61061e85826105a3565b865550610685565b601f19841661063486610404565b5f5b8281101561065b57848901518255600182019150602085019450602081019050610636565b868310156106785784890151610674601f891682610587565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b68261068d565b9050919050565b6106c6816106ac565b82525050565b5f6020820190506106df5f8301846106bd565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61071c82610482565b915061072783610482565b925082820190508082111561073f5761073e6106e5565b5b92915050565b61074e81610482565b82525050565b5f6060820190506107675f8301866106bd565b6107746020830185610745565b6107816040830184610745565b949350505050565b5f60208201905061079c5f830184610745565b92915050565b610eef806107af5f395ff3fe608060405260043610610094575f3560e01c806370a082311161005857806370a08231146101f3578063902d55a51461022f57806395d89b4114610259578063a9059cbb14610283578063dd62ed3e146102bf576100cb565b806306fdde03146100fd578063095ea7b31461012757806318160ddd1461016357806323b872dd1461018d578063313ce567146101c9576100cb565b366100cb576040517f1231ae4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1231ae4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610108575f5ffd5b506101116102fb565b60405161011e9190610b68565b60405180910390f35b348015610132575f5ffd5b5061014d60048036038101906101489190610c19565b61038b565b60405161015a9190610c71565b60405180910390f35b34801561016e575f5ffd5b506101776103ad565b6040516101849190610c99565b60405180910390f35b348015610198575f5ffd5b506101b360048036038101906101ae9190610cb2565b6103b6565b6040516101c09190610c71565b60405180910390f35b3480156101d4575f5ffd5b506101dd6103e4565b6040516101ea9190610d1d565b60405180910390f35b3480156101fe575f5ffd5b5061021960048036038101906102149190610d36565b6103ec565b6040516102269190610c99565b60405180910390f35b34801561023a575f5ffd5b50610243610431565b6040516102509190610c99565b60405180910390f35b348015610264575f5ffd5b5061026d610440565b60405161027a9190610b68565b60405180910390f35b34801561028e575f5ffd5b506102a960048036038101906102a49190610c19565b6104d0565b6040516102b69190610c71565b60405180910390f35b3480156102ca575f5ffd5b506102e560048036038101906102e09190610d61565b6104f2565b6040516102f29190610c99565b60405180910390f35b60606003805461030a90610dcc565b80601f016020809104026020016040519081016040528092919081815260200182805461033690610dcc565b80156103815780601f1061035857610100808354040283529160200191610381565b820191905f5260205f20905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b5f5f610395610574565b90506103a281858561057b565b600191505092915050565b5f600254905090565b5f5f6103c0610574565b90506103cd85828561058d565b6103d8858585610620565b60019150509392505050565b5f6012905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6a52b7d2dcc80cd2e400000081565b60606004805461044f90610dcc565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610dcc565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050505050905090565b5f5f6104da610574565b90506104e7818585610620565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6105888383836001610710565b505050565b5f61059884846104f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561061a578181101561060b578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161060293929190610e0b565b60405180910390fd5b61061984848484035f610710565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610690575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106879190610e40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610700575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106f79190610e40565b60405180910390fd5b61070b8383836108df565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610780575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016107779190610e40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107f0575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107e79190610e40565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108d9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108d09190610c99565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361092f578060025f8282546109239190610e86565b925050819055506109fd565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156109b8578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016109af93929190610e0b565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a44578060025f8282540392505081905550610a8e565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aeb9190610c99565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610b3a82610af8565b610b448185610b02565b9350610b54818560208601610b12565b610b5d81610b20565b840191505092915050565b5f6020820190508181035f830152610b808184610b30565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bb582610b8c565b9050919050565b610bc581610bab565b8114610bcf575f5ffd5b50565b5f81359050610be081610bbc565b92915050565b5f819050919050565b610bf881610be6565b8114610c02575f5ffd5b50565b5f81359050610c1381610bef565b92915050565b5f5f60408385031215610c2f57610c2e610b88565b5b5f610c3c85828601610bd2565b9250506020610c4d85828601610c05565b9150509250929050565b5f8115159050919050565b610c6b81610c57565b82525050565b5f602082019050610c845f830184610c62565b92915050565b610c9381610be6565b82525050565b5f602082019050610cac5f830184610c8a565b92915050565b5f5f5f60608486031215610cc957610cc8610b88565b5b5f610cd686828701610bd2565b9350506020610ce786828701610bd2565b9250506040610cf886828701610c05565b9150509250925092565b5f60ff82169050919050565b610d1781610d02565b82525050565b5f602082019050610d305f830184610d0e565b92915050565b5f60208284031215610d4b57610d4a610b88565b5b5f610d5884828501610bd2565b91505092915050565b5f5f60408385031215610d7757610d76610b88565b5b5f610d8485828601610bd2565b9250506020610d9585828601610bd2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610de357607f821691505b602082108103610df657610df5610d9f565b5b50919050565b610e0581610bab565b82525050565b5f606082019050610e1e5f830186610dfc565b610e2b6020830185610c8a565b610e386040830184610c8a565b949350505050565b5f602082019050610e535f830184610dfc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e9082610be6565b9150610e9b83610be6565b9250828201905080821115610eb357610eb2610e59565b5b9291505056fea264697066735822122060332ca42d782e6e16a0c9e8b456a894a0e09fcc1733e10fbb1bf2c7a4cd402864736f6c63430008210033

Deployed Bytecode

0x608060405260043610610094575f3560e01c806370a082311161005857806370a08231146101f3578063902d55a51461022f57806395d89b4114610259578063a9059cbb14610283578063dd62ed3e146102bf576100cb565b806306fdde03146100fd578063095ea7b31461012757806318160ddd1461016357806323b872dd1461018d578063313ce567146101c9576100cb565b366100cb576040517f1231ae4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1231ae4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610108575f5ffd5b506101116102fb565b60405161011e9190610b68565b60405180910390f35b348015610132575f5ffd5b5061014d60048036038101906101489190610c19565b61038b565b60405161015a9190610c71565b60405180910390f35b34801561016e575f5ffd5b506101776103ad565b6040516101849190610c99565b60405180910390f35b348015610198575f5ffd5b506101b360048036038101906101ae9190610cb2565b6103b6565b6040516101c09190610c71565b60405180910390f35b3480156101d4575f5ffd5b506101dd6103e4565b6040516101ea9190610d1d565b60405180910390f35b3480156101fe575f5ffd5b5061021960048036038101906102149190610d36565b6103ec565b6040516102269190610c99565b60405180910390f35b34801561023a575f5ffd5b50610243610431565b6040516102509190610c99565b60405180910390f35b348015610264575f5ffd5b5061026d610440565b60405161027a9190610b68565b60405180910390f35b34801561028e575f5ffd5b506102a960048036038101906102a49190610c19565b6104d0565b6040516102b69190610c71565b60405180910390f35b3480156102ca575f5ffd5b506102e560048036038101906102e09190610d61565b6104f2565b6040516102f29190610c99565b60405180910390f35b60606003805461030a90610dcc565b80601f016020809104026020016040519081016040528092919081815260200182805461033690610dcc565b80156103815780601f1061035857610100808354040283529160200191610381565b820191905f5260205f20905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b5f5f610395610574565b90506103a281858561057b565b600191505092915050565b5f600254905090565b5f5f6103c0610574565b90506103cd85828561058d565b6103d8858585610620565b60019150509392505050565b5f6012905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6a52b7d2dcc80cd2e400000081565b60606004805461044f90610dcc565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610dcc565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050505050905090565b5f5f6104da610574565b90506104e7818585610620565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6105888383836001610710565b505050565b5f61059884846104f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561061a578181101561060b578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161060293929190610e0b565b60405180910390fd5b61061984848484035f610710565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610690575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106879190610e40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610700575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106f79190610e40565b60405180910390fd5b61070b8383836108df565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610780575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016107779190610e40565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107f0575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107e79190610e40565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108d9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108d09190610c99565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361092f578060025f8282546109239190610e86565b925050819055506109fd565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156109b8578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016109af93929190610e0b565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a44578060025f8282540392505081905550610a8e565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aeb9190610c99565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610b3a82610af8565b610b448185610b02565b9350610b54818560208601610b12565b610b5d81610b20565b840191505092915050565b5f6020820190508181035f830152610b808184610b30565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bb582610b8c565b9050919050565b610bc581610bab565b8114610bcf575f5ffd5b50565b5f81359050610be081610bbc565b92915050565b5f819050919050565b610bf881610be6565b8114610c02575f5ffd5b50565b5f81359050610c1381610bef565b92915050565b5f5f60408385031215610c2f57610c2e610b88565b5b5f610c3c85828601610bd2565b9250506020610c4d85828601610c05565b9150509250929050565b5f8115159050919050565b610c6b81610c57565b82525050565b5f602082019050610c845f830184610c62565b92915050565b610c9381610be6565b82525050565b5f602082019050610cac5f830184610c8a565b92915050565b5f5f5f60608486031215610cc957610cc8610b88565b5b5f610cd686828701610bd2565b9350506020610ce786828701610bd2565b9250506040610cf886828701610c05565b9150509250925092565b5f60ff82169050919050565b610d1781610d02565b82525050565b5f602082019050610d305f830184610d0e565b92915050565b5f60208284031215610d4b57610d4a610b88565b5b5f610d5884828501610bd2565b91505092915050565b5f5f60408385031215610d7757610d76610b88565b5b5f610d8485828601610bd2565b9250506020610d9585828601610bd2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610de357607f821691505b602082108103610df657610df5610d9f565b5b50919050565b610e0581610bab565b82525050565b5f606082019050610e1e5f830186610dfc565b610e2b6020830185610c8a565b610e386040830184610c8a565b949350505050565b5f602082019050610e535f830184610dfc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e9082610be6565b9150610e9b83610be6565b9250828201905080821115610eb357610eb2610e59565b5b9291505056fea264697066735822122060332ca42d782e6e16a0c9e8b456a894a0e09fcc1733e10fbb1bf2c7a4cd402864736f6c63430008210033

Deployed Bytecode Sourcemap

13469:843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14110:16;;;;;;;;;;;;;;13469:843;14285:16;;;;;;;;;;;;;;6394:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7821:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6898:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8164:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6778:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7033:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13664:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6529:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7327:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7545:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6394:91;6439:13;6472:5;6465:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6394:91;:::o;7821:190::-;7894:4;7911:13;7927:12;:10;:12::i;:::-;7911:28;;7950:31;7959:5;7966:7;7975:5;7950:8;:31::i;:::-;7999:4;7992:11;;;7821:190;;;;:::o;6898:99::-;6950:7;6977:12;;6970:19;;6898:99;:::o;8164:249::-;8251:4;8268:15;8286:12;:10;:12::i;:::-;8268:30;;8309:37;8325:4;8331:7;8340:5;8309:15;:37::i;:::-;8357:26;8367:4;8373:2;8377:5;8357:9;:26::i;:::-;8401:4;8394:11;;;8164:249;;;;;:::o;6778:84::-;6827:5;6852:2;6845:9;;6778:84;:::o;7033:118::-;7098:7;7125:9;:18;7135:7;7125:18;;;;;;;;;;;;;;;;7118:25;;7033:118;;;:::o;13664:57::-;13703:18;13664:57;:::o;6529:95::-;6576:13;6609:7;6602:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6529:95;:::o;7327:182::-;7396:4;7413:13;7429:12;:10;:12::i;:::-;7413:28;;7452:27;7462:5;7469:2;7473:5;7452:9;:27::i;:::-;7497:4;7490:11;;;7327:182;;;;:::o;7545:142::-;7625:7;7652:11;:18;7664:5;7652:18;;;;;;;;;;;;;;;:27;7671:7;7652:27;;;;;;;;;;;;;;;;7645:34;;7545:142;;;;:::o;1754:98::-;1807:7;1834:10;1827:17;;1754:98;:::o;11517:130::-;11602:37;11611:5;11618:7;11627:5;11634:4;11602:8;:37::i;:::-;11517:130;;;:::o;12532:562::-;12632:24;12659:25;12669:5;12676:7;12659:9;:25::i;:::-;12632:52;;12718:17;12699:16;:36;12695:392;;;12775:5;12756:16;:24;12752:132;;;12835:7;12844:16;12862:5;12808:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;12752:132;13003:57;13012:5;13019:7;13047:5;13028:16;:24;13054:5;13003:8;:57::i;:::-;12695:392;12621:473;12532:562;;;:::o;8605:308::-;8705:1;8689:18;;:4;:18;;;8685:88;;8758:1;8731:30;;;;;;;;;;;:::i;:::-;;;;;;;;8685:88;8801:1;8787:16;;:2;:16;;;8783:88;;8856:1;8827:32;;;;;;;;;;;:::i;:::-;;;;;;;;8783:88;8881:24;8889:4;8895:2;8899:5;8881:7;:24::i;:::-;8605:308;;;:::o;11859:447::-;11989:1;11972:19;;:5;:19;;;11968:91;;12044:1;12015:32;;;;;;;;;;;:::i;:::-;;;;;;;;11968:91;12092:1;12073:21;;:7;:21;;;12069:92;;12146:1;12118:31;;;;;;;;;;;:::i;:::-;;;;;;;;12069:92;12203:5;12173:11;:18;12185:5;12173:18;;;;;;;;;;;;;;;:27;12192:7;12173:27;;;;;;;;;;;;;;;:35;;;;12225:9;12221:78;;;12272:7;12256:31;;12265:5;12256:31;;;12281:5;12256:31;;;;;;:::i;:::-;;;;;;;;12221:78;11859:447;;;;:::o;9288:1409::-;9394:1;9378:18;;:4;:18;;;9374:661;;9581:5;9565:12;;:21;;;;;;;:::i;:::-;;;;;;;;9374:661;;;9679:19;9701:9;:15;9711:4;9701:15;;;;;;;;;;;;;;;;9679:37;;9749:5;9735:11;:19;9731:117;;;9807:4;9813:11;9826:5;9782:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;9731:117;10003:5;9989:11;:19;9971:9;:15;9981:4;9971:15;;;;;;;;;;;;;;;:37;;;;9604:431;9374:661;10065:1;10051:16;;:2;:16;;;10047:540;;10280:5;10264:12;;:21;;;;;;;;;;;10047:540;;;10555:5;10538:9;:13;10548:2;10538:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;10047:540;10679:2;10664:25;;10673:4;10664:25;;;10683:5;10664:25;;;;;;:::i;:::-;;;;;;;;9288:1409;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:474::-;5149:6;5157;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5459:2;5485:53;5530:7;5521:6;5510:9;5506:22;5485:53;:::i;:::-;5475:63;;5430:118;5081:474;;;;;:::o;5561:180::-;5609:77;5606:1;5599:88;5706:4;5703:1;5696:15;5730:4;5727:1;5720:15;5747:320;5791:6;5828:1;5822:4;5818:12;5808:22;;5875:1;5869:4;5865:12;5896:18;5886:81;;5952:4;5944:6;5940:17;5930:27;;5886:81;6014:2;6006:6;6003:14;5983:18;5980:38;5977:84;;6033:18;;:::i;:::-;5977:84;5798:269;5747:320;;;:::o;6073:118::-;6160:24;6178:5;6160:24;:::i;:::-;6155:3;6148:37;6073:118;;:::o;6197:442::-;6346:4;6384:2;6373:9;6369:18;6361:26;;6397:71;6465:1;6454:9;6450:17;6441:6;6397:71;:::i;:::-;6478:72;6546:2;6535:9;6531:18;6522:6;6478:72;:::i;:::-;6560;6628:2;6617:9;6613:18;6604:6;6560:72;:::i;:::-;6197:442;;;;;;:::o;6645:222::-;6738:4;6776:2;6765:9;6761:18;6753:26;;6789:71;6857:1;6846:9;6842:17;6833:6;6789:71;:::i;:::-;6645:222;;;;:::o;6873:180::-;6921:77;6918:1;6911:88;7018:4;7015:1;7008:15;7042:4;7039:1;7032:15;7059:191;7099:3;7118:20;7136:1;7118:20;:::i;:::-;7113:25;;7152:20;7170:1;7152:20;:::i;:::-;7147:25;;7195:1;7192;7188:9;7181:16;;7216:3;7213:1;7210:10;7207:36;;;7223:18;;:::i;:::-;7207:36;7059:191;;;;:::o

Swarm Source

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