ETH Price: $3,263.58 (-0.35%)
Gas: 1 Gwei

Token

Plasma (PLASMA)
 

Overview

Max Total Supply

22,799.2903 PLASMA

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
214.7814 PLASMA

Value
$0.00
0x6e4d602cc4893e1fa9fb1bc702e9a2c37522fcc4
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Plasma

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-16
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/*
    Note: This version of plasma has been migrated
    Please check the Space Yetis contract for the correct address
*/

/*
    ERC20I (ERC20 0xInuarashi Edition)
    Minified and Gas Optimized
    From the efforts of the 0x Collective
    https://0xcollective.net
*/

contract ERC20I {
    // Token Params
    string public name;
    string public symbol;
    constructor(string memory name_, string memory symbol_) {
        name = name_;
        symbol = symbol_;
    }

    // Decimals
    uint8 public constant decimals = 18;

    // Supply
    uint256 public totalSupply;
    
    // Mappings of Balances
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

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

    // Internal Functions
    function _mint(address to_, uint256 amount_) internal virtual {
        totalSupply += amount_;
        balanceOf[to_] += amount_;
        emit Transfer(address(0x0), to_, amount_);
    }
    function _burn(address from_, uint256 amount_) internal virtual {
        balanceOf[from_] -= amount_;
        totalSupply -= amount_;
        emit Transfer(from_, address(0x0), amount_);
    }
    function _approve(address owner_, address spender_, uint256 amount_) internal virtual {
        allowance[owner_][spender_] = amount_;
        emit Approval(owner_, spender_, amount_);
    }

    // Public Functions
    function approve(address spender_, uint256 amount_) public virtual returns (bool) {
        _approve(msg.sender, spender_, amount_);
        return true;
    }
    function transfer(address to_, uint256 amount_) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount_;
        balanceOf[to_] += amount_;
        emit Transfer(msg.sender, to_, amount_);
        return true;
    }
    function transferFrom(address from_, address to_, uint256 amount_) public virtual returns (bool) {
        if (allowance[from_][msg.sender] != type(uint256).max) {
            allowance[from_][msg.sender] -= amount_; }
        balanceOf[from_] -= amount_;
        balanceOf[to_] += amount_;
        emit Transfer(from_, to_, amount_);
        return true;
    }

    // 0xInuarashi Custom Functions
    function multiTransfer(address[] memory to_, uint256[] memory amounts_) public virtual {
        require(to_.length == amounts_.length, "ERC20I: To and Amounts length Mismatch!");
        for (uint256 i = 0; i < to_.length; i++) {
            transfer(to_[i], amounts_[i]);
        }
    }
    function multiTransferFrom(address[] memory from_, address[] memory to_, uint256[] memory amounts_) public virtual {
        require(from_.length == to_.length && from_.length == amounts_.length, "ERC20I: From, To, and Amounts length Mismatch!");
        for (uint256 i = 0; i < from_.length; i++) {
            transferFrom(from_[i], to_[i], amounts_[i]);
        }
    }
}

abstract contract ERC20IBurnable is ERC20I {
    function burn(uint256 amount_) external virtual {
        _burn(msg.sender, amount_);
    }
    function burnFrom(address from_, uint256 amount_) public virtual {
        uint256 _currentAllowance = allowance[from_][msg.sender];
        require(_currentAllowance >= amount_, "ERC20IBurnable: Burn amount requested exceeds allowance!");

        if (allowance[from_][msg.sender] != type(uint256).max) {
            allowance[from_][msg.sender] -= amount_; }

        _burn(from_, amount_);
    }
}

// Open0x Ownable (by 0xInuarashi)
abstract contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed oldOwner_, address indexed newOwner_);
    constructor() { owner = msg.sender; }
    modifier onlyOwner {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function _transferOwnership(address newOwner_) internal virtual {
        address _oldOwner = owner;
        owner = newOwner_;
        emit OwnershipTransferred(_oldOwner, newOwner_);    
    }
    function transferOwnership(address newOwner_) public virtual onlyOwner {
        require(newOwner_ != address(0x0), "Ownable: new owner is the zero address!");
        _transferOwnership(newOwner_);
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0x0));
    }
}

interface iSpaceYetis {
    function balanceOf(address address_) external view returns (uint256);
}

contract Plasma is ERC20IBurnable, Ownable {
    constructor() ERC20I("Plasma", "PLASMA") {}

    // Interfaces
    address public spaceYetisAddress;
    iSpaceYetis public SpaceYetis;
    function setSpaceYetis(address address_) external onlyOwner {
        spaceYetisAddress = address_; SpaceYetis = iSpaceYetis(address_); }

    // Times
    uint40 public yieldStartTime = 1640221200; // 2021-12-22_20-00 EST
    uint40 public yieldEndTime = 1955754000; // 2031-12-22_20-00 EST
    function setYieldEndTime(uint40 yieldEndTime_) external onlyOwner {
        yieldEndTime = yieldEndTime_; }

    // Yield Info
    uint256 public globalModulus = (10 ** 14);
    uint40 public yieldRatePerYeti = uint40(5 ether / globalModulus);
    struct Yield { uint40 lastUpdatedTime_; uint176 pendingRewards_; }
    mapping(address => Yield) public addressToYield;

    // Events
    event Claim(address to_, uint256 amount_);
    event CreditsDeducted(address from_, uint256 amount_);
    event CreditsAdded(address to_, uint256 amount_);

    // Controllers
    mapping(address => bool) public plasmaControllers;
    modifier onlyControllers { 
        require(plasmaControllers[msg.sender], "You are not a controller!"); _; }
    function setControllers(address address_, bool bool_) external onlyOwner {
        plasmaControllers[address_] = bool_; }
    
    // Credits System
    function deductCredits(address address_, uint256 amount_) external onlyControllers {
        uint176 _downscaledAmount = uint176(amount_ / globalModulus);
        require(addressToYield[address_].pendingRewards_ >= _downscaledAmount, 
            "Not enough credits!");
        addressToYield[address_].pendingRewards_ -= _downscaledAmount;
        emit CreditsDeducted(address_, amount_);
    }
    function addCredits(address address_, uint256 amount_) external onlyControllers {
        uint176 _downscaledAmount = uint176(amount_ / globalModulus);
        addressToYield[address_].pendingRewards_ += _downscaledAmount;
        emit CreditsAdded(address_, amount_);
    }

    // ERC20 Burn
    function burnByController(address from_, uint256 amount_) external onlyControllers {
        _burn(from_, amount_); }
    
    // Internal View Functions
    function __getSmallerValueUint40(uint40 a, uint40 b) internal pure returns (uint40) { return a < b ? a : b; }
    function __getTimestamp() internal view returns (uint40) {
        return __getSmallerValueUint40(uint40(block.timestamp), yieldEndTime); }
    function __getYieldRate(address address_) internal view returns (uint40) {
        return uint40(SpaceYetis.balanceOf(address_)) * yieldRatePerYeti; }

    function __calculateYieldReward(address address_) internal view returns (uint176) { 
        uint40 _totalYieldRate = __getYieldRate(address_);
        if (_totalYieldRate == 0) { return 0; }
        uint40 _time = __getTimestamp();
        uint40 _lastUpdate = addressToYield[address_].lastUpdatedTime_;

        if (_lastUpdate > yieldStartTime) {
            return (_totalYieldRate * (_time - _lastUpdate) / 1 days);
        } else { return 0; }
    }

    // Internal Write Functions
    function __updateYieldReward(address address_) internal {
        uint40 _time = __getTimestamp();
        uint40 _lastUpdate = addressToYield[address_].lastUpdatedTime_;

        // This is not triggered in the case that the user has never minted / held a token before.
        if (_lastUpdate > 0) { 
            addressToYield[address_].pendingRewards_ += __calculateYieldReward(address_);
        }
        // This updates the time until the end when yieldEndTime is set on block.timestamp >= yieldEndTime occurance.
        if (_lastUpdate != yieldEndTime) {
            addressToYield[address_].lastUpdatedTime_ = _time;
        }
    }
    function __claimYieldReward(address address_) internal {
        uint176 _pendingRewards = addressToYield[address_].pendingRewards_;

        if (_pendingRewards > 0) {
            addressToYield[address_].pendingRewards_ = 0;
        
            uint256 _expandedReward = uint256(_pendingRewards * globalModulus);
        
            _mint(address_, _expandedReward); 
            emit Claim(address_, _expandedReward);
        }
    }

    // Public Write Functions
    function updateReward(address address_) public {
        __updateYieldReward(address_);
    }
    function claimTokens(address address_) public {
        __updateYieldReward(address_);
        __claimYieldReward(address_);
    }

    // Public View Functions
    function getStorageClaimableTokens(address address_) public view returns (uint256) {
        return uint256(addressToYield[address_].pendingRewards_ * globalModulus);
    }
    function getPendingClaimableTokens(address address_) public view returns (uint256) {
        return uint256(__calculateYieldReward(address_) * globalModulus);
    }
    function getTotalClaimableTokens(address address_) public view returns (uint256) {
        return uint256((addressToYield[address_].pendingRewards_ + __calculateYieldReward(address_)) * globalModulus);
    }
    function getYieldRateOfAddress(address address_) public view returns (uint256) {
        return uint256(__getYieldRate(address_) * globalModulus); 
    }
    function raw_getStorageClaimableTokens(address address_) public view returns (uint256) {
        return addressToYield[address_].pendingRewards_;
    }
    function raw_getPendingClaimableTokens(address address_) public view returns (uint256) {
        return __calculateYieldReward(address_);
    }
    function raw_getTotalClaimableTokens(address address_) public view returns (uint256) {
        return addressToYield[address_].pendingRewards_ + __calculateYieldReward(address_);
    }
}

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":false,"internalType":"address","name":"to_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"CreditsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"CreditsDeducted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner_","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":"SpaceYetis","outputs":[{"internalType":"contract iSpaceYetis","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"addCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToYield","outputs":[{"internalType":"uint40","name":"lastUpdatedTime_","type":"uint40"},{"internalType":"uint176","name":"pendingRewards_","type":"uint176"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burnByController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"deductCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getPendingClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getStorageClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getTotalClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getYieldRateOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalModulus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from_","type":"address[]"},{"internalType":"address[]","name":"to_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"multiTransferFrom","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"plasmaControllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getPendingClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getStorageClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getTotalClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setControllers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setSpaceYetis","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint40","name":"yieldEndTime_","type":"uint40"}],"name":"setYieldEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spaceYetisAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"address","name":"address_","type":"address"}],"name":"updateReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yieldEndTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldRatePerYeti","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldStartTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"}]

