ETH Price: $3,517.88 (+4.87%)

Token

SquaresAI (SQUARES)
 

Overview

Max Total Supply

100,000,000 SQUARES

Holders

538

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
45,431.233381835544139445 SQUARES

Value
$0.00
0xbfe3b4ed08c7925a7be627b207a2fa68e8c5199a
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:
SquaresAI

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : SquaresLabsToken.sol
// SPDX-License-Identifier: MIT
/*
         __    __    __    __    __    __    __    __    __    __    
         \  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \
          \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  
         __\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  
         \  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \
          \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  
         __\  \__\  \                                   \__\  \__\  
         \  \__\  \__\   https://links.squareslabs.ai    \  \__\  \
          \__\  \__\  \                                   \__\  \__\  
         __\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\ 
         \  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \
          \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  
         __\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  
         \  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \
          \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  \__\  
*/

pragma solidity 0.8.20;

interface IERC20 {
    // Emitted when tokens are transferred from one account to another.
    event Transfer(address indexed sender, address indexed recipient, uint256 amount);

    // Emitted when an allowance is set for a spender by an owner.
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    // Returns the total supply of the token.
    function totalSupply() external view returns (uint256);

    // Returns the balance of a given account.
    function balanceOf(address account) external view returns (uint256);

    // Transfers tokens from the caller to a recipient.
    function transfer(address recipient, uint256 amount) external returns (bool);

    // Returns the remaining allowance a spender has from the owner.
    function allowance(address owner, address spender) external view returns (uint256);

    // Approves a spender to transfer tokens on behalf of the caller.
    function approve(address spender, uint256 amount) external returns (bool);

