ETH Price: $2,598.13 (-0.20%)
Gas: 7 Gwei

Token

CosmoMasks Power (CMP)
 

Overview

Max Total Supply

926,398.583905325164622481 CMP

Holders

87 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
nantons.eth
Balance
4,776.253587962962962962 CMP

Value
$0.00
0x0d44a419091c5838691c87999d81e3312f9eabf8
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

CosmoMasks blurs the line when an art connoisseur could only agree with the extraordinary vision of the author. More than 50 artists from around the world have collaborated to create this collection of 16,410 unique characters, but these artworks are not finished yet.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CosmoMasksPower

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 5 : CosmoMasksPower.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;

import "./utils/Ownable.sol";
import "./CosmoMasksPowerERC20.sol";

interface ICosmoMasksShort {
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function totalSupply() external view returns (uint256);
    function isMintedBeforeReveal(uint256 index) external view returns (bool);
}


/**
 * CosmoMasksPower Contract (The native token of CosmoMasks)
 * https://TheCosmoMasks.com/
 * @dev Extends standard ERC20 contract
 */
contract CosmoMasksPower is Ownable, CosmoMasksPowerERC20 {
    using SafeMath for uint256;

    // Constants
    uint256 public constant SECONDS_IN_A_DAY = 86400;
    uint256 public constant INITIAL_ALLOTMENT = 1830e18;
    uint256 public constant PRE_REVEAL_MULTIPLIER = 2;

    uint256 public constant emissionStart = 1615734000; // "2021-03-14T15:00:00.000Z"
    uint256 public constant emissionEnd = 1931094000; // "2031-03-12T15:00:00.000Z" // emissionStartTimestamp + (SECONDS_IN_A_DAY * 365 * 10)
    uint256 public constant emissionPerDay = 10e18;
    mapping(uint256 => uint256) private _lastClaim;


    constructor() public CosmoMasksPowerERC20("CosmoMasks Power", "CMP") {
        _setURL("https://TheCosmoMasks.com/");
    }

    /**
     * @dev When accumulated CMPs have last been claimed for a CosmoMask index
     */
    function lastClaim(uint256 tokenIndex) public view returns (uint256) {
        require(ICosmoMasksShort(cosmoMasksAddress).ownerOf(tokenIndex) != address(0), "CosmoMasksPower: owner cannot be 0 address");
        require(tokenIndex < ICosmoMasksShort(cosmoMasksAddress).totalSupply(), "CosmoMasksPower: CosmoMasks at index has not been minted yet");

        uint256 lastClaimed = uint256(_lastClaim[tokenIndex]) != 0
            ? uint256(_lastClaim[tokenIndex])
            : emissionStart;
        return lastClaimed;
    }

    /**
     * @dev Accumulated CMP tokens for a CosmoMask token index.
     */
    function accumulated(uint256 tokenIndex) public view returns (uint256) {
        require(block.timestamp > emissionStart, "CosmoMasksPower: emission has not started yet");
        require(ICosmoMasksShort(cosmoMasksAddress).ownerOf(tokenIndex) != address(0), "CosmoMasksPower: owner cannot be 0 address");
        require(tokenIndex < ICosmoMasksShort(cosmoMasksAddress).totalSupply(), "CosmoMasksPower: CosmoMasks at index has not been minted yet");

        uint256 lastClaimed = lastClaim(tokenIndex);

        // Sanity check if last claim was on or after emission end
        if (lastClaimed >= emissionEnd)
            return 0;

        // Getting the min value of both
        uint256 accumulationPeriod = block.timestamp < emissionEnd ? block.timestamp : emissionEnd;
        uint256 totalAccumulated = accumulationPeriod.sub(lastClaimed).mul(emissionPerDay).div(SECONDS_IN_A_DAY);

        // If claim hasn't been done before for the index, add initial allotment (plus prereveal multiplier if applicable)
        if (lastClaimed == emissionStart) {
            uint256 initialAllotment = ICosmoMasksShort(cosmoMasksAddress).isMintedBeforeReveal(tokenIndex) == true
                ? INITIAL_ALLOTMENT.mul(PRE_REVEAL_MULTIPLIER)
                : INITIAL_ALLOTMENT;
            totalAccumulated = totalAccumulated.add(initialAllotment);
        }

        return totalAccumulated;
    }

    /**
     * @dev Permissioning not added because it is only callable once. It is set right after deployment and verified.
     */
    function setCosmoMasksAddress(address masksAddress) public onlyOwner {
        require(cosmoMasksAddress == address(0), "CosmoMasks: CosmoMasks has already setted");
        require(masksAddress != address(0), "CosmoMasks: CosmoMasks is the zero address");
        cosmoMasksAddress = masksAddress;
    }

    /**
     * @dev Claim mints CMPs and supports multiple CosmoMask token indices at once.
     */
    function claim(uint256[] memory tokenIndices) public returns (uint256) {
        require(block.timestamp > emissionStart, "CosmoMasksPower: Emission has not started yet");

        uint256 totalClaimQty = 0;
        for (uint256 i = 0; i < tokenIndices.length; i++) {
            // Sanity check for non-minted index
            require(tokenIndices[i] < ICosmoMasksShort(cosmoMasksAddress).totalSupply(), "CosmoMasksPower: CosmoMasks at index has not been minted yet");
            // Duplicate token index check
            for (uint256 j = i + 1; j < tokenIndices.length; j++)
                require(tokenIndices[i] != tokenIndices[j], "CosmoMasksPower: duplicate token index" );

            uint256 tokenIndex = tokenIndices[i];
            require(ICosmoMasksShort(cosmoMasksAddress).ownerOf(tokenIndex) == msg.sender, "CosmoMasksPower: sender is not the owner");

            uint256 claimQty = accumulated(tokenIndex);
            if (claimQty != 0) {
                totalClaimQty = totalClaimQty.add(claimQty);
                _lastClaim[tokenIndex] = block.timestamp;
            }
        }

        require(totalClaimQty != 0, "CosmoMasksPower: no accumulated tokens");
        _mint(msg.sender, totalClaimQty);
        return totalClaimQty;
    }

    function setURL(string memory newUrl) public onlyOwner {
        _setURL(newUrl);
    }
}