608060405260078054600160a01b600160f01b031916680749270100061c3ca160a41b179055655af3107a400060088190556200004590674563918244f400006200019c565b6009805464ffffffffff191664ffffffffff929092169190911790553480156200006e57600080fd5b5060405180604001604052806006815260200165506c61736d6160d01b81525060405180604001604052806006815260200165504c41534d4160d01b8152508160009080519060200190620000c5929190620000f6565b508051620000db906001906020840190620000f6565b5050600580546001600160a01b0319163317905550620001fc565b8280546200010490620001bf565b90600052602060002090601f01602090048101928262000128576000855562000173565b82601f106200014357805160ff191683800117855562000173565b8280016001018555821562000173579182015b828111156200017357825182559160200191906001019062000156565b506200018192915062000185565b5090565b5b8082111562000181576000815560010162000186565b600082620001ba57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680620001d457607f821691505b60208210811415620001f657634e487b7160e01b600052602260045260246000fd5b50919050565b611bbd806200020c6000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c806382596f011161013b578063ba521580116100b8578063df8de3e71161007c578063df8de3e7146105b2578063e701fa4f146105c5578063eb0d22be146105d8578063ef3baf6b146105e1578063f2fde38b146105f457600080fd5b8063ba521580146104f2578063c071bd3d14610505578063c4fedb1414610563578063c7e6cc3f14610574578063dd62ed3e1461058757600080fd5b806394a3b4b9116100ff57806394a3b4b91461049e57806395d89b41146104b15780639b390135146104b9578063a3f0a43a146104cc578063a9059cbb146104df57600080fd5b806382596f011461043f57806385452f0914610452578063871ff40514610465578063877e139b146104785780638da5cb5b1461048b57600080fd5b80634dfc50c0116101c9578063752fd6101161018d578063752fd610146103c357806379cc6790146103d65780637bde17a3146103e95780637c073ede146103fc578063820aed191461041457600080fd5b80634dfc50c014610352578063632447c914610375578063649d35fd1461038857806370a082311461039b578063715018a6146103bb57600080fd5b80631e89d545116102105780631e89d545146102cf57806323b872dd146102e4578063313ce567146102f7578063314ca0391461031157806342966c681461033f57600080fd5b806302b343b11461024257806306fdde031461028e578063095ea7b3146102a357806318160ddd146102c6575b600080fd5b61027b61025036600461164a565b6001600160a01b03166000908152600a6020526040902054600160281b90046001600160b01b031690565b6040519081526020015b60405180910390f35b610296610607565b604051610285919061187f565b6102b66102b1366004611710565b610695565b6040519015158152602001610285565b61027b60025481565b6102e26102dd3660046117c2565b6106ab565b005b6102b66102f2366004611698565b610771565b6102ff601281565b60405160ff9091168152602001610285565b60075461032990600160c81b900464ffffffffff1681565b60405164ffffffffff9091168152602001610285565b6102e261034d366004611826565b610877565b6102b661036036600461164a565b600b6020526000908152604090205460ff1681565b6102e261038336600461164a565b610884565b61027b61039636600461164a565b61088d565b61027b6103a936600461164a565b60036020526000908152604090205481565b6102e26108ca565b61027b6103d136600461164a565b610900565b6102e26103e4366004611710565b610921565b6102e26103f736600461173a565b610a2a565b60075461032990600160a01b900464ffffffffff1681565b600754610427906001600160a01b031681565b6040516001600160a01b039091168152602001610285565b6102e261044d366004611710565b610b1a565b600654610427906001600160a01b031681565b6102e2610473366004611710565b610c7e565b6102e261048636600461164a565b610d63565b600554610427906001600160a01b031681565b6102e26104ac3660046116d4565b610db9565b610296610e0e565b6102e26104c7366004611858565b610e1b565b61027b6104da36600461164a565b610e6d565b6102b66104ed366004611710565b610eae565b61027b61050036600461164a565b610f38565b61053e61051336600461164a565b600a6020526000908152604090205464ffffffffff811690600160281b90046001600160b01b031682565b6040805164ffffffffff90931683526001600160b01b03909116602083015201610285565b6009546103299064ffffffffff1681565b61027b61058236600461164a565b610f85565b61027b610595366004611665565b600460209081526000928352604080842090915290825290205481565b6102e26105c036600461164a565b610fa4565b6102e26105d3366004611710565b610fb6565b61027b60085481565b61027b6105ef36600461164a565b610ff3565b6102e261060236600461164a565b610ffe565b6000805461061490611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461064090611ab9565b801561068d5780601f106106625761010080835404028352916020019161068d565b820191906000526020600020905b81548152906001019060200180831161067057829003601f168201915b505050505081565b60006106a2338484611097565b50600192915050565b80518251146107115760405162461bcd60e51b815260206004820152602760248201527f4552433230493a20546f20616e6420416d6f756e7473206c656e677468204d69604482015266736d617463682160c81b60648201526084015b60405180910390fd5b60005b825181101561076c5761075983828151811061073257610732611b3b565b602002602001015183838151811061074c5761074c611b3b565b6020026020010151610eae565b508061076481611af4565b915050610714565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146107d6576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906107d0908490611a84565b90915550505b6001600160a01b038416600090815260036020526040812080548492906107fe908490611a84565b90915550506001600160a01b0383166000908152600360205260408120805484929061082b9084906119c0565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611b688339815191528460405161086591815260200190565b60405180910390a35060019392505050565b61088133826110f8565b50565b61088181611172565b6008546001600160a01b0382166000908152600a602052604081205490916108c491600160281b90046001600160b01b0316611a10565b92915050565b6005546001600160a01b031633146108f45760405162461bcd60e51b8152600401610708906118d4565b6108fe6000611259565b565b600060085461090e836112ab565b6001600160b01b03166108c49190611a10565b6001600160a01b0382166000908152600460209081526040808320338452909152902054818110156109bb5760405162461bcd60e51b815260206004820152603860248201527f4552433230494275726e61626c653a204275726e20616d6f756e74207265717560448201527f6573746564206578636565647320616c6c6f77616e63652100000000000000006064820152608401610708565b6001600160a01b038316600090815260046020908152604080832033845290915290205460001914610a20576001600160a01b038316600090815260046020908152604080832033845290915281208054849290610a1a908490611a84565b90915550505b61076c83836110f8565b81518351148015610a3c575080518351145b610a9f5760405162461bcd60e51b815260206004820152602e60248201527f4552433230493a2046726f6d2c20546f2c20616e6420416d6f756e7473206c6560448201526d6e677468204d69736d617463682160901b6064820152608401610708565b60005b8351811015610b1457610b01848281518110610ac057610ac0611b3b565b6020026020010151848381518110610ada57610ada611b3b565b6020026020010151848481518110610af457610af4611b3b565b6020026020010151610771565b5080610b0c81611af4565b915050610aa2565b50505050565b336000908152600b602052604090205460ff16610b495760405162461bcd60e51b815260040161070890611909565b600060085482610b5991906119d8565b6001600160a01b0384166000908152600a60205260409020549091506001600160b01b03808316600160281b909204161015610bcd5760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820637265646974732160681b6044820152606401610708565b6001600160a01b0383166000908152600a602052604090208054829190600590610c08908490600160281b90046001600160b01b0316611a5c565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507f1d9ca186c626e0ca14771900912a91678cb02770905264643d1f0d1cd2fded5e8383604051610c719291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b336000908152600b602052604090205460ff16610cad5760405162461bcd60e51b815260040161070890611909565b600060085482610cbd91906119d8565b6001600160a01b0384166000908152600a6020526040902080549192508291600590610cfa908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507fed46984c46e11f42ec323727ba7d99dc16be2d248a8aaa8982d492688497f09d8383604051610c719291906001600160a01b03929092168252602082015260400190565b6005546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610708906118d4565b600680546001600160a01b039092166001600160a01b0319928316811790915560078054909216179055565b6005546001600160a01b03163314610de35760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001805461061490611ab9565b6005546001600160a01b03163314610e455760405162461bcd60e51b8152600401610708906118d4565b6007805464ffffffffff909216600160c81b0264ffffffffff60c81b19909216919091179055565b6000600854610e7b836112ab565b6001600160a01b0384166000908152600a602052604090205461090e9190600160281b90046001600160b01b0316611995565b33600090815260036020526040812080548391908390610ecf908490611a84565b90915550506001600160a01b03831660009081526003602052604081208054849290610efc9084906119c0565b90915550506040518281526001600160a01b038416903390600080516020611b688339815191529060200160405180910390a350600192915050565b6000610f43826112ab565b6001600160a01b0383166000908152600a6020526040902054610f769190600160281b90046001600160b01b0316611995565b6001600160b01b031692915050565b6000600854610f938361134d565b64ffffffffff166108c49190611a10565b610fad81611172565b610881816113e0565b336000908152600b602052604090205460ff16610fe55760405162461bcd60e51b815260040161070890611909565b610fef82826110f8565b5050565b6000610f76826112ab565b6005546001600160a01b031633146110285760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03811661108e5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610708565b61088181611259565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526003602052604081208054839290611120908490611a84565b9250508190555080600260008282546111399190611a84565b90915550506040518181526000906001600160a01b03841690600080516020611b68833981519152906020015b60405180910390a35050565b600061117c61149b565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff16801561120b576111ae836112ab565b6001600160a01b0384166000908152600a6020526040902080546005906111e6908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055505b60075464ffffffffff828116600160c81b909204161461076c576001600160a01b0383166000908152600a60205260409020805464ffffffffff841664ffffffffff19909116179055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806112b78361134d565b905064ffffffffff81166112ce5750600092915050565b60006112d861149b565b6001600160a01b0385166000908152600a602052604090205460075491925064ffffffffff90811691600160a01b900416811115611342576201518061131e8284611a9b565b6113289085611a2f565b61133291906119ec565b64ffffffffff1695945050505050565b506000949350505050565b6009546007546040516370a0823160e01b81526001600160a01b03848116600483015260009364ffffffffff169216906370a082319060240160206040518083038186803b15801561139e57600080fd5b505afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d6919061183f565b6108c49190611a2f565b6001600160a01b0381166000908152600a6020526040902054600160281b90046001600160b01b03168015610fef576001600160a01b0382166000908152600a60205260408120805465010000000000600160d81b0319169055600854611450906001600160b01b038416611a10565b905061145c83826114bf565b604080516001600160a01b0385168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49101610c71565b60006114ba42600760199054906101000a900464ffffffffff1661152f565b905090565b80600260008282546114d191906119c0565b90915550506001600160a01b038216600090815260036020526040812080548392906114fe9084906119c0565b90915550506040518181526001600160a01b03831690600090600080516020611b6883398151915290602001611166565b60008164ffffffffff168364ffffffffff161061154c578161154e565b825b9392505050565b80356001600160a01b038116811461156c57600080fd5b919050565b600082601f83011261158257600080fd5b8135602061159761159283611971565b611940565b80838252828201915082860187848660051b89010111156115b757600080fd5b60005b858110156115dd576115cb82611555565b845292840192908401906001016115ba565b5090979650505050505050565b600082601f8301126115fb57600080fd5b8135602061160b61159283611971565b80838252828201915082860187848660051b890101111561162b57600080fd5b60005b858110156115dd5781358452928401929084019060010161162e565b60006020828403121561165c57600080fd5b61154e82611555565b6000806040838503121561167857600080fd5b61168183611555565b915061168f60208401611555565b90509250929050565b6000806000606084860312156116ad57600080fd5b6116b684611555565b92506116c460208501611555565b9150604084013590509250925092565b600080604083850312156116e757600080fd5b6116f083611555565b91506020830135801515811461170557600080fd5b809150509250929050565b6000806040838503121561172357600080fd5b61172c83611555565b946020939093013593505050565b60008060006060848603121561174f57600080fd5b833567ffffffffffffffff8082111561176757600080fd5b61177387838801611571565b9450602086013591508082111561178957600080fd5b61179587838801611571565b935060408601359150808211156117ab57600080fd5b506117b8868287016115ea565b9150509250925092565b600080604083850312156117d557600080fd5b823567ffffffffffffffff808211156117ed57600080fd5b6117f986838701611571565b9350602085013591508082111561180f57600080fd5b5061181c858286016115ea565b9150509250929050565b60006020828403121561183857600080fd5b5035919050565b60006020828403121561185157600080fd5b5051919050565b60006020828403121561186a57600080fd5b813564ffffffffff8116811461154e57600080fd5b600060208083528351808285015260005b818110156118ac57858101830151858201604001528201611890565b818111156118be576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526019908201527f596f7520617265206e6f74206120636f6e74726f6c6c65722100000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196957611969611b51565b604052919050565b600067ffffffffffffffff82111561198b5761198b611b51565b5060051b60200190565b60006001600160b01b038281168482168083038211156119b7576119b7611b0f565b01949350505050565b600082198211156119d3576119d3611b0f565b500190565b6000826119e7576119e7611b25565b500490565b600064ffffffffff80841680611a0457611a04611b25565b92169190910492915050565b6000816000190483118215151615611a2a57611a2a611b0f565b500290565b600064ffffffffff80831681851681830481118215151615611a5357611a53611b0f565b02949350505050565b60006001600160b01b0383811690831681811015611a7c57611a7c611b0f565b039392505050565b600082821015611a9657611a96611b0f565b500390565b600064ffffffffff83811690831681811015611a7c57611a7c611b0f565b600181811c90821680611acd57607f821691505b60208210811415611aee57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b0857611b08611b0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ee0a56b62d0276655cf9ed854a3abf2aae5948648a91e4eeaa6f3fe2ffc6ad6364736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061023d5760003560e01c806382596f011161013b578063ba521580116100b8578063df8de3e71161007c578063df8de3e7146105b2578063e701fa4f146105c5578063eb0d22be146105d8578063ef3baf6b146105e1578063f2fde38b146105f457600080fd5b8063ba521580146104f2578063c071bd3d14610505578063c4fedb1414610563578063c7e6cc3f14610574578063dd62ed3e1461058757600080fd5b806394a3b4b9116100ff57806394a3b4b91461049e57806395d89b41146104b15780639b390135146104b9578063a3f0a43a146104cc578063a9059cbb146104df57600080fd5b806382596f011461043f57806385452f0914610452578063871ff40514610465578063877e139b146104785780638da5cb5b1461048b57600080fd5b80634dfc50c0116101c9578063752fd6101161018d578063752fd610146103c357806379cc6790146103d65780637bde17a3146103e95780637c073ede146103fc578063820aed191461041457600080fd5b80634dfc50c014610352578063632447c914610375578063649d35fd1461038857806370a082311461039b578063715018a6146103bb57600080fd5b80631e89d545116102105780631e89d545146102cf57806323b872dd146102e4578063313ce567146102f7578063314ca0391461031157806342966c681461033f57600080fd5b806302b343b11461024257806306fdde031461028e578063095ea7b3146102a357806318160ddd146102c6575b600080fd5b61027b61025036600461164a565b6001600160a01b03166000908152600a6020526040902054600160281b90046001600160b01b031690565b6040519081526020015b60405180910390f35b610296610607565b604051610285919061187f565b6102b66102b1366004611710565b610695565b6040519015158152602001610285565b61027b60025481565b6102e26102dd3660046117c2565b6106ab565b005b6102b66102f2366004611698565b610771565b6102ff601281565b60405160ff9091168152602001610285565b60075461032990600160c81b900464ffffffffff1681565b60405164ffffffffff9091168152602001610285565b6102e261034d366004611826565b610877565b6102b661036036600461164a565b600b6020526000908152604090205460ff1681565b6102e261038336600461164a565b610884565b61027b61039636600461164a565b61088d565b61027b6103a936600461164a565b60036020526000908152604090205481565b6102e26108ca565b61027b6103d136600461164a565b610900565b6102e26103e4366004611710565b610921565b6102e26103f736600461173a565b610a2a565b60075461032990600160a01b900464ffffffffff1681565b600754610427906001600160a01b031681565b6040516001600160a01b039091168152602001610285565b6102e261044d366004611710565b610b1a565b600654610427906001600160a01b031681565b6102e2610473366004611710565b610c7e565b6102e261048636600461164a565b610d63565b600554610427906001600160a01b031681565b6102e26104ac3660046116d4565b610db9565b610296610e0e565b6102e26104c7366004611858565b610e1b565b61027b6104da36600461164a565b610e6d565b6102b66104ed366004611710565b610eae565b61027b61050036600461164a565b610f38565b61053e61051336600461164a565b600a6020526000908152604090205464ffffffffff811690600160281b90046001600160b01b031682565b6040805164ffffffffff90931683526001600160b01b03909116602083015201610285565b6009546103299064ffffffffff1681565b61027b61058236600461164a565b610f85565b61027b610595366004611665565b600460209081526000928352604080842090915290825290205481565b6102e26105c036600461164a565b610fa4565b6102e26105d3366004611710565b610fb6565b61027b60085481565b61027b6105ef36600461164a565b610ff3565b6102e261060236600461164a565b610ffe565b6000805461061490611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461064090611ab9565b801561068d5780601f106106625761010080835404028352916020019161068d565b820191906000526020600020905b81548152906001019060200180831161067057829003601f168201915b505050505081565b60006106a2338484611097565b50600192915050565b80518251146107115760405162461bcd60e51b815260206004820152602760248201527f4552433230493a20546f20616e6420416d6f756e7473206c656e677468204d69604482015266736d617463682160c81b60648201526084015b60405180910390fd5b60005b825181101561076c5761075983828151811061073257610732611b3b565b602002602001015183838151811061074c5761074c611b3b565b6020026020010151610eae565b508061076481611af4565b915050610714565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146107d6576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906107d0908490611a84565b90915550505b6001600160a01b038416600090815260036020526040812080548492906107fe908490611a84565b90915550506001600160a01b0383166000908152600360205260408120805484929061082b9084906119c0565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611b688339815191528460405161086591815260200190565b60405180910390a35060019392505050565b61088133826110f8565b50565b61088181611172565b6008546001600160a01b0382166000908152600a602052604081205490916108c491600160281b90046001600160b01b0316611a10565b92915050565b6005546001600160a01b031633146108f45760405162461bcd60e51b8152600401610708906118d4565b6108fe6000611259565b565b600060085461090e836112ab565b6001600160b01b03166108c49190611a10565b6001600160a01b0382166000908152600460209081526040808320338452909152902054818110156109bb5760405162461bcd60e51b815260206004820152603860248201527f4552433230494275726e61626c653a204275726e20616d6f756e74207265717560448201527f6573746564206578636565647320616c6c6f77616e63652100000000000000006064820152608401610708565b6001600160a01b038316600090815260046020908152604080832033845290915290205460001914610a20576001600160a01b038316600090815260046020908152604080832033845290915281208054849290610a1a908490611a84565b90915550505b61076c83836110f8565b81518351148015610a3c575080518351145b610a9f5760405162461bcd60e51b815260206004820152602e60248201527f4552433230493a2046726f6d2c20546f2c20616e6420416d6f756e7473206c6560448201526d6e677468204d69736d617463682160901b6064820152608401610708565b60005b8351811015610b1457610b01848281518110610ac057610ac0611b3b565b6020026020010151848381518110610ada57610ada611b3b565b6020026020010151848481518110610af457610af4611b3b565b6020026020010151610771565b5080610b0c81611af4565b915050610aa2565b50505050565b336000908152600b602052604090205460ff16610b495760405162461bcd60e51b815260040161070890611909565b600060085482610b5991906119d8565b6001600160a01b0384166000908152600a60205260409020549091506001600160b01b03808316600160281b909204161015610bcd5760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820637265646974732160681b6044820152606401610708565b6001600160a01b0383166000908152600a602052604090208054829190600590610c08908490600160281b90046001600160b01b0316611a5c565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507f1d9ca186c626e0ca14771900912a91678cb02770905264643d1f0d1cd2fded5e8383604051610c719291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b336000908152600b602052604090205460ff16610cad5760405162461bcd60e51b815260040161070890611909565b600060085482610cbd91906119d8565b6001600160a01b0384166000908152600a6020526040902080549192508291600590610cfa908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507fed46984c46e11f42ec323727ba7d99dc16be2d248a8aaa8982d492688497f09d8383604051610c719291906001600160a01b03929092168252602082015260400190565b6005546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610708906118d4565b600680546001600160a01b039092166001600160a01b0319928316811790915560078054909216179055565b6005546001600160a01b03163314610de35760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001805461061490611ab9565b6005546001600160a01b03163314610e455760405162461bcd60e51b8152600401610708906118d4565b6007805464ffffffffff909216600160c81b0264ffffffffff60c81b19909216919091179055565b6000600854610e7b836112ab565b6001600160a01b0384166000908152600a602052604090205461090e9190600160281b90046001600160b01b0316611995565b33600090815260036020526040812080548391908390610ecf908490611a84565b90915550506001600160a01b03831660009081526003602052604081208054849290610efc9084906119c0565b90915550506040518281526001600160a01b038416903390600080516020611b688339815191529060200160405180910390a350600192915050565b6000610f43826112ab565b6001600160a01b0383166000908152600a6020526040902054610f769190600160281b90046001600160b01b0316611995565b6001600160b01b031692915050565b6000600854610f938361134d565b64ffffffffff166108c49190611a10565b610fad81611172565b610881816113e0565b336000908152600b602052604090205460ff16610fe55760405162461bcd60e51b815260040161070890611909565b610fef82826110f8565b5050565b6000610f76826112ab565b6005546001600160a01b031633146110285760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03811661108e5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610708565b61088181611259565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526003602052604081208054839290611120908490611a84565b9250508190555080600260008282546111399190611a84565b90915550506040518181526000906001600160a01b03841690600080516020611b68833981519152906020015b60405180910390a35050565b600061117c61149b565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff16801561120b576111ae836112ab565b6001600160a01b0384166000908152600a6020526040902080546005906111e6908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055505b60075464ffffffffff828116600160c81b909204161461076c576001600160a01b0383166000908152600a60205260409020805464ffffffffff841664ffffffffff19909116179055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806112b78361134d565b905064ffffffffff81166112ce5750600092915050565b60006112d861149b565b6001600160a01b0385166000908152600a602052604090205460075491925064ffffffffff90811691600160a01b900416811115611342576201518061131e8284611a9b565b6113289085611a2f565b61133291906119ec565b64ffffffffff1695945050505050565b506000949350505050565b6009546007546040516370a0823160e01b81526001600160a01b03848116600483015260009364ffffffffff169216906370a082319060240160206040518083038186803b15801561139e57600080fd5b505afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d6919061183f565b6108c49190611a2f565b6001600160a01b0381166000908152600a6020526040902054600160281b90046001600160b01b03168015610fef576001600160a01b0382166000908152600a60205260408120805465010000000000600160d81b0319169055600854611450906001600160b01b038416611a10565b905061145c83826114bf565b604080516001600160a01b0385168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49101610c71565b60006114ba42600760199054906101000a900464ffffffffff1661152f565b905090565b80600260008282546114d191906119c0565b90915550506001600160a01b038216600090815260036020526040812080548392906114fe9084906119c0565b90915550506040518181526001600160a01b03831690600090600080516020611b6883398151915290602001611166565b60008164ffffffffff168364ffffffffff161061154c578161154e565b825b9392505050565b80356001600160a01b038116811461156c57600080fd5b919050565b600082601f83011261158257600080fd5b8135602061159761159283611971565b611940565b80838252828201915082860187848660051b89010111156115b757600080fd5b60005b858110156115dd576115cb82611555565b845292840192908401906001016115ba565b5090979650505050505050565b600082601f8301126115fb57600080fd5b8135602061160b61159283611971565b80838252828201915082860187848660051b890101111561162b57600080fd5b60005b858110156115dd5781358452928401929084019060010161162e565b60006020828403121561165c57600080fd5b61154e82611555565b6000806040838503121561167857600080fd5b61168183611555565b915061168f60208401611555565b90509250929050565b6000806000606084860312156116ad57600080fd5b6116b684611555565b92506116c460208501611555565b9150604084013590509250925092565b600080604083850312156116e757600080fd5b6116f083611555565b91506020830135801515811461170557600080fd5b809150509250929050565b6000806040838503121561172357600080fd5b61172c83611555565b946020939093013593505050565b60008060006060848603121561174f57600080fd5b833567ffffffffffffffff8082111561176757600080fd5b61177387838801611571565b9450602086013591508082111561178957600080fd5b61179587838801611571565b935060408601359150808211156117ab57600080fd5b506117b8868287016115ea565b9150509250925092565b600080604083850312156117d557600080fd5b823567ffffffffffffffff808211156117ed57600080fd5b6117f986838701611571565b9350602085013591508082111561180f57600080fd5b5061181c858286016115ea565b9150509250929050565b60006020828403121561183857600080fd5b5035919050565b60006020828403121561185157600080fd5b5051919050565b60006020828403121561186a57600080fd5b813564ffffffffff8116811461154e57600080fd5b600060208083528351808285015260005b818110156118ac57858101830151858201604001528201611890565b818111156118be576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526019908201527f596f7520617265206e6f74206120636f6e74726f6c6c65722100000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196957611969611b51565b604052919050565b600067ffffffffffffffff82111561198b5761198b611b51565b5060051b60200190565b60006001600160b01b038281168482168083038211156119b7576119b7611b0f565b01949350505050565b600082198211156119d3576119d3611b0f565b500190565b6000826119e7576119e7611b25565b500490565b600064ffffffffff80841680611a0457611a04611b25565b92169190910492915050565b6000816000190483118215151615611a2a57611a2a611b0f565b500290565b600064ffffffffff80831681851681830481118215151615611a5357611a53611b0f565b02949350505050565b60006001600160b01b0383811690831681811015611a7c57611a7c611b0f565b039392505050565b600082821015611a9657611a96611b0f565b500390565b600064ffffffffff83811690831681811015611a7c57611a7c611b0f565b600181811c90821680611acd57607f821691505b60208210811415611aee57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b0857611b08611b0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ee0a56b62d0276655cf9ed854a3abf2aae5948648a91e4eeaa6f3fe2ffc6ad6364736f6c63430008070033

