ETH Price: $3,298.53 (-0.32%)

Token

Mirror Write Token (WRITE)
 

Overview

Max Total Supply

846 WRITE

Holders

970 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
row1e.eth
Balance
1 WRITE

Value
$0.00
0x5f3312Ad1FD3F166eF7448eDBd9c88183C333fC0
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Writing as usual. Publishing like never before.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MirrorWriteToken

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-05
*/

//SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.6.8;
pragma experimental ABIEncoderV2;

interface IMirrorWriteToken {
    function register(string calldata label, address owner) external;

    function registrationCost() external view returns (uint256);

    // ============ ERC20 Interface ============

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

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function nonces(address owner) external view returns (uint256);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

/**
 * @title MirrorWriteToken
 * @author MirrorXYZ
 *
 *  An ERC20 that grants access to the ENS namespace through a
 *  burn-and-register model.
 */
contract MirrorWriteToken is IMirrorWriteToken {
    using SafeMath for uint256;

    // ============ Immutable ERC20 Attributes ============

    string public constant override symbol = "WRITE";
    string public constant override name = "Mirror Write Token";
    uint8 public constant override decimals = 18;

    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH =
        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    bytes32 public immutable override DOMAIN_SEPARATOR;

    // ============ Immutable Registration Configuration ============

    uint256 internal constant REGISTRATION_COST = 1e18;

    // ============ Mutable Ownership Configuration ============

    address private _owner;
    /**
     * @dev Allows for two-step ownership transfer, whereby the next owner
     * needs to accept the ownership transfer explicitly.
     */
    address private _nextOwner;

    // ============ Mutable Registration Configuration ============

    bool public registrable = true;
    address public ensRegistrar;

    // ============ Mutable ERC20 Attributes ============

    uint256 public override totalSupply;
    mapping(address => uint256) public override balanceOf;
    mapping(address => mapping(address => uint256)) public override allowance;
    mapping(address => uint256) public override nonces;

    // ============ Events ============

    event Registered(string label, address owner);
    event Mint(address indexed to, uint256 amount);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    // ============ Modifiers ============

    modifier canRegister() {
        require(registrable, "MirrorWriteToken: registration is closed.");
        _;
    }

    modifier onlyOwner() {
        require(isOwner(), "MirrorWriteToken: caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(
            isNextOwner(),
            "MirrorWriteToken: current owner must set caller as next owner."
        );
        _;
    }

    // ============ Constructor ============

    constructor() public {
        uint256 chainId = _getChainId();

        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256(
                    "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                ),
                keccak256(bytes(name)),
                keccak256(bytes("1")),
                chainId,
                address(this)
            )
        );

        _owner = tx.origin;
        emit OwnershipTransferred(address(0), _owner);
    }

    // ============ Minting ============

    /**
     * @dev Function to mint tokens
     * @param to The address that will receive the minted tokens.
     * @param amount The amount of tokens to mint.
     */
    function mint(address to, uint256 amount) external onlyOwner {
        _mint(to, amount);

        emit Mint(to, amount);
    }

    // ============ Registration ============

    /**
     * @dev Returns the cost of registration in tokens with full decimals.
     */
    function registrationCost() external view override returns (uint256) {
        return REGISTRATION_COST;
    }

    /**
     * Burns the sender's invite tokens and registers an ENS given label to a given address.
     * @param label The user's ENS label, e.g. "dev" for dev.mirror.xyz.
     * @param owner The address that should own the label.
     */
    function register(string calldata label, address owner)
        external
        override
        canRegister
    {
        _burn(msg.sender, REGISTRATION_COST);

        emit Registered(label, owner);

        IMirrorENSRegistrar(ensRegistrar).register(label, owner);
    }

    // ============ Ownership ============

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Returns true if the caller is the next owner.
     */
    function isNextOwner() public view returns (bool) {
        return msg.sender == _nextOwner;
    }

    /**
     * @dev Allows a new account (`newOwner`) to accept ownership.
     * Can only be called by the current owner.
     */
    function transferOwnership(address nextOwner_) external onlyOwner {
        require(
            nextOwner_ != address(0),
            "MirrorWriteToken: next owner is the zero address."
        );

        _nextOwner = nextOwner_;
    }

    /**
     * @dev Cancel a transfer of ownership to a new account.
     * Can only be called by the current owner.
     */
    function cancelOwnershipTransfer() external onlyOwner {
        delete _nextOwner;
    }

    /**
     * @dev Transfers ownership of the contract to the caller.
     * Can only be called by a new potential owner set by the current owner.
     */
    function acceptOwnership() external onlyNextOwner {
        delete _nextOwner;

        emit OwnershipTransferred(_owner, msg.sender);

        _owner = msg.sender;
    }

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

    // ============ Configuration Management ============

    /**
     * Allows the owner to change the ENS Registrar address.
     */
    function setENSRegistrar(address ensRegistrar_) external onlyOwner {
        ensRegistrar = ensRegistrar_;
    }

