Token ROGIN.AI

 

Overview [ERC-20]

Price
$0.35 @ 0.000202 Eth (+1.00%)
Fully Diluted Market Cap
Max Total Supply:
200,000,000 ROG

Holders:
2,662 ( 0.038%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

To train traders to prioritize risk mitigation in our Metaverse sandbox. To enable global users to have a sound investment mindset with collective intelligence strategies. To protect Intellectual Property with ownership of every certified strategy through NFTs.

Market

Volume (24H):$761,366.48
Market Capitalization:$0.00
Circulating Supply:0.00 ROG
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ROG

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 8 : ROG.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "./erc20/ERC20Lockable.sol";
import "./erc20/ERC20Burnable.sol";
import "./erc20/ERC20Mintable.sol";
import "./library/Pausable.sol";
import "./library/Freezable.sol";

contract ROG is ERC20Lockable, ERC20Burnable, ERC20Mintable, Freezable {
    string private constant _name = "ROGIN.AI";
    string private constant _symbol = "ROG";
    uint8 private constant _decimals = 18;
    uint256 private constant _initial_supply = 2_000_000_000;

    constructor() Ownable() {
        _cap = 3_000_000_000 * (10**uint256(_decimals));
        _mint(msg.sender, _initial_supply * (10**uint256(_decimals)));
    }

    function transfer(address to, uint256 amount)
        external
        override
        whenNotFrozen(msg.sender)
        whenNotPaused
        checkLock(msg.sender, amount)
        returns (bool success)
    {
        require(
            to != address(0),
            "ROG/transfer : Should not send to zero address"
        );
        _transfer(msg.sender, to, amount);
        success = true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    )
        external
        override
        whenNotFrozen(from)
        whenNotPaused
        checkLock(from, amount)
        returns (bool success)
    {
        require(
            to != address(0),
            "ROG/transferFrom : Should not send to zero address"
        );
        _transfer(from, to, amount);
        _approve(from, msg.sender, _allowances[from][msg.sender] - amount);
        success = true;
    }

    function approve(address spender, uint256 amount)
        external
        override
        returns (bool success)
    {
        require(
            spender != address(0),
            "ROG/approve : Should not approve zero address"
        );
        _approve(msg.sender, spender, amount);
        success = true;
    }

    function name() external pure override returns (string memory tokenName) {
        tokenName = _name;
    }

    function symbol()
        external
        pure
        override
        returns (string memory tokenSymbol)
    {
        tokenSymbol = _symbol;
    }

    function decimals() external pure override returns (uint8 tokenDecimals) {
        tokenDecimals = _decimals;
    }
}

File 2 of 8 : ERC20Lockable.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "./ERC20.sol";
import "../library/Ownable.sol";

abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 amount;
        uint256 due;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 due);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        require(
            _balances[from] >= _totalLocked[from] + amount,
            "ERC20Lockable/Cannot send more than unlocked amount"
        );
        _;
    }

    function _lock(
        address from,
        uint256 amount,
        uint256 due
    ) internal returns (bool success) {
        require(
            due > block.timestamp,
            "ERC20Lockable/lock : Cannot set due to past"
        );
        require(
            _balances[from] >= amount + _totalLocked[from],
            "ERC20Lockable/lock : locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from] + amount;
        _locks[from].push(LockInfo(amount, due));
        emit Lock(from, amount, due);
        success = true;
    }

    function _unlock(address from, uint256 index)
        internal
        returns (bool success)
    {
        LockInfo storage lock = _locks[from][index];
        _totalLocked[from] = _totalLocked[from] - lock.amount;
        emit Unlock(from, lock.amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function unlock(address from, uint256 idx) external returns (bool success) {
        require(
            _locks[from][idx].due < block.timestamp,
            "ERC20Lockable/unlock: cannot unlock before due"
        );
        _unlock(from, idx);
    }

    function unlockAll(address from) external returns (bool success) {
        for (uint256 i = 0; i < _locks[from].length; ) {
            i++;
            if (_locks[from][i - 1].due < block.timestamp) {
                if (_unlock(from, i - 1)) {
                    i--;
                }
            }
        }
        success = true;
    }

    function releaseLock(address from)
        external
        onlyOwner
        returns (bool success)
    {
        for (uint256 i = 0; i < _locks[from].length; ) {
            i++;
            if (_unlock(from, i - 1)) {
                i--;
            }
        }
        success = true;
    }

    function transferWithLockUp(
        address recipient,
        uint256 amount,
        uint256 due
    ) external onlyOwner returns (bool success) {
        require(
            recipient != address(0),
            "ERC20Lockable/transferWithLockUp : Cannot send to zero address"
        );
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, due);
        success = true;
    }

    function lockInfo(address locked, uint256 index)
        external
        view
        returns (uint256 amount, uint256 due)
    {
        LockInfo memory lock = _locks[locked][index];
        amount = lock.amount;
        due = lock.due;
    }

    function totalLocked(address locked)
        external
        view
        returns (uint256 amount, uint256 length)
    {
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

File 3 of 8 : ERC20Burnable.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "./ERC20.sol";
import "../library/Pausable.sol";

abstract contract ERC20Burnable is ERC20, Pausable {
    event Burn(address indexed burned, uint256 amount);

    function burn(uint256 amount)
        external
        whenNotPaused
        returns (bool success)
    {
        success = _burn(msg.sender, amount);
        emit Burn(msg.sender, amount);
        success = true;
    }

    function burnFrom(address burned, uint256 amount)
        external
        whenNotPaused
        returns (bool success)
    {
        _burn(burned, amount);
        emit Burn(burned, amount);
        success = _approve(
            burned,
            msg.sender,
            _allowances[burned][msg.sender] - amount
        );
    }
}

File 4 of 8 : ERC20Mintable.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "./ERC20.sol";
import "../library/Pausable.sol";

abstract contract ERC20Mintable is ERC20, Pausable {
    event Mint(address indexed receiver, uint256 amount);
    event MintFinished();
    uint256 internal _cap;
    bool internal _mintingFinished;

    ///@notice mint token
    ///@dev only owner can call this function
    function mint(address receiver, uint256 amount)
        external
        onlyOwner
        whenNotPaused
        returns (bool success)
    {
        require(
            receiver != address(0),
            "ERC20Mintable/mint : Should not mint to zero address"
        );
        require(
            _totalSupply + amount <= _cap,
            "ERC20Mintable/mint : Cannot mint over cap"
        );
        require(
            !_mintingFinished,
            "ERC20Mintable/mint : Cannot mint after finished"
        );
        _mint(receiver, amount);
        emit Mint(receiver, amount);
        success = true;
    }

    ///@notice finish minting, cannot mint after calling this function
    ///@dev only owner can call this function
    function finishMint() external onlyOwner returns (bool success) {
        require(
            !_mintingFinished,
            "ERC20Mintable/finishMinting : Already finished"
        );
        _mintingFinished = true;
        emit MintFinished();
        return true;
    }

    function cap() external view returns (uint256) {
        return _cap;
    }

    function isFinished() external view returns (bool finished) {
        finished = _mintingFinished;
    }
}

File 5 of 8 : Pausable.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "./Ownable.sol";

contract Pausable is Ownable {
    bool internal _paused;

    event Paused();
    event Unpaused();

    modifier whenPaused() {
        require(_paused, "Paused : This function can only be called when paused");
        _;
    }

    modifier whenNotPaused() {
        require(!_paused, "Paused : This function can only be called when not paused");
        _;
    }

    function pause() external onlyOwner whenNotPaused returns (bool success) {
        _paused = true;
        emit Paused();
        success = true;
    }

    function unPause() external onlyOwner whenPaused returns (bool success) {
        _paused = false;
        emit Unpaused();
        success = true;
    }

    function paused() external view returns (bool) {
        return _paused;
    }
}

File 6 of 8 : Freezable.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "./Ownable.sol";

contract Freezable is Ownable {
    mapping(address => bool) private _frozen;

    event Freeze(address indexed target);
    event Unfreeze(address indexed target);

    modifier whenNotFrozen(address target) {
        require(!_frozen[target], "Freezable : target is frozen");
        _;
    }

    function freeze(address target) external onlyOwner returns (bool success) {
        _frozen[target] = true;
        emit Freeze(target);
        success = true;
    }

    function unFreeze(address target)
        external
        onlyOwner
        returns (bool success)
    {
        _frozen[target] = false;
        emit Unfreeze(target);
        success = true;
    }

    function isFrozen(address target)
        external
        view
        returns (bool frozen)
    {
        return _frozen[target];
    }
}

File 7 of 8 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

abstract contract ERC20 {
    uint256 internal _totalSupply;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

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

    /*
     * Internal Functions for ERC20 standard logics
     */

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool success) {
        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + amount;
        emit Transfer(from, to, amount);
        success = true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal returns (bool success) {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
        success = true;
    }

    function _mint(address recipient, uint256 amount)
        internal
        returns (bool success)
    {
        _totalSupply = _totalSupply + amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(address(0), recipient, amount);
        success = true;
    }

    function _burn(address burned, uint256 amount)
        internal
        returns (bool success)
    {
        _balances[burned] = _balances[burned] - amount;
        _totalSupply = _totalSupply - amount;
        emit Transfer(burned, address(0), amount);
        success = true;
    }

    /*
     * public view functions to view common data
     */

    function totalSupply() external view returns (uint256 total) {
        total = _totalSupply;
    }

    function balanceOf(address owner) external view returns (uint256 balance) {
        balance = _balances[owner];
    }

    function allowance(address owner, address spender)
        external
        view
        returns (uint256 remaining)
    {
        remaining = _allowances[owner][spender];
    }

    /*
     * External view Function Interface to implement on final contract
     */
    function name() external view virtual returns (string memory tokenName);

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

    function decimals() external view virtual returns (uint8 tokenDecimals);

    /*
     * External Function Interface to implement on final contract
     */
    function transfer(address to, uint256 amount)
        external
        virtual
        returns (bool success);

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual returns (bool success);

    function approve(address spender, uint256 amount)
        external
        virtual
        returns (bool success);
}

File 8 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

abstract contract Ownable {
    address internal _owner;

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

    constructor() {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    modifier onlyOwner() {
        require(
            msg.sender == _owner,
            "Ownable : Function called by unauthorized user."
        );
        _;
    }

    function owner() external view returns (address ownerAddress) {
        ownerAddress = _owner;
    }

    function transferOwnership(address newOwner)
        public
        onlyOwner
        returns (bool success)
    {
        require(newOwner != address(0), "Ownable/transferOwnership : cannot transfer ownership to zero address");
        success = _transferOwnership(newOwner);
    }

    function renounceOwnership() external onlyOwner returns (bool success) {
        success = _transferOwnership(address(0));
    }

    function _transferOwnership(address newOwner) internal returns (bool success) {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
        success = true;
    }
}

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

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":"burned","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"due","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"currentOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"burned","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"finishMint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"freeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFinished","outputs":[{"internalType":"bool","name":"finished","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"ownerAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"tokenSymbol","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"name":"transferWithLockUp","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"unFreeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unPause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"unlockAll","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3601260ff16600a620000c1919062000314565b63b2d05e00620000d2919062000451565b6007819055506200010d33601260ff16600a620000f0919062000314565b637735940062000101919062000451565b6200011460201b60201c565b50620004f8565b6000816000546200012691906200025c565b60008190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200017991906200025c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200021c91906200023f565b60405180910390a36001905092915050565b6200023981620004b2565b82525050565b60006020820190506200025660008301846200022e565b92915050565b60006200026982620004b2565b91506200027683620004b2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620002ae57620002ad620004bc565b5b828201905092915050565b6000808291508390505b60018511156200030b57808604811115620002e357620002e2620004bc565b5b6001851615620002f35780820291505b80810290506200030385620004eb565b9450620002c3565b94509492505050565b60006200032182620004b2565b91506200032e83620004b2565b92506200035d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000365565b905092915050565b6000826200037757600190506200044a565b816200038757600090506200044a565b8160018114620003a05760028114620003ab57620003e1565b60019150506200044a565b60ff841115620003c057620003bf620004bc565b5b8360020a915084821115620003da57620003d9620004bc565b5b506200044a565b5060208310610133831016604e8410600b84101617156200041b5782820a905083811115620004155762000414620004bc565b5b6200044a565b6200042a8484846001620002b9565b92509050818404811115620004445762000443620004bc565b5b81810290505b9392505050565b60006200045e82620004b2565b91506200046b83620004b2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620004a757620004a6620004bc565b5b828202905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b61395f80620005086000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806383cfab4211610104578063c4f3a853116100a2578063e4cc18be11610071578063e4cc18be1461060d578063e58398361461062b578063f2fde38b1461065b578063f7b188a51461068b576101da565b8063c4f3a8531461054c578063d1c469161461057c578063d8fb9337146105ac578063dd62ed3e146105dd576101da565b80638da5cb5b116100de5780638da5cb5b146104af57806395d89b41146104cd578063a9059cbb146104eb578063b2520a7c1461051b576101da565b806383cfab42146104315780638456cb59146104615780638d1fdf2f1461047f576101da565b806340c10f191161017c578063715018a61161014b578063715018a61461039557806379cc6790146103b35780637b352962146103e35780637eee288d14610401576101da565b806340c10f19146102e757806342966c68146103175780635c975abb1461034757806370a0823114610365576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b578063355274ea1461029957806338b82092146102b7576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e76106a9565b6040516101f49190613479565b60405180910390f35b61021760048036038101906102129190612c54565b6106e6565b604051610224919061345e565b60405180910390f35b61023561076d565b60405161024291906136bb565b60405180910390f35b61026560048036038101906102609190612c05565b610776565b604051610272919061345e565b60405180910390f35b610283610a41565b60405161029091906136ff565b60405180910390f35b6102a1610a4a565b6040516102ae91906136bb565b60405180910390f35b6102d160048036038101906102cc9190612c90565b610a54565b6040516102de919061345e565b60405180910390f35b61030160048036038101906102fc9190612c54565b610b79565b60405161030e919061345e565b60405180910390f35b610331600480360381019061032c9190612cdf565b610dd0565b60405161033e919061345e565b60405180910390f35b61034f610e85565b60405161035c919061345e565b60405180910390f35b61037f600480360381019061037a9190612ba0565b610e9c565b60405161038c91906136bb565b60405180910390f35b61039d610ee5565b6040516103aa919061345e565b60405180910390f35b6103cd60048036038101906103c89190612c54565b610f86565b6040516103da919061345e565b60405180910390f35b6103eb6110cb565b6040516103f8919061345e565b60405180910390f35b61041b60048036038101906104169190612c54565b6110e2565b604051610428919061345e565b60405180910390f35b61044b60048036038101906104469190612ba0565b6111bf565b604051610458919061345e565b60405180910390f35b6104696112f5565b604051610476919061345e565b60405180910390f35b61049960048036038101906104949190612ba0565b611425565b6040516104a6919061345e565b60405180910390f35b6104b761155b565b6040516104c49190613443565b60405180910390f35b6104d5611585565b6040516104e29190613479565b60405180910390f35b61050560048036038101906105009190612c54565b6115c2565b604051610512919061345e565b60405180910390f35b61053560048036038101906105309190612c54565b6117f9565b6040516105439291906136d6565b60405180910390f35b61056660048036038101906105619190612ba0565b6118ba565b604051610573919061345e565b60405180910390f35b61059660048036038101906105919190612ba0565b6119f0565b6040516105a3919061345e565b60405180910390f35b6105c660048036038101906105c19190612ba0565b611b16565b6040516105d49291906136d6565b60405180910390f35b6105f760048036038101906105f29190612bc9565b611ba5565b60405161060491906136bb565b60405180910390f35b610615611c2c565b604051610622919061345e565b60405180910390f35b61064560048036038101906106409190612ba0565b611d5c565b604051610652919061345e565b60405180910390f35b61067560048036038101906106709190612ba0565b611db2565b604051610682919061345e565b60405180910390f35b610693611ec4565b6040516106a0919061345e565b60405180910390f35b60606040518060400160405280600881526020017f524f47494e2e4149000000000000000000000000000000000000000000000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074e9061363b565b60405180910390fd5b610762338484611ff3565b506001905092915050565b60008054905090565b600083600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd9061365b565b60405180910390fd5b600660009054906101000a900460ff1615610856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084d9061355b565b60405180910390fd5b848380600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108a39190613736565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b9061361b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b9061359b565b60405180910390fd5b61099f8787876120e6565b50610a32873387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a2d919061378c565b611ff3565b50600193505050509392505050565b60006012905090565b6000600754905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610add906135db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d9061349b565b60405180910390fd5b610b613385856120e6565b50610b6d848484612274565b50600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02906135db565b60405180910390fd5b600660009054906101000a900460ff1615610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c529061355b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc29061353b565b60405180910390fd5b60075482600054610cdc9190613736565b1115610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d14906135fb565b60405180910390fd5b600860009054906101000a900460ff1615610d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d649061357b565b60405180910390fd5b610d778383612500565b508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688583604051610dbe91906136bb565b60405180910390a26001905092915050565b6000600660009054906101000a900460ff1615610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e199061355b565b60405180910390fd5b610e2c3383612614565b90503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca583604051610e7491906136bb565b60405180910390a260019050919050565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e906135db565b60405180910390fd5b610f816000612728565b905090565b6000600660009054906101000a900460ff1615610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf9061355b565b60405180910390fd5b610fe28383612614565b508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405161102991906136bb565b60405180910390a26110c3833384600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110be919061378c565b611ff3565b905092915050565b6000600860009054906101000a900460ff16905090565b600042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061115c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160010154106111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a59061351b565b60405180910390fd5b6111b883836127f0565b5092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611248906135db565b60405180910390fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906135db565b60405180910390fd5b600660009054906101000a900460ff16156113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce9061355b565b60405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a16001905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ae906135db565b60405180910390fd5b6001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f524f470000000000000000000000000000000000000000000000000000000000815250905090565b600033600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116499061365b565b60405180910390fd5b600660009054906101000a900460ff16156116a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116999061355b565b60405180910390fd5b338380600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ef9190613736565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117679061361b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906135bb565b60405180910390fd5b6117eb3387876120e6565b506001935050505092915050565b6000806000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611875577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156119e657808061191790613872565b91505042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600183611967919061378c565b8154811061199e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001015410156119e1576119cc836001836119c7919061378c565b6127f0565b156119e05780806119dc90613848565b9150505b5b6118c2565b5060019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a79906135db565b60405180910390fd5b60005b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611b0c578080611ada90613872565b915050611af383600183611aee919061378c565b6127f0565b15611b07578080611b0390613848565b9150505b611a85565b5060019050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb5906135db565b60405180910390fd5b600860009054906101000a900460ff1615611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d05906134bb565b60405180910390fd5b6001600860006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b906135db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eab9061369b565b60405180910390fd5b611ebd82612728565b9050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d906135db565b60405180910390fd5b600660009054906101000a900460ff16611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c9061367b565b60405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a16001905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516120d391906136bb565b60405180910390a3600190509392505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612133919061378c565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121c19190613736565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161226191906136bb565b60405180910390a3600190509392505050565b60004282116122b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122af906134fb565b60405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836123039190613736565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b906134db565b60405180910390fd5b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123cf9190613736565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280858152602001848152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84846040516124ed9291906136d6565b60405180910390a2600190509392505050565b6000816000546125109190613736565b60008190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125619190613736565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161260291906136bb565b60405180910390a36001905092915050565b600081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612661919061378c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000546126b2919061378c565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161271691906136bb565b60405180910390a36001905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061286a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020190508060000154600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c9919061378c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826000015460405161295691906136bb565b60405180910390a2600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506129ec919061378c565b81548110612a23577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060020201600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612aa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016000820154816000015560018201548160010155905050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480612b42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b600081359050612b85816138fb565b92915050565b600081359050612b9a81613912565b92915050565b600060208284031215612bb257600080fd5b6000612bc084828501612b76565b91505092915050565b60008060408385031215612bdc57600080fd5b6000612bea85828601612b76565b9250506020612bfb85828601612b76565b9150509250929050565b600080600060608486031215612c1a57600080fd5b6000612c2886828701612b76565b9350506020612c3986828701612b76565b9250506040612c4a86828701612b8b565b9150509250925092565b60008060408385031215612c6757600080fd5b6000612c7585828601612b76565b9250506020612c8685828601612b8b565b9150509250929050565b600080600060608486031215612ca557600080fd5b6000612cb386828701612b76565b9350506020612cc486828701612b8b565b9250506040612cd586828701612b8b565b9150509250925092565b600060208284031215612cf157600080fd5b6000612cff84828501612b8b565b91505092915050565b612d11816137c0565b82525050565b612d20816137d2565b82525050565b6000612d318261371a565b612d3b8185613725565b9350612d4b818560208601613815565b612d54816138ea565b840191505092915050565b6000612d6c603e83613725565b91507f45524332304c6f636b61626c652f7472616e73666572576974684c6f636b557060008301527f203a2043616e6e6f742073656e6420746f207a65726f206164647265737300006020830152604082019050919050565b6000612dd2602e83613725565b91507f45524332304d696e7461626c652f66696e6973684d696e74696e67203a20416c60008301527f72656164792066696e69736865640000000000000000000000000000000000006020830152604082019050919050565b6000612e38604083613725565b91507f45524332304c6f636b61626c652f6c6f636b203a206c6f636b656420746f746160008301527f6c2073686f756c6420626520736d616c6c6572207468616e2062616c616e63656020830152604082019050919050565b6000612e9e602b83613725565b91507f45524332304c6f636b61626c652f6c6f636b203a2043616e6e6f74207365742060008301527f64756520746f20706173740000000000000000000000000000000000000000006020830152604082019050919050565b6000612f04602e83613725565b91507f45524332304c6f636b61626c652f756e6c6f636b3a2063616e6e6f7420756e6c60008301527f6f636b206265666f7265206475650000000000000000000000000000000000006020830152604082019050919050565b6000612f6a603483613725565b91507f45524332304d696e7461626c652f6d696e74203a2053686f756c64206e6f742060008301527f6d696e7420746f207a65726f20616464726573730000000000000000000000006020830152604082019050919050565b6000612fd0603983613725565b91507f506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792060008301527f62652063616c6c6564207768656e206e6f7420706175736564000000000000006020830152604082019050919050565b6000613036602f83613725565b91507f45524332304d696e7461626c652f6d696e74203a2043616e6e6f74206d696e7460008301527f2061667465722066696e697368656400000000000000000000000000000000006020830152604082019050919050565b600061309c603283613725565b91507f524f472f7472616e7366657246726f6d203a2053686f756c64206e6f7420736560008301527f6e6420746f207a65726f206164647265737300000000000000000000000000006020830152604082019050919050565b6000613102602e83613725565b91507f524f472f7472616e73666572203a2053686f756c64206e6f742073656e64207460008301527f6f207a65726f20616464726573730000000000000000000000000000000000006020830152604082019050919050565b6000613168602f83613725565b91507f4f776e61626c65203a2046756e6374696f6e2063616c6c656420627920756e6160008301527f7574686f72697a656420757365722e00000000000000000000000000000000006020830152604082019050919050565b60006131ce602983613725565b91507f45524332304d696e7461626c652f6d696e74203a2043616e6e6f74206d696e7460008301527f206f7665722063617000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613234603383613725565b91507f45524332304c6f636b61626c652f43616e6e6f742073656e64206d6f7265207460008301527f68616e20756e6c6f636b656420616d6f756e74000000000000000000000000006020830152604082019050919050565b600061329a602d83613725565b91507f524f472f617070726f7665203a2053686f756c64206e6f7420617070726f766560008301527f207a65726f2061646472657373000000000000000000000000000000000000006020830152604082019050919050565b6000613300601c83613725565b91507f467265657a61626c65203a207461726765742069732066726f7a656e000000006000830152602082019050919050565b6000613340603583613725565b91507f506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792060008301527f62652063616c6c6564207768656e2070617573656400000000000000000000006020830152604082019050919050565b60006133a6604583613725565b91507f4f776e61626c652f7472616e736665724f776e657273686970203a2063616e6e60008301527f6f74207472616e73666572206f776e65727368697020746f207a65726f20616460208301527f64726573730000000000000000000000000000000000000000000000000000006040830152606082019050919050565b61342e816137fe565b82525050565b61343d81613808565b82525050565b60006020820190506134586000830184612d08565b92915050565b60006020820190506134736000830184612d17565b92915050565b600060208201905081810360008301526134938184612d26565b905092915050565b600060208201905081810360008301526134b481612d5f565b9050919050565b600060208201905081810360008301526134d481612dc5565b9050919050565b600060208201905081810360008301526134f481612e2b565b9050919050565b6000602082019050818103600083015261351481612e91565b9050919050565b6000602082019050818103600083015261353481612ef7565b9050919050565b6000602082019050818103600083015261355481612f5d565b9050919050565b6000602082019050818103600083015261357481612fc3565b9050919050565b6000602082019050818103600083015261359481613029565b9050919050565b600060208201905081810360008301526135b48161308f565b9050919050565b600060208201905081810360008301526135d4816130f5565b9050919050565b600060208201905081810360008301526135f48161315b565b9050919050565b60006020820190508181036000830152613614816131c1565b9050919050565b6000602082019050818103600083015261363481613227565b9050919050565b600060208201905081810360008301526136548161328d565b9050919050565b60006020820190508181036000830152613674816132f3565b9050919050565b6000602082019050818103600083015261369481613333565b9050919050565b600060208201905081810360008301526136b481613399565b9050919050565b60006020820190506136d06000830184613425565b92915050565b60006040820190506136eb6000830185613425565b6136f86020830184613425565b9392505050565b60006020820190506137146000830184613434565b92915050565b600081519050919050565b600082825260208201905092915050565b6000613741826137fe565b915061374c836137fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613781576137806138bb565b5b828201905092915050565b6000613797826137fe565b91506137a2836137fe565b9250828210156137b5576137b46138bb565b5b828203905092915050565b60006137cb826137de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613833578082015181840152602081019050613818565b83811115613842576000848401525b50505050565b6000613853826137fe565b91506000821415613867576138666138bb565b5b600182039050919050565b600061387d826137fe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138b0576138af6138bb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b613904816137c0565b811461390f57600080fd5b50565b61391b816137fe565b811461392657600080fd5b5056fea2646970667358221220a1559d1d50eb0cc79ebebf14d15f13645e1014f780b80101cec13641dd1a48c364736f6c63430008000033

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.