S Price: $0.528392 (+9.19%)
    /

    Token

    engine_chip_WSONIC (engine_chip_WSONIC)

    Overview

    Max Total Supply

    444,922.500396000002878747 engine_chip_WSONIC

    Holders

    569

    Market

    Price

    $0.00 @ 0.000000 S

    Onchain Market Cap

    $0.00

    Circulating Supply Market Cap

    -

    Other Info

    Token Contract (WITH 18 Decimals)

    Balance
    0.000135570503367243 engine_chip_WSONIC

    Value
    $0.00
    0x34ebA7E1a64e156d76A5506CD22017f3B3dDe0f8
    Loading...
    Loading
    Loading...
    Loading
    Loading...
    Loading

    Click here to update the token information / general information

    Contract Source Code Verified (Exact Match)

    Contract Name:
    EngineChip

    Compiler Version
    v0.8.24+commit.e11b9ed9

    Optimization Enabled:
    Yes with 200 runs

    Other Settings:
    paris EvmVersion
    File 1 of 20 : EngineChip.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
    import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
    import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
    import "../../interfaces/IPoolMintControllerV1.sol";
    import "../../interfaces/IPoolBurnControllerV1.sol";
    import "../../interfaces/IBurnHandlerV1.sol";
    import "../../../AdministrationContracts/ClaimableAdmin.sol";
    import "../BaseChip.sol";
    /**
    * @title EngineChip
    * @notice EngineChip is a ERC20 token that functions as a chip for ERC20 tokens that exist in the engin chain
    */
    contract EngineChip is ClaimableAdmin, ERC20, ReentrancyGuard, BaseChip {
    using SafeERC20 for IERC20;
    using SafeERC20 for ERC20;
    // ***** Events *****
    event IsMintingPausedSet(bool indexed value);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 20 : draft-IERC6093.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Standard ERC20 Errors
    * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
    */
    interface IERC20Errors {
    /**
    * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param balance Current balance for the interacting account.
    * @param needed Minimum amount required to perform a transfer.
    */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
    error ERC20InvalidSender(address sender);
    /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 20 : ERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)
    pragma solidity ^0.8.20;
    import {IERC20} from "./IERC20.sol";
    import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
    import {Context} from "../../utils/Context.sol";
    import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Implementation of the {IERC20} interface.
    *
    * This implementation is agnostic to the way tokens are created. This means
    * that a supply mechanism has to be added in a derived contract using {_mint}.
    *
    * TIP: For a detailed writeup see our guide
    * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
    * to implement supply mechanisms].
    *
    * The default value of {decimals} is 18. To change this, you should override
    * this function so it returns a different value.
    *
    * We have followed general OpenZeppelin Contracts guidelines: functions revert
    * instead returning `false` on failure. This behavior is nonetheless
    * conventional and does not conflict with the expectations of ERC20
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 20 : IERC20Metadata.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)
    pragma solidity ^0.8.20;
    import {IERC20} from "../IERC20.sol";
    /**
    * @dev Interface for the optional metadata functions from the ERC20 standard.
    */
    interface IERC20Metadata is IERC20 {
    /**
    * @dev Returns the name of the token.
    */
    function name() external view returns (string memory);
    /**
    * @dev Returns the symbol of the token.
    */
    function symbol() external view returns (string memory);
    /**
    * @dev Returns the decimals places of the token.
    */
    function decimals() external view returns (uint8);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 20 : IERC20Permit.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
    * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
    *
    * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
    * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
    * need to send a transaction, and thus is not required to hold Ether at all.
    *
    * ==== Security Considerations
    *
    * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature
    * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be
    * considered as an intention to spend the allowance in any specific way. The second is that because permits have
    * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should
    * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be
    * generally recommended is:
    *
    * ```solidity
    * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
    * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}
    * doThing(..., value);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 20 : IERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
    pragma solidity ^0.8.20;
    /**
    * @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 value of tokens in existence.
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 20 : SafeERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)
    pragma solidity ^0.8.20;
    import {IERC20} from "../IERC20.sol";
    import {IERC20Permit} from "../extensions/IERC20Permit.sol";
    import {Address} from "../../../utils/Address.sol";
    /**
    * @title SafeERC20
    * @dev Wrappers around ERC20 operations that throw on failure (when the token
    * contract returns false). Tokens that return no value (and instead revert or
    * throw on failure) are also supported, non-reverting calls are assumed to be
    * successful.
    * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
    * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
    */
    library SafeERC20 {
    using Address for address;
    /**
    * @dev An operation with an ERC20 token failed.
    */
    error SafeERC20FailedOperation(address token);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 20 : Address.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Collection of functions related to the address type
    */
    library Address {
    /**
    * @dev The ETH balance of the account is not enough to perform the operation.
    */
    error AddressInsufficientBalance(address account);
    /**
    * @dev There's no code at `target` (it is not a contract).
    */
    error AddressEmptyCode(address target);
    /**
    * @dev A call to an address target failed. The target may have reverted.
    */
    error FailedInnerCall();
    /**
    * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 20 : Context.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Provides information about the current execution context, including the
    * sender of the transaction and its data. While these are generally available
    * via msg.sender and msg.data, they should not be accessed in such a direct
    * manner, since when dealing with meta-transactions the account sending and
    * paying for execution may not be the actual sender (as far as an application
    * is concerned).
    *
    * This contract is only required for intermediate, library-like contracts.
    */
    abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
    return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
    return msg.data;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
    return 0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 20 : ReentrancyGuard.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Contract module that helps prevent reentrant calls to a function.
    *
    * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
    * available, which can be applied to functions to make sure there are no nested
    * (reentrant) calls to them.
    *
    * Note that because there is a single `nonReentrant` guard, functions marked as
    * `nonReentrant` may not call one another. This can be worked around by making
    * those functions `private`, and then adding `external` `nonReentrant` entry
    * points to them.
    *
    * TIP: If you would like to learn more about reentrancy and alternative ways
    * to protect against it, check out our blog post
    * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
    */
    abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 20 : AcceptableImplementationClaimableAdminStorage.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    contract ClaimableAdminStorage {
    /**
    * @notice Administrator for this contract
    */
    address public admin;
    /**
    * @notice Pending administrator for this contract
    */
    address public pendingAdmin;
    /*** Modifiers ***/
    modifier onlyAdmin() {
    require(msg.sender == admin, "ONLY_ADMIN");
    _;
    }
    /*** Constructor ***/
    constructor() {
    // Set admin to caller
    admin = msg.sender;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 20 : ClaimableAdmin.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    import "./AcceptableImplementationClaimableAdminStorage.sol";
    /**
    * @title Claimable Admin
    */
    contract ClaimableAdmin is ClaimableAdminStorage {
    /**
    * @notice Emitted when pendingAdmin is changed
    */
    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);
    /**
    * @notice Emitted when pendingAdmin is accepted, which means admin is updated
    */
    event NewAdmin(address oldAdmin, address newAdmin);
    /*** Admin Functions ***/
    /**
    * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
    * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
    * @param newPendingAdmin New pending admin.
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 20 : IContractRegistryBase.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    interface IContractRegistryBase {
    function isImplementationValidForProxy(
    bytes32 proxyNameHash,
    address _implementation
    ) external view returns (bool);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 20 : BaseChip.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    import {ChipEnumsV1} from "../interfaces/ChipEnumsV1.sol";
    import "../interfaces/IRegistryV1.sol";
    /**
    * @title BaseChip
    * @notice Base for Chip contracts to inherit from, handles the auto approval mechanism.
    */
    contract BaseChip is ChipEnumsV1 {
    // ***** Events *****
    event AutoApprovedSpenderSet(
    string indexed role,
    address indexed oldSpender,
    address indexed newSpender
    );
    // ***** Immutable Storage *****
    IRegistryV1 public immutable registry;
    ChipMode public immutable chipMode;
    // ***** Storage *****
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 20 : ChipEnumsV1.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // SPDX-License-Identifier: UNLICENSED
    pragma solidity ^0.8.24;
    contract ChipEnumsV1 {
    enum ChipMode {
    NONE,
    LOCAL,
    REMOTE,
    HYBRID
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 16 of 20 : IBurnHandlerV1.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    interface IBurnHandlerV1 {
    function handleBurn(
    address burner,
    uint256 chipAmount,
    uint256 underlyingAmount,
    bytes calldata payload
    ) external payable;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 17 of 20 : IGlobalLock.sol
    1
    2
    3
    4
    5
    6
    7
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    interface IGlobalLock {
    function lock() external;
    function freeLock() external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 18 of 20 : IPoolBurnControllerV1.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // SPDX-License-Identifier: UNLICENSED
    pragma solidity ^0.8.24;
    interface IPoolBurnControllerV1 {
    /**
    * @notice Check if the contract is a PoolBurnController
    */
    function isPoolBurnController() external view returns (bool);
    /**
    * @notice Inform the PoolBurnController of a burn request
    * param _burner The address of the account that is burning the tokens
    * param _receiver The address of the account that will receive the underlying tokens
    * param _underlyingAmount The amount of underlying tokens that will be given for burning
    * param _burnAmount The amount of tokens that will be burned
    */
    function informBurnRequest(
    address _burner,
    address _receiver,
    uint256 _underlyingAmount,
    uint256 _burnAmount
    ) external returns (bool isPermitted);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 19 of 20 : IPoolMintControllerV1.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // SPDX-License-Identifier: UNLICENSED
    pragma solidity ^0.8.24;
    interface IPoolMintControllerV1 {
    /**
    * @notice Check if the contract is a PoolMintController
    */
    function isPoolMintController() external view returns (bool);
    /**
    * @notice Inform the PoolMintController of a mint request
    * param _minter The address of the account that is minting the tokens
    * param _to The address of the account that is minting the tokens
    * param _underlyingAmount The amount of underlying tokens that were taken for minting
    * param _mintAmount The amount of tokens that will be minted
    */
    function informMintRequest(
    address _minter,
    address _to,
    uint256 _underlyingAmount,
    uint256 _mintAmount
    ) external returns (bool isPermitted);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 20 of 20 : IRegistryV1.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.24;
    import "../../AdministrationContracts/IContractRegistryBase.sol";
    import "./IGlobalLock.sol";
    interface IRegistryV1Functionality is IContractRegistryBase, IGlobalLock {
    // **** Locking mechanism ****
    function isTradersPortalAndLocker(
    address _address
    ) external view returns (bool);
    function isTriggersAndLocker(address _address) external view returns (bool);
    function isTradersPortalOrTriggersAndLocker(
    address _address
    ) external view returns (bool);
    }
    interface IRegistryV1 is IRegistryV1Functionality {
    // **** Public Storage params ****
    function feesManagers(address asset) external view returns (address);
    function orderBook() external view returns (address);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    {
    "optimizer": {
    "enabled": true,
    "runs": 200
    },
    "outputSelection": {
    "*": {
    "*": [
    "evm.bytecode",
    "evm.deployedBytecode",
    "devdoc",
    "userdoc",
    "metadata",
    "abi"
    ]
    }
    },
    "evmVersion": "paris",
    "metadata": {
    "useLiteralContent": true
    },
    "libraries": {}
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract Security Audit

    Contract ABI

    API
    [{"inputs":[{"internalType":"contract IRegistryV1","name":"_registry","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"contract IERC20","name":"_underlyingToken","type":"address"},{"internalType":"address","name":"_initialAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"role","type":"string"},{"indexed":true,"internalType":"address","name":"oldSpender","type":"address"},{"indexed":true,"internalType":"address","name":"newSpender","type":"address"}],"name":"AutoApprovedSpenderSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousController","type":"address"},{"indexed":true,"internalType":"address","name":"newController","type":"address"}],"name":"BurnControllerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousHandler","type":"address"},{"indexed":true,"internalType":"address","name":"handler","type":"address"}],"name":"BurnHandlerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChipBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChipMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"IsMintingPausedSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousController","type":"address"},{"indexed":true,"internalType":"address","name":"newController","type":"address"}],"name":"MintControllerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensSwept","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SELF_UNIT_SCALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"autoApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"autoApprovedSpendersByRoles","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnChip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"burnChipAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"burnController","outputs":[{"internalType":"contract IPoolBurnControllerV1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnHandler","outputs":[{"internalType":"contract IBurnHandlerV1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chipMode","outputs":[{"internalType":"enum ChipEnumsV1.ChipMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"getAutoApprovedSpenderAddressByRole","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMintingPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintChip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintController","outputs":[{"internalType":"contract IPoolMintControllerV1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IRegistryV1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"},{"internalType":"address","name":"spender","type":"address"}],"name":"setAutoApprovedSpenderForRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPoolBurnControllerV1","name":"_burnController","type":"address"}],"name":"setBurnController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBurnHandlerV1","name":"_handler","type":"address"}],"name":"setBurnHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setIsMintingPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPoolMintControllerV1","name":"_mintController","type":"address"}],"name":"setMintController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sweepNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlyingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

    6101006040523480156200001257600080fd5b5060405162002bb538038062002bb583398101604081905262000035916200031e565b600080546001600160a01b03191633179055846001858560056200005a83826200045b565b5060066200006982826200045b565b50506001600755506001600160a01b038216620000ba5760405162461bcd60e51b815260206004820152600a602482015269215f726567697374727960b01b60448201526064015b60405180910390fd5b6001600160a01b038216608052806003811115620000dc57620000dc62000527565b60a0816003811115620000f357620000f362000527565b90525050506001600160a01b038216620001445760405162461bcd60e51b815260206004820152601160248201527010afbab73232b9363cb4b733aa37b5b2b760791b6044820152606401620000b1565b816001600160a01b031660c0816001600160a01b0316815250506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c591906200053d565b60ff169050620001d781600a6200067e565b60e052600080546001600160a01b0319166001600160a01b03841690811782556040805192835260208301919091527ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a15050505050506200068c565b6001600160a01b03811681146200025357600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200027e57600080fd5b81516001600160401b03808211156200029b576200029b62000256565b604051601f8301601f19908116603f01168101908282118183101715620002c657620002c662000256565b8160405283815260209250866020858801011115620002e457600080fd5b600091505b83821015620003085785820183015181830184015290820190620002e9565b6000602085830101528094505050505092915050565b600080600080600060a086880312156200033757600080fd5b855162000344816200023d565b60208701519095506001600160401b03808211156200036257600080fd5b6200037089838a016200026c565b955060408801519150808211156200038757600080fd5b5062000396888289016200026c565b9350506060860151620003a9816200023d565b6080870151909250620003bc816200023d565b809150509295509295909350565b600181811c90821680620003df57607f821691505b6020821081036200040057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000456576000816000526020600020601f850160051c81016020861015620004315750805b601f850160051c820191505b8181101562000452578281556001016200043d565b5050505b505050565b81516001600160401b0381111562000477576200047762000256565b6200048f81620004888454620003ca565b8462000406565b602080601f831160018114620004c75760008415620004ae5750858301515b600019600386901b1c1916600185901b17855562000452565b600085815260208120601f198616915b82811015620004f857888601518255948401946001909101908401620004d7565b5085821015620005175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200055057600080fd5b815160ff811681146200056257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005c0578160001904821115620005a457620005a462000569565b80851615620005b257918102915b93841c939080029062000584565b509250929050565b600082620005d95750600162000678565b81620005e85750600062000678565b81600181146200060157600281146200060c576200062c565b600191505062000678565b60ff84111562000620576200062062000569565b50506001821b62000678565b5060208310610133831016604e8410600b841016171562000651575081810a62000678565b6200065d83836200057f565b806000190482111562000674576200067462000569565b0290505b92915050565b6000620005628383620005c8565b60805160a05160c05160e0516124b062000705600039600081816103b601528181611b290152611da90152600081816102d701528181610d77015281816116be0152818161199e01528181611a200152611a600152600061040a0152600081816104dd0152818161120a01526117bf01526124b06000f3fe6080604052600436106102045760003560e01c80637b10399911610118578063dd62ed3e116100a0578063ea0d5a211161006f578063ea0d5a2114610679578063ec1a5abb14610699578063ecd39eb4146106b9578063f851a440146106d9578063f946920b146106f957600080fd5b8063dd62ed3e14610604578063dd6d28c814610624578063dec6603614610644578063e9c714f21461066457600080fd5b8063aad3a7ee116100e7578063aad3a7ee14610564578063b71d1a0c14610584578063c566fa27146105a4578063cfe1f110146105c4578063d9d009e0146105e457600080fd5b80637b103999146104cb57806395d89b41146104ff578063a0052a8e14610514578063a9059cbb1461054457600080fd5b80632e105b421161019b5780635b0cc8c41161016a5780635b0cc8c4146103f85780636424a77e1461043957806370a082311461045957806370ac1fa51461048f57806379c80dc2146104af57600080fd5b80632e105b4214610367578063313ce567146103885780633ba0b9a9146103a45780633cf3a025146103d857600080fd5b806323b872dd116101d757806323b872dd146102a55780632495a599146102c557806326782247146103115780632b5e857f1461033157600080fd5b806306fdde0314610209578063095ea7b3146102345780630eb265e91461026457806318160ddd14610286575b600080fd5b34801561021557600080fd5b5061021e61070c565b60405161022b9190611fce565b60405180910390f35b34801561024057600080fd5b5061025461024f366004612016565b61079e565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004612042565b6107b8565b005b34801561029257600080fd5b506004545b60405190815260200161022b565b3480156102b157600080fd5b506102546102c036600461205f565b61092a565b3480156102d157600080fd5b506102f97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161022b565b34801561031d57600080fd5b506001546102f9906001600160a01b031681565b34801561033d57600080fd5b506102f961034c3660046120a0565b6009602052600090815260409020546001600160a01b031681565b34801561037357600080fd5b50600a5461025490600160a01b900460ff1681565b34801561039457600080fd5b506040516012815260200161022b565b3480156103b057600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e457600080fd5b506102846103f33660046120a0565b610950565b34801561040457600080fd5b5061042c7f000000000000000000000000000000000000000000000000000000000000000081565b60405161022b91906120b9565b34801561044557600080fd5b50600c546102f9906001600160a01b031681565b34801561046557600080fd5b50610297610474366004612042565b6001600160a01b031660009081526002602052604090205490565b34801561049b57600080fd5b50600b546102f9906001600160a01b031681565b3480156104bb57600080fd5b50610297670de0b6b3a764000081565b3480156104d757600080fd5b506102f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061021e6109b7565b34801561052057600080fd5b5061025461052f366004612042565b60086020526000908152604090205460ff1681565b34801561055057600080fd5b5061025461055f366004612016565b6109c6565b34801561057057600080fd5b5061028461057f366004612042565b6109d4565b34801561059057600080fd5b5061028461059f366004612042565b610b3c565b3480156105b057600080fd5b506102846105bf3660046120ef565b610be4565b3480156105d057600080fd5b50600a546102f9906001600160a01b031681565b3480156105f057600080fd5b506102f96105ff366004612155565b610c89565b34801561061057600080fd5b5061029761061f366004612197565b610cd5565b34801561063057600080fd5b5061028461063f366004612016565b610d2b565b34801561065057600080fd5b5061028461065f366004612016565b610d4b565b34801561067057600080fd5b50610284610e59565b34801561068557600080fd5b506102846106943660046121d0565b610f77565b3480156106a557600080fd5b506102846106b4366004612016565b610fb1565b3480156106c557600080fd5b506102846106d4366004612042565b6111ae565b3480156106e557600080fd5b506000546102f9906001600160a01b031681565b610284610707366004612227565b611346565b60606005805461071b90612273565b80601f016020809104026020016040519081016040528092919081815260200182805461074790612273565b80156107945780601f1061076957610100808354040283529160200191610794565b820191906000526020600020905b81548152906001019060200180831161077757829003601f168201915b5050505050905090565b6000336107ac81858561142e565b60019150505b92915050565b6000546001600160a01b031633146107eb5760405162461bcd60e51b81526004016107e2906122ad565b60405180910390fd5b6001600160a01b038116158061085e5750806001600160a01b031663cc57faed6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e91906122d1565b6108aa5760405162461bcd60e51b815260206004820152601860248201527f4e4f545f504f4f4c5f4255524e5f434f4e54524f4c4c4552000000000000000060448201526064016107e2565b600c546001600160a01b0390811690821681036108d95760405162461bcd60e51b81526004016107e2906122ee565b600c80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f16b93672d9092cc0acb4ebfd8d65bf24786d793c518ab1cfc140e37e3564902590600090a35050565b60003361093885828561143b565b6109438585856114a1565b60019150505b9392505050565b6000546001600160a01b0316331461097a5760405162461bcd60e51b81526004016107e2906122ad565b600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156109b3573d6000803e3d6000fd5b5050565b60606006805461071b90612273565b6000336107ac8185856114a1565b6000546001600160a01b031633146109fe5760405162461bcd60e51b81526004016107e2906122ad565b6001600160a01b0381161580610a715750806001600160a01b03166357796be56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7191906122d1565b610abd5760405162461bcd60e51b815260206004820152601860248201527f4e4f545f504f4f4c5f4d494e545f434f4e54524f4c4c4552000000000000000060448201526064016107e2565b600b546001600160a01b039081169082168103610aec5760405162461bcd60e51b81526004016107e2906122ee565b600b80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907ec2914c7e37af68952e44d24abe475cfe8283ecf3371fa55d59df1964da4f9c90600090a35050565b6000546001600160a01b03163314610b825760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b60448201526064016107e2565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6000546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016107e2906122ad565b801515600a60149054906101000a900460ff16151503610c405760405162461bcd60e51b81526004016107e2906122ee565b600a805460ff60a01b1916600160a01b831515908102919091179091556040517f60313cc974fe7ab6a7d548b919c8d3ee7235ae7e711fd00603ea4b16e0d028b690600090a250565b6000808383604051602001610c9f929190612313565b60408051808303601f190181529181528151602092830120600090815260099092529020546001600160a01b0316949350505050565b6001600160a01b03811660009081526008602052604081205460ff1615610cff57506000196107b2565b506001600160a01b038281166000908152600360209081526040808320938516835292905220546107b2565b610d33611500565b33610d3f81848461152a565b50506109b36001600755565b6000546001600160a01b03163314610d755760405162461bcd60e51b81526004016107e2906122ad565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610df65760405162461bcd60e51b815260206004820152601d60248201527f43414e4e4f545f53574545505f554e4445524c59494e475f544f4b454e00000060448201526064016107e2565b600054610e10906001600160a01b03848116911683611743565b6000546040518281526001600160a01b03918216918416907fd092d7fceb5ea5a962639fcc27a7bb315e7637e699e3b108cd570c38c75843009060200160405180910390a35050565b6001546001600160a01b031633148015610e7d57506001546001600160a01b031615155b610ec95760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e000060448201526064016107e2565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101610bd8565b6000546001600160a01b03163314610fa15760405162461bcd60e51b81526004016107e2906122ad565b610fac8383836117a2565b505050565b610fb9611500565b600a54600160a01b900460ff16156110015760405162461bcd60e51b815260206004820152600b60248201526a1352539517d4105554d15160aa1b60448201526064016107e2565b8060000361103f5760405162461bcd60e51b815260206004820152600b60248201526a414d4f554e545f5a45524f60a81b60448201526064016107e2565b3361104a8183611986565b600061105583611b25565b600b549091506001600160a01b0316801561114157604051630fab366b60e01b81526001600160a01b0384811660048301528681166024830152604482018690526064820184905260009190831690630fab366b906084016020604051808303816000875af11580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f091906122d1565b90508061113f5760405162461bcd60e51b815260206004820152601760248201527f4d494e545f434f4e54524f4c4c45525f5245465553414c00000000000000000060448201526064016107e2565b505b61114b8583611b64565b846001600160a01b0316836001600160a01b03167fd20c3a57c71c0887a5010822305eece6ba96a1719b0020268ca215fcc07735808685604051611199929190918252602082015260400190565b60405180910390a35050506109b36001600755565b6000546001600160a01b031633146111d85760405162461bcd60e51b81526004016107e2906122ad565b6001600160a01b03811615806112825750604051632814d47360e11b81523060048201526001600160a01b03808316917f000000000000000000000000000000000000000000000000000000000000000090911690635029a8e690602401602060405180830381865afa158015611253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112779190612323565b6001600160a01b0316145b6112c65760405162461bcd60e51b81526020600482015260156024820152741393d517d49151d254d5149657d054141493d59151605a1b60448201526064016107e2565b600a546001600160a01b0390811690821681036112f55760405162461bcd60e51b81526004016107e2906122ee565b600a80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f4b51eab659b8214b91d05725a11f90ee31cdcd1b6484b59d84051881e2488a9790600090a35050565b61134e611500565b600a546001600160a01b03166113985760405162461bcd60e51b815260206004820152600f60248201526e2727afa12aa9272fa420a7222622a960891b60448201526064016107e2565b600a5433906000906113b59083906001600160a01b03168761152a565b600a546040516343aa8ca160e01b81529192506001600160a01b0316906343aa8ca19034906113f09086908a9087908b908b90600401612369565b6000604051808303818588803b15801561140957600080fd5b505af115801561141d573d6000803e3d6000fd5b50505050505050610fac6001600755565b610fac8383836001611b9a565b60006114478484610cd5565b9050600019811461149b578181101561148c57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016107e2565b61149b84848484036000611b9a565b50505050565b6001600160a01b0383166114cb57604051634b637e8f60e11b8152600060048201526024016107e2565b6001600160a01b0382166114f55760405163ec442f0560e01b8152600060048201526024016107e2565b610fac838383611c6f565b60026007540361152357604051633ee5aeb560e01b815260040160405180910390fd5b6002600755565b60008160000361156a5760405162461bcd60e51b815260206004820152600b60248201526a414d4f554e545f5a45524f60a81b60448201526064016107e2565b61157382611d99565b9050806000036115be5760405162461bcd60e51b8152602060048201526016602482015275554e4445524c59494e475f414d4f554e545f5a45524f60501b60448201526064016107e2565b600c546001600160a01b031680156116a75760405163e99bfce560e01b81526001600160a01b038681166004830152858116602483015260448201849052606482018590526000919083169063e99bfce5906084016020604051808303816000875af1158015611632573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165691906122d1565b9050806116a55760405162461bcd60e51b815260206004820152601760248201527f4255524e5f434f4e54524f4c4c45525f5245465553414c00000000000000000060448201526064016107e2565b505b6116b18584611dce565b6116e56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168584611743565b836001600160a01b0316856001600160a01b03167f6e9b7d09f4f2a9b129527e9daa9b710e6efde1980ff021731846c74bb833f8908486604051611733929190918252602082015260400190565b60405180910390a3509392505050565b6040516001600160a01b03838116602483015260448201839052610fac91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611e04565b6001600160a01b03811615806118595750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634971e2563086866040518463ffffffff1660e01b815260040161180d939291906123a2565b602060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190612323565b6001600160a01b0316145b61189d5760405162461bcd60e51b81526020600482015260156024820152741393d517d49151d254d5149657d054141493d59151605a1b60448201526064016107e2565b60006118a98484610c89565b6001600160a01b038082166000908152600860209081526040808320805460ff19908116909155938716835280832080549094166001179093559151929350916118f7918791879101612313565b60408051808303601f1901815282825280516020918201206000818152600990925291902080546001600160a01b0319166001600160a01b0387811691821790925591935090919084169061194f9088908890612313565b604051908190038120907fc94709672e719140368a6108fcd1b4d0d1247187c04a308abf71aab8099b49ab90600090a45050505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906123d0565b9050611a486001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016843085611e67565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad391906123d0565b905082611ae083836123ff565b1461149b5760405162461bcd60e51b815260206004820152601560248201527411125117d393d517d49150d152559157d1561050d5605a1b60448201526064016107e2565b60007f0000000000000000000000000000000000000000000000000000000000000000611b5a670de0b6b3a764000084612412565b6107b29190612429565b6001600160a01b038216611b8e5760405163ec442f0560e01b8152600060048201526024016107e2565b6109b360008383611c6f565b6001600160a01b038416611bc45760405163e602df0560e01b8152600060048201526024016107e2565b6001600160a01b038316611bee57604051634a1406b160e11b8152600060048201526024016107e2565b6001600160a01b038085166000908152600360209081526040808320938716835292905220829055801561149b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c6191815260200190565b60405180910390a350505050565b6001600160a01b038316611c9a578060046000828254611c8f919061244b565b90915550611d0c9050565b6001600160a01b03831660009081526002602052604090205481811015611ced5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016107e2565b6001600160a01b03841660009081526002602052604090209082900390555b6001600160a01b038216611d2857600480548290039055611d47565b6001600160a01b03821660009081526002602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d8c91815260200190565b60405180910390a3505050565b6000670de0b6b3a7640000611b5a7f000000000000000000000000000000000000000000000000000000000000000084612412565b6001600160a01b038216611df857604051634b637e8f60e11b8152600060048201526024016107e2565b6109b382600083611c6f565b6000611e196001600160a01b03841683611ea0565b90508051600014158015611e3e575080806020019051810190611e3c91906122d1565b155b15610fac57604051635274afe760e01b81526001600160a01b03841660048201526024016107e2565b6040516001600160a01b03848116602483015283811660448301526064820183905261149b9186918216906323b872dd90608401611770565b60606109498383600084600080856001600160a01b03168486604051611ec6919061245e565b60006040518083038185875af1925050503d8060008114611f03576040519150601f19603f3d011682016040523d82523d6000602084013e611f08565b606091505b5091509150611f18868383611f22565b9695505050505050565b606082611f3757611f3282611f7e565b610949565b8151158015611f4e57506001600160a01b0384163b155b15611f7757604051639996b31560e01b81526001600160a01b03851660048201526024016107e2565b5080610949565b805115611f8e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b60005b83811015611fc5578181015183820152602001611fad565b50506000910152565b6020815260008251806020840152611fed816040850160208701611faa565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611fa757600080fd5b6000806040838503121561202957600080fd5b823561203481612001565b946020939093013593505050565b60006020828403121561205457600080fd5b813561094981612001565b60008060006060848603121561207457600080fd5b833561207f81612001565b9250602084013561208f81612001565b929592945050506040919091013590565b6000602082840312156120b257600080fd5b5035919050565b60208101600483106120db57634e487b7160e01b600052602160045260246000fd5b91905290565b8015158114611fa757600080fd5b60006020828403121561210157600080fd5b8135610949816120e1565b60008083601f84011261211e57600080fd5b50813567ffffffffffffffff81111561213657600080fd5b60208301915083602082850101111561214e57600080fd5b9250929050565b6000806020838503121561216857600080fd5b823567ffffffffffffffff81111561217f57600080fd5b61218b8582860161210c565b90969095509350505050565b600080604083850312156121aa57600080fd5b82356121b581612001565b915060208301356121c581612001565b809150509250929050565b6000806000604084860312156121e557600080fd5b833567ffffffffffffffff8111156121fc57600080fd5b6122088682870161210c565b909450925050602084013561221c81612001565b809150509250925092565b60008060006040848603121561223c57600080fd5b83359250602084013567ffffffffffffffff81111561225a57600080fd5b6122668682870161210c565b9497909650939450505050565b600181811c9082168061228757607f821691505b6020821081036122a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600a908201526927a7262cafa0a226a4a760b11b604082015260600190565b6000602082840312156122e357600080fd5b8151610949816120e1565b6020808252600b908201526a1053149150511657d4d15560aa1b604082015260600190565b8183823760009101908152919050565b60006020828403121561233557600080fd5b815161094981612001565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201526000612397608083018486612340565b979650505050505050565b6001600160a01b03841681526040602082018190526000906123c79083018486612340565b95945050505050565b6000602082840312156123e257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156107b2576107b26123e9565b80820281158282048414176107b2576107b26123e9565b60008261244657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156107b2576107b26123e9565b60008251612470818460208701611faa565b919091019291505056fea2646970667358221220d1049433fd4c6e6f37dc12e81f434b26775eb2c1ae3556b29d03638cda3301ab64736f6c634300081800330000000000000000000000004cf3d61165a6be8ff741320ad27cab57fae5c20700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad380000000000000000000000009582763b2376e25a5a70e45bb28613ccbdd3ef9f0000000000000000000000000000000000000000000000000000000000000012656e67696e655f636869705f57534f4e494300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012656e67696e655f636869705f57534f4e49430000000000000000000000000000

    Deployed Bytecode

    0x6080604052600436106102045760003560e01c80637b10399911610118578063dd62ed3e116100a0578063ea0d5a211161006f578063ea0d5a2114610679578063ec1a5abb14610699578063ecd39eb4146106b9578063f851a440146106d9578063f946920b146106f957600080fd5b8063dd62ed3e14610604578063dd6d28c814610624578063dec6603614610644578063e9c714f21461066457600080fd5b8063aad3a7ee116100e7578063aad3a7ee14610564578063b71d1a0c14610584578063c566fa27146105a4578063cfe1f110146105c4578063d9d009e0146105e457600080fd5b80637b103999146104cb57806395d89b41146104ff578063a0052a8e14610514578063a9059cbb1461054457600080fd5b80632e105b421161019b5780635b0cc8c41161016a5780635b0cc8c4146103f85780636424a77e1461043957806370a082311461045957806370ac1fa51461048f57806379c80dc2146104af57600080fd5b80632e105b4214610367578063313ce567146103885780633ba0b9a9146103a45780633cf3a025146103d857600080fd5b806323b872dd116101d757806323b872dd146102a55780632495a599146102c557806326782247146103115780632b5e857f1461033157600080fd5b806306fdde0314610209578063095ea7b3146102345780630eb265e91461026457806318160ddd14610286575b600080fd5b34801561021557600080fd5b5061021e61070c565b60405161022b9190611fce565b60405180910390f35b34801561024057600080fd5b5061025461024f366004612016565b61079e565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004612042565b6107b8565b005b34801561029257600080fd5b506004545b60405190815260200161022b565b3480156102b157600080fd5b506102546102c036600461205f565b61092a565b3480156102d157600080fd5b506102f97f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b6040516001600160a01b03909116815260200161022b565b34801561031d57600080fd5b506001546102f9906001600160a01b031681565b34801561033d57600080fd5b506102f961034c3660046120a0565b6009602052600090815260409020546001600160a01b031681565b34801561037357600080fd5b50600a5461025490600160a01b900460ff1681565b34801561039457600080fd5b506040516012815260200161022b565b3480156103b057600080fd5b506102977f0000000000000000000000000000000000000000000000000de0b6b3a764000081565b3480156103e457600080fd5b506102846103f33660046120a0565b610950565b34801561040457600080fd5b5061042c7f000000000000000000000000000000000000000000000000000000000000000181565b60405161022b91906120b9565b34801561044557600080fd5b50600c546102f9906001600160a01b031681565b34801561046557600080fd5b50610297610474366004612042565b6001600160a01b031660009081526002602052604090205490565b34801561049b57600080fd5b50600b546102f9906001600160a01b031681565b3480156104bb57600080fd5b50610297670de0b6b3a764000081565b3480156104d757600080fd5b506102f97f0000000000000000000000004cf3d61165a6be8ff741320ad27cab57fae5c20781565b34801561050b57600080fd5b5061021e6109b7565b34801561052057600080fd5b5061025461052f366004612042565b60086020526000908152604090205460ff1681565b34801561055057600080fd5b5061025461055f366004612016565b6109c6565b34801561057057600080fd5b5061028461057f366004612042565b6109d4565b34801561059057600080fd5b5061028461059f366004612042565b610b3c565b3480156105b057600080fd5b506102846105bf3660046120ef565b610be4565b3480156105d057600080fd5b50600a546102f9906001600160a01b031681565b3480156105f057600080fd5b506102f96105ff366004612155565b610c89565b34801561061057600080fd5b5061029761061f366004612197565b610cd5565b34801561063057600080fd5b5061028461063f366004612016565b610d2b565b34801561065057600080fd5b5061028461065f366004612016565b610d4b565b34801561067057600080fd5b50610284610e59565b34801561068557600080fd5b506102846106943660046121d0565b610f77565b3480156106a557600080fd5b506102846106b4366004612016565b610fb1565b3480156106c557600080fd5b506102846106d4366004612042565b6111ae565b3480156106e557600080fd5b506000546102f9906001600160a01b031681565b610284610707366004612227565b611346565b60606005805461071b90612273565b80601f016020809104026020016040519081016040528092919081815260200182805461074790612273565b80156107945780601f1061076957610100808354040283529160200191610794565b820191906000526020600020905b81548152906001019060200180831161077757829003601f168201915b5050505050905090565b6000336107ac81858561142e565b60019150505b92915050565b6000546001600160a01b031633146107eb5760405162461bcd60e51b81526004016107e2906122ad565b60405180910390fd5b6001600160a01b038116158061085e5750806001600160a01b031663cc57faed6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e91906122d1565b6108aa5760405162461bcd60e51b815260206004820152601860248201527f4e4f545f504f4f4c5f4255524e5f434f4e54524f4c4c4552000000000000000060448201526064016107e2565b600c546001600160a01b0390811690821681036108d95760405162461bcd60e51b81526004016107e2906122ee565b600c80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f16b93672d9092cc0acb4ebfd8d65bf24786d793c518ab1cfc140e37e3564902590600090a35050565b60003361093885828561143b565b6109438585856114a1565b60019150505b9392505050565b6000546001600160a01b0316331461097a5760405162461bcd60e51b81526004016107e2906122ad565b600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156109b3573d6000803e3d6000fd5b5050565b60606006805461071b90612273565b6000336107ac8185856114a1565b6000546001600160a01b031633146109fe5760405162461bcd60e51b81526004016107e2906122ad565b6001600160a01b0381161580610a715750806001600160a01b03166357796be56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7191906122d1565b610abd5760405162461bcd60e51b815260206004820152601860248201527f4e4f545f504f4f4c5f4d494e545f434f4e54524f4c4c4552000000000000000060448201526064016107e2565b600b546001600160a01b039081169082168103610aec5760405162461bcd60e51b81526004016107e2906122ee565b600b80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907ec2914c7e37af68952e44d24abe475cfe8283ecf3371fa55d59df1964da4f9c90600090a35050565b6000546001600160a01b03163314610b825760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b60448201526064016107e2565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6000546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016107e2906122ad565b801515600a60149054906101000a900460ff16151503610c405760405162461bcd60e51b81526004016107e2906122ee565b600a805460ff60a01b1916600160a01b831515908102919091179091556040517f60313cc974fe7ab6a7d548b919c8d3ee7235ae7e711fd00603ea4b16e0d028b690600090a250565b6000808383604051602001610c9f929190612313565b60408051808303601f190181529181528151602092830120600090815260099092529020546001600160a01b0316949350505050565b6001600160a01b03811660009081526008602052604081205460ff1615610cff57506000196107b2565b506001600160a01b038281166000908152600360209081526040808320938516835292905220546107b2565b610d33611500565b33610d3f81848461152a565b50506109b36001600755565b6000546001600160a01b03163314610d755760405162461bcd60e51b81526004016107e2906122ad565b7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316826001600160a01b031603610df65760405162461bcd60e51b815260206004820152601d60248201527f43414e4e4f545f53574545505f554e4445524c59494e475f544f4b454e00000060448201526064016107e2565b600054610e10906001600160a01b03848116911683611743565b6000546040518281526001600160a01b03918216918416907fd092d7fceb5ea5a962639fcc27a7bb315e7637e699e3b108cd570c38c75843009060200160405180910390a35050565b6001546001600160a01b031633148015610e7d57506001546001600160a01b031615155b610ec95760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e000060448201526064016107e2565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101610bd8565b6000546001600160a01b03163314610fa15760405162461bcd60e51b81526004016107e2906122ad565b610fac8383836117a2565b505050565b610fb9611500565b600a54600160a01b900460ff16156110015760405162461bcd60e51b815260206004820152600b60248201526a1352539517d4105554d15160aa1b60448201526064016107e2565b8060000361103f5760405162461bcd60e51b815260206004820152600b60248201526a414d4f554e545f5a45524f60a81b60448201526064016107e2565b3361104a8183611986565b600061105583611b25565b600b549091506001600160a01b0316801561114157604051630fab366b60e01b81526001600160a01b0384811660048301528681166024830152604482018690526064820184905260009190831690630fab366b906084016020604051808303816000875af11580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f091906122d1565b90508061113f5760405162461bcd60e51b815260206004820152601760248201527f4d494e545f434f4e54524f4c4c45525f5245465553414c00000000000000000060448201526064016107e2565b505b61114b8583611b64565b846001600160a01b0316836001600160a01b03167fd20c3a57c71c0887a5010822305eece6ba96a1719b0020268ca215fcc07735808685604051611199929190918252602082015260400190565b60405180910390a35050506109b36001600755565b6000546001600160a01b031633146111d85760405162461bcd60e51b81526004016107e2906122ad565b6001600160a01b03811615806112825750604051632814d47360e11b81523060048201526001600160a01b03808316917f0000000000000000000000004cf3d61165a6be8ff741320ad27cab57fae5c20790911690635029a8e690602401602060405180830381865afa158015611253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112779190612323565b6001600160a01b0316145b6112c65760405162461bcd60e51b81526020600482015260156024820152741393d517d49151d254d5149657d054141493d59151605a1b60448201526064016107e2565b600a546001600160a01b0390811690821681036112f55760405162461bcd60e51b81526004016107e2906122ee565b600a80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f4b51eab659b8214b91d05725a11f90ee31cdcd1b6484b59d84051881e2488a9790600090a35050565b61134e611500565b600a546001600160a01b03166113985760405162461bcd60e51b815260206004820152600f60248201526e2727afa12aa9272fa420a7222622a960891b60448201526064016107e2565b600a5433906000906113b59083906001600160a01b03168761152a565b600a546040516343aa8ca160e01b81529192506001600160a01b0316906343aa8ca19034906113f09086908a9087908b908b90600401612369565b6000604051808303818588803b15801561140957600080fd5b505af115801561141d573d6000803e3d6000fd5b50505050505050610fac6001600755565b610fac8383836001611b9a565b60006114478484610cd5565b9050600019811461149b578181101561148c57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016107e2565b61149b84848484036000611b9a565b50505050565b6001600160a01b0383166114cb57604051634b637e8f60e11b8152600060048201526024016107e2565b6001600160a01b0382166114f55760405163ec442f0560e01b8152600060048201526024016107e2565b610fac838383611c6f565b60026007540361152357604051633ee5aeb560e01b815260040160405180910390fd5b6002600755565b60008160000361156a5760405162461bcd60e51b815260206004820152600b60248201526a414d4f554e545f5a45524f60a81b60448201526064016107e2565b61157382611d99565b9050806000036115be5760405162461bcd60e51b8152602060048201526016602482015275554e4445524c59494e475f414d4f554e545f5a45524f60501b60448201526064016107e2565b600c546001600160a01b031680156116a75760405163e99bfce560e01b81526001600160a01b038681166004830152858116602483015260448201849052606482018590526000919083169063e99bfce5906084016020604051808303816000875af1158015611632573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165691906122d1565b9050806116a55760405162461bcd60e51b815260206004820152601760248201527f4255524e5f434f4e54524f4c4c45525f5245465553414c00000000000000000060448201526064016107e2565b505b6116b18584611dce565b6116e56001600160a01b037f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38168584611743565b836001600160a01b0316856001600160a01b03167f6e9b7d09f4f2a9b129527e9daa9b710e6efde1980ff021731846c74bb833f8908486604051611733929190918252602082015260400190565b60405180910390a3509392505050565b6040516001600160a01b03838116602483015260448201839052610fac91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611e04565b6001600160a01b03811615806118595750806001600160a01b03167f0000000000000000000000004cf3d61165a6be8ff741320ad27cab57fae5c2076001600160a01b0316634971e2563086866040518463ffffffff1660e01b815260040161180d939291906123a2565b602060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190612323565b6001600160a01b0316145b61189d5760405162461bcd60e51b81526020600482015260156024820152741393d517d49151d254d5149657d054141493d59151605a1b60448201526064016107e2565b60006118a98484610c89565b6001600160a01b038082166000908152600860209081526040808320805460ff19908116909155938716835280832080549094166001179093559151929350916118f7918791879101612313565b60408051808303601f1901815282825280516020918201206000818152600990925291902080546001600160a01b0319166001600160a01b0387811691821790925591935090919084169061194f9088908890612313565b604051908190038120907fc94709672e719140368a6108fcd1b4d0d1247187c04a308abf71aab8099b49ab90600090a45050505050565b6040516370a0823160e01b81523060048201526000907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316906370a0823190602401602060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906123d0565b9050611a486001600160a01b037f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3816843085611e67565b6040516370a0823160e01b81523060048201526000907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316906370a0823190602401602060405180830381865afa158015611aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad391906123d0565b905082611ae083836123ff565b1461149b5760405162461bcd60e51b815260206004820152601560248201527411125117d393d517d49150d152559157d1561050d5605a1b60448201526064016107e2565b60007f0000000000000000000000000000000000000000000000000de0b6b3a7640000611b5a670de0b6b3a764000084612412565b6107b29190612429565b6001600160a01b038216611b8e5760405163ec442f0560e01b8152600060048201526024016107e2565b6109b360008383611c6f565b6001600160a01b038416611bc45760405163e602df0560e01b8152600060048201526024016107e2565b6001600160a01b038316611bee57604051634a1406b160e11b8152600060048201526024016107e2565b6001600160a01b038085166000908152600360209081526040808320938716835292905220829055801561149b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c6191815260200190565b60405180910390a350505050565b6001600160a01b038316611c9a578060046000828254611c8f919061244b565b90915550611d0c9050565b6001600160a01b03831660009081526002602052604090205481811015611ced5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016107e2565b6001600160a01b03841660009081526002602052604090209082900390555b6001600160a01b038216611d2857600480548290039055611d47565b6001600160a01b03821660009081526002602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d8c91815260200190565b60405180910390a3505050565b6000670de0b6b3a7640000611b5a7f0000000000000000000000000000000000000000000000000de0b6b3a764000084612412565b6001600160a01b038216611df857604051634b637e8f60e11b8152600060048201526024016107e2565b6109b382600083611c6f565b6000611e196001600160a01b03841683611ea0565b90508051600014158015611e3e575080806020019051810190611e3c91906122d1565b155b15610fac57604051635274afe760e01b81526001600160a01b03841660048201526024016107e2565b6040516001600160a01b03848116602483015283811660448301526064820183905261149b9186918216906323b872dd90608401611770565b60606109498383600084600080856001600160a01b03168486604051611ec6919061245e565b60006040518083038185875af1925050503d8060008114611f03576040519150601f19603f3d011682016040523d82523d6000602084013e611f08565b606091505b5091509150611f18868383611f22565b9695505050505050565b606082611f3757611f3282611f7e565b610949565b8151158015611f4e57506001600160a01b0384163b155b15611f7757604051639996b31560e01b81526001600160a01b03851660048201526024016107e2565b5080610949565b805115611f8e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b60005b83811015611fc5578181015183820152602001611fad565b50506000910152565b6020815260008251806020840152611fed816040850160208701611faa565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611fa757600080fd5b6000806040838503121561202957600080fd5b823561203481612001565b946020939093013593505050565b60006020828403121561205457600080fd5b813561094981612001565b60008060006060848603121561207457600080fd5b833561207f81612001565b9250602084013561208f81612001565b929592945050506040919091013590565b6000602082840312156120b257600080fd5b5035919050565b60208101600483106120db57634e487b7160e01b600052602160045260246000fd5b91905290565b8015158114611fa757600080fd5b60006020828403121561210157600080fd5b8135610949816120e1565b60008083601f84011261211e57600080fd5b50813567ffffffffffffffff81111561213657600080fd5b60208301915083602082850101111561214e57600080fd5b9250929050565b6000806020838503121561216857600080fd5b823567ffffffffffffffff81111561217f57600080fd5b61218b8582860161210c565b90969095509350505050565b600080604083850312156121aa57600080fd5b82356121b581612001565b915060208301356121c581612001565b809150509250929050565b6000806000604084860312156121e557600080fd5b833567ffffffffffffffff8111156121fc57600080fd5b6122088682870161210c565b909450925050602084013561221c81612001565b809150509250925092565b60008060006040848603121561223c57600080fd5b83359250602084013567ffffffffffffffff81111561225a57600080fd5b6122668682870161210c565b9497909650939450505050565b600181811c9082168061228757607f821691505b6020821081036122a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600a908201526927a7262cafa0a226a4a760b11b604082015260600190565b6000602082840312156122e357600080fd5b8151610949816120e1565b6020808252600b908201526a1053149150511657d4d15560aa1b604082015260600190565b8183823760009101908152919050565b60006020828403121561233557600080fd5b815161094981612001565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201526000612397608083018486612340565b979650505050505050565b6001600160a01b03841681526040602082018190526000906123c79083018486612340565b95945050505050565b6000602082840312156123e257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156107b2576107b26123e9565b80820281158282048414176107b2576107b26123e9565b60008261244657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156107b2576107b26123e9565b60008251612470818460208701611faa565b919091019291505056fea2646970667358221220d1049433fd4c6e6f37dc12e81f434b26775eb2c1ae3556b29d03638cda3301ab64736f6c63430008180033

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

    0000000000000000000000004cf3d61165a6be8ff741320ad27cab57fae5c20700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad380000000000000000000000009582763b2376e25a5a70e45bb28613ccbdd3ef9f0000000000000000000000000000000000000000000000000000000000000012656e67696e655f636869705f57534f4e494300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012656e67696e655f636869705f57534f4e49430000000000000000000000000000

    -----Decoded View---------------
    Arg [0] : _registry (address): 0x4CF3d61165a6Be8FF741320ad27Cab57faE5c207
    Arg [1] : _name (string): engine_chip_WSONIC
    Arg [2] : _symbol (string): engine_chip_WSONIC
    Arg [3] : _underlyingToken (address): 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38
    Arg [4] : _initialAdmin (address): 0x9582763B2376e25A5a70e45Bb28613CCbDd3Ef9F

    -----Encoded View---------------
    9 Constructor Arguments found :
    Arg [0] : 0000000000000000000000004cf3d61165a6be8ff741320ad27cab57fae5c207
    Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
    Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
    Arg [3] : 000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
    Arg [4] : 0000000000000000000000009582763b2376e25a5a70e45bb28613ccbdd3ef9f
    Arg [5] : 0000000000000000000000000000000000000000000000000000000000000012
    Arg [6] : 656e67696e655f636869705f57534f4e49430000000000000000000000000000
    Arg [7] : 0000000000000000000000000000000000000000000000000000000000000012
    Arg [8] : 656e67696e655f636869705f57534f4e49430000000000000000000000000000


    [ 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.