    /**
     * Allows the owner to pause registration.
     */
    function setRegistrable(bool registrable_) external onlyOwner {
        registrable = registrable_;
    }

    // ============ ERC20 Spec ============

    function _mint(address to, uint256 value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint256 value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint256 value)
        external
        override
        returns (bool)
    {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint256 value)
        external
        override
        returns (bool)
    {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override returns (bool) {
        if (allowance[from][msg.sender] != uint256(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(
                value
            );
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external override {
        require(deadline >= block.timestamp, "MirrorWriteToken: EXPIRED");
        bytes32 digest =
            keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR,
                    keccak256(
                        abi.encode(
                            PERMIT_TYPEHASH,
                            owner,
                            spender,
                            value,
                            nonces[owner]++,
                            deadline
                        )
                    )
                )
            );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(
            recoveredAddress != address(0) && recoveredAddress == owner,
            "MirrorWriteToken: INVALID_SIGNATURE"
        );
        _approve(owner, spender, value);
    }

    function _getChainId() private pure returns (uint256 chainId) {
        assembly {
            chainId := chainid()
        }
    }
}

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }

    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
    }
}

interface IENSReverseRegistrar {
    function claim(address _owner) external returns (bytes32);

    function claimWithResolver(address _owner, address _resolver)
        external
        returns (bytes32);

    function setName(string calldata _name) external returns (bytes32);

    function node(address _addr) external pure returns (bytes32);
}

interface IMirrorENSRegistrar {
    function changeRootNodeOwner(address newOwner_) external;

    function register(string calldata label_, address owner_) external;

