ETH Price: $2,686.35 (-2.23%)

Contract

0x93fa1D7c310692eAf390F951828f8791bC19cb36
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve206096602024-08-26 2:03:2321 hrs ago1724637803IN
0x93fa1D7c...1bC19cb36
0 ETH0.000048751.96429498
Approve206096452024-08-26 2:00:2321 hrs ago1724637623IN
0x93fa1D7c...1bC19cb36
0 ETH0.000094151.99891872
Approve206081312024-08-25 20:56:2326 hrs ago1724619383IN
0x93fa1D7c...1bC19cb36
0 ETH0.000040740.87098715
Approve206009822024-08-24 20:56:472 days ago1724533007IN
0x93fa1D7c...1bC19cb36
0 ETH0.000047641.01279454
Approve205943842024-08-23 22:48:113 days ago1724453291IN
0x93fa1D7c...1bC19cb36
0 ETH0.000071232.39521232
Approve205907152024-08-23 10:30:353 days ago1724409035IN
0x93fa1D7c...1bC19cb36
0 ETH0.000053271.13246771
Approve205903382024-08-23 9:14:233 days ago1724404463IN
0x93fa1D7c...1bC19cb36
0 ETH0.000045960.97700979
Approve205840002024-08-22 11:59:234 days ago1724327963IN
0x93fa1D7c...1bC19cb36
0 ETH0.000043710.92798218
Approve205732282024-08-20 23:51:235 days ago1724197883IN
0x93fa1D7c...1bC19cb36
0 ETH0.000042020.89760851
Approve205705502024-08-20 14:52:356 days ago1724165555IN
0x93fa1D7c...1bC19cb36
0 ETH0.000194874.13699087
Approve205618922024-08-19 9:50:597 days ago1724061059IN
0x93fa1D7c...1bC19cb36
0 ETH0.000178123.80658171
Approve205600842024-08-19 3:47:357 days ago1724039255IN
0x93fa1D7c...1bC19cb36
0 ETH0.000053211.13106025
Approve205600592024-08-19 3:42:357 days ago1724038955IN
0x93fa1D7c...1bC19cb36
0 ETH0.000042290.89907821
Approve205600392024-08-19 3:38:357 days ago1724038715IN
0x93fa1D7c...1bC19cb36
0 ETH0.000061751.31261373
Approve205600022024-08-19 3:31:117 days ago1724038271IN
0x93fa1D7c...1bC19cb36
0 ETH0.000067481.43439107
Approve205542622024-08-18 8:17:238 days ago1723969043IN
0x93fa1D7c...1bC19cb36
0 ETH0.000039221.45655421
Approve205536202024-08-18 6:08:238 days ago1723961303IN
0x93fa1D7c...1bC19cb36
0 ETH0.000047451.01336391
Approve205447352024-08-17 0:21:599 days ago1723854119IN
0x93fa1D7c...1bC19cb36
0 ETH0.000048481.03066934
Approve205409012024-08-16 11:29:5910 days ago1723807799IN
0x93fa1D7c...1bC19cb36
0 ETH0.000172313.65813159
Approve205335572024-08-15 10:52:5911 days ago1723719179IN
0x93fa1D7c...1bC19cb36
0 ETH0.000219024.65554487
Approve205153252024-08-12 21:48:5914 days ago1723499339IN
0x93fa1D7c...1bC19cb36
0 ETH0.000141313
Approve204576672024-08-04 20:45:3522 days ago1722804335IN
0x93fa1D7c...1bC19cb36
0 ETH0.000177433.79284479
Approve204576082024-08-04 20:33:4722 days ago1722803627IN
0x93fa1D7c...1bC19cb36
0 ETH0.000199854.27209274
Approve204207932024-07-30 17:15:1127 days ago1722359711IN
0x93fa1D7c...1bC19cb36
0 ETH0.0004801610.26416726
Transfer204105502024-07-29 6:53:3528 days ago1722236015IN
0x93fa1D7c...1bC19cb36
0 ETH0.000091852.99387982
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BananaV2

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : BananaV2.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

import "./interfaces/IBanana.sol";
import "../utils/Ownable.sol";
import "../libraries/TransferHelper.sol";
import "../libraries/FullMath.sol";