Deployed Bytecode Sourcemap

4712:5855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10068:153;;;;;;:::i;:::-;-1:-1:-1;;;;;10173:24:0;10146:7;10173:24;;;:14;:24;;;;;:40;-1:-1:-1;;;10173:40:0;;-1:-1:-1;;;;;10173:40:0;;10068:153;;;;9410:25:1;;;9398:2;9383:18;10068:153:0;;;;;;;;388:18;;;:::i;:::-;;;;;;;:::i;1662:162::-;;;;;;:::i;:::-;;:::i;:::-;;;5689:14:1;;5682:22;5664:41;;5652:2;5637:18;1662:162:0;5524:187:1;638:26:0;;;;;;2486:294;;;;;;:::i;:::-;;:::i;:::-;;2073:368;;;;;;:::i;:::-;;:::i;579:35::-;;612:2;579:35;;;;;10113:4:1;10101:17;;;10083:36;;10071:2;10056:18;579:35:0;9941:184:1;5139:39:0;;;;;-1:-1:-1;;;5139:39:0;;;;;;;;;9620:12:1;9608:25;;;9590:44;;9578:2;9563:18;5139:39:0;9446:194:1;3220:93:0;;;;;;:::i;:::-;;:::i;5791:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9068:95;;;;;;:::i;:::-;;:::i;9340:174::-;;;;;;:::i;:::-;;:::i;706:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;4495:105;;;:::i;9520:166::-;;;;;;:::i;:::-;;:::i;3319:406::-;;;;;;:::i;:::-;;:::i;2786:377::-;;;;;;:::i;:::-;;:::i;5067:41::-;;;;;-1:-1:-1;;;5067:41:0;;;;;;4871:29;;;;;-1:-1:-1;;;;;4871:29:0;;;;;;-1:-1:-1;;;;;5201:32:1;;;5183:51;;5171:2;5156:18;4871:29:0;5037:203:1;6120:402:0;;;;;;:::i;:::-;;:::i;4832:32::-;;;;;-1:-1:-1;;;;;4832:32:0;;;6528:278;;;;;;:::i;:::-;;:::i;4907:138::-;;;;;;:::i;:::-;;:::i;3801:20::-;;;;;-1:-1:-1;;;;;3801:20:0;;;5963:122;;;;;;:::i;:::-;;:::i;413:20::-;;;:::i;5209:108::-;;;;;;:::i;:::-;;:::i;9692:209::-;;;;;;:::i;:::-;;:::i;1830:237::-;;;;;;:::i;:::-;;:::i;10378:186::-;;;;;;:::i;:::-;;:::i;5535:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:47:0;;-1:-1:-1;;;;;5535:47:0;;;;;;;9847:12:1;9835:25;;;9817:44;;-1:-1:-1;;;;;9897:32:1;;;9892:2;9877:18;;9870:60;9790:18;5535:47:0;9645:291:1;5392:64:0;;;;;;;;;9907:155;;;;;;:::i;:::-;;:::i;757:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9169:133;;;;;;:::i;:::-;;:::i;6833:118::-;;;;;;:::i;:::-;;:::i;5344:41::-;;;;;;10227:145;;;;;;:::i;:::-;;:::i;4282:207::-;;;;;;:::i;:::-;;:::i;388:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1662:162::-;1738:4;1755:39;1764:10;1776:8;1786:7;1755:8;:39::i;:::-;-1:-1:-1;1812:4:0;1662:162;;;;:::o;2486:294::-;2606:8;:15;2592:3;:10;:29;2584:81;;;;-1:-1:-1;;;2584:81:0;;7503:2:1;2584:81:0;;;7485:21:1;7542:2;7522:18;;;7515:30;7581:34;7561:18;;;7554:62;-1:-1:-1;;;7632:18:1;;;7625:37;7679:19;;2584:81:0;;;;;;;;;2681:9;2676:97;2700:3;:10;2696:1;:14;2676:97;;;2732:29;2741:3;2745:1;2741:6;;;;;;;;:::i;:::-;;;;;;;2749:8;2758:1;2749:11;;;;;;;;:::i;:::-;;;;;;;2732:8;:29::i;:::-;-1:-1:-1;2712:3:0;;;;:::i;:::-;;;;2676:97;;;;2486:294;;:::o;2073:368::-;-1:-1:-1;;;;;2185:16:0;;2164:4;2185:16;;;:9;:16;;;;;;;;2202:10;2185:28;;;;;;;;-1:-1:-1;;2185:49:0;2181:112;;-1:-1:-1;;;;;2251:16:0;;;;;;:9;:16;;;;;;;;2268:10;2251:28;;;;;;;:39;;2283:7;;2251:16;:39;;2283:7;;2251:39;:::i;:::-;;;;-1:-1:-1;;2181:112:0;-1:-1:-1;;;;;2303:16:0;;;;;;:9;:16;;;;;:27;;2323:7;;2303:16;:27;;2323:7;;2303:27;:::i;:::-;;;;-1:-1:-1;;;;;;;2341:14:0;;;;;;:9;:14;;;;;:25;;2359:7;;2341:14;:25;;2359:7;;2341:25;:::i;:::-;;;;;;;;2398:3;-1:-1:-1;;;;;2382:29:0;2391:5;-1:-1:-1;;;;;2382:29:0;-1:-1:-1;;;;;;;;;;;2403:7:0;2382:29;;;;9410:25:1;;9398:2;9383:18;;9264:177;2382:29:0;;;;;;;;-1:-1:-1;2429:4:0;2073:368;;;;;:::o;3220:93::-;3279:26;3285:10;3297:7;3279:5;:26::i;:::-;3220:93;:::o;9068:95::-;9126:29;9146:8;9126:19;:29::i;9340:174::-;9492:13;;-1:-1:-1;;;;;9449:24:0;;9414:7;9449:24;;;:14;:24;;;;;:40;9414:7;;9449:56;;-1:-1:-1;;;9449:40:0;;-1:-1:-1;;;;;9449:40:0;:56;:::i;:::-;9434:72;9340:174;-1:-1:-1;;9340:174:0:o;4495:105::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;4560:32:::1;4587:3;4560:18;:32::i;:::-;4495:105::o:0;9520:166::-;9594:7;9664:13;;9629:32;9652:8;9629:22;:32::i;:::-;-1:-1:-1;;;;;9629:48:0;;;;;:::i;3319:406::-;-1:-1:-1;;;;;3423:16:0;;3395:25;3423:16;;;:9;:16;;;;;;;;3440:10;3423:28;;;;;;;;3470;;;;3462:97;;;;-1:-1:-1;;;3462:97:0;;9041:2:1;3462:97:0;;;9023:21:1;9080:2;9060:18;;;9053:30;9119:34;9099:18;;;9092:62;9190:26;9170:18;;;9163:54;9234:19;;3462:97:0;8839:420:1;3462:97:0;-1:-1:-1;;;;;3576:16:0;;;;;;:9;:16;;;;;;;;3593:10;3576:28;;;;;;;;-1:-1:-1;;3576:49:0;3572:112;;-1:-1:-1;;;;;3642:16:0;;;;;;:9;:16;;;;;;;;3659:10;3642:28;;;;;;;:39;;3674:7;;3642:16;:39;;3674:7;;3642:39;:::i;:::-;;;;-1:-1:-1;;3572:112:0;3696:21;3702:5;3709:7;3696:5;:21::i;2786:377::-;2936:3;:10;2920:5;:12;:26;:61;;;;;2966:8;:15;2950:5;:12;:31;2920:61;2912:120;;;;-1:-1:-1;;;2912:120:0;;8272:2:1;2912:120:0;;;8254:21:1;8311:2;8291:18;;;8284:30;8350:34;8330:18;;;8323:62;-1:-1:-1;;;8401:18:1;;;8394:44;8455:19;;2912:120:0;8070:410:1;2912:120:0;3048:9;3043:113;3067:5;:12;3063:1;:16;3043:113;;;3101:43;3114:5;3120:1;3114:8;;;;;;;;:::i;:::-;;;;;;;3124:3;3128:1;3124:6;;;;;;;;:::i;:::-;;;;;;;3132:8;3141:1;3132:11;;;;;;;;:::i;:::-;;;;;;;3101:12;:43::i;:::-;-1:-1:-1;3081:3:0;;;;:::i;:::-;;;;3043:113;;;;2786:377;;;:::o;6120:402::-;5910:10;5892:29;;;;:17;:29;;;;;;;;5884:67;;;;-1:-1:-1;;;5884:67:0;;;;;;;:::i;:::-;6214:25:::1;6260:13;;6250:7;:23;;;;:::i;:::-;-1:-1:-1::0;;;;;6293:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:40;6214:60;;-1:-1:-1;;;;;;6293:61:0;;::::1;-1:-1:-1::0;;;6293:40:0;;::::1;;:61;;6285:107;;;::::0;-1:-1:-1;;;6285:107:0;;6747:2:1;6285:107:0::1;::::0;::::1;6729:21:1::0;6786:2;6766:18;;;6759:30;-1:-1:-1;;;6805:18:1;;;6798:49;6864:18;;6285:107:0::1;6545:343:1::0;6285:107:0::1;-1:-1:-1::0;;;;;6403:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:61;;6447:17;;6403:24;:40:::1;::::0;:61:::1;::::0;6447:17;;-1:-1:-1;;;6403:61:0;::::1;-1:-1:-1::0;;;;;6403:61:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;6403:61:0::1;;;;;-1:-1:-1::0;;;;;6403:61:0::1;;;;;;6480:34;6496:8;6506:7;6480:34;;;;;;-1:-1:-1::0;;;;;5437:32:1;;;;5419:51;;5501:2;5486:18;;5479:34;5407:2;5392:18;;5245:274;6480:34:0::1;;;;;;;;6203:319;6120:402:::0;;:::o;6528:278::-;5910:10;5892:29;;;;:17;:29;;;;;;;;5884:67;;;;-1:-1:-1;;;5884:67:0;;;;;;;:::i;:::-;6619:25:::1;6665:13;;6655:7;:23;;;;:::i;:::-;-1:-1:-1::0;;;;;6690:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:61;;6619:60;;-1:-1:-1;6619:60:0;;6690:40:::1;::::0;:61:::1;::::0;6619:60;;-1:-1:-1;;;6690:61:0;::::1;-1:-1:-1::0;;;;;6690:61:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;6690:61:0::1;;;;;-1:-1:-1::0;;;;;6690:61:0::1;;;;;;6767:31;6780:8;6790:7;6767:31;;;;;;-1:-1:-1::0;;;;;5437:32:1;;;;5419:51;;5501:2;5486:18;;5479:34;5407:2;5392:18;;5245:274;4907:138:0;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;4978:17:::1;:28:::0;;-1:-1:-1;;;;;4978:28:0;;::::1;-1:-1:-1::0;;;;;;4978:28:0;;::::1;::::0;::::1;::::0;;;5008:10:::1;:34:::0;;;;::::1;;::::0;;4907:138::o;5963:122::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6047:27:0;;;::::1;;::::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;6047:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5963:122::o;413:20::-;;;;;;;:::i;5209:108::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;5286:12:::1;:28:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;5286:28:0::1;-1:-1:-1::0;;;;5286:28:0;;::::1;::::0;;;::::1;::::0;;5209:108::o;9692:209::-;9764:7;9879:13;;9843:32;9866:8;9843:22;:32::i;:::-;-1:-1:-1;;;;;9800:24:0;;;;;;:14;:24;;;;;:40;:75;;;-1:-1:-1;;;9800:40:0;;-1:-1:-1;;;;;9800:40:0;:75;:::i;1830:237::-;1929:10;1902:4;1919:21;;;:9;:21;;;;;:32;;1944:7;;1919:21;1902:4;;1919:32;;1944:7;;1919:32;:::i;:::-;;;;-1:-1:-1;;;;;;;1962:14:0;;;;;;:9;:14;;;;;:25;;1980:7;;1962:14;:25;;1980:7;;1962:25;:::i;:::-;;;;-1:-1:-1;;2003:34:0;;9410:25:1;;;-1:-1:-1;;;;;2003:34:0;;;2012:10;;-1:-1:-1;;;;;;;;;;;2003:34:0;9398:2:1;9383:18;2003:34:0;;;;;;;-1:-1:-1;2055:4:0;1830:237;;;;:::o;10378:186::-;10454:7;10524:32;10547:8;10524:22;:32::i;:::-;-1:-1:-1;;;;;10481:24:0;;;;;;:14;:24;;;;;:40;:75;;;-1:-1:-1;;;10481:40:0;;-1:-1:-1;;;;;10481:40:0;:75;:::i;:::-;-1:-1:-1;;;;;10474:82:0;;10378:186;-1:-1:-1;;10378:186:0:o;9907:155::-;9977:7;10039:13;;10012:24;10027:8;10012:14;:24::i;:::-;:40;;;;;;:::i;9169:133::-;9226:29;9246:8;9226:19;:29::i;:::-;9266:28;9285:8;9266:18;:28::i;6833:118::-;5910:10;5892:29;;;;:17;:29;;;;;;;;5884:67;;;;-1:-1:-1;;;5884:67:0;;;;;;;:::i;:::-;6927:21:::1;6933:5;6940:7;6927:5;:21::i;:::-;6833:118:::0;;:::o;10227:145::-;10305:7;10332:32;10355:8;10332:22;:32::i;4282:207::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4372:25:0;::::1;4364:77;;;::::0;-1:-1:-1;;;4364:77:0;;7095:2:1;4364:77:0::1;::::0;::::1;7077:21:1::0;7134:2;7114:18;;;7107:30;7173:34;7153:18;;;7146:62;-1:-1:-1;;;7224:18:1;;;7217:37;7271:19;;4364:77:0::1;6893:403:1::0;4364:77:0::1;4452:29;4471:9;4452:18;:29::i;1436:193::-:0;-1:-1:-1;;;;;1533:17:0;;;;;;;:9;:17;;;;;;;;:27;;;;;;;;;;;;;:37;;;1586:35;;9410:25:1;;;1586:35:0;;9383:18:1;1586:35:0;;;;;;;1436:193;;;:::o;1233:197::-;-1:-1:-1;;;;;1308:16:0;;;;;;:9;:16;;;;;:27;;1328:7;;1308:16;:27;;1328:7;;1308:27;:::i;:::-;;;;;;;;1361:7;1346:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;1384:38:0;;9410:25:1;;;1408:3:0;;-1:-1:-1;;;;;1384:38:0;;;-1:-1:-1;;;;;;;;;;;1384:38:0;9398:2:1;9383:18;1384:38:0;;;;;;;;1233:197;;:::o;7920:654::-;7987:12;8002:16;:14;:16::i;:::-;-1:-1:-1;;;;;8050:24:0;;8029:18;8050:24;;;:14;:24;;;;;:41;7987:31;;-1:-1:-1;8050:41:0;;8208:15;;8204:125;;8285:32;8308:8;8285:22;:32::i;:::-;-1:-1:-1;;;;;8241:24:0;;;;;;:14;:24;;;;;:76;;:40;;:76;;;;-1:-1:-1;;;8241:76:0;;-1:-1:-1;;;;;8241:76:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;8241:76:0;;;;;-1:-1:-1;;;;;8241:76:0;;;;;;8204:125;8477:12;;;8462:27;;;-1:-1:-1;;;8477:12:0;;;;8462:27;8458:109;;-1:-1:-1;;;;;8506:24:0;;;;;;:14;:24;;;;;:49;;;;;-1:-1:-1;;8506:49:0;;;;;;7976:598;;7920:654;:::o;4078:198::-;4173:5;;;-1:-1:-1;;;;;4189:17:0;;;-1:-1:-1;;;;;;4189:17:0;;;;;;;4222:42;;4173:5;;;4189:17;4173:5;;4222:42;;4153:17;;4222:42;4142:134;4078:198;:::o;7415:464::-;7488:7;7509:22;7534:24;7549:8;7534:14;:24::i;:::-;7509:49;-1:-1:-1;7573:20:0;;;7569:39;;-1:-1:-1;7604:1:0;;7415:464;-1:-1:-1;;7415:464:0:o;7569:39::-;7618:12;7633:16;:14;:16::i;:::-;-1:-1:-1;;;;;7681:24:0;;7660:18;7681:24;;;:14;:24;;;;;:41;7753:14;;7618:31;;-1:-1:-1;7681:41:0;;;;;-1:-1:-1;;;7753:14:0;;;7739:28;;7735:137;;;7834:6;7811:19;7819:11;7811:5;:19;:::i;:::-;7792:39;;:15;:39;:::i;:::-;:48;;;;:::i;:::-;7784:57;;;7415:464;-1:-1:-1;;;;;7415:464:0:o;7735:137::-;-1:-1:-1;7868:1:0;;7415:464;-1:-1:-1;;;;7415:464:0:o;7256:151::-;7388:16;;7354:10;;:30;;-1:-1:-1;;;7354:30:0;;-1:-1:-1;;;;;5201:32:1;;;7354:30:0;;;5183:51:1;7321:6:0;;7388:16;;;7354:10;;:20;;5156:18:1;;7354:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7347:57;;;;:::i;8580:449::-;-1:-1:-1;;;;;8672:24:0;;8646:23;8672:24;;;:14;:24;;;;;:40;-1:-1:-1;;;8672:40:0;;-1:-1:-1;;;;;8672:40:0;8729:19;;8725:297;;-1:-1:-1;;;;;8765:24:0;;8808:1;8765:24;;;:14;:24;;;;;:44;;-1:-1:-1;;;;;;8765:44:0;;;8886:13;;8868:31;;-1:-1:-1;;;;;8868:31:0;;;:::i;:::-;8834:66;;8925:32;8931:8;8941:15;8925:5;:32::i;:::-;8978;;;-1:-1:-1;;;;;5437:32:1;;5419:51;;5501:2;5486:18;;5479:34;;;8978:32:0;;5392:18:1;8978:32:0;5245:274:1;7110:140:0;7159:6;7185:62;7216:15;7234:12;;;;;;;;;;;7185:23;:62::i;:::-;7178:69;;7110:140;:::o;1036:191::-;1124:7;1109:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;1142:14:0;;;;;;:9;:14;;;;;:25;;1160:7;;1142:14;:25;;1160:7;;1142:25;:::i;:::-;;;;-1:-1:-1;;1183:36:0;;9410:25:1;;;-1:-1:-1;;;;;1183:36:0;;;1200:3;;-1:-1:-1;;;;;;;;;;;1183:36:0;9398:2:1;9383:18;1183:36:0;9264:177:1;6995:109:0;7071:6;7092:1;7088:5;;:1;:5;;;:13;;7100:1;7088:13;;;7096:1;7088:13;7081:20;6995:109;-1:-1:-1;;;6995:109:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:679::-;246:5;299:3;292:4;284:6;280:17;276:27;266:55;;317:1;314;307:12;266:55;353:6;340:20;379:4;403:60;419:43;459:2;419:43;:::i;:::-;403:60;:::i;:::-;485:3;509:2;504:3;497:15;537:2;532:3;528:12;521:19;;572:2;564:6;560:15;624:3;619:2;613;610:1;606:10;598:6;594:23;590:32;587:41;584:61;;;641:1;638;631:12;584:61;663:1;673:169;687:2;684:1;681:9;673:169;;;744:23;763:3;744:23;:::i;:::-;732:36;;788:12;;;;820;;;;705:1;698:9;673:169;;;-1:-1:-1;860:5:1;;192:679;-1:-1:-1;;;;;;;192:679:1:o;876:673::-;930:5;983:3;976:4;968:6;964:17;960:27;950:55;;1001:1;998;991:12;950:55;1037:6;1024:20;1063:4;1087:60;1103:43;1143:2;1103:43;:::i;1087:60::-;1169:3;1193:2;1188:3;1181:15;1221:2;1216:3;1212:12;1205:19;;1256:2;1248:6;1244:15;1308:3;1303:2;1297;1294:1;1290:10;1282:6;1278:23;1274:32;1271:41;1268:61;;;1325:1;1322;1315:12;1268:61;1347:1;1357:163;1371:2;1368:1;1365:9;1357:163;;;1428:17;;1416:30;;1466:12;;;;1498;;;;1389:1;1382:9;1357:163;;1554:186;1613:6;1666:2;1654:9;1645:7;1641:23;1637:32;1634:52;;;1682:1;1679;1672:12;1634:52;1705:29;1724:9;1705:29;:::i;1745:260::-;1813:6;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1913:29;1932:9;1913:29;:::i;:::-;1903:39;;1961:38;1995:2;1984:9;1980:18;1961:38;:::i;:::-;1951:48;;1745:260;;;;;:::o;2010:328::-;2087:6;2095;2103;2156:2;2144:9;2135:7;2131:23;2127:32;2124:52;;;2172:1;2169;2162:12;2124:52;2195:29;2214:9;2195:29;:::i;:::-;2185:39;;2243:38;2277:2;2266:9;2262:18;2243:38;:::i;:::-;2233:48;;2328:2;2317:9;2313:18;2300:32;2290:42;;2010:328;;;;;:::o;2343:347::-;2408:6;2416;2469:2;2457:9;2448:7;2444:23;2440:32;2437:52;;;2485:1;2482;2475:12;2437:52;2508:29;2527:9;2508:29;:::i;:::-;2498:39;;2587:2;2576:9;2572:18;2559:32;2634:5;2627:13;2620:21;2613:5;2610:32;2600:60;;2656:1;2653;2646:12;2600:60;2679:5;2669:15;;;2343:347;;;;;:::o;2695:254::-;2763:6;2771;2824:2;2812:9;2803:7;2799:23;2795:32;2792:52;;;2840:1;2837;2830:12;2792:52;2863:29;2882:9;2863:29;:::i;:::-;2853:39;2939:2;2924:18;;;;2911:32;;-1:-1:-1;;;2695:254:1:o;2954:821::-;3106:6;3114;3122;3175:2;3163:9;3154:7;3150:23;3146:32;3143:52;;;3191:1;3188;3181:12;3143:52;3231:9;3218:23;3260:18;3301:2;3293:6;3290:14;3287:34;;;3317:1;3314;3307:12;3287:34;3340:61;3393:7;3384:6;3373:9;3369:22;3340:61;:::i;:::-;3330:71;;3454:2;3443:9;3439:18;3426:32;3410:48;;3483:2;3473:8;3470:16;3467:36;;;3499:1;3496;3489:12;3467:36;3522:63;3577:7;3566:8;3555:9;3551:24;3522:63;:::i;:::-;3512:73;;3638:2;3627:9;3623:18;3610:32;3594:48;;3667:2;3657:8;3654:16;3651:36;;;3683:1;3680;3673:12;3651:36;;3706:63;3761:7;3750:8;3739:9;3735:24;3706:63;:::i;:::-;3696:73;;;2954:821;;;;;:::o;3780:595::-;3898:6;3906;3959:2;3947:9;3938:7;3934:23;3930:32;3927:52;;;3975:1;3972;3965:12;3927:52;4015:9;4002:23;4044:18;4085:2;4077:6;4074:14;4071:34;;;4101:1;4098;4091:12;4071:34;4124:61;4177:7;4168:6;4157:9;4153:22;4124:61;:::i;:::-;4114:71;;4238:2;4227:9;4223:18;4210:32;4194:48;;4267:2;4257:8;4254:16;4251:36;;;4283:1;4280;4273:12;4251:36;;4306:63;4361:7;4350:8;4339:9;4335:24;4306:63;:::i;:::-;4296:73;;;3780:595;;;;;:::o;4380:180::-;4439:6;4492:2;4480:9;4471:7;4467:23;4463:32;4460:52;;;4508:1;4505;4498:12;4460:52;-1:-1:-1;4531:23:1;;4380:180;-1:-1:-1;4380:180:1:o;4565:184::-;4635:6;4688:2;4676:9;4667:7;4663:23;4659:32;4656:52;;;4704:1;4701;4694:12;4656:52;-1:-1:-1;4727:16:1;;4565:184;-1:-1:-1;4565:184:1:o;4754:278::-;4812:6;4865:2;4853:9;4844:7;4840:23;4836:32;4833:52;;;4881:1;4878;4871:12;4833:52;4920:9;4907:23;4970:12;4963:5;4959:24;4952:5;4949:35;4939:63;;4998:1;4995;4988:12;5943:597;6055:4;6084:2;6113;6102:9;6095:21;6145:6;6139:13;6188:6;6183:2;6172:9;6168:18;6161:34;6213:1;6223:140;6237:6;6234:1;6231:13;6223:140;;;6332:14;;;6328:23;;6322:30;6298:17;;;6317:2;6294:26;6287:66;6252:10;;6223:140;;;6381:6;6378:1;6375:13;6372:91;;;6451:1;6446:2;6437:6;6426:9;6422:22;6418:31;6411:42;6372:91;-1:-1:-1;6524:2:1;6503:15;-1:-1:-1;;6499:29:1;6484:45;;;;6531:2;6480:54;;5943:597;-1:-1:-1;;;5943:597:1:o;7709:356::-;7911:2;7893:21;;;7930:18;;;7923:30;7989:34;7984:2;7969:18;;7962:62;8056:2;8041:18;;7709:356::o;8485:349::-;8687:2;8669:21;;;8726:2;8706:18;;;8699:30;8765:27;8760:2;8745:18;;8738:55;8825:2;8810:18;;8485:349::o;10130:275::-;10201:2;10195:9;10266:2;10247:13;;-1:-1:-1;;10243:27:1;10231:40;;10301:18;10286:34;;10322:22;;;10283:62;10280:88;;;10348:18;;:::i;:::-;10384:2;10377:22;10130:275;;-1:-1:-1;10130:275:1:o;10410:183::-;10470:4;10503:18;10495:6;10492:30;10489:56;;;10525:18;;:::i;:::-;-1:-1:-1;10570:1:1;10566:14;10582:4;10562:25;;10410:183::o;10598:238::-;10638:3;-1:-1:-1;;;;;10705:10:1;;;10735;;;10765:12;;;10757:21;;10754:47;;;10781:18;;:::i;:::-;10817:13;;10598:238;-1:-1:-1;;;;10598:238:1:o;10841:128::-;10881:3;10912:1;10908:6;10905:1;10902:13;10899:39;;;10918:18;;:::i;:::-;-1:-1:-1;10954:9:1;;10841:128::o;10974:120::-;11014:1;11040;11030:35;;11045:18;;:::i;:::-;-1:-1:-1;11079:9:1;;10974:120::o;11099:193::-;11138:1;11164:12;11203:2;11200:1;11196:10;11225:3;11215:37;;11232:18;;:::i;:::-;11270:10;;11266:20;;;;;11099:193;-1:-1:-1;;11099:193:1:o;11297:168::-;11337:7;11403:1;11399;11395:6;11391:14;11388:1;11385:21;11380:1;11373:9;11366:17;11362:45;11359:71;;;11410:18;;:::i;:::-;-1:-1:-1;11450:9:1;;11297:168::o;11470:264::-;11509:7;11541:12;11580:2;11577:1;11573:10;11610:2;11607:1;11603:10;11666:3;11662:2;11658:12;11653:3;11650:21;11643:3;11636:11;11629:19;11625:47;11622:73;;;11675:18;;:::i;:::-;11715:13;;11470:264;-1:-1:-1;;;;11470:264:1:o;11739:231::-;11779:4;-1:-1:-1;;;;;11877:10:1;;;;11847;;11899:12;;;11896:38;;;11914:18;;:::i;:::-;11951:13;;11739:231;-1:-1:-1;;;11739:231:1:o;11975:125::-;12015:4;12043:1;12040;12037:8;12034:34;;;12048:18;;:::i;:::-;-1:-1:-1;12085:9:1;;11975:125::o;12105:223::-;12144:4;12173:12;12235:10;;;;12205;;12257:12;;;12254:38;;;12272:18;;:::i;12333:380::-;12412:1;12408:12;;;;12455;;;12476:61;;12530:4;12522:6;12518:17;12508:27;;12476:61;12583:2;12575:6;12572:14;12552:18;12549:38;12546:161;;;12629:10;12624:3;12620:20;12617:1;12610:31;12664:4;12661:1;12654:15;12692:4;12689:1;12682:15;12546:161;;12333:380;;;:::o;12718:135::-;12757:3;-1:-1:-1;;12778:17:1;;12775:43;;;12798:18;;:::i;:::-;-1:-1:-1;12845:1:1;12834:13;;12718:135::o;12858:127::-;12919:10;12914:3;12910:20;12907:1;12900:31;12950:4;12947:1;12940:15;12974:4;12971:1;12964:15;12990:127;13051:10;13046:3;13042:20;13039:1;13032:31;13082:4;13079:1;13072:15;13106:4;13103:1;13096:15;13122:127;13183:10;13178:3;13174:20;13171:1;13164:31;13214:4;13211:1;13204:15;13238:4;13235:1;13228:15;13254:127;13315:10;13310:3;13306:20;13303:1;13296:31;13346:4;13343:1;13336:15;13370:4;13367:1;13360:15

Swarm Source

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