function parseTable(t) {
const total_rows = t.rows.length;
const rows = t.rows;
const rocc = [];
const find_index = (n, start) => {
for (let i=start,occur=n; i <= rocc.length + n; ++i) {
if (occur === 0) return i-n;
if (rocc[i]) occur = n;
else occur--;
}
}
for (let i=0; i<total_rows; ++i) {
const row = rows[i];
const cells = row.cells;
const total_cells = row.cells.length;
let idx = 0 ;
for (let c=0; c<total_cells; ++c) {
const cell = cells[c];
const cspan = cell.hasAttribute('colspan') ? parseInt(cell.getAttribute('colspan')) : 1;
const rspan = cell.hasAttribute('rowspan') ? parseInt(cell.getAttribute('rowspan')) : 1;
idx = find_index(cspan, idx);
for (let i=idx; i<idx+cspan; ++i) rocc[i] = rspan;
}
for (let i=0; i<rocc.length; ++i) if (rocc[i]) --rocc[i];
}
return rocc;
}