creation_sourcecode: {{
    "language": "Solidity",
    "sources": {
      "contracts/payloads/IGP15/PayloadIGP15.sol": {
        "content": "pragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\ninterface IGovernorBravo {\n    function _acceptAdmin() external;\n\n    function _setVotingDelay(uint newVotingDelay) external;\n\n    function _setVotingPeriod(uint newVotingPeriod) external;\n\n    function _acceptAdminOnTimelock() external;\n\n    function _setImplementation(address implementation_) external;\n\n    function propose(\n        address[] memory targets,\n        uint[] memory values,\n        string[] memory signatures,\n        bytes[] memory calldatas,\n        string memory description\n    ) external returns (uint);\n\n    function admin() external view returns (address);\n\n    function pendingAdmin() external view returns (address);\n\n    function timelock() external view returns (address);\n\n    function votingDelay() external view returns (uint256);\n\n    function votingPeriod() external view returns (uint256);\n}\n\ninterface ITimelock {\n    function acceptAdmin() external;\n\n    function setDelay(uint delay_) external;\n\n    function setPendingAdmin(address pendingAdmin_) external;\n\n    function queueTransaction(\n        address target,\n        uint value,\n        string memory signature,\n        bytes memory data,\n        uint eta\n    ) external returns (bytes32);\n\n    function executeTransaction(\n        address target,\n        uint value,\n        string memory signature,\n        bytes memory data,\n        uint eta\n    ) external payable returns (bytes memory);\n\n    function pendingAdmin() external view returns (address);\n\n    function admin() external view returns (address);\n\n    function delay() external view returns (uint256);\n}\n\ninterface AdminModuleStructs {\n    struct AddressBool {\n        address addr;\n        bool value;\n    }\n\n    struct AddressUint256 {\n        address addr;\n        uint256 value;\n    }\n\n    struct RateDataV1Params {\n        address token;\n        uint256 kink;\n        uint256 rateAtUtilizationZero;\n        uint256 rateAtUtilizationKink;\n        uint256 rateAtUtilizationMax;\n    }\n\n    struct RateDataV2Params {\n        address token;\n        uint256 kink1;\n        uint256 kink2;\n        uint256 rateAtUtilizationZero;\n        uint256 rateAtUtilizationKink1;\n        uint256 rateAtUtilizationKink2;\n        uint256 rateAtUtilizationMax;\n    }\n\n    struct TokenConfig {\n        address token;\n        uint256 fee;\n        uint256 threshold;\n    }\n\n    struct UserSupplyConfig {\n        address user;\n        address token;\n        uint8 mode;\n        uint256 expandPercent;\n        uint256 expandDuration;\n        uint256 baseWithdrawalLimit;\n    }\n\n    struct UserBorrowConfig {\n        address user;\n        address token;\n        uint8 mode;\n        uint256 expandPercent;\n        uint256 expandDuration;\n        uint256 baseDebtCeiling;\n        uint256 maxDebtCeiling;\n    }\n}\n\ninterface IFluidLiquidityAdmin {\n    /// @notice adds/removes auths. Auths generally could be contracts which can have restricted actions defined on contract.\n    ///         auths can be helpful in reducing governance overhead where it's not needed.\n    /// @param authsStatus_ array of structs setting allowed status for an address.\n    ///                     status true => add auth, false => remove auth\n    function updateAuths(\n        AdminModuleStructs.AddressBool[] calldata authsStatus_\n    ) external;\n\n    /// @notice adds/removes guardians. Only callable by Governance.\n    /// @param guardiansStatus_ array of structs setting allowed status for an address.\n    ///                         status true => add guardian, false => remove guardian\n    function updateGuardians(\n        AdminModuleStructs.AddressBool[] calldata guardiansStatus_\n    ) external;\n\n    /// @notice changes the revenue collector address (contract that is sent revenue). Only callable by Governance.\n    /// @param revenueCollector_  new revenue collector address\n    function updateRevenueCollector(address revenueCollector_) external;\n\n    /// @notice changes current status, e.g. for pausing or unpausing all user operations. Only callable by Auths.\n    /// @param newStatus_ new status\n    ///        status = 2 -> pause, status = 1 -> resume.\n    function changeStatus(uint256 newStatus_) external;\n\n    /// @notice                  update tokens rate data version 1. Only callable by Auths.\n    /// @param tokensRateData_   array of RateDataV1Params with rate data to set for each token\n    function updateRateDataV1s(\n        AdminModuleStructs.RateDataV1Params[] calldata tokensRateData_\n    ) external;\n\n    /// @notice                  update tokens rate data version 2. Only callable by Auths.\n    /// @param tokensRateData_   array of RateDataV2Params with rate data to set for each token\n    function updateRateDataV2s(\n        AdminModuleStructs.RateDataV2Params[] calldata tokensRateData_\n    ) external;\n\n    /// @notice updates token configs: fee charge on borrowers interest & storage update utilization threshold.\n    ///         Only callable by Auths.\n    /// @param tokenConfigs_ contains token address, fee & utilization threshold\n    function updateTokenConfigs(\n        AdminModuleStructs.TokenConfig[] calldata tokenConfigs_\n    ) external;\n\n    /// @notice updates user classes: 0 is for new protocols, 1 is for established protocols.\n    ///         Only callable by Auths.\n    /// @param userClasses_ struct array of uint256 value to assign for each user address\n    function updateUserClasses(\n        AdminModuleStructs.AddressUint256[] calldata userClasses_\n    ) external;\n\n    /// @notice sets user supply configs per token basis. Eg: with interest or interest-free and automated limits.\n    ///         Only callable by Auths.\n    /// @param userSupplyConfigs_ struct array containing user supply config, see `UserSupplyConfig` struct for more info\n    function updateUserSupplyConfigs(\n        AdminModuleStructs.UserSupplyConfig[] memory userSupplyConfigs_\n    ) external;\n\n    /// @notice setting user borrow configs per token basis. Eg: with interest or interest-free and automated limits.\n    ///         Only callable by Auths.\n    /// @param userBorrowConfigs_ struct array containing user borrow config, see `UserBorrowConfig` struct for more info\n    function updateUserBorrowConfigs(\n        AdminModuleStructs.UserBorrowConfig[] memory userBorrowConfigs_\n    ) external;\n\n    /// @notice pause operations for a particular user in class 0 (class 1 users can't be paused by guardians).\n    /// Only callable by Guardians.\n    /// @param user_          address of user to pause operations for\n    /// @param supplyTokens_  token addresses to pause withdrawals for\n    /// @param borrowTokens_  token addresses to pause borrowings for\n    function pauseUser(\n        address user_,\n        address[] calldata supplyTokens_,\n        address[] calldata borrowTokens_\n    ) external;\n\n    /// @notice unpause operations for a particular user in class 0 (class 1 users can't be paused by guardians).\n    /// Only callable by Guardians.\n    /// @param user_          address of user to unpause operations for\n    /// @param supplyTokens_  token addresses to unpause withdrawals for\n    /// @param borrowTokens_  token addresses to unpause borrowings for\n    function unpauseUser(\n        address user_,\n        address[] calldata supplyTokens_,\n        address[] calldata borrowTokens_\n    ) external;\n\n    /// @notice         collects revenue for tokens to configured revenueCollector address.\n    /// @param tokens_  array of tokens to collect revenue for\n    /// @dev            Note that this can revert if token balance is < revenueAmount (utilization > 100%)\n    function collectRevenue(address[] calldata tokens_) external;\n\n    /// @notice gets the current updated exchange prices for n tokens and updates all prices, rates related data in storage.\n    /// @param tokens_ tokens to update exchange prices for\n    /// @return supplyExchangePrices_ new supply rates of overall system for each token\n    /// @return borrowExchangePrices_ new borrow rates of overall system for each token\n    function updateExchangePrices(\n        address[] calldata tokens_\n    )\n        external\n        returns (\n            uint256[] memory supplyExchangePrices_,\n            uint256[] memory borrowExchangePrices_\n        );\n}\n\ninterface IFluidVaultT1Factory {\n    function deployVault(\n        address vaultDeploymentLogic_,\n        bytes calldata vaultDeploymentData_\n    ) external returns (address vault_);\n\n    function setVaultAuth(\n        address vault_,\n        address vaultAuth_,\n        bool allowed_\n    ) external;\n}\n\ninterface IFluidVaultT1DeploymentLogic {\n    function vaultT1(address supplyToken_, address borrowToken_) external;\n}\n\ninterface IFluidVaultT1 {\n    /// @notice updates the Vault oracle to `newOracle_`. Must implement the FluidOracle interface.\n    function updateOracle(address newOracle_) external;\n\n    /// @notice updates the all Vault core settings according to input params.\n    /// All input values are expected in 1e2 (1% = 100, 100% = 10_000).\n    function updateCoreSettings(\n        uint256 supplyRateMagnifier_,\n        uint256 borrowRateMagnifier_,\n        uint256 collateralFactor_,\n        uint256 liquidationThreshold_,\n        uint256 liquidationMaxLimit_,\n        uint256 withdrawGap_,\n        uint256 liquidationPenalty_,\n        uint256 borrowFee_\n    ) external;\n\n    /// @notice updates the allowed rebalancer to `newRebalancer_`.\n    function updateRebalancer(address newRebalancer_) external;\n\n    /// @notice updates the supply rate magnifier to `supplyRateMagnifier_`. Input in 1e2 (1% = 100, 100% = 10_000).\n    function updateSupplyRateMagnifier(uint supplyRateMagnifier_) external;\n\n    /// @notice updates the collateral factor to `collateralFactor_`. Input in 1e2 (1% = 100, 100% = 10_000).\n    function updateCollateralFactor(uint collateralFactor_) external;\n}\n\ninterface IFTokenAdmin {\n    /// @notice updates the rewards rate model contract.\n    ///         Only callable by LendingFactory auths.\n    /// @param rewardsRateModel_  the new rewards rate model contract address.\n    ///                           can be set to address(0) to set no rewards (to save gas)\n    function updateRewards(address rewardsRateModel_) external;\n\n    /// @notice Balances out the difference between fToken supply at Liquidity vs totalAssets().\n    ///         Deposits underlying from rebalancer address into Liquidity but doesn't mint any shares\n    ///         -> thus making deposit available as rewards.\n    ///         Only callable by rebalancer.\n    /// @return assets_ amount deposited to Liquidity\n    function rebalance() external payable returns (uint256 assets_);\n\n    /// @notice gets the liquidity exchange price of the underlying asset, calculates the updated exchange price (with reward rates)\n    ///         and writes those values to storage.\n    ///         Callable by anyone.\n    /// @return tokenExchangePrice_ exchange price of fToken share to underlying asset\n    /// @return liquidityExchangePrice_ exchange price at Liquidity for the underlying asset\n    function updateRates()\n        external\n        returns (uint256 tokenExchangePrice_, uint256 liquidityExchangePrice_);\n\n    /// @notice sends any potentially stuck funds to Liquidity contract. Only callable by LendingFactory auths.\n    function rescueFunds(address token_) external;\n\n    /// @notice Updates the rebalancer address (ReserveContract). Only callable by LendingFactory auths.\n    function updateRebalancer(address rebalancer_) external;\n}\n\ncontract PayloadIGP15 {\n    uint256 public constant PROPOSAL_ID = 15;\n\n    address public constant PROPOSER =\n        0xA45f7bD6A5Ff45D31aaCE6bCD3d426D9328cea01;\n\n    address public constant PROPOSER_AVO_MULTISIG =\n        0x059A94A72951c0ae1cc1CE3BF0dB52421bbE8210;\n\n    IGovernorBravo public constant GOVERNOR =\n        IGovernorBravo(0x0204Cd037B2ec03605CFdFe482D8e257C765fA1B);\n    ITimelock public immutable TIMELOCK =\n        ITimelock(0x2386DC45AdDed673317eF068992F19421B481F4c);\n\n    address public immutable ADDRESS_THIS;\n\n    address public constant TEAM_MULTISIG =\n        0x4F6F977aCDD1177DCD81aB83074855EcB9C2D49e;\n\n    IFluidLiquidityAdmin public constant LIQUIDITY =\n        IFluidLiquidityAdmin(0x52Aa899454998Be5b000Ad077a46Bbe360F4e497);\n    IFluidVaultT1Factory public constant VAULT_T1_FACTORY =\n        IFluidVaultT1Factory(0x324c5Dc1fC42c7a4D43d92df1eBA58a54d13Bf2d);\n    IFluidVaultT1DeploymentLogic public constant VAULT_T1_DEPLOYMENT_LOGIC =\n        IFluidVaultT1DeploymentLogic(\n            0x15f6F562Ae136240AB9F4905cb50aCA54bCbEb5F\n        );\n\n    address public constant F_USDT = 0x5C20B550819128074FD538Edf79791733ccEdd18;\n    address public constant F_USDC = 0x9Fb7b4477576Fe5B32be4C1843aFB1e55F251B33;\n\n    address public constant sUSDe_ADDRESS =\n        0x9D39A5DE30e57443BfF2A8307A4256c8797A3497;\n    address public constant USDC_ADDRESS =\n        0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;\n    address public constant USDT_ADDRESS =\n        0xdAC17F958D2ee523a2206206994597C13D831ec7;\n\n    constructor() {\n        ADDRESS_THIS = address(this);\n    }\n\n    function propose(string memory description) external {\n        require(\n            msg.sender == PROPOSER ||\n                msg.sender == TEAM_MULTISIG ||\n                address(this) == PROPOSER_AVO_MULTISIG,\n            \"msg.sender-not-allowed\"\n        );\n\n        uint256 totalActions = 1;\n        address[] memory targets = new address[](totalActions);\n        uint256[] memory values = new uint256[](totalActions);\n        string[] memory signatures = new string[](totalActions);\n        bytes[] memory calldatas = new bytes[](totalActions);\n\n        // Action 1: call executePayload on timelock contract to execute payload related to Fluid\n        targets[0] = address(TIMELOCK);\n        values[0] = 0;\n        signatures[0] = \"executePayload(address,string,bytes)\";\n        calldatas[0] = abi.encode(ADDRESS_THIS, \"execute()\", abi.encode());\n\n        uint256 proposedId = GOVERNOR.propose(\n            targets,\n            values,\n            signatures,\n            calldatas,\n            description\n        );\n\n        require(proposedId == PROPOSAL_ID, \"PROPOSAL_IS_NOT_SAME\");\n    }\n\n    function execute() external {\n        require(address(this) == address(TIMELOCK), \"not-valid-caller\");\n\n        // Action 1: Set market rates for sUSDe on Liquidity.\n        action1();\n\n        // Action 2: Set token config for sUSDe on Liquidity.\n        action2();\n\n        // Action 3: Deploy sUSDe/USDC vault and set related configs.\n        action3();\n\n        // Action 4: Deploy sUSDe/USDT vault and set related configs.\n        action4();\n\n        // Action 5: Update market rates for USDC.\n        action5();\n\n        // Action 6: Update market rates for USDT.\n        action6();\n\n        // Action 7: Update reward rates for USDC.\n        action7();\n\n        // Action 8: Update reward rates for USDT.\n        action8();\n    }\n\n    function verifyProposal() external view {}\n\n    /***********************************|\n    |     Proposal Payload Actions      |\n    |__________________________________*/\n\n    /// @notice Action 1: Set market rates for sUSDe on Liquidity.\n    function action1() internal {\n        AdminModuleStructs.RateDataV2Params[]\n            memory params_ = new AdminModuleStructs.RateDataV2Params[](1);\n\n        params_[0] = AdminModuleStructs.RateDataV2Params({\n            token: sUSDe_ADDRESS, // sUSDe\n            kink1: 50 * 1e2, // 50%\n            kink2: 80 * 1e2, // 80%\n            rateAtUtilizationZero: 0, // 0%\n            rateAtUtilizationKink1: 20 * 1e2, // 20%\n            rateAtUtilizationKink2: 40 * 1e2, // 40%\n            rateAtUtilizationMax: 100 * 1e2 // 100%\n        });\n\n        LIQUIDITY.updateRateDataV2s(params_);\n    }\n\n    /// @notice Action 2: Set token config for sUSDe on Liquidity.\n    function action2() internal {\n        AdminModuleStructs.TokenConfig[]\n            memory params_ = new AdminModuleStructs.TokenConfig[](1);\n\n        params_[0] = AdminModuleStructs.TokenConfig({\n            token: sUSDe_ADDRESS, // sUSDe\n            threshold: 0.3 * 1e2, // 0.3\n            fee: 10 * 1e2 // 10%\n        });\n\n        LIQUIDITY.updateTokenConfigs(params_);\n    }\n\n    /// @notice Action 3: Deploy sUSDe/USDC vault and set related configs.\n    function action3() internal {\n        deploy_sUSDe_USDC_VAULT();\n    }\n\n    /// @notice Action 4: Deploy sUSDe/USDT vault and set related configs.\n    function action4() internal {\n        deploy_sUSDe_USDT_VAULT();\n    }\n\n    /// @notice Action 5: Update market rates for USDC.\n    function action5() internal {\n        AdminModuleStructs.RateDataV2Params[]\n            memory params_ = new AdminModuleStructs.RateDataV2Params[](1);\n\n        params_[0] = AdminModuleStructs.RateDataV2Params({\n            token: USDC_ADDRESS, // USDC\n            kink1: 80 * 1e2, // 80%\n            kink2: 93 * 1e2, // 93%\n            rateAtUtilizationZero: 0, // 0%\n            rateAtUtilizationKink1: 10 * 1e2, // 10%\n            rateAtUtilizationKink2: 15 * 1e2, // 15%\n            rateAtUtilizationMax: 25 * 1e2 // 25%\n        });\n\n        LIQUIDITY.updateRateDataV2s(params_);\n    }\n\n    /// @notice Action 6: Update market rates for USDT.\n    function action6() internal {\n        AdminModuleStructs.RateDataV2Params[]\n            memory params_ = new AdminModuleStructs.RateDataV2Params[](1);\n\n        params_[0] = AdminModuleStructs.RateDataV2Params({\n            token: USDT_ADDRESS, // USDT\n            kink1: 80 * 1e2, // 80%\n            kink2: 93 * 1e2, // 93%\n            rateAtUtilizationZero: 0, // 0%\n            rateAtUtilizationKink1: 10 * 1e2, // 10%\n            rateAtUtilizationKink2: 15 * 1e2, // 15%\n            rateAtUtilizationMax: 25 * 1e2 // 25%\n        });\n\n        LIQUIDITY.updateRateDataV2s(params_);\n    }\n\n    /// @notice Action 7: Update rewards for fUSDC.\n    function action7() internal {\n        IFTokenAdmin(F_USDC).updateRewards(\n            0x6CC89782495A2162b2A4f5b206E2A06Dc8675090\n        );\n    }\n\n    /// @notice Action 8: Update rewards for fUSDT.\n    function action8() internal {\n        IFTokenAdmin(F_USDT).updateRewards(\n            0x6CC89782495A2162b2A4f5b206E2A06Dc8675090\n        );\n    }\n\n    /***********************************|\n    |     Vault Deployment Helper       |\n    |__________________________________*/\n    function deploy_sUSDe_USDC_VAULT() internal {\n        // Deploy sUSDe/USDC vault.\n        address vault_ = VAULT_T1_FACTORY.deployVault(\n            address(VAULT_T1_DEPLOYMENT_LOGIC),\n            abi.encodeWithSelector(\n                IFluidVaultT1DeploymentLogic.vaultT1.selector,\n                sUSDe_ADDRESS, // sUSDe,\n                USDC_ADDRESS // USDC\n            )\n        );\n\n        // Set user supply config for the vault on Liquidity Layer.\n        {\n            AdminModuleStructs.UserSupplyConfig[]\n                memory configs_ = new AdminModuleStructs.UserSupplyConfig[](1);\n\n            configs_[0] = AdminModuleStructs.UserSupplyConfig({\n                user: address(vault_),\n                token: sUSDe_ADDRESS,\n                mode: 1,\n                expandPercent: 25 * 1e2, // 25%\n                expandDuration: 12 hours,\n                baseWithdrawalLimit: 7_500_000 * 1e18 // 7.5M\n            });\n\n            LIQUIDITY.updateUserSupplyConfigs(configs_);\n        }\n\n        // Set user borrow config for the vault on Liquidity Layer.\n        {\n            AdminModuleStructs.UserBorrowConfig[]\n                memory configs_ = new AdminModuleStructs.UserBorrowConfig[](1);\n\n            configs_[0] = AdminModuleStructs.UserBorrowConfig({\n                user: address(vault_),\n                token: USDC_ADDRESS,\n                mode: 1,\n                expandPercent: 20 * 1e2, // 20%\n                expandDuration: 12 hours,\n                baseDebtCeiling: 7_500_000 * 1e6, // 7.5M\n                maxDebtCeiling: 20_000_000 * 1e6  // 20M\n            });\n\n            LIQUIDITY.updateUserBorrowConfigs(configs_);\n        }\n\n        // Update core settings on sUSDe/USDC vault.\n        {\n            IFluidVaultT1(vault_).updateCoreSettings(\n                100 * 1e2, // 1x     supplyRateMagnifier\n                100 * 1e2, // 1x     borrowRateMagnifier\n                88 * 1e2, // 88%     collateralFactor\n                90 * 1e2, // 90%    liquidationThreshold\n                95 * 1e2, // 95%    liquidationMaxLimit\n                5 * 1e2, // 5%     withdrawGap\n                2 * 1e2, // 2%     liquidationPenalty\n                0 // 0%     borrowFee\n            );\n        }\n\n        // Update oracle on sUSDe/USDC vault.\n        {\n            IFluidVaultT1(vault_).updateOracle(\n                0x7779EC4694752A118580cc8ad28B9A11F7e3bB12\n            );\n        }\n\n        // Update rebalancer on sUSDe/USDC vault.\n        {\n            IFluidVaultT1(vault_).updateRebalancer(\n                0x264786EF916af64a1DB19F513F24a3681734ce92\n            );\n        }\n\n        // Set Config hander as auth on vault factory for sUSDe/USDC vault.\n        {\n            VAULT_T1_FACTORY.setVaultAuth(\n                vault_,\n                0x36639DAd77eC858574aaF07a68bBa62b7db19FfA,\n                true\n            );\n        }\n    }\n\n    function deploy_sUSDe_USDT_VAULT() internal {\n        // Deploy sUSDe/USDT vault.\n        address vault_ = VAULT_T1_FACTORY.deployVault(\n            address(VAULT_T1_DEPLOYMENT_LOGIC),\n            abi.encodeWithSelector(\n                IFluidVaultT1DeploymentLogic.vaultT1.selector,\n                sUSDe_ADDRESS, // sUSDe,\n                USDT_ADDRESS // USDT\n            )\n        );\n\n        // Set user supply config for the vault on Liquidity Layer.\n        {\n            AdminModuleStructs.UserSupplyConfig[]\n                memory configs_ = new AdminModuleStructs.UserSupplyConfig[](1);\n\n            configs_[0] = AdminModuleStructs.UserSupplyConfig({\n                user: address(vault_),\n                token: sUSDe_ADDRESS,\n                mode: 1,\n                expandPercent: 25 * 1e2, // 25%\n                expandDuration: 12 hours,\n                baseWithdrawalLimit: 7_500_000 * 1e18 // 7.5M\n            });\n\n            LIQUIDITY.updateUserSupplyConfigs(configs_);\n        }\n\n        // Set user borrow config for the vault on Liquidity Layer.\n        {\n            AdminModuleStructs.UserBorrowConfig[]\n                memory configs_ = new AdminModuleStructs.UserBorrowConfig[](1);\n\n            configs_[0] = AdminModuleStructs.UserBorrowConfig({\n                user: address(vault_),\n                token: USDT_ADDRESS,\n                mode: 1,\n                expandPercent: 20 * 1e2, // 20%\n                expandDuration: 12 hours,\n                baseDebtCeiling: 7_500_000 * 1e6, // 7.5M\n                maxDebtCeiling: 20_000_000 * 1e6  // 20M\n            });\n\n            LIQUIDITY.updateUserBorrowConfigs(configs_);\n        }\n\n        // Update core settings on sUSDe/USDT vault.\n        {\n            IFluidVaultT1(vault_).updateCoreSettings(\n                100 * 1e2, // 1x     supplyRateMagnifier\n                100 * 1e2, // 1x     borrowRateMagnifier\n                88 * 1e2, // 88%     collateralFactor\n                90 * 1e2, // 90%    liquidationThreshold\n                95 * 1e2, // 95%    liquidationMaxLimit\n                5 * 1e2, // 5%     withdrawGap\n                2 * 1e2, // 2%     liquidationPenalty\n                0 // 0%     borrowFee\n            );\n        }\n\n        // Update oracle on sUSDe/USDT vault.\n        {\n            IFluidVaultT1(vault_).updateOracle(\n                0x7779EC4694752A118580cc8ad28B9A11F7e3bB12\n            );\n        }\n\n        // Update rebalancer on sUSDe/USDT vault.\n        {\n            IFluidVaultT1(vault_).updateRebalancer(\n                0x264786EF916af64a1DB19F513F24a3681734ce92\n            );\n        }\n\n        // Set Config hander as auth on vault factory for sUSDe/USDT vault.\n        {\n            VAULT_T1_FACTORY.setVaultAuth(\n                vault_,\n                0xafE3974f4916140a093F1de7Fc064A3Da220DD41,\n                true\n            );\n        }\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "evm.bytecode",
            "evm.deployedBytecode",
            "devdoc",
            "userdoc",
            "metadata",
            "abi"
          ]
        }
      },
      "libraries": {}
    }
  }}