ETH Price: $3,455.48 (-1.88%)
Gas: 4 Gwei

Token

TobyTheGoat FUR (FUR)
 

Overview

Max Total Supply

253,315.925925925925926771 FUR

Holders

373

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
250 FUR

Value
$0.00
0x834F6Fa204fc8F7FD861CD7d497fEB7eAbd8AaF7
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:
Fur

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 4 of 7: Fur.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

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

// ___          ___         __             
//  |  _  |_     | |_   _  /__  _   _. _|_ 
//  | (_) |_) \/ | | | (/_ \_| (_) (_|  |_ 
//            /
// $FUR token contract
// Utility token for Toby The Goat (TTG)
//
// Toby The Goat (TTG)
// Collection of 9999 NFTs
// Website: https://tobythegoat.io
//     (_(
//     /_/'_____/)
//     "  |      |
//        |""""""|

contract NFTContract {
    function ownerOf(uint256 tokenId) external view returns (address owner) {}
    function tokensOfOwner(address _owner) public view returns (uint256[] memory) {}
}

contract Fur is Ownable, ERC20("TobyTheGoat FUR", "FUR"), ERC20Burnable {
    uint256 public constant DAILY_RATE = 10 ether;

    uint256 public constant START_TIME = 1641049200; /* Saturday, January 1, 2022 15:00 (UTC) */
    uint256 public constant TIME_BLOCKSIZE = 10_000;
    
    uint256 public constant BONUS_TIME_LIMIT_1 = 1641391200; /* Wednesday, January 5, 2022 14:00 (UTC) */
    uint256 public constant BONUS_TIME_LIMIT_2 = 1642258800; /* Saturday, January 15, 2022 15:00 (UTC) */

    event ChangeCommit(uint256 indexed tokenId, uint256 price, bytes changeData);

    NFTContract private delegate;
    uint256 public distributionEndTime = 1893510000; /* Tuesday, January 1, 2030 15:00 (UTC) */
    uint256 public gweiPerFur = 0;

    mapping(uint256 => uint256) public lastUpdateMap;
    mapping(address => uint256) public permittedContracts;

    constructor(address nftContract) {
        delegate = NFTContract(nftContract);
    }

    function getUpdateTime(uint256 id) public view returns (uint256 updateTime) {
        uint256 value = lastUpdateMap[id >> 4];
        value = (value >> ((id & 0xF) << 4)) & 0xFFFF;
        return value * TIME_BLOCKSIZE + START_TIME;
    }
    function setUpdateTime(uint256 id, uint256 time) internal returns (uint256 roundedTime) {
        require(time > START_TIME, "invalid time");
        uint256 currentValue = lastUpdateMap[id >> 4];
        uint256 shift = ((id & 0xF) << 4);
        uint256 mask = ~(0xFFFF << shift);
        // Round up block time
        uint256 newEncodedValue = (time - START_TIME + TIME_BLOCKSIZE - 1) / TIME_BLOCKSIZE;
        lastUpdateMap[id >> 4] = ((currentValue & mask) | (newEncodedValue << shift));
        return newEncodedValue * TIME_BLOCKSIZE + START_TIME;
    }

    function setPermission(address addr, uint256 permitted) public onlyOwner {
        permittedContracts[addr] = permitted;
    }

    function setGweiPerFur(uint256 value) public onlyOwner {
        gweiPerFur = value;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    function setDistributionEndTime(uint256 endTime) public onlyOwner {
        distributionEndTime = endTime;
    }

    function getInitialGrant(uint256 t) public pure returns (uint256) {
        if (t < BONUS_TIME_LIMIT_1) {
            return 500 ether;
        }
        if (t < BONUS_TIME_LIMIT_2) {
            return 250 ether;
        } else {
            return 0;
        }
    }

    function getGrantBetween(uint256 beginTime, uint256 endTime) public pure returns (uint256) {
        if (beginTime > BONUS_TIME_LIMIT_2) {
            return ((endTime - beginTime) * DAILY_RATE) / 86400;
        }
        uint256 weightedTime = 0;
        if (beginTime < BONUS_TIME_LIMIT_1) {
            weightedTime += (min(endTime, BONUS_TIME_LIMIT_1) - beginTime) * 4; //40 $FUR per day
        }
        if (beginTime < BONUS_TIME_LIMIT_2 && endTime > BONUS_TIME_LIMIT_1) {
            weightedTime += (min(endTime, BONUS_TIME_LIMIT_2) - max(beginTime, BONUS_TIME_LIMIT_1)) * 2; //20 $FUR per day
        }
        if (endTime > BONUS_TIME_LIMIT_2) {
            weightedTime += endTime - max(beginTime, BONUS_TIME_LIMIT_2); //10 $FUR per day
        }
        return (weightedTime * DAILY_RATE) / 86400; //86400 == 24 hours
    }

    function claim(uint256 tokenId) internal returns (uint256) {
        uint256 lastUpdate = getUpdateTime(tokenId);
        // Round up by block
        uint256 timeUpdate = min(block.timestamp, distributionEndTime);
        timeUpdate = setUpdateTime(tokenId, timeUpdate);
        if (lastUpdate == START_TIME) {
            return getInitialGrant(timeUpdate);
        } else {
            return getGrantBetween(lastUpdate, timeUpdate);
        }
    }

    function claimReward(uint256[] memory id) public {
        uint256 totalReward = 0;
        for (uint256 i = 0; i < id.length; i++) {
            require(delegate.ownerOf(id[i]) == msg.sender, "id not owned");
            totalReward += claim(id[i]);
        }
        if (totalReward > 0) {
            _mint(msg.sender, totalReward);
        }
    }

    function claimAll() public {
        claimAllFor(msg.sender);
    }

    function claimAllFor(address addr) public {
        uint256[] memory id = delegate.tokensOfOwner(addr);
        uint256 totalReward = 0;
        for (uint256 i = 0; i < id.length; i++) {
            totalReward += claim(id[i]);
        }
        if (totalReward > 0) {
            _mint(addr, totalReward);
        }
    }

    function mint(uint256 amount) public onlyOwner {
        _mint(msg.sender, amount);
    }

    // burn tokens, allowing sent ETH to be converted according to gweiPerFur
    function burnTokens(uint256 amount) private {
        if (msg.value > 0 && gweiPerFur > 0) {
            uint256 converted = (msg.value * 1 gwei) / gweiPerFur;
            if (converted >= amount) {
                amount = 0;
            } else {
                amount -= converted;
            }
        }
        if (amount > 0) {
            _burn(msg.sender, amount);
        }
    }

    // Buy items
    function commitChange(
        uint256 tokenId,
        uint256 pricePaid,
        bytes memory changeData
    ) public payable {
        require(delegate.ownerOf(tokenId) == msg.sender, "not owner");
        burnTokens(pricePaid);
        emit ChangeCommit(tokenId, pricePaid, changeData);
    }

    function permittedMint(address destination, uint256 amount) public {
        require(permittedContracts[msg.sender] == 1);
        _mint(destination, amount);
    }

    function permittedBurn(address src, uint256 amount) public {
        require(permittedContracts[msg.sender] == 1);
        _burn(src, amount);
    }

    function permittedTransfer(
        address src,
        address dest,
        uint256 amount
    ) public {
        require(permittedContracts[msg.sender] == 1);
        _transfer(src, dest, amount);
    }

    function withdrawBalance(address to, uint256 amount) external onlyOwner {
        if (amount == 0) {
            amount = address(this).balance;
        }
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, ) = payable(to).call{value: amount}("");
        require(success, "Transfer failed.");
    }
}

File 1 of 7: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

pragma solidity ^0.8.0;

import "./ERC20.sol";
import "./Context.sol";

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }
}

File 5 of 7: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 6 of 7: IERC20Metadata.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