File 2 of 5 : CosmoMasksPowerERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

import "./libraries/SafeMath.sol";
import "./utils/Context.sol";

interface IERC20Burnable {
    function burn(uint256 amount) external returns (bool);
    function burnFrom(address account, uint256 amount) external returns (bool);
    // ERC20
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @dev Implementation of the {IERC20} interface.
 */
abstract contract CosmoMasksPowerERC20 is Context, IERC20Burnable {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    string private _url;
    address public cosmoMasksAddress;


    constructor(string memory name_, string memory symbol_) internal {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

    function url() public view returns (string memory) {
        return _url;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        // Approval check is skipped if the caller of transferFrom is the CosmoMasks contract. For better UX.
        if (msg.sender != cosmoMasksAddress)
            _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "CosmoMasksPower: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "CosmoMasksPower: decreased allowance below zero"));
        return true;
    }

    function burn(uint256 amount) public override returns (bool) {
        _burn(_msgSender(), amount);
        return true;
    }

    function burnFrom(address account, uint256 amount) public override returns (bool) {
        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "CosmoMasksPower:  burn amount exceeds allowance");
        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "CosmoMasksPower: transfer from the zero address");
        require(recipient != address(0), "CosmoMasksPower: transfer to the zero address");
        _balances[sender] = _balances[sender].sub(amount, "CosmoMasksPower: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "CosmoMasksPower: mint to the zero address");
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "CosmoMasksPower: burn from the zero address");
        _balances[account] = _balances[account].sub(amount, "CosmoMasksPower: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "CosmoMasksPower: approve from the zero address");
        require(spender != address(0),"CosmoMasksPower: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _setURL(string memory newUrl) internal {
        _url = newUrl;
    }
}

File 3 of 5 : SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    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;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }
}

File 4 of 5 : Context.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction.
 */
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
}

