Contract 0x65c7EC6CAEc89EF56c292C2B3C56FB3B7Fd39a60

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x75f89e92f7344014db87080631adcf7d70fabe61a6860771121638a2dc0b3edf0x60806040630801332023-05-25 20:42:088 days 10 hrs ago0x6fe45cbbb772bec886b8c01debbaecad60216438 IN  Create: MulticallFantom0 FTM0.312440356768
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x75f89e92f7344014db87080631adcf7d70fabe61a6860771121638a2dc0b3edf630801332023-05-25 20:42:088 days 10 hrs ago 0x6fe45cbbb772bec886b8c01debbaecad60216438  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MulticallFantom

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 9 : IBribe.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface IBribe {
    function addReward(address rewardToken) external;
    function balanceOf(address account) external view returns (uint256);
    function _deposit(uint amount, address account) external;
    function _withdraw(uint amount, address account) external;
    function getRewardForOwner(address account) external;
    function notifyRewardAmount(address token, uint amount) external;
    function left(address token) external view returns (uint);
    function getRewardTokens() external view returns (address[] memory);
    function rewardPerToken(address reward) external view returns (uint);
    function earned(address account, address _rewardsToken) external view returns (uint);
}

File 2 of 9 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function transfer(address recipient, uint amount) external returns (bool);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function balanceOf(address) external view returns (uint);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

File 3 of 9 : IGauge.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface IGauge {
    function addReward(address rewardToken) external;
    function notifyRewardAmount(address token, uint amount) external;
    function getReward(address account) external;
    function claimVotingFees() external returns (uint claimed0, uint claimed1);
    function left(address token) external view returns (uint);
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function rewardPerToken(address reward) external view returns (uint);
    function earned(address account, address reward) external view returns (uint);
}

File 4 of 9 : IPlugin.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface IPlugin {
    function getUnderlyingTokenName() external view returns (string memory);
    function getUnderlyingTokenSymbol() external view returns (string memory);
    function getUnderlyingTokenAddress() external view returns (address);
    function getProtocol() external view returns (string memory);
    function getBribe() external view returns (address);
    function getTokensInUnderlying() external view returns (address[] memory);
    function getBribeTokens() external view returns (address[] memory);
    function getVoter() external view returns (address);
    function price() external view returns (uint);
    function claimAndDistribute() external;
    function setGauge(address _gauge) external;
    function setBribe(address _bribe) external;
}

File 5 of 9 : IRewarder.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface IRewarder {
    function addReward(address rewardToken) external;
    function _deposit(uint amount, address account) external;
    function _withdraw(uint amount, address account) external;
    function getReward() external;
    function notifyRewardAmount(address token, uint amount) external;
    function left(address token) external view returns (uint);
    function getRewardTokens() external view returns (address[] memory);
    function rewardPerToken(address reward) external view returns (uint);
    function earned(address account, address _rewardsToken) external view returns (uint);
}

File 6 of 9 : ITOKEN.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface ITOKEN {
    function totalSupply() external view returns (uint);
    function balanceOf(address) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address, uint) external returns (bool);
    function transferFrom(address,address,uint) external returns (bool);
    function mint(address, uint) external;
    function treasury() external view returns (address);
    function VTOKEN() external view returns (address);
    function fees() external view returns (address);
    function debt(address account) external view returns (uint256);
    function borrowCreditBASE(address account) external view returns (uint256);
    function currentPrice() external view returns (uint256);
    function floorPrice() external view returns (uint256);
    function OTOKENPrice() external view returns (uint256);
    function sellMax() external view returns (uint256);
    function tvl() external view returns (uint256);
    function frBASE() external view returns (uint256);
    function mrvBASE() external view returns (uint256);
    function mrrBASE() external view returns (uint256);
    function mrrTOKEN() external view returns (uint256);
    function marketMaxTOKEN() external view returns (uint256);
}

File 7 of 9 : IVoter.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface IVoter {
    function VTOKEN() external view returns (address);
    function usedWeights(address account) external view returns (uint256);
    function pools(uint256 index) external view returns (address);
    function getPools() external view returns (address[] memory);
    function gauges(address pool) external view returns (address);
    function bribes(address pool) external view returns (address);
    function weights(address pool) external view returns (uint256);
    function totalWeight() external view returns (uint256);
    function emitDeposit(address account, uint amount) external;
    function emitWithdraw(address account, uint amount) external;
    function notifyRewardAmount(uint amount) external;
    function distribute(address _gauge) external;
    function treasury() external view returns (address);
    function votes(address account, address pool) external view returns (uint256);
}

File 8 of 9 : IVTOKEN.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