contract BananaV2 is IBanana, Ownable {
    using FullMath for uint256;

    string public constant override name = "Banana";
    string public constant override symbol = "BANANA";
    uint8 public constant override decimals = 18;

    address public immutable override apeXToken;
    uint256 public override redeemTime;
    uint256 public override totalSupply;
    mapping(address => uint256) public override balanceOf;
    mapping(address => mapping(address => uint256)) public override allowance;

    mapping(address => bool) public minters;

    constructor(address apeXToken_, uint256 redeemTime_) {
        owner = msg.sender;
        apeXToken = apeXToken_;
        redeemTime = redeemTime_;
        minters[msg.sender] = true;
    }

    function updateRedeemTime(uint256 redeemTime_) external onlyOwner {
        require(redeemTime_ > block.timestamp, "need over current time");
        emit RedeemTimeChanged(redeemTime, redeemTime_);
        redeemTime = redeemTime_;
    }

    function addMinter(address minter) external onlyOwner {
        minters[minter] = true;
    }

    function removeMinter(address minter) external onlyOwner {
        minters[minter] = false;
    }

    function mint(address to, uint256 apeXAmount) external override returns (uint256) {
        require(minters[msg.sender], "forbidden");
        require(apeXAmount > 0, "zero amount");

        uint256 apeXBalance = IERC20(apeXToken).balanceOf(address(this));
        uint256 mintAmount;
        if (totalSupply == 0) {
            mintAmount = apeXAmount * 1000;
        } else {
            mintAmount = apeXAmount.mulDiv(totalSupply, apeXBalance);
        }

        TransferHelper.safeTransferFrom(apeXToken, msg.sender, address(this), apeXAmount);
        _mint(to, mintAmount);
        return mintAmount;
    }

    function burn(uint256 amount) external override returns (bool) {
        _burn(msg.sender, amount);
        return true;
    }

    function burnFrom(address from, uint256 amount) external override returns (bool) {
        _spendAllowance(from, msg.sender, amount);
        _burn(from, amount);
        return true;
    }

    function redeem(uint256 amount) external override returns (uint256) {
        require(block.timestamp >= redeemTime, "unredeemable");
        require(balanceOf[msg.sender] >= amount, "not enough balance");

        uint256 totalApeX = IERC20(apeXToken).balanceOf(address(this));
        uint256 apeXAmount = amount.mulDiv(totalApeX, totalSupply);

        _burn(msg.sender, amount);
        TransferHelper.safeTransfer(apeXToken, msg.sender, apeXAmount);

        emit Redeem(msg.sender, amount, apeXAmount);
        return apeXAmount;
    }

    function transfer(address to, uint256 value) external override returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override returns (bool) {
        _spendAllowance(from, msg.sender, value);
        _transfer(from, to, value);
        return true;
    }

    function approve(address spender, uint256 value) external override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function _spendAllowance(
        address from,
        address spender,
        uint256 value
    ) internal virtual {
        uint256 currentAllowance = allowance[from][spender];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= value, "insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - value);
            }
        }
    }

    function _mint(address to, uint256 value) internal {
        require(to != address(0), "zero address");
        totalSupply = totalSupply + value;
        balanceOf[to] = balanceOf[to] + value;
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint256 value) internal {
        require(balanceOf[from] >= value, "balance of from < value");
        balanceOf[from] = balanceOf[from] - value;
        totalSupply = totalSupply - value;
        emit Transfer(from, address(0), value);
    }

    function _approve(
        address _owner,
        address spender,
        uint256 value
    ) private {
        allowance[_owner][spender] = value;
        emit Approval(_owner, spender, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) private {
        require(to != address(0), "can not tranfer to zero address");
        uint256 fromBalance = balanceOf[from];
        require(fromBalance >= value, "transfer amount exceeds balance");
        balanceOf[from] = fromBalance - value;
        balanceOf[to] = balanceOf[to] + value;
        emit Transfer(from, to, value);
    }
}

File 2 of 6 : IBanana.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

import "../../interfaces/IERC20.sol";

interface IBanana is IERC20 {
    event RedeemTimeChanged(uint256 oldRedeemTime, uint256 newRedeemTime);
    event Redeem(address indexed user, uint256 burntAmount, uint256 apeXAmount);

    function apeXToken() external view returns (address);
    function redeemTime() external view returns (uint256);

    function mint(address to, uint256 apeXAmount) external returns (uint256);
    function burn(uint256 amount) external returns (bool);
    function burnFrom(address from, uint256 amount) external returns (bool);
    function redeem(uint256 amount) external returns (uint256);
}

File 3 of 6 : Ownable.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

abstract contract Ownable {
    address public owner;
    address public pendingOwner;

    event NewOwner(address indexed oldOwner, address indexed newOwner);
    event NewPendingOwner(address indexed oldPendingOwner, address indexed newPendingOwner);

    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: REQUIRE_OWNER");
        _;
    }

    function setPendingOwner(address newPendingOwner) external onlyOwner {
        require(pendingOwner != newPendingOwner, "Ownable: ALREADY_SET");
        emit NewPendingOwner(pendingOwner, newPendingOwner);
        pendingOwner = newPendingOwner;
    }

    function acceptOwner() external {
        require(msg.sender == pendingOwner, "Ownable: REQUIRE_PENDING_OWNER");
        address oldOwner = owner;
        address oldPendingOwner = pendingOwner;
        owner = pendingOwner;
        pendingOwner = address(0);
        emit NewOwner(oldOwner, owner);
        emit NewPendingOwner(oldPendingOwner, pendingOwner);
    }
}

