var nbsp;stack nbsp;= nbsp;function nbsp;(cs) nbsp;{
nbsp; nbsp;return nbsp;c.container(function nbsp;(el, nbsp;context, nbsp;append) nbsp;{
nbsp; nbsp; nbsp; nbsp;var nbsp;viewports nbsp;= nbsp;[];
nbsp; nbsp; nbsp; nbsp;var nbsp;instances nbsp;= nbsp;[];
nbsp; nbsp; nbsp; nbsp;cs.map(function nbsp;(c, nbsp;index) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;var nbsp;viewport nbsp;= nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;top: nbsp;stream.create(),
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;height: nbsp;stream.create(),
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;};
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;viewports.push(viewport);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;instances.push(append(c, nbsp;viewport));
nbsp; nbsp; nbsp; nbsp;});
nbsp; nbsp; nbsp;
nbsp; nbsp; nbsp; nbsp;var nbsp;instanceMinWidthsS nbsp;= nbsp;stream.all(instances.map(function nbsp;(i) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;i.minWidth;
nbsp; nbsp; nbsp; nbsp;}));
nbsp; nbsp; nbsp; nbsp;var nbsp;instanceMinHeightsS nbsp;= nbsp;stream.all(instances.map(function nbsp;(i) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;i.minHeight;
nbsp; nbsp; nbsp; nbsp;}));
nbsp; nbsp; nbsp;
nbsp; nbsp; nbsp; nbsp;stream.combine([
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;context.width,
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;context.height,
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;instanceMinHeightsS,
nbsp; nbsp; nbsp; nbsp;], nbsp;function nbsp;(w, nbsp;h, nbsp;mhs) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;var nbsp;top nbsp;= nbsp;0;
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mhs.map(function nbsp;(mh, nbsp;index) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;var nbsp;viewport nbsp;= nbsp;viewports[index];
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;var nbsp;height nbsp;= nbsp;mh(w);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;stream.push(viewport.top, nbsp;top);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;stream.push(viewport.height, nbsp;height);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;top nbsp;+= nbsp;height;
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;});
nbsp; nbsp; nbsp; nbsp;});
nbsp; nbsp; nbsp;
nbsp; nbsp; nbsp; nbsp;return nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;minWidth: nbsp;stream.map(instanceMinWidthsS, nbsp;function nbsp;(mws) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;mws.reduce(function nbsp;(a, nbsp;b) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;Math.max(a, nbsp;b);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;}, nbsp;0);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;}),
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;minHeight: nbsp;stream.map(instanceMinHeightsS, nbsp;function nbsp;(mhs) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;function nbsp;(w) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;mhs.map(function nbsp;(mh) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;mh(w);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;}).reduce(function nbsp;(a, nbsp;b) nbsp;{
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;return nbsp;a nbsp;+ nbsp;b;
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;}, nbsp;0);
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;};
nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;}),
nbsp; nbsp; nbsp; nbsp;};
nbsp; nbsp;});
};