    function updateENSReverseRegistrar() external;
}

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":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"label","type":"string"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"Registered","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ensRegistrar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registrable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registrationCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ensRegistrar_","type":"address"}],"name":"setENSRegistrar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"registrable_","type":"bool"}],"name":"setRegistrable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040526001805460ff60a01b1916600160a01b17905534801561002357600080fd5b5060006100376001600160e01b0361014016565b905060405161004590610144565b604080519182900382208282018252601283527126b4b93937b9102bb934ba32902a37b5b2b760711b6020938401528151808301835260018152603160f81b9084015290516100dc927fe3c5fba7e7d499c24be0aa50ce0c02ee9d919f283b491ed7dc05b9dd6fe0c9e2917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016101ae565b60408051601f19818403018152908290528051602090910120608052600080546001600160a01b03191632178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506101da565b4690565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6080516113c56101f9600039806105e3528061094152506113c56000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063715018a6116100ee578063c2c589f011610097578063dc4a7f7f11610071578063dc4a7f7f1461031d578063dd62ed3e14610325578063ed459df214610338578063f2fde38b14610340576101ae565b8063c2c589f0146102e2578063d2d71d5c146102f7578063d505accf1461030a576101ae565b80638f32d59b116100c85780638f32d59b146102bf57806395d89b41146102c7578063a9059cbb146102cf576101ae565b8063715018a61461029c57806379ba5097146102a45780637ecebe00146102ac576101ae565b806330adf81f1161015b57806340c10f191161013557806340c10f191461025b57806343fb5f691461026e57806355a8deab1461028157806370a0823114610289576101ae565b806330adf81f14610236578063313ce5671461023e5780633644e51514610253576101ae565b80631e59c5291161018c5780631e59c5291461020657806323452b9c1461021b57806323b872dd14610223576101ae565b806306fdde03146101b3578063095ea7b3146101d157806318160ddd146101f1575b600080fd5b6101bb610353565b6040516101c891906110a0565b60405180910390f35b6101e46101df366004610ee6565b61038c565b6040516101c89190610ff9565b6101f96103a3565b6040516101c89190611004565b610219610214366004610f30565b6103a9565b005b6102196104bd565b6101e4610231366004610e33565b610500565b6101f96105b8565b6102466105dc565b6040516101c89190611369565b6101f96105e1565b610219610269366004610ee6565b610605565b61021961027c366004610f10565b610678565b6101e46106e6565b6101f9610297366004610ddd565b610707565b610219610719565b610219610794565b6101f96102ba366004610ddd565b61082e565b6101e4610840565b6101bb610851565b6101e46102dd366004610ee6565b61088a565b6102ea610897565b6040516101c89190610fe5565b610219610305366004610ddd565b6108a6565b610219610318366004610e73565b6108f9565b6101f9610a85565b6101f9610333366004610dff565b610a91565b6101e4610aae565b61021961034e366004610ddd565b610abf565b6040518060400160405280601281526020017f4d6972726f7220577269746520546f6b656e000000000000000000000000000081525081565b6000610399338484610b38565b5060015b92915050565b60035481565b60015474010000000000000000000000000000000000000000900460ff166103ec5760405162461bcd60e51b81526004016103e390611278565b60405180910390fd5b6103fe33670de0b6b3a7640000610ba0565b7f50f74ca45caac8020b8d891bd13ea5a2d79564986ee6a839f0d914896388322d8383836040516104319392919061105f565b60405180910390a16002546040517f1e59c5290000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631e59c529906104869086908690869060040161105f565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b50505050505050565b6104c5610840565b6104e15760405162461bcd60e51b81526004016103e39061130c565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6001600160a01b03831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146105a3576001600160a01b038416600090815260056020908152604080832033845290915290205461057e908363ffffffff610c4216565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6105ae848484610c65565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b7f000000000000000000000000000000000000000000000000000000000000000081565b61060d610840565b6106295760405162461bcd60e51b81526004016103e39061130c565b6106338282610d15565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161066c9190611004565b60405180910390a25050565b610680610840565b61069c5760405162461bcd60e51b81526004016103e39061130c565b6001805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015474010000000000000000000000000000000000000000900460ff1681565b60046020526000908152604090205481565b610721610840565b61073d5760405162461bcd60e51b81526004016103e39061130c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61079c610aae565b6107b85760405162461bcd60e51b81526004016103e39061112a565b6001805473ffffffffffffffffffffffffffffffffffffffff191690556000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b60066020526000908152604090205481565b6000546001600160a01b0316331490565b6040518060400160405280600581526020017f575249544500000000000000000000000000000000000000000000000000000081525081565b6000610399338484610c65565b6002546001600160a01b031681565b6108ae610840565b6108ca5760405162461bcd60e51b81526004016103e39061130c565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b428410156109195760405162461bcd60e51b81526004016103e3906112d5565b6001600160a01b038716600090815260066020908152604080832080546001810190915590517f000000000000000000000000000000000000000000000000000000000000000092610997927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290918d910161100d565b604051602081830303815290604052805190602001206040516020016109be929190610faf565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516109fb9493929190611041565b6020604051602081039080840390855afa158015610a1d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a535750886001600160a01b0316816001600160a01b0316145b610a6f5760405162461bcd60e51b81526004016103e39061121b565b610a7a898989610b38565b505050505050505050565b670de0b6b3a764000090565b600560209081526000928352604080842090915290825290205481565b6001546001600160a01b0316331490565b610ac7610840565b610ae35760405162461bcd60e51b81526004016103e39061130c565b6001600160a01b038116610b095760405162461bcd60e51b81526004016103e3906111be565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0380841660008181526005602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b93908590611004565b60405180910390a3505050565b6001600160a01b038216600090815260046020526040902054610bc9908263ffffffff610c4216565b6001600160a01b038316600090815260046020526040902055600354610bf5908263ffffffff610c4216565b6003556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b60405180910390a35050565b8082038281111561039d5760405162461bcd60e51b81526004016103e3906110f3565b6001600160a01b038316600090815260046020526040902054610c8e908263ffffffff610c4216565b6001600160a01b038085166000908152600460205260408082209390935590841681522054610cc3908263ffffffff610da316565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b93908590611004565b600354610d28908263ffffffff610da316565b6003556001600160a01b038216600090815260046020526040902054610d54908263ffffffff610da316565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b8082018281101561039d5760405162461bcd60e51b81526004016103e390611187565b80356001600160a01b038116811461039d57600080fd5b600060208284031215610dee578081fd5b610df88383610dc6565b9392505050565b60008060408385031215610e11578081fd5b610e1b8484610dc6565b9150610e2a8460208501610dc6565b90509250929050565b600080600060608486031215610e47578081fd5b8335610e5281611377565b92506020840135610e6281611377565b929592945050506040919091013590565b600080600080600080600060e0888a031215610e8d578283fd5b610e978989610dc6565b9650610ea68960208a01610dc6565b95506040880135945060608801359350608088013560ff81168114610ec9578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610ef8578182fd5b610f028484610dc6565b946020939093013593505050565b600060208284031215610f21578081fd5b81358015158114610df8578182fd5b600080600060408486031215610f44578283fd5b833567ffffffffffffffff80821115610f5b578485fd5b81860187601f820112610f6c578586fd5b8035925081831115610f7c578586fd5b876020848301011115610f8d578586fd5b602081019550505080925050610fa68560208601610dc6565b90509250925092565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000604082528360408301528385606084013780606085840101526060601f19601f86011683010190506001600160a01b0383166020830152949350505050565b6000602080835283518082850152825b818110156110cc578581018301518582016040015282016110b0565b818111156110dd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252603e908201527f4d6972726f725772697465546f6b656e3a2063757272656e74206f776e65722060408201527f6d757374207365742063616c6c6572206173206e657874206f776e65722e0000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526031908201527f4d6972726f725772697465546f6b656e3a206e657874206f776e65722069732060408201527f746865207a65726f20616464726573732e000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6972726f725772697465546f6b656e3a20494e56414c49445f5349474e415460408201527f5552450000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6972726f725772697465546f6b656e3a20726567697374726174696f6e206960408201527f7320636c6f7365642e0000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4d6972726f725772697465546f6b656e3a204558504952454400000000000000604082015260600190565b6020808252602a908201527f4d6972726f725772697465546f6b656e3a2063616c6c6572206973206e6f742060408201527f746865206f776e65722e00000000000000000000000000000000000000000000606082015260800190565b60ff91909116815260200190565b6001600160a01b038116811461138c57600080fd5b5056fea2646970667358221220c41de69de3ee288af73e59634ec6c1652fcaec8d705aea7b46223fac4a8be41f64736f6c63430006080033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063715018a6116100ee578063c2c589f011610097578063dc4a7f7f11610071578063dc4a7f7f1461031d578063dd62ed3e14610325578063ed459df214610338578063f2fde38b14610340576101ae565b8063c2c589f0146102e2578063d2d71d5c146102f7578063d505accf1461030a576101ae565b80638f32d59b116100c85780638f32d59b146102bf57806395d89b41146102c7578063a9059cbb146102cf576101ae565b8063715018a61461029c57806379ba5097146102a45780637ecebe00146102ac576101ae565b806330adf81f1161015b57806340c10f191161013557806340c10f191461025b57806343fb5f691461026e57806355a8deab1461028157806370a0823114610289576101ae565b806330adf81f14610236578063313ce5671461023e5780633644e51514610253576101ae565b80631e59c5291161018c5780631e59c5291461020657806323452b9c1461021b57806323b872dd14610223576101ae565b806306fdde03146101b3578063095ea7b3146101d157806318160ddd146101f1575b600080fd5b6101bb610353565b6040516101c891906110a0565b60405180910390f35b6101e46101df366004610ee6565b61038c565b6040516101c89190610ff9565b6101f96103a3565b6040516101c89190611004565b610219610214366004610f30565b6103a9565b005b6102196104bd565b6101e4610231366004610e33565b610500565b6101f96105b8565b6102466105dc565b6040516101c89190611369565b6101f96105e1565b610219610269366004610ee6565b610605565b61021961027c366004610f10565b610678565b6101e46106e6565b6101f9610297366004610ddd565b610707565b610219610719565b610219610794565b6101f96102ba366004610ddd565b61082e565b6101e4610840565b6101bb610851565b6101e46102dd366004610ee6565b61088a565b6102ea610897565b6040516101c89190610fe5565b610219610305366004610ddd565b6108a6565b610219610318366004610e73565b6108f9565b6101f9610a85565b6101f9610333366004610dff565b610a91565b6101e4610aae565b61021961034e366004610ddd565b610abf565b6040518060400160405280601281526020017f4d6972726f7220577269746520546f6b656e000000000000000000000000000081525081565b6000610399338484610b38565b5060015b92915050565b60035481565b60015474010000000000000000000000000000000000000000900460ff166103ec5760405162461bcd60e51b81526004016103e390611278565b60405180910390fd5b6103fe33670de0b6b3a7640000610ba0565b7f50f74ca45caac8020b8d891bd13ea5a2d79564986ee6a839f0d914896388322d8383836040516104319392919061105f565b60405180910390a16002546040517f1e59c5290000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631e59c529906104869086908690869060040161105f565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b50505050505050565b6104c5610840565b6104e15760405162461bcd60e51b81526004016103e39061130c565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6001600160a01b03831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146105a3576001600160a01b038416600090815260056020908152604080832033845290915290205461057e908363ffffffff610c4216565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6105ae848484610c65565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b7fbb3b02f70d0455a66f398878e70aa6ad732e2392117f0766ce164665eac3b02d81565b61060d610840565b6106295760405162461bcd60e51b81526004016103e39061130c565b6106338282610d15565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161066c9190611004565b60405180910390a25050565b610680610840565b61069c5760405162461bcd60e51b81526004016103e39061130c565b6001805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015474010000000000000000000000000000000000000000900460ff1681565b60046020526000908152604090205481565b610721610840565b61073d5760405162461bcd60e51b81526004016103e39061130c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61079c610aae565b6107b85760405162461bcd60e51b81526004016103e39061112a565b6001805473ffffffffffffffffffffffffffffffffffffffff191690556000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b60066020526000908152604090205481565b6000546001600160a01b0316331490565b6040518060400160405280600581526020017f575249544500000000000000000000000000000000000000000000000000000081525081565b6000610399338484610c65565b6002546001600160a01b031681565b6108ae610840565b6108ca5760405162461bcd60e51b81526004016103e39061130c565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b428410156109195760405162461bcd60e51b81526004016103e3906112d5565b6001600160a01b038716600090815260066020908152604080832080546001810190915590517fbb3b02f70d0455a66f398878e70aa6ad732e2392117f0766ce164665eac3b02d92610997927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290918d910161100d565b604051602081830303815290604052805190602001206040516020016109be929190610faf565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516109fb9493929190611041565b6020604051602081039080840390855afa158015610a1d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a535750886001600160a01b0316816001600160a01b0316145b610a6f5760405162461bcd60e51b81526004016103e39061121b565b610a7a898989610b38565b505050505050505050565b670de0b6b3a764000090565b600560209081526000928352604080842090915290825290205481565b6001546001600160a01b0316331490565b610ac7610840565b610ae35760405162461bcd60e51b81526004016103e39061130c565b6001600160a01b038116610b095760405162461bcd60e51b81526004016103e3906111be565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0380841660008181526005602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b93908590611004565b60405180910390a3505050565b6001600160a01b038216600090815260046020526040902054610bc9908263ffffffff610c4216565b6001600160a01b038316600090815260046020526040902055600354610bf5908263ffffffff610c4216565b6003556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b60405180910390a35050565b8082038281111561039d5760405162461bcd60e51b81526004016103e3906110f3565b6001600160a01b038316600090815260046020526040902054610c8e908263ffffffff610c4216565b6001600160a01b038085166000908152600460205260408082209390935590841681522054610cc3908263ffffffff610da316565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b93908590611004565b600354610d28908263ffffffff610da316565b6003556001600160a01b038216600090815260046020526040902054610d54908263ffffffff610da316565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b8082018281101561039d5760405162461bcd60e51b81526004016103e390611187565b80356001600160a01b038116811461039d57600080fd5b600060208284031215610dee578081fd5b610df88383610dc6565b9392505050565b60008060408385031215610e11578081fd5b610e1b8484610dc6565b9150610e2a8460208501610dc6565b90509250929050565b600080600060608486031215610e47578081fd5b8335610e5281611377565b92506020840135610e6281611377565b929592945050506040919091013590565b600080600080600080600060e0888a031215610e8d578283fd5b610e978989610dc6565b9650610ea68960208a01610dc6565b95506040880135945060608801359350608088013560ff81168114610ec9578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610ef8578182fd5b610f028484610dc6565b946020939093013593505050565b600060208284031215610f21578081fd5b81358015158114610df8578182fd5b600080600060408486031215610f44578283fd5b833567ffffffffffffffff80821115610f5b578485fd5b81860187601f820112610f6c578586fd5b8035925081831115610f7c578586fd5b876020848301011115610f8d578586fd5b602081019550505080925050610fa68560208601610dc6565b90509250925092565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000604082528360408301528385606084013780606085840101526060601f19601f86011683010190506001600160a01b0383166020830152949350505050565b6000602080835283518082850152825b818110156110cc578581018301518582016040015282016110b0565b818111156110dd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252603e908201527f4d6972726f725772697465546f6b656e3a2063757272656e74206f776e65722060408201527f6d757374207365742063616c6c6572206173206e657874206f776e65722e0000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526031908201527f4d6972726f725772697465546f6b656e3a206e657874206f776e65722069732060408201527f746865207a65726f20616464726573732e000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6972726f725772697465546f6b656e3a20494e56414c49445f5349474e415460408201527f5552450000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6972726f725772697465546f6b656e3a20726567697374726174696f6e206960408201527f7320636c6f7365642e0000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4d6972726f725772697465546f6b656e3a204558504952454400000000000000604082015260600190565b6020808252602a908201527f4d6972726f725772697465546f6b656e3a2063616c6c6572206973206e6f742060408201527f746865206f776e65722e00000000000000000000000000000000000000000000606082015260800190565b60ff91909116815260200190565b6001600160a01b038116811461138c57600080fd5b5056fea2646970667358221220c41de69de3ee288af73e59634ec6c1652fcaec8d705aea7b46223fac4a8be41f64736f6c63430006080033

