minTokenAmounts_ is useless in new configuration and doesn't provide any real slippage protection
BLVaultLido#withdraw skims off extra stETH from the user that results from oracle arb. The problem with this is that minTokenAmounts_ no longer provides any slippage protection because it only ensures that enough is received from the liquidity pool but never enforces how much is received by the user.\\nBLVaultLido.sol#L224-L247\\n```\\n    _exitBalancerPool(lpAmount_, minTokenAmounts_);\\n\\n    // Calculate OHM and wstETH amounts received\\n    uint256 ohmAmountOut = ohm.balanceOf(address(this)) - ohmBefore;\\n    uint256 wstethAmountOut = wsteth.balanceOf(address(this)) - wstethBefore;\\n\\n    // Calculate oracle expected wstETH received amount\\n    // getTknOhmPrice returns the amount of wstETH per 1 OHM based on the oracle price\\n    uint256 wstethOhmPrice = manager.getTknOhmPrice();\\n    uint256 expectedWstethAmountOut = (ohmAmountOut * wstethOhmPrice) / _OHM_DECIMALS;\\n\\n    // Take any arbs relative to the oracle price for the Treasury and return the rest to the owner\\n    uint256 wstethToReturn = wstethAmountOut > expectedWstethAmountOut\\n        ? expectedWstethAmountOut\\n        : wstethAmountOut;\\n    if (wstethAmountOut > wstethToReturn)\\n        wsteth.safeTransfer(TRSRY(), wstethAmountOut - wstethToReturn);\\n\\n    // Burn OHM\\n    ohm.increaseAllowance(MINTR(), ohmAmountOut);\\n    manager.burnOhmFromVault(ohmAmountOut);\\n\\n    // Return wstETH to owner\\n    wsteth.safeTransfer(msg.sender, wstethToReturn);\\n```\\n\\nminTokenAmounts_ only applies to the removal of liquidity. Since wstETH is skimmed off to the treasury the user no longer has any way to protect themselves from slippage. As shown in my other submission, oracle slop can lead to loss of funds due to this skimming.
Allow the user to specify the amount of wstETH they receive AFTER the arb is skimmed.
Users cannot protect themselves from oracle slop/wstETH skimming
```\\n    _exitBalancerPool(lpAmount_, minTokenAmounts_);\\n\\n    // Calculate OHM and wstETH amounts received\\n    uint256 ohmAmountOut = ohm.balanceOf(address(this)) - ohmBefore;\\n    uint256 wstethAmountOut = wsteth.balanceOf(address(this)) - wstethBefore;\\n\\n    // Calculate oracle expected wstETH received amount\\n    // getTknOhmPrice returns the amount of wstETH per 1 OHM based on the oracle price\\n    uint256 wstethOhmPrice = manager.getTknOhmPrice();\\n    uint256 expectedWstethAmountOut = (ohmAmountOut * wstethOhmPrice) / _OHM_DECIMALS;\\n\\n    // Take any arbs relative to the oracle price for the Treasury and return the rest to the owner\\n    uint256 wstethToReturn = wstethAmountOut > expectedWstethAmountOut\\n        ? expectedWstethAmountOut\\n        : wstethAmountOut;\\n    if (wstethAmountOut > wstethToReturn)\\n        wsteth.safeTransfer(TRSRY(), wstethAmountOut - wstethToReturn);\\n\\n    // Burn OHM\\n    ohm.increaseAllowance(MINTR(), ohmAmountOut);\\n    manager.burnOhmFromVault(ohmAmountOut);\\n\\n    // Return wstETH to owner\\n    wsteth.safeTransfer(msg.sender, wstethToReturn);\\n```\\n