contract VWETH is VTokenBase("VWETH Pool Token", "VWETH", "ETH-A") {
    /**
     * @dev Handle incoming ETH to the contract address.
     */
    receive() external payable {
        if (lockEth) {
            deposit();
        }
    }

    /**
     * @dev Receives ETH and grants new tokens to the sender depending on the
     * value of each contract's share.
     */
    function deposit() public override payable nonReentrant {
        _deposit(msg.value);
    }

    function withdraw(uint256 shares) public nonReentrant {
        _withdraw(shares);
    }

    function sweepErc20(address erc20) public {
        lockEth = false;
        _sweepErc20(erc20, ethAddress);
        cm.depositCollateral{value: address(this).balance}(vaultNum);
        lockEth = true;
    }

    function _beforeMinting(uint256 amount) internal override {
        cm.depositCollateral{value: amount}(vaultNum);
    }
}
function deposit() public override payable nonReentrant {
    _deposit(msg.value);
}

/**
 * @dev Receives ETH and grants new tokens to the sender depending on the
 * value of each contract's share.
 */