ETH Price: $3,121.89 (+0.07%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create New Vault...83746252023-12-25 21:09:57720 days ago1703538597IN
Yearn: Aerodrome Factory
0 ETH0.000101510.00100005
Create New Vault...63571032023-11-09 4:19:13766 days ago1699503553IN
Yearn: Aerodrome Factory
0 ETH0.000198070.00100005
Create New Vault...63570972023-11-09 4:19:01766 days ago1699503541IN
Yearn: Aerodrome Factory
0 ETH0.0002590.00100005
Set Owner43084432023-09-22 18:10:33814 days ago1695406233IN
Yearn: Aerodrome Factory
0 ETH0.00002770.00310165
Create New Vault...38047422023-09-11 2:20:31826 days ago1694398831IN
Yearn: Aerodrome Factory
0 ETH0.00028520.12059101
Create New Vault...38047382023-09-11 2:20:23826 days ago1694398823IN
Yearn: Aerodrome Factory
0 ETH0.000265920.11020438
Create New Vault...38045812023-09-11 2:15:09826 days ago1694398509IN
Yearn: Aerodrome Factory
0 ETH0.000249970.10983681
Create New Vault...34043502023-09-01 19:54:07835 days ago1693598047IN
Yearn: Aerodrome Factory
0 ETH0.000602730.21536569
Create New Vault...34043462023-09-01 19:53:59835 days ago1693598039IN
Yearn: Aerodrome Factory
0 ETH0.000556290.22321004
Create New Vault...34043242023-09-01 19:53:15835 days ago1693597995IN
Yearn: Aerodrome Factory
0 ETH0.000652520.27849373
Create New Vault...34043212023-09-01 19:53:09835 days ago1693597989IN
Yearn: Aerodrome Factory
0 ETH0.000733130.28529708
Create New Vault...34043182023-09-01 19:53:03835 days ago1693597983IN
Yearn: Aerodrome Factory
0 ETH0.000758170.29405186
Create New Vault...34043142023-09-01 19:52:55835 days ago1693597975IN
Yearn: Aerodrome Factory
0 ETH0.000791360.30608448
Create New Vault...34043092023-09-01 19:52:45835 days ago1693597965IN
Yearn: Aerodrome Factory
0 ETH0.000637920.22899037
Create New Vault...33596802023-08-31 19:05:07836 days ago1693508707IN
Yearn: Aerodrome Factory
0 ETH0.000687790.21266061
Create New Vault...33596702023-08-31 19:04:47836 days ago1693508687IN
Yearn: Aerodrome Factory
0 ETH0.00062050.2175594
Create New Vault...33596612023-08-31 19:04:29836 days ago1693508669IN
Yearn: Aerodrome Factory
0 ETH0.0007230.22365391
Create New Vault...33596512023-08-31 19:04:09836 days ago1693508649IN
Yearn: Aerodrome Factory
0 ETH0.000643770.22318336
Create New Vault...33596422023-08-31 19:03:51836 days ago1693508631IN
Yearn: Aerodrome Factory
0 ETH0.000621130.2138436
Create New Vault...33596212023-08-31 19:03:09836 days ago1693508589IN
Yearn: Aerodrome Factory
0 ETH0.000644020.2125457
Create New Vault...33596122023-08-31 19:02:51836 days ago1693508571IN
Yearn: Aerodrome Factory
0 ETH0.000604940.2217085
Create New Vault...33596022023-08-31 19:02:31836 days ago1693508551IN
Yearn: Aerodrome Factory
0 ETH0.000649120.22078477
Create New Vault...33595872023-08-31 19:02:01836 days ago1693508521IN
Yearn: Aerodrome Factory
0 ETH0.000547250.21107941
Create New Vault...33595262023-08-31 18:59:59836 days ago1693508399IN
Yearn: Aerodrome Factory
0 ETH0.000570650.21194363
Create New Vault...33594882023-08-31 18:58:43836 days ago1693508323IN
Yearn: Aerodrome Factory
0 ETH0.000576820.22325876
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VelodromeGlobal

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
File 1 of 1 : VelodromeGlobal.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity ^0.8.15;

enum VaultType {
    LEGACY,
    DEFAULT,
    AUTOMATED
}

interface IDetails {
    // get details from velo pool
    function name() external view returns (string memory);

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

interface IRegistry {
    function newVault(
        address _token,
        address _governance,
        address _guardian,
        address _rewards,
        string calldata _name,
        string calldata _symbol,
        uint256 _releaseDelta,
        uint256 _type
    ) external returns (address);

    function latestVaultOfType(
        address token,
        uint256 _type
    ) external view returns (address);
}

interface IVelodromeGauge {
    function stakingToken() external view returns (address);
}

interface IVelodromeVoter {
    function isGauge(address) external view returns (bool);
}

interface IVelodromeRouter {
    struct Routes {
        address from;
        address to;
        bool stable;
        address factory;
    }
}

interface IStrategy {
    function cloneStrategyVelodrome(
        address _vault,
        address _strategist,
        address _rewards,
        address _keeper,
        address _gauge,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken0,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken1
    ) external returns (address newStrategy);

    function setLocalKeepVelo(uint256 _keepVelo) external;

    function setHealthCheck(address) external;

    function setBaseFeeOracle(address) external;

    function setVoter(address) external;
}

interface Vault {
    function setGovernance(address) external;

    function setManagement(address) external;

    function managementFee() external view returns (uint256);

    function setManagementFee(uint256) external;

    function performanceFee() external view returns (uint256);

    function setPerformanceFee(uint256) external;

    function setDepositLimit(uint256) external;

    function addStrategy(address, uint256, uint256, uint256, uint256) external;
}

contract VelodromeGlobal {
    event NewAutomatedVault(
        uint256 indexed category,
        address indexed lpToken,
        address gauge,
        address indexed vault,
        address velodromeStrategy
    );

    /* ========== STATE VARIABLES ========== */

    /// @notice This is a list of all vaults deployed by this factory.
    address[] public deployedVaults;

    /// @notice This is specific to the protocol we are deploying automated vaults for.
    /// @dev 0 for curve, 1 for balancer/beethoven, 2 for velodrome (on optimism). This is a subcategory within our vault type AUTOMATED on the registry.
    uint256 public constant CATEGORY = 2;

    /// @notice Owner of the factory.
    address public owner;

    // @notice Pending owner of the factory.
    /// @dev Must accept before becoming owner.
    address public pendingOwner;

    /// @notice Yearn's vault registry address.
    IRegistry public registry;

    /// @notice Address to use for vault governance.
    address public governance = 0xbfAABa9F56A39B814281D68d2Ad949e88D06b02E;

    /// @notice Address to use for vault management.
    address public management = 0x01fE3347316b2223961B20689C65eaeA71348e93;

    /// @notice Address to use for vault guardian.
    address public guardian = 0x01fE3347316b2223961B20689C65eaeA71348e93;

    /// @notice Address to use for vault and strategy rewards.
    address public treasury = 0x02ff746D8cb62709aEEc611CeC9B17d7dD1D3480;

    /// @notice Address to use for strategy keepers.
    address public keeper = 0xC6387E937Bcef8De3334f80EDC623275d42457ff;

    /// @notice Address to use for strategy health check.
    address public healthCheck = 0x8273217252254Ad7353f227aaEcd2b1C4A326Fa2;

    /// @notice Address to use for our network's base fee oracle.
    address public baseFeeOracle = 0x298Bd23E25C01440D68d4D2708bFf6A7E10a1db5;

    /// @notice Address of our Velodrome strategy implementation.
    address public velodromeStratImplementation;

    /// @notice The percentage of VELO we re-lock to vote for pools factories LP. Default is 0%.
    uint256 public keepVELO;

    /// @notice The address of our Velodrome voter. This is where we send any keepVELO.
    address public veloVoter = 0x4444AAAACDBa5580282365e25b16309Bd770ce4a;

    /// @notice Minimum profit size in USDC that we want to harvest.
    uint256 public harvestProfitMinInUsdc = 1_000 * 1e6;

    /// @notice Maximum profit size in USDC that we want to harvest (ignore gas price once we get here).
    uint256 public harvestProfitMaxInUsdc = 100_000 * 1e6;

    /// @notice Default performance fee for our factory vaults (in basis points).
    uint256 public performanceFee = 1_000;

    /// @notice Default management fee for our factory vaults (in basis points).
    uint256 public managementFee = 0;

    /// @notice Default deposit limit on our factory vaults. Set to a large number.
    uint256 public depositLimit = 10_000_000_000_000 * 1e18;

    /* ========== CONSTRUCTOR ========== */

    constructor(
        address _registry,
        address _velodromeStratImplementation,
        address _owner
    ) {
        registry = IRegistry(_registry);
        velodromeStratImplementation = _velodromeStratImplementation;
        owner = _owner;
        pendingOwner = _owner;
    }

    /* ========== STATE VARIABLE SETTERS ========== */

    /// @notice Set the new owner of the factory.
    /// @dev Must be called by current owner.
    ///  New owner will have to accept before transition is complete.
    /// @param newOwner Address of new owner.
    function setOwner(address newOwner) external {
        if (msg.sender != owner) {
            revert();
        }
        pendingOwner = newOwner;
    }

    /// @notice Accept ownership of the factory.
    /// @dev Must be called by pending owner.
    function acceptOwner() external {
        if (msg.sender != pendingOwner) {
            revert();
        }
        owner = pendingOwner;
    }

    /// @notice Set the yearn vault registry address for the factory.
    /// @dev Must be called by owner.
    /// @param _registry Address of yearn vault registry.
    function setRegistry(address _registry) external {
        if (msg.sender != owner) {
            revert();
        }
        registry = IRegistry(_registry);
    }

    /// @notice Set the vault governance address for the factory.
    /// @dev Must be called by owner.
    /// @param _governance Address of default vault governance.
    function setGovernance(address _governance) external {
        if (msg.sender != owner) {
            revert();
        }
        governance = _governance;
    }

    /// @notice Set the vault management address for the factory.
    /// @dev Must be called by owner.
    /// @param _management Address of default vault management.
    function setManagement(address _management) external {
        if (msg.sender != owner) {
            revert();
        }
        management = _management;
    }

    /// @notice Set the vault guardian address for the factory.
    /// @dev Must be called by owner.
    /// @param _guardian Address of default vault guardian.
    function setGuardian(address _guardian) external {
        if (msg.sender != owner) {
            revert();
        }
        guardian = _guardian;
    }

    /// @notice Set the vault treasury/rewards address for the factory.
    /// @dev Must be called by owner. Vault rewards will flow here.
    /// @param _treasury Address of default vault rewards.
    function setTreasury(address _treasury) external {
        if (msg.sender != owner) {
            revert();
        }
        treasury = _treasury;
    }

    /// @notice Set the vault keeper address for the factory.
    /// @dev Must be called by owner or management.
    /// @param _keeper Address of default vault keeper.
    function setKeeper(address _keeper) external {
        if (!(msg.sender == owner || msg.sender == management)) {
            revert();
        }
        keeper = _keeper;
    }

    /// @notice Set the vault health check address for the factory.
    /// @dev Must be called by owner or management. Health check contracts
    ///  ensure that harvest profits are within expected limits before executing.
    /// @param _health Address of default health check contract.
    function setHealthcheck(address _health) external {
        if (!(msg.sender == owner || msg.sender == management)) {
            revert();
        }
        healthCheck = _health;
    }

    /// @notice Set the strategy base fee oracle address for the factory.
    /// @dev Must be called by owner or management. Oracle passes current network base
    ///  fee so strategy can avoid harvesting during periods of network congestion.
    /// @param _baseFeeOracle Address of default base fee oracle for strategies.
    function setBaseFeeOracle(address _baseFeeOracle) external {
        if (!(msg.sender == owner || msg.sender == management)) {
            revert();
        }
        baseFeeOracle = _baseFeeOracle;
    }

    /// @notice Set the vault deposit limit for the factory.
    /// @dev Must be called by owner or management.
    /// @param _depositLimit Default deposit limit for vaults created by factory.
    function setDepositLimit(uint256 _depositLimit) external {
        if (!(msg.sender == owner || msg.sender == management)) {
            revert();
        }
        depositLimit = _depositLimit;
    }

    /// @notice Set the Velodrome strategy implementation address.
    /// @dev Must be called by owner.
    /// @param _velodrometratImplementation Address of latest Velodrome strategy implementation.
    function setVelodromeStratImplementation(
        address _velodrometratImplementation
    ) external {
        if (msg.sender != owner) {
            revert();
        }
        velodromeStratImplementation = _velodrometratImplementation;
    }

    /// @notice Direct a specified percentage of CRV from every harvest to Yearn's CRV voter.
    /// @dev Must be called by owner.
    /// @param _keepVELO The percentage of CRV from each harvest that we send to our voter (out of 10,000).
    /// @param _veloVoter The address of our Velo voter. This is where we send any keepVELO.
    function setKeepVELO(uint256 _keepVELO, address _veloVoter) external {
        if (msg.sender != owner) {
            revert();
        }
        if (_keepVELO > 10_000) {
            revert();
        }

        // since we use the voter to pull our strategyProxy, can't be zero address
        if (_veloVoter == address(0)) {
            revert();
        }

        keepVELO = _keepVELO;
        veloVoter = _veloVoter;
    }

    /// @notice Set the minimum amount of USDC profit required to harvest.
    /// @dev harvestTrigger will show true once we reach this amount of profit and gas price is acceptable.
    ///  Must be called by owner or management.
    /// @param _harvestProfitMinInUsdc Amount of USDC needed (6 decimals).
    function setHarvestProfitMinInUsdc(
        uint256 _harvestProfitMinInUsdc
    ) external {
        if (!(msg.sender == owner || msg.sender == management)) {
            revert();
        }
        harvestProfitMinInUsdc = _harvestProfitMinInUsdc;
    }

    /// @notice Set the amount of USDC profit that will force a harvest.
    /// @dev harvestTrigger will show true once we reach this amount of profit no matter the gas price.
    ///  Must be called by owner or management.
    /// @param _harvestProfitMaxInUsdc Amount of USDC needed (6 decimals).
    function setHarvestProfitMaxInUsdc(
        uint256 _harvestProfitMaxInUsdc
    ) external {
        if (!(msg.sender == owner || msg.sender == management)) {
            revert();
        }
        harvestProfitMaxInUsdc = _harvestProfitMaxInUsdc;
    }

    /// @notice Set the performance fee (percentage of profit) deducted from each harvest.
    /// @dev Must be called by owner. Fees are collected as minted vault shares.
    ///  Default amount is 10%.
    /// @param _performanceFee The percentage of profit from each harvest that is sent to treasury (out of 10,000).
    function setPerformanceFee(uint256 _performanceFee) external {
        if (msg.sender != owner) {
            revert();
        }
        if (_performanceFee > 5_000) {
            revert();
        }
        performanceFee = _performanceFee;
    }

    /// @notice Set the management fee (as a percentage of TVL) assessed on factory vaults.
    /// @dev Must be called by owner. Fees are collected as minted vault shares on each harvest.
    ///  Default amount is 0%.
    /// @param _managementFee The percentage fee assessed on TVL (out of 10,000).
    function setManagementFee(uint256 _managementFee) external {
        if (msg.sender != owner) {
            revert();
        }
        if (_managementFee > 1_000) {
            revert();
        }
        managementFee = _managementFee;
    }

    /* ========== VIEWS ========== */

    /// @notice View all vault addresses deployed by this factory.
    /// @return Array of all deployed factory vault addresses.
    function allDeployedVaults() external view returns (address[] memory) {
        return deployedVaults;
    }

    /// @notice Number of vaults deployed by this factory.
    /// @return Number of vaults deployed by this factory.
    function numVaults() external view returns (uint256) {
        return deployedVaults.length;
    }

    /// @notice Check whether, for a given gauge address, it is possible to permissionlessly
    ///  create a vault for corresponding LP token.
    /// @param _gauge The gauge address to check.
    /// @return Whether or not vault can be created permissionlessly.
    function canCreateVaultPermissionlessly(
        address _gauge
    ) public view returns (bool) {
        return latestStandardVaultFromGauge(_gauge) == address(0);
    }

    /// @notice Check for the latest vault address for any LEGACY/DEFAULT/AUTOMATED type vaults.
    ///  If no vault of either LEGACY, DEFAULT, or AUTOMATED types exists for this gauge, 0x0 is returned from registry.
    /// @param _gauge The gauge to use to check for any existing vaults.
    /// @return The latest standard vault address for the specified gauge.
    function latestStandardVaultFromGauge(
        address _gauge
    ) public view returns (address) {
        // make sure that our address is a gauge attached to the correct voter
        IVelodromeVoter voter = IVelodromeVoter(
            0x41C914ee0c7E1A5edCD0295623e6dC557B5aBf3C
        );
        if (!voter.isGauge(_gauge)) {
            revert("not a v2 gauge");
        }

        // grab our lp token from our gauge
        address lptoken = IVelodromeGauge(_gauge).stakingToken();
        address latest;

        // we only care about types 0-2 here, so enforce that
        for (uint256 i; i < 3; ++i) {
            latest = registry.latestVaultOfType(lptoken, i);
            if (latest != address(0)) {
                break;
            }
        }
        return latest;
    }

    /* ========== CORE FUNCTIONS ========== */

    /// @notice Deploy a factory Curve vault for a given Curve gauge.
    /// @dev Permissioned users may set custom name and symbol or deploy if a legacy version already exists.
    ///  Must be called by owner or management.
    /// @param _gauge Address of the Curve gauge to deploy a new vault for.
    /// @param _name Name of the new vault.
    /// @param _symbol Symbol of the new vault token.
    /// @return vault Address of the new vault.
    /// @return velodromeStrategy Address of the vault's Curve boosted strategy.
    function createNewVaultsAndStrategiesPermissioned(
        address _gauge,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken0,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken1,
        string memory _name,
        string memory _symbol
    ) external returns (address vault, address velodromeStrategy) {
        if (!(msg.sender == owner || msg.sender == management)) {
            revert();
        }

        return
            _createNewVaultsAndStrategies(
                _gauge,
                _velodromeSwapRouteForToken0,
                _velodromeSwapRouteForToken1,
                true,
                _name,
                _symbol
            );
    }

    /// @notice Deploy a factory Curve vault for a given Curve gauge permissionlessly.
    /// @dev This may be called by anyone. Note that if a vault already exists for the given gauge,
    ///  then this call will revert.
    /// @param _gauge Address of the Curve gauge to deploy a new vault for.
    /// @return vault Address of the new vault.
    /// @return velodromeStrategy Address of the vault's Curve boosted strategy.
    function createNewVaultsAndStrategies(
        address _gauge,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken0,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken1
    ) external returns (address vault, address velodromeStrategy) {
        return
            _createNewVaultsAndStrategies(
                _gauge,
                _velodromeSwapRouteForToken0,
                _velodromeSwapRouteForToken1,
                false,
                "default",
                "default"
            );
    }

    // create a new vault along with strategies to match
    function _createNewVaultsAndStrategies(
        address _gauge,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken0,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken1,
        bool _permissionedUser,
        string memory _name,
        string memory _symbol
    ) internal returns (address vault, address velodromeStrategy) {
        // if a legacy vault already exists, only permissioned users can deploy another
        if (!_permissionedUser) {
            require(
                canCreateVaultPermissionlessly(_gauge),
                "Vault already exists"
            );
        }

        // get our lpToken from our gauge
        address lptoken = IVelodromeGauge(_gauge).stakingToken();

        if (_permissionedUser) {
            // allow trusted users to input the name and symbol or deploy a factory version of a legacy vault
            vault = _createCustomVault(lptoken, _name, _symbol);
        } else {
            // anyone can create a vault, but it will have an auto-generated name and symbol
            vault = _createStandardVault(lptoken);
        }

        // setup our fees, deposit limit, gov, etc
        _setupVaultParams(vault);

        // setup our strategies as needed
        velodromeStrategy = _setupStrategies(
            vault,
            _gauge,
            _velodromeSwapRouteForToken0,
            _velodromeSwapRouteForToken1
        );

        emit NewAutomatedVault(
            CATEGORY,
            lptoken,
            _gauge,
            vault,
            velodromeStrategy
        );
    }

    // permissioned users may pass custom name and symbol inputs
    function _createCustomVault(
        address lptoken,
        string memory _name,
        string memory _symbol
    ) internal returns (address vault) {
        vault = registry.newVault(
            lptoken,
            address(this),
            guardian,
            treasury,
            _name,
            _symbol,
            0,
            uint256(VaultType.AUTOMATED)
        );
    }

    // standard vaults create default name and symbols using on-chain data
    function _createStandardVault(
        address lptoken
    ) internal returns (address vault) {
        vault = registry.newVault(
            lptoken,
            address(this),
            guardian,
            treasury,
            string(
                abi.encodePacked(
                    "Velodrome ",
                    IDetails(address(lptoken)).symbol(),
                    " Factory yVault"
                )
            ),
            string(
                abi.encodePacked(
                    "yvVelo-",
                    IDetails(address(lptoken)).symbol(),
                    "-f"
                )
            ),
            0,
            uint256(VaultType.AUTOMATED)
        );
    }

    // set vault management, gov, deposit limit, and fees
    function _setupVaultParams(address _vault) internal {
        // record our new vault for posterity
        deployedVaults.push(_vault);

        Vault v = Vault(_vault);
        v.setManagement(management);

        // set governance to ychad who needs to accept before it is finalised. until then governance is this factory
        v.setGovernance(governance);
        v.setDepositLimit(depositLimit);

        if (v.managementFee() != managementFee) {
            v.setManagementFee(managementFee);
        }
        if (v.performanceFee() != performanceFee) {
            v.setPerformanceFee(performanceFee);
        }
    }

    // time to attach our strategies to the vault
    function _setupStrategies(
        address _vault,
        address _gauge,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken0,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken1
    ) internal returns (address velodromeStrategy) {
        // velodrome only has one strategy
        velodromeStrategy = _addVelodromeStrategy(
            _vault,
            _gauge,
            _velodromeSwapRouteForToken0,
            _velodromeSwapRouteForToken1
        );
    }

    // deploy and attach a new curve boosted strategy using our factory's existing implementation
    function _addVelodromeStrategy(
        address _vault,
        address _gauge,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken0,
        IVelodromeRouter.Routes[] memory _velodromeSwapRouteForToken1
    ) internal returns (address velodromeStrategy) {
        // create the velodrome  strategy
        velodromeStrategy = IStrategy(velodromeStratImplementation)
            .cloneStrategyVelodrome(
                _vault,
                management,
                treasury,
                keeper,
                _gauge,
                _velodromeSwapRouteForToken0,
                _velodromeSwapRouteForToken1
            );

        // set up health check and the base fee oracle for our new strategy
        IStrategy(velodromeStrategy).setHealthCheck(healthCheck);
        IStrategy(velodromeStrategy).setBaseFeeOracle(baseFeeOracle);

        // must set our voter, this is used to deposit
        IStrategy(velodromeStrategy).setVoter(veloVoter);

        // if we're keeping any tokens, then setup our keepVELO
        if (keepVELO > 0) {
            IStrategy(velodromeStrategy).setLocalKeepVelo(keepVELO);
        }

        // give it 100%
        uint256 veloDebtRatio = 10_000;

        Vault(_vault).addStrategy(
            velodromeStrategy,
            veloDebtRatio,
            0,
            type(uint256).max,
            0
        );
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"address","name":"_velodromeStratImplementation","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":true,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"address","name":"velodromeStrategy","type":"address"}],"name":"NewAutomatedVault","type":"event"},{"inputs":[],"name":"CATEGORY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allDeployedVaults","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseFeeOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gauge","type":"address"}],"name":"canCreateVaultPermissionlessly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gauge","type":"address"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"factory","type":"address"}],"internalType":"struct IVelodromeRouter.Routes[]","name":"_velodromeSwapRouteForToken0","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"factory","type":"address"}],"internalType":"struct IVelodromeRouter.Routes[]","name":"_velodromeSwapRouteForToken1","type":"tuple[]"}],"name":"createNewVaultsAndStrategies","outputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"velodromeStrategy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gauge","type":"address"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"factory","type":"address"}],"internalType":"struct IVelodromeRouter.Routes[]","name":"_velodromeSwapRouteForToken0","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"factory","type":"address"}],"internalType":"struct IVelodromeRouter.Routes[]","name":"_velodromeSwapRouteForToken1","type":"tuple[]"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"createNewVaultsAndStrategiesPermissioned","outputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"velodromeStrategy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deployedVaults","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvestProfitMaxInUsdc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvestProfitMinInUsdc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"healthCheck","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"keepVELO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"keeper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gauge","type":"address"}],"name":"latestStandardVaultFromGauge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"management","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managementFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numVaults","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":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"performanceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_baseFeeOracle","type":"address"}],"name":"setBaseFeeOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_depositLimit","type":"uint256"}],"name":"setDepositLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_harvestProfitMaxInUsdc","type":"uint256"}],"name":"setHarvestProfitMaxInUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_harvestProfitMinInUsdc","type":"uint256"}],"name":"setHarvestProfitMinInUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_health","type":"address"}],"name":"setHealthcheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_keepVELO","type":"uint256"},{"internalType":"address","name":"_veloVoter","type":"address"}],"name":"setKeepVELO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_keeper","type":"address"}],"name":"setKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_management","type":"address"}],"name":"setManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_managementFee","type":"uint256"}],"name":"setManagementFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_performanceFee","type":"uint256"}],"name":"setPerformanceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"setRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_velodrometratImplementation","type":"address"}],"name":"setVelodromeStratImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"veloVoter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"velodromeStratImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052600480546001600160a01b031990811673bfaaba9f56a39b814281d68d2ad949e88d06b02e179091556005805482167301fe3347316b2223961b20689c65eaea71348e9390811790915560068054831690911790556007805482167302ff746d8cb62709aeec611cec9b17d7dd1d348017905560088054821673c6387e937bcef8de3334f80edc623275d42457ff179055600980548216738273217252254ad7353f227aaecd2b1c4a326fa2179055600a8054821673298bd23e25c01440d68d4d2708bff6a7e10a1db5179055600d8054909116734444aaaacdba5580282365e25b16309bd770ce4a179055633b9aca00600e5564174876e800600f556103e860105560006011556c7e37be2022c0914b26800000006012553480156200012a57600080fd5b5060405162001f1b38038062001f1b8339810160408190526200014d91620001bb565b600380546001600160a01b03199081166001600160a01b0395861617909155600b80548216938516939093179092556001805483169190931690811790925560028054909116909117905562000205565b80516001600160a01b0381168114620001b657600080fd5b919050565b600080600060608486031215620001d157600080fd5b620001dc846200019e565b9250620001ec602085016200019e565b9150620001fc604085016200019e565b90509250925092565b611d0680620002156000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80638da5cb5b11610151578063d87ee142116100c3578063ef812d3a11610087578063ef812d3a14610539578063f0f442601461054c578063f9d09ab91461055f578063fa4e2df914610572578063fbb04a631461057b578063fe56e2321461058e57600080fd5b8063d87ee142146104ef578063e30c397814610502578063ea65c31d14610515578063ebbc496514610528578063ecf708581461053057600080fd5b8063ab033ea911610115578063ab033ea914610487578063aced16611461049a578063b252720b146104ad578063bdc8144b146104c0578063d4a22bde146104d3578063d842f2a7146104e657600080fd5b80638da5cb5b1461043257806398c6dd01146104455780639f450b5a14610458578063a6f7f5d61461046b578063a91ee0dc1461047457600080fd5b80635cf6d5ad116101ea5780637b103999116101ae5780637b103999146103d55780637c510eb4146103e8578063826cddf6146103f0578063877887821461040357806388a8d6021461040c5780638a0dac4a1461041f57600080fd5b80635cf6d5ad1461035657806361d027b31461036957806361e5cc9a1461037c57806370897b23146103af578063748747e6146103c257600080fd5b8063264a620811610231578063264a6208146102f05780632eddc153146102f8578063383349851461031b578063452a9320146103305780635aa6e6751461034357600080fd5b8063090c49221461026e5780630ac214df1461028a5780630fa53ec0146102b557806313af4035146102ca57806314b98039146102dd575b600080fd5b610277600e5481565b6040519081526020015b60405180910390f35b61029d6102983660046115fa565b6105a1565b6040516001600160a01b039091168152602001610281565b6102c86102c33660046115fa565b6105cb565b005b6102c86102d836600461162b565b6105fc565b6102c86102eb36600461162b565b610635565b600054610277565b61030b61030636600461162b565b61066e565b6040519015158152602001610281565b61032361068a565b604051610281919061164f565b60065461029d906001600160a01b031681565b60045461029d906001600160a01b031681565b600d5461029d906001600160a01b031681565b60075461029d906001600160a01b031681565b61038f61038a3660046117f6565b6106ec565b604080516001600160a01b03938416815292909116602083015201610281565b6102c86103bd3660046115fa565b610748565b6102c86103d036600461162b565b610773565b60035461029d906001600160a01b031681565b610277600281565b600a5461029d906001600160a01b031681565b61027760105481565b60055461029d906001600160a01b031681565b6102c861042d36600461162b565b6107c1565b60015461029d906001600160a01b031681565b61038f6104533660046118ea565b6107fa565b6102c861046636600461162b565b610848565b61027760115481565b6102c861048236600461162b565b610896565b6102c861049536600461162b565b6108cf565b60085461029d906001600160a01b031681565b60095461029d906001600160a01b031681565b6102c86104ce3660046115fa565b610908565b6102c86104e136600461162b565b610939565b610277600c5481565b6102c86104fd3660046119aa565b610972565b60025461029d906001600160a01b031681565b6102c861052336600461162b565b6109d2565b6102c8610a20565b61027760125481565b600b5461029d906001600160a01b031681565b6102c861055a36600461162b565b610a5b565b61029d61056d36600461162b565b610a94565b610277600f5481565b6102c86105893660046115fa565b610c68565b6102c861059c3660046115fa565b610c99565b600081815481106105b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546001600160a01b03163314806105ee57506005546001600160a01b031633145b6105f757600080fd5b600f55565b6001546001600160a01b0316331461061357600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461064c57600080fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60008061067a83610a94565b6001600160a01b03161492915050565b606060008054806020026020016040519081016040528092919081815260200182805480156106e257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c4575b5050505050905090565b60008061073c858585600060405180604001604052806007815260200166191959985d5b1d60ca1b81525060405180604001604052806007815260200166191959985d5b1d60ca1b815250610cc4565b91509150935093915050565b6001546001600160a01b0316331461075f57600080fd5b61138881111561076e57600080fd5b601055565b6001546001600160a01b031633148061079657506005546001600160a01b031633145b61079f57600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146107d857600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60015460009081906001600160a01b031633148061082257506005546001600160a01b031633145b61082b57600080fd5b61083a87878760018888610cc4565b915091509550959350505050565b6001546001600160a01b031633148061086b57506005546001600160a01b031633145b61087457600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146108ad57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146108e657600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633148061092b57506005546001600160a01b031633145b61093457600080fd5b601255565b6001546001600160a01b0316331461095057600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461098957600080fd5b61271082111561099857600080fd5b6001600160a01b0381166109ab57600080fd5b600c91909155600d80546001600160a01b0319166001600160a01b03909216919091179055565b6001546001600160a01b03163314806109f557506005546001600160a01b031633145b6109fe57600080fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b03163314610a3757600080fd5b600254600180546001600160a01b0319166001600160a01b03909216919091179055565b6001546001600160a01b03163314610a7257600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60405163aa79979b60e01b81526001600160a01b03821660048201526000907341c914ee0c7e1a5edcd0295623e6dc557b5abf3c90819063aa79979b90602401602060405180830381865afa158015610af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906119da565b610b575760405162461bcd60e51b815260206004820152600e60248201526d6e6f74206120763220676175676560901b60448201526064015b60405180910390fd5b6000836001600160a01b03166372f702f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb91906119f7565b90506000805b6003811015610c5f576003546040516309de312f60e41b81526001600160a01b0385811660048301526024820184905290911690639de312f090604401602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f91906119f7565b91506001600160a01b038216610c5f57610c5881611a14565b9050610bc1565b50949350505050565b6001546001600160a01b0316331480610c8b57506005546001600160a01b031633145b610c9457600080fd5b600e55565b6001546001600160a01b03163314610cb057600080fd5b6103e8811115610cbf57600080fd5b601155565b60008084610d1857610cd58861066e565b610d185760405162461bcd60e51b81526020600482015260146024820152735661756c7420616c72656164792065786973747360601b6044820152606401610b4e565b6000886001600160a01b03166372f702f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c91906119f7565b90508515610d9657610d8f818686610e14565b9250610da2565b610d9f81610ea8565b92505b610dab8361104f565b610db7838a8a8a611344565b604080516001600160a01b038c811682528084166020830152929450828616928416916002917fe81b974ef16ed1b36cb580c766c6e24301232357e63d3c5998acaf3ea64071be910160405180910390a450965096945050505050565b60035460065460075460405163092ea19b60e11b81526000936001600160a01b039081169363125d433693610e5d938a93309381169216908a908a908a90600290600401611a8b565b6020604051808303816000875af1158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea091906119f7565b949350505050565b600354600654600754604080516395d89b4160e01b815290516000946001600160a01b039081169463125d433694889430949284169391821692918616916395d89b41916004808201928c929091908290030181865afa158015610f10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f389190810190611af4565b604051602001610f489190611b62565b604051602081830303815290604052886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fbd9190810190611af4565b604051602001610fcd9190611bad565b60408051808303601f19018152908290526001600160e01b031960e089901b168252611006969594939291600090600290600401611a8b565b6020604051808303816000875af1158015611025573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104991906119f7565b92915050565b600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b03838116918217909255600554604051636a5115ef60e11b815292166004830152829163d4a22bde90602401600060405180830381600087803b1580156110d757600080fd5b505af11580156110eb573d6000803e3d6000fd5b50506004805460405163ab033ea960e01b81526001600160a01b03918216928101929092528416925063ab033ea99150602401600060405180830381600087803b15801561113857600080fd5b505af115801561114c573d6000803e3d6000fd5b505060125460405163bdc8144b60e01b815260048101919091526001600160a01b038416925063bdc8144b9150602401600060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b50505050601154816001600160a01b031663a6f7f5d66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190611be8565b1461127757601154604051637f2b711960e11b815260048101919091526001600160a01b0382169063fe56e23290602401600060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b505050505b601054816001600160a01b031663877887826040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190611be8565b14611340576010546040516370897b2360e01b815260048101919091526001600160a01b038216906370897b2390602401600060405180830381600087803b15801561132757600080fd5b505af115801561133b573d6000803e3d6000fd5b505050505b5050565b60006113528585858561135b565b95945050505050565b600b5460055460075460085460405163320afc2d60e01b81526000946001600160a01b039081169463320afc2d946113a8948c9492841693918216929116908b908b908b90600401611c6c565b6020604051808303816000875af11580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb91906119f7565b6009546040516311bc824560e01b81526001600160a01b0391821660048201529192508216906311bc824590602401600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b5050600a54604051634fa285ad60e11b81526001600160a01b0391821660048201529084169250639f450b5a9150602401600060405180830381600087803b15801561149357600080fd5b505af11580156114a7573d6000803e3d6000fd5b5050600d54604051634bc2a65760e01b81526001600160a01b0391821660048201529084169250634bc2a6579150602401600060405180830381600087803b1580156114f257600080fd5b505af1158015611506573d6000803e3d6000fd5b505050506000600c54111561157457600c546040516309a9b23f60e41b815260048101919091526001600160a01b03821690639a9b23f090602401600060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b505050505b604051630a5a713760e11b81526001600160a01b038281166004830152612710602483018190526000604484018190526000196064850152608484015291908716906314b4e26e9060a401600060405180830381600087803b1580156115d957600080fd5b505af11580156115ed573d6000803e3d6000fd5b5050505050949350505050565b60006020828403121561160c57600080fd5b5035919050565b6001600160a01b038116811461162857600080fd5b50565b60006020828403121561163d57600080fd5b813561164881611613565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156116905783516001600160a01b03168352928401929184019160010161166b565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156116d5576116d561169c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156117045761170461169c565b604052919050565b801515811461162857600080fd5b600082601f83011261172b57600080fd5b8135602067ffffffffffffffff8211156117475761174761169c565b611755818360051b016116db565b82815260079290921b8401810191818101908684111561177457600080fd5b8286015b848110156117eb57608081890312156117915760008081fd5b6117996116b2565b81356117a481611613565b8152818501356117b381611613565b818601526040828101356117c68161170c565b908201526060828101356117d981611613565b90820152835291830191608001611778565b509695505050505050565b60008060006060848603121561180b57600080fd5b833561181681611613565b9250602084013567ffffffffffffffff8082111561183357600080fd5b61183f8783880161171a565b9350604086013591508082111561185557600080fd5b506118628682870161171a565b9150509250925092565b600067ffffffffffffffff8211156118865761188661169c565b50601f01601f191660200190565b600082601f8301126118a557600080fd5b81356118b86118b38261186c565b6116db565b8181528460208386010111156118cd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561190257600080fd5b853561190d81611613565b9450602086013567ffffffffffffffff8082111561192a57600080fd5b61193689838a0161171a565b9550604088013591508082111561194c57600080fd5b61195889838a0161171a565b9450606088013591508082111561196e57600080fd5b61197a89838a01611894565b9350608088013591508082111561199057600080fd5b5061199d88828901611894565b9150509295509295909350565b600080604083850312156119bd57600080fd5b8235915060208301356119cf81611613565b809150509250929050565b6000602082840312156119ec57600080fd5b81516116488161170c565b600060208284031215611a0957600080fd5b815161164881611613565b600060018201611a3457634e487b7160e01b600052601160045260246000fd5b5060010190565b60005b83811015611a56578181015183820152602001611a3e565b50506000910152565b60008151808452611a77816020860160208601611a3b565b601f01601f19169290920160200192915050565b6001600160a01b038981168252888116602083015287811660408301528616606082015261010060808201819052600090611ac883820188611a5f565b905082810360a0840152611adc8187611a5f565b60c0840195909552505060e001529695505050505050565b600060208284031215611b0657600080fd5b815167ffffffffffffffff811115611b1d57600080fd5b8201601f81018413611b2e57600080fd5b8051611b3c6118b38261186c565b818152856020838501011115611b5157600080fd5b611352826020830160208601611a3b565b6902b32b637b23937b6b2960b51b815260008251611b8781600a850160208701611a3b565b6e08119858dd1bdc9e481e55985d5b1d608a1b600a939091019283015250601901919050565b66797656656c6f2d60c81b815260008251611bcf816007850160208701611a3b565b6116b360f11b6007939091019283015250600901919050565b600060208284031215611bfa57600080fd5b5051919050565b600081518084526020808501945080840160005b83811015611c6157815180516001600160a01b039081168952848201518116858a01526040808301511515908a0152606091820151169088015260809096019590820190600101611c15565b509495945050505050565b6001600160a01b0388811682528781166020830152868116604083015285811660608301528416608082015260e060a08201819052600090611cb090830185611c01565b82810360c0840152611cc28185611c01565b9a995050505050505050505056fea2646970667358221220463b00566eaa1afe2457a9d003393d4cdc7d1c9e947dd500048624070e03b59564736f6c63430008110033000000000000000000000000f3885ede00171997bfadaa98e01e167b53a78ec500000000000000000000000021aaf096093422f60554f25fe993e44218733d68000000000000000000000000c6387e937bcef8de3334f80edc623275d42457ff

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102695760003560e01c80638da5cb5b11610151578063d87ee142116100c3578063ef812d3a11610087578063ef812d3a14610539578063f0f442601461054c578063f9d09ab91461055f578063fa4e2df914610572578063fbb04a631461057b578063fe56e2321461058e57600080fd5b8063d87ee142146104ef578063e30c397814610502578063ea65c31d14610515578063ebbc496514610528578063ecf708581461053057600080fd5b8063ab033ea911610115578063ab033ea914610487578063aced16611461049a578063b252720b146104ad578063bdc8144b146104c0578063d4a22bde146104d3578063d842f2a7146104e657600080fd5b80638da5cb5b1461043257806398c6dd01146104455780639f450b5a14610458578063a6f7f5d61461046b578063a91ee0dc1461047457600080fd5b80635cf6d5ad116101ea5780637b103999116101ae5780637b103999146103d55780637c510eb4146103e8578063826cddf6146103f0578063877887821461040357806388a8d6021461040c5780638a0dac4a1461041f57600080fd5b80635cf6d5ad1461035657806361d027b31461036957806361e5cc9a1461037c57806370897b23146103af578063748747e6146103c257600080fd5b8063264a620811610231578063264a6208146102f05780632eddc153146102f8578063383349851461031b578063452a9320146103305780635aa6e6751461034357600080fd5b8063090c49221461026e5780630ac214df1461028a5780630fa53ec0146102b557806313af4035146102ca57806314b98039146102dd575b600080fd5b610277600e5481565b6040519081526020015b60405180910390f35b61029d6102983660046115fa565b6105a1565b6040516001600160a01b039091168152602001610281565b6102c86102c33660046115fa565b6105cb565b005b6102c86102d836600461162b565b6105fc565b6102c86102eb36600461162b565b610635565b600054610277565b61030b61030636600461162b565b61066e565b6040519015158152602001610281565b61032361068a565b604051610281919061164f565b60065461029d906001600160a01b031681565b60045461029d906001600160a01b031681565b600d5461029d906001600160a01b031681565b60075461029d906001600160a01b031681565b61038f61038a3660046117f6565b6106ec565b604080516001600160a01b03938416815292909116602083015201610281565b6102c86103bd3660046115fa565b610748565b6102c86103d036600461162b565b610773565b60035461029d906001600160a01b031681565b610277600281565b600a5461029d906001600160a01b031681565b61027760105481565b60055461029d906001600160a01b031681565b6102c861042d36600461162b565b6107c1565b60015461029d906001600160a01b031681565b61038f6104533660046118ea565b6107fa565b6102c861046636600461162b565b610848565b61027760115481565b6102c861048236600461162b565b610896565b6102c861049536600461162b565b6108cf565b60085461029d906001600160a01b031681565b60095461029d906001600160a01b031681565b6102c86104ce3660046115fa565b610908565b6102c86104e136600461162b565b610939565b610277600c5481565b6102c86104fd3660046119aa565b610972565b60025461029d906001600160a01b031681565b6102c861052336600461162b565b6109d2565b6102c8610a20565b61027760125481565b600b5461029d906001600160a01b031681565b6102c861055a36600461162b565b610a5b565b61029d61056d36600461162b565b610a94565b610277600f5481565b6102c86105893660046115fa565b610c68565b6102c861059c3660046115fa565b610c99565b600081815481106105b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546001600160a01b03163314806105ee57506005546001600160a01b031633145b6105f757600080fd5b600f55565b6001546001600160a01b0316331461061357600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461064c57600080fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60008061067a83610a94565b6001600160a01b03161492915050565b606060008054806020026020016040519081016040528092919081815260200182805480156106e257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c4575b5050505050905090565b60008061073c858585600060405180604001604052806007815260200166191959985d5b1d60ca1b81525060405180604001604052806007815260200166191959985d5b1d60ca1b815250610cc4565b91509150935093915050565b6001546001600160a01b0316331461075f57600080fd5b61138881111561076e57600080fd5b601055565b6001546001600160a01b031633148061079657506005546001600160a01b031633145b61079f57600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146107d857600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60015460009081906001600160a01b031633148061082257506005546001600160a01b031633145b61082b57600080fd5b61083a87878760018888610cc4565b915091509550959350505050565b6001546001600160a01b031633148061086b57506005546001600160a01b031633145b61087457600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146108ad57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146108e657600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633148061092b57506005546001600160a01b031633145b61093457600080fd5b601255565b6001546001600160a01b0316331461095057600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461098957600080fd5b61271082111561099857600080fd5b6001600160a01b0381166109ab57600080fd5b600c91909155600d80546001600160a01b0319166001600160a01b03909216919091179055565b6001546001600160a01b03163314806109f557506005546001600160a01b031633145b6109fe57600080fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b03163314610a3757600080fd5b600254600180546001600160a01b0319166001600160a01b03909216919091179055565b6001546001600160a01b03163314610a7257600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60405163aa79979b60e01b81526001600160a01b03821660048201526000907341c914ee0c7e1a5edcd0295623e6dc557b5abf3c90819063aa79979b90602401602060405180830381865afa158015610af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906119da565b610b575760405162461bcd60e51b815260206004820152600e60248201526d6e6f74206120763220676175676560901b60448201526064015b60405180910390fd5b6000836001600160a01b03166372f702f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb91906119f7565b90506000805b6003811015610c5f576003546040516309de312f60e41b81526001600160a01b0385811660048301526024820184905290911690639de312f090604401602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f91906119f7565b91506001600160a01b038216610c5f57610c5881611a14565b9050610bc1565b50949350505050565b6001546001600160a01b0316331480610c8b57506005546001600160a01b031633145b610c9457600080fd5b600e55565b6001546001600160a01b03163314610cb057600080fd5b6103e8811115610cbf57600080fd5b601155565b60008084610d1857610cd58861066e565b610d185760405162461bcd60e51b81526020600482015260146024820152735661756c7420616c72656164792065786973747360601b6044820152606401610b4e565b6000886001600160a01b03166372f702f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c91906119f7565b90508515610d9657610d8f818686610e14565b9250610da2565b610d9f81610ea8565b92505b610dab8361104f565b610db7838a8a8a611344565b604080516001600160a01b038c811682528084166020830152929450828616928416916002917fe81b974ef16ed1b36cb580c766c6e24301232357e63d3c5998acaf3ea64071be910160405180910390a450965096945050505050565b60035460065460075460405163092ea19b60e11b81526000936001600160a01b039081169363125d433693610e5d938a93309381169216908a908a908a90600290600401611a8b565b6020604051808303816000875af1158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea091906119f7565b949350505050565b600354600654600754604080516395d89b4160e01b815290516000946001600160a01b039081169463125d433694889430949284169391821692918616916395d89b41916004808201928c929091908290030181865afa158015610f10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f389190810190611af4565b604051602001610f489190611b62565b604051602081830303815290604052886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fbd9190810190611af4565b604051602001610fcd9190611bad565b60408051808303601f19018152908290526001600160e01b031960e089901b168252611006969594939291600090600290600401611a8b565b6020604051808303816000875af1158015611025573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104991906119f7565b92915050565b600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b03838116918217909255600554604051636a5115ef60e11b815292166004830152829163d4a22bde90602401600060405180830381600087803b1580156110d757600080fd5b505af11580156110eb573d6000803e3d6000fd5b50506004805460405163ab033ea960e01b81526001600160a01b03918216928101929092528416925063ab033ea99150602401600060405180830381600087803b15801561113857600080fd5b505af115801561114c573d6000803e3d6000fd5b505060125460405163bdc8144b60e01b815260048101919091526001600160a01b038416925063bdc8144b9150602401600060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b50505050601154816001600160a01b031663a6f7f5d66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190611be8565b1461127757601154604051637f2b711960e11b815260048101919091526001600160a01b0382169063fe56e23290602401600060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b505050505b601054816001600160a01b031663877887826040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190611be8565b14611340576010546040516370897b2360e01b815260048101919091526001600160a01b038216906370897b2390602401600060405180830381600087803b15801561132757600080fd5b505af115801561133b573d6000803e3d6000fd5b505050505b5050565b60006113528585858561135b565b95945050505050565b600b5460055460075460085460405163320afc2d60e01b81526000946001600160a01b039081169463320afc2d946113a8948c9492841693918216929116908b908b908b90600401611c6c565b6020604051808303816000875af11580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb91906119f7565b6009546040516311bc824560e01b81526001600160a01b0391821660048201529192508216906311bc824590602401600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b5050600a54604051634fa285ad60e11b81526001600160a01b0391821660048201529084169250639f450b5a9150602401600060405180830381600087803b15801561149357600080fd5b505af11580156114a7573d6000803e3d6000fd5b5050600d54604051634bc2a65760e01b81526001600160a01b0391821660048201529084169250634bc2a6579150602401600060405180830381600087803b1580156114f257600080fd5b505af1158015611506573d6000803e3d6000fd5b505050506000600c54111561157457600c546040516309a9b23f60e41b815260048101919091526001600160a01b03821690639a9b23f090602401600060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b505050505b604051630a5a713760e11b81526001600160a01b038281166004830152612710602483018190526000604484018190526000196064850152608484015291908716906314b4e26e9060a401600060405180830381600087803b1580156115d957600080fd5b505af11580156115ed573d6000803e3d6000fd5b5050505050949350505050565b60006020828403121561160c57600080fd5b5035919050565b6001600160a01b038116811461162857600080fd5b50565b60006020828403121561163d57600080fd5b813561164881611613565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156116905783516001600160a01b03168352928401929184019160010161166b565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156116d5576116d561169c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156117045761170461169c565b604052919050565b801515811461162857600080fd5b600082601f83011261172b57600080fd5b8135602067ffffffffffffffff8211156117475761174761169c565b611755818360051b016116db565b82815260079290921b8401810191818101908684111561177457600080fd5b8286015b848110156117eb57608081890312156117915760008081fd5b6117996116b2565b81356117a481611613565b8152818501356117b381611613565b818601526040828101356117c68161170c565b908201526060828101356117d981611613565b90820152835291830191608001611778565b509695505050505050565b60008060006060848603121561180b57600080fd5b833561181681611613565b9250602084013567ffffffffffffffff8082111561183357600080fd5b61183f8783880161171a565b9350604086013591508082111561185557600080fd5b506118628682870161171a565b9150509250925092565b600067ffffffffffffffff8211156118865761188661169c565b50601f01601f191660200190565b600082601f8301126118a557600080fd5b81356118b86118b38261186c565b6116db565b8181528460208386010111156118cd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561190257600080fd5b853561190d81611613565b9450602086013567ffffffffffffffff8082111561192a57600080fd5b61193689838a0161171a565b9550604088013591508082111561194c57600080fd5b61195889838a0161171a565b9450606088013591508082111561196e57600080fd5b61197a89838a01611894565b9350608088013591508082111561199057600080fd5b5061199d88828901611894565b9150509295509295909350565b600080604083850312156119bd57600080fd5b8235915060208301356119cf81611613565b809150509250929050565b6000602082840312156119ec57600080fd5b81516116488161170c565b600060208284031215611a0957600080fd5b815161164881611613565b600060018201611a3457634e487b7160e01b600052601160045260246000fd5b5060010190565b60005b83811015611a56578181015183820152602001611a3e565b50506000910152565b60008151808452611a77816020860160208601611a3b565b601f01601f19169290920160200192915050565b6001600160a01b038981168252888116602083015287811660408301528616606082015261010060808201819052600090611ac883820188611a5f565b905082810360a0840152611adc8187611a5f565b60c0840195909552505060e001529695505050505050565b600060208284031215611b0657600080fd5b815167ffffffffffffffff811115611b1d57600080fd5b8201601f81018413611b2e57600080fd5b8051611b3c6118b38261186c565b818152856020838501011115611b5157600080fd5b611352826020830160208601611a3b565b6902b32b637b23937b6b2960b51b815260008251611b8781600a850160208701611a3b565b6e08119858dd1bdc9e481e55985d5b1d608a1b600a939091019283015250601901919050565b66797656656c6f2d60c81b815260008251611bcf816007850160208701611a3b565b6116b360f11b6007939091019283015250600901919050565b600060208284031215611bfa57600080fd5b5051919050565b600081518084526020808501945080840160005b83811015611c6157815180516001600160a01b039081168952848201518116858a01526040808301511515908a0152606091820151169088015260809096019590820190600101611c15565b509495945050505050565b6001600160a01b0388811682528781166020830152868116604083015285811660608301528416608082015260e060a08201819052600090611cb090830185611c01565b82810360c0840152611cc28185611c01565b9a995050505050505050505056fea2646970667358221220463b00566eaa1afe2457a9d003393d4cdc7d1c9e947dd500048624070e03b59564736f6c63430008110033

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

