ETH Price: $2,938.55 (-0.69%)

Token

kui.eth (KUI)

Overview

Max Total Supply

11,874,335,009 KUI

Holders

21,529

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
21,074 KUI

Value
$0.00
0x4ed1e266452770037bf3c406db5d0421045b94fc
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
Diamond

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 10: Diamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
pragma experimental ABIEncoderV2;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
* 
* Implementation of a diamond.
/******************************************************************************/

import "./LibDiamond.sol";
import "./LibDiamondOwnership.sol";
import "./LibERC20.sol";
import "./IDiamondLoupe.sol";
import "./IDiamondCut.sol";
import "./IERC173.sol";
import "./IERC165.sol";
import "./IERC20.sol";

contract Diamond {

    struct DiamondArgs {
		address contractOwner;
		string  name_;
		string  symbol_;
		uint8   decimal_;
		uint256 capSupply_;
		uint256 preMint;
		address preMintOwner;
    }
	
	constructor(
        IDiamondCut.FacetCut[] memory _diamondCut,
		DiamondArgs memory _args
    ) payable {
		
        LibDiamond.diamondCut(_diamondCut, address(0), new bytes(0));
		LibDiamondOwnership.setContractOwner(_args.contractOwner);
        LibDiamondStorage.DiamondStorage storage ds = LibDiamondStorage.diamondStorage();
        // adding ERC165 data
        ds.supportedInterfaces[type(IERC165).interfaceId] = true;
        ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true;
        ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true;
		ds.supportedInterfaces[type(IERC173).interfaceId] = true;
		ds.supportedInterfaces[type(IERC20).interfaceId] = true;
		ds._name = _args.name_;
		ds._symbol = _args.symbol_;
		ds._decimal = _args.decimal_;
		ds._capSupply = _args.capSupply_ * 10 **_args.decimal_;
		LibERC20._mint(_args.preMintOwner, _args.preMint * 10 ** _args.decimal_);
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    fallback() external payable {
        LibDiamondStorage.DiamondStorage storage ds;
        bytes32 position = LibDiamondStorage.DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
        require(facet != address(0), "Diamond: Function does not exist");
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    receive() external payable {}
}

File 2 of 10: IDiamondCut.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
pragma experimental ABIEncoderV2;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

interface IDiamondCut {
    enum FacetCutAction {Add, Replace, Remove}
    // Add=0, Replace=1, Remove=2

    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external;

    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);
}

File 3 of 10: IDiamondLoupe.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
pragma experimental ABIEncoderV2;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

// A loupe is a small magnifying glass used to look at diamonds.
// These functions look at diamonds
interface IDiamondLoupe {
    /// These functions are expected to be called frequently
    /// by tools.

    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    /// @notice Gets all facet addresses and their four byte function selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory facets_);

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_);

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view returns (address[] memory facetAddresses_);

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);
}

File 4 of 10: IERC165.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
pragma experimental ABIEncoderV2;

interface IERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceId The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 5 of 10: IERC173.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

/// @title ERC-173 Contract Ownership Standard
///  Note: the ERC-165 identifier for this interface is 0x7f5828d0
/* is ERC165 */
interface IERC173 {
    /// @dev This emits when ownership of a contract changes.
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /// @notice Get the address of the owner
    /// @return owner_ The address of the owner.
    function owner() external view returns (address owner_);

    /// @notice Set the address of the new owner of the contract
    /// @dev Set _newOwner to address(0) to renounce any ownership.
    /// @param _newOwner The address of the new owner of the contract
    function transferOwnership(address _newOwner) external;
}

File 6 of 10: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

File 7 of 10: LibDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
pragma experimental ABIEncoderV2;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

import "./IDiamondCut.sol";
import "./LibDiamondStorage.sol";

library LibDiamond {

    function enforceIsContractOwner() internal view {
        require(msg.sender == LibDiamondStorage.diamondStorage().contractOwner, "LibDiamond: Must be contract owner");
    }

    event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);

    // Internal function version of diamondCut
    function diamondCut(
        IDiamondCut.FacetCut[] memory _diamondCut,
        address _init,
        bytes memory _calldata
    ) internal {
        for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamondCut.FacetCutAction.Add) {
                addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Replace) {
                replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Remove) {
                removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else {
                revert("LibDiamondCut: Incorrect FacetCutAction");
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        LibDiamondStorage.DiamondStorage storage ds = LibDiamondStorage.diamondStorage();
        // uint16 selectorCount = uint16(diamondStorage().selectors.length);
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint16 selectorPosition = uint16(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
            ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists");
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(selector);
            ds.selectorToFacetAndPosition[selector].facetAddress = _facetAddress;
            ds.selectorToFacetAndPosition[selector].functionSelectorPosition = selectorPosition;
            selectorPosition++;
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        LibDiamondStorage.DiamondStorage storage ds = LibDiamondStorage.diamondStorage();
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint16 selectorPosition = uint16(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
            ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function");
            removeFunction(oldFacetAddress, selector);
            // add function
            ds.selectorToFacetAndPosition[selector].functionSelectorPosition = selectorPosition;
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(selector);
            ds.selectorToFacetAndPosition[selector].facetAddress = _facetAddress;
            selectorPosition++;
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        LibDiamondStorage.DiamondStorage storage ds = LibDiamondStorage.diamondStorage();
        // if function does not exist then do nothing and return
        require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)");
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(oldFacetAddress, selector);
        }
    }

    function removeFunction(address _facetAddress, bytes4 _selector) internal {
        LibDiamondStorage.DiamondStorage storage ds = LibDiamondStorage.diamondStorage();
        require(_facetAddress != address(0), "LibDiamondCut: Can't remove function that doesn't exist");
        // an immutable function is a function defined directly in a diamond
        require(_facetAddress != address(this), "LibDiamondCut: Can't remove immutable function");
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];
            ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;
            ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint16(selectorPosition);
        }
        // delete the last selector
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete ds.selectorToFacetAndPosition[_selector];

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
            uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];
                ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
                ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = uint16(facetAddressPosition);
            }
            ds.facetAddresses.pop();
            delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
        }
    }

    function initializeDiamondCut(address _init, bytes memory _calldata) internal {
        if (_init == address(0)) {
            require(_calldata.length == 0, "LibDiamondCut: _init is address(0) but_calldata is not empty");
        } else {
            require(_calldata.length > 0, "LibDiamondCut: _calldata is empty but _init is not address(0)");
            if (_init != address(this)) {
                enforceHasContractCode(_init, "LibDiamondCut: _init address has no code");
            }
            (bool success, bytes memory error) = _init.delegatecall(_calldata);
            if (!success) {
                if (error.length > 0) {
                    // bubble up the error
                    revert(string(error));
                } else {
                    revert("LibDiamondCut: _init function reverted");
                }
            }
        }
    }

    function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {
        uint256 contractSize;
        assembly {
            contractSize := extcodesize(_contract)
        }
        require(contractSize > 0, _errorMessage);
    }
}

File 8 of 10: LibDiamondOwnership.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "./LibDiamondStorage.sol";

library LibDiamondOwnership {

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

    function setContractOwner(address _newOwner) internal {
       // DiamondStorage storage ds = diamondStorage();
	LibDiamondStorage.DiamondStorage storage ds = LibDiamondStorage.diamondStorage();
        address previousOwner = ds.contractOwner;
        ds.contractOwner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }

    function contractOwner() internal view returns (address contractOwner_) {
        contractOwner_ = LibDiamondStorage.diamondStorage().contractOwner;
    }

    function enforceIsContractOwner() internal view {
        require(msg.sender == LibDiamondStorage.diamondStorage().contractOwner, "LibDiamond: Must be contract owner");
    }
	
	modifier onlyContractOwner() {
		enforceIsContractOwner();
		_;
	}


}

File 9 of 10: LibDiamondStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