    // Transfers tokens from a sender to a recipient using an allowance.
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

abstract contract Context {
    // Provides the address of the caller of the function.
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _contractOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Constructor sets the deployer as the initial owner of the contract.
     */
    constructor() {
        address msgSender = _msgSender();
        _contractOwner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    // Returns the address of the current owner.
    function owner() public view returns (address) {
        return _contractOwner;
    }

    // Modifier to restrict access to only the owner.
    modifier onlyOwner() {
        require(_contractOwner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership to a new address.
     *      The newOwner cannot be the zero address.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _updateOwnership(newOwner);
    }

    // Internal function to update the owner address.
    function _updateOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_contractOwner, newOwner);
        _contractOwner = newOwner;
    }

    /**
     * @dev Renounces ownership, leaving the contract ownerless.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_contractOwner, address(0));
        _contractOwner = address(0);
    }
}

interface IUniswapV2Factory {
    // Creates a pair for tokenA and tokenB.
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    /**
     * @dev Swaps an exact amount of tokens for ETH, supporting fee-on-transfer tokens.
     */
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 tokenAmount,
        uint256 minETHAmount,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    // Returns the factory address.
    function factory() external pure returns (address);

    // Returns the address of WETH.
    function WETH() external pure returns (address);

    /**
     * @dev Adds liquidity for ETH and tokens.
     */
    function addLiquidityETH(
        address token,
        uint tokenDesired,
        uint tokenMin,
        uint ethMin,
        address to,
        uint deadline
    ) external payable returns (uint tokenAmount, uint ethAmount, uint liquidity);
}

contract SquaresAI is Context, IERC20, Ownable {
    string private constant _tokenName = "SquaresAI";
    string private constant _tokenSymbol = "SQUARES";
    uint8 private constant _tokenDecimals = 18;
    uint256 private constant _totalSupply = 100000000 * 10**_tokenDecimals;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _excludedAccounts; // Tracks excluded accounts for fees or limits.

    uint256 private constant _minSwapTokens = 10000 * 10**_tokenDecimals; // Minimum tokens required to trigger a swap.
    uint256 private _maxSwapTokens = 500000 * 10**_tokenDecimals; // Maximum tokens to swap at once.

    uint256 private _launchBlock;
    uint256 buyFeeRate = 30; // Buy transaction fee rate in percentage.
    uint256 sellFeeRate = 30; // Sell transaction fee rate in percentage.

    uint256 public maxTxValue = 500000 * 10**_tokenDecimals; // Maximum transaction value allowed.
    uint256 public maxWalletHoldings = 1000000 * 10**_tokenDecimals; // Maximum wallet balance allowed.

    IUniswapV2Router02 private _uniswapV2Router;
    address public uniswapV2Pair;
    address OperationalWallet; // Address for operational funds.
    address TeamWallet; // Address for team funds.
    address MarketingWallet; // Address for marketing funds.

    bool private _isTradingActive = false; // Indicates whether trading is active.

    /**
     * @dev Constructor initializes wallets and assigns the total token supply to the deployer.
     */
    constructor() {
        _balances[msg.sender] = _totalSupply;
        _excludedAccounts[msg.sender] = 1;
        _excludedAccounts[address(this)] = 1;

        OperationalWallet = 0x4F3447E56464A329bCF0FDfa8AE82Ba4E09cF9D8;

        TeamWallet = 0x72Bce0Da7bC5e3a596521B70F054fD342A02Eb96;
        
        MarketingWallet = 0x184Af822Dba5f8D9E5f628D31F0a14a4F130a422;

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

    // Returns the name of the token.
    function name() public pure returns (string memory) {
        return _tokenName;
    }

    // Returns the symbol of the token.
    function symbol() public pure returns (string memory) {
        return _tokenSymbol;
    }

    // Returns the number of decimals used by the token.
    function decimals() public pure returns (uint8) {
        return _tokenDecimals;
    }

    // Returns the total supply of the token.
    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev Returns current buy and sell tax rates.
     */
    function currentFeeRates() external view returns (uint256 buyTax, uint256 sellTax) {
        buyTax = buyFeeRate;
        sellTax = sellFeeRate;
    }

    // Returns the balance of the specified account.
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    // Transfers tokens to a specified recipient.
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(_msgSender(), recipient, amount);
        return true;
    }

    // Returns the remaining allowance for a spender from the owner.
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    // Approves a spender to transfer tokens on behalf of the caller.
    function approve(address spender, uint256 amount) public override returns (bool) {
        _setAllowance(_msgSender(), spender, amount);
        return true;
    }

    // Transfers tokens from a sender to a recipient using an allowance.
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _setAllowance(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

    // Internal function to set the allowance for a spender by the owner.
    function _setAllowance(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 Enables trading by setting up the Uniswap pair and liquidity.
     */
    function enableTrading() external onlyOwner {
        require(!_isTradingActive, "Trading is already enabled");
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAllowance(address(this), address(_uniswapV2Router), _totalSupply);
        
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
        _isTradingActive = true;
        _launchBlock = block.number;
    }

    /**
     * @dev Adds or removes an account from exclusion lists.
     */
    function excludeAccount(address account, uint256 value) external onlyOwner {
        _excludedAccounts[account] = value;
    }

    /**
     * @dev Disables transaction and wallet limits.
     */
    function removeLimits() external onlyOwner {
        maxTxValue = _totalSupply;
        maxWalletHoldings = _totalSupply;
    }

    /**
     * @dev Updates the buy and sell tax rates. New rates cannot exceed current ones.
     */
    function setTaxRates(uint256 newBuyTaxRate, uint256 newSellTaxRate) external onlyOwner {
        require(newBuyTaxRate <= buyFeeRate && newSellTaxRate <= sellFeeRate, "Tax cannot be increased");
        buyFeeRate = newBuyTaxRate;
        sellFeeRate = newSellTaxRate;
    }

    /**
     * @dev Internal function to handle token transfers with tax application.
     */
    function _processTransfer(address from, address to, uint256 amount, uint256 taxRate) private {
        uint256 taxAmount = (amount * taxRate) / 100;
        uint256 transferAmount = amount - taxAmount;

        _balances[from] -= amount;
        _balances[to] += transferAmount;
        _balances[address(this)] += taxAmount;

        emit Transfer(from, to, transferAmount);
    }

    /**
     * @dev Core transfer function that includes validation and fee processing.
     */
    function _executeTransfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "ERC20: transfer amount must be greater than zero");

        uint256 taxRate = 0;

        if (_excludedAccounts[from] == 0 && _excludedAccounts[to] == 0) {
            require(_isTradingActive, "Trading is not enabled yet");
            require(amount <= maxTxValue, "Transaction amount exceeds the maximum limit");
            
            if (to != uniswapV2Pair && to != address(0xdead)) {
                require(balanceOf(to) + amount <= maxWalletHoldings, "Recipient wallet exceeds the maximum limit");
            }

            if (block.number < _launchBlock + 3) {
                taxRate = (from == uniswapV2Pair) ? 30 : 30;
            } else {
                if (from == uniswapV2Pair) {
                    taxRate = buyFeeRate;
                } else if (to == uniswapV2Pair) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance > _minSwapTokens) {
                        uint256 swapAmount = _maxSwapTokens;
                        if (contractTokenBalance > amount) contractTokenBalance = amount;
                        if (contractTokenBalance > swapAmount) contractTokenBalance = swapAmount;
                        _swapTokensForEther(contractTokenBalance);
                    }
                    taxRate = sellFeeRate;
                }
            }
        }
        _processTransfer(from, to, amount, taxRate);
    }

    /**
     * @dev Swaps tokens for ETH and allocates ETH to designated wallets.
     */
    function _swapTokensForEther(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _setAllowance(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 contractEthBalance = address(this).balance;
        uint256 _operationalWallet = (contractEthBalance * 4) / 100;
        uint256 _teamWallet = (contractEthBalance * 48) / 100;
        uint256 _marketingWallet = (contractEthBalance * 48) / 100;

        (bool success, ) = OperationalWallet.call{value: _operationalWallet}("");
        (success, ) = TeamWallet.call{value: _teamWallet}("");
        (success, ) = MarketingWallet.call{value: _marketingWallet}("");
        
        require(success, "Transfer failed");
    }

    /**
     * @dev Withdraws ETH from the contract to the owner's wallet.
     */
    function withdrawEther() external onlyOwner {
        (bool success, ) = owner().call{value: address(this).balance}("");
        require(success, "Rescue ETH failed");
    }

    /**
     * @dev Transfers remaining tokens in the contract to the owner.
     */
    function collectTokens() external onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        require(contractTokenBalance > 0, "No tokens to rescue");

        _processTransfer(address(this), owner(), contractTokenBalance, 0);
    }

    /**
     * @dev Allows the owner to manually swap a percentage of tokens for ETH.
     */
    function manualSwap(uint256 percent) external onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapAmount = (percent * contractTokenBalance) / 100;
        _swapTokensForEther(swapAmount);
    }



    // Allows the contract to receive ETH.
    receive() external payable {}
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

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":"amount","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":"collectTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentFeeRates","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTaxRate","type":"uint256"},{"internalType":"uint256","name":"newSellTaxRate","type":"uint256"}],"name":"setTaxRates","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620002e9565b62000021906207a12062000300565b600455601e60068190556007556200003c6012600a620002e9565b6200004b906207a12062000300565b6008556200005c6012600a620002e9565b6200006b90620f424062000300565b600955600e805460ff60a01b1916905534801562000087575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000d66012600a620002e9565b620000e6906305f5e10062000300565b335f908152600160208181526040808420949094556003905282822081905530825291902055600c80546001600160a01b0319908116734f3447e56464a329bcf0fdfa8ae82ba4e09cf9d817909155600d805482167372bce0da7bc5e3a596521b70f054fd342a02eb96179055600e805490911673184af822dba5f8d9e5f628d31f0a14a4f130a4221790556200017a3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001b36012600a620002e9565b620001c3906305f5e10062000300565b60405190815260200160405180910390a36200031a565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200022e57815f1904821115620002125762000212620001da565b808516156200022057918102915b93841c9390800290620001f3565b509250929050565b5f826200024657506001620002e3565b816200025457505f620002e3565b81600181146200026d5760028114620002785762000298565b6001915050620002e3565b60ff8411156200028c576200028c620001da565b50506001821b620002e3565b5060208310610133831016604e8410600b8410161715620002bd575081810a620002e3565b620002c98383620001ee565b805f1904821115620002df57620002df620001da565b0290505b92915050565b5f620002f960ff84168362000236565b9392505050565b8082028115828204841417620002e357620002e3620001da565b6119c080620003285f395ff3fe60806040526004361061013f575f3560e01c8063751039fc116100b3578063b70143c91161006d578063b70143c914610399578063b7ea78b5146103b8578063c4ac40bb146103cd578063dd62ed3e146103ec578063e8eecf4c14610430578063f2fde38b14610445575f80fd5b8063751039fc146102f35780638433acd1146103075780638a8c523c1461031b5780638da5cb5b1461032f57806395d89b411461034b578063a9059cbb1461037a575f80fd5b806349bd5a5e1161010457806349bd5a5e14610218578063542fa44c1461024f5780635cb23e121461027657806370a0823114610297578063715018a6146102cb5780637362377b146102df575f80fd5b806306fdde031461014a578063095ea7b31461018d57806318160ddd146101bc57806323b872dd146101de578063313ce567146101fd575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600981526853717561726573414960b81b60208201525b60405161018491906115b8565b60405180910390f35b348015610198575f80fd5b506101ac6101a7366004611617565b610464565b6040519015158152602001610184565b3480156101c7575f80fd5b506101d061047a565b604051908152602001610184565b3480156101e9575f80fd5b506101ac6101f8366004611641565b61049a565b348015610208575f80fd5b5060405160128152602001610184565b348015610223575f80fd5b50600b54610237906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b34801561025a575f80fd5b5060065460075460408051928352602083019190915201610184565b348015610281575f80fd5b5061029561029036600461167f565b61054f565b005b3480156102a2575f80fd5b506101d06102b136600461169f565b6001600160a01b03165f9081526001602052604090205490565b3480156102d6575f80fd5b506102956105e3565b3480156102ea575f80fd5b50610295610654565b3480156102fe575f80fd5b50610295610714565b348015610312575f80fd5b50610295610779565b348015610326575f80fd5b50610295610810565b34801561033a575f80fd5b505f546001600160a01b0316610237565b348015610356575f80fd5b506040805180820190915260078152665351554152455360c81b6020820152610177565b348015610385575f80fd5b506101ac610394366004611617565b610bb4565b3480156103a4575f80fd5b506102956103b33660046116c1565b610bc0565b3480156103c3575f80fd5b506101d060095481565b3480156103d8575f80fd5b506102956103e7366004611617565b610c1f565b3480156103f7575f80fd5b506101d06104063660046116d8565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561043b575f80fd5b506101d060085481565b348015610450575f80fd5b5061029561045f36600461169f565b610c63565b5f610470338484610c95565b5060015b92915050565b5f6104876012600a611803565b610495906305f5e100611811565b905090565b5f6104a6848484610db8565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461054457828110156105375760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105448533858403610c95565b506001949350505050565b5f546001600160a01b031633146105785760405162461bcd60e51b815260040161052e90611828565b600654821115801561058c57506007548111155b6105d85760405162461bcd60e51b815260206004820152601760248201527f5461782063616e6e6f7420626520696e63726561736564000000000000000000604482015260640161052e565b600691909155600755565b5f546001600160a01b0316331461060c5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461067d5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f81146106c7576040519150601f19603f3d011682016040523d82523d5f602084013e6106cc565b606091505b50509050806107115760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b604482015260640161052e565b50565b5f546001600160a01b0316331461073d5760405162461bcd60e51b815260040161052e90611828565b6107496012600a611803565b610757906305f5e100611811565b6008556107666012600a611803565b610774906305f5e100611811565b600955565b5f546001600160a01b031633146107a25760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040902054806107f45760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161052e565b610711306108095f546001600160a01b031690565b835f61111d565b5f546001600160a01b031633146108395760405162461bcd60e51b815260040161052e90611828565b600e54600160a01b900460ff16156108935760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161052e565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156108f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610919919061185d565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c919061185d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0a919061185d565b600b80546001600160a01b0319166001600160a01b03928316179055600a8054610a52923092911690610a3f90601290611803565b610a4d906305f5e100611811565b610c95565b600a546001600160a01b031663f305d7194730610a83816001600160a01b03165f9081526001602052604090205490565b5f80610a965f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610afc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b219190611878565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9a91906118a3565b50600e805460ff60a01b1916600160a01b17905543600555565b5f610470338484610db8565b5f546001600160a01b03163314610be95760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040812054906064610c058385611811565b610c0f91906118c2565b9050610c1a81611218565b505050565b5f546001600160a01b03163314610c485760405162461bcd60e51b815260040161052e90611828565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161052e90611828565b610711816114fa565b6001600160a01b038316610cf75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610d585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b5f8111610e845760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161052e565b6001600160a01b0383165f90815260036020526040812054158015610ebe57506001600160a01b0383165f90815260036020526040902054155b1561110b57600e54600160a01b900460ff16610f1c5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c656420796574000000000000604482015260640161052e565b600854821115610f835760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b606482015260840161052e565b600b546001600160a01b03848116911614801590610fac57506001600160a01b03831661dead14155b1561103e5760095482610fd3856001600160a01b03165f9081526001602052604090205490565b610fdd91906118e1565b111561103e5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b606482015260840161052e565b60055461104c9060036118e1565b43101561107c57600b546001600160a01b0385811691161461106f57601e611072565b601e5b60ff16905061110b565b600b546001600160a01b039081169085160361109b575060065461110b565b600b546001600160a01b039081169084160361110b57305f908152600160205260409020546110cc6012600a611803565b6110d890612710611811565b81111561110557600454838211156110ee578391505b808211156110fa578091505b61110382611218565b505b50506007545b6111178484848461111d565b50505050565b5f606461112a8385611811565b61113491906118c2565b90505f61114182856118f4565b6001600160a01b0387165f9081526001602052604081208054929350869290919061116d9084906118f4565b90915550506001600160a01b0385165f90815260016020526040812080548392906111999084906118e1565b9091555050305f90815260016020526040812080548492906111bc9084906118e1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161120891815260200190565b60405180910390a3505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061124b5761124b611907565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c6919061185d565b816001815181106112d9576112d9611907565b6001600160a01b039283166020918202929092010152600a546112ff9130911684610c95565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906113379085905f9086903090429060040161191b565b5f604051808303815f87803b15801561134e575f80fd5b505af1158015611360573d5f803e3d5ffd5b504792505f915060649050611376836004611811565b61138091906118c2565b90505f6064611390846030611811565b61139a91906118c2565b90505f60646113aa856030611811565b6113b491906118c2565b600c546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611403576040519150601f19603f3d011682016040523d82523d5f602084013e611408565b606091505b5050600d546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611455576040519150601f19603f3d011682016040523d82523d5f602084013e61145a565b606091505b5050600e546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146114a7576040519150601f19603f3d011682016040523d82523d5f602084013e6114ac565b606091505b505080915050806114f15760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161052e565b50505050505050565b6001600160a01b03811661155f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b818110156115e3578581018301518582016040015282016115c7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610711575f80fd5b5f8060408385031215611628575f80fd5b823561163381611603565b946020939093013593505050565b5f805f60608486031215611653575f80fd5b833561165e81611603565b9250602084013561166e81611603565b929592945050506040919091013590565b5f8060408385031215611690575f80fd5b50508035926020909101359150565b5f602082840312156116af575f80fd5b81356116ba81611603565b9392505050565b5f602082840312156116d1575f80fd5b5035919050565b5f80604083850312156116e9575f80fd5b82356116f481611603565b9150602083013561170481611603565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561175d57815f19048211156117435761174361170f565b8085161561175057918102915b93841c9390800290611728565b509250929050565b5f8261177357506001610474565b8161177f57505f610474565b8160018114611795576002811461179f576117bb565b6001915050610474565b60ff8411156117b0576117b061170f565b50506001821b610474565b5060208310610133831016604e8410600b84101617156117de575081810a610474565b6117e88383611723565b805f19048211156117fb576117fb61170f565b029392505050565b5f6116ba60ff841683611765565b80820281158282048414176104745761047461170f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561186d575f80fd5b81516116ba81611603565b5f805f6060848603121561188a575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156118b3575f80fd5b815180151581146116ba575f80fd5b5f826118dc57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104745761047461170f565b818103818111156104745761047461170f565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119695784516001600160a01b031683529383019391830191600101611944565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fcedb6968e887561c4e8c06228f393a982a957ce2964c4dbfa6dd119837b5daa64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063751039fc116100b3578063b70143c91161006d578063b70143c914610399578063b7ea78b5146103b8578063c4ac40bb146103cd578063dd62ed3e146103ec578063e8eecf4c14610430578063f2fde38b14610445575f80fd5b8063751039fc146102f35780638433acd1146103075780638a8c523c1461031b5780638da5cb5b1461032f57806395d89b411461034b578063a9059cbb1461037a575f80fd5b806349bd5a5e1161010457806349bd5a5e14610218578063542fa44c1461024f5780635cb23e121461027657806370a0823114610297578063715018a6146102cb5780637362377b146102df575f80fd5b806306fdde031461014a578063095ea7b31461018d57806318160ddd146101bc57806323b872dd146101de578063313ce567146101fd575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600981526853717561726573414960b81b60208201525b60405161018491906115b8565b60405180910390f35b348015610198575f80fd5b506101ac6101a7366004611617565b610464565b6040519015158152602001610184565b3480156101c7575f80fd5b506101d061047a565b604051908152602001610184565b3480156101e9575f80fd5b506101ac6101f8366004611641565b61049a565b348015610208575f80fd5b5060405160128152602001610184565b348015610223575f80fd5b50600b54610237906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b34801561025a575f80fd5b5060065460075460408051928352602083019190915201610184565b348015610281575f80fd5b5061029561029036600461167f565b61054f565b005b3480156102a2575f80fd5b506101d06102b136600461169f565b6001600160a01b03165f9081526001602052604090205490565b3480156102d6575f80fd5b506102956105e3565b3480156102ea575f80fd5b50610295610654565b3480156102fe575f80fd5b50610295610714565b348015610312575f80fd5b50610295610779565b348015610326575f80fd5b50610295610810565b34801561033a575f80fd5b505f546001600160a01b0316610237565b348015610356575f80fd5b506040805180820190915260078152665351554152455360c81b6020820152610177565b348015610385575f80fd5b506101ac610394366004611617565b610bb4565b3480156103a4575f80fd5b506102956103b33660046116c1565b610bc0565b3480156103c3575f80fd5b506101d060095481565b3480156103d8575f80fd5b506102956103e7366004611617565b610c1f565b3480156103f7575f80fd5b506101d06104063660046116d8565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561043b575f80fd5b506101d060085481565b348015610450575f80fd5b5061029561045f36600461169f565b610c63565b5f610470338484610c95565b5060015b92915050565b5f6104876012600a611803565b610495906305f5e100611811565b905090565b5f6104a6848484610db8565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461054457828110156105375760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105448533858403610c95565b506001949350505050565b5f546001600160a01b031633146105785760405162461bcd60e51b815260040161052e90611828565b600654821115801561058c57506007548111155b6105d85760405162461bcd60e51b815260206004820152601760248201527f5461782063616e6e6f7420626520696e63726561736564000000000000000000604482015260640161052e565b600691909155600755565b5f546001600160a01b0316331461060c5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461067d5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f81146106c7576040519150601f19603f3d011682016040523d82523d5f602084013e6106cc565b606091505b50509050806107115760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b604482015260640161052e565b50565b5f546001600160a01b0316331461073d5760405162461bcd60e51b815260040161052e90611828565b6107496012600a611803565b610757906305f5e100611811565b6008556107666012600a611803565b610774906305f5e100611811565b600955565b5f546001600160a01b031633146107a25760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040902054806107f45760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161052e565b610711306108095f546001600160a01b031690565b835f61111d565b5f546001600160a01b031633146108395760405162461bcd60e51b815260040161052e90611828565b600e54600160a01b900460ff16156108935760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161052e565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156108f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610919919061185d565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c919061185d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0a919061185d565b600b80546001600160a01b0319166001600160a01b03928316179055600a8054610a52923092911690610a3f90601290611803565b610a4d906305f5e100611811565b610c95565b600a546001600160a01b031663f305d7194730610a83816001600160a01b03165f9081526001602052604090205490565b5f80610a965f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610afc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b219190611878565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9a91906118a3565b50600e805460ff60a01b1916600160a01b17905543600555565b5f610470338484610db8565b5f546001600160a01b03163314610be95760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040812054906064610c058385611811565b610c0f91906118c2565b9050610c1a81611218565b505050565b5f546001600160a01b03163314610c485760405162461bcd60e51b815260040161052e90611828565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161052e90611828565b610711816114fa565b6001600160a01b038316610cf75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610d585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b5f8111610e845760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161052e565b6001600160a01b0383165f90815260036020526040812054158015610ebe57506001600160a01b0383165f90815260036020526040902054155b1561110b57600e54600160a01b900460ff16610f1c5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c656420796574000000000000604482015260640161052e565b600854821115610f835760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b606482015260840161052e565b600b546001600160a01b03848116911614801590610fac57506001600160a01b03831661dead14155b1561103e5760095482610fd3856001600160a01b03165f9081526001602052604090205490565b610fdd91906118e1565b111561103e5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b606482015260840161052e565b60055461104c9060036118e1565b43101561107c57600b546001600160a01b0385811691161461106f57601e611072565b601e5b60ff16905061110b565b600b546001600160a01b039081169085160361109b575060065461110b565b600b546001600160a01b039081169084160361110b57305f908152600160205260409020546110cc6012600a611803565b6110d890612710611811565b81111561110557600454838211156110ee578391505b808211156110fa578091505b61110382611218565b505b50506007545b6111178484848461111d565b50505050565b5f606461112a8385611811565b61113491906118c2565b90505f61114182856118f4565b6001600160a01b0387165f9081526001602052604081208054929350869290919061116d9084906118f4565b90915550506001600160a01b0385165f90815260016020526040812080548392906111999084906118e1565b9091555050305f90815260016020526040812080548492906111bc9084906118e1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161120891815260200190565b60405180910390a3505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061124b5761124b611907565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c6919061185d565b816001815181106112d9576112d9611907565b6001600160a01b039283166020918202929092010152600a546112ff9130911684610c95565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906113379085905f9086903090429060040161191b565b5f604051808303815f87803b15801561134e575f80fd5b505af1158015611360573d5f803e3d5ffd5b504792505f915060649050611376836004611811565b61138091906118c2565b90505f6064611390846030611811565b61139a91906118c2565b90505f60646113aa856030611811565b6113b491906118c2565b600c546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611403576040519150601f19603f3d011682016040523d82523d5f602084013e611408565b606091505b5050600d546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611455576040519150601f19603f3d011682016040523d82523d5f602084013e61145a565b606091505b5050600e546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146114a7576040519150601f19603f3d011682016040523d82523d5f602084013e6114ac565b606091505b505080915050806114f15760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161052e565b50505050505050565b6001600160a01b03811661155f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b818110156115e3578581018301518582016040015282016115c7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610711575f80fd5b5f8060408385031215611628575f80fd5b823561163381611603565b946020939093013593505050565b5f805f60608486031215611653575f80fd5b833561165e81611603565b9250602084013561166e81611603565b929592945050506040919091013590565b5f8060408385031215611690575f80fd5b50508035926020909101359150565b5f602082840312156116af575f80fd5b81356116ba81611603565b9392505050565b5f602082840312156116d1575f80fd5b5035919050565b5f80604083850312156116e9575f80fd5b82356116f481611603565b9150602083013561170481611603565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561175d57815f19048211156117435761174361170f565b8085161561175057918102915b93841c9390800290611728565b509250929050565b5f8261177357506001610474565b8161177f57505f610474565b8160018114611795576002811461179f576117bb565b6001915050610474565b60ff8411156117b0576117b061170f565b50506001821b610474565b5060208310610133831016604e8410600b84101617156117de575081810a610474565b6117e88383611723565b805f19048211156117fb576117fb61170f565b029392505050565b5f6116ba60ff841683611765565b80820281158282048414176104745761047461170f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561186d575f80fd5b81516116ba81611603565b5f805f6060848603121561188a575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156118b3575f80fd5b815180151581146116ba575f80fd5b5f826118dc57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104745761047461170f565b818103818111156104745761047461170f565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119695784516001600160a01b031683529383019391830191600101611944565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fcedb6968e887561c4e8c06228f393a982a957ce2964c4dbfa6dd119837b5daa64736f6c63430008140033

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.