pragma solidity ^0.8.0;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"changeData","type":"bytes"}],"name":"ChangeCommit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BONUS_TIME_LIMIT_1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BONUS_TIME_LIMIT_2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAILY_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"START_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_BLOCKSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"claimAllFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"id","type":"uint256[]"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"pricePaid","type":"uint256"},{"internalType":"bytes","name":"changeData","type":"bytes"}],"name":"commitChange","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributionEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"beginTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"getGrantBetween","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"t","type":"uint256"}],"name":"getInitialGrant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getUpdateTime","outputs":[{"internalType":"uint256","name":"updateTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gweiPerFur","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastUpdateMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","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":"src","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permittedBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"permittedContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permittedMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dest","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permittedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"setDistributionEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setGweiPerFur","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"permitted","type":"uint256"}],"name":"setPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526370dcab7060075560006008553480156200001e57600080fd5b50604051620020a3380380620020a38339810160408190526200004191620001ee565b6040518060400160405280600f81526020016e2a37b13caa3432a3b7b0ba10232aa960891b81525060405180604001604052806003815260200162232aa960e91b8152506200009f62000099620000f460201b60201c565b620000f8565b8151620000b490600490602085019062000148565b508051620000ca90600590602084019062000148565b5050600680546001600160a01b0319166001600160a01b039390931692909217909155506200025d565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001569062000220565b90600052602060002090601f0160209004810192826200017a5760008555620001c5565b82601f106200019557805160ff1916838001178555620001c5565b82800160010185558215620001c5579182015b82811115620001c5578251825591602001919060010190620001a8565b50620001d3929150620001d7565b5090565b5b80821115620001d35760008155600101620001d8565b6000602082840312156200020157600080fd5b81516001600160a01b03811681146200021957600080fd5b9392505050565b600181811c908216806200023557607f821691505b602082108114156200025757634e487b7160e01b600052602260045260246000fd5b50919050565b611e36806200026d6000396000f3fe60806040526004361061023b5760003560e01c80638c8773b61161012e578063c94c7ff4116100ab578063ddaa26ad1161006f578063ddaa26ad146106ca578063e2cc8d03146106e2578063e7285262146106f8578063f2fde38b1461070e578063f3b3ac061461072e57600080fd5b8063c94c7ff414610617578063d0dec55b14610637578063d1058e591461064f578063d8ded14b14610664578063dd62ed3e1461068457600080fd5b8063a33972b4116100f2578063a33972b414610577578063a457c2d714610597578063a9059cbb146105b7578063b1209d4a146105d7578063bc870094146105f757600080fd5b80638c8773b6146104cd5780638da5cb5b146104fa57806395d89b4114610522578063a0712d6814610537578063a2df129d1461055757600080fd5b8063313ce567116101bc578063715018a611610180578063715018a61461042f578063736848561461044457806379cc6790146104605780637bfcbb80146104805780638bee55b7146104ad57600080fd5b8063313ce5671461037d57806339509351146103995780633fa94c88146103b957806342966c68146103d957806370a08231146103f957600080fd5b806318160ddd1161020357806318160ddd146102fa57806323b872dd1461030f57806327b802141461032f5780632ae683e41461034f5780632caf9b501461036757600080fd5b8063058b1d5b1461024057806305ba0a511461025557806306fdde0314610288578063095ea7b3146102aa5780630cf20cc9146102da575b600080fd5b61025361024e366004611953565b61074e565b005b34801561026157600080fd5b506102756102703660046119fb565b610859565b6040519081526020015b60405180910390f35b34801561029457600080fd5b5061029d61089b565b60405161027f9190611a61565b3480156102b657600080fd5b506102ca6102c5366004611a89565b61092d565b604051901515815260200161027f565b3480156102e657600080fd5b506102536102f5366004611a89565b610944565b34801561030657600080fd5b50600354610275565b34801561031b57600080fd5b506102ca61032a366004611ab5565b610a11565b34801561033b57600080fd5b5061027561034a366004611af6565b610abb565b34801561035b57600080fd5b506102756361d5a46081565b34801561037357600080fd5b5061027561271081565b34801561038957600080fd5b506040516012815260200161027f565b3480156103a557600080fd5b506102ca6103b4366004611a89565b610bec565b3480156103c557600080fd5b506102536103d43660046119fb565b610c28565b3480156103e557600080fd5b506102536103f43660046119fb565b610c57565b34801561040557600080fd5b50610275610414366004611b18565b6001600160a01b031660009081526001602052604090205490565b34801561043b57600080fd5b50610253610c64565b34801561045057600080fd5b50610275678ac7230489e8000081565b34801561046c57600080fd5b5061025361047b366004611a89565b610c9a565b34801561048c57600080fd5b5061027561049b3660046119fb565b60096020526000908152604090205481565b3480156104b957600080fd5b506102536104c8366004611a89565b610d1b565b3480156104d957600080fd5b506102756104e8366004611b18565b600a6020526000908152604090205481565b34801561050657600080fd5b506000546040516001600160a01b03909116815260200161027f565b34801561052e57600080fd5b5061029d610d45565b34801561054357600080fd5b506102536105523660046119fb565b610d54565b34801561056357600080fd5b50610253610572366004611b18565b610d88565b34801561058357600080fd5b506102536105923660046119fb565b610e6a565b3480156105a357600080fd5b506102ca6105b2366004611a89565b610e99565b3480156105c357600080fd5b506102ca6105d2366004611a89565b610f32565b3480156105e357600080fd5b506102756105f23660046119fb565b610f3f565b34801561060357600080fd5b50610253610612366004611ab5565b610f82565b34801561062357600080fd5b50610253610632366004611b59565b610fa9565b34801561064357600080fd5b506102756361e2e17081565b34801561065b57600080fd5b506102536110de565b34801561067057600080fd5b5061025361067f366004611a89565b6110e7565b34801561069057600080fd5b5061027561069f366004611be4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106d657600080fd5b506102756361d06c7081565b3480156106ee57600080fd5b5061027560075481565b34801561070457600080fd5b5061027560085481565b34801561071a57600080fd5b50610253610729366004611b18565b61112d565b34801561073a57600080fd5b50610253610749366004611a89565b6111c5565b6006546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561079257600080fd5b505afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611c1d565b6001600160a01b0316146108115760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b61081a826111eb565b827f08d728b8128aef131eaa9518167f8a974c7f7ca36b54a916875a9f50b79055e0838360405161084c929190611c3a565b60405180910390a2505050565b60006361d5a4608210156108775750681b1ae4d6e2ef500000919050565b6361e2e1708210156108935750680d8d726b7177a80000919050565b506000919050565b6060600480546108aa90611c53565b80601f01602080910402602001604051908101604052809291908181526020018280546108d690611c53565b80156109235780601f106108f857610100808354040283529160200191610923565b820191906000526020600020905b81548152906001019060200180831161090657829003601f168201915b5050505050905090565b600061093a338484611251565b5060015b92915050565b6000546001600160a01b0316331461096e5760405162461bcd60e51b815260040161080890611c8e565b806109765750475b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146109c3576040519150601f19603f3d011682016040523d82523d6000602084013e6109c8565b606091505b5050905080610a0c5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610808565b505050565b6000610a1e848484611375565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610aa35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610808565b610ab08533858403611251565b506001949350505050565b60006361e2e170831115610afb5762015180678ac7230489e80000610ae08585611cd9565b610aea9190611cf0565b610af49190611d0f565b905061093e565b60006361d5a460841015610b3a5783610b18846361d5a460611544565b610b229190611cd9565b610b2d906004611cf0565b610b379082611d31565b90505b6361e2e17084108015610b5057506361d5a46083115b15610b9357610b63846361d5a46061155a565b610b71846361e2e170611544565b610b7b9190611cd9565b610b86906002611cf0565b610b909082611d31565b90505b6361e2e170831115610bc457610bad846361e2e17061155a565b610bb79084611cd9565b610bc19082611d31565b90505b62015180610bda678ac7230489e8000083611cf0565b610be49190611d0f565b949350505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161093a918590610c23908690611d31565b611251565b6000546001600160a01b03163314610c525760405162461bcd60e51b815260040161080890611c8e565b600855565b610c613382611569565b50565b6000546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161080890611c8e565b610c9860006116b7565b565b6000610ca6833361069f565b905081811015610d045760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610808565b610d118333848403611251565b610a0c8383611569565b336000908152600a6020526040902054600114610d3757600080fd5b610d418282611707565b5050565b6060600580546108aa90611c53565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b815260040161080890611c8e565b610c613382611707565b600654604051632118854760e21b81526001600160a01b0383811660048301526000921690638462151c9060240160006040518083038186803b158015610dce57600080fd5b505afa158015610de2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e0a9190810190611d49565b90506000805b8251811015610e5957610e3b838281518110610e2e57610e2e611dcf565b60200260200101516117e6565b610e459083611d31565b915080610e5181611de5565b915050610e10565b508015610a0c57610a0c8382611707565b6000546001600160a01b03163314610e945760405162461bcd60e51b815260040161080890611c8e565b600755565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610f1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610808565b610f283385858403611251565b5060019392505050565b600061093a338484611375565b600481811c600090815260096020526040812054909183901b60f0161c61ffff166361d06c70610f7161271083611cf0565b610f7b9190611d31565b9392505050565b336000908152600a6020526040902054600114610f9e57600080fd5b610a0c838383611375565b6000805b82518110156110cd57600654835133916001600160a01b031690636352211e90869085908110610fdf57610fdf611dcf565b60200260200101516040518263ffffffff1660e01b815260040161100591815260200190565b60206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190611c1d565b6001600160a01b03161461109a5760405162461bcd60e51b815260206004820152600c60248201526b1a59081b9bdd081bdddb995960a21b6044820152606401610808565b6110af838281518110610e2e57610e2e611dcf565b6110b99083611d31565b9150806110c581611de5565b915050610fad565b508015610d4157610d413382611707565b610c9833610d88565b6000546001600160a01b031633146111115760405162461bcd60e51b815260040161080890611c8e565b6001600160a01b039091166000908152600a6020526040902055565b6000546001600160a01b031633146111575760405162461bcd60e51b815260040161080890611c8e565b6001600160a01b0381166111bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610808565b610c61816116b7565b336000908152600a60205260409020546001146111e157600080fd5b610d418282611569565b6000341180156111fd57506000600854115b156112415760085460009061121634633b9aca00611cf0565b6112209190611d0f565b9050818110611232576000915061123f565b61123c8183611cd9565b91505b505b8015610c6157610c613382611569565b6001600160a01b0383166112b35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610808565b6001600160a01b0382166113145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610808565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610808565b6001600160a01b03821661143b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610808565b6001600160a01b038316600090815260016020526040902054818110156114b35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610808565b6001600160a01b038085166000908152600160205260408082208585039055918516815290812080548492906114ea908490611d31565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161153691815260200190565b60405180910390a350505050565b60008183106115535781610f7b565b5090919050565b60008183116115535781610f7b565b6001600160a01b0382166115c95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610808565b6001600160a01b0382166000908152600160205260409020548181101561163d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610808565b6001600160a01b038316600090815260016020526040812083830390556003805484929061166c908490611cd9565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821661175d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610808565b806003600082825461176f9190611d31565b90915550506001600160a01b0382166000908152600160205260408120805483929061179c908490611d31565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806117f283610f3f565b9050600061180242600754611544565b905061180e848261182f565b90506361d06c7082141561182557610be481610859565b610be48282610abb565b60006361d06c7082116118735760405162461bcd60e51b815260206004820152600c60248201526b696e76616c69642074696d6560a01b6044820152606401610808565b600483811c6000908152600960205260408120549185901b60f0169061ffff821b19906127106001816118aa6361d06c708a611cd9565b6118b49190611d31565b6118be9190611cd9565b6118c89190611d0f565b600488901c600090815260096020526040902085841682861b17905590506361d06c706118f761271083611cf0565b6119019190611d31565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561194b5761194b61190c565b604052919050565b60008060006060848603121561196857600080fd5b833592506020808501359250604085013567ffffffffffffffff8082111561198f57600080fd5b818701915087601f8301126119a357600080fd5b8135818111156119b5576119b561190c565b6119c7601f8201601f19168501611922565b915080825288848285010111156119dd57600080fd5b80848401858401376000848284010152508093505050509250925092565b600060208284031215611a0d57600080fd5b5035919050565b6000815180845260005b81811015611a3a57602081850181015186830182015201611a1e565b81811115611a4c576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610f7b6020830184611a14565b6001600160a01b0381168114610c6157600080fd5b60008060408385031215611a9c57600080fd5b8235611aa781611a74565b946020939093013593505050565b600080600060608486031215611aca57600080fd5b8335611ad581611a74565b92506020840135611ae581611a74565b929592945050506040919091013590565b60008060408385031215611b0957600080fd5b50508035926020909101359150565b600060208284031215611b2a57600080fd5b8135610f7b81611a74565b600067ffffffffffffffff821115611b4f57611b4f61190c565b5060051b60200190565b60006020808385031215611b6c57600080fd5b823567ffffffffffffffff811115611b8357600080fd5b8301601f81018513611b9457600080fd5b8035611ba7611ba282611b35565b611922565b81815260059190911b82018301908381019087831115611bc657600080fd5b928401925b8284101561190157833582529284019290840190611bcb565b60008060408385031215611bf757600080fd5b8235611c0281611a74565b91506020830135611c1281611a74565b809150509250929050565b600060208284031215611c2f57600080fd5b8151610f7b81611a74565b828152604060208201526000610be46040830184611a14565b600181811c90821680611c6757607f821691505b60208210811415611c8857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015611ceb57611ceb611cc3565b500390565b6000816000190483118215151615611d0a57611d0a611cc3565b500290565b600082611d2c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611d4457611d44611cc3565b500190565b60006020808385031215611d5c57600080fd5b825167ffffffffffffffff811115611d7357600080fd5b8301601f81018513611d8457600080fd5b8051611d92611ba282611b35565b81815260059190911b82018301908381019087831115611db157600080fd5b928401925b8284101561190157835182529284019290840190611db6565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611df957611df9611cc3565b506001019056fea264697066735822122077f156a511c0b7b89d7c4224dae01cbac0fff5ea00b383d2c9d606910a4d5d4f64736f6c634300080900330000000000000000000000002484a62c2d3c6980dc57d9aa02305c2f7523dc0d

Deployed Bytecode

0x60806040526004361061023b5760003560e01c80638c8773b61161012e578063c94c7ff4116100ab578063ddaa26ad1161006f578063ddaa26ad146106ca578063e2cc8d03146106e2578063e7285262146106f8578063f2fde38b1461070e578063f3b3ac061461072e57600080fd5b8063c94c7ff414610617578063d0dec55b14610637578063d1058e591461064f578063d8ded14b14610664578063dd62ed3e1461068457600080fd5b8063a33972b4116100f2578063a33972b414610577578063a457c2d714610597578063a9059cbb146105b7578063b1209d4a146105d7578063bc870094146105f757600080fd5b80638c8773b6146104cd5780638da5cb5b146104fa57806395d89b4114610522578063a0712d6814610537578063a2df129d1461055757600080fd5b8063313ce567116101bc578063715018a611610180578063715018a61461042f578063736848561461044457806379cc6790146104605780637bfcbb80146104805780638bee55b7146104ad57600080fd5b8063313ce5671461037d57806339509351146103995780633fa94c88146103b957806342966c68146103d957806370a08231146103f957600080fd5b806318160ddd1161020357806318160ddd146102fa57806323b872dd1461030f57806327b802141461032f5780632ae683e41461034f5780632caf9b501461036757600080fd5b8063058b1d5b1461024057806305ba0a511461025557806306fdde0314610288578063095ea7b3146102aa5780630cf20cc9146102da575b600080fd5b61025361024e366004611953565b61074e565b005b34801561026157600080fd5b506102756102703660046119fb565b610859565b6040519081526020015b60405180910390f35b34801561029457600080fd5b5061029d61089b565b60405161027f9190611a61565b3480156102b657600080fd5b506102ca6102c5366004611a89565b61092d565b604051901515815260200161027f565b3480156102e657600080fd5b506102536102f5366004611a89565b610944565b34801561030657600080fd5b50600354610275565b34801561031b57600080fd5b506102ca61032a366004611ab5565b610a11565b34801561033b57600080fd5b5061027561034a366004611af6565b610abb565b34801561035b57600080fd5b506102756361d5a46081565b34801561037357600080fd5b5061027561271081565b34801561038957600080fd5b506040516012815260200161027f565b3480156103a557600080fd5b506102ca6103b4366004611a89565b610bec565b3480156103c557600080fd5b506102536103d43660046119fb565b610c28565b3480156103e557600080fd5b506102536103f43660046119fb565b610c57565b34801561040557600080fd5b50610275610414366004611b18565b6001600160a01b031660009081526001602052604090205490565b34801561043b57600080fd5b50610253610c64565b34801561045057600080fd5b50610275678ac7230489e8000081565b34801561046c57600080fd5b5061025361047b366004611a89565b610c9a565b34801561048c57600080fd5b5061027561049b3660046119fb565b60096020526000908152604090205481565b3480156104b957600080fd5b506102536104c8366004611a89565b610d1b565b3480156104d957600080fd5b506102756104e8366004611b18565b600a6020526000908152604090205481565b34801561050657600080fd5b506000546040516001600160a01b03909116815260200161027f565b34801561052e57600080fd5b5061029d610d45565b34801561054357600080fd5b506102536105523660046119fb565b610d54565b34801561056357600080fd5b50610253610572366004611b18565b610d88565b34801561058357600080fd5b506102536105923660046119fb565b610e6a565b3480156105a357600080fd5b506102ca6105b2366004611a89565b610e99565b3480156105c357600080fd5b506102ca6105d2366004611a89565b610f32565b3480156105e357600080fd5b506102756105f23660046119fb565b610f3f565b34801561060357600080fd5b50610253610612366004611ab5565b610f82565b34801561062357600080fd5b50610253610632366004611b59565b610fa9565b34801561064357600080fd5b506102756361e2e17081565b34801561065b57600080fd5b506102536110de565b34801561067057600080fd5b5061025361067f366004611a89565b6110e7565b34801561069057600080fd5b5061027561069f366004611be4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106d657600080fd5b506102756361d06c7081565b3480156106ee57600080fd5b5061027560075481565b34801561070457600080fd5b5061027560085481565b34801561071a57600080fd5b50610253610729366004611b18565b61112d565b34801561073a57600080fd5b50610253610749366004611a89565b6111c5565b6006546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561079257600080fd5b505afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611c1d565b6001600160a01b0316146108115760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b61081a826111eb565b827f08d728b8128aef131eaa9518167f8a974c7f7ca36b54a916875a9f50b79055e0838360405161084c929190611c3a565b60405180910390a2505050565b60006361d5a4608210156108775750681b1ae4d6e2ef500000919050565b6361e2e1708210156108935750680d8d726b7177a80000919050565b506000919050565b6060600480546108aa90611c53565b80601f01602080910402602001604051908101604052809291908181526020018280546108d690611c53565b80156109235780601f106108f857610100808354040283529160200191610923565b820191906000526020600020905b81548152906001019060200180831161090657829003601f168201915b5050505050905090565b600061093a338484611251565b5060015b92915050565b6000546001600160a01b0316331461096e5760405162461bcd60e51b815260040161080890611c8e565b806109765750475b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146109c3576040519150601f19603f3d011682016040523d82523d6000602084013e6109c8565b606091505b5050905080610a0c5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610808565b505050565b6000610a1e848484611375565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610aa35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610808565b610ab08533858403611251565b506001949350505050565b60006361e2e170831115610afb5762015180678ac7230489e80000610ae08585611cd9565b610aea9190611cf0565b610af49190611d0f565b905061093e565b60006361d5a460841015610b3a5783610b18846361d5a460611544565b610b229190611cd9565b610b2d906004611cf0565b610b379082611d31565b90505b6361e2e17084108015610b5057506361d5a46083115b15610b9357610b63846361d5a46061155a565b610b71846361e2e170611544565b610b7b9190611cd9565b610b86906002611cf0565b610b909082611d31565b90505b6361e2e170831115610bc457610bad846361e2e17061155a565b610bb79084611cd9565b610bc19082611d31565b90505b62015180610bda678ac7230489e8000083611cf0565b610be49190611d0f565b949350505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161093a918590610c23908690611d31565b611251565b6000546001600160a01b03163314610c525760405162461bcd60e51b815260040161080890611c8e565b600855565b610c613382611569565b50565b6000546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161080890611c8e565b610c9860006116b7565b565b6000610ca6833361069f565b905081811015610d045760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610808565b610d118333848403611251565b610a0c8383611569565b336000908152600a6020526040902054600114610d3757600080fd5b610d418282611707565b5050565b6060600580546108aa90611c53565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b815260040161080890611c8e565b610c613382611707565b600654604051632118854760e21b81526001600160a01b0383811660048301526000921690638462151c9060240160006040518083038186803b158015610dce57600080fd5b505afa158015610de2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e0a9190810190611d49565b90506000805b8251811015610e5957610e3b838281518110610e2e57610e2e611dcf565b60200260200101516117e6565b610e459083611d31565b915080610e5181611de5565b915050610e10565b508015610a0c57610a0c8382611707565b6000546001600160a01b03163314610e945760405162461bcd60e51b815260040161080890611c8e565b600755565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610f1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610808565b610f283385858403611251565b5060019392505050565b600061093a338484611375565b600481811c600090815260096020526040812054909183901b60f0161c61ffff166361d06c70610f7161271083611cf0565b610f7b9190611d31565b9392505050565b336000908152600a6020526040902054600114610f9e57600080fd5b610a0c838383611375565b6000805b82518110156110cd57600654835133916001600160a01b031690636352211e90869085908110610fdf57610fdf611dcf565b60200260200101516040518263ffffffff1660e01b815260040161100591815260200190565b60206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190611c1d565b6001600160a01b03161461109a5760405162461bcd60e51b815260206004820152600c60248201526b1a59081b9bdd081bdddb995960a21b6044820152606401610808565b6110af838281518110610e2e57610e2e611dcf565b6110b99083611d31565b9150806110c581611de5565b915050610fad565b508015610d4157610d413382611707565b610c9833610d88565b6000546001600160a01b031633146111115760405162461bcd60e51b815260040161080890611c8e565b6001600160a01b039091166000908152600a6020526040902055565b6000546001600160a01b031633146111575760405162461bcd60e51b815260040161080890611c8e565b6001600160a01b0381166111bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610808565b610c61816116b7565b336000908152600a60205260409020546001146111e157600080fd5b610d418282611569565b6000341180156111fd57506000600854115b156112415760085460009061121634633b9aca00611cf0565b6112209190611d0f565b9050818110611232576000915061123f565b61123c8183611cd9565b91505b505b8015610c6157610c613382611569565b6001600160a01b0383166112b35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610808565b6001600160a01b0382166113145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610808565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610808565b6001600160a01b03821661143b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610808565b6001600160a01b038316600090815260016020526040902054818110156114b35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610808565b6001600160a01b038085166000908152600160205260408082208585039055918516815290812080548492906114ea908490611d31565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161153691815260200190565b60405180910390a350505050565b60008183106115535781610f7b565b5090919050565b60008183116115535781610f7b565b6001600160a01b0382166115c95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610808565b6001600160a01b0382166000908152600160205260409020548181101561163d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610808565b6001600160a01b038316600090815260016020526040812083830390556003805484929061166c908490611cd9565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821661175d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610808565b806003600082825461176f9190611d31565b90915550506001600160a01b0382166000908152600160205260408120805483929061179c908490611d31565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806117f283610f3f565b9050600061180242600754611544565b905061180e848261182f565b90506361d06c7082141561182557610be481610859565b610be48282610abb565b60006361d06c7082116118735760405162461bcd60e51b815260206004820152600c60248201526b696e76616c69642074696d6560a01b6044820152606401610808565b600483811c6000908152600960205260408120549185901b60f0169061ffff821b19906127106001816118aa6361d06c708a611cd9565b6118b49190611d31565b6118be9190611cd9565b6118c89190611d0f565b600488901c600090815260096020526040902085841682861b17905590506361d06c706118f761271083611cf0565b6119019190611d31565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561194b5761194b61190c565b604052919050565b60008060006060848603121561196857600080fd5b833592506020808501359250604085013567ffffffffffffffff8082111561198f57600080fd5b818701915087601f8301126119a357600080fd5b8135818111156119b5576119b561190c565b6119c7601f8201601f19168501611922565b915080825288848285010111156119dd57600080fd5b80848401858401376000848284010152508093505050509250925092565b600060208284031215611a0d57600080fd5b5035919050565b6000815180845260005b81811015611a3a57602081850181015186830182015201611a1e565b81811115611a4c576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610f7b6020830184611a14565b6001600160a01b0381168114610c6157600080fd5b60008060408385031215611a9c57600080fd5b8235611aa781611a74565b946020939093013593505050565b600080600060608486031215611aca57600080fd5b8335611ad581611a74565b92506020840135611ae581611a74565b929592945050506040919091013590565b60008060408385031215611b0957600080fd5b50508035926020909101359150565b600060208284031215611b2a57600080fd5b8135610f7b81611a74565b600067ffffffffffffffff821115611b4f57611b4f61190c565b5060051b60200190565b60006020808385031215611b6c57600080fd5b823567ffffffffffffffff811115611b8357600080fd5b8301601f81018513611b9457600080fd5b8035611ba7611ba282611b35565b611922565b81815260059190911b82018301908381019087831115611bc657600080fd5b928401925b8284101561190157833582529284019290840190611bcb565b60008060408385031215611bf757600080fd5b8235611c0281611a74565b91506020830135611c1281611a74565b809150509250929050565b600060208284031215611c2f57600080fd5b8151610f7b81611a74565b828152604060208201526000610be46040830184611a14565b600181811c90821680611c6757607f821691505b60208210811415611c8857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015611ceb57611ceb611cc3565b500390565b6000816000190483118215151615611d0a57611d0a611cc3565b500290565b600082611d2c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611d4457611d44611cc3565b500190565b60006020808385031215611d5c57600080fd5b825167ffffffffffffffff811115611d7357600080fd5b8301601f81018513611d8457600080fd5b8051611d92611ba282611b35565b81815260059190911b82018301908381019087831115611db157600080fd5b928401925b8284101561190157835182529284019290840190611db6565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611df957611df9611cc3565b506001019056fea264697066735822122077f156a511c0b7b89d7c4224dae01cbac0fff5ea00b383d2c9d606910a4d5d4f64736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000002484a62c2d3c6980dc57d9aa02305c2f7523dc0d

-----Decoded View---------------
Arg [0] : nftContract (address): 0x2484A62c2D3C6980Dc57D9aa02305C2F7523Dc0d

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002484a62c2d3c6980dc57d9aa02305c2f7523dc0d


Deployed Bytecode Sourcemap

722:6595:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6111:304;;;;;;:::i;:::-;;:::i;:::-;;3108:277;;;;;;;;;;-1:-1:-1;3108:277:3;;;;;:::i;:::-;;:::i;:::-;;;1661:25:7;;;1649:2;1634:18;3108:277:3;;;;;;;;2123:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4290:169::-;;;;;;;;;;-1:-1:-1;4290:169:1;;;;;:::i;:::-;;:::i;:::-;;;3020:14:7;;3013:22;2995:41;;2983:2;2968:18;4290:169:1;2855:187:7;6978:336:3;;;;;;;;;;-1:-1:-1;6978:336:3;;;;;:::i;:::-;;:::i;3243:108:1:-;;;;;;;;;;-1:-1:-1;3331:12:1;;3243:108;;4941:492;;;;;;;;;;-1:-1:-1;4941:492:1;;;;;:::i;:::-;;:::i;3393:851:3:-;;;;;;;;;;-1:-1:-1;3393:851:3;;;;;:::i;:::-;;:::i;1013:55::-;;;;;;;;;;;;1058:10;1013:55;;953:47;;;;;;;;;;;;994:6;953:47;;3085:93:1;;;;;;;;;;-1:-1:-1;3085:93:1;;3168:2;3903:36:7;;3891:2;3876:18;3085:93:1;3761:184:7;5842:215:1;;;;;;;;;;-1:-1:-1;5842:215:1;;;;;:::i;:::-;;:::i;2658:92:3:-;;;;;;;;;;-1:-1:-1;2658:92:3;;;;;:::i;:::-;;:::i;491:91:2:-;;;;;;;;;;-1:-1:-1;491:91:2;;;;;:::i;:::-;;:::i;3414:127:1:-;;;;;;;;;;-1:-1:-1;3414:127:1;;;;;:::i;:::-;-1:-1:-1;;;;;3515:18:1;3488:7;3515:18;;;:9;:18;;;;;;;3414:127;1650:94:6;;;;;;;;;;;;;:::i;801:45:3:-;;;;;;;;;;;;838:8;801:45;;901:368:2;;;;;;;;;;-1:-1:-1;901:368:2;;;;;:::i;:::-;;:::i;1484:48:3:-;;;;;;;;;;-1:-1:-1;1484:48:3;;;;;:::i;:::-;;;;;;;;;;;;;;6423:167;;;;;;;;;;-1:-1:-1;6423:167:3;;;;;:::i;:::-;;:::i;1539:53::-;;;;;;;;;;-1:-1:-1;1539:53:3;;;;;:::i;:::-;;;;;;;;;;;;;;999:87:6;;;;;;;;;;-1:-1:-1;1045:7:6;1072:6;999:87;;-1:-1:-1;;;;;1072:6:6;;;4348:51:7;;4336:2;4321:18;999:87:6;4202:203:7;2342:104:1;;;;;;;;;;;;;:::i;5506:91:3:-;;;;;;;;;;-1:-1:-1;5506:91:3;;;;;:::i;:::-;;:::i;5167:331::-;;;;;;;;;;-1:-1:-1;5167:331:3;;;;;:::i;:::-;;:::i;2986:114::-;;;;;;;;;;-1:-1:-1;2986:114:3;;;;;:::i;:::-;;:::i;6560:413:1:-;;;;;;;;;;-1:-1:-1;6560:413:1;;;;;:::i;:::-;;:::i;3754:175::-;;;;;;;;;;-1:-1:-1;3754:175:1;;;;;:::i;:::-;;:::i;1696:242:3:-;;;;;;;;;;-1:-1:-1;1696:242:3;;;;;:::i;:::-;;:::i;6757:213::-;;;;;;;;;;-1:-1:-1;6757:213:3;;;;;:::i;:::-;;:::i;4722:360::-;;;;;;;;;;-1:-1:-1;4722:360:3;;;;;:::i;:::-;;:::i;1120:55::-;;;;;;;;;;;;1165:10;1120:55;;5090:69;;;;;;;;;;;;;:::i;2522:128::-;;;;;;;;;;-1:-1:-1;2522:128:3;;;;;:::i;:::-;;:::i;3992:151:1:-;;;;;;;;;;-1:-1:-1;3992:151:1;;;;;:::i;:::-;-1:-1:-1;;;;;4108:18:1;;;4081:7;4108:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3992:151;855:47:3;;;;;;;;;;;;892:10;855:47;;1349;;;;;;;;;;;;;;;;1446:29;;;;;;;;;;;;;;;;1899:192:6;;;;;;;;;;-1:-1:-1;1899:192:6;;;;;:::i;:::-;;:::i;6598:151:3:-;;;;;;;;;;-1:-1:-1;6598:151:3;;;;;:::i;:::-;;:::i;6111:304::-;6262:8;;:25;;-1:-1:-1;;;6262:25:3;;;;;1661::7;;;6291:10:3;;-1:-1:-1;;;;;6262:8:3;;:16;;1634:18:7;;6262:25:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6262:39:3;;6254:61;;;;-1:-1:-1;;;6254:61:3;;6345:2:7;6254:61:3;;;6327:21:7;6384:1;6364:18;;;6357:29;-1:-1:-1;;;6402:18:7;;;6395:39;6451:18;;6254:61:3;;;;;;;;;6326:21;6337:9;6326:10;:21::i;:::-;6376:7;6363:44;6385:9;6396:10;6363:44;;;;;;;:::i;:::-;;;;;;;;6111:304;;;:::o;3108:277::-;3165:7;1058:10;3189:1;:22;3185:71;;;-1:-1:-1;3235:9:3;;3108:277;-1:-1:-1;3108:277:3:o;3185:71::-;1165:10;3270:1;:22;3266:112;;;-1:-1:-1;3316:9:3;;3108:277;-1:-1:-1;3108:277:3:o;3266:112::-;-1:-1:-1;3365:1:3;;3108:277;-1:-1:-1;3108:277:3:o;2123:100:1:-;2177:13;2210:5;2203:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2123:100;:::o;4290:169::-;4373:4;4390:39;682:10:0;4413:7:1;4422:6;4390:8;:39::i;:::-;-1:-1:-1;4447:4:1;4290:169;;;;;:::o;6978:336:3:-;1045:7:6;1072:6;-1:-1:-1;;;;;1072:6:6;682:10:0;1219:23:6;1211:68;;;;-1:-1:-1;;;1211:68:6;;;;;;;:::i;:::-;7065:11:3;7061:74:::1;;-1:-1:-1::0;7102:21:3::1;7061:74;7206:12;7232:2;-1:-1:-1::0;;;;;7224:16:3::1;7248:6;7224:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7205:54;;;7278:7;7270:36;;;::::0;-1:-1:-1;;;7270:36:3;;7932:2:7;7270:36:3::1;::::0;::::1;7914:21:7::0;7971:2;7951:18;;;7944:30;-1:-1:-1;;;7990:18:7;;;7983:46;8046:18;;7270:36:3::1;7730:340:7::0;7270:36:3::1;7050:264;6978:336:::0;;:::o;4941:492:1:-;5081:4;5098:36;5108:6;5116:9;5127:6;5098:9;:36::i;:::-;-1:-1:-1;;;;;5174:19:1;;5147:24;5174:19;;;:11;:19;;;;;;;;682:10:0;5174:33:1;;;;;;;;5226:26;;;;5218:79;;;;-1:-1:-1;;;5218:79:1;;8277:2:7;5218:79:1;;;8259:21:7;8316:2;8296:18;;;8289:30;8355:34;8335:18;;;8328:62;-1:-1:-1;;;8406:18:7;;;8399:38;8454:19;;5218:79:1;8075:404:7;5218:79:1;5333:57;5342:6;682:10:0;5383:6:1;5364:16;:25;5333:8;:57::i;:::-;-1:-1:-1;5421:4:1;;4941:492;-1:-1:-1;;;;4941:492:1:o;3393:851:3:-;3475:7;1165:10;3499:9;:30;3495:114;;;3592:5;838:8;3555:19;3565:9;3555:7;:19;:::i;:::-;3554:34;;;;:::i;:::-;3553:44;;;;:::i;:::-;3546:51;;;;3495:114;3619:20;1058:10;3658:9;:30;3654:147;;;3757:9;3722:32;3726:7;1058:10;3722:3;:32::i;:::-;:44;;;;:::i;:::-;3721:50;;3770:1;3721:50;:::i;:::-;3705:66;;;;:::i;:::-;;;3654:147;1165:10;3815:9;:30;:62;;;;;1058:10;3849:7;:28;3815:62;3811:204;;;3946:34;3950:9;1058:10;3946:3;:34::i;:::-;3911:32;3915:7;1165:10;3911:3;:32::i;:::-;:69;;;;:::i;:::-;3910:75;;3984:1;3910:75;:::i;:::-;3894:91;;;;:::i;:::-;;;3811:204;1165:10;4029:7;:28;4025:139;;;4100:34;4104:9;1165:10;4100:3;:34::i;:::-;4090:44;;:7;:44;:::i;:::-;4074:60;;;;:::i;:::-;;;4025:139;4211:5;4182:25;838:8;4182:12;:25;:::i;:::-;4181:35;;;;:::i;:::-;4174:42;3393:851;-1:-1:-1;;;;3393:851:3:o;5842:215:1:-;682:10:0;5930:4:1;5979:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5979:34:1;;;;;;;;;;5930:4;;5947:80;;5970:7;;5979:47;;6016:10;;5979:47;:::i;:::-;5947:8;:80::i;2658:92:3:-;1045:7:6;1072:6;-1:-1:-1;;;;;1072:6:6;682:10:0;1219:23:6;1211:68;;;;-1:-1:-1;;;1211:68:6;;;;;;;:::i;:::-;2724:10:3::1;:18:::0;2658:92::o;491:91:2:-;547:27;682:10:0;567:6:2;547:5;:27::i;:::-;491:91;:::o;1650:94:6:-;1045:7;1072:6;-1:-1:-1;;;;;1072:6:6;682:10:0;1219:23:6;1211:68;;;;-1:-1:-1;;;1211:68:6;;;;;;;:::i;:::-;1715:21:::1;1733:1;1715:9;:21::i;:::-;1650:94::o:0;901:368:2:-;978:24;1005:32;1015:7;682:10:0;3992:151:1;:::i;1005:32:2:-;978:59;;1076:6;1056:16;:26;;1048:75;;;;-1:-1:-1;;;1048:75:2;;9476:2:7;1048:75:2;;;9458:21:7;9515:2;9495:18;;;9488:30;9554:34;9534:18;;;9527:62;-1:-1:-1;;;9605:18:7;;;9598:34;9649:19;;1048:75:2;9274:400:7;1048:75:2;1159:58;1168:7;682:10:0;1210:6:2;1191:16;:25;1159:8;:58::i;:::-;1239:22;1245:7;1254:6;1239:5;:22::i;6423:167:3:-;6528:10;6509:30;;;;:18;:30;;;;;;6543:1;6509:35;6501:44;;;;;;6556:26;6562:11;6575:6;6556:5;:26::i;:::-;6423:167;;:::o;2342:104:1:-;2398:13;2431:7;2424:14;;;;;:::i;5506:91:3:-;1045:7:6;1072:6;-1:-1:-1;;;;;1072:6:6;682:10:0;1219:23:6;1211:68;;;;-1:-1:-1;;;1211:68:6;;;;;;;:::i;:::-;5564:25:3::1;5570:10;5582:6;5564:5;:25::i;5167:331::-:0;5242:8;;:28;;-1:-1:-1;;;5242:28:3;;-1:-1:-1;;;;;4366:32:7;;;5242:28:3;;;4348:51:7;5220:19:3;;5242:8;;:22;;4321:18:7;;5242:28:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5242:28:3;;;;;;;;;;;;:::i;:::-;5220:50;;5281:19;5320:9;5315:94;5339:2;:9;5335:1;:13;5315:94;;;5385:12;5391:2;5394:1;5391:5;;;;;;;;:::i;:::-;;;;;;;5385;:12::i;:::-;5370:27;;;;:::i;:::-;;-1:-1:-1;5350:3:3;;;;:::i;:::-;;;;5315:94;;;-1:-1:-1;5423:15:3;;5419:72;;5455:24;5461:4;5467:11;5455:5;:24::i;2986:114::-;1045:7:6;1072:6;-1:-1:-1;;;;;1072:6:6;682:10:0;1219:23:6;1211:68;;;;-1:-1:-1;;;1211:68:6;;;;;;;:::i;:::-;3063:19:3::1;:29:::0;2986:114::o;6560:413:1:-;682:10:0;6653:4:1;6697:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6697:34:1;;;;;;;;;;6750:35;;;;6742:85;;;;-1:-1:-1;;;6742:85:1;;11039:2:7;6742:85:1;;;11021:21:7;11078:2;11058:18;;;11051:30;11117:34;11097:18;;;11090:62;-1:-1:-1;;;11168:18:7;;;11161:35;11213:19;;6742:85:1;10837:401:7;6742:85:1;6863:67;682:10:0;6886:7:1;6914:15;6895:16;:34;6863:8;:67::i;:::-;-1:-1:-1;6961:4:1;;6560:413;-1:-1:-1;;;6560:413:1:o;3754:175::-;3840:4;3857:42;682:10:0;3881:9:1;3892:6;3857:9;:42::i;1696:242:3:-;1819:1;1813:7;;;1752:18;1799:22;;;:13;:22;;;;;;1752:18;;1851:15;;;;;1841:26;1871:6;1840:37;892:10;1895:22;994:6;1840:37;1895:22;:::i;:::-;:35;;;;:::i;:::-;1888:42;1696:242;-1:-1:-1;;;1696:242:3:o;6757:213::-;6906:10;6887:30;;;;:18;:30;;;;;;6921:1;6887:35;6879:44;;;;;;6934:28;6944:3;6949:4;6955:6;6934:9;:28::i;4722:360::-;4782:19;4821:9;4816:171;4840:2;:9;4836:1;:13;4816:171;;;4879:8;;4896:5;;4906:10;;-1:-1:-1;;;;;4879:8:3;;:16;;4896:2;;4899:1;;4896:5;;;;;;:::i;:::-;;;;;;;4879:23;;;;;;;;;;;;;1661:25:7;;1649:2;1634:18;;1515:177;4879:23:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4879:37:3;;4871:62;;;;-1:-1:-1;;;4871:62:3;;11445:2:7;4871:62:3;;;11427:21:7;11484:2;11464:18;;;11457:30;-1:-1:-1;;;11503:18:7;;;11496:42;11555:18;;4871:62:3;11243:336:7;4871:62:3;4963:12;4969:2;4972:1;4969:5;;;;;;;;:::i;4963:12::-;4948:27;;;;:::i;:::-;;-1:-1:-1;4851:3:3;;;;:::i;:::-;;;;4816:171;;;-1:-1:-1;5001:15:3;;4997:78;;5033:30;5039:10;5051:11;5033:5;:30::i;5090:69::-;5128:23;5140:10;5128:11;:23::i;2522:128::-;1045:7:6;1072:6;-1:-1:-1;;;;;1072:6:6;682:10:0;1219:23:6;1211:68;;;;-1:-1:-1;;;1211:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;2606:24:3;;::::1;;::::0;;;:18:::1;:24;::::0;;;;:36;2522:128::o;1899:192:6:-;1045:7;1072:6;-1:-1:-1;;;;;1072:6:6;682:10:0;1219:23:6;1211:68;;;;-1:-1:-1;;;1211:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;1988:22:6;::::1;1980:73;;;::::0;-1:-1:-1;;;1980:73:6;;11786:2:7;1980:73:6::1;::::0;::::1;11768:21:7::0;11825:2;11805:18;;;11798:30;11864:34;11844:18;;;11837:62;-1:-1:-1;;;11915:18:7;;;11908:36;11961:19;;1980:73:6::1;11584:402:7::0;1980:73:6::1;2064:19;2074:8;2064:9;:19::i;6598:151:3:-:0;6695:10;6676:30;;;;:18;:30;;;;;;6710:1;6676:35;6668:44;;;;;;6723:18;6729:3;6734:6;6723:5;:18::i;5684:401::-;5755:1;5743:9;:13;:31;;;;;5773:1;5760:10;;:14;5743:31;5739:261;;;5834:10;;5791:17;;5812:18;:9;5824:6;5812:18;:::i;:::-;5811:33;;;;:::i;:::-;5791:53;;5876:6;5863:9;:19;5859:130;;5912:1;5903:10;;5859:130;;;5954:19;5964:9;5954:19;;:::i;:::-;;;5859:130;5776:224;5739:261;6014:10;;6010:68;;6041:25;6047:10;6059:6;6041:5;:25::i;10244:380:1:-;-1:-1:-1;;;;;10380:19:1;;10372:68;;;;-1:-1:-1;;;10372:68:1;;12193:2:7;10372:68:1;;;12175:21:7;12232:2;12212:18;;;12205:30;12271:34;12251:18;;;12244:62;-1:-1:-1;;;12322:18:7;;;12315:34;12366:19;;10372:68:1;11991:400:7;10372:68:1;-1:-1:-1;;;;;10459:21:1;;10451:68;;;;-1:-1:-1;;;10451:68:1;;12598:2:7;10451:68:1;;;12580:21:7;12637:2;12617:18;;;12610:30;12676:34;12656:18;;;12649:62;-1:-1:-1;;;12727:18:7;;;12720:32;12769:19;;10451:68:1;12396:398:7;10451:68:1;-1:-1:-1;;;;;10532:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10584:32;;1661:25:7;;;10584:32:1;;1634:18:7;10584:32:1;;;;;;;10244:380;;;:::o;7463:733::-;-1:-1:-1;;;;;7603:20:1;;7595:70;;;;-1:-1:-1;;;7595:70:1;;13001:2:7;7595:70:1;;;12983:21:7;13040:2;13020:18;;;13013:30;13079:34;13059:18;;;13052:62;-1:-1:-1;;;13130:18:7;;;13123:35;13175:19;;7595:70:1;12799:401:7;7595:70:1;-1:-1:-1;;;;;7684:23:1;;7676:71;;;;-1:-1:-1;;;7676:71:1;;13407:2:7;7676:71:1;;;13389:21:7;13446:2;13426:18;;;13419:30;13485:34;13465:18;;;13458:62;-1:-1:-1;;;13536:18:7;;;13529:33;13579:19;;7676:71:1;13205:399:7;7676:71:1;-1:-1:-1;;;;;7844:17:1;;7820:21;7844:17;;;:9;:17;;;;;;7880:23;;;;7872:74;;;;-1:-1:-1;;;7872:74:1;;13811:2:7;7872:74:1;;;13793:21:7;13850:2;13830:18;;;13823:30;13889:34;13869:18;;;13862:62;-1:-1:-1;;;13940:18:7;;;13933:36;13986:19;;7872:74:1;13609:402:7;7872:74:1;-1:-1:-1;;;;;7982:17:1;;;;;;;:9;:17;;;;;;8002:22;;;7982:42;;8046:20;;;;;;;;:30;;8018:6;;7982:17;8046:30;;8018:6;;8046:30;:::i;:::-;;;;;;;;8111:9;-1:-1:-1;;;;;8094:35:1;8103:6;-1:-1:-1;;;;;8094:35:1;;8122:6;8094:35;;;;1661:25:7;;1649:2;1634:18;;1515:177;8094:35:1;;;;;;;;7584:612;7463:733;;;:::o;2758:106:3:-;2816:7;2847:1;2843;:5;:13;;2855:1;2843:13;;;-1:-1:-1;2851:1:3;;2836:20;-1:-1:-1;2758:106:3:o;2872:::-;2930:7;2961:1;2957;:5;:13;;2969:1;2957:13;;9215:591:1;-1:-1:-1;;;;;9299:21:1;;9291:67;;;;-1:-1:-1;;;9291:67:1;;14218:2:7;9291:67:1;;;14200:21:7;14257:2;14237:18;;;14230:30;14296:34;14276:18;;;14269:62;-1:-1:-1;;;14347:18:7;;;14340:31;14388:19;;9291:67:1;14016:397:7;9291:67:1;-1:-1:-1;;;;;9458:18:1;;9433:22;9458:18;;;:9;:18;;;;;;9495:24;;;;9487:71;;;;-1:-1:-1;;;9487:71:1;;14620:2:7;9487:71:1;;;14602:21:7;14659:2;14639:18;;;14632:30;14698:34;14678:18;;;14671:62;-1:-1:-1;;;14749:18:7;;;14742:32;14791:19;;9487:71:1;14418:398:7;9487:71:1;-1:-1:-1;;;;;9594:18:1;;;;;;:9;:18;;;;;9615:23;;;9594:44;;9660:12;:22;;9632:6;;9594:18;9660:22;;9632:6;;9660:22;:::i;:::-;;;;-1:-1:-1;;9700:37:1;;1661:25:7;;;9726:1:1;;-1:-1:-1;;;;;9700:37:1;;;;;1649:2:7;1634:18;9700:37:1;;;;;;;7050:264:3::1;6978:336:::0;;:::o;2099:173:6:-;2155:16;2174:6;;-1:-1:-1;;;;;2191:17:6;;;-1:-1:-1;;;;;;2191:17:6;;;;;;2224:40;;2174:6;;;;;;;2224:40;;2155:16;2224:40;2144:128;2099:173;:::o;8483:399:1:-;-1:-1:-1;;;;;8567:21:1;;8559:65;;;;-1:-1:-1;;;8559:65:1;;15023:2:7;8559:65:1;;;15005:21:7;15062:2;15042:18;;;15035:30;15101:33;15081:18;;;15074:61;15152:18;;8559:65:1;14821:355:7;8559:65:1;8715:6;8699:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8732:18:1;;;;;;:9;:18;;;;;:28;;8754:6;;8732:18;:28;;8754:6;;8732:28;:::i;:::-;;;;-1:-1:-1;;8776:37:1;;1661:25:7;;;-1:-1:-1;;;;;8776:37:1;;;8793:1;;8776:37;;1649:2:7;1634:18;8776:37:1;;;;;;;6423:167:3;;:::o;4252:462::-;4302:7;4322:18;4343:22;4357:7;4343:13;:22::i;:::-;4322:43;;4406:18;4427:41;4431:15;4448:19;;4427:3;:41::i;:::-;4406:62;;4492:34;4506:7;4515:10;4492:13;:34::i;:::-;4479:47;;892:10;4541;:24;4537:170;;;4589:27;4605:10;4589:15;:27::i;4537:170::-;4656:39;4672:10;4684;4656:15;:39::i;1944:570::-;2011:19;892:10;2051:4;:17;2043:42;;;;-1:-1:-1;;;2043:42:3;;15383:2:7;2043:42:3;;;15365:21:7;15422:2;15402:18;;;15395:30;-1:-1:-1;;;15441:18:7;;;15434:42;15493:18;;2043:42:3;15181:336:7;2043:42:3;2139:1;2133:7;;;2096:20;2119:22;;;:13;:22;;;;;;;2169:15;;;;;;2213:6;:15;;2211:18;;994:6;2336:1;994:6;2299:17;892:10;2299:4;:17;:::i;:::-;:34;;;;:::i;:::-;:38;;;;:::i;:::-;2298:57;;;;:::i;:::-;2386:1;2380:7;;;2366:22;;;;:13;:22;;;;;2393:19;;;2417:24;;;2392:50;2366:77;;2272:83;-1:-1:-1;892:10:3;2461:32;994:6;2272:83;2461:32;:::i;:::-;:45;;;;:::i;:::-;2454:52;1944:570;-1:-1:-1;;;;;;;1944:570:3:o;14:127:7:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:7;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:7:o;426:899::-;512:6;520;528;581:2;569:9;560:7;556:23;552:32;549:52;;;597:1;594;587:12;549:52;633:9;620:23;610:33;;662:2;711;700:9;696:18;683:32;673:42;;766:2;755:9;751:18;738:32;789:18;830:2;822:6;819:14;816:34;;;846:1;843;836:12;816:34;884:6;873:9;869:22;859:32;;929:7;922:4;918:2;914:13;910:27;900:55;;951:1;948;941:12;900:55;987:2;974:16;1009:2;1005;1002:10;999:36;;;1015:18;;:::i;:::-;1057:53;1100:2;1081:13;;-1:-1:-1;;1077:27:7;1073:36;;1057:53;:::i;:::-;1044:66;;1133:2;1126:5;1119:17;1173:7;1168:2;1163;1159;1155:11;1151:20;1148:33;1145:53;;;1194:1;1191;1184:12;1145:53;1249:2;1244;1240;1236:11;1231:2;1224:5;1220:14;1207:45;1293:1;1288:2;1283;1276:5;1272:14;1268:23;1261:34;;1314:5;1304:15;;;;;426:899;;;;;:::o;1330:180::-;1389:6;1442:2;1430:9;1421:7;1417:23;1413:32;1410:52;;;1458:1;1455;1448:12;1410:52;-1:-1:-1;1481:23:7;;1330:180;-1:-1:-1;1330:180:7:o;1697:472::-;1739:3;1777:5;1771:12;1804:6;1799:3;1792:19;1829:1;1839:162;1853:6;1850:1;1847:13;1839:162;;;1915:4;1971:13;;;1967:22;;1961:29;1943:11;;;1939:20;;1932:59;1868:12;1839:162;;;2019:6;2016:1;2013:13;2010:87;;;2085:1;2078:4;2069:6;2064:3;2060:16;2056:27;2049:38;2010:87;-1:-1:-1;2151:2:7;2130:15;-1:-1:-1;;2126:29:7;2117:39;;;;2158:4;2113:50;;1697:472;-1:-1:-1;;1697:472:7:o;2174:220::-;2323:2;2312:9;2305:21;2286:4;2343:45;2384:2;2373:9;2369:18;2361:6;2343:45;:::i;2399:131::-;-1:-1:-1;;;;;2474:31:7;;2464:42;;2454:70;;2520:1;2517;2510:12;2535:315;2603:6;2611;2664:2;2652:9;2643:7;2639:23;2635:32;2632:52;;;2680:1;2677;2670:12;2632:52;2719:9;2706:23;2738:31;2763:5;2738:31;:::i;:::-;2788:5;2840:2;2825:18;;;;2812:32;;-1:-1:-1;;;2535:315:7:o;3047:456::-;3124:6;3132;3140;3193:2;3181:9;3172:7;3168:23;3164:32;3161:52;;;3209:1;3206;3199:12;3161:52;3248:9;3235:23;3267:31;3292:5;3267:31;:::i;:::-;3317:5;-1:-1:-1;3374:2:7;3359:18;;3346:32;3387:33;3346:32;3387:33;:::i;:::-;3047:456;;3439:7;;-1:-1:-1;;;3493:2:7;3478:18;;;;3465:32;;3047:456::o;3508:248::-;3576:6;3584;3637:2;3625:9;3616:7;3612:23;3608:32;3605:52;;;3653:1;3650;3643:12;3605:52;-1:-1:-1;;3676:23:7;;;3746:2;3731:18;;;3718:32;;-1:-1:-1;3508:248:7:o;3950:247::-;4009:6;4062:2;4050:9;4041:7;4037:23;4033:32;4030:52;;;4078:1;4075;4068:12;4030:52;4117:9;4104:23;4136:31;4161:5;4136:31;:::i;4410:183::-;4470:4;4503:18;4495:6;4492:30;4489:56;;;4525:18;;:::i;:::-;-1:-1:-1;4570:1:7;4566:14;4582:4;4562:25;;4410:183::o;4598:891::-;4682:6;4713:2;4756;4744:9;4735:7;4731:23;4727:32;4724:52;;;4772:1;4769;4762:12;4724:52;4812:9;4799:23;4845:18;4837:6;4834:30;4831:50;;;4877:1;4874;4867:12;4831:50;4900:22;;4953:4;4945:13;;4941:27;-1:-1:-1;4931:55:7;;4982:1;4979;4972:12;4931:55;5018:2;5005:16;5041:60;5057:43;5097:2;5057:43;:::i;:::-;5041:60;:::i;:::-;5135:15;;;5217:1;5213:10;;;;5205:19;;5201:28;;;5166:12;;;;5241:19;;;5238:39;;;5273:1;5270;5263:12;5238:39;5297:11;;;;5317:142;5333:6;5328:3;5325:15;5317:142;;;5399:17;;5387:30;;5350:12;;;;5437;;;;5317:142;;5494:388;5562:6;5570;5623:2;5611:9;5602:7;5598:23;5594:32;5591:52;;;5639:1;5636;5629:12;5591:52;5678:9;5665:23;5697:31;5722:5;5697:31;:::i;:::-;5747:5;-1:-1:-1;5804:2:7;5789:18;;5776:32;5817:33;5776:32;5817:33;:::i;:::-;5869:7;5859:17;;;5494:388;;;;;:::o;5887:251::-;5957:6;6010:2;5998:9;5989:7;5985:23;5981:32;5978:52;;;6026:1;6023;6016:12;5978:52;6058:9;6052:16;6077:31;6102:5;6077:31;:::i;6480:289::-;6655:6;6644:9;6637:25;6698:2;6693;6682:9;6678:18;6671:30;6618:4;6718:45;6759:2;6748:9;6744:18;6736:6;6718:45;:::i;6774:380::-;6853:1;6849:12;;;;6896;;;6917:61;;6971:4;6963:6;6959:17;6949:27;;6917:61;7024:2;7016:6;7013:14;6993:18;6990:38;6987:161;;;7070:10;7065:3;7061:20;7058:1;7051:31;7105:4;7102:1;7095:15;7133:4;7130:1;7123:15;6987:161;;6774:380;;;:::o;7159:356::-;7361:2;7343:21;;;7380:18;;;7373:30;7439:34;7434:2;7419:18;;7412:62;7506:2;7491:18;;7159:356::o;8484:127::-;8545:10;8540:3;8536:20;8533:1;8526:31;8576:4;8573:1;8566:15;8600:4;8597:1;8590:15;8616:125;8656:4;8684:1;8681;8678:8;8675:34;;;8689:18;;:::i;:::-;-1:-1:-1;8726:9:7;;8616:125::o;8746:168::-;8786:7;8852:1;8848;8844:6;8840:14;8837:1;8834:21;8829:1;8822:9;8815:17;8811:45;8808:71;;;8859:18;;:::i;:::-;-1:-1:-1;8899:9:7;;8746:168::o;8919:217::-;8959:1;8985;8975:132;;9029:10;9024:3;9020:20;9017:1;9010:31;9064:4;9061:1;9054:15;9092:4;9089:1;9082:15;8975:132;-1:-1:-1;9121:9:7;;8919:217::o;9141:128::-;9181:3;9212:1;9208:6;9205:1;9202:13;9199:39;;;9218:18;;:::i;:::-;-1:-1:-1;9254:9:7;;9141:128::o;9679:881::-;9774:6;9805:2;9848;9836:9;9827:7;9823:23;9819:32;9816:52;;;9864:1;9861;9854:12;9816:52;9897:9;9891:16;9930:18;9922:6;9919:30;9916:50;;;9962:1;9959;9952:12;9916:50;9985:22;;10038:4;10030:13;;10026:27;-1:-1:-1;10016:55:7;;10067:1;10064;10057:12;10016:55;10096:2;10090:9;10119:60;10135:43;10175:2;10135:43;:::i;10119:60::-;10213:15;;;10295:1;10291:10;;;;10283:19;;10279:28;;;10244:12;;;;10319:19;;;10316:39;;;10351:1;10348;10341:12;10316:39;10375:11;;;;10395:135;10411:6;10406:3;10403:15;10395:135;;;10477:10;;10465:23;;10428:12;;;;10508;;;;10395:135;;10565:127;10626:10;10621:3;10617:20;10614:1;10607:31;10657:4;10654:1;10647:15;10681:4;10678:1;10671:15;10697:135;10736:3;-1:-1:-1;;10757:17:7;;10754:43;;;10777:18;;:::i;:::-;-1:-1:-1;10824:1:7;10813:13;;10697:135::o

Swarm Source

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