File 5 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 */
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

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":[],"name":"INITIAL_ALLOTMENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRE_REVEAL_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECONDS_IN_A_DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIndex","type":"uint256"}],"name":"accumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIndices","type":"uint256[]"}],"name":"claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cosmoMasksAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIndex","type":"uint256"}],"name":"lastClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"masksAddress","type":"address"}],"name":"setCosmoMasksAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUrl","type":"string"}],"name":"setURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"url","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280601081526020016f21b7b9b6b7a6b0b9b5b9902837bbb2b960811b815250604051806040016040528060038152602001620434d560ec1b8152506000620000696200013360201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000c890600490602085019062000150565b508051620000de90600590602084019062000150565b50506006805460ff191660121790555060408051808201909152601a81527f68747470733a2f2f546865436f736d6f4d61736b732e636f6d2f00000000000060208201526200012d9062000137565b620001fc565b3390565b80516200014c90600790602084019062000150565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001885760008555620001d3565b82601f10620001a357805160ff1916838001178555620001d3565b82800160010185558215620001d3579182015b82811115620001d3578251825591602001919060010190620001b6565b50620001e1929150620001e5565b5090565b5b80821115620001e15760008155600101620001e6565b612749806200020c6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806373422b311161010457806395d89b41116100a2578063c607cde711610071578063c607cde714610661578063dd62ed3e1461067e578063f2fde38b146106b9578063f9cfa06f146106ec576101cf565b806395d89b41146105df578063a457c2d7146105e7578063a9059cbb14610620578063b551b82f14610659576101cf565b80637a061602116100de5780637a0616021461056b5780638368909c1461059e5780638d31fa32146105a65780638da5cb5b146105d7576101cf565b806373422b3114610484578063773434081461048c57806379cc679014610532576101cf565b80633d3728b5116101715780635600f04f1161014b5780635600f04f1461039c5780636ba4c138146103a457806370a0823114610447578063715018a61461047a576101cf565b80633d3728b51461035a57806342966c6814610377578063513da94814610394576101cf565b806323b872dd116101ad57806323b872dd146102b8578063313ce567146102fb578063367df165146103195780633950935114610321576101cf565b806306fdde03146101d4578063095ea7b31461025157806318160ddd1461029e575b600080fd5b6101dc6106f4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61028a6004803603604081101561026757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107a8565b604080519115158252519081900360200190f35b6102a66107c6565b60408051918252519081900360200190f35b61028a600480360360608110156102ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107cc565b61030361088c565b6040805160ff9092168252519081900360200190f35b6102a6610895565b61028a6004803603604081101561033757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108a2565b6102a66004803603602081101561037057600080fd5b50356108fd565b61028a6004803603602081101561038d57600080fd5b5035610b2e565b6102a6610b49565b6101dc610b51565b6102a6600480360360208110156103ba57600080fd5b8101906020810181356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bd0945050505050565b6102a66004803603602081101561045d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fa7565b610482610fcf565b005b6102a66110e6565b610482600480360360208110156104a257600080fd5b8101906020810181356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110eb945050505050565b61028a6004803603604081101561054857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561119f565b6104826004803603602081101561058157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111f5565b6102a66113bf565b6105ae6113c7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6105ae6113e3565b6101dc6113ff565b61028a600480360360408110156105fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561147e565b61028a6004803603604081101561063657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356114f3565b6102a6611507565b6102a66004803603602081101561067757600080fd5b5035611513565b6102a66004803603604081101561069457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166118bf565b610482600480360360208110156106cf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118f7565b6102a6611a98565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561079e5780601f106107735761010080835404028352916020019161079e565b820191906000526020600020905b81548152906001019060200180831161078157829003601f168201915b5050505050905090565b60006107bc6107b5611a9f565b8484611aa3565b5060015b92915050565b60035490565b60006107d9848484611bea565b60085473ffffffffffffffffffffffffffffffffffffffff1633146108825761088284610804611a9f565b61087d856040518060600160405280603281526020016124e36032913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526002602052604081209061084f611a9f565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190611db1565b611aa3565b5060019392505050565b60065460ff1690565b6863345a083e94d8000081565b60006107bc6108af611a9f565b8461087d85600260006108c0611a9f565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490611e62565b600854604080517f6352211e000000000000000000000000000000000000000000000000000000008152600481018490529051600092839273ffffffffffffffffffffffffffffffffffffffff90911691636352211e91602480820192602092909190829003018186803b15801561097457600080fd5b505afa158015610988573d6000803e3d6000fd5b505050506040513d602081101561099e57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125ed602a913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7557600080fd5b505afa158015610a89573d6000803e3d6000fd5b505050506040513d6020811015610a9f57600080fd5b50518210610af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806123fb603c913960400191505060405180910390fd5b600082815260096020526040812054610b155763604e24f0610b25565b6000838152600960205260409020545b9150505b919050565b6000610b41610b3b611a9f565b83611edd565b506001919050565b63604e24f081565b60078054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561079e5780601f106107735761010080835404028352916020019161079e565b600063604e24f04211610c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612515602d913960400191505060405180910390fd5b6000805b8351811015610f4657600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ca357600080fd5b505afa158015610cb7573d6000803e3d6000fd5b505050506040513d6020811015610ccd57600080fd5b50518451859083908110610cdd57fe5b602002602001015110610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806123fb603c913960400191505060405180910390fd5b600181015b8451811015610dd057848181518110610d5557fe5b6020026020010151858381518110610d6957fe5b60200260200101511415610dc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806126456026913960400191505060405180910390fd5b600101610d40565b506000848281518110610ddf57fe5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806124926028913960400191505060405180910390fd5b6000610f1682611513565b90508015610f3c57610f288482611e62565b600083815260096020526040902042905593505b5050600101610c32565b5080610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806126c56026913960400191505060405180910390fd5b6107c0338261201b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610fd7611a9f565b73ffffffffffffffffffffffffffffffffffffffff16610ff56113e3565b73ffffffffffffffffffffffffffffffffffffffff161461107757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600281565b6110f3611a9f565b73ffffffffffffffffffffffffffffffffffffffff166111116113e3565b73ffffffffffffffffffffffffffffffffffffffff161461119357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61119c8161212c565b50565b6000806111d7836040518060600160405280602f8152602001612696602f91396111d0876111cb611a9f565b6118bf565b9190611db1565b90506111eb846111e5611a9f565b83611aa3565b6108828484611edd565b6111fd611a9f565b73ffffffffffffffffffffffffffffffffffffffff1661121b6113e3565b73ffffffffffffffffffffffffffffffffffffffff161461129d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60085473ffffffffffffffffffffffffffffffffffffffff161561130c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806124ba6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612350602a913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b63731a27f081565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561079e5780601f106107735761010080835404028352916020019161079e565b60006107bc61148b611a9f565b8461087d856040518060600160405280602f81526020016123cc602f9139600260006114b5611a9f565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190611db1565b60006107bc611500611a9f565b8484611bea565b678ac7230489e8000081565b600063604e24f04211611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061259f602d913960400191505060405180910390fd5b600854604080517f6352211e00000000000000000000000000000000000000000000000000000000815260048101859052905160009273ffffffffffffffffffffffffffffffffffffffff1691636352211e916024808301926020929190829003018186803b1580156115e357600080fd5b505afa1580156115f7573d6000803e3d6000fd5b505050506040513d602081101561160d57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125ed602a913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e457600080fd5b505afa1580156116f8573d6000803e3d6000fd5b505050506040513d602081101561170e57600080fd5b50518210611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806123fb603c913960400191505060405180910390fd5b6000611772836108fd565b905063731a27f08110611789576000915050610b29565b600063731a27f042106117a05763731a27f06117a2565b425b905060006117cf620151806117c9678ac7230489e800006117c38688612143565b906121ba565b9061222d565b905063604e24f08314156118b757600854604080517fbc28d70200000000000000000000000000000000000000000000000000000000815260048101889052905160009273ffffffffffffffffffffffffffffffffffffffff169163bc28d702916024808301926020929190829003018186803b15801561184f57600080fd5b505afa158015611863573d6000803e3d6000fd5b505050506040513d602081101561187957600080fd5b50511515600114611893576863345a083e94d800006118a7565b6118a76863345a083e94d8000060026121ba565b90506118b38282611e62565b9150505b949350505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b6118ff611a9f565b73ffffffffffffffffffffffffffffffffffffffff1661191d6113e3565b73ffffffffffffffffffffffffffffffffffffffff161461199f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061237a6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6201518081565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612617602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611b7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806123a0602c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611c56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612437602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611cc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612542602d913960400191505060405180910390fd5b611d0c8160405180606001604052806030815260200161256f6030913973ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549190611db1565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054611d489082611e62565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611e5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e1f578181015183820152602001611e07565b50505050905090810190601f168015611e4c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611ed657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216611f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061266b602b913960400191505060405180910390fd5b611f93816040518060600160405280602c8152602001612466602c913973ffffffffffffffffffffffffffffffffffffffff85166000908152600160205260409020549190611db1565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611fc69082612143565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216612087576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806126eb6029913960400191505060405180910390fd5b6003546120949082611e62565b60035573ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546120c79082611e62565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b805161213f9060079060208401906122ae565b5050565b6000828211156121b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826121c9575060006107c0565b828202828482816121d657fe5b0414611ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125cc6021913960400191505060405180910390fd5b600080821161229d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816122a657fe5b049392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826122e4576000855561232a565b82601f106122fd57805160ff191683800117855561232a565b8280016001018555821561232a579182015b8281111561232a57825182559160200191906001019061230f565b5061233692915061233a565b5090565b5b80821115612336576000815560010161233b56fe436f736d6f4d61736b733a20436f736d6f4d61736b7320697320746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a20617070726f766520746f20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f436f736d6f4d61736b73506f7765723a20436f736d6f4d61736b7320617420696e64657820686173206e6f74206265656e206d696e74656420796574436f736d6f4d61736b73506f7765723a207472616e736665722066726f6d20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a206275726e20616d6f756e7420657863656564732062616c616e6365436f736d6f4d61736b73506f7765723a2073656e646572206973206e6f7420746865206f776e6572436f736d6f4d61736b733a20436f736d6f4d61736b732068617320616c726561647920736574746564436f736d6f4d61736b73506f7765723a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f4d61736b73506f7765723a20456d697373696f6e20686173206e6f74207374617274656420796574436f736d6f4d61736b73506f7765723a207472616e7366657220746f20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f736d6f4d61736b73506f7765723a20656d697373696f6e20686173206e6f74207374617274656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f736d6f4d61736b73506f7765723a206f776e65722063616e6e6f7420626520302061646472657373436f736d6f4d61736b73506f7765723a20617070726f76652066726f6d20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a206475706c696361746520746f6b656e20696e646578436f736d6f4d61736b73506f7765723a206275726e2066726f6d20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a20206275726e20616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f4d61736b73506f7765723a206e6f20616363756d756c6174656420746f6b656e73436f736d6f4d61736b73506f7765723a206d696e7420746f20746865207a65726f2061646472657373a2646970667358221220521f6d538418848c4a91da945cfd13f6b30c0bf01d95a823aa52e537b4a0f2b264736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806373422b311161010457806395d89b41116100a2578063c607cde711610071578063c607cde714610661578063dd62ed3e1461067e578063f2fde38b146106b9578063f9cfa06f146106ec576101cf565b806395d89b41146105df578063a457c2d7146105e7578063a9059cbb14610620578063b551b82f14610659576101cf565b80637a061602116100de5780637a0616021461056b5780638368909c1461059e5780638d31fa32146105a65780638da5cb5b146105d7576101cf565b806373422b3114610484578063773434081461048c57806379cc679014610532576101cf565b80633d3728b5116101715780635600f04f1161014b5780635600f04f1461039c5780636ba4c138146103a457806370a0823114610447578063715018a61461047a576101cf565b80633d3728b51461035a57806342966c6814610377578063513da94814610394576101cf565b806323b872dd116101ad57806323b872dd146102b8578063313ce567146102fb578063367df165146103195780633950935114610321576101cf565b806306fdde03146101d4578063095ea7b31461025157806318160ddd1461029e575b600080fd5b6101dc6106f4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61028a6004803603604081101561026757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107a8565b604080519115158252519081900360200190f35b6102a66107c6565b60408051918252519081900360200190f35b61028a600480360360608110156102ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107cc565b61030361088c565b6040805160ff9092168252519081900360200190f35b6102a6610895565b61028a6004803603604081101561033757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108a2565b6102a66004803603602081101561037057600080fd5b50356108fd565b61028a6004803603602081101561038d57600080fd5b5035610b2e565b6102a6610b49565b6101dc610b51565b6102a6600480360360208110156103ba57600080fd5b8101906020810181356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bd0945050505050565b6102a66004803603602081101561045d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fa7565b610482610fcf565b005b6102a66110e6565b610482600480360360208110156104a257600080fd5b8101906020810181356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110eb945050505050565b61028a6004803603604081101561054857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561119f565b6104826004803603602081101561058157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111f5565b6102a66113bf565b6105ae6113c7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6105ae6113e3565b6101dc6113ff565b61028a600480360360408110156105fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561147e565b61028a6004803603604081101561063657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356114f3565b6102a6611507565b6102a66004803603602081101561067757600080fd5b5035611513565b6102a66004803603604081101561069457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166118bf565b610482600480360360208110156106cf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118f7565b6102a6611a98565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561079e5780601f106107735761010080835404028352916020019161079e565b820191906000526020600020905b81548152906001019060200180831161078157829003601f168201915b5050505050905090565b60006107bc6107b5611a9f565b8484611aa3565b5060015b92915050565b60035490565b60006107d9848484611bea565b60085473ffffffffffffffffffffffffffffffffffffffff1633146108825761088284610804611a9f565b61087d856040518060600160405280603281526020016124e36032913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526002602052604081209061084f611a9f565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190611db1565b611aa3565b5060019392505050565b60065460ff1690565b6863345a083e94d8000081565b60006107bc6108af611a9f565b8461087d85600260006108c0611a9f565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490611e62565b600854604080517f6352211e000000000000000000000000000000000000000000000000000000008152600481018490529051600092839273ffffffffffffffffffffffffffffffffffffffff90911691636352211e91602480820192602092909190829003018186803b15801561097457600080fd5b505afa158015610988573d6000803e3d6000fd5b505050506040513d602081101561099e57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125ed602a913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7557600080fd5b505afa158015610a89573d6000803e3d6000fd5b505050506040513d6020811015610a9f57600080fd5b50518210610af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806123fb603c913960400191505060405180910390fd5b600082815260096020526040812054610b155763604e24f0610b25565b6000838152600960205260409020545b9150505b919050565b6000610b41610b3b611a9f565b83611edd565b506001919050565b63604e24f081565b60078054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561079e5780601f106107735761010080835404028352916020019161079e565b600063604e24f04211610c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612515602d913960400191505060405180910390fd5b6000805b8351811015610f4657600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ca357600080fd5b505afa158015610cb7573d6000803e3d6000fd5b505050506040513d6020811015610ccd57600080fd5b50518451859083908110610cdd57fe5b602002602001015110610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806123fb603c913960400191505060405180910390fd5b600181015b8451811015610dd057848181518110610d5557fe5b6020026020010151858381518110610d6957fe5b60200260200101511415610dc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806126456026913960400191505060405180910390fd5b600101610d40565b506000848281518110610ddf57fe5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806124926028913960400191505060405180910390fd5b6000610f1682611513565b90508015610f3c57610f288482611e62565b600083815260096020526040902042905593505b5050600101610c32565b5080610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806126c56026913960400191505060405180910390fd5b6107c0338261201b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610fd7611a9f565b73ffffffffffffffffffffffffffffffffffffffff16610ff56113e3565b73ffffffffffffffffffffffffffffffffffffffff161461107757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600281565b6110f3611a9f565b73ffffffffffffffffffffffffffffffffffffffff166111116113e3565b73ffffffffffffffffffffffffffffffffffffffff161461119357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61119c8161212c565b50565b6000806111d7836040518060600160405280602f8152602001612696602f91396111d0876111cb611a9f565b6118bf565b9190611db1565b90506111eb846111e5611a9f565b83611aa3565b6108828484611edd565b6111fd611a9f565b73ffffffffffffffffffffffffffffffffffffffff1661121b6113e3565b73ffffffffffffffffffffffffffffffffffffffff161461129d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60085473ffffffffffffffffffffffffffffffffffffffff161561130c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806124ba6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612350602a913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b63731a27f081565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561079e5780601f106107735761010080835404028352916020019161079e565b60006107bc61148b611a9f565b8461087d856040518060600160405280602f81526020016123cc602f9139600260006114b5611a9f565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190611db1565b60006107bc611500611a9f565b8484611bea565b678ac7230489e8000081565b600063604e24f04211611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061259f602d913960400191505060405180910390fd5b600854604080517f6352211e00000000000000000000000000000000000000000000000000000000815260048101859052905160009273ffffffffffffffffffffffffffffffffffffffff1691636352211e916024808301926020929190829003018186803b1580156115e357600080fd5b505afa1580156115f7573d6000803e3d6000fd5b505050506040513d602081101561160d57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125ed602a913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e457600080fd5b505afa1580156116f8573d6000803e3d6000fd5b505050506040513d602081101561170e57600080fd5b50518210611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806123fb603c913960400191505060405180910390fd5b6000611772836108fd565b905063731a27f08110611789576000915050610b29565b600063731a27f042106117a05763731a27f06117a2565b425b905060006117cf620151806117c9678ac7230489e800006117c38688612143565b906121ba565b9061222d565b905063604e24f08314156118b757600854604080517fbc28d70200000000000000000000000000000000000000000000000000000000815260048101889052905160009273ffffffffffffffffffffffffffffffffffffffff169163bc28d702916024808301926020929190829003018186803b15801561184f57600080fd5b505afa158015611863573d6000803e3d6000fd5b505050506040513d602081101561187957600080fd5b50511515600114611893576863345a083e94d800006118a7565b6118a76863345a083e94d8000060026121ba565b90506118b38282611e62565b9150505b949350505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b6118ff611a9f565b73ffffffffffffffffffffffffffffffffffffffff1661191d6113e3565b73ffffffffffffffffffffffffffffffffffffffff161461199f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061237a6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6201518081565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612617602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611b7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806123a0602c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611c56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612437602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611cc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612542602d913960400191505060405180910390fd5b611d0c8160405180606001604052806030815260200161256f6030913973ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549190611db1565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054611d489082611e62565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611e5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e1f578181015183820152602001611e07565b50505050905090810190601f168015611e4c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611ed657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216611f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061266b602b913960400191505060405180910390fd5b611f93816040518060600160405280602c8152602001612466602c913973ffffffffffffffffffffffffffffffffffffffff85166000908152600160205260409020549190611db1565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611fc69082612143565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216612087576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806126eb6029913960400191505060405180910390fd5b6003546120949082611e62565b60035573ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546120c79082611e62565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b805161213f9060079060208401906122ae565b5050565b6000828211156121b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826121c9575060006107c0565b828202828482816121d657fe5b0414611ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125cc6021913960400191505060405180910390fd5b600080821161229d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816122a657fe5b049392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826122e4576000855561232a565b82601f106122fd57805160ff191683800117855561232a565b8280016001018555821561232a579182015b8281111561232a57825182559160200191906001019061230f565b5061233692915061233a565b5090565b5b80821115612336576000815560010161233b56fe436f736d6f4d61736b733a20436f736d6f4d61736b7320697320746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a20617070726f766520746f20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f436f736d6f4d61736b73506f7765723a20436f736d6f4d61736b7320617420696e64657820686173206e6f74206265656e206d696e74656420796574436f736d6f4d61736b73506f7765723a207472616e736665722066726f6d20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a206275726e20616d6f756e7420657863656564732062616c616e6365436f736d6f4d61736b73506f7765723a2073656e646572206973206e6f7420746865206f776e6572436f736d6f4d61736b733a20436f736d6f4d61736b732068617320616c726561647920736574746564436f736d6f4d61736b73506f7765723a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f4d61736b73506f7765723a20456d697373696f6e20686173206e6f74207374617274656420796574436f736d6f4d61736b73506f7765723a207472616e7366657220746f20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f736d6f4d61736b73506f7765723a20656d697373696f6e20686173206e6f74207374617274656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f736d6f4d61736b73506f7765723a206f776e65722063616e6e6f7420626520302061646472657373436f736d6f4d61736b73506f7765723a20617070726f76652066726f6d20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a206475706c696361746520746f6b656e20696e646578436f736d6f4d61736b73506f7765723a206275726e2066726f6d20746865207a65726f2061646472657373436f736d6f4d61736b73506f7765723a20206275726e20616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f4d61736b73506f7765723a206e6f20616363756d756c6174656420746f6b656e73436f736d6f4d61736b73506f7765723a206d696e7420746f20746865207a65726f2061646472657373a2646970667358221220521f6d538418848c4a91da945cfd13f6b30c0bf01d95a823aa52e537b4a0f2b264736f6c63430007060033

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.