interface IVTOKEN {
    function balanceOf(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function totalSupplyTOKEN() external view returns (uint256);
    function notifyRewardAmount(address reward, uint256 amount) external;
    function balanceOfTOKEN(address account) external view returns (uint256);
    function rewardPerToken(address reward) external view returns (uint);
    function earned(address account, address _rewardsToken) external view returns (uint256);
    function rewarder() external view returns (address);
}

File 9 of 9 : MulticallFantom.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

import 'contracts/interfaces/IERC20.sol';
import 'contracts/interfaces/IPlugin.sol';

import 'contracts/interfaces/IVoter.sol';
import 'contracts/interfaces/IGauge.sol';
import 'contracts/interfaces/IBribe.sol';

import 'contracts/interfaces/ITOKEN.sol';
import 'contracts/interfaces/IVTOKEN.sol';
import 'contracts/interfaces/IRewarder.sol';

interface IOracle {
    function latestAnswer() external view returns (int256);
}

contract MulticallFantom {

    address public constant BASE = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83;
    address public constant PRICE_ORACLE_BASE = 0xf4766552D15AE4d256Ad41B6cf2933482B0680dc;
    uint256 public constant FEE = 20;
    uint256 public constant DIVISOR = 1000;

    address public voter;
    address public TOKEN;
    address public VTOKEN;
    address public OTOKEN;
    address public rewarder;

    struct SwapCard {
        uint256 frBASE;
        uint256 mrvBASE;
        uint256 mrrBASE;
        uint256 mrrTOKEN;
        uint256 marketMaxTOKEN;
    }

    struct BondingCurve {
        uint256 priceBASE; // Base token like FTM or OP in USD
        uint256 priceTOKEN; // Price of GLOVE and xGLOVE in USD
        uint256 priceOTOKEN; // Price of POWER in USD
        uint256 maxMarketSell;

        uint256 tvl;
        uint256 supplyTOKEN; // supply of GLOVE
        uint256 supplyVTOKEN; // supply of xGLOVE
        uint256 apr;
        uint256 ltv;
        uint256 ratio;

        uint256 accountNATIVE; // FTM, ETH, CANTO
        uint256 accountBASE; // OP or WFTM, WCANTO, WETH amount that account has
        uint256 accountTOKEN; // user balance of GLOVE
        uint256 accountOTOKEN; // user balance of POWER

        uint256 accountEarnedBASE; // Base token rewards like OP and FTM
        uint256 accountEarnedTOKEN; // GLOVE rewards
        uint256 accountEarnedOTOKEN; // POWER rewards

        uint256 accountVTOKEN; // user balance of xGLOVE
        uint256 accountVotingPower;
        uint256 accountUsedWeights;

        uint256 accountBorrowCredit; // amount of base (OP or FTM) a user can borrow
        uint256 accountBorrowDebt; // amount of base (OP or FTM) a user owess
        uint256 accountMaxWithdraw; // max amount of GLOVE a user can unstake from xGLOVE
    }

    struct GaugeCard {
        string protocol;
        string symbol;
        address[] tokensInUnderlying;

        uint256 pluginPrice;
        uint256 priceOTOKEN;

        uint256 apr;
        uint256 tvl;
        uint256 votingWeight;

        uint256 accountUnderlyingTokens;
        uint256 accountUnstakedTokens;
        uint256 accountStakedTokens;
        uint256 accountEarnedOTOKEN;
    }

    struct BribeCard {
        string protocol;
        string symbol;

        address[] rewardTokens;
        uint256[] rewardsPerToken;
        uint256[] accountRewardsEarned;

        uint256 voteWeight;
        uint256 votePercent;

        uint256 accountVotePercent;
    }

    constructor(address _voter,address _TOKEN, address _VTOKEN, address _OTOKEN) {
        voter = _voter;
        TOKEN = _TOKEN;
        VTOKEN = _VTOKEN;
        OTOKEN = _OTOKEN;
        rewarder = IVTOKEN(_VTOKEN).rewarder();
    }

    function quoteBuyIn(uint256 input, uint256 slippageTolerance) external view returns (uint256 output, uint256 slippage, uint256 minOutput) {
        uint256 feeBASE = input * FEE / DIVISOR;
        uint256 oldMrBASE = ITOKEN(TOKEN).mrvBASE() + ITOKEN(TOKEN).mrrBASE();
        uint256 newMrBASE = oldMrBASE + input - feeBASE;
        uint256 oldMrTOKEN = ITOKEN(TOKEN).mrrTOKEN();
        output = oldMrTOKEN - (oldMrBASE * oldMrTOKEN / newMrBASE);

        return (output, 100 * (1e18 - (output * 1e18 / ((input - feeBASE) * 1e18 / ITOKEN(TOKEN).currentPrice()))), (input * 1e18 / ITOKEN(TOKEN).currentPrice()) * slippageTolerance / DIVISOR);
    }

    function quoteBuyOut(uint256 input, uint256 slippageTolerance) external view returns (uint256 output, uint256 slippage, uint256 minOutput) {
        uint256 oldMrBASE = ITOKEN(TOKEN).mrvBASE() + ITOKEN(TOKEN).mrrBASE();
        output = DIVISOR * ((oldMrBASE * ITOKEN(TOKEN).mrrTOKEN() / (ITOKEN(TOKEN).mrrTOKEN() - input)) - oldMrBASE) / (DIVISOR - FEE);

        return (output, 100 * (1e18 - (input * 1e18 / ((output - (output * FEE / DIVISOR)) * 1e18 / ITOKEN(TOKEN).currentPrice()))), input * slippageTolerance / DIVISOR);
    }

    function quoteSellIn(uint256 input, uint256 slippageTolerance) external view returns (uint256 output, uint256 slippage, uint256 minOutput) {
        uint256 feeTOKEN = input * FEE / DIVISOR;
        uint256 oldMrTOKEN = ITOKEN(TOKEN).mrrTOKEN();
        uint256 newMrTOKEN = oldMrTOKEN + input - feeTOKEN;
        require(newMrTOKEN <= ITOKEN(TOKEN).marketMaxTOKEN(), 'Exceeds Market Reserves');

        uint256 oldMrBASE = ITOKEN(TOKEN).mrvBASE() + ITOKEN(TOKEN).mrrBASE();
        output = oldMrBASE - (oldMrBASE * oldMrTOKEN / newMrTOKEN);

        return (output, 100 * (1e18 - (output * 1e18 / ((input - feeTOKEN) * ITOKEN(TOKEN).currentPrice() / 1e18))), (input * ITOKEN(TOKEN).currentPrice() / 1e18) * slippageTolerance / DIVISOR);
    }

    function quoteSellOut(uint256 input, uint256 slippageTolerance) external view returns (uint256 output, uint256 slippage, uint256 minOutput) {
        require(input <= ITOKEN(TOKEN).marketMaxTOKEN(), 'Exceeds Market Reserves');
        uint256 oldMrBASE = ITOKEN(TOKEN).mrvBASE() + ITOKEN(TOKEN).mrrBASE();
        output = DIVISOR * ((oldMrBASE * ITOKEN(TOKEN).mrrTOKEN() / (oldMrBASE - input)) - ITOKEN(TOKEN).mrrTOKEN()) / (DIVISOR - FEE);

        return (output, 100 * (1e18 - (input * 1e18 / ((output - (output * FEE / DIVISOR)) * ITOKEN(TOKEN).currentPrice() / 1e18))), input * slippageTolerance / DIVISOR);
    }

    function getPools() external view returns (address[] memory) {
        return IVoter(voter).getPools();
    }

    function pool(uint256 index) external view returns (address) {
        return IVoter(voter).pools(index);
    }

    function swapCardData() external view returns (SwapCard memory swapCard) {
        swapCard.frBASE = ITOKEN(TOKEN).frBASE();
        swapCard.mrvBASE = ITOKEN(TOKEN).mrvBASE();
        swapCard.mrrBASE = ITOKEN(TOKEN).mrrBASE();
        swapCard.mrrTOKEN = ITOKEN(TOKEN).mrrTOKEN();
        swapCard.marketMaxTOKEN = ITOKEN(TOKEN).marketMaxTOKEN();
        swapCard.marketMaxTOKEN = 0;

        return swapCard;
    }

    function bondingCurveData(address account) external view returns (BondingCurve memory bondingCurve) {
        bondingCurve.priceBASE = uint256(IOracle(PRICE_ORACLE_BASE).latestAnswer()) * 1e18 / 1e8;
        bondingCurve.priceTOKEN = ITOKEN(TOKEN).currentPrice() * bondingCurve.priceBASE / 1e18;
        bondingCurve.priceOTOKEN = ITOKEN(TOKEN).OTOKENPrice() * bondingCurve.priceBASE / 1e18;
        bondingCurve.maxMarketSell = ITOKEN(TOKEN).sellMax();

        bondingCurve.tvl = ITOKEN(TOKEN).tvl() * bondingCurve.priceBASE / 1e18;
        bondingCurve.supplyTOKEN = ITOKEN(TOKEN).totalSupply();
        bondingCurve.supplyVTOKEN = IVTOKEN(VTOKEN).totalSupply();
        bondingCurve.apr = ((IRewarder(rewarder).rewardPerToken(BASE) * bondingCurve.priceBASE / 1e18) +  (IRewarder(rewarder).rewardPerToken(TOKEN) * bondingCurve.priceTOKEN / 1e18) + 
                           (IRewarder(rewarder).rewardPerToken(OTOKEN) * bondingCurve.priceOTOKEN / 1e18)) * 365 * 100 * 1e18 / (7 * bondingCurve.priceTOKEN);
        bondingCurve.ltv = 100 * ITOKEN(TOKEN).floorPrice() * 1e18 / ITOKEN(TOKEN).currentPrice();
        bondingCurve.ratio = ITOKEN(TOKEN).currentPrice() * 1e18 / ITOKEN(TOKEN).floorPrice();

        bondingCurve.accountNATIVE = (account == address(0) ? 0 : account.balance);
        bondingCurve.accountBASE = (account == address(0) ? 0 : IERC20(BASE).balanceOf(account));
        bondingCurve.accountTOKEN = (account == address(0) ? 0 : IERC20(TOKEN).balanceOf(account));
        bondingCurve.accountOTOKEN = (account == address(0) ? 0 : IERC20(OTOKEN).balanceOf(account));

        bondingCurve.accountEarnedBASE = (account == address(0) ? 0 : IRewarder(rewarder).earned(account, BASE));
        bondingCurve.accountEarnedTOKEN = (account == address(0) ? 0 : IRewarder(rewarder).earned(account, TOKEN));
        bondingCurve.accountEarnedOTOKEN = (account == address(0) ? 0 : IRewarder(rewarder).earned(account, OTOKEN));

        bondingCurve.accountVTOKEN = (account == address(0) ? 0 : IVTOKEN(VTOKEN).balanceOfTOKEN(account));
        bondingCurve.accountVotingPower = (account == address(0) ? 0 : IVTOKEN(VTOKEN).balanceOf(account));
        bondingCurve.accountUsedWeights = (account == address(0) ? 0 : IVoter(voter).usedWeights(account));

        bondingCurve.accountBorrowCredit = (account == address(0) ? 0 : ITOKEN(TOKEN).borrowCreditBASE(account));
        bondingCurve.accountBorrowDebt = (account == address(0) ? 0 : ITOKEN(TOKEN).debt(account));
        bondingCurve.accountMaxWithdraw = (account == address(0) ? 0 : (IVoter(voter).usedWeights(account) > 0 ? 0 : bondingCurve.accountVTOKEN - bondingCurve.accountBorrowDebt));

        return bondingCurve;
    }

    function gaugeCardData(address plugin, address account) external view returns (GaugeCard memory gaugeCard) {
        gaugeCard.protocol = IPlugin(plugin).getProtocol();
        gaugeCard.symbol = IERC20(plugin).symbol();
        gaugeCard.tokensInUnderlying = IPlugin(plugin).getTokensInUnderlying();

        gaugeCard.pluginPrice = IPlugin(plugin).price();
        gaugeCard.priceOTOKEN = ITOKEN(TOKEN).OTOKENPrice() * (uint256(IOracle(PRICE_ORACLE_BASE).latestAnswer()) * 1e18 / 1e8) / 1e18;
        
        gaugeCard.apr = IGauge(IVoter(voter).gauges(plugin)).rewardPerToken(OTOKEN) * gaugeCard.priceOTOKEN * 365 * 100 / 7 / gaugeCard.pluginPrice;
        gaugeCard.tvl = IGauge(IVoter(voter).gauges(plugin)).totalSupply() * gaugeCard.pluginPrice / 1e18;
        gaugeCard.votingWeight = 100 * IVoter(voter).weights(plugin) * 1e18 / IVoter(voter).totalWeight();

        gaugeCard.accountUnderlyingTokens = (account == address(0) ? 0 : IERC20(IPlugin(plugin).getUnderlyingTokenAddress()).balanceOf(account));
        gaugeCard.accountUnstakedTokens = (account == address(0) ? 0 : IERC20(plugin).balanceOf(account));
        gaugeCard.accountStakedTokens = (account == address(0) ? 0 : IGauge(IVoter(voter).gauges(plugin)).balanceOf(account));
        gaugeCard.accountEarnedOTOKEN = (account == address(0) ? 0 : IGauge(IVoter(voter).gauges(plugin)).earned(account, OTOKEN));

        return gaugeCard;
    }

    function bribeCardData(address plugin, address account) external view returns (BribeCard memory bribeCard) {
        bribeCard.protocol = IPlugin(plugin).getProtocol();
        bribeCard.symbol = IERC20(plugin).symbol();
        bribeCard.rewardTokens = IBribe(IVoter(voter).bribes(plugin)).getRewardTokens();

        uint[] memory _rewardsPerToken = new uint[](bribeCard.rewardTokens.length);
        for (uint i = 0; i < bribeCard.rewardTokens.length; i++) {
            _rewardsPerToken[i] = IBribe(IVoter(voter).bribes(plugin)).rewardPerToken(bribeCard.rewardTokens[i]);
        }
        bribeCard.rewardsPerToken = _rewardsPerToken;

        uint[] memory _accountRewardsEarned = new uint[](bribeCard.rewardTokens.length);
        for (uint i = 0; i < bribeCard.rewardTokens.length; i++) {
            _accountRewardsEarned[i] = (account == address(0) ? 0 : IBribe(IVoter(voter).bribes(plugin)).earned(account, bribeCard.rewardTokens[i]));
        }
        bribeCard.accountRewardsEarned = _accountRewardsEarned;

        bribeCard.voteWeight = IVoter(voter).weights(plugin);
        bribeCard.votePercent = 100 * IVoter(voter).weights(plugin) * 1e18 / IVoter(voter).totalWeight();

        bribeCard.accountVotePercent = (account == address(0) ? 0 : (IVoter(voter).usedWeights(account) == 0 ? 0 : 100 * IVoter(voter).votes(account, plugin) * 1e18 / IVoter(voter).usedWeights(account)));

        return bribeCard;
    }

}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_voter","type":"address"},{"internalType":"address","name":"_TOKEN","type":"address"},{"internalType":"address","name":"_VTOKEN","type":"address"},{"internalType":"address","name":"_OTOKEN","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OTOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_ORACLE_BASE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VTOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"bondingCurveData","outputs":[{"components":[{"internalType":"uint256","name":"priceBASE","type":"uint256"},{"internalType":"uint256","name":"priceTOKEN","type":"uint256"},{"internalType":"uint256","name":"priceOTOKEN","type":"uint256"},{"internalType":"uint256","name":"maxMarketSell","type":"uint256"},{"internalType":"uint256","name":"tvl","type":"uint256"},{"internalType":"uint256","name":"supplyTOKEN","type":"uint256"},{"internalType":"uint256","name":"supplyVTOKEN","type":"uint256"},{"internalType":"uint256","name":"apr","type":"uint256"},{"internalType":"uint256","name":"ltv","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accountNATIVE","type":"uint256"},{"internalType":"uint256","name":"accountBASE","type":"uint256"},{"internalType":"uint256","name":"accountTOKEN","type":"uint256"},{"internalType":"uint256","name":"accountOTOKEN","type":"uint256"},{"internalType":"uint256","name":"accountEarnedBASE","type":"uint256"},{"internalType":"uint256","name":"accountEarnedTOKEN","type":"uint256"},{"internalType":"uint256","name":"accountEarnedOTOKEN","type":"uint256"},{"internalType":"uint256","name":"accountVTOKEN","type":"uint256"},{"internalType":"uint256","name":"accountVotingPower","type":"uint256"},{"internalType":"uint256","name":"accountUsedWeights","type":"uint256"},{"internalType":"uint256","name":"accountBorrowCredit","type":"uint256"},{"internalType":"uint256","name":"accountBorrowDebt","type":"uint256"},{"internalType":"uint256","name":"accountMaxWithdraw","type":"uint256"}],"internalType":"struct MulticallFantom.BondingCurve","name":"bondingCurve","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"bribeCardData","outputs":[{"components":[{"internalType":"string","name":"protocol","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"rewardTokens","type":"address[]"},{"internalType":"uint256[]","name":"rewardsPerToken","type":"uint256[]"},{"internalType":"uint256[]","name":"accountRewardsEarned","type":"uint256[]"},{"internalType":"uint256","name":"voteWeight","type":"uint256"},{"internalType":"uint256","name":"votePercent","type":"uint256"},{"internalType":"uint256","name":"accountVotePercent","type":"uint256"}],"internalType":"struct MulticallFantom.BribeCard","name":"bribeCard","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"gaugeCardData","outputs":[{"components":[{"internalType":"string","name":"protocol","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"tokensInUnderlying","type":"address[]"},{"internalType":"uint256","name":"pluginPrice","type":"uint256"},{"internalType":"uint256","name":"priceOTOKEN","type":"uint256"},{"internalType":"uint256","name":"apr","type":"uint256"},{"internalType":"uint256","name":"tvl","type":"uint256"},{"internalType":"uint256","name":"votingWeight","type":"uint256"},{"internalType":"uint256","name":"accountUnderlyingTokens","type":"uint256"},{"internalType":"uint256","name":"accountUnstakedTokens","type":"uint256"},{"internalType":"uint256","name":"accountStakedTokens","type":"uint256"},{"internalType":"uint256","name":"accountEarnedOTOKEN","type":"uint256"}],"internalType":"struct MulticallFantom.GaugeCard","name":"gaugeCard","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"input","type":"uint256"},{"internalType":"uint256","name":"slippageTolerance","type":"uint256"}],"name":"quoteBuyIn","outputs":[{"internalType":"uint256","name":"output","type":"uint256"},{"internalType":"uint256","name":"slippage","type":"uint256"},{"internalType":"uint256","name":"minOutput","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"input","type":"uint256"},{"internalType":"uint256","name":"slippageTolerance","type":"uint256"}],"name":"quoteBuyOut","outputs":[{"internalType":"uint256","name":"output","type":"uint256"},{"internalType":"uint256","name":"slippage","type":"uint256"},{"internalType":"uint256","name":"minOutput","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"input","type":"uint256"},{"internalType":"uint256","name":"slippageTolerance","type":"uint256"}],"name":"quoteSellIn","outputs":[{"internalType":"uint256","name":"output","type":"uint256"},{"internalType":"uint256","name":"slippage","type":"uint256"},{"internalType":"uint256","name":"minOutput","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"input","type":"uint256"},{"internalType":"uint256","name":"slippageTolerance","type":"uint256"}],"name":"quoteSellOut","outputs":[{"internalType":"uint256","name":"output","type":"uint256"},{"internalType":"uint256","name":"slippage","type":"uint256"},{"internalType":"uint256","name":"minOutput","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapCardData","outputs":[{"components":[{"internalType":"uint256","name":"frBASE","type":"uint256"},{"internalType":"uint256","name":"mrvBASE","type":"uint256"},{"internalType":"uint256","name":"mrrBASE","type":"uint256"},{"internalType":"uint256","name":"mrrTOKEN","type":"uint256"},{"internalType":"uint256","name":"marketMaxTOKEN","type":"uint256"}],"internalType":"struct MulticallFantom.SwapCard","name":"swapCard","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162003f8c38038062003f8c83398101604081905262000034916200012a565b600080546001600160a01b038087166001600160a01b03199283161790925560018054868416908316179055600280548584169083168117909155600380549385169390921692909217905560408051636e61f03760e11b8152905163dcc3e06e916004808201926020929091908290030181865afa158015620000bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e2919062000187565b600480546001600160a01b0319166001600160a01b039290921691909117905550620001ac92505050565b80516001600160a01b03811681146200012557600080fd5b919050565b600080600080608085870312156200014157600080fd5b6200014c856200010d565b93506200015c602086016200010d565b92506200016c604086016200010d565b91506200017c606086016200010d565b905092959194509250565b6000602082840312156200019a57600080fd5b620001a5826200010d565b9392505050565b613dd080620001bc6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806389b96d4d116100ad578063dcc3e06e11610071578063dcc3e06e146103b9578063ec342ad0146103cc578063f31ae323146103e7578063fb54842714610402578063fe3131121461041557600080fd5b806389b96d4d1461032e5780639736f34814610341578063c544df0c1461038b578063c57981b51461039e578063d91b9962146103a657600080fd5b806346c96aac116100f457806346c96aac1461029a578063673a2a1f146102c55780637a12e531146102da57806382bfefc81461030857806384e883ef1461031b57600080fd5b80630bf5f590146101265780630d66951c1461014f578063235052d6146102635780633410fe6e14610283575b600080fd5b6101396101343660046137d8565b610428565b60405161014691906138b1565b60405180910390f35b61016261015d366004613986565b610dff565b6040516101469190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e08083015190820152610200808301519082015261022080830151908201526102408083015190820152610260808301519082015261028080830151908201526102a080830151908201526102c091820151918101919091526102e00190565b6102766102713660046137d8565b611daf565b60405161014691906139da565b61028c6103e881565b604051908152602001610146565b6000546102ad906001600160a01b031681565b6040516001600160a01b039091168152602001610146565b6102cd612618565b6040516101469190613a9a565b6102ed6102e8366004613ae7565b61268e565b60408051938452602084019290925290820152606001610146565b6001546102ad906001600160a01b031681565b6102ed610329366004613ae7565b612a99565b6102ed61033c366004613ae7565b612eb3565b6103496131e7565b6040516101469190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b6003546102ad906001600160a01b031681565b61028c601481565b6102ed6103b4366004613ae7565b613463565b6004546102ad906001600160a01b031681565b6102ad7321be370d5312f44cb42ce377bc9b8a0cef1a4c8381565b6102ad73f4766552d15ae4d256ad41b6cf2933482b0680dc81565b6002546102ad906001600160a01b031681565b6102ad610423366004613b09565b61374c565b61048c6040518061018001604052806060815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b826001600160a01b031663d16352af6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156104ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104f29190810190613b69565b8160000181905250826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105609190810190613b69565b8160200181905250826001600160a01b031663b1942b166040518163ffffffff1660e01b8152600401600060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105ce9190810190613bfd565b8160400181905250826001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190613caf565b816060018181525050670de0b6b3a76400006305f5e10073f4766552d15ae4d256ad41b6cf2933482b0680dc6001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c59190613caf565b6106d790670de0b6b3a7640000613cde565b6106e19190613cfd565b600160009054906101000a90046001600160a01b03166001600160a01b031663c68da0576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190613caf565b6107629190613cde565b61076c9190613cfd565b60808201819052606082015160005460405163b9a09fd560e01b81526001600160a01b03878116600483015292936007939092169063b9a09fd590602401602060405180830381865afa1580156107c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190613d1f565b60035460405163f122977760e01b81526001600160a01b03918216600482015291169063f122977790602401602060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108589190613caf565b6108629190613cde565b61086e9061016d613cde565b610879906064613cde565b6108839190613cfd565b61088d9190613cfd565b60a0820152606081015160005460405163b9a09fd560e01b81526001600160a01b038681166004830152670de0b6b3a76400009392169063b9a09fd590602401602060405180830381865afa1580156108ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090e9190613d1f565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190613caf565b6109799190613cde565b6109839190613cfd565b60c0820152600054604080516396c82e5760e01b815290516001600160a01b03909216916396c82e57916004808201926020929091908290030181865afa1580156109d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190613caf565b6000546040516353e5642360e11b81526001600160a01b0386811660048301529091169063a7cac84690602401602060405180830381865afa158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190613caf565b610a6f906064613cde565b610a8190670de0b6b3a7640000613cde565b610a8b9190613cfd565b60e08201526001600160a01b03821615610b7257826001600160a01b031663440f5fd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b019190613d1f565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190613caf565b610b75565b60005b6101008201526001600160a01b03821615610bf9576040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190613caf565b610bfc565b60005b6101208201526001600160a01b03821615610cf05760005460405163b9a09fd560e01b81526001600160a01b0385811660048301529091169063b9a09fd590602401602060405180830381865afa158015610c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7f9190613d1f565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190613caf565b610cf3565b60005b6101408201526001600160a01b03821615610df05760005460405163b9a09fd560e01b81526001600160a01b0385811660048301529091169063b9a09fd590602401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190613d1f565b60035460405163211dc32d60e01b81526001600160a01b038581166004830152918216602482015291169063211dc32d90604401602060405180830381865afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190613caf565b610df3565b60005b61016082015292915050565b610eb0604051806102e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6305f5e10073f4766552d15ae4d256ad41b6cf2933482b0680dc6001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b9190613caf565b610f3d90670de0b6b3a7640000613cde565b610f479190613cfd565b80825260015460408051634e8da32560e11b81529051670de0b6b3a764000093926001600160a01b031691639d1b464a9160048083019260209291908290030181865afa158015610f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc09190613caf565b610fca9190613cde565b610fd49190613cfd565b60208083019190915281516001546040805163c68da05760e01b81529051670de0b6b3a7640000946001600160a01b039093169263c68da05792600480820193918290030181865afa15801561102e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110529190613caf565b61105c9190613cde565b6110669190613cfd565b60408083019190915260015481516370e6a58960e11b815291516001600160a01b039091169163e1cd4b129160048083019260209291908290030181865afa1580156110b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110da9190613caf565b6060820152805160015460408051637299470360e11b81529051670de0b6b3a764000093926001600160a01b03169163e5328e069160048083019260209291908290030181865afa158015611133573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111579190613caf565b6111619190613cde565b61116b9190613cfd565b6080820152600154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de9190613caf565b60a0820152600254604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190613caf565b60c08201526020810151611266906007613cde565b60408281015160048054600354935163f122977760e01b81526001600160a01b0394851692810192909252670de0b6b3a764000093169063f122977790602401602060405180830381865afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190613caf565b6112f19190613cde565b6112fb9190613cfd565b60208301516004805460015460405163f122977760e01b81526001600160a01b0391821693810193909352670de0b6b3a7640000939291169063f122977790602401602060405180830381865afa15801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e9190613caf565b6113889190613cde565b6113929190613cfd565b83516004805460405163f122977760e01b81527321be370d5312f44cb42ce377bc9b8a0cef1a4c8392810192909252670de0b6b3a764000092916001600160a01b039091169063f122977790602401602060405180830381865afa1580156113fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114229190613caf565b61142c9190613cde565b6114369190613cfd565b6114409190613d3c565b61144a9190613d3c565b6114569061016d613cde565b611461906064613cde565b61147390670de0b6b3a7640000613cde565b61147d9190613cfd565b60e082015260015460408051634e8da32560e11b815290516001600160a01b0390921691639d1b464a916004808201926020929091908290030181865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f09190613caf565b600160009054906101000a90046001600160a01b03166001600160a01b0316639363c8126040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190613caf565b611572906064613cde565b61158490670de0b6b3a7640000613cde565b61158e9190613cfd565b610100820152600154604080516349b1e40960e11b815290516001600160a01b0390921691639363c812916004808201926020929091908290030181865afa1580156115de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116029190613caf565b600160009054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116799190613caf565b61168b90670de0b6b3a7640000613cde565b6116959190613cfd565b6101208201526001600160a01b038216156116ba57816001600160a01b0316316116bd565b60005b6101408201526001600160a01b03821615611753576040516370a0823160e01b81526001600160a01b03831660048201527321be370d5312f44cb42ce377bc9b8a0cef1a4c83906370a0823190602401602060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e9190613caf565b611756565b60005b6101608201526001600160a01b038216156117de576001546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa1580156117b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d99190613caf565b6117e1565b60005b6101808201526001600160a01b03821615611869576003546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015611840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118649190613caf565b61186c565b60005b6101a08201526001600160a01b03821615611910576004805460405163211dc32d60e01b81526001600160a01b03858116938201939093527321be370d5312f44cb42ce377bc9b8a0cef1a4c83602482015291169063211dc32d90604401602060405180830381865afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b9190613caf565b611913565b60005b6101c08201526001600160a01b038216156119a8576004805460015460405163211dc32d60e01b81526001600160a01b0386811694820194909452908316602482015291169063211dc32d90604401602060405180830381865afa15801561197f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a39190613caf565b6119ab565b60005b6101e08201526001600160a01b03821615611a40576004805460035460405163211dc32d60e01b81526001600160a01b0386811694820194909452908316602482015291169063211dc32d90604401602060405180830381865afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b9190613caf565b611a43565b60005b6102008201526001600160a01b03821615611acb57600254604051631ef1589960e01b81526001600160a01b03848116600483015290911690631ef1589990602401602060405180830381865afa158015611aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac69190613caf565b611ace565b60005b6102208201526001600160a01b03821615611b56576002546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b519190613caf565b611b59565b60005b6102408201526001600160a01b03821615611bdf57600054604051620be37960e21b81526001600160a01b03848116600483015290911690622f8de490602401602060405180830381865afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190613caf565b611be2565b60005b6102608201526001600160a01b03821615611c6a5760015460405163c6e5041360e01b81526001600160a01b0384811660048301529091169063c6e5041390602401602060405180830381865afa158015611c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c659190613caf565b611c6d565b60005b6102808201526001600160a01b03821615611cf5576001546040516326db15bb60e21b81526001600160a01b03848116600483015290911690639b6c56ec90602401602060405180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf09190613caf565b611cf8565b60005b6102a08201526001600160a01b03821615611da15760008054604051620be37960e21b81526001600160a01b03858116600483015290911690622f8de490602401602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a9190613caf565b11611d9a57806102a00151816102200151611d959190613d54565b611da4565b6000611da4565b60005b6102c0820152919050565b611df760405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600081525090565b826001600160a01b031663d16352af6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611e35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e5d9190810190613b69565b8160000181905250826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611ea3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ecb9190810190613b69565b6020820152600054604051635462ecad60e11b81526001600160a01b0385811660048301529091169063a8c5d95a90602401602060405180830381865afa158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e9190613d1f565b6001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fa39190810190613bfd565b604082018190525160009067ffffffffffffffff811115611fc657611fc6613b22565b604051908082528060200260200182016040528015611fef578160200160208202803683370190505b50905060005b82604001515181101561213757600054604051635462ecad60e11b81526001600160a01b0387811660048301529091169063a8c5d95a90602401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190613d1f565b6001600160a01b031663f12297778460400151838151811061209457612094613d6b565b60200260200101516040518263ffffffff1660e01b81526004016120c791906001600160a01b0391909116815260200190565b602060405180830381865afa1580156120e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121089190613caf565b82828151811061211a5761211a613d6b565b60209081029190910101528061212f81613d81565b915050611ff5565b506060820181905260408201515160009067ffffffffffffffff81111561216057612160613b22565b604051908082528060200260200182016040528015612189578160200160208202803683370190505b50905060005b8360400151518110156122f0576001600160a01b038516156122be57600054604051635462ecad60e11b81526001600160a01b0388811660048301529091169063a8c5d95a90602401602060405180830381865afa1580156121f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122199190613d1f565b6001600160a01b031663211dc32d868660400151848151811061223e5761223e613d6b565b60200260200101516040518363ffffffff1660e01b81526004016122789291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015612295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b99190613caf565b6122c1565b60005b8282815181106122d3576122d3613d6b565b6020908102919091010152806122e881613d81565b91505061218f565b50608083018190526000546040516353e5642360e11b81526001600160a01b0387811660048301529091169063a7cac84690602401602060405180830381865afa158015612342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123669190613caf565b60a0840152600054604080516396c82e5760e01b815290516001600160a01b03909216916396c82e57916004808201926020929091908290030181865afa1580156123b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d99190613caf565b6000546040516353e5642360e11b81526001600160a01b0388811660048301529091169063a7cac84690602401602060405180830381865afa158015612423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124479190613caf565b612452906064613cde565b61246490670de0b6b3a7640000613cde565b61246e9190613cfd565b60c08401526001600160a01b0384161561260857600054604051620be37960e21b81526001600160a01b03868116600483015290911690622f8de490602401602060405180830381865afa1580156124ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ee9190613caf565b1561260157600054604051620be37960e21b81526001600160a01b03868116600483015290911690622f8de490602401602060405180830381865afa15801561253b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255f9190613caf565b600054604051636568dc8360e11b81526001600160a01b03878116600483015288811660248301529091169063cad1b90690604401602060405180830381865afa1580156125b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d59190613caf565b6125e0906064613cde565b6125f290670de0b6b3a7640000613cde565b6125fc9190613cfd565b61260b565b600061260b565b60005b60e0840152505092915050565b600080546040805163673a2a1f60e01b815290516060936001600160a01b039093169263673a2a1f92600480820193918290030181865afa158015612661573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126899190810190613bfd565b905090565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b031663339111736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270a9190613caf565b8511156127585760405162461bcd60e51b815260206004820152601760248201527645786365656473204d61726b657420526573657276657360481b60448201526064015b60405180910390fd5b6001546040805163503c3c2b60e11b815290516000926001600160a01b03169163a07878569160048083019260209291908290030181865afa1580156127a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c69190613caf565b600160009054906101000a90046001600160a01b03166001600160a01b031663c2b96e9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283d9190613caf565b6128479190613d3c565b905061285660146103e8613d54565b600160009054906101000a90046001600160a01b03166001600160a01b0316631b8f0bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cd9190613caf565b6128d78884613d54565b600160009054906101000a90046001600160a01b03166001600160a01b0316631b8f0bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561292a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294e9190613caf565b6129589085613cde565b6129629190613cfd565b61296c9190613d54565b612978906103e8613cde565b6129829190613cfd565b935083670de0b6b3a7640000600160009054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a059190613caf565b6103e8612a13601489613cde565b612a1d9190613cfd565b612a279088613d54565b612a319190613cde565b612a3b9190613cfd565b612a4d88670de0b6b3a7640000613cde565b612a579190613cfd565b612a6990670de0b6b3a7640000613d54565b612a74906064613cde565b6103e8612a81888a613cde565b612a8b9190613cfd565b935093509350509250925092565b60008080806103e8612aac601488613cde565b612ab69190613cfd565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316631b8f0bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b319190613caf565b9050600082612b408984613d3c565b612b4a9190613d54565b9050600160009054906101000a90046001600160a01b03166001600160a01b031663339111736040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc39190613caf565b811115612c0c5760405162461bcd60e51b815260206004820152601760248201527645786365656473204d61726b657420526573657276657360481b604482015260640161274f565b6001546040805163503c3c2b60e11b815290516000926001600160a01b03169163a07878569160048083019260209291908290030181865afa158015612c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7a9190613caf565b600160009054906101000a90046001600160a01b03166001600160a01b031663c2b96e9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf19190613caf565b612cfb9190613d3c565b905081612d088483613cde565b612d129190613cfd565b612d1c9082613d54565b965086670de0b6b3a7640000600160009054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9f9190613caf565b612da9878d613d54565b612db39190613cde565b612dbd9190613cfd565b612dcf89670de0b6b3a7640000613cde565b612dd99190613cfd565b612deb90670de0b6b3a7640000613d54565b612df6906064613cde565b6103e88a670de0b6b3a7640000600160009054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7a9190613caf565b612e84908f613cde565b612e8e9190613cfd565b612e989190613cde565b612ea29190613cfd565b965096509650505050509250925092565b60008080806103e8612ec6601488613cde565b612ed09190613cfd565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663a07878566040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4b9190613caf565b600160009054906101000a90046001600160a01b03166001600160a01b031663c2b96e9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc29190613caf565b612fcc9190613d3c565b9050600082612fdb8984613d3c565b612fe59190613d54565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316631b8f0bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561303c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130609190613caf565b90508161306d8285613cde565b6130779190613cfd565b6130819082613d54565b965086600160009054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb9190613caf565b613105868c613d54565b61311790670de0b6b3a7640000613cde565b6131219190613cfd565b61313389670de0b6b3a7640000613cde565b61313d9190613cfd565b61314f90670de0b6b3a7640000613d54565b61315a906064613cde565b6103e88a600160009054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d59190613caf565b612e848e670de0b6b3a7640000613cde565b6132196040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600160009054906101000a90046001600160a01b03166001600160a01b031663ad6cb8236040518163ffffffff1660e01b8152600401602060405180830381865afa15801561326c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132909190613caf565b81526001546040805163c2b96e9b60e01b815290516001600160a01b039092169163c2b96e9b916004808201926020929091908290030181865afa1580156132dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133009190613caf565b6020808301919091526001546040805163503c3c2b60e11b815290516001600160a01b039092169263a0787856926004808401938290030181865afa15801561334d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133719190613caf565b60408083019190915260015481516306e3c2ef60e21b815291516001600160a01b0390911691631b8f0bbc9160048083019260209291908290030181865afa1580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e59190613caf565b606082015260015460408051633391117360e01b815290516001600160a01b03909216916333911173916004808201926020929091908290030181865afa158015613434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134589190613caf565b506000608082015290565b600080600080600160009054906101000a90046001600160a01b03166001600160a01b031663a07878566040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e09190613caf565b600160009054906101000a90046001600160a01b03166001600160a01b031663c2b96e9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135579190613caf565b6135619190613d3c565b905061357060146103e8613d54565b8187600160009054906101000a90046001600160a01b03166001600160a01b0316631b8f0bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e99190613caf565b6135f39190613d54565b600160009054906101000a90046001600160a01b03166001600160a01b0316631b8f0bbc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366a9190613caf565b6136749085613cde565b61367e9190613cfd565b6136889190613d54565b613694906103e8613cde565b61369e9190613cfd565b935083600160009054906101000a90046001600160a01b03166001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137189190613caf565b6103e8613726601488613cde565b6137309190613cfd565b61373a9087613d54565b612a3190670de0b6b3a7640000613cde565b600080546040516315895f4760e31b8152600481018490526001600160a01b039091169063ac4afa3890602401602060405180830381865afa158015613796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ba9190613d1f565b92915050565b6001600160a01b03811681146137d557600080fd5b50565b600080604083850312156137eb57600080fd5b82356137f6816137c0565b91506020830135613806816137c0565b809150509250929050565b60005b8381101561382c578181015183820152602001613814565b8381111561383b576000848401525b50505050565b60008151808452613859816020860160208601613811565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b838110156138a65781516001600160a01b031687529582019590820190600101613881565b509495945050505050565b60208152600082516101808060208501526138d06101a0850183613841565b91506020850151601f19808685030160408701526138ee8483613841565b935060408701519150808685030160608701525061390c838261386d565b92505060608501516080850152608085015160a085015260a085015160c085015260c085015160e085015260e0850151610100818187015280870151915050610120818187015280870151915050610140818187015280870151915050610160818187015280870151838701525050508091505092915050565b60006020828403121561399857600080fd5b81356139a3816137c0565b9392505050565b600081518084526020808501945080840160005b838110156138a6578151875295820195908201906001016139be565b60208152600082516101008060208501526139f9610120850183613841565b91506020850151601f1980868503016040870152613a178483613841565b93506040870151915080868503016060870152613a34848361386d565b93506060870151915080868503016080870152613a5184836139aa565b935060808701519150808685030160a087015250613a6f83826139aa565b92505060a085015160c085015260c085015160e085015260e085015181850152508091505092915050565b6020808252825182820181905260009190848201906040850190845b81811015613adb5783516001600160a01b031683529284019291840191600101613ab6565b50909695505050505050565b60008060408385031215613afa57600080fd5b50508035926020909101359150565b600060208284031215613b1b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b6157613b61613b22565b604052919050565b600060208284031215613b7b57600080fd5b815167ffffffffffffffff80821115613b9357600080fd5b818401915084601f830112613ba757600080fd5b815181811115613bb957613bb9613b22565b613bcc601f8201601f1916602001613b38565b9150808252856020828501011115613be357600080fd5b613bf4816020840160208601613811565b50949350505050565b60006020808385031215613c1057600080fd5b825167ffffffffffffffff80821115613c2857600080fd5b818501915085601f830112613c3c57600080fd5b815181811115613c4e57613c4e613b22565b8060051b9150613c5f848301613b38565b8181529183018401918481019088841115613c7957600080fd5b938501935b83851015613ca35784519250613c93836137c0565b8282529385019390850190613c7e565b98975050505050505050565b600060208284031215613cc157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613cf857613cf8613cc8565b500290565b600082613d1a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215613d3157600080fd5b81516139a3816137c0565b60008219821115613d4f57613d4f613cc8565b500190565b600082821015613d6657613d66613cc8565b500390565b634e487b7160e01b600052603260045260246000fd5b600060018201613d9357613d93613cc8565b506001019056fea264697066735822122032db1d97a369716b0caf2cb1bea60acfd459892dbf12949dd5030cbcfa2e0c6064736f6c634300080d0033000000000000000000000000a8408837ec5fda0f54ade6a03322999ec7b49c320000000000000000000000005d1dd559fda41d45a7e9a3cbf85fdea0298a892f000000000000000000000000906f3f487e13a8e4bd78294dbeb77e284b668cff0000000000000000000000002ffdf4d09ca6473ce4eddb47371fc098fe758c52

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

000000000000000000000000a8408837ec5fda0f54ade6a03322999ec7b49c320000000000000000000000005d1dd559fda41d45a7e9a3cbf85fdea0298a892f000000000000000000000000906f3f487e13a8e4bd78294dbeb77e284b668cff0000000000000000000000002ffdf4d09ca6473ce4eddb47371fc098fe758c52

-----Decoded View---------------
Arg [0] : _voter (address): 0xa8408837ec5fda0f54ade6a03322999ec7b49c32
Arg [1] : _TOKEN (address): 0x5d1dd559fda41d45a7e9a3cbf85fdea0298a892f
Arg [2] : _VTOKEN (address): 0x906f3f487e13a8e4bd78294dbeb77e284b668cff
Arg [3] : _OTOKEN (address): 0x2ffdf4d09ca6473ce4eddb47371fc098fe758c52

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000a8408837ec5fda0f54ade6a03322999ec7b49c32
Arg [1] : 0000000000000000000000005d1dd559fda41d45a7e9a3cbf85fdea0298a892f
Arg [2] : 000000000000000000000000906f3f487e13a8e4bd78294dbeb77e284b668cff
Arg [3] : 0000000000000000000000002ffdf4d09ca6473ce4eddb47371fc098fe758c52


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.