File 4 of 6 : TransferHelper.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper::safeApprove: approve failed"
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper::safeTransfer: transfer failed"
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper::transferFrom: transferFrom failed"
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, "TransferHelper::safeTransferETH: ETH transfer failed");
    }
}

File 5 of 6 : FullMath.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/// @title Contains 512-bit math functions
/// @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision
/// @dev Handles "phantom overflow" i.e., allows multiplication and division where an intermediate value overflows 256 bits
library FullMath {
    /// @notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
    /// @param a The multiplicand
    /// @param b The multiplier
    /// @param denominator The divisor
    /// @return result The 256-bit result
    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv
    function mulDiv(
        uint256 a,
        uint256 b,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        // 512-bit multiply [prod1 prod0] = a * b
        // Compute the product mod 2**256 and mod 2**256 - 1
        // then use the Chinese Remainder Theorem to reconstruct
        // the 512 bit result. The result is stored in two 256
        // variables such that product = prod1 * 2**256 + prod0
        uint256 prod0; // Least significant 256 bits of the product
        uint256 prod1; // Most significant 256 bits of the product

        // todo unchecked
        unchecked {
            assembly {
                let mm := mulmod(a, b, not(0))
                prod0 := mul(a, b)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            // Handle non-overflow cases, 256 by 256 division
            if (prod1 == 0) {
                require(denominator > 0);
                assembly {
                    result := div(prod0, denominator)
                }
                return result;
            }

            // Make sure the result is less than 2**256.
            // Also prevents denominator == 0
            require(denominator > prod1);

            ///////////////////////////////////////////////
            // 512 by 256 division.
            ///////////////////////////////////////////////

            // Make division exact by subtracting the remainder from [prod1 prod0]
            // Compute remainder using mulmod
            uint256 remainder;
            assembly {
                remainder := mulmod(a, b, denominator)
            }
            // Subtract 256 bit number from 512 bit number
            assembly {
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            // Factor powers of two out of denominator
            // Compute largest power of two divisor of denominator.
            // Always >= 1.
            uint256 twos = (~denominator + 1) & denominator;
            // Divide denominator by power of two
            assembly {
                denominator := div(denominator, twos)
            }

            // Divide [prod1 prod0] by the factors of two
            assembly {
                prod0 := div(prod0, twos)
            }
            // Shift in bits from prod1 into prod0. For this we need
            // to flip `twos` such that it is 2**256 / twos.
            // If twos is zero, then it becomes one
            assembly {
                twos := add(div(sub(0, twos), twos), 1)
            }

            prod0 |= prod1 * twos;

            // Invert denominator mod 2**256
            // Now that denominator is an odd number, it has an inverse
            // modulo 2**256 such that denominator * inv = 1 mod 2**256.
            // Compute the inverse by starting with a seed that is correct
            // correct for four bits. That is, denominator * inv = 1 mod 2**4
            uint256 inv = (3 * denominator) ^ 2;
            // Now use Newton-Raphson iteration to improve the precision.
            // Thanks to Hensel's lifting lemma, this also works in modular
            // arithmetic, doubling the correct bits in each step.

            inv *= 2 - denominator * inv; // inverse mod 2**8
            inv *= 2 - denominator * inv; // inverse mod 2**16
            inv *= 2 - denominator * inv; // inverse mod 2**32
            inv *= 2 - denominator * inv; // inverse mod 2**64
            inv *= 2 - denominator * inv; // inverse mod 2**128
            inv *= 2 - denominator * inv; // inverse mod 2**256

            // Because the division is now exact we can divide by multiplying
            // with the modular inverse of denominator. This will give us the
            // correct result modulo 2**256. Since the precoditions guarantee
            // that the outcome is less than 2**256, this is the final result.
            // We don't need to compute the high bits of the result and prod1
            // is no longer required.
            result = prod0 * inv;
            return result;
        }
    }

    /// @notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
    /// @param a The multiplicand
    /// @param b The multiplier
    /// @param denominator The divisor
    /// @return result The 256-bit result
    function mulDivRoundingUp(
        uint256 a,
        uint256 b,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        result = mulDiv(a, b, denominator);
        if (mulmod(a, b, denominator) > 0) {
            require(result < type(uint256).max);
            result++;
        }
    }
}

File 6 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external pure returns (uint8);
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"apeXToken_","type":"address"},{"internalType":"uint256","name":"redeemTime_","type":"uint256"}],"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":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldPendingOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newPendingOwner","type":"address"}],"name":"NewPendingOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"burntAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"apeXAmount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldRedeemTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRedeemTime","type":"uint256"}],"name":"RedeemTimeChanged","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":"acceptOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apeXToken","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"apeXAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redeemTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingOwner","type":"address"}],"name":"setPendingOwner","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":[{"internalType":"uint256","name":"redeemTime_","type":"uint256"}],"name":"updateRedeemTime","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405162002b2638038062002b26833981810160405281019062000037919062000143565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050806002819055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620001f6565b6000815190506200012681620001c2565b92915050565b6000815190506200013d81620001dc565b92915050565b600080604083850312156200015757600080fd5b6000620001678582860162000115565b92505060206200017a858286016200012c565b9150509250929050565b6000620001918262000198565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620001cd8162000184565b8114620001d957600080fd5b50565b620001e781620001b8565b8114620001f357600080fd5b50565b60805160601c6128f562000231600039600081816106de015281816107c70152818161099901528181610d930152610e6601526128f56000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c42069ec1161007c578063c42069ec146103c8578063db006a75146103e4578063dd62ed3e14610414578063e30c397814610444578063ebbc496514610462578063f46eccc41461046c5761014d565b80638da5cb5b1461030657806395d89b4114610324578063983b2d56146103425780639d67a4a31461035e578063a83cd9481461037c578063a9059cbb146103985761014d565b80633092afd5116101155780633092afd51461020c578063313ce5671461022857806340c10f191461024657806342966c681461027657806370a08231146102a657806379cc6790146102d65761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be5780632584c889146101ee575b600080fd5b61015a61049c565b6040516101679190612188565b60405180910390f35b61018a60048036038101906101859190611d71565b6104d5565b604051610197919061216d565b60405180910390f35b6101a86104ec565b6040516101b5919061238a565b60405180910390f35b6101d860048036038101906101d39190611d22565b6104f2565b6040516101e5919061216d565b60405180910390f35b6101f6610515565b604051610203919061238a565b60405180910390f35b61022660048036038101906102219190611cbd565b61051b565b005b610230610604565b60405161023d91906123ce565b60405180910390f35b610260600480360381019061025b9190611d71565b610609565b60405161026d919061238a565b60405180910390f35b610290600480360381019061028b9190611dd6565b610803565b60405161029d919061216d565b60405180910390f35b6102c060048036038101906102bb9190611cbd565b610818565b6040516102cd919061238a565b60405180910390f35b6102f060048036038101906102eb9190611d71565b610830565b6040516102fd919061216d565b60405180910390f35b61030e610851565b60405161031b91906120f2565b60405180910390f35b61032c610875565b6040516103399190612188565b60405180910390f35b61035c60048036038101906103579190611cbd565b6108ae565b005b610366610997565b60405161037391906120f2565b60405180910390f35b61039660048036038101906103919190611dd6565b6109bb565b005b6103b260048036038101906103ad9190611d71565b610ad0565b6040516103bf919061216d565b60405180910390f35b6103e260048036038101906103dd9190611cbd565b610ae7565b005b6103fe60048036038101906103f99190611dd6565b610cc6565b60405161040b919061238a565b60405180910390f35b61042e60048036038101906104299190611ce6565b610ee6565b60405161043b919061238a565b60405180910390f35b61044c610f0b565b60405161045991906120f2565b60405180910390f35b61046a610f31565b005b61048660048036038101906104819190611cbd565b6111ac565b604051610493919061216d565b60405180910390f35b6040518060400160405280600681526020017f42616e616e61000000000000000000000000000000000000000000000000000081525081565b60006104e23384846111cc565b6001905092915050565b60035481565b60006104ff8433846112b7565b61050a8484846113d6565b600190509392505050565b60025481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a09061236a565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601281565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068e9061220a565b60405180910390fd5b600082116106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d1906121ea565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161073591906120f2565b60206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190611dff565b905060008060035414156107a8576103e8846107a19190612471565b90506107c2565b6107bf60035483866116159092919063ffffffff16565b90505b6107ee7f00000000000000000000000000000000000000000000000000000000000000003330876116f0565b6107f88582611829565b809250505092915050565b600061080f33836119a5565b60019050919050565b60046020528060005260406000206000915090505481565b600061083d8333846112b7565b61084783836119a5565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600681526020017f42414e414e41000000000000000000000000000000000000000000000000000081525081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109339061236a565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a409061236a565b60405180910390fd5b428111610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a82906122ea565b60405180910390fd5b7f254bd895d833f8d606c5389abbdcd8e784b1558dd277cbaf03f1b5e18b82934b60025482604051610abe9291906123a5565b60405180910390a18060028190555050565b6000610add3384846113d6565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c9061236a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd906122aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254421015610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d04906121aa565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d869061228a565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dea91906120f2565b60206040518083038186803b158015610e0257600080fd5b505afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611dff565b90506000610e5582600354866116159092919063ffffffff16565b9050610e6133856119a5565b610e8c7f00000000000000000000000000000000000000000000000000000000000000003383611b33565b3373ffffffffffffffffffffffffffffffffffffffff167fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9298583604051610ed49291906123a5565b60405180910390a28092505050919050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb8906122ca565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b236460405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b60405160405180910390a35050565b60066020528060005260406000206000915054906101000a900460ff1681565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112aa919061238a565b60405180910390a3505050565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113d057818110156113a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611399906121ca565b60405180910390fd5b6113cf60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848484036111cc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d9061222a565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c49061226a565b60405180910390fd5b81816114d991906124cb565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611567919061241b565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611607919061238a565b60405180910390a350505050565b600080600080198587098587029250828110838203039150506000811415611650576000841161164457600080fd5b838204925050506116e9565b80841161165c57600080fd5b60008486880990508281118203915080830392506000856001871901169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016117249392919061210d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161177291906120db565b6000604051808303816000865af19150503d80600081146117af576040519150601f19603f3d011682016040523d82523d6000602084013e6117b4565b606091505b50915091508180156117e257506000815114806117e15750808060200190518101906117e09190611dad565b5b5b611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061224a565b60405180910390fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061230a565b60405180910390fd5b806003546118a7919061241b565b60038190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118f8919061241b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611999919061238a565b60405180910390a35050565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e9061232a565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7291906124cb565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600354611ac391906124cb565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b27919061238a565b60405180910390a35050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611b65929190612144565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611bb391906120db565b6000604051808303816000865af19150503d8060008114611bf0576040519150601f19603f3d011682016040523d82523d6000602084013e611bf5565b606091505b5091509150818015611c235750600081511480611c22575080806020019051810190611c219190611dad565b5b5b611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c599061234a565b60405180910390fd5b5050505050565b600081359050611c788161287a565b92915050565b600081519050611c8d81612891565b92915050565b600081359050611ca2816128a8565b92915050565b600081519050611cb7816128a8565b92915050565b600060208284031215611ccf57600080fd5b6000611cdd84828501611c69565b91505092915050565b60008060408385031215611cf957600080fd5b6000611d0785828601611c69565b9250506020611d1885828601611c69565b9150509250929050565b600080600060608486031215611d3757600080fd5b6000611d4586828701611c69565b9350506020611d5686828701611c69565b9250506040611d6786828701611c93565b9150509250925092565b60008060408385031215611d8457600080fd5b6000611d9285828601611c69565b9250506020611da385828601611c93565b9150509250929050565b600060208284031215611dbf57600080fd5b6000611dcd84828501611c7e565b91505092915050565b600060208284031215611de857600080fd5b6000611df684828501611c93565b91505092915050565b600060208284031215611e1157600080fd5b6000611e1f84828501611ca8565b91505092915050565b611e31816124ff565b82525050565b611e4081612511565b82525050565b6000611e51826123e9565b611e5b81856123ff565b9350611e6b818560208601612554565b80840191505092915050565b6000611e82826123f4565b611e8c818561240a565b9350611e9c818560208601612554565b611ea5816125b6565b840191505092915050565b6000611ebd600c8361240a565b9150611ec8826125c7565b602082019050919050565b6000611ee060168361240a565b9150611eeb826125f0565b602082019050919050565b6000611f03600b8361240a565b9150611f0e82612619565b602082019050919050565b6000611f2660098361240a565b9150611f3182612642565b602082019050919050565b6000611f49601f8361240a565b9150611f548261266b565b602082019050919050565b6000611f6c60318361240a565b9150611f7782612694565b604082019050919050565b6000611f8f601f8361240a565b9150611f9a826126e3565b602082019050919050565b6000611fb260128361240a565b9150611fbd8261270c565b602082019050919050565b6000611fd560148361240a565b9150611fe082612735565b602082019050919050565b6000611ff8601e8361240a565b91506120038261275e565b602082019050919050565b600061201b60168361240a565b915061202682612787565b602082019050919050565b600061203e600c8361240a565b9150612049826127b0565b602082019050919050565b600061206160178361240a565b915061206c826127d9565b602082019050919050565b6000612084602d8361240a565b915061208f82612802565b604082019050919050565b60006120a760168361240a565b91506120b282612851565b602082019050919050565b6120c68161253d565b82525050565b6120d581612547565b82525050565b60006120e78284611e46565b915081905092915050565b60006020820190506121076000830184611e28565b92915050565b60006060820190506121226000830186611e28565b61212f6020830185611e28565b61213c60408301846120bd565b949350505050565b60006040820190506121596000830185611e28565b61216660208301846120bd565b9392505050565b60006020820190506121826000830184611e37565b92915050565b600060208201905081810360008301526121a28184611e77565b905092915050565b600060208201905081810360008301526121c381611eb0565b9050919050565b600060208201905081810360008301526121e381611ed3565b9050919050565b6000602082019050818103600083015261220381611ef6565b9050919050565b6000602082019050818103600083015261222381611f19565b9050919050565b6000602082019050818103600083015261224381611f3c565b9050919050565b6000602082019050818103600083015261226381611f5f565b9050919050565b6000602082019050818103600083015261228381611f82565b9050919050565b600060208201905081810360008301526122a381611fa5565b9050919050565b600060208201905081810360008301526122c381611fc8565b9050919050565b600060208201905081810360008301526122e381611feb565b9050919050565b600060208201905081810360008301526123038161200e565b9050919050565b6000602082019050818103600083015261232381612031565b9050919050565b6000602082019050818103600083015261234381612054565b9050919050565b6000602082019050818103600083015261236381612077565b9050919050565b600060208201905081810360008301526123838161209a565b9050919050565b600060208201905061239f60008301846120bd565b92915050565b60006040820190506123ba60008301856120bd565b6123c760208301846120bd565b9392505050565b60006020820190506123e360008301846120cc565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006124268261253d565b91506124318361253d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561246657612465612587565b5b828201905092915050565b600061247c8261253d565b91506124878361253d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124c0576124bf612587565b5b828202905092915050565b60006124d68261253d565b91506124e18361253d565b9250828210156124f4576124f3612587565b5b828203905092915050565b600061250a8261251d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612572578082015181840152602081019050612557565b83811115612581576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b7f756e72656465656d61626c650000000000000000000000000000000000000000600082015250565b7f696e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f7a65726f20616d6f756e74000000000000000000000000000000000000000000600082015250565b7f666f7262696464656e0000000000000000000000000000000000000000000000600082015250565b7f63616e206e6f74207472616e66657220746f207a65726f206164647265737300600082015250565b7f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260008201527f616e7366657246726f6d206661696c6564000000000000000000000000000000602082015250565b7f7472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b7f6e6f7420656e6f7567682062616c616e63650000000000000000000000000000600082015250565b7f4f776e61626c653a20414c52454144595f534554000000000000000000000000600082015250565b7f4f776e61626c653a20524551554952455f50454e44494e475f4f574e45520000600082015250565b7f6e656564206f7665722063757272656e742074696d6500000000000000000000600082015250565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b7f62616c616e6365206f662066726f6d203c2076616c7565000000000000000000600082015250565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260008201527f616e73666572206661696c656400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a20524551554952455f4f574e455200000000000000000000600082015250565b612883816124ff565b811461288e57600080fd5b50565b61289a81612511565b81146128a557600080fd5b50565b6128b18161253d565b81146128bc57600080fd5b5056fea26469706673582212202dc9216c18f209e3a8838b5c0c62f54fb436a09e4497fb8ffc12f1961231856964736f6c6343000804003300000000000000000000000052a8845df664d76c69d2eea607cd793565af42b80000000000000000000000000000000000000000000000000000000067965c00

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c42069ec1161007c578063c42069ec146103c8578063db006a75146103e4578063dd62ed3e14610414578063e30c397814610444578063ebbc496514610462578063f46eccc41461046c5761014d565b80638da5cb5b1461030657806395d89b4114610324578063983b2d56146103425780639d67a4a31461035e578063a83cd9481461037c578063a9059cbb146103985761014d565b80633092afd5116101155780633092afd51461020c578063313ce5671461022857806340c10f191461024657806342966c681461027657806370a08231146102a657806379cc6790146102d65761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be5780632584c889146101ee575b600080fd5b61015a61049c565b6040516101679190612188565b60405180910390f35b61018a60048036038101906101859190611d71565b6104d5565b604051610197919061216d565b60405180910390f35b6101a86104ec565b6040516101b5919061238a565b60405180910390f35b6101d860048036038101906101d39190611d22565b6104f2565b6040516101e5919061216d565b60405180910390f35b6101f6610515565b604051610203919061238a565b60405180910390f35b61022660048036038101906102219190611cbd565b61051b565b005b610230610604565b60405161023d91906123ce565b60405180910390f35b610260600480360381019061025b9190611d71565b610609565b60405161026d919061238a565b60405180910390f35b610290600480360381019061028b9190611dd6565b610803565b60405161029d919061216d565b60405180910390f35b6102c060048036038101906102bb9190611cbd565b610818565b6040516102cd919061238a565b60405180910390f35b6102f060048036038101906102eb9190611d71565b610830565b6040516102fd919061216d565b60405180910390f35b61030e610851565b60405161031b91906120f2565b60405180910390f35b61032c610875565b6040516103399190612188565b60405180910390f35b61035c60048036038101906103579190611cbd565b6108ae565b005b610366610997565b60405161037391906120f2565b60405180910390f35b61039660048036038101906103919190611dd6565b6109bb565b005b6103b260048036038101906103ad9190611d71565b610ad0565b6040516103bf919061216d565b60405180910390f35b6103e260048036038101906103dd9190611cbd565b610ae7565b005b6103fe60048036038101906103f99190611dd6565b610cc6565b60405161040b919061238a565b60405180910390f35b61042e60048036038101906104299190611ce6565b610ee6565b60405161043b919061238a565b60405180910390f35b61044c610f0b565b60405161045991906120f2565b60405180910390f35b61046a610f31565b005b61048660048036038101906104819190611cbd565b6111ac565b604051610493919061216d565b60405180910390f35b6040518060400160405280600681526020017f42616e616e61000000000000000000000000000000000000000000000000000081525081565b60006104e23384846111cc565b6001905092915050565b60035481565b60006104ff8433846112b7565b61050a8484846113d6565b600190509392505050565b60025481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a09061236a565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601281565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068e9061220a565b60405180910390fd5b600082116106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d1906121ea565b60405180910390fd5b60007f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161073591906120f2565b60206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190611dff565b905060008060035414156107a8576103e8846107a19190612471565b90506107c2565b6107bf60035483866116159092919063ffffffff16565b90505b6107ee7f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b83330876116f0565b6107f88582611829565b809250505092915050565b600061080f33836119a5565b60019050919050565b60046020528060005260406000206000915090505481565b600061083d8333846112b7565b61084783836119a5565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600681526020017f42414e414e41000000000000000000000000000000000000000000000000000081525081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109339061236a565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b881565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a409061236a565b60405180910390fd5b428111610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a82906122ea565b60405180910390fd5b7f254bd895d833f8d606c5389abbdcd8e784b1558dd277cbaf03f1b5e18b82934b60025482604051610abe9291906123a5565b60405180910390a18060028190555050565b6000610add3384846113d6565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c9061236a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd906122aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254421015610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d04906121aa565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d869061228a565b60405180910390fd5b60007f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dea91906120f2565b60206040518083038186803b158015610e0257600080fd5b505afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611dff565b90506000610e5582600354866116159092919063ffffffff16565b9050610e6133856119a5565b610e8c7f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b83383611b33565b3373ffffffffffffffffffffffffffffffffffffffff167fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9298583604051610ed49291906123a5565b60405180910390a28092505050919050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb8906122ca565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b236460405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b60405160405180910390a35050565b60066020528060005260406000206000915054906101000a900460ff1681565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112aa919061238a565b60405180910390a3505050565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113d057818110156113a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611399906121ca565b60405180910390fd5b6113cf60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848484036111cc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d9061222a565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c49061226a565b60405180910390fd5b81816114d991906124cb565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611567919061241b565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611607919061238a565b60405180910390a350505050565b600080600080198587098587029250828110838203039150506000811415611650576000841161164457600080fd5b838204925050506116e9565b80841161165c57600080fd5b60008486880990508281118203915080830392506000856001871901169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016117249392919061210d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161177291906120db565b6000604051808303816000865af19150503d80600081146117af576040519150601f19603f3d011682016040523d82523d6000602084013e6117b4565b606091505b50915091508180156117e257506000815114806117e15750808060200190518101906117e09190611dad565b5b5b611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061224a565b60405180910390fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061230a565b60405180910390fd5b806003546118a7919061241b565b60038190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118f8919061241b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611999919061238a565b60405180910390a35050565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e9061232a565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7291906124cb565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600354611ac391906124cb565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b27919061238a565b60405180910390a35050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611b65929190612144565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611bb391906120db565b6000604051808303816000865af19150503d8060008114611bf0576040519150601f19603f3d011682016040523d82523d6000602084013e611bf5565b606091505b5091509150818015611c235750600081511480611c22575080806020019051810190611c219190611dad565b5b5b611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c599061234a565b60405180910390fd5b5050505050565b600081359050611c788161287a565b92915050565b600081519050611c8d81612891565b92915050565b600081359050611ca2816128a8565b92915050565b600081519050611cb7816128a8565b92915050565b600060208284031215611ccf57600080fd5b6000611cdd84828501611c69565b91505092915050565b60008060408385031215611cf957600080fd5b6000611d0785828601611c69565b9250506020611d1885828601611c69565b9150509250929050565b600080600060608486031215611d3757600080fd5b6000611d4586828701611c69565b9350506020611d5686828701611c69565b9250506040611d6786828701611c93565b9150509250925092565b60008060408385031215611d8457600080fd5b6000611d9285828601611c69565b9250506020611da385828601611c93565b9150509250929050565b600060208284031215611dbf57600080fd5b6000611dcd84828501611c7e565b91505092915050565b600060208284031215611de857600080fd5b6000611df684828501611c93565b91505092915050565b600060208284031215611e1157600080fd5b6000611e1f84828501611ca8565b91505092915050565b611e31816124ff565b82525050565b611e4081612511565b82525050565b6000611e51826123e9565b611e5b81856123ff565b9350611e6b818560208601612554565b80840191505092915050565b6000611e82826123f4565b611e8c818561240a565b9350611e9c818560208601612554565b611ea5816125b6565b840191505092915050565b6000611ebd600c8361240a565b9150611ec8826125c7565b602082019050919050565b6000611ee060168361240a565b9150611eeb826125f0565b602082019050919050565b6000611f03600b8361240a565b9150611f0e82612619565b602082019050919050565b6000611f2660098361240a565b9150611f3182612642565b602082019050919050565b6000611f49601f8361240a565b9150611f548261266b565b602082019050919050565b6000611f6c60318361240a565b9150611f7782612694565b604082019050919050565b6000611f8f601f8361240a565b9150611f9a826126e3565b602082019050919050565b6000611fb260128361240a565b9150611fbd8261270c565b602082019050919050565b6000611fd560148361240a565b9150611fe082612735565b602082019050919050565b6000611ff8601e8361240a565b91506120038261275e565b602082019050919050565b600061201b60168361240a565b915061202682612787565b602082019050919050565b600061203e600c8361240a565b9150612049826127b0565b602082019050919050565b600061206160178361240a565b915061206c826127d9565b602082019050919050565b6000612084602d8361240a565b915061208f82612802565b604082019050919050565b60006120a760168361240a565b91506120b282612851565b602082019050919050565b6120c68161253d565b82525050565b6120d581612547565b82525050565b60006120e78284611e46565b915081905092915050565b60006020820190506121076000830184611e28565b92915050565b60006060820190506121226000830186611e28565b61212f6020830185611e28565b61213c60408301846120bd565b949350505050565b60006040820190506121596000830185611e28565b61216660208301846120bd565b9392505050565b60006020820190506121826000830184611e37565b92915050565b600060208201905081810360008301526121a28184611e77565b905092915050565b600060208201905081810360008301526121c381611eb0565b9050919050565b600060208201905081810360008301526121e381611ed3565b9050919050565b6000602082019050818103600083015261220381611ef6565b9050919050565b6000602082019050818103600083015261222381611f19565b9050919050565b6000602082019050818103600083015261224381611f3c565b9050919050565b6000602082019050818103600083015261226381611f5f565b9050919050565b6000602082019050818103600083015261228381611f82565b9050919050565b600060208201905081810360008301526122a381611fa5565b9050919050565b600060208201905081810360008301526122c381611fc8565b9050919050565b600060208201905081810360008301526122e381611feb565b9050919050565b600060208201905081810360008301526123038161200e565b9050919050565b6000602082019050818103600083015261232381612031565b9050919050565b6000602082019050818103600083015261234381612054565b9050919050565b6000602082019050818103600083015261236381612077565b9050919050565b600060208201905081810360008301526123838161209a565b9050919050565b600060208201905061239f60008301846120bd565b92915050565b60006040820190506123ba60008301856120bd565b6123c760208301846120bd565b9392505050565b60006020820190506123e360008301846120cc565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006124268261253d565b91506124318361253d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561246657612465612587565b5b828201905092915050565b600061247c8261253d565b91506124878361253d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124c0576124bf612587565b5b828202905092915050565b60006124d68261253d565b91506124e18361253d565b9250828210156124f4576124f3612587565b5b828203905092915050565b600061250a8261251d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612572578082015181840152602081019050612557565b83811115612581576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b7f756e72656465656d61626c650000000000000000000000000000000000000000600082015250565b7f696e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f7a65726f20616d6f756e74000000000000000000000000000000000000000000600082015250565b7f666f7262696464656e0000000000000000000000000000000000000000000000600082015250565b7f63616e206e6f74207472616e66657220746f207a65726f206164647265737300600082015250565b7f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260008201527f616e7366657246726f6d206661696c6564000000000000000000000000000000602082015250565b7f7472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b7f6e6f7420656e6f7567682062616c616e63650000000000000000000000000000600082015250565b7f4f776e61626c653a20414c52454144595f534554000000000000000000000000600082015250565b7f4f776e61626c653a20524551554952455f50454e44494e475f4f574e45520000600082015250565b7f6e656564206f7665722063757272656e742074696d6500000000000000000000600082015250565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b7f62616c616e6365206f662066726f6d203c2076616c7565000000000000000000600082015250565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260008201527f616e73666572206661696c656400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a20524551554952455f4f574e455200000000000000000000600082015250565b612883816124ff565b811461288e57600080fd5b50565b61289a81612511565b81146128a557600080fd5b50565b6128b18161253d565b81146128bc57600080fd5b5056fea26469706673582212202dc9216c18f209e3a8838b5c0c62f54fb436a09e4497fb8ffc12f1961231856964736f6c63430008040033

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

00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b80000000000000000000000000000000000000000000000000000000067965c00

-----Decoded View---------------
Arg [0] : apeXToken_ (address): 0x52A8845DF664D76C69d2EEa607CD793565aF42B8
Arg [1] : redeemTime_ (uint256): 1737907200

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b8
Arg [1] : 0000000000000000000000000000000000000000000000000000000067965c00


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.