ETH Price: $2,216.56 (-0.78%)
 

Overview

ETH Balance

0.10027360733482443 ETH

ETH Value

$222.26 (@ $2,216.56/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Execute Buyback436574812026-03-21 14:45:0921 days ago1774104309IN
0x9D052e3d...6547A1CA5
0 ETH0.00000080.00526
Set Pool Key436574662026-03-21 14:44:3921 days ago1774104279IN
0x9D052e3d...6547A1CA5
0 ETH0.000000190.00526
Execute Buyback432358982026-03-11 20:32:2331 days ago1773261143IN
0x9D052e3d...6547A1CA5
0 ETH0.000001070.006
Execute Buyback427091382026-02-27 15:53:4343 days ago1772207623IN
0x9D052e3d...6547A1CA5
0 ETH0.000004070.02014547
Set Pool Key427091292026-02-27 15:53:2543 days ago1772207605IN
0x9D052e3d...6547A1CA5
0 ETH0.000001470.01967162
Execute Buyback427090732026-02-27 15:51:3343 days ago1772207493IN
0x9D052e3d...6547A1CA5
0 ETH0.000000350.01377222
Set Min Buyback ...427090642026-02-27 15:51:1543 days ago1772207475IN
0x9D052e3d...6547A1CA5
0 ETH0.000000350.01385767

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
445625612026-04-11 13:34:2916 hrs ago1775914469
0x9D052e3d...6547A1CA5
0.00128645 ETH
445542212026-04-11 8:56:2920 hrs ago1775897789
0x9D052e3d...6547A1CA5
0.00094526 ETH
445466912026-04-11 4:45:2924 hrs ago1775882729
0x9D052e3d...6547A1CA5
0.00118937 ETH
445405412026-04-11 1:20:2928 hrs ago1775870429
0x9D052e3d...6547A1CA5
0.00110153 ETH
445342712026-04-10 21:51:2931 hrs ago1775857889
0x9D052e3d...6547A1CA5
0.00061224 ETH
445341812026-04-10 21:48:2931 hrs ago1775857709
0x9D052e3d...6547A1CA5
0.00012148 ETH
445270712026-04-10 17:51:2935 hrs ago1775843489
0x9D052e3d...6547A1CA5
0.00029187 ETH
445269812026-04-10 17:48:2935 hrs ago1775843309
0x9D052e3d...6547A1CA5
0.00105177 ETH
445193912026-04-10 13:35:2940 hrs ago1775828129
0x9D052e3d...6547A1CA5
0.00006379 ETH
445193312026-04-10 13:33:2940 hrs ago1775828009
0x9D052e3d...6547A1CA5
0.00133166 ETH
445126112026-04-10 9:49:2943 hrs ago1775814569
0x9D052e3d...6547A1CA5
0.00032574 ETH
445125812026-04-10 9:48:2943 hrs ago1775814509
0x9D052e3d...6547A1CA5
0.00035441 ETH
445045712026-04-10 5:21:292 days ago1775798489
0x9D052e3d...6547A1CA5
0.00063287 ETH
445045412026-04-10 5:20:292 days ago1775798429
0x9D052e3d...6547A1CA5
0.00011101 ETH
444964702026-04-10 0:51:272 days ago1775782287
0x9D052e3d...6547A1CA5
0.00044521 ETH
444964402026-04-10 0:50:272 days ago1775782227
0x9D052e3d...6547A1CA5
0.00079459 ETH
444895042026-04-09 20:59:152 days ago1775768355
0x9D052e3d...6547A1CA5
0.00051451 ETH
444894442026-04-09 20:57:152 days ago1775768235
0x9D052e3d...6547A1CA5
0.00029097 ETH
444853102026-04-09 18:39:272 days ago1775759967
0x9D052e3d...6547A1CA5
0.00395079 ETH
444830242026-04-09 17:23:152 days ago1775755395
0x9D052e3d...6547A1CA5
0.00088613 ETH
444743742026-04-09 12:34:552 days ago1775738095
0x9D052e3d...6547A1CA5
0.00128118 ETH
444692132026-04-09 9:42:532 days ago1775727773
0x9D052e3d...6547A1CA5
0.00054983 ETH
444690942026-04-09 9:38:552 days ago1775727535
0x9D052e3d...6547A1CA5
0.00045724 ETH
444602122026-04-09 4:42:513 days ago1775709771
0x9D052e3d...6547A1CA5
0.00055615 ETH
444546012026-04-09 1:35:493 days ago1775698549
0x9D052e3d...6547A1CA5
0.00057737 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BuybackVault

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2026-02-27
*/

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.24;

// ============================================================================
// BuybackVault
// Accumulates ETH from sell fees and executes buyback-and-burn operations.
// No withdraw function - ETH can only exit via swap to PR then burn.
// ============================================================================

// Uniswap V4 Types
type Currency is address;

struct PoolKey {
    Currency currency0;
    Currency currency1;
    uint24 fee;
    int24 tickSpacing;
    address hooks;
}

type BalanceDelta is int256;

interface IPoolManager {
    struct SwapParams {
        bool zeroForOne;
        int256 amountSpecified;
        uint160 sqrtPriceLimitX96;
    }

    function swap(PoolKey calldata key, SwapParams calldata params, bytes calldata hookData)
        external returns (BalanceDelta);

    function take(Currency currency, address to, uint256 amount) external;
    function settle() external payable returns (uint256);
    function sync(Currency currency) external;
    function unlock(bytes calldata data) external returns (bytes memory);
}

interface IPrimerToken {
    function burn(uint256 amount) external;
    function balanceOf(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
}

interface IUnlockCallback {
    function unlockCallback(bytes calldata data) external returns (bytes memory);
}

/// @title BuybackVault
/// @notice Accumulates ETH from sells and executes buyback-and-burn operations
/// @dev No withdraw function - ETH can only exit via swap to PR then burn
contract BuybackVault is IUnlockCallback {

    // =========================================================================
    // CONSTANTS (Base Mainnet)
    // =========================================================================

    IPoolManager constant POOL_MANAGER = IPoolManager(0x498581fF718922c3f8e6A244956aF099B2652b2b);
    IPrimerToken constant PR_TOKEN = IPrimerToken(0x2357110F5F0c5344EEf75966500c75116A4aA153);
    Currency constant ETH_CURRENCY = Currency.wrap(address(0));

    // =========================================================================
    // MUTABLE CONFIGURATION (owner only)
    // =========================================================================

    address public owner;
    address public executor;

    PoolKey public poolKey;
    bool public prIsToken0;

    uint256 public minBuybackAmount = 0.01 ether;

    // =========================================================================
    // STATE
    // =========================================================================

    uint256 public totalBuybacks;
    uint256 public totalEthUsed;
    uint256 public totalPrBurned;

    // =========================================================================
    // EVENTS
    // =========================================================================

    event BuybackExecuted(
        address indexed caller,
        uint256 ethUsed,
        uint256 prBurned
    );
    event EthReceived(address indexed from, uint256 amount);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ExecutorUpdated(address indexed previousExecutor, address indexed newExecutor);
    event PoolKeyUpdated();
    event MinBuybackAmountUpdated(uint256 oldAmount, uint256 newAmount);

    // =========================================================================
    // ERRORS
    // =========================================================================

    error Unauthorized();
    error InsufficientBalance();
    error NotPoolManager();
    error ZeroAddress();
    error PoolKeyNotSet();

    // =========================================================================
    // MODIFIERS
    // =========================================================================

    modifier onlyOwner() {
        if (msg.sender != owner) revert Unauthorized();
        _;
    }

    modifier onlyOwnerOrExecutor() {
        if (msg.sender != owner && msg.sender != executor) revert Unauthorized();
        _;
    }

    // =========================================================================
    // CONSTRUCTOR
    // =========================================================================

    /// @notice Deploy the buyback vault
    constructor() {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    // =========================================================================
    // RECEIVE ETH
    // =========================================================================

    receive() external payable {
        emit EthReceived(msg.sender, msg.value);
    }

    // =========================================================================
    // BUYBACK EXECUTION
    // =========================================================================

    /// @notice Execute a buyback using all available ETH
    /// @return prBurned Amount of PR burned
    function executeBuyback() external onlyOwnerOrExecutor returns (uint256 prBurned) {
        if (poolKey.hooks == address(0)) revert PoolKeyNotSet();

        uint256 ethBalance = address(this).balance;
        if (ethBalance < minBuybackAmount) {
            revert InsufficientBalance();
        }

        POOL_MANAGER.unlock(abi.encode(ethBalance));

        uint256 prBalance = PR_TOKEN.balanceOf(address(this));
        if (prBalance > 0) {
            PR_TOKEN.burn(prBalance);
            prBurned = prBalance;
        }

        totalBuybacks++;
        totalEthUsed += ethBalance;
        totalPrBurned += prBurned;

        emit BuybackExecuted(msg.sender, ethBalance, prBurned);
        return prBurned;
    }

    /// @notice Execute a partial buyback with specific ETH amount
    /// @param ethAmount Amount of ETH to use
    /// @return prBurned Amount of PR burned
    function executeBuybackPartial(uint256 ethAmount) external onlyOwnerOrExecutor returns (uint256 prBurned) {
        if (poolKey.hooks == address(0)) revert PoolKeyNotSet();

        uint256 ethBalance = address(this).balance;
        if (ethAmount > ethBalance || ethAmount < minBuybackAmount) {
            revert InsufficientBalance();
        }

        POOL_MANAGER.unlock(abi.encode(ethAmount));

        uint256 prBalance = PR_TOKEN.balanceOf(address(this));
        if (prBalance > 0) {
            PR_TOKEN.burn(prBalance);
            prBurned = prBalance;
        }

        totalBuybacks++;
        totalEthUsed += ethAmount;
        totalPrBurned += prBurned;

        emit BuybackExecuted(msg.sender, ethAmount, prBurned);
        return prBurned;
    }

    /// @notice Callback from PoolManager.unlock()
    function unlockCallback(bytes calldata data) external override returns (bytes memory) {
        if (msg.sender != address(POOL_MANAGER)) revert NotPoolManager();

        uint256 ethAmount = abi.decode(data, (uint256));
        bool zeroForOne = !prIsToken0;

        IPoolManager.SwapParams memory swapParams = IPoolManager.SwapParams({
            zeroForOne: zeroForOne,
            amountSpecified: -int256(ethAmount), // Negative = exact input
            sqrtPriceLimitX96: zeroForOne
                ? 4295128740
                : 1461446703485210103287273052203988822378723970341
        });

        // 1. Execute swap (creates debt)
        BalanceDelta delta = POOL_MANAGER.swap(poolKey, swapParams, "");

        // 2. Settle ETH debt (pay what we owe)
        POOL_MANAGER.settle{value: ethAmount}();

        // 3. Take PR we're owed
        int128 prDelta = prIsToken0
            ? int128(int256(BalanceDelta.unwrap(delta)) >> 128)
            : int128(int256(BalanceDelta.unwrap(delta)));
        // V4 sign convention: positive = we receive tokens
        uint256 prReceived = prDelta > 0 ? uint256(uint128(prDelta)) : 0;

        if (prReceived > 0) {
            POOL_MANAGER.take(
                prIsToken0 ? poolKey.currency0 : poolKey.currency1,
                address(this),
                prReceived
            );
        }

        return abi.encode(prReceived);
    }

    // =========================================================================
    // ADMIN FUNCTIONS
    // =========================================================================

    /// @notice Set the executor address
    function setExecutor(address _executor) external onlyOwner {
        emit ExecutorUpdated(executor, _executor);
        executor = _executor;
    }

    /// @notice Update the pool key (call after pool is created)
    function setPoolKey(PoolKey memory _poolKey) external onlyOwner {
        poolKey = _poolKey;
        prIsToken0 = Currency.unwrap(_poolKey.currency0) == address(PR_TOKEN);
        emit PoolKeyUpdated();
    }

    /// @notice Update minimum buyback amount
    function setMinBuybackAmount(uint256 _amount) external onlyOwner {
        emit MinBuybackAmountUpdated(minBuybackAmount, _amount);
        minBuybackAmount = _amount;
    }

    /// @notice Transfer ownership
    function transferOwnership(address _newOwner) external onlyOwner {
        if (_newOwner == address(0)) revert ZeroAddress();
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }

    // =========================================================================
    // VIEW FUNCTIONS
    // =========================================================================

    /// @notice Get current ETH balance available for buyback
    function getBalance() external view returns (uint256) {
        return address(this).balance;
    }

    /// @notice Check if buyback can be executed
    function canExecute() external view returns (bool) {
        return address(this).balance >= minBuybackAmount && poolKey.hooks != address(0);
    }

    /// @notice Preview buyback parameters
    function previewBuyback() external view returns (
        uint256 ethAvailable,
        uint256 minRequired,
        bool canBuyback
    ) {
        ethAvailable = address(this).balance;
        minRequired = minBuybackAmount;
        canBuyback = ethAvailable >= minRequired && poolKey.hooks != address(0);
    }

    /// @notice Get vault statistics
    function getStats() external view returns (
        uint256 buybackCount,
        uint256 ethUsed,
        uint256 prBurned,
        uint256 currentBalance
    ) {
        return (totalBuybacks, totalEthUsed, totalPrBurned, address(this).balance);
    }

    /// @notice Get the pool key this vault uses for buybacks
    function getPoolKey() external view returns (PoolKey memory) {
        return poolKey;
    }

    /// @notice Check if an address can execute buybacks
    function canExecuteBuyback(address account) external view returns (bool) {
        return account == owner || account == executor;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"NotPoolManager","type":"error"},{"inputs":[],"name":"PoolKeyNotSet","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethUsed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prBurned","type":"uint256"}],"name":"BuybackExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousExecutor","type":"address"},{"indexed":true,"internalType":"address","name":"newExecutor","type":"address"}],"name":"ExecutorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MinBuybackAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"PoolKeyUpdated","type":"event"},{"inputs":[],"name":"canExecute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"canExecuteBuyback","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeBuyback","outputs":[{"internalType":"uint256","name":"prBurned","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"executeBuybackPartial","outputs":[{"internalType":"uint256","name":"prBurned","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolKey","outputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStats","outputs":[{"internalType":"uint256","name":"buybackCount","type":"uint256"},{"internalType":"uint256","name":"ethUsed","type":"uint256"},{"internalType":"uint256","name":"prBurned","type":"uint256"},{"internalType":"uint256","name":"currentBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuybackAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolKey","outputs":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prIsToken0","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previewBuyback","outputs":[{"internalType":"uint256","name":"ethAvailable","type":"uint256"},{"internalType":"uint256","name":"minRequired","type":"uint256"},{"internalType":"bool","name":"canBuyback","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_executor","type":"address"}],"name":"setExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinBuybackAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"_poolKey","type":"tuple"}],"name":"setPoolKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBuybacks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEthUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPrBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"unlockCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc1000060065534801561001a575f80fd5b505f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36113ba806100665f395ff3fe608060405260043610610129575f3560e01c806391dd7346116100a8578063c59d48471161006d578063c59d48471461048a578063cb371f83146104c0578063dde111b9146104d5578063f0ec98d7146104ea578063f19000aa14610509578063f2fde38b1461051e575f80fd5b806391dd7346146103f2578063a03b0df11461041e578063ad8940391461043d578063bbeb759514610456578063c34c08e51461046b575f80fd5b80635d97263c116100ee5780635d97263c14610270578063683e76e0146102a157806378b90337146103845780638da5cb5b146103a85780638e10e77a146103de575f80fd5b806312065fe01461016957806315bd70541461018a578063182148ef146101a95780631c3c0ea81461023057806354941a3514610251575f80fd5b366101655760405134815233907f85177f287940f2f05425a4029951af0e047a7f9c4eaa9a6e6917bcd869f866959060200160405180910390a2005b5f80fd5b348015610174575f80fd5b50475b6040519081526020015b60405180910390f35b348015610195575f80fd5b506101776101a4366004611018565b61053d565b3480156101b4575f80fd5b50600280546003546004546101f0936001600160a01b03938416938381169362ffffff600160a01b82041693600160b81b90910490920b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a001610181565b34801561023b575f80fd5b5061024f61024a366004611051565b6107d1565b005b34801561025c575f80fd5b5061024f61026b366004611018565b610855565b34801561027b575f80fd5b506102846108bf565b604080519384526020840192909252151590820152606001610181565b3480156102ac575f80fd5b506103316040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252600280546001600160a01b039081168352600354808216602085015262ffffff600160a01b82041694840194909452600160b81b909304900b6060820152600454909116608082015290565b604051610181919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b34801561038f575f80fd5b506103986108e6565b6040519015158152602001610181565b3480156103b3575f80fd5b505f546103c6906001600160a01b031681565b6040516001600160a01b039091168152602001610181565b3480156103e9575f80fd5b50610177610908565b3480156103fd575f80fd5b5061041161040c366004611073565b610b90565b6040516101819190611101565b348015610429575f80fd5b50610398610438366004611051565b610e42565b348015610448575f80fd5b506005546103989060ff1681565b348015610461575f80fd5b5061017760095481565b348015610476575f80fd5b506001546103c6906001600160a01b031681565b348015610495575f80fd5b5060075460085460095447604080519485526020850193909352918301526060820152608001610181565b3480156104cb575f80fd5b5061017760075481565b3480156104e0575f80fd5b5061017760085481565b3480156104f5575f80fd5b5061024f610504366004611147565b610e6e565b348015610514575f80fd5b5061017760065481565b348015610529575f80fd5b5061024f610538366004611051565b610f6f565b5f80546001600160a01b0316331480159061056357506001546001600160a01b03163314155b15610580576040516282b42960e81b815260040160405180910390fd5b6004546001600160a01b03166105a957604051633382f3a560e01b815260040160405180910390fd5b47808311806105b9575060065483105b156105d757604051631e9acf1760e31b815260040160405180910390fd5b604080516020810185905273498581ff718922c3f8e6a244956af099b2652b2b916348c8949191016040516020818303038152906040526040518263ffffffff1660e01b815260040161062a9190611101565b5f604051808303815f875af1158015610645573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261066c91908101906111e8565b506040516370a0823160e01b81523060048201525f90732357110f5f0c5344eef75966500c75116a4aa153906370a0823190602401602060405180830381865afa1580156106bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e09190611290565b9050801561074c57604051630852cd8d60e31b815260048101829052732357110f5f0c5344eef75966500c75116a4aa153906342966c68906024015f604051808303815f87803b158015610732575f80fd5b505af1158015610744573d5f803e3d5ffd5b505050508092505b60078054905f61075b836112bb565b91905055508360085f82825461077191906112d3565b925050819055508260095f82825461078991906112d3565b9091555050604080518581526020810185905233917fce6abc4aa99ab2d137d5f7e34bec0e883a186fd2d76b29f2e1c30afcc68d7336910160405180910390a250505b919050565b5f546001600160a01b031633146107fa576040516282b42960e81b815260040160405180910390fd5b6001546040516001600160a01b038084169216907f0ef3c7eb9dbcf33ddf032f4cce366a07eda85eed03e3172e4a90c4cc16d57886905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461087e576040516282b42960e81b815260040160405180910390fd5b60065460408051918252602082018390527f26e1a7263b9e45e83672290931e36ba6b6909bfb08be34ffc4af2765fb761628910160405180910390a1600655565b60065447905f8183108015906108df57506004546001600160a01b031615155b9050909192565b5f600654471015801561090357506004546001600160a01b031615155b905090565b5f80546001600160a01b0316331480159061092e57506001546001600160a01b03163314155b1561094b576040516282b42960e81b815260040160405180910390fd5b6004546001600160a01b031661097457604051633382f3a560e01b815260040160405180910390fd5b600654479081101561099957604051631e9acf1760e31b815260040160405180910390fd5b604080516020810183905273498581ff718922c3f8e6a244956af099b2652b2b916348c8949191016040516020818303038152906040526040518263ffffffff1660e01b81526004016109ec9190611101565b5f604051808303815f875af1158015610a07573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a2e91908101906111e8565b506040516370a0823160e01b81523060048201525f90732357110f5f0c5344eef75966500c75116a4aa153906370a0823190602401602060405180830381865afa158015610a7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa29190611290565b90508015610b0e57604051630852cd8d60e31b815260048101829052732357110f5f0c5344eef75966500c75116a4aa153906342966c68906024015f604051808303815f87803b158015610af4575f80fd5b505af1158015610b06573d5f803e3d5ffd5b505050508092505b60078054905f610b1d836112bb565b91905055508160085f828254610b3391906112d3565b925050819055508260095f828254610b4b91906112d3565b9091555050604080518381526020810185905233917fce6abc4aa99ab2d137d5f7e34bec0e883a186fd2d76b29f2e1c30afcc68d7336910160405180910390a2505090565b60603373498581ff718922c3f8e6a244956af099b2652b2b14610bc65760405163570c108560e11b815260040160405180910390fd5b5f610bd383850185611018565b600554604080516060810190915260ff909116158082529192505f9060208101610bfc856112e6565b815260200183610c205773fffd8963efd1fc6a506488495d951d5263988d25610c27565b6401000276a45b6001600160a01b03169052604051633cf3645360e21b81529091505f9073498581ff718922c3f8e6a244956af099b2652b2b9063f3cd914c90610c71906002908690600401611300565b6020604051808303815f875af1158015610c8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611290565b905073498581ff718922c3f8e6a244956af099b2652b2b6001600160a01b03166311da60b4856040518263ffffffff1660e01b815260040160206040518083038185885af1158015610d05573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d2a9190611290565b506005545f9060ff16610d3d5781610d43565b608082901d5b90505f8082600f0b13610d56575f610d6a565b816fffffffffffffffffffffffffffffffff165b90508015610e185760055473498581ff718922c3f8e6a244956af099b2652b2b90630b0d9c099060ff16610da9576003546001600160a01b0316610db6565b6002546001600160a01b03165b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064015f604051808303815f87803b158015610e01575f80fd5b505af1158015610e13573d5f803e3d5ffd5b505050505b60408051602081018390520160405160208183030381529060405296505050505050505b92915050565b5f80546001600160a01b0383811691161480610e3c5750506001546001600160a01b0390811691161490565b5f546001600160a01b03163314610e97576040516282b42960e81b815260040160405180910390fd5b8051600280546001600160a01b039283166001600160a01b03199182168117909255602084015160038054604080880151606089015162ffffff908116600160b81b0262ffffff60b81b1991909216600160a01b026001600160b81b0319909416958916959095179290921793909316179055608085015160048054919095169216919091179092556005805460ff1916732357110f5f0c5344eef75966500c75116a4aa153909214919091179055517fa2905f5ba755f74cd1bcfa456add3ecbd7109ec7aca7297516c18f5169c1842f905f90a150565b5f546001600160a01b03163314610f98576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116610fbf5760405163d92e233d60e01b815260040160405180910390fd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215611028575f80fd5b5035919050565b6001600160a01b0381168114611043575f80fd5b50565b80356107cc8161102f565b5f60208284031215611061575f80fd5b813561106c8161102f565b9392505050565b5f8060208385031215611084575f80fd5b823567ffffffffffffffff8082111561109b575f80fd5b818501915085601f8301126110ae575f80fd5b8135818111156110bc575f80fd5b8660208285010111156110cd575f80fd5b60209290920196919550909350505050565b5f5b838110156110f95781810151838201526020016110e1565b50505f910152565b602081525f825180602084015261111f8160408501602087016110df565b601f01601f19169190910160400192915050565b634e487b7160e01b5f52604160045260245ffd5b5f60a08284031215611157575f80fd5b60405160a0810181811067ffffffffffffffff8211171561117a5761117a611133565b60405282356111888161102f565b815260208301356111988161102f565b6020820152604083013562ffffff811681146111b2575f80fd5b60408201526060830135600281900b81146111cb575f80fd5b60608201526111dc60808401611046565b60808201529392505050565b5f602082840312156111f8575f80fd5b815167ffffffffffffffff8082111561120f575f80fd5b818401915084601f830112611222575f80fd5b81518181111561123457611234611133565b604051601f8201601f19908116603f0116810190838211818310171561125c5761125c611133565b81604052828152876020848701011115611274575f80fd5b6112858360208301602088016110df565b979650505050505050565b5f602082840312156112a0575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016112cc576112cc6112a7565b5060010190565b80820180821115610e3c57610e3c6112a7565b5f600160ff1b82016112fa576112fa6112a7565b505f0390565b5f61012060018060a01b038086541684526001860154818116602086015262ffffff8160a01c1660408601528060b81c60020b6060860152508060028701541660808501528451151560a0850152602085015160c08501528060408601511660e0850152508061010084015261137b8184015f815260200190565b9594505050505056fea26469706673582212209b430d87d91e28da944fff711dd04ec7b1d733db53a609713f6a772f4409192c64736f6c63430008180033

Deployed Bytecode

0x608060405260043610610129575f3560e01c806391dd7346116100a8578063c59d48471161006d578063c59d48471461048a578063cb371f83146104c0578063dde111b9146104d5578063f0ec98d7146104ea578063f19000aa14610509578063f2fde38b1461051e575f80fd5b806391dd7346146103f2578063a03b0df11461041e578063ad8940391461043d578063bbeb759514610456578063c34c08e51461046b575f80fd5b80635d97263c116100ee5780635d97263c14610270578063683e76e0146102a157806378b90337146103845780638da5cb5b146103a85780638e10e77a146103de575f80fd5b806312065fe01461016957806315bd70541461018a578063182148ef146101a95780631c3c0ea81461023057806354941a3514610251575f80fd5b366101655760405134815233907f85177f287940f2f05425a4029951af0e047a7f9c4eaa9a6e6917bcd869f866959060200160405180910390a2005b5f80fd5b348015610174575f80fd5b50475b6040519081526020015b60405180910390f35b348015610195575f80fd5b506101776101a4366004611018565b61053d565b3480156101b4575f80fd5b50600280546003546004546101f0936001600160a01b03938416938381169362ffffff600160a01b82041693600160b81b90910490920b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a001610181565b34801561023b575f80fd5b5061024f61024a366004611051565b6107d1565b005b34801561025c575f80fd5b5061024f61026b366004611018565b610855565b34801561027b575f80fd5b506102846108bf565b604080519384526020840192909252151590820152606001610181565b3480156102ac575f80fd5b506103316040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252600280546001600160a01b039081168352600354808216602085015262ffffff600160a01b82041694840194909452600160b81b909304900b6060820152600454909116608082015290565b604051610181919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b34801561038f575f80fd5b506103986108e6565b6040519015158152602001610181565b3480156103b3575f80fd5b505f546103c6906001600160a01b031681565b6040516001600160a01b039091168152602001610181565b3480156103e9575f80fd5b50610177610908565b3480156103fd575f80fd5b5061041161040c366004611073565b610b90565b6040516101819190611101565b348015610429575f80fd5b50610398610438366004611051565b610e42565b348015610448575f80fd5b506005546103989060ff1681565b348015610461575f80fd5b5061017760095481565b348015610476575f80fd5b506001546103c6906001600160a01b031681565b348015610495575f80fd5b5060075460085460095447604080519485526020850193909352918301526060820152608001610181565b3480156104cb575f80fd5b5061017760075481565b3480156104e0575f80fd5b5061017760085481565b3480156104f5575f80fd5b5061024f610504366004611147565b610e6e565b348015610514575f80fd5b5061017760065481565b348015610529575f80fd5b5061024f610538366004611051565b610f6f565b5f80546001600160a01b0316331480159061056357506001546001600160a01b03163314155b15610580576040516282b42960e81b815260040160405180910390fd5b6004546001600160a01b03166105a957604051633382f3a560e01b815260040160405180910390fd5b47808311806105b9575060065483105b156105d757604051631e9acf1760e31b815260040160405180910390fd5b604080516020810185905273498581ff718922c3f8e6a244956af099b2652b2b916348c8949191016040516020818303038152906040526040518263ffffffff1660e01b815260040161062a9190611101565b5f604051808303815f875af1158015610645573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261066c91908101906111e8565b506040516370a0823160e01b81523060048201525f90732357110f5f0c5344eef75966500c75116a4aa153906370a0823190602401602060405180830381865afa1580156106bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e09190611290565b9050801561074c57604051630852cd8d60e31b815260048101829052732357110f5f0c5344eef75966500c75116a4aa153906342966c68906024015f604051808303815f87803b158015610732575f80fd5b505af1158015610744573d5f803e3d5ffd5b505050508092505b60078054905f61075b836112bb565b91905055508360085f82825461077191906112d3565b925050819055508260095f82825461078991906112d3565b9091555050604080518581526020810185905233917fce6abc4aa99ab2d137d5f7e34bec0e883a186fd2d76b29f2e1c30afcc68d7336910160405180910390a250505b919050565b5f546001600160a01b031633146107fa576040516282b42960e81b815260040160405180910390fd5b6001546040516001600160a01b038084169216907f0ef3c7eb9dbcf33ddf032f4cce366a07eda85eed03e3172e4a90c4cc16d57886905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461087e576040516282b42960e81b815260040160405180910390fd5b60065460408051918252602082018390527f26e1a7263b9e45e83672290931e36ba6b6909bfb08be34ffc4af2765fb761628910160405180910390a1600655565b60065447905f8183108015906108df57506004546001600160a01b031615155b9050909192565b5f600654471015801561090357506004546001600160a01b031615155b905090565b5f80546001600160a01b0316331480159061092e57506001546001600160a01b03163314155b1561094b576040516282b42960e81b815260040160405180910390fd5b6004546001600160a01b031661097457604051633382f3a560e01b815260040160405180910390fd5b600654479081101561099957604051631e9acf1760e31b815260040160405180910390fd5b604080516020810183905273498581ff718922c3f8e6a244956af099b2652b2b916348c8949191016040516020818303038152906040526040518263ffffffff1660e01b81526004016109ec9190611101565b5f604051808303815f875af1158015610a07573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a2e91908101906111e8565b506040516370a0823160e01b81523060048201525f90732357110f5f0c5344eef75966500c75116a4aa153906370a0823190602401602060405180830381865afa158015610a7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa29190611290565b90508015610b0e57604051630852cd8d60e31b815260048101829052732357110f5f0c5344eef75966500c75116a4aa153906342966c68906024015f604051808303815f87803b158015610af4575f80fd5b505af1158015610b06573d5f803e3d5ffd5b505050508092505b60078054905f610b1d836112bb565b91905055508160085f828254610b3391906112d3565b925050819055508260095f828254610b4b91906112d3565b9091555050604080518381526020810185905233917fce6abc4aa99ab2d137d5f7e34bec0e883a186fd2d76b29f2e1c30afcc68d7336910160405180910390a2505090565b60603373498581ff718922c3f8e6a244956af099b2652b2b14610bc65760405163570c108560e11b815260040160405180910390fd5b5f610bd383850185611018565b600554604080516060810190915260ff909116158082529192505f9060208101610bfc856112e6565b815260200183610c205773fffd8963efd1fc6a506488495d951d5263988d25610c27565b6401000276a45b6001600160a01b03169052604051633cf3645360e21b81529091505f9073498581ff718922c3f8e6a244956af099b2652b2b9063f3cd914c90610c71906002908690600401611300565b6020604051808303815f875af1158015610c8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611290565b905073498581ff718922c3f8e6a244956af099b2652b2b6001600160a01b03166311da60b4856040518263ffffffff1660e01b815260040160206040518083038185885af1158015610d05573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d2a9190611290565b506005545f9060ff16610d3d5781610d43565b608082901d5b90505f8082600f0b13610d56575f610d6a565b816fffffffffffffffffffffffffffffffff165b90508015610e185760055473498581ff718922c3f8e6a244956af099b2652b2b90630b0d9c099060ff16610da9576003546001600160a01b0316610db6565b6002546001600160a01b03165b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064015f604051808303815f87803b158015610e01575f80fd5b505af1158015610e13573d5f803e3d5ffd5b505050505b60408051602081018390520160405160208183030381529060405296505050505050505b92915050565b5f80546001600160a01b0383811691161480610e3c5750506001546001600160a01b0390811691161490565b5f546001600160a01b03163314610e97576040516282b42960e81b815260040160405180910390fd5b8051600280546001600160a01b039283166001600160a01b03199182168117909255602084015160038054604080880151606089015162ffffff908116600160b81b0262ffffff60b81b1991909216600160a01b026001600160b81b0319909416958916959095179290921793909316179055608085015160048054919095169216919091179092556005805460ff1916732357110f5f0c5344eef75966500c75116a4aa153909214919091179055517fa2905f5ba755f74cd1bcfa456add3ecbd7109ec7aca7297516c18f5169c1842f905f90a150565b5f546001600160a01b03163314610f98576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116610fbf5760405163d92e233d60e01b815260040160405180910390fd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215611028575f80fd5b5035919050565b6001600160a01b0381168114611043575f80fd5b50565b80356107cc8161102f565b5f60208284031215611061575f80fd5b813561106c8161102f565b9392505050565b5f8060208385031215611084575f80fd5b823567ffffffffffffffff8082111561109b575f80fd5b818501915085601f8301126110ae575f80fd5b8135818111156110bc575f80fd5b8660208285010111156110cd575f80fd5b60209290920196919550909350505050565b5f5b838110156110f95781810151838201526020016110e1565b50505f910152565b602081525f825180602084015261111f8160408501602087016110df565b601f01601f19169190910160400192915050565b634e487b7160e01b5f52604160045260245ffd5b5f60a08284031215611157575f80fd5b60405160a0810181811067ffffffffffffffff8211171561117a5761117a611133565b60405282356111888161102f565b815260208301356111988161102f565b6020820152604083013562ffffff811681146111b2575f80fd5b60408201526060830135600281900b81146111cb575f80fd5b60608201526111dc60808401611046565b60808201529392505050565b5f602082840312156111f8575f80fd5b815167ffffffffffffffff8082111561120f575f80fd5b818401915084601f830112611222575f80fd5b81518181111561123457611234611133565b604051601f8201601f19908116603f0116810190838211818310171561125c5761125c611133565b81604052828152876020848701011115611274575f80fd5b6112858360208301602088016110df565b979650505050505050565b5f602082840312156112a0575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016112cc576112cc6112a7565b5060010190565b80820180821115610e3c57610e3c6112a7565b5f600160ff1b82016112fa576112fa6112a7565b505f0390565b5f61012060018060a01b038086541684526001860154818116602086015262ffffff8160a01c1660408601528060b81c60020b6060860152508060028701541660808501528451151560a0850152602085015160c08501528060408601511660e0850152508061010084015261137b8184015f815260200190565b9594505050505056fea26469706673582212209b430d87d91e28da944fff711dd04ec7b1d733db53a609713f6a772f4409192c64736f6c63430008180033

Deployed Bytecode Sourcemap

1685:9490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4849:34;;4873:9;160:25:1;;4861:10:0;;4849:34;;148:2:1;133:18;4849:34:0;;;;;;;1685:9490;;;;;9816:101;;;;;;;;;;-1:-1:-1;9888:21:0;9816:101;;;160:25:1;;;148:2;133:18;9816:101:0;;;;;;;;6107:788;;;;;;;;;;-1:-1:-1;6107:788:0;;;;;:::i;:::-;;:::i;2465:22::-;;;;;;;;;;-1:-1:-1;2465:22:0;;;;;;;;;-1:-1:-1;;;;;2465:22:0;;;;;;;;;-1:-1:-1;;;2465:22:0;;;;-1:-1:-1;;;2465:22:0;;;;;;;;;;;;;;-1:-1:-1;;;;;742:15:1;;;724:34;;794:15;;;789:2;774:18;;767:43;858:8;846:21;;;826:18;;;819:49;;;;915:1;904:21;899:2;884:18;;877:49;963:15;;;;957:3;942:19;;935:44;673:3;658:19;2465:22:0;381:604:1;8629:150:0;;;;;;;;;;-1:-1:-1;8629:150:0;;;;;:::i;:::-;;:::i;:::-;;9121:176;;;;;;;;;;-1:-1:-1;9121:176:0;;;;;:::i;:::-;;:::i;10176:321::-;;;;;;;;;;;;;:::i;:::-;;;;1713:25:1;;;1769:2;1754:18;;1747:34;;;;1824:14;1817:22;1797:18;;;1790:50;1701:2;1686:18;10176:321:0;1517:329:1;10874:94:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10946:14:0;;;;;;;;10953:7;10946:14;;-1:-1:-1;;;;;10946:14:0;;;;;;;;;;;;;;;-1:-1:-1;;;10946:14:0;;;;;;;;;;-1:-1:-1;;;10946:14:0;;;;;;;;;;;;;;;;;;;10874:94;;;;;;;2104:13:1;;-1:-1:-1;;;;;2100:22:1;;;2082:41;;2183:4;2171:17;;;2165:24;2161:33;;2139:20;;;2132:63;2255:4;2243:17;;;2237:24;2263:8;2233:39;2211:20;;;2204:69;2343:4;2331:17;;;2325:24;2322:1;2311:39;2289:20;;;2282:69;2411:4;2399:17;;;2393:24;2389:33;2367:20;;;2360:63;;;;2031:3;2016:19;;1851:578;9975:149:0;;;;;;;;;;;;;:::i;:::-;;;2599:14:1;;2592:22;2574:41;;2562:2;2547:18;9975:149:0;2434:187:1;2406:20:0;;;;;;;;;;-1:-1:-1;2406:20:0;;;;-1:-1:-1;;;;;2406:20:0;;;;;;-1:-1:-1;;;;;2790:32:1;;;2772:51;;2760:2;2745:18;2406:20:0;2626:203:1;5196:742:0;;;;;;;;;;;;;:::i;6955:1434::-;;;;;;;;;;-1:-1:-1;6955:1434:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11034:138::-;;;;;;;;;;-1:-1:-1;11034:138:0;;;;;:::i;:::-;;:::i;2494:22::-;;;;;;;;;;-1:-1:-1;2494:22:0;;;;;;;;2827:28;;;;;;;;;;;;;;;;2433:23;;;;;;;;;;-1:-1:-1;2433:23:0;;;;-1:-1:-1;;;;;2433:23:0;;;10543:260;;;;;;;;;;-1:-1:-1;10729:13:0;;10744:12;;10758:13;;10773:21;10543:260;;;4456:25:1;;;4512:2;4497:18;;4490:34;;;;4540:18;;;4533:34;4598:2;4583:18;;4576:34;4443:3;4428:19;10543:260:0;4225:391:1;2758:28:0;;;;;;;;;;;;;;;;2793:27;;;;;;;;;;;;;;;;8853:213;;;;;;;;;;-1:-1:-1;8853:213:0;;;;;:::i;:::-;;:::i;2525:44::-;;;;;;;;;;;;;;;;9341:215;;;;;;;;;;-1:-1:-1;9341:215:0;;;;;:::i;:::-;;:::i;6107:788::-;6195:16;4191:5;;-1:-1:-1;;;;;4191:5:0;4177:10;:19;;;;:45;;-1:-1:-1;4214:8:0;;-1:-1:-1;;;;;4214:8:0;4200:10;:22;;4177:45;4173:72;;;4231:14;;-1:-1:-1;;;4231:14:0;;;;;;;;;;;4173:72;6228:13;;-1:-1:-1;;;;;6228:13:0::1;6224:55;;6264:15;;-1:-1:-1::0;;;6264:15:0::1;;;;;;;;;;;6224:55;6313:21;6349:22:::0;;::::1;::::0;:54:::1;;;6387:16;;6375:9;:28;6349:54;6345:115;;;6427:21;;-1:-1:-1::0;;;6427:21:0::1;;;;;;;;;;;6345:115;6492:21;::::0;;::::1;::::0;::::1;160:25:1::0;;;1984:42:0::1;::::0;6472:19:::1;::::0;133:18:1;6492:21:0::1;;;;;;;;;;;;6472:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;6472:42:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6547:33:0::1;::::0;-1:-1:-1;;;6547:33:0;;6574:4:::1;6547:33;::::0;::::1;2772:51:1::0;6527:17:0::1;::::0;2080:42:::1;::::0;6547:18:::1;::::0;2745::1;;6547:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6527:53:::0;-1:-1:-1;6595:13:0;;6591:105:::1;;6625:24;::::0;-1:-1:-1;;;6625:24:0;;::::1;::::0;::::1;160:25:1::0;;;2080:42:0::1;::::0;6625:13:::1;::::0;133:18:1;;6625:24:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6675:9;6664:20;;6591:105;6708:13;:15:::0;;;:13:::1;:15;::::0;::::1;:::i;:::-;;;;;;6750:9;6734:12;;:25;;;;;;;:::i;:::-;;;;;;;;6787:8;6770:13;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6813:48:0::1;::::0;;7480:25:1;;;7536:2;7521:18;;7514:34;;;6829:10:0::1;::::0;6813:48:::1;::::0;7453:18:1;6813:48:0::1;;;;;;;6872:15;;4256:1;6107:788:::0;;;:::o;8629:150::-;4075:5;;-1:-1:-1;;;;;4075:5:0;4061:10;:19;4057:46;;4089:14;;-1:-1:-1;;;4089:14:0;;;;;;;;;;;4057:46;8720:8:::1;::::0;8704:36:::1;::::0;-1:-1:-1;;;;;8704:36:0;;::::1;::::0;8720:8:::1;::::0;8704:36:::1;::::0;8720:8:::1;::::0;8704:36:::1;8751:8;:20:::0;;-1:-1:-1;;;;;;8751:20:0::1;-1:-1:-1::0;;;;;8751:20:0;;;::::1;::::0;;;::::1;::::0;;8629:150::o;9121:176::-;4075:5;;-1:-1:-1;;;;;4075:5:0;4061:10;:19;4057:46;;4089:14;;-1:-1:-1;;;4089:14:0;;;;;;;;;;;4057:46;9226:16:::1;::::0;9202:50:::1;::::0;;7480:25:1;;;7536:2;7521:18;;7514:34;;;9202:50:0::1;::::0;7453:18:1;9202:50:0::1;;;;;;;9263:16;:26:::0;9121:176::o;10176:321::-;10391:16;;10345:21;;10235:20;10431:27;;;;;;:58;;-1:-1:-1;10462:13:0;;-1:-1:-1;;;;;10462:13:0;:27;;10431:58;10418:71;;10176:321;;;:::o;9975:149::-;10020:4;10069:16;;10044:21;:41;;:72;;;;-1:-1:-1;10089:13:0;;-1:-1:-1;;;;;10089:13:0;:27;;10044:72;10037:79;;9975:149;:::o;5196:742::-;5260:16;4191:5;;-1:-1:-1;;;;;4191:5:0;4177:10;:19;;;;:45;;-1:-1:-1;4214:8:0;;-1:-1:-1;;;;;4214:8:0;4200:10;:22;;4177:45;4173:72;;;4231:14;;-1:-1:-1;;;4231:14:0;;;;;;;;;;;4173:72;5293:13;;-1:-1:-1;;;;;5293:13:0::1;5289:55;;5329:15;;-1:-1:-1::0;;;5329:15:0::1;;;;;;;;;;;5289:55;5427:16;::::0;5378:21:::1;::::0;5414:29;::::1;5410:90;;;5467:21;;-1:-1:-1::0;;;5467:21:0::1;;;;;;;;;;;5410:90;5532:22;::::0;;::::1;::::0;::::1;160:25:1::0;;;1984:42:0::1;::::0;5512:19:::1;::::0;133:18:1;5532:22:0::1;;;;;;;;;;;;5512:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5512:43:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;5588:33:0::1;::::0;-1:-1:-1;;;5588:33:0;;5615:4:::1;5588:33;::::0;::::1;2772:51:1::0;5568:17:0::1;::::0;2080:42:::1;::::0;5588:18:::1;::::0;2745::1;;5588:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5568:53:::0;-1:-1:-1;5636:13:0;;5632:105:::1;;5666:24;::::0;-1:-1:-1;;;5666:24:0;;::::1;::::0;::::1;160:25:1::0;;;2080:42:0::1;::::0;5666:13:::1;::::0;133:18:1;;5666:24:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5716:9;5705:20;;5632:105;5749:13;:15:::0;;;:13:::1;:15;::::0;::::1;:::i;:::-;;;;;;5791:10;5775:12;;:26;;;;;;;:::i;:::-;;;;;;;;5829:8;5812:13;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;5855:49:0::1;::::0;;7480:25:1;;;7536:2;7521:18;;7514:34;;;5871:10:0::1;::::0;5855:49:::1;::::0;7453:18:1;5855:49:0::1;;;;;;;5915:15;;5196:742:::0;:::o;6955:1434::-;7027:12;7056:10;1984:42;7056:35;7052:64;;7100:16;;-1:-1:-1;;;7100:16:0;;;;;;;;;;;7052:64;7129:17;7149:27;;;;7160:4;7149:27;:::i;:::-;7206:10;;7273:292;;;;;;;;;7206:10;;;;7205:11;7273:292;;;7129:47;;-1:-1:-1;7187:15:0;;7273:292;;;7366:18;7129:47;7366:18;:::i;:::-;7273:292;;;;7444:10;:109;;7504:49;7444:109;;;7474:10;7444:109;-1:-1:-1;;;;;7273:292:0;;;7642:42;;-1:-1:-1;;;7642:42:0;;7229:336;;-1:-1:-1;7621:18:0;;1984:42;;7642:17;;:42;;7660:7;;7229:336;;7642:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7621:63;;1984:42;-1:-1:-1;;;;;7746:19:0;;7773:9;7746:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7849:10:0;;7832:14;;7849:10;;:133;;7974:5;7849:133;;;7920:3;7909:5;7882:41;;7849:133;7832:150;;8054:18;8085:1;8075:7;:11;;;:43;;8117:1;8075:43;;;8105:7;8089:25;;8075:43;8054:64;-1:-1:-1;8135:14:0;;8131:209;;8202:10;;1984:42;;8166:17;;8202:10;;:50;;8235:17;;-1:-1:-1;;;;;8235:17:0;8202:50;;;8215:7;:17;-1:-1:-1;;;;;8215:17:0;8202:50;8166:162;;-1:-1:-1;;;;;;8166:162:0;;;;;;;-1:-1:-1;;;;;9283:15:1;;;8166:162:0;;;9265:34:1;8279:4:0;9315:18:1;;;9308:43;9367:18;;;9360:34;;;9200:18;;8166:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8131:209;8359:22;;;;;;160:25:1;;;133:18;8359:22:0;;;;;;;;;;;;8352:29;;;;;;;;6955:1434;;;;;:::o;11034:138::-;11101:4;11136:5;;-1:-1:-1;;;;;11125:16:0;;;11136:5;;11125:16;;:39;;-1:-1:-1;;11156:8:0;;-1:-1:-1;;;;;11156:8:0;;;11145:19;;;;11034:138::o;8853:213::-;4075:5;;-1:-1:-1;;;;;4075:5:0;4061:10;:19;4057:46;;4089:14;;-1:-1:-1;;;4089:14:0;;;;;;;;;;;4057:46;8928:18;;:7:::1;:18:::0;;-1:-1:-1;;;;;8928:18:0;;::::1;-1:-1:-1::0;;;;;;8928:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;-1:-1:-1;;;8928:18:0::1;-1:-1:-1::0;;;;8928:18:0;;;::::1;-1:-1:-1::0;;;8928:18:0::1;-1:-1:-1::0;;;;;;8928:18:0;;;;;::::1;::::0;;;;;;;::::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;8957:10:::1;:69:::0;;-1:-1:-1;;8957:69:0::1;2080:42;8970:56:::0;;::::1;8957:69:::0;;;::::1;::::0;;9042:16;::::1;::::0;8928:18:::1;::::0;9042:16:::1;8853:213:::0;:::o;9341:215::-;4075:5;;-1:-1:-1;;;;;4075:5:0;4061:10;:19;4057:46;;4089:14;;-1:-1:-1;;;4089:14:0;;;;;;;;;;;4057:46;-1:-1:-1;;;;;9421:23:0;::::1;9417:49;;9453:13;;-1:-1:-1::0;;;9453:13:0::1;;;;;;;;;;;9417:49;9503:5;::::0;;9482:38:::1;::::0;-1:-1:-1;;;;;9482:38:0;;::::1;::::0;9503:5;::::1;::::0;9482:38:::1;::::0;::::1;9531:5;:17:::0;;-1:-1:-1;;;;;;9531:17:0::1;-1:-1:-1::0;;;;;9531:17:0;;;::::1;::::0;;;::::1;::::0;;9341:215::o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;990:131::-;-1:-1:-1;;;;;1065:31:1;;1055:42;;1045:70;;1111:1;1108;1101:12;1045:70;990:131;:::o;1126:134::-;1194:20;;1223:31;1194:20;1223:31;:::i;1265:247::-;1324:6;1377:2;1365:9;1356:7;1352:23;1348:32;1345:52;;;1393:1;1390;1383:12;1345:52;1432:9;1419:23;1451:31;1476:5;1451:31;:::i;:::-;1501:5;1265:247;-1:-1:-1;;;1265:247:1:o;2834:591::-;2904:6;2912;2965:2;2953:9;2944:7;2940:23;2936:32;2933:52;;;2981:1;2978;2971:12;2933:52;3021:9;3008:23;3050:18;3091:2;3083:6;3080:14;3077:34;;;3107:1;3104;3097:12;3077:34;3145:6;3134:9;3130:22;3120:32;;3190:7;3183:4;3179:2;3175:13;3171:27;3161:55;;3212:1;3209;3202:12;3161:55;3252:2;3239:16;3278:2;3270:6;3267:14;3264:34;;;3294:1;3291;3284:12;3264:34;3339:7;3334:2;3325:6;3321:2;3317:15;3313:24;3310:37;3307:57;;;3360:1;3357;3350:12;3307:57;3391:2;3383:11;;;;;3413:6;;-1:-1:-1;2834:591:1;;-1:-1:-1;;;;2834:591:1:o;3571:250::-;3656:1;3666:113;3680:6;3677:1;3674:13;3666:113;;;3756:11;;;3750:18;3737:11;;;3730:39;3702:2;3695:10;3666:113;;;-1:-1:-1;;3813:1:1;3795:16;;3788:27;3571:250::o;3826:394::-;3973:2;3962:9;3955:21;3936:4;4005:6;3999:13;4048:6;4043:2;4032:9;4028:18;4021:34;4064:79;4136:6;4131:2;4120:9;4116:18;4111:2;4103:6;4099:15;4064:79;:::i;:::-;4204:2;4183:15;-1:-1:-1;;4179:29:1;4164:45;;;;4211:2;4160:54;;3826:394;-1:-1:-1;;3826:394:1:o;4621:127::-;4682:10;4677:3;4673:20;4670:1;4663:31;4713:4;4710:1;4703:15;4737:4;4734:1;4727:15;4753:1056;4835:6;4888:3;4876:9;4867:7;4863:23;4859:33;4856:53;;;4905:1;4902;4895:12;4856:53;4938:2;4932:9;4980:3;4972:6;4968:16;5050:6;5038:10;5035:22;5014:18;5002:10;4999:34;4996:62;4993:88;;;5061:18;;:::i;:::-;5097:2;5090:22;5134:23;;5166:31;5134:23;5166:31;:::i;:::-;5206:21;;5279:2;5264:18;;5251:32;5292:33;5251:32;5292:33;:::i;:::-;5353:2;5341:15;;5334:32;5418:2;5403:18;;5390:32;5466:8;5453:22;;5441:35;;5431:63;;5490:1;5487;5480:12;5431:63;5522:2;5510:15;;5503:32;5587:2;5572:18;;5559:32;5633:1;5622:22;;;5610:35;;5600:63;;5659:1;5656;5649:12;5600:63;5691:2;5679:15;;5672:32;5738:39;5772:3;5757:19;;5738:39;:::i;:::-;5732:3;5720:16;;5713:65;5724:6;4753:1056;-1:-1:-1;;;4753:1056:1:o;5814:896::-;5893:6;5946:2;5934:9;5925:7;5921:23;5917:32;5914:52;;;5962:1;5959;5952:12;5914:52;5995:9;5989:16;6024:18;6065:2;6057:6;6054:14;6051:34;;;6081:1;6078;6071:12;6051:34;6119:6;6108:9;6104:22;6094:32;;6164:7;6157:4;6153:2;6149:13;6145:27;6135:55;;6186:1;6183;6176:12;6135:55;6215:2;6209:9;6237:2;6233;6230:10;6227:36;;;6243:18;;:::i;:::-;6318:2;6312:9;6286:2;6372:13;;-1:-1:-1;;6368:22:1;;;6392:2;6364:31;6360:40;6348:53;;;6416:18;;;6436:22;;;6413:46;6410:72;;;6462:18;;:::i;:::-;6502:10;6498:2;6491:22;6537:2;6529:6;6522:18;6577:7;6572:2;6567;6563;6559:11;6555:20;6552:33;6549:53;;;6598:1;6595;6588:12;6549:53;6611:68;6676:2;6671;6663:6;6659:15;6654:2;6650;6646:11;6611:68;:::i;:::-;6698:6;5814:896;-1:-1:-1;;;;;;;5814:896:1:o;6715:184::-;6785:6;6838:2;6826:9;6817:7;6813:23;6809:32;6806:52;;;6854:1;6851;6844:12;6806:52;-1:-1:-1;6877:16:1;;6715:184;-1:-1:-1;6715:184:1:o;6904:127::-;6965:10;6960:3;6956:20;6953:1;6946:31;6996:4;6993:1;6986:15;7020:4;7017:1;7010:15;7036:135;7075:3;7096:17;;;7093:43;;7116:18;;:::i;:::-;-1:-1:-1;7163:1:1;7152:13;;7036:135::o;7176:125::-;7241:9;;;7262:10;;;7259:36;;;7275:18;;:::i;7559:136::-;7594:3;-1:-1:-1;;;7615:22:1;;7612:48;;7640:18;;:::i;:::-;-1:-1:-1;7680:1:1;7676:13;;7559:136::o;7700:1074::-;8015:4;8044:3;8083:1;8079;8074:3;8070:11;8066:19;8131:2;8122:6;8116:13;8112:22;8101:9;8094:41;8179:4;8171:6;8167:17;8161:24;8238:2;8227:9;8223:18;8216:4;8205:9;8201:20;8194:48;8305:8;8293:9;8288:3;8284:19;8280:34;8273:4;8262:9;8258:20;8251:64;8376:9;8371:3;8367:19;8364:1;8353:34;8346:4;8335:9;8331:20;8324:64;;8453:2;8448:1;8440:6;8436:14;8430:21;8426:30;8419:4;8408:9;8404:20;8397:60;8514:6;8508:13;8501:21;8494:29;8488:3;8477:9;8473:19;8466:58;8579:4;8571:6;8567:17;8561:24;8555:3;8544:9;8540:19;8533:53;8653:2;8645:4;8637:6;8633:17;8627:24;8623:33;8617:3;8606:9;8602:19;8595:62;;8694:2;8688:3;8677:9;8673:19;8666:31;8714:54;8764:2;8753:9;8749:18;3520:1;3508:14;;3555:4;3546:14;;3430:136;8714:54;8706:62;7700:1074;-1:-1:-1;;;;;7700:1074:1:o

Swarm Source

ipfs://9b430d87d91e28da944fff711dd04ec7b1d733db53a609713f6a772f4409192c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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  ]
[ 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.