```\nFile: LMPVault.sol\n    function redeem(\n        uint256 shares,\n        address receiver,\n        address owner\n    ) public virtual override nonReentrant noNavDecrease ensureNoNavOps returns (uint256 assets) {\n        uint256 maxShares = maxRedeem(owner);\n        if (shares > maxShares) {\n            revert ERC4626ExceededMaxRedeem(owner, shares, maxShares);\n        }\n        uint256 possibleAssets = previewRedeem(shares); // @audit-info  round down, which is correct because user won't get too many\n\n        assets = _withdraw(possibleAssets, shares, receiver, owner);\n    }\n```\n