000000000000000000000000f3885ede00171997bfadaa98e01e167b53a78ec500000000000000000000000021aaf096093422f60554f25fe993e44218733d68000000000000000000000000c6387e937bcef8de3334f80edc623275d42457ff

-----Decoded View---------------
Arg [0] : _registry (address): 0xF3885eDe00171997BFadAa98E01E167B53a78Ec5
Arg [1] : _velodromeStratImplementation (address): 0x21aaf096093422f60554F25Fe993e44218733D68
Arg [2] : _owner (address): 0xC6387E937Bcef8De3334f80EDC623275d42457ff

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f3885ede00171997bfadaa98e01e167b53a78ec5
Arg [1] : 00000000000000000000000021aaf096093422f60554f25fe993e44218733d68
Arg [2] : 000000000000000000000000c6387e937bcef8de3334f80edc623275d42457ff


Deployed Bytecode Sourcemap

2101:20918:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4447:51;;;;;;;;;160:25:1;;;148:2;133:18;4447:51:0;;;;;;;;2444:31;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;545:32:1;;;527:51;;515:2;500:18;2444:31:0;381:203:1;11614:254:0;;;;;;:::i;:::-;;:::i;:::-;;5670:152;;;;;;:::i;:::-;;:::i;9730:245::-;;;;;;:::i;:::-;;:::i;13400:98::-;13444:7;13470:21;13400:98;;13769:171;;;;;;:::i;:::-;;:::i;:::-;;;1142:14:1;;1135:22;1117:41;;1105:2;1090:18;13769:171:0;977:187:1;13168:108:0;;;:::i;:::-;;;;;;;:::i;3350:68::-;;;;;-1:-1:-1;;;;;3350:68:0;;;3092:70;;;;;-1:-1:-1;;;;;3092:70:0;;;4302:69;;;;;-1:-1:-1;;;;;4302:69:0;;;3488:68;;;;;-1:-1:-1;;;;;3488:68:0;;;16829:542;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;5126:15:1;;;5108:34;;5178:15;;;;5173:2;5158:18;;5151:43;5043:18;16829:542:0;4896:304:1;12194:248:0;;;;;;:::i;:::-;;:::i;7927:176::-;;;;;;:::i;:::-;;:::i;3007:25::-;;;;;-1:-1:-1;;;;;3007:25:0;;;2724:36;;2759:1;2724:36;;3891:73;;;;;-1:-1:-1;;;;;3891:73:0;;;4752:37;;;;;;3222:70;;;;;-1:-1:-1;;;;;3222:70:0;;;7240:153;;;;;;:::i;:::-;;:::i;2805:20::-;;;;;-1:-1:-1;;;;;2805:20:0;;;15688:706;;;;;;:::i;:::-;;:::i;8917:204::-;;;;;;:::i;:::-;;:::i;4877:32::-;;;;;;6238:164;;;;;;:::i;:::-;;:::i;6576:161::-;;;;;;:::i;:::-;;:::i;3616:66::-;;;;;-1:-1:-1;;;;;3616:66:0;;;3747:71;;;;;-1:-1:-1;;;;;3747:71:0;;;9322:200;;;;;;:::i;:::-;;:::i;6911:161::-;;;;;;:::i;:::-;;:::i;4184:23::-;;;;;;10314:428;;;;;;:::i;:::-;;:::i;2925:27::-;;;;;-1:-1:-1;;;;;2925:27:0;;;8399:186;;;;;;:::i;:::-;;:::i;5923:143::-;;;:::i;5000:55::-;;;;;;4037:43;;;;;-1:-1:-1;;;;;4037:43:0;;;7598:153;;;;;;:::i;:::-;;:::i;14312:792::-;;;;;;:::i;:::-;;:::i;4610:53::-;;;;;;11054:254;;;;;;:::i;:::-;;:::i;12750:243::-;;;;;;:::i;:::-;;:::i;2444:31::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2444:31:0;;-1:-1:-1;2444:31:0;:::o;11614:254::-;11735:5;;-1:-1:-1;;;;;11735:5:0;11721:10;:19;;:47;;-1:-1:-1;11758:10:0;;-1:-1:-1;;;;;11758:10:0;11744;:24;11721:47;11715:89;;11785:8;;;11715:89;11813:22;:48;11614:254::o;5670:152::-;5743:5;;-1:-1:-1;;;;;5743:5:0;5729:10;:19;5725:58;;5764:8;;;5725:58;5792:12;:23;;-1:-1:-1;;;;;;5792:23:0;-1:-1:-1;;;;;5792:23:0;;;;;;;;;;5670:152::o;9730:245::-;9860:5;;-1:-1:-1;;;;;9860:5:0;9846:10;:19;9842:58;;9881:8;;;9842:58;9909:28;:59;;-1:-1:-1;;;;;;9909:59:0;-1:-1:-1;;;;;9909:59:0;;;;;;;;;;9730:245::o;13769:171::-;13860:4;;13883:36;13912:6;13883:28;:36::i;:::-;-1:-1:-1;;;;;13883:50:0;;;13769:171;-1:-1:-1;;13769:171:0:o;13168:108::-;13220:16;13255:14;13248:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13248:21:0;;;;;;;;;;;;;;;;;;;;;;;13168:108;:::o;16829:542::-;17057:13;17072:25;17128:236;17175:6;17199:28;17245;17291:5;17128:236;;;;;;;;;;;;;-1:-1:-1;;;17128:236:0;;;;;;;;;;;;;;;;-1:-1:-1;;;17128:236:0;;;:29;:236::i;:::-;17109:255;;;;16829:542;;;;;;:::o;12194:248::-;12283:5;;-1:-1:-1;;;;;12283:5:0;12269:10;:19;12265:58;;12304:8;;;12265:58;12354:5;12336:15;:23;12332:62;;;12375:8;;;12332:62;12403:14;:32;12194:248::o;7927:176::-;8002:5;;-1:-1:-1;;;;;8002:5:0;7988:10;:19;;:47;;-1:-1:-1;8025:10:0;;-1:-1:-1;;;;;8025:10:0;8011;:24;7988:47;7982:89;;8052:8;;;7982:89;8080:6;:16;;-1:-1:-1;;;;;;8080:16:0;-1:-1:-1;;;;;8080:16:0;;;;;;;;;;7927:176::o;7240:153::-;7317:5;;-1:-1:-1;;;;;7317:5:0;7303:10;:19;7299:58;;7338:8;;;7299:58;7366:8;:20;;-1:-1:-1;;;;;;7366:20:0;-1:-1:-1;;;;;7366:20:0;;;;;;;;;;7240:153::o;15688:706::-;16060:5;;15988:13;;;;-1:-1:-1;;;;;16060:5:0;16046:10;:19;;:47;;-1:-1:-1;16083:10:0;;-1:-1:-1;;;;;16083:10:0;16069;:24;16046:47;16040:89;;16110:8;;;16040:89;16158:229;16205:6;16229:28;16275;16321:4;16343:5;16366:7;16158:29;:229::i;:::-;16139:248;;;;15688:706;;;;;;;;:::o;8917:204::-;9006:5;;-1:-1:-1;;;;;9006:5:0;8992:10;:19;;:47;;-1:-1:-1;9029:10:0;;-1:-1:-1;;;;;9029:10:0;9015;:24;8992:47;8986:89;;9056:8;;;8986:89;9084:13;:30;;-1:-1:-1;;;;;;9084:30:0;-1:-1:-1;;;;;9084:30:0;;;;;;;;;;8917:204::o;6238:164::-;6315:5;;-1:-1:-1;;;;;6315:5:0;6301:10;:19;6297:58;;6336:8;;;6297:58;6364:8;:31;;-1:-1:-1;;;;;;6364:31:0;-1:-1:-1;;;;;6364:31:0;;;;;;;;;;6238:164::o;6576:161::-;6657:5;;-1:-1:-1;;;;;6657:5:0;6643:10;:19;6639:58;;6678:8;;;6639:58;6706:10;:24;;-1:-1:-1;;;;;;6706:24:0;-1:-1:-1;;;;;6706:24:0;;;;;;;;;;6576:161::o;9322:200::-;9409:5;;-1:-1:-1;;;;;9409:5:0;9395:10;:19;;:47;;-1:-1:-1;9432:10:0;;-1:-1:-1;;;;;9432:10:0;9418;:24;9395:47;9389:89;;9459:8;;;9389:89;9487:12;:28;9322:200::o;6911:161::-;6992:5;;-1:-1:-1;;;;;6992:5:0;6978:10;:19;6974:58;;7013:8;;;6974:58;7041:10;:24;;-1:-1:-1;;;;;;7041:24:0;-1:-1:-1;;;;;7041:24:0;;;;;;;;;;6911:161::o;10314:428::-;10411:5;;-1:-1:-1;;;;;10411:5:0;10397:10;:19;10393:58;;10432:8;;;10393:58;10476:6;10464:9;:18;10460:57;;;10498:8;;;10460:57;-1:-1:-1;;;;;10614:24:0;;10610:63;;10654:8;;;10610:63;10683:8;:20;;;;10713:9;:22;;-1:-1:-1;;;;;;10713:22:0;-1:-1:-1;;;;;10713:22:0;;;;;;;;;10314:428::o;8399:186::-;8479:5;;-1:-1:-1;;;;;8479:5:0;8465:10;:19;;:47;;-1:-1:-1;8502:10:0;;-1:-1:-1;;;;;8502:10:0;8488;:24;8465:47;8459:89;;8529:8;;;8459:89;8557:11;:21;;-1:-1:-1;;;;;;8557:21:0;-1:-1:-1;;;;;8557:21:0;;;;;;;;;;8399:186::o;5923:143::-;5983:12;;-1:-1:-1;;;;;5983:12:0;5969:10;:26;5965:65;;6011:8;;;5965:65;6047:12;;;6039:20;;-1:-1:-1;;;;;;6039:20:0;-1:-1:-1;;;;;6047:12:0;;;6039:20;;;;;;5923:143::o;7598:153::-;7675:5;;-1:-1:-1;;;;;7675:5:0;7661:10;:19;7657:58;;7696:8;;;7657:58;7724:8;:20;;-1:-1:-1;;;;;;7724:20:0;-1:-1:-1;;;;;7724:20:0;;;;;;;;;;7598:153::o;14312:792::-;14619:21;;-1:-1:-1;;;14619:21:0;;-1:-1:-1;;;;;545:32:1;;14619:21:0;;;527:51:1;14401:7:0;;14552:42;;;;14619:13;;500:18:1;;14619:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14614:77;;14656:24;;-1:-1:-1;;;14656:24:0;;8055:2:1;14656:24:0;;;8037:21:1;8094:2;8074:18;;;8067:30;-1:-1:-1;;;8113:18:1;;;8106:44;8167:18;;14656:24:0;;;;;;;;14614:77;14745:15;14779:6;-1:-1:-1;;;;;14763:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14745:56;;14811:14;14903:9;14898:177;14918:1;14914;:5;14898:177;;;14949:8;;:38;;-1:-1:-1;;;14949:38:0;;-1:-1:-1;;;;;8644:32:1;;;14949:38:0;;;8626:51:1;8693:18;;;8686:34;;;14949:8:0;;;;:26;;8599:18:1;;14949:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14940:47;-1:-1:-1;;;;;;15005:20:0;;15045:5;15001:64;14921:3;;;:::i;:::-;;;14898:177;;;-1:-1:-1;15091:6:0;14312:792;-1:-1:-1;;;;14312:792:0:o;11054:254::-;11175:5;;-1:-1:-1;;;;;11175:5:0;11161:10;:19;;:47;;-1:-1:-1;11198:10:0;;-1:-1:-1;;;;;11198:10:0;11184;:24;11161:47;11155:89;;11225:8;;;11155:89;11253:22;:48;11054:254::o;12750:243::-;12837:5;;-1:-1:-1;;;;;12837:5:0;12823:10;:19;12819:58;;12858:8;;;12819:58;12907:5;12890:14;:22;12886:61;;;12928:8;;;12886:61;12956:13;:30;12750:243::o;17434:1586::-;17755:13;17770:25;17900:17;17895:166;;17958:38;17989:6;17958:30;:38::i;:::-;17933:117;;;;-1:-1:-1;;;17933:117:0;;9170:2:1;17933:117:0;;;9152:21:1;9209:2;9189:18;;;9182:30;-1:-1:-1;;;9228:18:1;;;9221:50;9288:18;;17933:117:0;8968:344:1;17933:117:0;18113:15;18147:6;-1:-1:-1;;;;;18131:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18113:56;;18184:17;18180:370;;;18335:43;18354:7;18363:5;18370:7;18335:18;:43::i;:::-;18327:51;;18180:370;;;18510:29;18531:7;18510:20;:29::i;:::-;18502:37;;18180:370;18611:24;18629:5;18611:17;:24::i;:::-;18708:149;18738:5;18757:6;18777:28;18819;18708:16;:149::i;:::-;18873:140;;;-1:-1:-1;;;;;5126:15:1;;;5108:34;;5178:15;;;5173:2;5158:18;;5151:43;18688:169:0;;-1:-1:-1;18873:140:0;;;;;;;2759:1;;18873:140;;5043:18:1;18873:140:0;;;;;;;17797:1223;17434:1586;;;;;;;;;:::o;19091:393::-;19261:8;;19340;;19362;;19261:216;;-1:-1:-1;;;19261:216:0;;19228:13;;-1:-1:-1;;;;;19261:8:0;;;;:17;;:216;;19292:7;;19321:4;;19340:8;;;19362;;19384:5;;19403:7;;19228:13;;19447:19;;19261:216;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19253:224;19091:393;-1:-1:-1;;;;19091:393:0:o;19565:711::-;19677:8;;19756;;19778;;19896:35;;;-1:-1:-1;;;19896:35:0;;;;19644:13;;-1:-1:-1;;;;;19677:8:0;;;;:17;;19708:7;;19737:4;;19756:8;;;;19778;;;;19896:33;;;;;;:35;;;;;19644:13;;19896:35;;;;;;;;:33;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19896:35:0;;;;;;;;;;;;:::i;:::-;19824:164;;;;;;;;:::i;:::-;;;;;;;;;;;;;20126:7;-1:-1:-1;;;;;20109:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20109:35:0;;;;;;;;;;;;:::i;:::-;20040:148;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20040:148:0;;;;;;;-1:-1:-1;;;;;;19677:592:0;;;;;;;;;;;;;;20216:1;;20239:19;;19677:592;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19669:600;19565:711;-1:-1:-1;;19565:711:0:o;20340:628::-;20448:14;:27;;;;;;;;;;;;;;-1:-1:-1;;;;;;20448:27:0;-1:-1:-1;;;;;20448:27:0;;;;;;;;;20535:10;;20519:27;;-1:-1:-1;;;20519:27:0;;20535:10;;20519:27;;;527:51:1;20448:27:0;;20519:15;;500:18:1;;20519:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20690:10:0;;;20674:27;;-1:-1:-1;;;20674:27:0;;-1:-1:-1;;;;;20690:10:0;;;20674:27;;;527:51:1;;;;20674:15:0;;;-1:-1:-1;20674:15:0;;-1:-1:-1;500:18:1;;20674:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20729:12:0;;20711:31;;-1:-1:-1;;;20711:31:0;;;;;160:25:1;;;;-1:-1:-1;;;;;20711:17:0;;;-1:-1:-1;20711:17:0;;-1:-1:-1;133:18:1;;20711:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20778:13;;20757:1;-1:-1:-1;;;;;20757:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;20753:98;;20826:13;;20807:33;;-1:-1:-1;;;20807:33:0;;;;;160:25:1;;;;-1:-1:-1;;;;;20807:18:0;;;;;133::1;;20807:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20753:98;20886:14;;20864:1;-1:-1:-1;;;;;20864:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;20860:102;;20936:14;;20916:35;;-1:-1:-1;;;20916:35:0;;;;;160:25:1;;;;-1:-1:-1;;;;;20916:19:0;;;;;133:18:1;;20916:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20860:102;20392:576;20340:628;:::o;21024:502::-;21264:25;21364:155;21399:6;21419;21439:28;21481;21364:21;:155::i;:::-;21344:175;21024:502;-1:-1:-1;;;;;21024:502:0:o;21630:1387::-;21984:28;;22091:10;;22119:8;;22145:6;;21974:307;;-1:-1:-1;;;21974:307:0;;21875:25;;-1:-1:-1;;;;;21984:28:0;;;;21974:75;;:307;;22067:6;;22091:10;;;;22119:8;;;;22145:6;;;22169;;22193:28;;22239;;21974:307;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22412:11;;22368:56;;-1:-1:-1;;;22368:56:0;;-1:-1:-1;;;;;22412:11:0;;;22368:56;;;527:51:1;21954:327:0;;-1:-1:-1;22368:43:0;;;;;500:18:1;;22368:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22480:13:0;;22434:60;;-1:-1:-1;;;22434:60:0;;-1:-1:-1;;;;;22480:13:0;;;22434:60;;;527:51:1;22434:45:0;;;;-1:-1:-1;22434:45:0;;-1:-1:-1;500:18:1;;22434:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22598:9:0;;22560:48;;-1:-1:-1;;;22560:48:0;;-1:-1:-1;;;;;22598:9:0;;;22560:48;;;527:51:1;22560:37:0;;;;-1:-1:-1;22560:37:0;;-1:-1:-1;500:18:1;;22560:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22698:1;22687:8;;:12;22683:98;;;22761:8;;22715:55;;-1:-1:-1;;;22715:55:0;;;;;160:25:1;;;;-1:-1:-1;;;;;22715:45:0;;;;;133:18:1;;22715:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22683:98;22856:154;;-1:-1:-1;;;22856:154:0;;-1:-1:-1;;;;;15042:32:1;;;22856:154:0;;;15024:51:1;22839:6:0;15091:18:1;;;15084:34;;;22815:21:0;15134:18:1;;;15127:34;;;-1:-1:-1;;15177:18:1;;;15170:34;15220:19;;;15213:35;22839:6:0;22856:25;;;;;;14996:19:1;;22856:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21902:1115;21630:1387;;;;;;:::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;589:131::-;-1:-1:-1;;;;;664:31:1;;654:42;;644:70;;710:1;707;700:12;644:70;589:131;:::o;725:247::-;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;892:9;879:23;911:31;936:5;911:31;:::i;:::-;961:5;725:247;-1:-1:-1;;;725:247:1:o;1169:658::-;1340:2;1392:21;;;1462:13;;1365:18;;;1484:22;;;1311:4;;1340:2;1563:15;;;;1537:2;1522:18;;;1311:4;1606:195;1620:6;1617:1;1614:13;1606:195;;;1685:13;;-1:-1:-1;;;;;1681:39:1;1669:52;;1776:15;;;;1741:12;;;;1717:1;1635:9;1606:195;;;-1:-1:-1;1818:3:1;;1169:658;-1:-1:-1;;;;;;1169:658:1:o;1832:127::-;1893:10;1888:3;1884:20;1881:1;1874:31;1924:4;1921:1;1914:15;1948:4;1945:1;1938:15;1964:253;2036:2;2030:9;2078:4;2066:17;;2113:18;2098:34;;2134:22;;;2095:62;2092:88;;;2160:18;;:::i;:::-;2196:2;2189:22;1964:253;:::o;2222:275::-;2293:2;2287:9;2358:2;2339:13;;-1:-1:-1;;2335:27:1;2323:40;;2393:18;2378:34;;2414:22;;;2375:62;2372:88;;;2440:18;;:::i;:::-;2476:2;2469:22;2222:275;;-1:-1:-1;2222:275:1:o;2502:118::-;2588:5;2581:13;2574:21;2567:5;2564:32;2554:60;;2610:1;2607;2600:12;2625:1475;2685:5;2738:3;2731:4;2723:6;2719:17;2715:27;2705:55;;2756:1;2753;2746:12;2705:55;2792:6;2779:20;2818:4;2841:18;2837:2;2834:26;2831:52;;;2863:18;;:::i;:::-;2903:36;2935:2;2930;2927:1;2923:10;2919:19;2903:36;:::i;:::-;2973:15;;;3059:1;3055:10;;;;3043:23;;3039:32;;;3004:12;;;;3083:15;;;3080:35;;;3111:1;3108;3101:12;3080:35;3147:2;3139:6;3135:15;3159:912;3175:6;3170:3;3167:15;3159:912;;;3253:4;3247:3;3242;3238:13;3234:24;3231:114;;;3299:1;3328:2;3324;3317:14;3231:114;3371:22;;:::i;:::-;3434:3;3421:17;3451:33;3476:7;3451:33;:::i;:::-;3497:22;;3560:12;;;3547:26;3586:33;3547:26;3586:33;:::i;:::-;3639:14;;;3632:31;3686:2;3729:12;;;3716:26;3755:30;3716:26;3755:30;:::i;:::-;3805:14;;;3798:31;3852:2;3895:12;;;3882:26;3921:33;3882:26;3921:33;:::i;:::-;3974:14;;;3967:31;4011:18;;4049:12;;;;3201:4;3192:14;3159:912;;;-1:-1:-1;4089:5:1;2625:1475;-1:-1:-1;;;;;;2625:1475:1:o;4105:786::-;4276:6;4284;4292;4345:2;4333:9;4324:7;4320:23;4316:32;4313:52;;;4361:1;4358;4351:12;4313:52;4400:9;4387:23;4419:31;4444:5;4419:31;:::i;:::-;4469:5;-1:-1:-1;4525:2:1;4510:18;;4497:32;4548:18;4578:14;;;4575:34;;;4605:1;4602;4595:12;4575:34;4628:67;4687:7;4678:6;4667:9;4663:22;4628:67;:::i;:::-;4618:77;;4748:2;4737:9;4733:18;4720:32;4704:48;;4777:2;4767:8;4764:16;4761:36;;;4793:1;4790;4783:12;4761:36;;4816:69;4877:7;4866:8;4855:9;4851:24;4816:69;:::i;:::-;4806:79;;;4105:786;;;;;:::o;5429:187::-;5478:4;5511:18;5503:6;5500:30;5497:56;;;5533:18;;:::i;:::-;-1:-1:-1;5599:2:1;5578:15;-1:-1:-1;;5574:29:1;5605:4;5570:40;;5429:187::o;5621:464::-;5664:5;5717:3;5710:4;5702:6;5698:17;5694:27;5684:55;;5735:1;5732;5725:12;5684:55;5771:6;5758:20;5802:49;5818:32;5847:2;5818:32;:::i;:::-;5802:49;:::i;:::-;5876:2;5867:7;5860:19;5922:3;5915:4;5910:2;5902:6;5898:15;5894:26;5891:35;5888:55;;;5939:1;5936;5929:12;5888:55;6004:2;5997:4;5989:6;5985:17;5978:4;5969:7;5965:18;5952:55;6052:1;6027:16;;;6045:4;6023:27;6016:38;;;;6031:7;5621:464;-1:-1:-1;;;5621:464:1:o;6090:1188::-;6299:6;6307;6315;6323;6331;6384:3;6372:9;6363:7;6359:23;6355:33;6352:53;;;6401:1;6398;6391:12;6352:53;6440:9;6427:23;6459:31;6484:5;6459:31;:::i;:::-;6509:5;-1:-1:-1;6565:2:1;6550:18;;6537:32;6588:18;6618:14;;;6615:34;;;6645:1;6642;6635:12;6615:34;6668:67;6727:7;6718:6;6707:9;6703:22;6668:67;:::i;:::-;6658:77;;6788:2;6777:9;6773:18;6760:32;6744:48;;6817:2;6807:8;6804:16;6801:36;;;6833:1;6830;6823:12;6801:36;6856:69;6917:7;6906:8;6895:9;6891:24;6856:69;:::i;:::-;6846:79;;6978:2;6967:9;6963:18;6950:32;6934:48;;7007:2;6997:8;6994:16;6991:36;;;7023:1;7020;7013:12;6991:36;7046:52;7090:7;7079:8;7068:9;7064:24;7046:52;:::i;:::-;7036:62;;7151:3;7140:9;7136:19;7123:33;7107:49;;7181:2;7171:8;7168:16;7165:36;;;7197:1;7194;7187:12;7165:36;;7220:52;7264:7;7253:8;7242:9;7238:24;7220:52;:::i;:::-;7210:62;;;6090:1188;;;;;;;;:::o;7283:315::-;7351:6;7359;7412:2;7400:9;7391:7;7387:23;7383:32;7380:52;;;7428:1;7425;7418:12;7380:52;7464:9;7451:23;7441:33;;7524:2;7513:9;7509:18;7496:32;7537:31;7562:5;7537:31;:::i;:::-;7587:5;7577:15;;;7283:315;;;;;:::o;7603:245::-;7670:6;7723:2;7711:9;7702:7;7698:23;7694:32;7691:52;;;7739:1;7736;7729:12;7691:52;7771:9;7765:16;7790:28;7812:5;7790:28;:::i;8196:251::-;8266:6;8319:2;8307:9;8298:7;8294:23;8290:32;8287:52;;;8335:1;8332;8325:12;8287:52;8367:9;8361:16;8386:31;8411:5;8386:31;:::i;8731:232::-;8770:3;8791:17;;;8788:140;;8850:10;8845:3;8841:20;8838:1;8831:31;8885:4;8882:1;8875:15;8913:4;8910:1;8903:15;8788:140;-1:-1:-1;8955:1:1;8944:13;;8731:232::o;9449:250::-;9534:1;9544:113;9558:6;9555:1;9552:13;9544:113;;;9634:11;;;9628:18;9615:11;;;9608:39;9580:2;9573:10;9544:113;;;-1:-1:-1;;9691:1:1;9673:16;;9666:27;9449:250::o;9704:271::-;9746:3;9784:5;9778:12;9811:6;9806:3;9799:19;9827:76;9896:6;9889:4;9884:3;9880:14;9873:4;9866:5;9862:16;9827:76;:::i;:::-;9957:2;9936:15;-1:-1:-1;;9932:29:1;9923:39;;;;9964:4;9919:50;;9704:271;-1:-1:-1;;9704:271:1:o;9980:917::-;-1:-1:-1;;;;;10413:15:1;;;10395:34;;10465:15;;;10460:2;10445:18;;10438:43;10517:15;;;10512:2;10497:18;;10490:43;10569:15;;10564:2;10549:18;;10542:43;10345:3;10616;10601:19;;10594:31;;;10316:4;;10648:45;10674:18;;;10666:6;10648:45;:::i;:::-;10634:59;;10742:9;10734:6;10730:22;10724:3;10713:9;10709:19;10702:51;10770:33;10796:6;10788;10770:33;:::i;:::-;10834:3;10819:19;;10812:35;;;;-1:-1:-1;;10878:3:1;10863:19;10856:35;10762:41;9980:917;-1:-1:-1;;;;;;9980:917:1:o;10902:649::-;10982:6;11035:2;11023:9;11014:7;11010:23;11006:32;11003:52;;;11051:1;11048;11041:12;11003:52;11084:9;11078:16;11117:18;11109:6;11106:30;11103:50;;;11149:1;11146;11139:12;11103:50;11172:22;;11225:4;11217:13;;11213:27;-1:-1:-1;11203:55:1;;11254:1;11251;11244:12;11203:55;11283:2;11277:9;11308:49;11324:32;11353:2;11324:32;:::i;11308:49::-;11380:2;11373:5;11366:17;11420:7;11415:2;11410;11406;11402:11;11398:20;11395:33;11392:53;;;11441:1;11438;11431:12;11392:53;11454:67;11518:2;11513;11506:5;11502:14;11497:2;11493;11489:11;11454:67;:::i;11556:611::-;-1:-1:-1;;;11914:3:1;11907:25;11889:3;11961:6;11955:13;11977:75;12045:6;12040:2;12035:3;12031:12;12024:4;12016:6;12012:17;11977:75;:::i;:::-;-1:-1:-1;;;12111:2:1;12071:16;;;;12103:11;;;12096:38;-1:-1:-1;12158:2:1;12150:11;;11556:611;-1:-1:-1;11556:611:1:o;12172:592::-;-1:-1:-1;;;12530:3:1;12523:22;12505:3;12574:6;12568:13;12590:74;12657:6;12653:1;12648:3;12644:11;12637:4;12629:6;12625:17;12590:74;:::i;:::-;-1:-1:-1;;;12723:1:1;12683:16;;;;12715:10;;;12708:24;-1:-1:-1;12756:1:1;12748:10;;12172:592;-1:-1:-1;12172:592:1:o;12769:184::-;12839:6;12892:2;12880:9;12871:7;12867:23;12863:32;12860:52;;;12908:1;12905;12898:12;12860:52;-1:-1:-1;12931:16:1;;12769:184;-1:-1:-1;12769:184:1:o;12958:773::-;13017:3;13055:5;13049:12;13082:6;13077:3;13070:19;13108:4;13137:2;13132:3;13128:12;13121:19;;13174:2;13167:5;13163:14;13195:1;13205:501;13219:6;13216:1;13213:13;13205:501;;;13278:13;;13362:9;;-1:-1:-1;;;;;13358:18:1;;;13346:31;;13421:11;;;13415:18;13411:27;;13397:12;;;13390:49;13462:4;13520:11;;;13514:18;13507:26;13500:34;13486:12;;;13479:56;13558:4;13606:11;;;13600:18;13596:27;13582:12;;;13575:49;13653:4;13644:14;;;;13681:15;;;;13331:1;13234:9;13205:501;;;-1:-1:-1;13722:3:1;;12958:773;-1:-1:-1;;;;;12958:773:1:o;13736:1008::-;-1:-1:-1;;;;;14259:15:1;;;14241:34;;14311:15;;;14306:2;14291:18;;14284:43;14363:15;;;14358:2;14343:18;;14336:43;14415:15;;;14410:2;14395:18;;14388:43;14468:15;;14462:3;14447:19;;14440:44;14521:3;14221;14500:19;;14493:32;;;14184:4;;14548:63;;14591:19;;14583:6;14548:63;:::i;:::-;14660:9;14652:6;14648:22;14642:3;14631:9;14627:19;14620:51;14688:50;14731:6;14723;14688:50;:::i;:::-;14680:58;13736:1008;-1:-1:-1;;;;;;;;;;13736:1008:1:o

Swarm Source

ipfs://463b00566eaa1afe2457a9d003393d4cdc7d1c9e947dd500048624070e03b595

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  ]

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.