library LibDiamondStorage{

    bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage");

    struct FacetAddressAndPosition {
        address facetAddress;
        uint16 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint16 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    struct DiamondStorage {
		/*Diamond*/
        // maps function selector to the facet address and
        // the position of the selector in the facetFunctionSelectors.selectors array
		mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        // maps facet addresses to function selectors
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        // facet addresses
        address[] facetAddresses;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // owner of the contract
        address contractOwner;
		/*Diamond*/
		
		/*erc20*/
		mapping(address => uint256) _balances;
		mapping(address => mapping(address => uint256)) _allowances;
		uint256 _totalSupply;
		uint256 _capSupply;
		string  _name;
		string  _symbol;
		uint8   _decimal;
		/*erc20*/
		
		/*batchmint*/
		/*
		uint256 _idCounter;
		mapping(address => uint256) _addressToID;
		mapping(uint256 => address) _idToAddress;
		*/
		/*batchmint */
		
    }

    function diamondStorage() internal pure returns (DiamondStorage storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }


}

File 10 of 10: LibERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
pragma experimental ABIEncoderV2;

import "./LibDiamondStorage.sol";

library LibERC20 {
	
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
	
	/**
	 * @dev See {IERC20-allowance}.
	 */
	function _allowance(address owner, address spender) internal view returns (uint256) {
	    return LibDiamondStorage.diamondStorage()._allowances[owner][spender];
	}
	
    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);
		LibDiamondStorage.DiamondStorage storage s = LibDiamondStorage.diamondStorage();
        uint256 fromBalance = s._balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            s._balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            s._balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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 {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);
		LibDiamondStorage.DiamondStorage storage s = LibDiamondStorage.diamondStorage();
        s._totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            s._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 {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);
		LibDiamondStorage.DiamondStorage storage s = LibDiamondStorage.diamondStorage();
        uint256 accountBalance = s._balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            s._balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            s._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 {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
		LibDiamondStorage.DiamondStorage storage s = LibDiamondStorage.diamondStorage();
        s._allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        uint256 currentAllowance = _allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 {}

    /**
     * @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 {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimal_","type":"uint8"},{"internalType":"uint256","name":"capSupply_","type":"uint256"},{"internalType":"uint256","name":"preMint","type":"uint256"},{"internalType":"address","name":"preMintOwner","type":"address"}],"internalType":"struct Diamond.DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405260405162005f3c38038062005f3c8339818101604052810190620000299190620024b2565b620000928260008067ffffffffffffffff8111156200004d576200004c62001e77565b5b6040519080825280601f01601f191660200182016040528015620000805781602001600182028036833780820191505090505b506200044560201b620001671760201c565b620000ac8160000151620006c960201b620003961760201c565b6000620000c3620007ad60201b6200046d1760201c565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f7f5828d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f36372b07000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550816020015181600901908162000398919062002778565b50816040015181600a019081620003b0919062002778565b50816060015181600b0160006101000a81548160ff021916908360ff1602179055508160600151600a620003e59190620029e2565b8260800151620003f6919062002a33565b81600801819055506200043c8260c001518360600151600a6200041a9190620029e2565b8460a001516200042b919062002a33565b620007da60201b6200049a1760201c565b50505062003713565b60005b8351811015620006745760008482815181106200046a576200046962002a7e565b5b6020026020010151602001519050600060028111156200048f576200048e62002aad565b5b816002811115620004a557620004a462002aad565b5b036200050557620004ff858381518110620004c557620004c462002a7e565b5b602002602001015160000151868481518110620004e757620004e662002a7e565b5b6020026020010151604001516200096660201b60201c565b6200065d565b600160028111156200051c576200051b62002aad565b5b81600281111562000532576200053162002aad565b5b0362000592576200058c85838151811062000552576200055162002a7e565b5b60200260200101516000015186848151811062000574576200057362002a7e565b5b60200260200101516040015162000e6660201b60201c565b6200065c565b600280811115620005a857620005a762002aad565b5b816002811115620005be57620005bd62002aad565b5b036200061e5762000618858381518110620005de57620005dd62002a7e565b5b6020026020010151600001518684815181106200060057620005ff62002a7e565b5b6020026020010151604001516200137760201b60201c565b6200065b565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006529062002b63565b60405180910390fd5b5b5b5080806200066b9062002b85565b91505062000448565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620006aa9392919062002e96565b60405180910390a1620006c482826200152360201b60201c565b505050565b6000620006e0620007ad60201b6200046d1760201c565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200084c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008439062002f31565b60405180910390fd5b62000860600083836200175160201b60201c565b600062000877620007ad60201b6200046d1760201c565b9050818160070160008282546200088f919062002f53565b92505081905550818160050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000945919062002f9f565b60405180910390a362000961600084846200175660201b60201c565b505050565b6000815111620009ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a49062003032565b60405180910390fd5b6000620009c4620007ad60201b6200046d1760201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000a38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2f90620030ca565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050905060008161ffff160362000b885762000abc8460405180606001604052806024815260200162005f18602491396200175b60201b60201c565b81600201805490508260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff16021790555081600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60005b835181101562000e5f57600084828151811062000bad5762000bac62002a7e565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000ca4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9b9062003162565b60405180910390fd5b8460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555086856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff160217905550838062000e449062003192565b9450505050808062000e569062002b85565b91505062000b8b565b5050505050565b600081511162000ead576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea49062003032565b60405180910390fd5b600062000ec4620007ad60201b6200046d1760201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000f38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f2f90620030ca565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050905060008161ffff1603620010885762000fbc8460405180606001604052806024815260200162005f18602491396200175b60201b60201c565b81600201805490508260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff16021790555081600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60005b835181101562001370576000848281518110620010ad57620010ac62002a7e565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620011a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200119a9062003237565b60405180910390fd5b620011b58183620017b060201b60201c565b83856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff1602179055508460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555086856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508380620013559062003192565b94505050508080620013679062002b85565b9150506200108b565b5050505050565b6000815111620013be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620013b59062003032565b60405180910390fd5b6000620013d5620007ad60201b6200046d1760201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462001449576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200144090620032cf565b60405180910390fd5b60005b82518110156200151d5760008382815181106200146e576200146d62002a7e565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620015058183620017b060201b60201c565b50508080620015149062002b85565b9150506200144c565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620015a55760008151146200159f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620015969062003367565b60405180910390fd5b6200174d565b6000815111620015ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620015e390620033ff565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200164c576200164b8260405180606001604052806028815260200162005ef0602891396200175b60201b60201c565b5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162001676919062003463565b600060405180830381855af49150503d8060008114620016b3576040519150601f19603f3d011682016040523d82523d6000602084013e620016b8565b606091505b5091509150816200174a576000815111156200170d57806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017049190620034bd565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017419062003557565b60405180910390fd5b50505b5050565b505050565b505050565b6000823b9050600081118290620017aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017a19190620034bd565b60405180910390fd5b50505050565b6000620017c7620007ad60201b6200046d1760201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200183b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200183290620035ef565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620018ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018a39062003687565b60405180910390fd5b6000816000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a900461ffff1661ffff169050600060018360010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050620019719190620036a9565b905080821462001af85760008360010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110620019d657620019d562002a7e565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848154811062001a555762001a5462002a7e565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff160217905550505b8260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548062001b4f5762001b4e620036e4565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055826000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549061ffff021916905550506000810362001e465760006001846002018054905062001c329190620036a9565b905060008460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900461ffff1661ffff16905081811462001da257600085600201838154811062001cb25762001cb162002a7e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508086600201838154811062001cf95762001cf862002a7e565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818660010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff160217905550505b8460020180548062001db95762001db8620036e4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81549061ffff021916905550505b5050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62001eb18262001e66565b810181811067ffffffffffffffff8211171562001ed35762001ed262001e77565b5b80604052505050565b600062001ee862001e4d565b905062001ef6828262001ea6565b919050565b600067ffffffffffffffff82111562001f195762001f1862001e77565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001f668262001f39565b9050919050565b62001f788162001f59565b811462001f8457600080fd5b50565b60008151905062001f988162001f6d565b92915050565b6003811062001fac57600080fd5b50565b60008151905062001fc08162001f9e565b92915050565b600067ffffffffffffffff82111562001fe45762001fe362001e77565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200202c8162001ff5565b81146200203857600080fd5b50565b6000815190506200204c8162002021565b92915050565b600062002069620020638462001fc6565b62001edc565b905080838252602082019050602084028301858111156200208f576200208e62001f2a565b5b835b81811015620020bc5780620020a788826200203b565b84526020840193505060208101905062002091565b5050509392505050565b600082601f830112620020de57620020dd62001e61565b5b8151620020f084826020860162002052565b91505092915050565b60006060828403121562002112576200211162001f2f565b5b6200211e606062001edc565b90506000620021308482850162001f87565b6000830152506020620021468482850162001faf565b602083015250604082015167ffffffffffffffff8111156200216d576200216c62001f34565b5b6200217b84828501620020c6565b60408301525092915050565b60006200219e620021988462001efb565b62001edc565b90508083825260208201905060208402830185811115620021c457620021c362001f2a565b5b835b818110156200221257805167ffffffffffffffff811115620021ed57620021ec62001e61565b5b808601620021fc8982620020f9565b85526020850194505050602081019050620021c6565b5050509392505050565b600082601f83011262002234576200223362001e61565b5b81516200224684826020860162002187565b91505092915050565b600080fd5b600067ffffffffffffffff82111562002272576200227162001e77565b5b6200227d8262001e66565b9050602081019050919050565b60005b83811015620022aa5780820151818401526020810190506200228d565b60008484015250505050565b6000620022cd620022c78462002254565b62001edc565b905082815260208101848484011115620022ec57620022eb6200224f565b5b620022f98482856200228a565b509392505050565b600082601f83011262002319576200231862001e61565b5b81516200232b848260208601620022b6565b91505092915050565b600060ff82169050919050565b6200234c8162002334565b81146200235857600080fd5b50565b6000815190506200236c8162002341565b92915050565b6000819050919050565b620023878162002372565b81146200239357600080fd5b50565b600081519050620023a7816200237c565b92915050565b600060e08284031215620023c657620023c562001f2f565b5b620023d260e062001edc565b90506000620023e48482850162001f87565b600083015250602082015167ffffffffffffffff8111156200240b576200240a62001f34565b5b620024198482850162002301565b602083015250604082015167ffffffffffffffff81111562002440576200243f62001f34565b5b6200244e8482850162002301565b604083015250606062002464848285016200235b565b60608301525060806200247a8482850162002396565b60808301525060a0620024908482850162002396565b60a08301525060c0620024a68482850162001f87565b60c08301525092915050565b60008060408385031215620024cc57620024cb62001e57565b5b600083015167ffffffffffffffff811115620024ed57620024ec62001e5c565b5b620024fb858286016200221c565b925050602083015167ffffffffffffffff8111156200251f576200251e62001e5c565b5b6200252d85828601620023ad565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200258a57607f821691505b602082108103620025a0576200259f62002542565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200260a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620025cb565b620026168683620025cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600062002659620026536200264d8462002372565b6200262e565b62002372565b9050919050565b6000819050919050565b620026758362002638565b6200268d620026848262002660565b848454620025d8565b825550505050565b600090565b620026a462002695565b620026b18184846200266a565b505050565b5b81811015620026d957620026cd6000826200269a565b600181019050620026b7565b5050565b601f8211156200272857620026f281620025a6565b620026fd84620025bb565b810160208510156200270d578190505b620027256200271c85620025bb565b830182620026b6565b50505b505050565b600082821c905092915050565b60006200274d600019846008026200272d565b1980831691505092915050565b60006200276883836200273a565b9150826002028217905092915050565b620027838262002537565b67ffffffffffffffff8111156200279f576200279e62001e77565b5b620027ab825462002571565b620027b8828285620026dd565b600060209050601f831160018114620027f05760008415620027db578287015190505b620027e785826200275a565b86555062002857565b601f1984166200280086620025a6565b60005b828110156200282a5784890151825560018201915060208501945060208101905062002803565b868310156200284a578489015162002846601f8916826200273a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620028ed57808604811115620028c557620028c46200285f565b5b6001851615620028d55780820291505b8081029050620028e5856200288e565b9450620028a5565b94509492505050565b600082620029085760019050620029db565b81620029185760009050620029db565b81600181146200293157600281146200293c5762002972565b6001915050620029db565b60ff8411156200295157620029506200285f565b5b8360020a9150848211156200296b576200296a6200285f565b5b50620029db565b5060208310610133831016604e8410600b8410161715620029ac5782820a905083811115620029a657620029a56200285f565b5b620029db565b620029bb84848460016200289b565b92509050818404811115620029d557620029d46200285f565b5b81810290505b9392505050565b6000620029ef8262002372565b9150620029fc8362002334565b925062002a2b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620028f6565b905092915050565b600062002a408262002372565b915062002a4d8362002372565b925082820262002a5d8162002372565b9150828204841483151762002a775762002a766200285f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600062002b4b60278362002adc565b915062002b588262002aed565b604082019050919050565b6000602082019050818103600083015262002b7e8162002b3c565b9050919050565b600062002b928262002372565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002bc75762002bc66200285f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62002c098162001f59565b82525050565b6003811062002c235762002c2262002aad565b5b50565b600081905062002c368262002c0f565b919050565b600062002c488262002c26565b9050919050565b62002c5a8162002c3b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62002c978162001ff5565b82525050565b600062002cab838362002c8c565b60208301905092915050565b6000602082019050919050565b600062002cd18262002c60565b62002cdd818562002c6b565b935062002cea8362002c7c565b8060005b8381101562002d2157815162002d05888262002c9d565b975062002d128362002cb7565b92505060018101905062002cee565b5085935050505092915050565b600060608301600083015162002d48600086018262002bfe565b50602083015162002d5d602086018262002c4f565b506040830151848203604086015262002d77828262002cc4565b9150508091505092915050565b600062002d92838362002d2e565b905092915050565b6000602082019050919050565b600062002db48262002bd2565b62002dc0818562002bdd565b93508360208202850162002dd48562002bee565b8060005b8581101562002e16578484038952815162002df4858262002d84565b945062002e018362002d9a565b925060208a0199505060018101905062002dd8565b50829750879550505050505092915050565b62002e338162001f59565b82525050565b600081519050919050565b600082825260208201905092915050565b600062002e628262002e39565b62002e6e818562002e44565b935062002e808185602086016200228a565b62002e8b8162001e66565b840191505092915050565b6000606082019050818103600083015262002eb2818662002da7565b905062002ec3602083018562002e28565b818103604083015262002ed7818462002e55565b9050949350505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062002f19601f8362002adc565b915062002f268262002ee1565b602082019050919050565b6000602082019050818103600083015262002f4c8162002f0a565b9050919050565b600062002f608262002372565b915062002f6d8362002372565b925082820190508082111562002f885762002f876200285f565b5b92915050565b62002f998162002372565b82525050565b600060208201905062002fb6600083018462002f8e565b92915050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b60006200301a602b8362002adc565b9150620030278262002fbc565b604082019050919050565b600060208201905081810360008301526200304d816200300b565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000620030b2602c8362002adc565b9150620030bf8262003054565b604082019050919050565b60006020820190508181036000830152620030e581620030a3565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006200314a60358362002adc565b91506200315782620030ec565b604082019050919050565b600060208201905081810360008301526200317d816200313b565b9050919050565b600061ffff82169050919050565b60006200319f8262003184565b915061ffff8203620031b657620031b56200285f565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b60006200321f60388362002adc565b91506200322c82620031c1565b604082019050919050565b60006020820190508181036000830152620032528162003210565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000620032b760368362002adc565b9150620032c48262003259565b604082019050919050565b60006020820190508181036000830152620032ea81620032a8565b9050919050565b7f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860008201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000602082015250565b60006200334f603c8362002adc565b91506200335c82620032f1565b604082019050919050565b60006020820190508181036000830152620033828162003340565b9050919050565b7f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460008201527f7920627574205f696e6974206973206e6f742061646472657373283029000000602082015250565b6000620033e7603d8362002adc565b9150620033f48262003389565b604082019050919050565b600060208201905081810360008301526200341a81620033d8565b9050919050565b600081905092915050565b6000620034398262002e39565b62003445818562003421565b9350620034578185602086016200228a565b80840191505092915050565b60006200347182846200342c565b915081905092915050565b6000620034898262002537565b62003495818562002adc565b9350620034a78185602086016200228a565b620034b28162001e66565b840191505092915050565b60006020820190508181036000830152620034d981846200347c565b905092915050565b7f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560008201527f7665727465640000000000000000000000000000000000000000000000000000602082015250565b60006200353f60268362002adc565b91506200354c82620034e1565b604082019050919050565b60006020820190508181036000830152620035728162003530565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000620035d760378362002adc565b9150620035e48262003579565b604082019050919050565b600060208201905081810360008301526200360a81620035c8565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b60006200366f602e8362002adc565b91506200367c8262003611565b604082019050919050565b60006020820190508181036000830152620036a28162003660565b9050919050565b6000620036b68262002372565b9150620036c38362002372565b9250828203905081811115620036de57620036dd6200285f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6127cd80620037236000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611a7f565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b60005b835181101561034b57600084828151811061018857610187611a9f565b5b6020026020010151602001519050600060028111156101aa576101a9611ace565b5b8160028111156101bd576101bc611ace565b5b0361020d576102088583815181106101d8576101d7611a9f565b5b6020026020010151600001518684815181106101f7576101f6611a9f565b5b602002602001015160400151610602565b610337565b6001600281111561022157610220611ace565b5b81600281111561023457610233611ace565b5b036102845761027f85838151811061024f5761024e611a9f565b5b60200260200101516000015186848151811061026e5761026d611a9f565b5b602002602001015160400151610ad9565b610336565b60028081111561029757610296611ace565b5b8160028111156102aa576102a9611ace565b5b036102fa576102f58583815181106102c5576102c4611a9f565b5b6020026020010151600001518684815181106102e4576102e3611a9f565b5b602002602001015160400151610fb9565b610335565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90611b6f565b60405180910390fd5b5b5b50808061034390611bc8565b91505061016a565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161037f93929190611f34565b60405180910390a16103918282611143565b505050565b60006103a061046d565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050090611fc5565b60405180910390fd5b61051560008383611355565b600061051f61046d565b9050818160070160008282546105359190611fe5565b92505081905550818160050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105e99190612028565b60405180910390a36105fd6000848461135a565b505050565b6000815111610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d906120b5565b60405180910390fd5b600061065061046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b890612147565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050905060008161ffff16036108075761073b846040518060600160405280602481526020016127746024913961135f565b81600201805490508260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff16021790555081600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60005b8351811015610ad257600084828151811061082857610827611a9f565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461091c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610913906121d9565b60405180910390fd5b8460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555086856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff1602179055508380610aba90612207565b94505050508080610aca90611bc8565b91505061080a565b5050505050565b6000815111610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b14906120b5565b60405180910390fd5b6000610b2761046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612147565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050905060008161ffff1603610cde57610c12846040518060600160405280602481526020016127746024913961135f565b81600201805490508260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff16021790555081600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60005b8351811015610fb2576000848281518110610cff57610cfe611a9f565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de9906122a3565b60405180910390fd5b610dfc81836113b1565b83856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff1602179055508460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555086856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508380610f9a90612207565b94505050508080610faa90611bc8565b915050610ce1565b5050505050565b6000815111610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906120b5565b60405180910390fd5b600061100761046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f90612335565b60405180910390fd5b60005b825181101561113d57600083828151811061109957611098611a9f565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061112881836113b1565b5050808061113590611bc8565b91505061107b565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111c05760008151146111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b2906123c7565b60405180910390fd5b611351565b6000815111611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90612459565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125a576112598260405180606001604052806028815260200161274c6028913961135f565b5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405161128291906124b5565b600060405180830381855af49150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b50915091508161134e5760008151111561131357806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a9190612510565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611345906125a4565b60405180910390fd5b50505b5050565b505050565b505050565b6000823b90506000811182906113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a29190612510565b60405180910390fd5b50505050565b60006113bb61046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390612636565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611491906126c8565b60405180910390fd5b6000816000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a900461ffff1661ffff169050600060018360010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905061155d91906126e8565b90508082146116dd5760008360010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000182815481106115be576115bd611a9f565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848154811061163a57611639611a9f565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff160217905550505b8260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806117315761173061271c565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055826000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549061ffff0219169055505060008103611a1b5760006001846002018054905061181191906126e8565b905060008460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900461ffff1661ffff16905081811461197a57600085600201838154811061188d5761188c611a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808660020183815481106118d1576118d0611a9f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818660010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff160217905550505b8460020180548061198e5761198d61271c565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81549061ffff021916905550505b5050505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b6000611a69602083611a22565b9150611a7482611a33565b602082019050919050565b60006020820190508181036000830152611a9881611a5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b6000611b59602783611a22565b9150611b6482611afd565b604082019050919050565b60006020820190508181036000830152611b8881611b4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000611bd382611bbe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c0557611c04611b8f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c6782611c3c565b9050919050565b611c7781611c5c565b82525050565b60038110611c8e57611c8d611ace565b5b50565b6000819050611c9f82611c7d565b919050565b6000611caf82611c91565b9050919050565b611cbf81611ca4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d2681611cf1565b82525050565b6000611d388383611d1d565b60208301905092915050565b6000602082019050919050565b6000611d5c82611cc5565b611d668185611cd0565b9350611d7183611ce1565b8060005b83811015611da2578151611d898882611d2c565b9750611d9483611d44565b925050600181019050611d75565b5085935050505092915050565b6000606083016000830151611dc76000860182611c6e565b506020830151611dda6020860182611cb6565b5060408301518482036040860152611df28282611d51565b9150508091505092915050565b6000611e0b8383611daf565b905092915050565b6000602082019050919050565b6000611e2b82611c10565b611e358185611c1b565b935083602082028501611e4785611c2c565b8060005b85811015611e835784840389528151611e648582611dff565b9450611e6f83611e13565b925060208a01995050600181019050611e4b565b50829750879550505050505092915050565b611e9e81611c5c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ede578082015181840152602081019050611ec3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f0682611ea4565b611f108185611eaf565b9350611f20818560208601611ec0565b611f2981611eea565b840191505092915050565b60006060820190508181036000830152611f4e8186611e20565b9050611f5d6020830185611e95565b8181036040830152611f6f8184611efb565b9050949350505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611faf601f83611a22565b9150611fba82611f79565b602082019050919050565b60006020820190508181036000830152611fde81611fa2565b9050919050565b6000611ff082611bbe565b9150611ffb83611bbe565b925082820190508082111561201357612012611b8f565b5b92915050565b61202281611bbe565b82525050565b600060208201905061203d6000830184612019565b92915050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b600061209f602b83611a22565b91506120aa82612043565b604082019050919050565b600060208201905081810360008301526120ce81612092565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000612131602c83611a22565b915061213c826120d5565b604082019050919050565b6000602082019050818103600083015261216081612124565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006121c3603583611a22565b91506121ce82612167565b604082019050919050565b600060208201905081810360008301526121f2816121b6565b9050919050565b600061ffff82169050919050565b6000612212826121f9565b915061ffff820361222657612225611b8f565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b600061228d603883611a22565b915061229882612231565b604082019050919050565b600060208201905081810360008301526122bc81612280565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600061231f603683611a22565b915061232a826122c3565b604082019050919050565b6000602082019050818103600083015261234e81612312565b9050919050565b7f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860008201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000602082015250565b60006123b1603c83611a22565b91506123bc82612355565b604082019050919050565b600060208201905081810360008301526123e0816123a4565b9050919050565b7f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460008201527f7920627574205f696e6974206973206e6f742061646472657373283029000000602082015250565b6000612443603d83611a22565b915061244e826123e7565b604082019050919050565b6000602082019050818103600083015261247281612436565b9050919050565b600081905092915050565b600061248f82611ea4565b6124998185612479565b93506124a9818560208601611ec0565b80840191505092915050565b60006124c18284612484565b915081905092915050565b600081519050919050565b60006124e2826124cc565b6124ec8185611a22565b93506124fc818560208601611ec0565b61250581611eea565b840191505092915050565b6000602082019050818103600083015261252a81846124d7565b905092915050565b7f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560008201527f7665727465640000000000000000000000000000000000000000000000000000602082015250565b600061258e602683611a22565b915061259982612532565b604082019050919050565b600060208201905081810360008301526125bd81612581565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000612620603783611a22565b915061262b826125c4565b604082019050919050565b6000602082019050818103600083015261264f81612613565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b60006126b2602e83611a22565b91506126bd82612656565b604082019050919050565b600060208201905081810360008301526126e1816126a5565b9050919050565b60006126f382611bbe565b91506126fe83611bbe565b925082820390508181111561271657612715611b8f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212207b3b96784c1dd0a3cc59b51660077845077cdbdeef1657aee98ec90b15ba660b64736f6c634300081100334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f646500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000520000000000000000000000000d9acb07755309225208e64263d8ba4b601452a8e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000390293ccb1eba3ef1c6be893d4d43dde635e7ed30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000057a0ed62700000000000000000000000000000000000000000000000000000000adfca15e0000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc60000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000e282313dfe39b6c2dbf6b5d69eda4c74d2688e49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000003f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000e0e3671c0000000000000000000000000000000000000000000000000000000000000000000000000000000082e166d8f431429b597bd4c2a3488eb719ab41e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b06fdde030000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000095ea7b300000000000000000000000000000000000000000000000000000000dd62ed3e0000000000000000000000000000000000000000000000000000000023b872dd000000000000000000000000000000000000000000000000000000003950935100000000000000000000000000000000000000000000000000000000a457c2d70000000000000000000000000000000000000000000000000000000000000000000000000000000093150a4988f2514a1a5b35b63586f764bd837aec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001a4fbc6600000000000000000000000000000000000000000000000000000000000000000000000000000000003e819ebe0f0f89dddcb5516f9cb669cc33ddfc900000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000174876e8000000000000000000000000000000000000000000000000000000000181914ab000000000000000000000000003e819ebe0f0f89dddcb5516f9cb669cc33ddfc900000000000000000000000000000000000000000000000000000000000000076b75692e6574680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034b55490000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611a7f565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b60005b835181101561034b57600084828151811061018857610187611a9f565b5b6020026020010151602001519050600060028111156101aa576101a9611ace565b5b8160028111156101bd576101bc611ace565b5b0361020d576102088583815181106101d8576101d7611a9f565b5b6020026020010151600001518684815181106101f7576101f6611a9f565b5b602002602001015160400151610602565b610337565b6001600281111561022157610220611ace565b5b81600281111561023457610233611ace565b5b036102845761027f85838151811061024f5761024e611a9f565b5b60200260200101516000015186848151811061026e5761026d611a9f565b5b602002602001015160400151610ad9565b610336565b60028081111561029757610296611ace565b5b8160028111156102aa576102a9611ace565b5b036102fa576102f58583815181106102c5576102c4611a9f565b5b6020026020010151600001518684815181106102e4576102e3611a9f565b5b602002602001015160400151610fb9565b610335565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90611b6f565b60405180910390fd5b5b5b50808061034390611bc8565b91505061016a565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161037f93929190611f34565b60405180910390a16103918282611143565b505050565b60006103a061046d565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050090611fc5565b60405180910390fd5b61051560008383611355565b600061051f61046d565b9050818160070160008282546105359190611fe5565b92505081905550818160050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105e99190612028565b60405180910390a36105fd6000848461135a565b505050565b6000815111610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d906120b5565b60405180910390fd5b600061065061046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b890612147565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050905060008161ffff16036108075761073b846040518060600160405280602481526020016127746024913961135f565b81600201805490508260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff16021790555081600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60005b8351811015610ad257600084828151811061082857610827611a9f565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461091c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610913906121d9565b60405180910390fd5b8460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555086856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff1602179055508380610aba90612207565b94505050508080610aca90611bc8565b91505061080a565b5050505050565b6000815111610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b14906120b5565b60405180910390fd5b6000610b2761046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612147565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050905060008161ffff1603610cde57610c12846040518060600160405280602481526020016127746024913961135f565b81600201805490508260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff16021790555081600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60005b8351811015610fb2576000848281518110610cff57610cfe611a9f565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de9906122a3565b60405180910390fd5b610dfc81836113b1565b83856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff1602179055508460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555086856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508380610f9a90612207565b94505050508080610faa90611bc8565b915050610ce1565b5050505050565b6000815111610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906120b5565b60405180910390fd5b600061100761046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f90612335565b60405180910390fd5b60005b825181101561113d57600083828151811061109957611098611a9f565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061112881836113b1565b5050808061113590611bc8565b91505061107b565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111c05760008151146111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b2906123c7565b60405180910390fd5b611351565b6000815111611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90612459565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125a576112598260405180606001604052806028815260200161274c6028913961135f565b5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405161128291906124b5565b600060405180830381855af49150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b50915091508161134e5760008151111561131357806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a9190612510565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611345906125a4565b60405180910390fd5b50505b5050565b505050565b505050565b6000823b90506000811182906113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a29190612510565b60405180910390fd5b50505050565b60006113bb61046d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390612636565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611491906126c8565b60405180910390fd5b6000816000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a900461ffff1661ffff169050600060018360010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905061155d91906126e8565b90508082146116dd5760008360010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000182815481106115be576115bd611a9f565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848154811061163a57611639611a9f565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff160217905550505b8260010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806117315761173061271c565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055826000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549061ffff0219169055505060008103611a1b5760006001846002018054905061181191906126e8565b905060008460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900461ffff1661ffff16905081811461197a57600085600201838154811061188d5761188c611a9f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808660020183815481106118d1576118d0611a9f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818660010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548161ffff021916908361ffff160217905550505b8460020180548061198e5761198d61271c565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558460010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81549061ffff021916905550505b5050505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b6000611a69602083611a22565b9150611a7482611a33565b602082019050919050565b60006020820190508181036000830152611a9881611a5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b6000611b59602783611a22565b9150611b6482611afd565b604082019050919050565b60006020820190508181036000830152611b8881611b4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000611bd382611bbe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c0557611c04611b8f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c6782611c3c565b9050919050565b611c7781611c5c565b82525050565b60038110611c8e57611c8d611ace565b5b50565b6000819050611c9f82611c7d565b919050565b6000611caf82611c91565b9050919050565b611cbf81611ca4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d2681611cf1565b82525050565b6000611d388383611d1d565b60208301905092915050565b6000602082019050919050565b6000611d5c82611cc5565b611d668185611cd0565b9350611d7183611ce1565b8060005b83811015611da2578151611d898882611d2c565b9750611d9483611d44565b925050600181019050611d75565b5085935050505092915050565b6000606083016000830151611dc76000860182611c6e565b506020830151611dda6020860182611cb6565b5060408301518482036040860152611df28282611d51565b9150508091505092915050565b6000611e0b8383611daf565b905092915050565b6000602082019050919050565b6000611e2b82611c10565b611e358185611c1b565b935083602082028501611e4785611c2c565b8060005b85811015611e835784840389528151611e648582611dff565b9450611e6f83611e13565b925060208a01995050600181019050611e4b565b50829750879550505050505092915050565b611e9e81611c5c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ede578082015181840152602081019050611ec3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f0682611ea4565b611f108185611eaf565b9350611f20818560208601611ec0565b611f2981611eea565b840191505092915050565b60006060820190508181036000830152611f4e8186611e20565b9050611f5d6020830185611e95565b8181036040830152611f6f8184611efb565b9050949350505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611faf601f83611a22565b9150611fba82611f79565b602082019050919050565b60006020820190508181036000830152611fde81611fa2565b9050919050565b6000611ff082611bbe565b9150611ffb83611bbe565b925082820190508082111561201357612012611b8f565b5b92915050565b61202281611bbe565b82525050565b600060208201905061203d6000830184612019565b92915050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b600061209f602b83611a22565b91506120aa82612043565b604082019050919050565b600060208201905081810360008301526120ce81612092565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000612131602c83611a22565b915061213c826120d5565b604082019050919050565b6000602082019050818103600083015261216081612124565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006121c3603583611a22565b91506121ce82612167565b604082019050919050565b600060208201905081810360008301526121f2816121b6565b9050919050565b600061ffff82169050919050565b6000612212826121f9565b915061ffff820361222657612225611b8f565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b600061228d603883611a22565b915061229882612231565b604082019050919050565b600060208201905081810360008301526122bc81612280565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600061231f603683611a22565b915061232a826122c3565b604082019050919050565b6000602082019050818103600083015261234e81612312565b9050919050565b7f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860008201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000602082015250565b60006123b1603c83611a22565b91506123bc82612355565b604082019050919050565b600060208201905081810360008301526123e0816123a4565b9050919050565b7f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460008201527f7920627574205f696e6974206973206e6f742061646472657373283029000000602082015250565b6000612443603d83611a22565b915061244e826123e7565b604082019050919050565b6000602082019050818103600083015261247281612436565b9050919050565b600081905092915050565b600061248f82611ea4565b6124998185612479565b93506124a9818560208601611ec0565b80840191505092915050565b60006124c18284612484565b915081905092915050565b600081519050919050565b60006124e2826124cc565b6124ec8185611a22565b93506124fc818560208601611ec0565b61250581611eea565b840191505092915050565b6000602082019050818103600083015261252a81846124d7565b905092915050565b7f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560008201527f7665727465640000000000000000000000000000000000000000000000000000602082015250565b600061258e602683611a22565b915061259982612532565b604082019050919050565b600060208201905081810360008301526125bd81612581565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000612620603783611a22565b915061262b826125c4565b604082019050919050565b6000602082019050818103600083015261264f81612613565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b60006126b2602e83611a22565b91506126bd82612656565b604082019050919050565b600060208201905081810360008301526126e1816126a5565b9050919050565b60006126f382611bbe565b91506126fe83611bbe565b925082820390508181111561271657612715611b8f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212207b3b96784c1dd0a3cc59b51660077845077cdbdeef1657aee98ec90b15ba660b64736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000520000000000000000000000000d9acb07755309225208e64263d8ba4b601452a8e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000390293ccb1eba3ef1c6be893d4d43dde635e7ed30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000057a0ed62700000000000000000000000000000000000000000000000000000000adfca15e0000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc60000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000e282313dfe39b6c2dbf6b5d69eda4c74d2688e49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000003f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000e0e3671c0000000000000000000000000000000000000000000000000000000000000000000000000000000082e166d8f431429b597bd4c2a3488eb719ab41e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b06fdde030000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000095ea7b300000000000000000000000000000000000000000000000000000000dd62ed3e0000000000000000000000000000000000000000000000000000000023b872dd000000000000000000000000000000000000000000000000000000003950935100000000000000000000000000000000000000000000000000000000a457c2d70000000000000000000000000000000000000000000000000000000000000000000000000000000093150a4988f2514a1a5b35b63586f764bd837aec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001a4fbc6600000000000000000000000000000000000000000000000000000000000000000000000000000000003e819ebe0f0f89dddcb5516f9cb669cc33ddfc900000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000174876e8000000000000000000000000000000000000000000000000000000000181914ab000000000000000000000000003e819ebe0f0f89dddcb5516f9cb669cc33ddfc900000000000000000000000000000000000000000000000000000000000000076b75692e6574680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034b55490000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _diamondCut (tuple[]):
Arg [1] : facetAddress (address): 0xd9aCb07755309225208E64263d8Ba4B601452A8e
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0x1f931c1

Arg [1] : facetAddress (address): 0x390293cCb1EBA3EF1C6BE893d4d43dDE635e7eD3
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0x01ffc9a

Arg [1] : facetAddress (address): 0xE282313dFe39B6C2DbF6B5D69Eda4C74D2688e49
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xe0e3671

Arg [1] : facetAddress (address): 0x82e166D8f431429b597BD4C2a3488EB719ab41e5
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xa457c2d

Arg [1] : facetAddress (address): 0x93150a4988F2514a1a5B35b63586f764bd837aec
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xa4fbc66

Arg [1] : _args (tuple):
Arg [1] : contractOwner (address): 0x03E819EBe0F0f89ddDcb5516F9Cb669CC33ddfc9
Arg [2] : name_ (string): kui.eth
Arg [3] : symbol_ (string): KUI
Arg [4] : decimal_ (uint8): 18
Arg [5] : capSupply_ (uint256): 100000000000
Arg [6] : preMint (uint256): 6468750000
Arg [7] : preMintOwner (address): 0x03E819EBe0F0f89ddDcb5516F9Cb669CC33ddfc9


-----Encoded View---------------
60 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000620
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000340
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000520
Arg [8] : 000000000000000000000000d9acb07755309225208e64263d8ba4b601452a8e
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [12] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [13] : 000000000000000000000000390293ccb1eba3ef1c6be893d4d43dde635e7ed3
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [17] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [18] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [19] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [20] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [21] : 01ffc9a700000000000000000000000000000000000000000000000000000000
Arg [22] : 000000000000000000000000e282313dfe39b6c2dbf6b5d69eda4c74d2688e49
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [26] : f2fde38b00000000000000000000000000000000000000000000000000000000
Arg [27] : 8da5cb5b00000000000000000000000000000000000000000000000000000000
Arg [28] : e0e3671c00000000000000000000000000000000000000000000000000000000
Arg [29] : 00000000000000000000000082e166d8f431429b597bd4c2a3488eb719ab41e5
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [32] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [33] : 06fdde0300000000000000000000000000000000000000000000000000000000
Arg [34] : 95d89b4100000000000000000000000000000000000000000000000000000000
Arg [35] : 313ce56700000000000000000000000000000000000000000000000000000000
Arg [36] : 18160ddd00000000000000000000000000000000000000000000000000000000
Arg [37] : 70a0823100000000000000000000000000000000000000000000000000000000
Arg [38] : a9059cbb00000000000000000000000000000000000000000000000000000000
Arg [39] : 095ea7b300000000000000000000000000000000000000000000000000000000
Arg [40] : dd62ed3e00000000000000000000000000000000000000000000000000000000
Arg [41] : 23b872dd00000000000000000000000000000000000000000000000000000000
Arg [42] : 3950935100000000000000000000000000000000000000000000000000000000
Arg [43] : a457c2d700000000000000000000000000000000000000000000000000000000
Arg [44] : 00000000000000000000000093150a4988f2514a1a5b35b63586f764bd837aec
Arg [45] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [46] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [47] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [48] : a4fbc66000000000000000000000000000000000000000000000000000000000
Arg [49] : 00000000000000000000000003e819ebe0f0f89dddcb5516f9cb669cc33ddfc9
Arg [50] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [51] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [52] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [53] : 000000000000000000000000000000000000000000000000000000174876e800
Arg [54] : 0000000000000000000000000000000000000000000000000000000181914ab0
Arg [55] : 00000000000000000000000003e819ebe0f0f89dddcb5516f9cb669cc33ddfc9
Arg [56] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [57] : 6b75692e65746800000000000000000000000000000000000000000000000000
Arg [58] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [59] : 4b55490000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

657:2039:0:-:0;;;;;;;;1936:43;1989:16;134:45:8;1989:61:0;;2094:8;2083:19;;2121:13;2137:2;:29;;:38;2167:7;;;;2137:38;;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;2121:67;;2223:1;2206:19;;:5;:19;;;2198:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;2314:14;2311:1;2308;2295:34;2405:1;2402;2386:14;2383:1;2376:5;2369;2356:51;2441:16;2438:1;2435;2420:38;2478:6;2502:1;2497:66;;;;2612:16;2609:1;2602:27;2497:66;2532:16;2529:1;2522:27;812:1067:6;968:18;963:806;1001:11;:18;988:10;:31;963:806;;;1049:33;1085:11;1097:10;1085:23;;;;;;;;:::i;:::-;;;;;;;;:30;;;1049:66;;1143:30;1133:40;;;;;;;;:::i;:::-;;:6;:40;;;;;;;;:::i;:::-;;;1129:630;;1193:93;1206:11;1218:10;1206:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;1244:11;1256:10;1244:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;1193:12;:93::i;:::-;1129:630;;;1321:34;1311:44;;;;;;;;:::i;:::-;;:6;:44;;;;;;;;:::i;:::-;;;1307:452;;1375:97;1392:11;1404:10;1392:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;1430:11;1442:10;1430:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;1375:16;:97::i;:::-;1307:452;;;1507:33;1497:43;;;;;;;;:::i;:::-;;:6;:43;;;;;;;;:::i;:::-;;;1493:266;;1560:96;1576:11;1588:10;1576:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;1614:11;1626:10;1614:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;1560:15;:96::i;:::-;1493:266;;;1695:49;;;;;;;;;;:::i;:::-;;;;;;;;1493:266;1307:452;1129:630;1035:734;1021:12;;;;;:::i;:::-;;;;963:806;;;;1783:41;1794:11;1807:5;1814:9;1783:41;;;;;;;;:::i;:::-;;;;;;;;1834:38;1855:5;1862:9;1834:20;:38::i;:::-;812:1067;;;:::o;218:349:7:-;331:43;377:34;:32;:34::i;:::-;331:80;;421:21;445:2;:16;;;;;;;;;;;;421:40;;490:9;471:2;:16;;;:28;;;;;;;;;;;;;;;;;;550:9;514:46;;535:13;514:46;;;;;;;;;;;;272:295;;218:349;:::o;1613:197:8:-;1662:25;1699:16;134:45;1699:43;;1786:8;1775:19;;1761:43;1613:197;:::o;2141:613:9:-;2235:1;2216:21;;:7;:21;;;2208:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2284:49;2313:1;2317:7;2326:6;2284:20;:49::i;:::-;2337:42;2382:34;:32;:34::i;:::-;2337:79;;2444:6;2426:1;:14;;;:24;;;;;;;:::i;:::-;;;;;;;;2620:6;2596:1;:11;;:20;2608:7;2596:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;2672:7;2651:37;;2668:1;2651:37;;;2681:6;2651:37;;;;;;:::i;:::-;;;;;;;;2699:48;2727:1;2731:7;2740:6;2699:19;:48::i;:::-;2198:556;2141:613;;:::o;1885:1587:6:-;2021:1;1993:18;:25;:29;1985:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;2080:43;2126:34;:32;:34::i;:::-;2080:80;;2280:1;2255:27;;:13;:27;;;2247:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;2341:23;2374:2;:25;;:40;2400:13;2374:40;;;;;;;;;;;;;;;:58;;:65;;;;2341:99;;2528:1;2508:16;:21;;;2504:290;;2545:77;2568:13;2545:77;;;;;;;;;;;;;;;;;:22;:77::i;:::-;2707:2;:17;;:24;;;;2636:2;:25;;:40;2662:13;2636:40;;;;;;;;;;;;;;;:61;;;:96;;;;;;;;;;;;;;;;;;2746:2;:17;;2769:13;2746:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2504:290;2808:21;2803:663;2847:18;:25;2831:13;:41;2803:663;;;2905:15;2923:18;2942:13;2923:33;;;;;;;;:::i;:::-;;;;;;;;2905:51;;2970:23;2996:2;:29;;:39;3026:8;2996:39;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;2970:78;;3097:1;3070:29;;:15;:29;;;3062:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;3171:2;:25;;:40;3197:13;3171:40;;;;;;;;;;;;;;;:58;;3235:8;3171:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3313:13;3258:2;:29;;:39;3288:8;3258:39;;;;;;;;;;;;;;;;;:52;;;:68;;;;;;;;;;;;;;;;;;3407:16;3340:2;:29;;:39;3370:8;3340:39;;;;;;;;;;;;;;;;;:64;;;:83;;;;;;;;;;;;;;;;;;3437:18;;;;;:::i;:::-;;;;2891:575;;2874:15;;;;;:::i;:::-;;;;2803:663;;;;1975:1497;;1885:1587;;:::o;3478:1603::-;3618:1;3590:18;:25;:29;3582:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3677:43;3723:34;:32;:34::i;:::-;3677:80;;3800:1;3775:27;;:13;:27;;;3767:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3861:23;3894:2;:25;;:40;3920:13;3894:40;;;;;;;;;;;;;;;:58;;:65;;;;3861:99;;4048:1;4028:16;:21;;;4024:290;;4065:77;4088:13;4065:77;;;;;;;;;;;;;;;;;:22;:77::i;:::-;4227:2;:17;;:24;;;;4156:2;:25;;:40;4182:13;4156:40;;;;;;;;;;;;;;;:61;;;:96;;;;;;;;;;;;;;;;;;4266:2;:17;;4289:13;4266:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4024:290;4328:21;4323:752;4367:18;:25;4351:13;:41;4323:752;;;4425:15;4443:18;4462:13;4443:33;;;;;;;;:::i;:::-;;;;;;;;4425:51;;4490:23;4516:2;:29;;:39;4546:8;4516:39;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;4490:78;;4609:13;4590:32;;:15;:32;;;4582:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;4697:41;4712:15;4729:8;4697:14;:41::i;:::-;4847:16;4780:2;:29;;:39;4810:8;4780:39;;;;;;;;;;;;;;;;;:64;;;:83;;;;;;;;;;;;;;;;;;4877:2;:25;;:40;4903:13;4877:40;;;;;;;;;;;;;;;:58;;4941:8;4877:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5019:13;4964:2;:29;;:39;4994:8;4964:39;;;;;;;;;;;;;;;;;:52;;;:68;;;;;;;;;;;;;;;;;;5046:18;;;;;:::i;:::-;;;;4411:664;;4394:15;;;;;:::i;:::-;;;;4323:752;;;;3572:1509;;3478:1603;;:::o;5087:774::-;5226:1;5198:18;:25;:29;5190:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5285:43;5331:34;:32;:34::i;:::-;5285:80;;5473:1;5448:27;;:13;:27;;;5440:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;5549:21;5544:311;5588:18;:25;5572:13;:41;5544:311;;;5646:15;5664:18;5683:13;5664:33;;;;;;;;:::i;:::-;;;;;;;;5646:51;;5711:23;5737:2;:29;;:39;5767:8;5737:39;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;5711:78;;5803:41;5818:15;5835:8;5803:14;:41::i;:::-;5632:223;;5615:15;;;;;:::i;:::-;;;;5544:311;;;;5180:681;5087:774;;:::o;8126:871::-;8235:1;8218:19;;:5;:19;;;8214:777;;8281:1;8261:9;:16;:21;8253:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;8214:777;;;8405:1;8386:9;:16;:20;8378:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;8507:4;8490:22;;:5;:22;;;8486:134;;8532:73;8555:5;8532:73;;;;;;;;;;;;;;;;;:22;:73::i;:::-;8486:134;8634:12;8648:18;8670:5;:18;;8689:9;8670:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8633:66;;;;8718:7;8713:268;;8764:1;8749:5;:12;:16;8745:222;;;8846:5;8832:21;;;;;;;;;;;:::i;:::-;;;;;;;;8745:222;8900:48;;;;;;;;;;:::i;:::-;;;;;;;;8713:268;8364:627;;8214:777;8126:871;;:::o;5981:113:9:-;;;;:::o;6682:112::-;;;;:::o;9003:261:6:-;9107:20;9188:9;9176:22;9160:38;;9240:1;9225:12;:16;9243:13;9217:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9097:167;9003:261;;:::o;5867:2253::-;5951:43;5997:34;:32;:34::i;:::-;5951:80;;6074:1;6049:27;;:13;:27;;;6041:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;6256:4;6231:30;;:13;:30;;;6223:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;6396:24;6423:2;:29;;:40;6453:9;6423:40;;;;;;;;;;;;;;;;;:65;;;;;;;;;;;;6396:92;;;;6498:28;6597:1;6529:2;:25;;:40;6555:13;6529:40;;;;;;;;;;;;;;;:58;;:65;;;;:69;;;;:::i;:::-;6498:100;;6700:20;6680:16;:40;6676:387;;6736:19;6758:2;:25;;:40;6784:13;6758:40;;;;;;;;;;;;;;;:58;;6817:20;6758:80;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6736:102;;6931:12;6852:2;:25;;:40;6878:13;6852:40;;;;;;;;;;;;;;;:58;;6911:16;6852:76;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;7035:16;6957:2;:29;;:43;6987:12;6957:43;;;;;;;;;;;;;;;;;:68;;;:95;;;;;;;;;;;;;;;;;;6722:341;6676:387;7108:2;:25;;:40;7134:13;7108:40;;;;;;;;;;;;;;;:58;;:64;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7189:2;:29;;:40;7219:9;7189:40;;;;;;;;;;;;;;;;;;7182:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7348:1;7324:20;:25;7320:794;;7456:32;7518:1;7491:2;:17;;:24;;;;:28;;;;:::i;:::-;7456:63;;7533:28;7564:2;:25;;:40;7590:13;7564:40;;;;;;;;;;;;;;;:61;;;;;;;;;;;;7533:92;;;;7667:24;7643:20;:48;7639:346;;7711:24;7738:2;:17;;7756:24;7738:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7711:70;;7841:16;7799:2;:17;;7817:20;7799:39;;;;;;;;:::i;:::-;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;7949:20;7875:2;:25;;:43;7901:16;7875:43;;;;;;;;;;;;;;;:64;;;:95;;;;;;;;;;;;;;;;;;7693:292;7639:346;7998:2;:17;;:23;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;8042:2;:25;;:40;8068:13;8042:40;;;;;;;;;;;;;;;:61;;;8035:68;;;;;;;;;;;7351:763;;7320:794;5941:2179;;;5867:2253;;:::o;7:169:10:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:182::-;322:34;318:1;310:6;306:14;299:58;182:182;:::o;370:366::-;512:3;533:67;597:2;592:3;533:67;:::i;:::-;526:74;;609:93;698:3;609:93;:::i;:::-;727:2;722:3;718:12;711:19;;370:366;;;:::o;742:419::-;908:4;946:2;935:9;931:18;923:26;;995:9;989:4;985:20;981:1;970:9;966:17;959:47;1023:131;1149:4;1023:131;:::i;:::-;1015:139;;742:419;;;:::o;1167:180::-;1215:77;1212:1;1205:88;1312:4;1309:1;1302:15;1336:4;1333:1;1326:15;1353:180;1401:77;1398:1;1391:88;1498:4;1495:1;1488:15;1522:4;1519:1;1512:15;1539:226;1679:34;1675:1;1667:6;1663:14;1656:58;1748:9;1743:2;1735:6;1731:15;1724:34;1539:226;:::o;1771:366::-;1913:3;1934:67;1998:2;1993:3;1934:67;:::i;:::-;1927:74;;2010:93;2099:3;2010:93;:::i;:::-;2128:2;2123:3;2119:12;2112:19;;1771:366;;;:::o;2143:419::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2396:9;2390:4;2386:20;2382:1;2371:9;2367:17;2360:47;2424:131;2550:4;2424:131;:::i;:::-;2416:139;;2143:419;;;:::o;2568:180::-;2616:77;2613:1;2606:88;2713:4;2710:1;2703:15;2737:4;2734:1;2727:15;2754:77;2791:7;2820:5;2809:16;;2754:77;;;:::o;2837:233::-;2876:3;2899:24;2917:5;2899:24;:::i;:::-;2890:33;;2945:66;2938:5;2935:77;2932:103;;3015:18;;:::i;:::-;2932:103;3062:1;3055:5;3051:13;3044:20;;2837:233;;;:::o;3076:139::-;3168:6;3202:5;3196:12;3186:22;;3076:139;;;:::o;3221:209::-;3345:11;3379:6;3374:3;3367:19;3419:4;3414:3;3410:14;3395:29;;3221:209;;;;:::o;3436:157::-;3528:4;3551:3;3543:11;;3581:4;3576:3;3572:14;3564:22;;3436:157;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:108::-;3910:24;3928:5;3910:24;:::i;:::-;3905:3;3898:37;3833:108;;:::o;3947:123::-;4038:1;4031:5;4028:12;4018:46;;4044:18;;:::i;:::-;4018:46;3947:123;:::o;4076:147::-;4131:7;4160:5;4149:16;;4166:51;4211:5;4166:51;:::i;:::-;4076:147;;;:::o;4229:::-;4295:9;4328:42;4364:5;4328:42;:::i;:::-;4315:55;;4229:147;;;:::o;4382:153::-;4475:53;4522:5;4475:53;:::i;:::-;4470:3;4463:66;4382:153;;:::o;4541:113::-;4607:6;4641:5;4635:12;4625:22;;4541:113;;;:::o;4660:173::-;4748:11;4782:6;4777:3;4770:19;4822:4;4817:3;4813:14;4798:29;;4660:173;;;;:::o;4839:131::-;4905:4;4928:3;4920:11;;4958:4;4953:3;4949:14;4941:22;;4839:131;;;:::o;4976:149::-;5012:7;5052:66;5045:5;5041:78;5030:89;;4976:149;;;:::o;5131:105::-;5206:23;5223:5;5206:23;:::i;:::-;5201:3;5194:36;5131:105;;:::o;5242:175::-;5309:10;5330:44;5370:3;5362:6;5330:44;:::i;:::-;5406:4;5401:3;5397:14;5383:28;;5242:175;;;;:::o;5423:112::-;5492:4;5524;5519:3;5515:14;5507:22;;5423:112;;;:::o;5569:704::-;5676:3;5705:53;5752:5;5705:53;:::i;:::-;5774:75;5842:6;5837:3;5774:75;:::i;:::-;5767:82;;5873:55;5922:5;5873:55;:::i;:::-;5951:7;5982:1;5967:281;5992:6;5989:1;5986:13;5967:281;;;6068:6;6062:13;6095:61;6152:3;6137:13;6095:61;:::i;:::-;6088:68;;6179:59;6231:6;6179:59;:::i;:::-;6169:69;;6027:221;6014:1;6011;6007:9;6002:14;;5967:281;;;5971:14;6264:3;6257:10;;5681:592;;;5569:704;;;;:::o;6345:837::-;6454:3;6490:4;6485:3;6481:14;6585:4;6578:5;6574:16;6568:23;6604:63;6661:4;6656:3;6652:14;6638:12;6604:63;:::i;:::-;6505:172;6761:4;6754:5;6750:16;6744:23;6780:79;6853:4;6848:3;6844:14;6830:12;6780:79;:::i;:::-;6687:182;6964:4;6957:5;6953:16;6947:23;7017:3;7011:4;7007:14;7000:4;6995:3;6991:14;6984:38;7043:101;7139:4;7125:12;7043:101;:::i;:::-;7035:109;;6879:276;7172:4;7165:11;;6459:723;6345:837;;;;:::o;7188:256::-;7307:10;7342:96;7434:3;7426:6;7342:96;:::i;:::-;7328:110;;7188:256;;;;:::o;7450:138::-;7545:4;7577;7572:3;7568:14;7560:22;;7450:138;;;:::o;7664:1111::-;7833:3;7862:79;7935:5;7862:79;:::i;:::-;7957:111;8061:6;8056:3;7957:111;:::i;:::-;7950:118;;8094:3;8139:4;8131:6;8127:17;8122:3;8118:27;8169:81;8244:5;8169:81;:::i;:::-;8273:7;8304:1;8289:441;8314:6;8311:1;8308:13;8289:441;;;8385:9;8379:4;8375:20;8370:3;8363:33;8436:6;8430:13;8464:114;8573:4;8558:13;8464:114;:::i;:::-;8456:122;;8601:85;8679:6;8601:85;:::i;:::-;8591:95;;8715:4;8710:3;8706:14;8699:21;;8349:381;8336:1;8333;8329:9;8324:14;;8289:441;;;8293:14;8746:4;8739:11;;8766:3;8759:10;;7838:937;;;;;7664:1111;;;;:::o;8781:118::-;8868:24;8886:5;8868:24;:::i;:::-;8863:3;8856:37;8781:118;;:::o;8905:98::-;8956:6;8990:5;8984:12;8974:22;;8905:98;;;:::o;9009:168::-;9092:11;9126:6;9121:3;9114:19;9166:4;9161:3;9157:14;9142:29;;9009:168;;;;:::o;9183:246::-;9264:1;9274:113;9288:6;9285:1;9282:13;9274:113;;;9373:1;9368:3;9364:11;9358:18;9354:1;9349:3;9345:11;9338:39;9310:2;9307:1;9303:10;9298:15;;9274:113;;;9421:1;9412:6;9407:3;9403:16;9396:27;9245:184;9183:246;;;:::o;9435:102::-;9476:6;9527:2;9523:7;9518:2;9511:5;9507:14;9503:28;9493:38;;9435:102;;;:::o;9543:373::-;9629:3;9657:38;9689:5;9657:38;:::i;:::-;9711:70;9774:6;9769:3;9711:70;:::i;:::-;9704:77;;9790:65;9848:6;9843:3;9836:4;9829:5;9825:16;9790:65;:::i;:::-;9880:29;9902:6;9880:29;:::i;:::-;9875:3;9871:39;9864:46;;9633:283;9543:373;;;;:::o;9922:780::-;10189:4;10227:2;10216:9;10212:18;10204:26;;10276:9;10270:4;10266:20;10262:1;10251:9;10247:17;10240:47;10304:158;10457:4;10448:6;10304:158;:::i;:::-;10296:166;;10472:72;10540:2;10529:9;10525:18;10516:6;10472:72;:::i;:::-;10591:9;10585:4;10581:20;10576:2;10565:9;10561:18;10554:48;10619:76;10690:4;10681:6;10619:76;:::i;:::-;10611:84;;9922:780;;;;;;:::o;10708:181::-;10848:33;10844:1;10836:6;10832:14;10825:57;10708:181;:::o;10895:366::-;11037:3;11058:67;11122:2;11117:3;11058:67;:::i;:::-;11051:74;;11134:93;11223:3;11134:93;:::i;:::-;11252:2;11247:3;11243:12;11236:19;;10895:366;;;:::o;11267:419::-;11433:4;11471:2;11460:9;11456:18;11448:26;;11520:9;11514:4;11510:20;11506:1;11495:9;11491:17;11484:47;11548:131;11674:4;11548:131;:::i;:::-;11540:139;;11267:419;;;:::o;11692:191::-;11732:3;11751:20;11769:1;11751:20;:::i;:::-;11746:25;;11785:20;11803:1;11785:20;:::i;:::-;11780:25;;11828:1;11825;11821:9;11814:16;;11849:3;11846:1;11843:10;11840:36;;;11856:18;;:::i;:::-;11840:36;11692:191;;;;:::o;11889:118::-;11976:24;11994:5;11976:24;:::i;:::-;11971:3;11964:37;11889:118;;:::o;12013:222::-;12106:4;12144:2;12133:9;12129:18;12121:26;;12157:71;12225:1;12214:9;12210:17;12201:6;12157:71;:::i;:::-;12013:222;;;;:::o;12241:230::-;12381:34;12377:1;12369:6;12365:14;12358:58;12450:13;12445:2;12437:6;12433:15;12426:38;12241:230;:::o;12477:366::-;12619:3;12640:67;12704:2;12699:3;12640:67;:::i;:::-;12633:74;;12716:93;12805:3;12716:93;:::i;:::-;12834:2;12829:3;12825:12;12818:19;;12477:366;;;:::o;12849:419::-;13015:4;13053:2;13042:9;13038:18;13030:26;;13102:9;13096:4;13092:20;13088:1;13077:9;13073:17;13066:47;13130:131;13256:4;13130:131;:::i;:::-;13122:139;;12849:419;;;:::o;13274:231::-;13414:34;13410:1;13402:6;13398:14;13391:58;13483:14;13478:2;13470:6;13466:15;13459:39;13274:231;:::o;13511:366::-;13653:3;13674:67;13738:2;13733:3;13674:67;:::i;:::-;13667:74;;13750:93;13839:3;13750:93;:::i;:::-;13868:2;13863:3;13859:12;13852:19;;13511:366;;;:::o;13883:419::-;14049:4;14087:2;14076:9;14072:18;14064:26;;14136:9;14130:4;14126:20;14122:1;14111:9;14107:17;14100:47;14164:131;14290:4;14164:131;:::i;:::-;14156:139;;13883:419;;;:::o;14308:240::-;14448:34;14444:1;14436:6;14432:14;14425:58;14517:23;14512:2;14504:6;14500:15;14493:48;14308:240;:::o;14554:366::-;14696:3;14717:67;14781:2;14776:3;14717:67;:::i;:::-;14710:74;;14793:93;14882:3;14793:93;:::i;:::-;14911:2;14906:3;14902:12;14895:19;;14554:366;;;:::o;14926:419::-;15092:4;15130:2;15119:9;15115:18;15107:26;;15179:9;15173:4;15169:20;15165:1;15154:9;15150:17;15143:47;15207:131;15333:4;15207:131;:::i;:::-;15199:139;;14926:419;;;:::o;15351:89::-;15387:7;15427:6;15420:5;15416:18;15405:29;;15351:89;;;:::o;15446:171::-;15484:3;15507:23;15524:5;15507:23;:::i;:::-;15498:32;;15552:6;15545:5;15542:17;15539:43;;15562:18;;:::i;:::-;15539:43;15609:1;15602:5;15598:13;15591:20;;15446:171;;;:::o;15623:243::-;15763:34;15759:1;15751:6;15747:14;15740:58;15832:26;15827:2;15819:6;15815:15;15808:51;15623:243;:::o;15872:366::-;16014:3;16035:67;16099:2;16094:3;16035:67;:::i;:::-;16028:74;;16111:93;16200:3;16111:93;:::i;:::-;16229:2;16224:3;16220:12;16213:19;;15872:366;;;:::o;16244:419::-;16410:4;16448:2;16437:9;16433:18;16425:26;;16497:9;16491:4;16487:20;16483:1;16472:9;16468:17;16461:47;16525:131;16651:4;16525:131;:::i;:::-;16517:139;;16244:419;;;:::o;16669:241::-;16809:34;16805:1;16797:6;16793:14;16786:58;16878:24;16873:2;16865:6;16861:15;16854:49;16669:241;:::o;16916:366::-;17058:3;17079:67;17143:2;17138:3;17079:67;:::i;:::-;17072:74;;17155:93;17244:3;17155:93;:::i;:::-;17273:2;17268:3;17264:12;17257:19;;16916:366;;;:::o;17288:419::-;17454:4;17492:2;17481:9;17477:18;17469:26;;17541:9;17535:4;17531:20;17527:1;17516:9;17512:17;17505:47;17569:131;17695:4;17569:131;:::i;:::-;17561:139;;17288:419;;;:::o;17713:247::-;17853:34;17849:1;17841:6;17837:14;17830:58;17922:30;17917:2;17909:6;17905:15;17898:55;17713:247;:::o;17966:366::-;18108:3;18129:67;18193:2;18188:3;18129:67;:::i;:::-;18122:74;;18205:93;18294:3;18205:93;:::i;:::-;18323:2;18318:3;18314:12;18307:19;;17966:366;;;:::o;18338:419::-;18504:4;18542:2;18531:9;18527:18;18519:26;;18591:9;18585:4;18581:20;18577:1;18566:9;18562:17;18555:47;18619:131;18745:4;18619:131;:::i;:::-;18611:139;;18338:419;;;:::o;18763:248::-;18903:34;18899:1;18891:6;18887:14;18880:58;18972:31;18967:2;18959:6;18955:15;18948:56;18763:248;:::o;19017:366::-;19159:3;19180:67;19244:2;19239:3;19180:67;:::i;:::-;19173:74;;19256:93;19345:3;19256:93;:::i;:::-;19374:2;19369:3;19365:12;19358:19;;19017:366;;;:::o;19389:419::-;19555:4;19593:2;19582:9;19578:18;19570:26;;19642:9;19636:4;19632:20;19628:1;19617:9;19613:17;19606:47;19670:131;19796:4;19670:131;:::i;:::-;19662:139;;19389:419;;;:::o;19814:147::-;19915:11;19952:3;19937:18;;19814:147;;;;:::o;19967:386::-;20071:3;20099:38;20131:5;20099:38;:::i;:::-;20153:88;20234:6;20229:3;20153:88;:::i;:::-;20146:95;;20250:65;20308:6;20303:3;20296:4;20289:5;20285:16;20250:65;:::i;:::-;20340:6;20335:3;20331:16;20324:23;;20075:278;19967:386;;;;:::o;20359:271::-;20489:3;20511:93;20600:3;20591:6;20511:93;:::i;:::-;20504:100;;20621:3;20614:10;;20359:271;;;;:::o;20636:99::-;20688:6;20722:5;20716:12;20706:22;;20636:99;;;:::o;20741:377::-;20829:3;20857:39;20890:5;20857:39;:::i;:::-;20912:71;20976:6;20971:3;20912:71;:::i;:::-;20905:78;;20992:65;21050:6;21045:3;21038:4;21031:5;21027:16;20992:65;:::i;:::-;21082:29;21104:6;21082:29;:::i;:::-;21077:3;21073:39;21066:46;;20833:285;20741:377;;;;:::o;21124:313::-;21237:4;21275:2;21264:9;21260:18;21252:26;;21324:9;21318:4;21314:20;21310:1;21299:9;21295:17;21288:47;21352:78;21425:4;21416:6;21352:78;:::i;:::-;21344:86;;21124:313;;;;:::o;21443:225::-;21583:34;21579:1;21571:6;21567:14;21560:58;21652:8;21647:2;21639:6;21635:15;21628:33;21443:225;:::o;21674:366::-;21816:3;21837:67;21901:2;21896:3;21837:67;:::i;:::-;21830:74;;21913:93;22002:3;21913:93;:::i;:::-;22031:2;22026:3;22022:12;22015:19;;21674:366;;;:::o;22046:419::-;22212:4;22250:2;22239:9;22235:18;22227:26;;22299:9;22293:4;22289:20;22285:1;22274:9;22270:17;22263:47;22327:131;22453:4;22327:131;:::i;:::-;22319:139;;22046:419;;;:::o;22471:242::-;22611:34;22607:1;22599:6;22595:14;22588:58;22680:25;22675:2;22667:6;22663:15;22656:50;22471:242;:::o;22719:366::-;22861:3;22882:67;22946:2;22941:3;22882:67;:::i;:::-;22875:74;;22958:93;23047:3;22958:93;:::i;:::-;23076:2;23071:3;23067:12;23060:19;;22719:366;;;:::o;23091:419::-;23257:4;23295:2;23284:9;23280:18;23272:26;;23344:9;23338:4;23334:20;23330:1;23319:9;23315:17;23308:47;23372:131;23498:4;23372:131;:::i;:::-;23364:139;;23091:419;;;:::o;23516:233::-;23656:34;23652:1;23644:6;23640:14;23633:58;23725:16;23720:2;23712:6;23708:15;23701:41;23516:233;:::o;23755:366::-;23897:3;23918:67;23982:2;23977:3;23918:67;:::i;:::-;23911:74;;23994:93;24083:3;23994:93;:::i;:::-;24112:2;24107:3;24103:12;24096:19;;23755:366;;;:::o;24127:419::-;24293:4;24331:2;24320:9;24316:18;24308:26;;24380:9;24374:4;24370:20;24366:1;24355:9;24351:17;24344:47;24408:131;24534:4;24408:131;:::i;:::-;24400:139;;24127:419;;;:::o;24552:194::-;24592:4;24612:20;24630:1;24612:20;:::i;:::-;24607:25;;24646:20;24664:1;24646:20;:::i;:::-;24641:25;;24690:1;24687;24683:9;24675:17;;24714:1;24708:4;24705:11;24702:37;;;24719:18;;:::i;:::-;24702:37;24552:194;;;;:::o;24752:180::-;24800:77;24797:1;24790:88;24897:4;24894:1;24887:15;24921:4;24918:1;24911:15

Swarm Source

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