Deployed Bytecode Sourcemap

1753:9467:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1753:9467:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1960:59:0;;;:::i;:::-;;;;;;;;;;;;;;;;9198:191;;;;;;;;;:::i;:::-;;;;;;;;2989:35;;;:::i;:::-;;;;;;;;5642:284;;;;;;;;;:::i;:::-;;6861:90;;;:::i;9588:382::-;;;;;;;;;:::i;2184:117::-;;;:::i;2026:44::-;;;:::i;:::-;;;;;;;;2308:50;;;:::i;4994:131::-;;;;;;;;;:::i;8125:107::-;;;;;;;;;:::i;2855:30::-;;;:::i;3031:53::-;;;;;;;;;:::i;7646:142::-;;;:::i;7119:176::-;;;:::i;3171:50::-;;;;;;;;;:::i;6060:92::-;;;:::i;1905:48::-;;;:::i;9397:183::-;;;;;;;;;:::i;2892:27::-;;;:::i;:::-;;;;;;;;7937:114;;;;;;;;;:::i;9978:1096::-;;;;;;;;;:::i;5276:112::-;;;:::i;3091:73::-;;;;;;;;;:::i;6237:100::-;;;:::i;6480:244::-;;;;;;;;;:::i;1960:59::-;;;;;;;;;;;;;;;;;;;:::o;9198:191::-;9301:4;9323:36;9332:10;9344:7;9353:5;9323:8;:36::i;:::-;-1:-1:-1;9377:4:0;9198:191;;;;;:::o;2989:35::-;;;;:::o;5642:284::-;3779:11;;;;;;;3771:65;;;;-1:-1:-1;;;3771:65:0;;;;;;;;;;;;;;;;;5771:36:::1;5777:10;2486:4;5771:5;:36::i;:::-;5825:24;5836:5;;5843;5825:24;;;;;;;;;;;;;;;;;5882:12;::::0;5862:56:::1;::::0;;;;-1:-1:-1;;;;;5882:12:0;;::::1;::::0;5862:42:::1;::::0;:56:::1;::::0;5905:5;;;;5912;;5862:56:::1;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5862:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5862:56:0;;;;5642:284:::0;;;:::o;6861:90::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;6933:10:::1;6926:17:::0;;-1:-1:-1;;6926:17:0::1;::::0;;6861:90::o;9588:382::-;-1:-1:-1;;;;;9733:15:0;;9712:4;9733:15;;;:9;:15;;;;;;;;9749:10;9733:27;;;;;;;;9772:2;9733:42;9729:175;;-1:-1:-1;;;;;9822:15:0;;;;;;:9;:15;;;;;;;;9838:10;9822:27;;;;;;;;:70;;9872:5;9822:70;:31;:70;:::i;:::-;-1:-1:-1;;;;;9792:15:0;;;;;;:9;:15;;;;;;;;9808:10;9792:27;;;;;;;:100;9729:175;9914:26;9924:4;9930:2;9934:5;9914:9;:26::i;:::-;-1:-1:-1;9958:4:0;9588:382;;;;;:::o;2184:117::-;2235:66;2184:117;:::o;2026:44::-;2068:2;2026:44;:::o;2308:50::-;;;:::o;4994:131::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;5066:17:::1;5072:2;5076:6;5066:5;:17::i;:::-;5106:2;-1:-1:-1::0;;;;;5101:16:0::1;;5110:6;5101:16;;;;;;;;;;;;;;;4994:131:::0;;:::o;8125:107::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;8198:11:::1;:26:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8125:107::o;2855:30::-;;;;;;;;;:::o;3031:53::-;;;;;;;;;;;;;:::o;7646:142::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;7747:1:::1;7731:6:::0;;7710:40:::1;::::0;-1:-1:-1;;;;;7731:6:0;;::::1;::::0;7710:40:::1;::::0;7747:1;;7710:40:::1;7778:1;7761:19:::0;;-1:-1:-1;;7761:19:0::1;::::0;;7646:142::o;7119:176::-;4046:13;:11;:13::i;:::-;4024:125;;;;-1:-1:-1;;;4024:125:0;;;;;;;;;7187:10:::1;7180:17:::0;;-1:-1:-1;;7180:17:0::1;::::0;;-1:-1:-1;7236:6:0;;7215:40:::1;::::0;7244:10:::1;::::0;-1:-1:-1;;;;;7236:6:0;;::::1;::::0;7215:40:::1;::::0;::::1;7268:6;:19:::0;;-1:-1:-1;;7268:19:0::1;7277:10;7268:19;::::0;;7119:176::o;3171:50::-;;;;;;;;;;;;;:::o;6060:92::-;6100:4;6138:6;-1:-1:-1;;;;;6138:6:0;6124:10;:20;;6060:92::o;1905:48::-;;;;;;;;;;;;;;;;;;;:::o;9397:183::-;9496:4;9518:32;9528:10;9540:2;9544:5;9518:9;:32::i;2892:27::-;;;-1:-1:-1;;;;;2892:27:0;;:::o;7937:114::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;8015:12:::1;:28:::0;;-1:-1:-1;;8015:28:0::1;-1:-1:-1::0;;;;;8015:28:0;;;::::1;::::0;;;::::1;::::0;;7937:114::o;9978:1096::-;10209:15;10197:8;:27;;10189:65;;;;-1:-1:-1;;;10189:65:0;;;;;;;;;-1:-1:-1;;;;;10667:13:0;;10265:14;10667:13;;;:6;:13;;;;;;;;:15;;;;;;;;10470:278;;10395:16;;10470:278;;2235:66;;10557:5;;10593:7;;10631:5;;10667:15;;10713:8;;10470:278;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10470:278:0;;;10434:337;;;;;;10323:467;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10323:467:0;;;10295:510;;;;;;10265:540;;10816:24;10843:26;10853:6;10861:1;10864;10867;10843:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10843:26:0;;-1:-1:-1;;10843:26:0;;;-1:-1:-1;;;;;;;10902:30:0;;;;;;:59;;;10956:5;-1:-1:-1;;;;;10936:25:0;:16;-1:-1:-1;;;;;10936:25:0;;10902:59;10880:144;;;;-1:-1:-1;;;10880:144:0;;;;;;;;;11035:31;11044:5;11051:7;11060:5;11035:8;:31::i;:::-;9978:1096;;;;;;;;;:::o;5276:112::-;2486:4;5276:112;:::o;3091:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6237:100::-;6319:10;;-1:-1:-1;;;;;6319:10:0;6305;:24;;6237:100::o;6480:244::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;-1:-1:-1;;;;;6579:24:0;::::1;6557:123;;;;-1:-1:-1::0;;;6557:123:0::1;;;;;;;;;6693:10;:23:::0;;-1:-1:-1;;6693:23:0::1;-1:-1:-1::0;;;;;6693:23:0;;;::::1;::::0;;;::::1;::::0;;6480:244::o;8719:206::-;-1:-1:-1;;;;;8837:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;;:33;;;8886:31;;;;;8865:5;;8886:31;;;;;;;;;;8719:206;;;:::o;8499:212::-;-1:-1:-1;;;;;8581:15:0;;;;;;:9;:15;;;;;;:26;;8601:5;8581:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;8563:15:0;;;;;;:9;:15;;;;;:44;8632:11;;:22;;8648:5;8632:22;:15;:22;:::i;:::-;8618:11;:36;8670:33;;8693:1;;-1:-1:-1;;;;;8670:33:0;;;;;;;8697:5;;8670:33;;;;;;;;;;8499:212;;:::o;11501:138::-;11594:5;;;11589:16;;;;11581:50;;;;-1:-1:-1;;;11581:50:0;;;;;;;;8933:257;-1:-1:-1;;;;;9064:15:0;;;;;;:9;:15;;;;;;:26;;9084:5;9064:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;9046:15:0;;;;;;;:9;:15;;;;;;:44;;;;9117:13;;;;;;;:24;;9135:5;9117:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;9101:13:0;;;;;;;:9;:13;;;;;;;:40;;;;9157:25;;;;;;;;;;9176:5;;9157:25;;8287:204;8363:11;;:22;;8379:5;8363:22;:15;:22;:::i;:::-;8349:11;:36;-1:-1:-1;;;;;8412:13:0;;;;;;:9;:13;;;;;;:24;;8430:5;8412:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;8396:13:0;;;;;;:9;:13;;;;;;:40;;;;8452:31;;8396:13;;;8452:31;;;;8477:5;;8452:31;;11356:137;11449:5;;;11444:16;;;;11436:49;;;;-1:-1:-1;;;11436:49:0;;;;;;;;5:130:-1;72:20;;-1:-1;;;;;17129:54;;18038:35;;18028:2;;18087:1;;18077:12;1040:241;;1144:2;1132:9;1123:7;1119:23;1115:32;1112:2;;;-1:-1;;1150:12;1112:2;1212:53;1257:7;1233:22;1212:53;;;1202:63;1106:175;-1:-1;;;1106:175;1288:366;;;1409:2;1397:9;1388:7;1384:23;1380:32;1377:2;;;-1:-1;;1415:12;1377:2;1477:53;1522:7;1498:22;1477:53;;;1467:63;;1585:53;1630:7;1567:2;1610:9;1606:22;1585:53;;;1575:63;;1371:283;;;;;;1661:491;;;;1799:2;1787:9;1778:7;1774:23;1770:32;1767:2;;;-1:-1;;1805:12;1767:2;85:6;72:20;97:33;124:5;97:33;;;1857:63;-1:-1;1957:2;1996:22;;72:20;97:33;72:20;97:33;;;1761:391;;1965:63;;-1:-1;;;2065:2;2104:22;;;;837:20;;1761:391;2159:991;;;;;;;;2363:3;2351:9;2342:7;2338:23;2334:33;2331:2;;;-1:-1;;2370:12;2331:2;2432:53;2477:7;2453:22;2432:53;;;2422:63;;2540:53;2585:7;2522:2;2565:9;2561:22;2540:53;;;2530:63;;2630:2;2673:9;2669:22;837:20;2638:63;;2738:2;2781:9;2777:22;837:20;2746:63;;2846:3;2888:9;2884:22;972:20;17345:4;18552:5;17334:16;18529:5;18526:33;18516:2;;-1:-1;;18563:12;18516:2;2325:825;;;;-1:-1;2325:825;;;;2855:61;2953:3;2993:22;;340:20;;-1:-1;3062:3;3102:22;;;340:20;;2325:825;-1:-1;;2325:825;3157:366;;;3278:2;3266:9;3257:7;3253:23;3249:32;3246:2;;;-1:-1;;3284:12;3246:2;3346:53;3391:7;3367:22;3346:53;;;3336:63;3436:2;3475:22;;;;837:20;;-1:-1;;;3240:283;3530:235;;3631:2;3619:9;3610:7;3606:23;3602:32;3599:2;;;-1:-1;;3637:12;3599:2;219:6;206:20;18184:5;16962:13;16955:21;18162:5;18159:32;18149:2;;-1:-1;;18195:12;3772:492;;;;3913:2;3901:9;3892:7;3888:23;3884:32;3881:2;;;-1:-1;;3919:12;3881:2;3977:17;3964:31;4015:18;;4007:6;4004:30;4001:2;;;-1:-1;;4037:12;4001:2;4123:6;4112:9;4108:22;540:3;533:4;525:6;521:17;517:27;507:2;;-1:-1;;548:12;507:2;591:6;578:20;568:30;;4015:18;610:6;607:30;604:2;;;-1:-1;;640:12;604:2;735:3;684:4;715:17;676:6;701:32;;698:41;695:2;;;-1:-1;;742:12;695:2;684:4;676:6;672:17;4065:75;;;;;;;;4195:53;4240:7;684:4;4220:9;4216:22;4195:53;;;4185:63;;3875:389;;;;;;9061:659;6502:66;6482:87;;6467:1;6588:11;;4573:37;;;;9572:12;;;4573:37;9683:12;;;9306:414;9727:222;-1:-1;;;;;17129:54;;;;4342:37;;9854:2;9839:18;;9825:124;9956:210;16962:13;;16955:21;4456:34;;10077:2;10062:18;;10048:118;10173:222;4573:37;;;10300:2;10285:18;;10271:124;10402:780;4573:37;;;-1:-1;;;;;17129:54;;;10834:2;10819:18;;4342:37;17129:54;;;;10917:2;10902:18;;4342:37;11000:2;10985:18;;4573:37;11083:3;11068:19;;4573:37;;;;11167:3;11152:19;;4573:37;10669:3;10654:19;;10640:542;11189:548;4573:37;;;17345:4;17334:16;;;;11557:2;11542:18;;9014:35;11640:2;11625:18;;4573:37;11723:2;11708:18;;4573:37;11396:3;11381:19;;11367:370;11744:441;;11929:2;11950:17;11943:47;16588:6;11929:2;11918:9;11914:18;16576:19;17444:6;17439:3;16616:14;11918:9;16616:14;17421:30;-1:-1;16616:14;17491:6;11918:9;17482:16;;17475:27;16616:14;-1:-1;;17962:2;5092:6;17942:14;17938:28;11918:9;5061:39;;11996:96;;-1:-1;;;;;17133:5;17129:54;16625:4;12160:9;12156:18;4342:37;11900:285;;;;;;;12192:310;;12339:2;;12360:17;12353:47;5259:5;16431:12;16588:6;12339:2;12328:9;12324:18;16576:19;-1:-1;17589:101;17603:6;17600:1;17597:13;17589:101;;;17670:11;;;;;17664:18;17651:11;;;16616:14;17651:11;17644:39;17618:10;;17589:101;;;17705:6;17702:1;17699:13;17696:2;;;-1:-1;16616:14;17761:6;12328:9;17752:16;;17745:27;17696:2;-1:-1;17962:2;17942:14;-1:-1;;17938:28;5417:39;;;;16616:14;5417:39;;12310:192;-1:-1;;;12310:192;12509:416;12709:2;12723:47;;;5693:2;12694:18;;;16576:19;5729:23;16616:14;;;5709:44;5772:12;;;12680:245;12932:416;13132:2;13146:47;;;6023:2;13117:18;;;16576:19;6059:34;16616:14;;;6039:55;6128:32;6114:12;;;6107:54;6180:12;;;13103:245;13355:416;13555:2;13569:47;;;6838:2;13540:18;;;16576:19;6874:22;16616:14;;;6854:43;6916:12;;;13526:245;13778:416;13978:2;13992:47;;;7167:2;13963:18;;;16576:19;7203:34;16616:14;;;7183:55;7272:19;7258:12;;;7251:41;7311:12;;;13949:245;14201:416;14401:2;14415:47;;;7562:2;14386:18;;;16576:19;7598:34;16616:14;;;7578:55;7667:5;7653:12;;;7646:27;7692:12;;;14372:245;14624:416;14824:2;14838:47;;;7943:2;14809:18;;;16576:19;7979:34;16616:14;;;7959:55;8048:11;8034:12;;;8027:33;8079:12;;;14795:245;15047:416;15247:2;15261:47;;;8330:2;15232:18;;;16576:19;8366:27;16616:14;;;8346:48;8413:12;;;15218:245;15470:416;15670:2;15684:47;;;8664:2;15655:18;;;16576:19;8700:34;16616:14;;;8680:55;8769:12;8755;;;8748:34;8801:12;;;15641:245;16122:214;17345:4;17334:16;;;;9014:35;;16245:2;16230:18;;16216:120;17979:117;-1:-1;;;;;18066:5;17129:54;18041:5;18038:35;18028:2;;18087:1;;18077:12;18028:2;18022:74;

Swarm Source

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