#include <iostream>
#include <cmath>
#include <stack>

using namespace std;

struct rectangle { int height, pos; };

int main()
{
    int H,W;
    while(cin >> H >> W && H) {
        char f[H][W];
        for(int i = 0; i < H; i++) 
            for(int j = 0; j < W; j++) 
                cin >> f[i][j];

        //init
        int dp[H+1][W+1];
        for(int j = 0; j < W; j++) 
            dp[0][j] = (f[0][j] == '*') ? 0 : 1;
        
        //create histgram
        for(int j = 0; j < W; j++) 
            for(int i = 1; i < H; i++) 
                dp[i][j] = (f[i][j] == '*') ? 0 : dp[i-1][j] + 1;

        //search histgram
        int ans = 0;
        for(int i = 0; i < H; i++) {
            stack<rectangle> stk;
            dp[i][W] = 0;
            for(int j = 0; j <= W; j++) {
                int height = dp[i][j], pos = j;
                if(stk.empty()) {
                    stk.push((rectangle){height, pos});
                } else {
                    if(stk.top().height < height) {
                        stk.push((rectangle){height, pos});
                    } else {
                        rectangle r;
                        do {
                            r = stk.top();
                            stk.pop();
                            ans = max(ans, (pos - r.pos) * r.height);
                        } while(!stk.empty() && stk.top().height >= height);
                        stk.push((rectangle){height, r.pos});
                    }
                }
            }
        }
        cout << ans << endl;
    }
}