Users withdraw more assets than should when `mintFee` was called long ago
The amount of LP-tokens to withdraw is calculated at the `GMXWithdraw.withdraw` before the `mintFee` function is called. The `mintFee` function increases the `totalSupply` amount. This way users receive more tokens than should be at the current timestamp. The longer the period since the last `mintFee` was called the more excess tokens the user receives.\\nThe protocol mints vault token shares as management fees to protocol treasury with the `mintFee` function. This increases the `totalSupply` of the shares. The amount of minted fees depends on the time since the last `mintFee` call.\\n```\\n  function mintFee() public {\\n    _mint(_store.treasury, GMXReader.pendingFee(_store));\\n    _store.lastFeeCollected = block.timestamp;\\n  }\\n```\\n\\nWhile withdrawal amount of LP-token can be calculated with outdated totalSupply:\\n```\\n67    _wc.shareRatio = wp.shareAmt\\n68      * SAFE_MULTIPLIER\\n69      / IERC20(address(self.vault)).totalSupply();\\n70    _wc.lpAmt = _wc.shareRatio\\n71      * GMXReader.lpAmt(self)\\n72      / SAFE_MULTIPLIER;\\n\\n101    self.vault.mintFee();\\n```\\n\\nThe `mintFee` is called only after this calculation.
Users withdraw more assets than should when `mintFee` was called long ago\\nConsider calling the `mintFee` before the `_wc.shareRatio` calculation.
Users can receive excess amounts of tokens during withdrawal. Other users and the protocol management lose value of their shares.\\nTools used\\nManual Review
```\\n  function mintFee() public {\\n    _mint(_store.treasury, GMXReader.pendingFee(_store));\\n    _store.lastFeeCollected = block.timestamp;\\n  }\\n```\\n