ETH Price: $2,686.34 (-1.83%)

Token

Wrapped GLP (wGLP)

Overview

Max Total Supply

11,202.794287588815959556 wGLP

Holders

10

Transfers

-
1

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
fsGLPWrapper

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
cancun EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

/// @notice contract for converting staked GLP (fsGLP) to simple transferable ERC20 token
/// --- https://docs.gmx.io/docs/api/contracts-v1#transferring-staked-glp

contract fsGLPWrapper is ERC20 {
    
    ERC20 public immutable fsGLP;
    ERC20 public immutable sGLP;

    event Wrap(address sender, address account, uint256 amount);
    event Unwrap(address sender, address account, uint256 amount);

    constructor(
        string memory _name,
        string memory _symbol,
        ERC20 _fsGLP,
        ERC20 _sGLP
        ) ERC20(_name, _symbol) {
        fsGLP = _fsGLP;
        sGLP = _sGLP;
    }

    /// @dev get staked GLP balance for account
    function getGlpBalance(address account) external view returns(uint256) {
        return fsGLP.balanceOf(account);
    }

    /// @dev get total staked GLP supply
    function getGlpSupply() external view returns(uint256) {
        return fsGLP.totalSupply();
    }

    /// @dev wrap staked GLP (fsGLP) to transferable ERC20 token
    function deposit(uint256 value) external {
        address account = _msgSender();
        depositFor(account, value);
    }        

    /// @dev unwrap back to staked GLP (fsGLP)
    function withdraw(uint256 value) external {
        address account = _msgSender();
        withdrawTo(account, value);
    }    

    /// @dev unwrap full balance back to staked GLP (fsGLP)
    function withdrawAll() external {
        address account = _msgSender();
        uint256 value = this.balanceOf(account);
        withdrawTo(account, value);
    }     

    /// @dev wrap staked GLP (fsGLP) for another account
    function depositFor(address account, uint256 value) public{
        address sender = _msgSender();
        if (sender == address(this)) {
            revert ("Invalid sender!");
        }
        if (account == address(this)) {
            revert ("Invalid receiver!");
        }
        sGLP.transferFrom(sender, address(this), value);
        _mint(account, value);
        emit Wrap(sender, account, value);
    }

    /// @dev unwrap back to staked GLP (fsGLP) for another account
    function withdrawTo(address account, uint256 value) public {
        address sender = _msgSender();
        if (sender == address(this)) {
            revert ("Invalid sender!");
        }
        if (account == address(this)) {
            revert ("Invalid receiver!");
        }
        _burn(sender, value);
        sGLP.transfer(account, value);
        emit Unwrap(sender, account, value);
    }

}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.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
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

    /**
     * @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 virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _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.
            _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 virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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

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

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.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);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

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

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

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

Settings
{
  "remappings": [
    "@api3/=node_modules/@api3/",
    "@chainlink/=node_modules/@chainlink/",
    "@eth-optimism/=node_modules/@chainlink/contracts/node_modules/@eth-optimism/",
    "@openzeppelin/=node_modules/@openzeppelin/",
    "@uniswap/=node_modules/@uniswap/",
    "base64-sol/=node_modules/base64-sol/",
    "eth-gas-reporter/=node_modules/eth-gas-reporter/",
    "hardhat-deploy/=node_modules/hardhat-deploy/",
    "hardhat/=node_modules/hardhat/",
    "solidity-code-metrics/=node_modules/solidity-code-metrics/",
    "@arbitrum/=node_modules/@arbitrum/",
    "@axelar-network/=node_modules/@axelar-network/",
    "@layerzerolabs/=node_modules/@layerzerolabs/",
    "@offchainlabs/=node_modules/@offchainlabs/",
    "@pythnetwork/=node_modules/@pythnetwork/",
    "@scroll-tech/=node_modules/@scroll-tech/",
    "@zksync/=node_modules/@zksync/",
    "forge-std/=lib/forge-std/src/",
    "solady/=node_modules/solady/",
    "solidity-bytes-utils/=node_modules/solidity-bytes-utils/"
  ],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": true
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"contract ERC20","name":"_fsGLP","type":"address"},{"internalType":"contract ERC20","name":"_sGLP","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Wrap","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fsGLP","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getGlpBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlpSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sGLP","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdrawTo","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052346100615761001d610014610217565b9291909161023b565b610025610066565b611dc56104bd823960805181818161030b01528181610a6901526110b9015260a05181818161073001528181610ce90152610e920152611dc590f35b61006c565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009890610070565b810190811060018060401b038211176100b057604052565b61007a565b906100c86100c1610066565b928361008e565b565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b60018060401b0381116100f6576100f2602091610070565b0190565b61007a565b90825f9392825e0152565b9092919261011b610116826100da565b6100b5565b9381855260208501908284011161013757610135926100fb565b565b6100d6565b9080601f8301121561015a5781602061015793519101610106565b90565b6100d2565b60018060a01b031690565b6101739061015f565b90565b61017f9061016a565b90565b61018b81610176565b0361019257565b5f80fd5b905051906101a382610182565b565b608081830312610212575f81015160018060401b03811161020d57826101cc91830161013c565b92602082015160018060401b038111610208576101ee8461020592850161013c565b936101fc8160408601610196565b93606001610196565b90565b6100ce565b6100ce565b6100ca565b6102356122828038038061022a816100b5565b9283398101906101a5565b90919293565b90610245916104a4565b60805260a052565b5190565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610285575b602083101461028057565b610251565b91607f1691610275565b5f5260205f2090565b601f602091010490565b1b90565b919060086102c19102916102bb5f19846102a2565b926102a2565b9181191691161790565b90565b90565b6102e56102e06102ea926102cb565b6102ce565b6102cb565b90565b90565b919061030661030161030e936102d1565b6102ed565b9083546102a6565b9055565b5f90565b61032891610322610312565b916102f0565b565b5b818110610336575050565b806103435f600193610316565b0161032b565b9190601f8111610359575b505050565b61036561038a9361028f565b90602061037184610298565b83019310610392575b61038390610298565b019061032a565b5f8080610354565b91506103838192905061037a565b1c90565b906103b4905f19906008026103a0565b191690565b816103c3916103a4565b906002021790565b906103d58161024d565b9060018060401b038211610493576103f7826103f18554610265565b85610349565b602090601f831160011461042b5791809161041a935f9261041f575b50506103b9565b90555b565b90915001515f80610413565b601f1983169161043a8561028f565b925f5b81811061047b57509160029391856001969410610461575b5050500201905561041d565b610471910151601f8416906103a4565b90555f8080610455565b9193602060018192878701518155019501920161043d565b61007a565b906104a2916103cb565b565b906104b36104ba926003610498565b6004610498565b56fe60806040526004361015610013575b610853565b61001d5f3561015c565b806306fdde0314610157578063095ea7b314610152578063143d51f61461014d57806314540a281461014857806318160ddd14610143578063205c28781461013e57806323b872dd146101395780632e1a7d4d146101345780632f4f21e21461012f578063313ce5671461012a578063395093511461012557806370a08231146101205780637dfeda251461011b578063853828b61461011657806395d89b4114610111578063a457c2d71461010c578063a8d7741214610107578063a9059cbb14610102578063b6b55f25146100fd5763dd62ed3e0361000e5761081d565b6107bd565b610787565b610752565b6106f8565b6106c3565b610690565b61065b565b610626565b6105f0565b6105bb565b61055f565b61052c565b6104d8565b61046a565b610430565b6103fb565b610386565b6102d3565b6101ea565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261017a57565b61016c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6101c06101c96020936101ce936101b78161017f565b93848093610183565b9586910161018c565b610197565b0190565b6101e79160208201915f8184039101526101a1565b90565b3461021a576101fa366004610170565b6102166102056109b0565b61020d610162565b918291826101d2565b0390f35b610168565b60018060a01b031690565b6102339061021f565b90565b61023f8161022a565b0361024657565b5f80fd5b9050359061025782610236565b565b90565b61026581610259565b0361026c57565b5f80fd5b9050359061027d8261025c565b565b91906040838203126102a7578061029b6102a4925f860161024a565b93602001610270565b90565b61016c565b151590565b6102ba906102ac565b9052565b91906102d1905f602085019401906102b1565b565b34610304576103006102ef6102e936600461027f565b906109ca565b6102f7610162565b918291826102be565b0390f35b610168565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b61034461033f6103499261021f565b61032d565b61021f565b90565b61035590610330565b90565b6103619061034c565b90565b61036d90610358565b9052565b9190610384905f60208501940190610364565b565b346103b657610396366004610170565b6103b26103a1610309565b6103a9610162565b91829182610371565b0390f35b610168565b906020828203126103d4576103d1915f0161024a565b90565b61016c565b6103e290610259565b9052565b91906103f9905f602085019401906103d9565b565b3461042b576104276104166104113660046103bb565b610a55565b61041e610162565b918291826103e6565b0390f35b610168565b3461046057610440366004610170565b61045c61044b610b26565b610453610162565b918291826103e6565b0390f35b610168565b5f0190565b346104995761048361047d36600461027f565b90610c90565b61048b610162565b8061049581610465565b0390f35b610168565b90916060828403126104d3576104d06104b9845f850161024a565b936104c7816020860161024a565b93604001610270565b90565b61016c565b34610509576105056104f46104ee36600461049e565b91610e02565b6104fc610162565b918291826102be565b0390f35b610168565b9060208282031261052757610524915f01610270565b90565b61016c565b3461055a5761054461053f36600461050e565b610e31565b61054c610162565b8061055681610465565b0390f35b610168565b3461058e5761057861057236600461027f565b90610e44565b610580610162565b8061058a81610465565b0390f35b610168565b60ff1690565b6105a290610593565b9052565b91906105b9905f60208501940190610599565b565b346105eb576105cb366004610170565b6105e76105d6610fe2565b6105de610162565b918291826105a6565b0390f35b610168565b346106215761061d61060c61060636600461027f565b90611031565b610614610162565b918291826102be565b0390f35b610168565b346106565761065261064161063c3660046103bb565b611088565b610649610162565b918291826103e6565b0390f35b610168565b3461068b5761066b366004610170565b6106876106766110a6565b61067e610162565b918291826103e6565b0390f35b610168565b346106be576106a0366004610170565b6106a861114c565b6106b0610162565b806106ba81610465565b0390f35b610168565b346106f3576106d3366004610170565b6106ef6106de6111dd565b6106e6610162565b918291826101d2565b0390f35b610168565b346107295761072561071461070e36600461027f565b906112a9565b61071c610162565b918291826102be565b0390f35b610168565b7f000000000000000000000000000000000000000000000000000000000000000090565b3461078257610762366004610170565b61077e61076d61072e565b610775610162565b91829182610371565b0390f35b610168565b346107b8576107b46107a361079d36600461027f565b906112fd565b6107ab610162565b918291826102be565b0390f35b610168565b346107eb576107d56107d036600461050e565b61131f565b6107dd610162565b806107e781610465565b0390f35b610168565b9190604083820312610818578061080c610815925f860161024a565b9360200161024a565b90565b61016c565b3461084e5761084a6108396108333660046107f0565b90611348565b610841610162565b918291826103e6565b0390f35b610168565b5f80fd5b606090565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610890575b602083101461088b57565b61085c565b91607f1691610880565b60209181520190565b5f5260205f2090565b905f92918054906108c66108bf83610870565b809461089a565b916001811690815f1461091d57506001146108e1575b505050565b6108ee91929394506108a3565b915f925b81841061090557505001905f80806108dc565b600181602092959395548486015201910192906108f2565b92949550505060ff19168252151560200201905f80806108dc565b90610942916108ac565b90565b634e487b7160e01b5f52604160045260245ffd5b9061096390610197565b810190811067ffffffffffffffff82111761097d57604052565b610945565b906109a261099b92610992610162565b93848092610938565b0383610959565b565b6109ad90610982565b90565b6109b8610857565b506109c360036109a4565b90565b5f90565b6109e7916109d66109c6565b506109df611374565b919091611556565b600190565b5f90565b60e01b90565b90505190610a038261025c565b565b90602082820312610a1e57610a1b915f016109f6565b90565b61016c565b610a2c9061022a565b9052565b9190610a43905f60208501940190610a23565b565b610a4d610162565b3d5f823e3d90fd5b6020610ab491610a636109ec565b50610a8d7f0000000000000000000000000000000000000000000000000000000000000000610358565b610aa96370a08231610a9d610162565b958694859384936109f0565b835260048301610a30565b03915afa908115610af8575f91610aca575b5090565b610aeb915060203d8111610af1575b610ae38183610959565b810190610a05565b5f610ac6565b503d610ad9565b610a45565b5f1c90565b90565b610b11610b1691610afd565b610b02565b90565b610b239054610b05565b90565b610b2e6109ec565b50610b396002610b19565b90565b610b459061034c565b90565b5f7f496e76616c69642073656e646572210000000000000000000000000000000000910152565b610b7c600f602092610183565b610b8581610b48565b0190565b610b9e9060208101905f818303910152610b6f565b90565b5f7f496e76616c696420726563656976657221000000000000000000000000000000910152565b610bd56011602092610183565b610bde81610ba1565b0190565b610bf79060208101905f818303910152610bc8565b90565b610c03816102ac565b03610c0a57565b5f80fd5b90505190610c1b82610bfa565b565b90602082820312610c3657610c33915f01610c0e565b90565b61016c565b916020610c5c929493610c5560408201965f830190610a23565b01906103d9565b565b604090610c87610c8e9496959396610c7d60608401985f850190610a23565b6020830190610a23565b01906103d9565b565b90610c99611374565b80610cb4610cae610ca930610b3c565b61022a565b9161022a565b14610de05782610cd4610cce610cc930610b3c565b61022a565b9161022a565b14610dbe57610ce4818390611762565b610d0d7f0000000000000000000000000000000000000000000000000000000000000000610358565b602063a9059cbb918590610d345f8795610d3f610d28610162565b978896879586946109f0565b845260048401610c3b565b03925af18015610db957610d8d575b50919091610d887fbe8e6aacbb5d99c99f1992d91d807f570d0acacabee02374369ed42710dc669893610d7f610162565b93849384610c5e565b0390a1565b610dad9060203d8111610db2575b610da58183610959565b810190610c1d565b610d4e565b503d610d9b565b610a45565b610dc6610162565b62461bcd60e51b815280610ddc60048201610be2565b0390fd5b610de8610162565b62461bcd60e51b815280610dfe60048201610b89565b0390fd5b91610e2c92610e0f6109c6565b50610e24610e1b611374565b829084916118cc565b919091611b39565b600190565b610e4290610e3d611374565b610c90565b565b90610e4d611374565b80610e68610e62610e5d30610b3c565b61022a565b9161022a565b14610f9d5782610e88610e82610e7d30610b3c565b61022a565b9161022a565b14610f7b57610eb67f0000000000000000000000000000000000000000000000000000000000000000610358565b60206323b872dd918390610ee65f610ecd30610b3c565b95610ef189610eda610162565b988997889687956109f0565b855260048501610c5e565b03925af18015610f7657610f4a575b50610f0c838390611ccc565b919091610f457f32771713d1bc9f76444ca8b47f67bb9a592b559397cf27cfea344efa0fdb7d8b93610f3c610162565b93849384610c5e565b0390a1565b610f6a9060203d8111610f6f575b610f628183610959565b810190610c1d565b610f00565b503d610f58565b610a45565b610f83610162565b62461bcd60e51b815280610f9960048201610be2565b0390fd5b610fa5610162565b62461bcd60e51b815280610fbb60048201610b89565b0390fd5b5f90565b90565b610fda610fd5610fdf92610fc3565b61032d565b610593565b90565b610fea610fbf565b50610ff56012610fc6565b90565b634e487b7160e01b5f52601160045260245ffd5b61101b61102191939293610259565b92610259565b820180921161102c57565b610ff8565b6110619161103d6109c6565b5061105b611049611374565b9161105683948094611348565b61100c565b91611556565b600190565b61106f9061034c565b90565b9061107c90611066565b5f5260205260405f2090565b61109e6110a3916110976109ec565b505f611072565b610b19565b90565b6110ae6109ec565b506110f360206110dd7f0000000000000000000000000000000000000000000000000000000000000000610358565b6318160ddd906110eb610162565b9384926109f0565b8252818061110360048201610465565b03915afa908115611147575f91611119575b5090565b61113a915060203d8111611140575b6111328183610959565b810190610a05565b5f611115565b503d611128565b610a45565b61118c611157611374565b602061116230610b3c565b6370a08231906111818492611175610162565b968794859384936109f0565b835260048301610a30565b03915afa80156111d8576111a8925f916111aa575b5090610c90565b565b6111cb915060203d81116111d1575b6111c38183610959565b810190610a05565b5f6111a1565b503d6111b9565b610a45565b6111e5610857565b506111f060046109a4565b90565b60207f207a65726f000000000000000000000000000000000000000000000000000000917f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201520152565b61124d6025604092610183565b611256816111f3565b0190565b61126f9060208101905f818303910152611240565b90565b1561127957565b611281610162565b62461bcd60e51b8152806112976004820161125a565b0390fd5b906112a69103610259565b90565b6112f8916112b56109c6565b506112f26112c1611374565b916112cd838590611348565b926112eb846112e46112de85610259565b91610259565b1015611272565b939261129b565b91611556565b600190565b61131a916113096109c6565b50611312611374565b919091611b39565b600190565b6113309061132b611374565b610e44565b565b9061133c90611066565b5f5260205260405f2090565b61136d916113636113689261135b6109ec565b506001611332565b611072565b610b19565b90565b5f90565b61137c611370565b503390565b90565b61139861139361139d92611381565b61032d565b61021f565b90565b6113a990611384565b90565b60207f7265737300000000000000000000000000000000000000000000000000000000917f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201520152565b6114066024604092610183565b61140f816113ac565b0190565b6114289060208101905f8183039101526113f9565b90565b1561143257565b61143a610162565b62461bcd60e51b81528061145060048201611413565b0390fd5b60207f7373000000000000000000000000000000000000000000000000000000000000917f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201520152565b6114ae6022604092610183565b6114b781611454565b0190565b6114d09060208101905f8183039101526114a1565b90565b156114da57565b6114e2610162565b62461bcd60e51b8152806114f8600482016114bb565b0390fd5b5f1b90565b9061150d5f19916114fc565b9181191691161790565b61152b61152661153092610259565b61032d565b610259565b90565b90565b9061154b61154661155292611517565b611533565b8254611501565b9055565b91909161157e8161157761157161156c5f6113a0565b61022a565b9161022a565b141561142b565b6115a38361159c6115966115915f6113a0565b61022a565b9161022a565b14156114d3565b6115c2826115bd6115b660018590611332565b8690611072565b611536565b91909161160d6115fb6115f57f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593611066565b93611066565b93611604610162565b918291826103e6565b0390a3565b60207f7300000000000000000000000000000000000000000000000000000000000000917f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201520152565b61166c6021604092610183565b61167581611612565b0190565b61168e9060208101905f81830391015261165f565b90565b1561169857565b6116a0610162565b62461bcd60e51b8152806116b660048201611679565b0390fd5b60207f6365000000000000000000000000000000000000000000000000000000000000917f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201520152565b6117146022604092610183565b61171d816116ba565b0190565b6117369060208101905f818303910152611707565b90565b1561174057565b611748610162565b62461bcd60e51b81528061175e60048201611721565b0390fd5b6117878161178061177a6117755f6113a0565b61022a565b9161022a565b1415611691565b6117d46117c46117a061179b5f8590611072565b610b19565b6117bd816117b66117b088610259565b91610259565b1015611739565b849061129b565b6117cf5f8490611072565b611536565b6117f16117ea836117e56002610b19565b61129b565b6002611536565b906117fb5f6113a0565b909161184561183361182d7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611066565b93611066565b9361183c610162565b918291826103e6565b0390a3565b5f7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000910152565b61187e601d602092610183565b6118878161184a565b0190565b6118a09060208101905f818303910152611871565b90565b156118aa57565b6118b2610162565b62461bcd60e51b8152806118c86004820161188b565b0390fd5b6118d7818390611348565b90816118ec6118e65f19610259565b91610259565b036118f8575b50505050565b61192a936119249161191d8461191661191085610259565b91610259565b10156118a3565b939261129b565b91611556565b5f8080806118f2565b60207f6472657373000000000000000000000000000000000000000000000000000000917f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201520152565b61198d6025604092610183565b61199681611933565b0190565b6119af9060208101905f818303910152611980565b90565b156119b957565b6119c1610162565b62461bcd60e51b8152806119d76004820161199a565b0390fd5b60207f6573730000000000000000000000000000000000000000000000000000000000917f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201520152565b611a356023604092610183565b611a3e816119db565b0190565b611a579060208101905f818303910152611a28565b90565b15611a6157565b611a69610162565b62461bcd60e51b815280611a7f60048201611a42565b0390fd5b60207f616c616e63650000000000000000000000000000000000000000000000000000917f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201520152565b611add6026604092610183565b611ae681611a83565b0190565b611aff9060208101905f818303910152611ad0565b90565b15611b0957565b611b11610162565b62461bcd60e51b815280611b2760048201611aea565b0390fd5b90611b369101610259565b90565b919091611b6181611b5a611b54611b4f5f6113a0565b61022a565b9161022a565b14156119b2565b611b8683611b7f611b79611b745f6113a0565b61022a565b9161022a565b1415611a5a565b611bd3611bc3611b9f611b9a5f8590611072565b610b19565b611bbc81611bb5611baf88610259565b91610259565b1015611b02565b849061129b565b611bce5f8490611072565b611536565b611bfa82611bf4611be55f8790611072565b91611bef83610b19565b611b2b565b90611536565b919091611c45611c33611c2d7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611066565b93611066565b93611c3c610162565b918291826103e6565b0390a3565b5f7f45524332303a206d696e7420746f20746865207a65726f206164647265737300910152565b611c7e601f602092610183565b611c8781611c4a565b0190565b611ca09060208101905f818303910152611c71565b90565b15611caa57565b611cb2610162565b62461bcd60e51b815280611cc860048201611c8b565b0390fd5b90611cf282611ceb611ce5611ce05f6113a0565b61022a565b9161022a565b1415611ca3565b611d0f611d0882611d036002610b19565b61100c565b6002611536565b611d3681611d30611d215f8690611072565b91611d2b83610b19565b611b2b565b90611536565b611d3f5f6113a0565b919091611d8a611d78611d727fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611066565b93611066565b93611d81610162565b918291826103e6565b0390a356fea2646970667358221220b48a969ffe29633b4b1afff0bba0ca34fc8af7807bd11f0429e4d9462014f53364736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000001addd80e6039594ee970e5872d247bf0414c89030000000000000000000000005402b5f40310bded796c7d0f3ff6683f5c0cffdf000000000000000000000000000000000000000000000000000000000000000b5772617070656420474c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000477474c5000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361015610013575b610853565b61001d5f3561015c565b806306fdde0314610157578063095ea7b314610152578063143d51f61461014d57806314540a281461014857806318160ddd14610143578063205c28781461013e57806323b872dd146101395780632e1a7d4d146101345780632f4f21e21461012f578063313ce5671461012a578063395093511461012557806370a08231146101205780637dfeda251461011b578063853828b61461011657806395d89b4114610111578063a457c2d71461010c578063a8d7741214610107578063a9059cbb14610102578063b6b55f25146100fd5763dd62ed3e0361000e5761081d565b6107bd565b610787565b610752565b6106f8565b6106c3565b610690565b61065b565b610626565b6105f0565b6105bb565b61055f565b61052c565b6104d8565b61046a565b610430565b6103fb565b610386565b6102d3565b6101ea565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261017a57565b61016c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6101c06101c96020936101ce936101b78161017f565b93848093610183565b9586910161018c565b610197565b0190565b6101e79160208201915f8184039101526101a1565b90565b3461021a576101fa366004610170565b6102166102056109b0565b61020d610162565b918291826101d2565b0390f35b610168565b60018060a01b031690565b6102339061021f565b90565b61023f8161022a565b0361024657565b5f80fd5b9050359061025782610236565b565b90565b61026581610259565b0361026c57565b5f80fd5b9050359061027d8261025c565b565b91906040838203126102a7578061029b6102a4925f860161024a565b93602001610270565b90565b61016c565b151590565b6102ba906102ac565b9052565b91906102d1905f602085019401906102b1565b565b34610304576103006102ef6102e936600461027f565b906109ca565b6102f7610162565b918291826102be565b0390f35b610168565b7f0000000000000000000000001addd80e6039594ee970e5872d247bf0414c890390565b90565b61034461033f6103499261021f565b61032d565b61021f565b90565b61035590610330565b90565b6103619061034c565b90565b61036d90610358565b9052565b9190610384905f60208501940190610364565b565b346103b657610396366004610170565b6103b26103a1610309565b6103a9610162565b91829182610371565b0390f35b610168565b906020828203126103d4576103d1915f0161024a565b90565b61016c565b6103e290610259565b9052565b91906103f9905f602085019401906103d9565b565b3461042b576104276104166104113660046103bb565b610a55565b61041e610162565b918291826103e6565b0390f35b610168565b3461046057610440366004610170565b61045c61044b610b26565b610453610162565b918291826103e6565b0390f35b610168565b5f0190565b346104995761048361047d36600461027f565b90610c90565b61048b610162565b8061049581610465565b0390f35b610168565b90916060828403126104d3576104d06104b9845f850161024a565b936104c7816020860161024a565b93604001610270565b90565b61016c565b34610509576105056104f46104ee36600461049e565b91610e02565b6104fc610162565b918291826102be565b0390f35b610168565b9060208282031261052757610524915f01610270565b90565b61016c565b3461055a5761054461053f36600461050e565b610e31565b61054c610162565b8061055681610465565b0390f35b610168565b3461058e5761057861057236600461027f565b90610e44565b610580610162565b8061058a81610465565b0390f35b610168565b60ff1690565b6105a290610593565b9052565b91906105b9905f60208501940190610599565b565b346105eb576105cb366004610170565b6105e76105d6610fe2565b6105de610162565b918291826105a6565b0390f35b610168565b346106215761061d61060c61060636600461027f565b90611031565b610614610162565b918291826102be565b0390f35b610168565b346106565761065261064161063c3660046103bb565b611088565b610649610162565b918291826103e6565b0390f35b610168565b3461068b5761066b366004610170565b6106876106766110a6565b61067e610162565b918291826103e6565b0390f35b610168565b346106be576106a0366004610170565b6106a861114c565b6106b0610162565b806106ba81610465565b0390f35b610168565b346106f3576106d3366004610170565b6106ef6106de6111dd565b6106e6610162565b918291826101d2565b0390f35b610168565b346107295761072561071461070e36600461027f565b906112a9565b61071c610162565b918291826102be565b0390f35b610168565b7f0000000000000000000000005402b5f40310bded796c7d0f3ff6683f5c0cffdf90565b3461078257610762366004610170565b61077e61076d61072e565b610775610162565b91829182610371565b0390f35b610168565b346107b8576107b46107a361079d36600461027f565b906112fd565b6107ab610162565b918291826102be565b0390f35b610168565b346107eb576107d56107d036600461050e565b61131f565b6107dd610162565b806107e781610465565b0390f35b610168565b9190604083820312610818578061080c610815925f860161024a565b9360200161024a565b90565b61016c565b3461084e5761084a6108396108333660046107f0565b90611348565b610841610162565b918291826103e6565b0390f35b610168565b5f80fd5b606090565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610890575b602083101461088b57565b61085c565b91607f1691610880565b60209181520190565b5f5260205f2090565b905f92918054906108c66108bf83610870565b809461089a565b916001811690815f1461091d57506001146108e1575b505050565b6108ee91929394506108a3565b915f925b81841061090557505001905f80806108dc565b600181602092959395548486015201910192906108f2565b92949550505060ff19168252151560200201905f80806108dc565b90610942916108ac565b90565b634e487b7160e01b5f52604160045260245ffd5b9061096390610197565b810190811067ffffffffffffffff82111761097d57604052565b610945565b906109a261099b92610992610162565b93848092610938565b0383610959565b565b6109ad90610982565b90565b6109b8610857565b506109c360036109a4565b90565b5f90565b6109e7916109d66109c6565b506109df611374565b919091611556565b600190565b5f90565b60e01b90565b90505190610a038261025c565b565b90602082820312610a1e57610a1b915f016109f6565b90565b61016c565b610a2c9061022a565b9052565b9190610a43905f60208501940190610a23565b565b610a4d610162565b3d5f823e3d90fd5b6020610ab491610a636109ec565b50610a8d7f0000000000000000000000001addd80e6039594ee970e5872d247bf0414c8903610358565b610aa96370a08231610a9d610162565b958694859384936109f0565b835260048301610a30565b03915afa908115610af8575f91610aca575b5090565b610aeb915060203d8111610af1575b610ae38183610959565b810190610a05565b5f610ac6565b503d610ad9565b610a45565b5f1c90565b90565b610b11610b1691610afd565b610b02565b90565b610b239054610b05565b90565b610b2e6109ec565b50610b396002610b19565b90565b610b459061034c565b90565b5f7f496e76616c69642073656e646572210000000000000000000000000000000000910152565b610b7c600f602092610183565b610b8581610b48565b0190565b610b9e9060208101905f818303910152610b6f565b90565b5f7f496e76616c696420726563656976657221000000000000000000000000000000910152565b610bd56011602092610183565b610bde81610ba1565b0190565b610bf79060208101905f818303910152610bc8565b90565b610c03816102ac565b03610c0a57565b5f80fd5b90505190610c1b82610bfa565b565b90602082820312610c3657610c33915f01610c0e565b90565b61016c565b916020610c5c929493610c5560408201965f830190610a23565b01906103d9565b565b604090610c87610c8e9496959396610c7d60608401985f850190610a23565b6020830190610a23565b01906103d9565b565b90610c99611374565b80610cb4610cae610ca930610b3c565b61022a565b9161022a565b14610de05782610cd4610cce610cc930610b3c565b61022a565b9161022a565b14610dbe57610ce4818390611762565b610d0d7f0000000000000000000000005402b5f40310bded796c7d0f3ff6683f5c0cffdf610358565b602063a9059cbb918590610d345f8795610d3f610d28610162565b978896879586946109f0565b845260048401610c3b565b03925af18015610db957610d8d575b50919091610d887fbe8e6aacbb5d99c99f1992d91d807f570d0acacabee02374369ed42710dc669893610d7f610162565b93849384610c5e565b0390a1565b610dad9060203d8111610db2575b610da58183610959565b810190610c1d565b610d4e565b503d610d9b565b610a45565b610dc6610162565b62461bcd60e51b815280610ddc60048201610be2565b0390fd5b610de8610162565b62461bcd60e51b815280610dfe60048201610b89565b0390fd5b91610e2c92610e0f6109c6565b50610e24610e1b611374565b829084916118cc565b919091611b39565b600190565b610e4290610e3d611374565b610c90565b565b90610e4d611374565b80610e68610e62610e5d30610b3c565b61022a565b9161022a565b14610f9d5782610e88610e82610e7d30610b3c565b61022a565b9161022a565b14610f7b57610eb67f0000000000000000000000005402b5f40310bded796c7d0f3ff6683f5c0cffdf610358565b60206323b872dd918390610ee65f610ecd30610b3c565b95610ef189610eda610162565b988997889687956109f0565b855260048501610c5e565b03925af18015610f7657610f4a575b50610f0c838390611ccc565b919091610f457f32771713d1bc9f76444ca8b47f67bb9a592b559397cf27cfea344efa0fdb7d8b93610f3c610162565b93849384610c5e565b0390a1565b610f6a9060203d8111610f6f575b610f628183610959565b810190610c1d565b610f00565b503d610f58565b610a45565b610f83610162565b62461bcd60e51b815280610f9960048201610be2565b0390fd5b610fa5610162565b62461bcd60e51b815280610fbb60048201610b89565b0390fd5b5f90565b90565b610fda610fd5610fdf92610fc3565b61032d565b610593565b90565b610fea610fbf565b50610ff56012610fc6565b90565b634e487b7160e01b5f52601160045260245ffd5b61101b61102191939293610259565b92610259565b820180921161102c57565b610ff8565b6110619161103d6109c6565b5061105b611049611374565b9161105683948094611348565b61100c565b91611556565b600190565b61106f9061034c565b90565b9061107c90611066565b5f5260205260405f2090565b61109e6110a3916110976109ec565b505f611072565b610b19565b90565b6110ae6109ec565b506110f360206110dd7f0000000000000000000000001addd80e6039594ee970e5872d247bf0414c8903610358565b6318160ddd906110eb610162565b9384926109f0565b8252818061110360048201610465565b03915afa908115611147575f91611119575b5090565b61113a915060203d8111611140575b6111328183610959565b810190610a05565b5f611115565b503d611128565b610a45565b61118c611157611374565b602061116230610b3c565b6370a08231906111818492611175610162565b968794859384936109f0565b835260048301610a30565b03915afa80156111d8576111a8925f916111aa575b5090610c90565b565b6111cb915060203d81116111d1575b6111c38183610959565b810190610a05565b5f6111a1565b503d6111b9565b610a45565b6111e5610857565b506111f060046109a4565b90565b60207f207a65726f000000000000000000000000000000000000000000000000000000917f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201520152565b61124d6025604092610183565b611256816111f3565b0190565b61126f9060208101905f818303910152611240565b90565b1561127957565b611281610162565b62461bcd60e51b8152806112976004820161125a565b0390fd5b906112a69103610259565b90565b6112f8916112b56109c6565b506112f26112c1611374565b916112cd838590611348565b926112eb846112e46112de85610259565b91610259565b1015611272565b939261129b565b91611556565b600190565b61131a916113096109c6565b50611312611374565b919091611b39565b600190565b6113309061132b611374565b610e44565b565b9061133c90611066565b5f5260205260405f2090565b61136d916113636113689261135b6109ec565b506001611332565b611072565b610b19565b90565b5f90565b61137c611370565b503390565b90565b61139861139361139d92611381565b61032d565b61021f565b90565b6113a990611384565b90565b60207f7265737300000000000000000000000000000000000000000000000000000000917f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201520152565b6114066024604092610183565b61140f816113ac565b0190565b6114289060208101905f8183039101526113f9565b90565b1561143257565b61143a610162565b62461bcd60e51b81528061145060048201611413565b0390fd5b60207f7373000000000000000000000000000000000000000000000000000000000000917f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201520152565b6114ae6022604092610183565b6114b781611454565b0190565b6114d09060208101905f8183039101526114a1565b90565b156114da57565b6114e2610162565b62461bcd60e51b8152806114f8600482016114bb565b0390fd5b5f1b90565b9061150d5f19916114fc565b9181191691161790565b61152b61152661153092610259565b61032d565b610259565b90565b90565b9061154b61154661155292611517565b611533565b8254611501565b9055565b91909161157e8161157761157161156c5f6113a0565b61022a565b9161022a565b141561142b565b6115a38361159c6115966115915f6113a0565b61022a565b9161022a565b14156114d3565b6115c2826115bd6115b660018590611332565b8690611072565b611536565b91909161160d6115fb6115f57f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593611066565b93611066565b93611604610162565b918291826103e6565b0390a3565b60207f7300000000000000000000000000000000000000000000000000000000000000917f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201520152565b61166c6021604092610183565b61167581611612565b0190565b61168e9060208101905f81830391015261165f565b90565b1561169857565b6116a0610162565b62461bcd60e51b8152806116b660048201611679565b0390fd5b60207f6365000000000000000000000000000000000000000000000000000000000000917f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201520152565b6117146022604092610183565b61171d816116ba565b0190565b6117369060208101905f818303910152611707565b90565b1561174057565b611748610162565b62461bcd60e51b81528061175e60048201611721565b0390fd5b6117878161178061177a6117755f6113a0565b61022a565b9161022a565b1415611691565b6117d46117c46117a061179b5f8590611072565b610b19565b6117bd816117b66117b088610259565b91610259565b1015611739565b849061129b565b6117cf5f8490611072565b611536565b6117f16117ea836117e56002610b19565b61129b565b6002611536565b906117fb5f6113a0565b909161184561183361182d7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611066565b93611066565b9361183c610162565b918291826103e6565b0390a3565b5f7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000910152565b61187e601d602092610183565b6118878161184a565b0190565b6118a09060208101905f818303910152611871565b90565b156118aa57565b6118b2610162565b62461bcd60e51b8152806118c86004820161188b565b0390fd5b6118d7818390611348565b90816118ec6118e65f19610259565b91610259565b036118f8575b50505050565b61192a936119249161191d8461191661191085610259565b91610259565b10156118a3565b939261129b565b91611556565b5f8080806118f2565b60207f6472657373000000000000000000000000000000000000000000000000000000917f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201520152565b61198d6025604092610183565b61199681611933565b0190565b6119af9060208101905f818303910152611980565b90565b156119b957565b6119c1610162565b62461bcd60e51b8152806119d76004820161199a565b0390fd5b60207f6573730000000000000000000000000000000000000000000000000000000000917f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201520152565b611a356023604092610183565b611a3e816119db565b0190565b611a579060208101905f818303910152611a28565b90565b15611a6157565b611a69610162565b62461bcd60e51b815280611a7f60048201611a42565b0390fd5b60207f616c616e63650000000000000000000000000000000000000000000000000000917f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201520152565b611add6026604092610183565b611ae681611a83565b0190565b611aff9060208101905f818303910152611ad0565b90565b15611b0957565b611b11610162565b62461bcd60e51b815280611b2760048201611aea565b0390fd5b90611b369101610259565b90565b919091611b6181611b5a611b54611b4f5f6113a0565b61022a565b9161022a565b14156119b2565b611b8683611b7f611b79611b745f6113a0565b61022a565b9161022a565b1415611a5a565b611bd3611bc3611b9f611b9a5f8590611072565b610b19565b611bbc81611bb5611baf88610259565b91610259565b1015611b02565b849061129b565b611bce5f8490611072565b611536565b611bfa82611bf4611be55f8790611072565b91611bef83610b19565b611b2b565b90611536565b919091611c45611c33611c2d7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611066565b93611066565b93611c3c610162565b918291826103e6565b0390a3565b5f7f45524332303a206d696e7420746f20746865207a65726f206164647265737300910152565b611c7e601f602092610183565b611c8781611c4a565b0190565b611ca09060208101905f818303910152611c71565b90565b15611caa57565b611cb2610162565b62461bcd60e51b815280611cc860048201611c8b565b0390fd5b90611cf282611ceb611ce5611ce05f6113a0565b61022a565b9161022a565b1415611ca3565b611d0f611d0882611d036002610b19565b61100c565b6002611536565b611d3681611d30611d215f8690611072565b91611d2b83610b19565b611b2b565b90611536565b611d3f5f6113a0565b919091611d8a611d78611d727fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611066565b93611066565b93611d81610162565b918291826103e6565b0390a356fea2646970667358221220b48a969ffe29633b4b1afff0bba0ca34fc8af7807bd11f0429e4d9462014f53364736f6c634300081c0033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000001addd80e6039594ee970e5872d247bf0414c89030000000000000000000000005402b5f40310bded796c7d0f3ff6683f5c0cffdf000000000000000000000000000000000000000000000000000000000000000b5772617070656420474c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000477474c5000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Wrapped GLP
Arg [1] : _symbol (string): wGLP
Arg [2] : _fsGLP (address): 0x1aDDD80E6039594eE970E5872D247bf0414C8903
Arg [3] : _sGLP (address): 0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000001addd80e6039594ee970e5872d247bf0414c8903
Arg [3] : 0000000000000000000000005402b5f40310bded796c7d0f3ff6683f5c0cffdf
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [5] : 5772617070656420474c50000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 77474c5000000000000000000000000000000000000000000000000000000000


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.