forked from crossfilter/crossfilter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrossfilter.min.js
More file actions
2 lines (2 loc) · 96.4 KB
/
crossfilter.min.js
File metadata and controls
2 lines (2 loc) · 96.4 KB
1
2
// https://github.com/smartdataHQ/crossfilter v3.0.2 Copyright 2026 Mike Bostock
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).crossfilter=r()}(this,(function(){"use strict";let e=a,r=a,n=a,t=function(e,r){var n=e.length;for(;n<r;)e[n++]=0;return e},o=function(e,r){if(r>32)throw new Error("invalid array width!");return e};function a(e){for(var r=new Array(e),n=-1;++n<e;)r[n]=0;return r}function u(r){this.length=r,this.subarrays=1,this.width=8,this.masks={0:0},this[0]=e(r)}"undefined"!=typeof Uint8Array&&(e=function(e){return new Uint8Array(e)},r=function(e){return new Uint16Array(e)},n=function(e){return new Uint32Array(e)},t=function(e,r){if(e.length>=r)return e;var n=new e.constructor(r);return n.set(e),n},o=function(e,t){var o;switch(t){case 16:o=r(e.length);break;case 32:o=n(e.length);break;default:throw new Error("invalid array width!")}return o.set(e),o}),u.prototype.lengthen=function(e){var r,n;for(r=0,n=this.subarrays;r<n;++r)this[r]=t(this[r],e);this.length=e},u.prototype.add=function(){var r,n,t,a,u;for(a=0,u=this.subarrays;a<u;++a)if(t=(~(r=this.masks[a])&r+1)>>>0,!((n=this.width-32*a)>=32)||t)return n<32&&t&1<<n&&(this[a]=o(this[a],n<<=1),this.width=32*a+n),this.masks[a]|=t,{offset:a,one:t};return this[this.subarrays]=e(this.length),this.masks[this.subarrays]=1,this.width+=8,{offset:this.subarrays++,one:1}},u.prototype.copy=function(e,r){var n,t;for(n=0,t=this.subarrays;n<t;++n)this[n][e]=this[n][r]},u.prototype.truncate=function(e){var r,n;for(r=0,n=this.subarrays;r<n;++r)for(var t=this.length-1;t>=e;t--)this[r][t]=0;this.length=e},u.prototype.zero=function(e){if(1===this.subarrays)return!this[0][e];var r,n;for(r=0,n=this.subarrays;r<n;++r)if(this[r][e])return!1;return!0},u.prototype.zeroExcept=function(e,r,n){if(1===this.subarrays){var t=this[0][e];return!(0===r?t&n:t)}var o,a;for(o=0,a=this.subarrays;o<a;++o)if(o===r?this[o][e]&n:this[o][e])return!1;return!0},u.prototype.zeroExceptMask=function(e,r){if(1===this.subarrays)return!(this[0][e]&r[0]);var n,t;for(n=0,t=this.subarrays;n<t;++n)if(this[n][e]&r[n])return!1;return!0},u.prototype.only=function(e,r,n){if(1===this.subarrays)return this[0][e]===(0===r?n:0);var t,o;for(t=0,o=this.subarrays;t<o;++t)if(this[t][e]!=(t===r?n:0))return!1;return!0},u.prototype.onlyExcept=function(e,r,n,t,o){if(1===this.subarrays){var a=this[0][e];return 0===r&&(a=(a&n)>>>0),a===(0===t?o:0)}var u,s,i;for(s=0,i=this.subarrays;s<i;++s)if(u=this[s][e],s===r&&(u=(u&n)>>>0),u!=(s===t?o:0))return!1;return!0};var s={array8:e,array16:r,array32:n,arrayLengthen:t,arrayWiden:o,bitarray:u};var i=(e,r)=>function(n){var t=n.length;return[e.left(n,r,0,t),e.right(n,r,0,t)]},l=(e,r)=>{var n=r[0],t=r[1];return function(r){var o=r.length;return[e.left(r,n,0,o),e.left(r,t,0,o)]}},f=e=>[0,e.length],c=e=>e,d=()=>null,h=()=>0;function p(e){function r(e,r,t){for(var o=t-r,a=1+(o>>>1);--a>0;)n(e,a,o,r);return e}function n(r,n,t,o){for(var a,u=r[--o+n],s=e(u);(a=n<<1)<=t&&(a<t&&e(r[o+a])>e(r[o+a+1])&&a++,!(s<=e(r[o+a])));)r[o+n]=r[o+a],n=a;r[o+n]=u}return r.sort=function(e,r,t){for(var o,a=t-r;--a>0;)o=e[r],e[r]=e[r+a],e[r+a]=o,n(e,1,a,r);return e},r}const m=p(c);function g(e){var r=m.by(e);return function(n,t,o,a){var u,s,i,l=new Array(a=Math.min(o-t,a));for(s=0;s<a;++s)l[s]=n[t++];if(r(l,0,a),t<o){u=e(l[0]);do{e(i=n[t])>u&&(l[0]=i,u=e(r(l,0,a)[0]))}while(++t<o)}return l}}m.by=p;const v=g(c);function y(e){if(null==e||"object"!=typeof e)return e;if("function"==typeof e.valueOf){var r=e.valueOf();if(r!==e)return r}if("function"==typeof e.toString){var n=e.toString();if(n!==e)return n}return e}function b(e){if(null===e)return 0;switch(typeof e){case"boolean":return 1;case"number":return 2;case"bigint":return 3;case"string":return 4;case"symbol":return 5;case"undefined":return 6;default:return 7}}function w(e,r){var n,t,o,a,u,s,i=y(e),l=y(r);if(Object.is(i,l)||i===l)return 0;if("symbol"!=typeof i&&"symbol"!=typeof l){if(i<l)return-1;if(i>l)return 1;if(function(e,r){if("symbol"==typeof e||"symbol"==typeof r)return!1;var n=Number(e);return n===Number(r)&&n==n}(i,l))return 0}return(n=b(i))!==(t=b(l))?n-t:5===n?(o=i.description)===(a=l.description)?0:null==o?-1:null==a?1:o<a?-1:1:(u=String(i))<(s=String(l))?-1:u>s?1:0}function k(e){var r=y(e);return null===r||void 0!==r&&("number"!=typeof r||r==r)}function x(e){function r(r,n,t,o){for(;t<o;){var a=t+o>>>1;w(n,e(r[a]))<0?o=a:t=a+1}return t}return r.right=r,r.left=function(r,n,t,o){for(;t<o;){var a=t+o>>>1;w(e(r[a]),n)<0?t=a+1:o=a}return t},r}v.by=g;const I=x(c);I.by=x;var F=(e,r,n)=>{for(var t=0,o=r.length,a=n?JSON.parse(JSON.stringify(e)):new Array(o);t<o;++t)a[t]=e[r[t]];return a};var A=e=>e+1,S=e=>e-1,C=e=>function(r,n){return r+ +e(n)},B=e=>function(r,n){return r-e(n)};const R=(e,r)=>{const n=e[r];return"function"==typeof n?n.call(e):n},j=/\[([\w\d]+)\]/g;var U=(e,r)=>function(e,r,n,t,o){for(o in t=(n=n.split(".")).splice(-1,1),n)r=r[n[o]]=r[n[o]]||{};return e(r,t)}(R,e,r.replace(j,".$1"));const T="undefined"!=typeof Symbol?Symbol.for("crossfilter3.columnarBatch"):"__crossfilter3ColumnarBatch__";function L(e){if("symbol"==typeof e)return!1;var r=Number(e);return String(r)===e&&r>=0&&Number.isInteger(r)}function E(e){return null==e?function(){}:"function"==typeof e.get?function(r){return e.get(r)}:"function"==typeof e.at?function(r){return e.at(r)}:function(r){return e[r]}}function M(e,r){if(null!=e)return"function"==typeof e.get?e.get(r):"function"==typeof e.at?e.at(r):e[r]}function P(e){if(null!=e)return"number"==typeof e.length?e.length:"number"==typeof e.size?e.size:void 0}function O(e){return e&&e[T]?e[T]:null}function N(e,r){if(e.materialized[r])return e.rows[r];var n;if("function"==typeof e.rowFactory)n=e.rowFactory(r,e.columns,e.fields,e.accessors);else{n={};for(var t=0;t<e.fields.length;++t)n[e.fields[t]]=e.accessors[t](r)}return e.rows[r]=n,e.materialized[r]=1,n}function _(e,r){var n=e.length;return function(t){for(var o={},a=0;a+3<n;a+=4)o[e[a]]=r[a](t),o[e[a+1]]=r[a+1](t),o[e[a+2]]=r[a+2](t),o[e[a+3]]=r[a+3](t);for(;a<n;++a)o[e[a]]=r[a](t);return o}}function V(e,r){for(var n=function(e,r){return r&&r.length?r.slice():Object.keys(e)}(e,(r=r||{}).fields),t=function(e,r,n){if("number"==typeof n)return n;for(var t=0;t<r.length;++t){var o=P(e[r[t]]);if("number"==typeof o)return o}return 0}(e,n,r.length),o=function(e,r,n,t){if(!t)return e;for(var o=Object.assign({},e),a=0;a<r.length;++a){var u=r[a],s=t[u];if("function"==typeof s){for(var i=new Array(n),l=0;l<n;++l)i[l]=s(M(e[u],l),l);o[u]=i}}return o}(e,n,t,r.transforms),a=new Array(n.length),u={},s=0;s<n.length;++s)a[s]=E(o[n[s]]),u[n[s]]=a[s];var i=new Array(t),l={accessors:a,accessorsByField:u,columns:o,fields:n,length:t,materialized:new Uint8Array(t),rowFactory:"function"==typeof r.rowFactory?r.rowFactory:_(n,a),rows:i};return Object.defineProperty(i,T,{configurable:!0,enumerable:!1,value:l,writable:!1}),new Proxy(i,{get:function(e,r,n){if(r===T)return l;if(L(r)){var t=Number(r);if(t<0||t>=l.length)return;return N(l,t)}return Reflect.get(e,r,n)},has:function(e,r){if(L(r)){var n=Number(r);return n>=0&&n<l.length}return Reflect.has(e,r)}})}function z(e,r,n){if(null!=e){if("function"==typeof e.getChild){var t=e.getChild(r);if(null!=t)return t}if("function"==typeof e.getColumn){var o=e.getColumn(r);if(null!=o)return o}return"function"==typeof e.getChildAt?e.getChildAt(n):e[r]}}function K(e,r){for(var n=function(e,r){return r&&r.length?r.slice():e&&e.schema&&Array.isArray(e.schema.fields)?e.schema.fields.map((function(e){return e.name})):e&&Array.isArray(e.columnNames)?e.columnNames.slice():[]}(e,(r=r||{}).fields),t={},o=0;o<n.length;++o)t[n[o]]=z(e,n[o],o);return V(t,{fields:n,length:"number"==typeof e.numRows?e.numRows:r.length,rowFactory:r.rowFactory,transforms:r.transforms})}var q={wasm:!0},D={error:null,runtime:null,supported:"undefined"!=typeof WebAssembly&&"function"==typeof WebAssembly.Module&&"function"==typeof WebAssembly.Instance};function G(e){var r=[];do{var n=127&e;(e>>>=7)&&(n|=128),r.push(n)}while(e);return r}function W(e){for(var r=[],n=0;n<e.length;++n)r.push(e.charCodeAt(n));return G(r.length).concat(r)}function Z(e,r){return[e].concat(G(r.length),r)}function J(){var e,r,n,t,o,a,u,s=new WebAssembly.Module((e=Z(1,[].concat(G(2),[96],G(5),[127,127,127,127,127],G(1),[127],[96],G(6),[127,127,127,127,127,127],G(1),[127])),r=Z(3,[].concat(G(2),G(0),G(1))),n=Z(5,[].concat(G(1),[0],G(1))),t=Z(7,[].concat(G(3),W("memory"),[2],G(0),W("filterInU32"),[0],G(0),W("markFilterInU32"),[0],G(1))),o=[].concat(G(1),G(4),[127],[65,0,33,5],[65,0,33,6],[2,64],[3,64],[32,5,32,1,73,69,13,1],[32,0,32,5,65,4,108,106,40,2,0,33,7],[65,0,33,8],[2,64],[3,64],[32,8,32,3,73,69,13,1],[32,7],[32,2,32,8,65,4,108,106,40,2,0],[70],[4,64],[32,4,32,6,65,4,108,106],[32,5],[54,2,0],[32,6,65,1,106,33,6],[12,2],[11],[32,8,65,1,106,33,8],[12,0],[11],[11],[32,5,65,1,106,33,5],[12,0],[11],[11],[32,6],[11]),a=[].concat(G(1),G(3),[127],[65,0,33,6],[65,0,33,7],[2,64],[3,64],[32,7,32,3,73,69,13,1],[32,2,32,7,65,4,108,106,40,2,0,33,8],[32,4,32,8,65,4,108,106,65,1,54,2,0],[32,7,65,1,106,33,7],[12,0],[11],[11],[65,0,33,7],[2,64],[3,64],[32,7,32,1,73,69,13,1],[32,0,32,7,65,4,108,106,40,2,0,33,8],[32,4,32,8,65,4,108,106,40,2,0,65,0,71],[4,64],[32,5,32,6,65,4,108,106,32,7,54,2,0],[32,6,65,1,106,33,6],[11],[32,7,65,1,106,33,7],[12,0],[11],[11],[65,0,33,7],[2,64],[3,64],[32,7,32,3,73,69,13,1],[32,2,32,7,65,4,108,106,40,2,0,33,8],[32,4,32,8,65,4,108,106,65,0,54,2,0],[32,7,65,1,106,33,7],[12,0],[11],[11],[32,6],[11]),u=Z(10,[].concat(G(2),G(o.length),o,G(a.length),a)),new Uint8Array([0,97,115,109,1,0,0,0].concat(e,r,n,t,u)))),i=new WebAssembly.Instance(s,{});return{cachedCodes:null,cachedCodesLength:0,cachedTargets:null,cachedTargetsLength:0,cachedTargetsOffset:0,filterInU32:i.exports.filterInU32,markFilterInU32:i.exports.markFilterInU32,memory:i.exports.memory,ensureCapacity:function(e){var r=this.memory.buffer.byteLength;if(e<=r)return this.memory.buffer;for(var n=r;n<e;)n=n?2*n:65536;var t=Math.ceil(n/65536),o=r/65536;return this.memory.grow(t-o),this.cachedCodes=null,this.cachedCodesLength=0,this.cachedTargets=null,this.cachedTargetsLength=0,this.cachedTargetsOffset=0,this.memory.buffer},syncCodes:function(e,r){this.cachedCodes===r&&this.cachedCodesLength===r.length||(new Uint32Array(e,0,r.length).set(r),this.cachedCodes=r,this.cachedCodesLength=r.length)},syncTargets:function(e,r,n){(function(e,r){if(e===r)return!0;if(!e||!r||e.length!==r.length)return!1;for(var n=0;n<e.length;++n)if(e[n]!==r[n])return!1;return!0})(this.cachedTargets,r)&&this.cachedTargetsOffset===n||(new Uint32Array(e,n,r.length).set(r),this.cachedTargets=r.slice?r.slice():Array.prototype.slice.call(r),this.cachedTargetsLength=r.length,this.cachedTargetsOffset=n)},matchSmall:function(e,r){var n=4*e.length,t=n+4*r.length,o=t+n,a=this.ensureCapacity(o);this.syncCodes(a,e),this.syncTargets(a,r,n);var u=this.filterInU32(0,e.length,n,r.length,t);return new Uint32Array(a,t,u)},matchMarked:function(e,r,n){var t=4*e.length,o=t+4*r.length,a=o+4*(n+1),u=a+t,s=this.ensureCapacity(u);this.syncCodes(s,e),this.syncTargets(s,r,t),new Uint32Array(s,o,n+1).fill(0);var i=this.markFilterInU32(0,e.length,t,r.length,o,a);return new Uint32Array(s,a,i)}}}function Y(e){if(!D.supported||!e)return null;if(!D.runtime)try{D.runtime=J(),D.error=null}catch(e){D.error=e,D.runtime=null}return D.runtime}function $(e){return{active:D.runtime&&e?"wasm":"js",lastError:D.error?String(D.error.message||D.error):null,wasmEnabled:!1!==e,wasmSupported:D.supported}}function H(e,r,n){var t,o=function(e,r){if(e.scratch.length>=r)return e.scratch;for(var n=e.scratch.length||256;n<r;)n<<=1;return e.scratch=new Uint32Array(n),e.scratch}(n,e.length),a=0;if(1===r.length){var u=r[0];for(t=0;t<e.length;++t)e[t]===u&&(o[a++]=t);return o.slice(0,a)}var s=0;for(t=0;t<r.length;++t)r[t]>s&&(s=r[t]);!function(e,r){if(!(e.marks.length>=r)){for(var n=e.marks.length||16;n<r;)n<<=1;var t=new Uint32Array(n);t.set(e.marks),e.marks=t}}(n,s+1),4294967295===n.version&&(n.marks.fill(0),n.version=1);var i=n.version++,l=n.marks;for(t=0;t<r.length;++t)l[r[t]]=i;for(t=0;t<e.length;++t)l[e[t]]===i&&(o[a++]=t);return o.slice(0,a)}function Q(e){for(var r=0,n=0;n<e.length;++n)e[n]>r&&(r=e[n]);return r}function X(e){var r=e&&Object.prototype.hasOwnProperty.call(e,"wasm")?!1!==e.wasm:!1!==q.wasm,n={marks:new Uint32Array(0),version:1,scratch:new Uint32Array(0)};return{canUseWasmScan:function(){return!!Y(r)},configureRuntime:function(e){return e&&Object.prototype.hasOwnProperty.call(e,"wasm")&&(r=!1!==e.wasm),$(r)},findEncodedMatches:function(e,t){if(!t.length)return new Uint32Array(0);var o,a=Y(r);if(a&&t.length<=4&&e.length<=1e3)try{return a.matchSmall(e,t)}catch(e){D.error=e,D.runtime=null}if(a&&4*((o=Math.max(Q(t),Q(e)))+1)<=33554432)try{return a.matchMarked(e,t,o)}catch(e){D.error=e,D.runtime=null}return H(e,t,n)},runtimeInfo:function(){return $(r)}}}var ee=X();function re(e){return"number"==typeof e&&Number.isFinite(e)}function ne(e){for(var r=new Set,n=[],t=0;t<e.length;++t)e[t]&&!r.has(e[t])&&(r.add(e[t]),n.push(e[t]));return n}var te={minute:6e4,hour:36e5,day:864e5};function oe(e,r){return(e&&e.length?e:[{op:"count"}]).map((function(e,n){var t=e.id||r+"_"+n;if("count"!==e.op&&!e.field)throw new Error("Dashboard metric `"+t+"` requires a field.");if("count"!==e.op&&"sum"!==e.op&&"avg"!==e.op&&"avgNonZero"!==e.op)throw new Error("Unsupported dashboard metric op: "+e.op);return{field:e.field,id:t,op:e.op||"count"}}))}function ae(e,r){var n=function(e){if(null==e)return null;if(e instanceof Date)return e.getTime();if("number"==typeof e)return Number.isFinite(e)?e:null;var r=Number(e);if(Number.isFinite(r))return r;var n=new Date(e).getTime();return Number.isFinite(n)?n:null}(e);if(null==n)return null;if("month"===r){var t=new Date(n);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)}if("week"===r){var o=new Date(n),a=o.getUTCDay();return new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()-(a+6)%7)).getTime()}var u=te[r];if(!u)throw new Error("Unsupported dashboard time bucket granularity: "+r);return Math.floor(n/u)*u}function ue(e,r){var n=e.map((function(e){return{field:e.field||null,id:e.id,op:e.op}}));function t(){for(var r={},n=0;n<e.length;++n){var t=e[n];"avg"===t.op||"avgNonZero"===t.op?r[t.id]={count:0,sum:0}:r[t.id]=0}return r}function o(r){for(var n=0;n<e.length;++n){var t=e[n],o=r[t.id];if("avg"===t.op||"avgNonZero"===t.op){if(o&&o.count>0)return!1}else if("count"===t.op){if(o>0)return!1}else if(0!==o)return!1}return!0}function a(r,n){for(var t=0;t<e.length;++t){var o,a=e[t];switch(a.op){case"count":r[a.id]+=1;break;case"sum":re(o=n[a.field])&&(r[a.id]+=o);break;case"avg":re(o=n[a.field])&&(r[a.id].sum+=o,r[a.id].count+=1);break;case"avgNonZero":re(o=n[a.field])&&0!==o&&(r[a.id].sum+=o,r[a.id].count+=1)}}}function u(r,n){for(var t=0;t<e.length;++t){var o,a=e[t];switch(a.op){case"count":r[a.id]-=1;break;case"sum":re(o=n[a.field])&&(r[a.id]-=o);break;case"avg":re(o=n[a.field])&&(r[a.id].sum-=o,r[a.id].count-=1);break;case"avgNonZero":re(o=n[a.field])&&0!==o&&(r[a.id].sum-=o,r[a.id].count-=1)}}}function s(r){for(var n={},t=0;t<e.length;++t){var o=e[t],a=r[o.id];"avg"===o.op||"avgNonZero"===o.op?n[o.id]=a.count?a.sum/a.count:null:n[o.id]=a}return n}if(r){return{add:function(e,n){var o=n[r];return null!=o&&""!==o||(o="__unknown__"),e[o]||(e[o]=t()),a(e[o],n),e.__version+=1,e},finalize:function(e){if(e.__cacheVersion===e.__version&&e.__cache)return e.__cache;var r={};for(var n in e){var t=e[n];o(t)||(r[n]=s(t))}return e.__cache=r,e.__cacheVersion=e.__version,r},initial:function(){var e={};return Object.defineProperties(e,{__cache:{configurable:!0,enumerable:!1,value:null,writable:!0},__cacheVersion:{configurable:!0,enumerable:!1,value:-1,writable:!0},__version:{configurable:!0,enumerable:!1,value:0,writable:!0}}),e},remove:function(e,n){var t=n[r];return null!=t&&""!==t||(t="__unknown__"),e[t]&&u(e[t],n),e.__version+=1,e}}}function i(){var e=t();return Object.defineProperties(e,{__cache:{configurable:!0,enumerable:!1,value:null,writable:!0},__cacheVersion:{configurable:!0,enumerable:!1,value:-1,writable:!0},__version:{configurable:!0,enumerable:!1,value:0,writable:!0}}),e}function l(e,r){return a(e,r),e.__version+=1,e}function f(e,r){return u(e,r),e.__version+=1,e}return l._xfilterMetricSpec=n,f._xfilterMetricSpec=n,i._xfilterMetricSpec=n,{add:l,finalize:function(e){if(e.__cacheVersion===e.__version&&e.__cache)return e.__cache;var r=s(e);return e.__cache=r,e.__cacheVersion=e.__version,r},initial:i,remove:f}}function se(e){return e&&1===e.length&&"sum"===e[0].op?e[0]:null}function ie(e){return function(r){var n=r[e.field];return re(n)?n:0}}function le(e){if(!e||"all"===e.type)return null;if("exact"===e.type)return{type:"exact",value:e.value};if("in"===e.type)return{type:"in",values:Array.isArray(e.values)?e.values.slice():[]};if("range"===e.type)return{range:Array.isArray(e.range)?e.range.slice():[],type:"range"};throw new Error("Unsupported dashboard filter type: "+e.type)}function fe(e,r){if(e===r)return!0;if(!e||!r)return!e&&!r;if(e.type!==r.type)return!1;if("exact"===e.type)return e.value===r.value;var n="range"===e.type?e.range:e.values,t="range"===r.type?r.range:r.values;if(!n||!t||n.length!==t.length)return!1;for(var o=0;o<n.length;++o)if(n[o]!==t[o])return!1;return!0}function ce(e,r){if(r)switch(r.type){case"exact":return void e.filterExact(r.value);case"in":return void e.filterIn(r.values);case"range":return void e.filterRange(r.range)}else e.filterAll()}function de(e,r){return e?"avg"===e.op||"avgNonZero"===e.op?r&&r.count?r.sum/r.count:null:"number"==typeof r?r:0:0}function he(e,r){var n=de(e,r);return null!=n&&n>0}function pe(e,r,n,t){var o=e.length;if(!(null!=t&&e.length>=t&&n(r,e[e.length-1])>=0)){for(;o>0&&n(r,e[o-1])<0;)o-=1;e.splice(o,0,r),null!=t&&e.length>t&&e.pop()}}function me(e,r,n){var t,o,a=oe(r.metrics,r.id||"group_"+n),u={},s=r.splitField||null,i=s?null:se(a),l=i?null:ue(a,s),f=function(e){if(!e||!e.bucket)return null;if("timeBucket"!==e.bucket.type)throw new Error("Unsupported dashboard group bucket type: "+e.bucket.type);var r=e.bucket.granularity||"day";return function(e){return ae(e,r)}}(r),c=f?e.group(f):e.group(),d=null,h=null;for(i&&"function"==typeof c.reduceSum?c.reduceSum(ie(i)):c.reduce(l.add,l.remove,l.initial),t=0;t<a.length;++t)u[a[t].id]=a[t],d||"count"!==a[t].op||(d=a[t]);function p(e,r){if(!r)return 0;if(i)return r.id===i.id?e:0;if(s){var n=0;for(var t in e){var o=e[t];if(o&&null!=o[r.id]){var a=o[r.id];"object"==typeof a&&null!=a.count?n+=a.sum||0:n+=a}}return n}return e?e[r.id]:0}function m(e,r){return e?p(e.value,r):0}function g(e){if(!i)return l.finalize(e);var r={};return r[i.id]=e,r}function v(e){return{key:e.key,value:g(e.value)}}function y(e,r,n,t){return!(!t&&r.nonEmptyKeys&&(null==e||""===e))&&(!(!t&&n&&!n.has(e))&&!(!t&&r.search&&String(e).toLowerCase().indexOf(r.search)<0))}function b(e,r,n,t){var o=de(r,m(n,r))-de(r,m(t,r));return Number.isFinite(o)&&0!==o?"asc"===e.sort?o:-o:function(e,r){return e===r?0:String(e).localeCompare(String(r))}(n.key,t.key)}function w(e,r){var n=de(e,m(r,e));return null==n?Number.NEGATIVE_INFINITY:n}function k(e,r){return!(!e||"desc"!==e.sort||!r||!1!==e.includeTotals||e.includeKeys||e.keys||e.search||"function"!=typeof c.size||!function(e){return!(!e||"function"!=typeof c.order||"function"!=typeof c.top||(h===e.id||(c.order((function(r){var n=de(e,p(r,e));return null==n?Number.NEGATIVE_INFINITY:n})),h=e.id),0))}(r))}function x(e){var r,n,t,a,s,i,l=function(e){return null==e||!0===e?null:!1!==e&&{includeKeys:Array.isArray(e.includeKeys)&&e.includeKeys.length?e.includeKeys.slice():null,includeTotals:!1!==e.includeTotals,keys:Array.isArray(e.keys)&&e.keys.length?e.keys.slice():null,limit:"number"==typeof e.limit&&e.limit>=0?Math.floor(e.limit):null,nonEmptyKeys:!0===e.nonEmptyKeys,offset:"number"==typeof e.offset&&e.offset>=0?Math.floor(e.offset):0,search:"string"==typeof e.search&&e.search?e.search.toLowerCase():null,sort:"asc"===e.sort||"natural"===e.sort?e.sort:"desc",sortMetric:e.sortMetric||null,visibleOnly:!1!==e.visibleOnly}}(e),f=[],h=[],p=u[l&&l.sortMetric]||o,g=null,x=0;if(!l)return c.all().map(v);if(k(l,p))return function(e,r){for(var n,t,o=null==e.limit?null:e.offset+e.limit,a=c.size(),u=null==o?a:Math.min(a,Math.max(o+1,32));;){n=c.top(u),t=[];for(var s=0;s<n.length;++s){var i=n[s];(!e.visibleOnly||he(d,m(i,d)))&&y(i.key,e,null,!1)&&t.push(i)}if(t.sort((function(n,t){return b(e,r,n,t)})),null==o||u>=a)break;var l=t.length<o;if(!l){var f=t[o-1];l=!!f&&w(r,n[n.length-1])>=w(r,f)}if(!l)break;u=Math.min(a,Math.max(u+32,2*u))}return{entries:(null==e.limit?t.slice(e.offset):t.slice(e.offset,e.offset+e.limit)).map(v),limit:e.limit,offset:e.offset,sort:e.sort,sortMetric:r?r.id:null}}(l,p);for(r=c.all(),n=l.includeKeys?new Set(l.includeKeys):null,t=l.keys?new Set(l.keys):null,s=null!=(a=null==l.limit?null:l.offset+l.limit)&&"natural"!==l.sort&&!!p,"natural"!==l.sort&&p&&(g=function(e,r){return b(l,p,e,r)}),i=0;i<r.length;++i){var I=r[i],F=n&&n.has(I.key);(!l.visibleOnly||he(d,m(I,d)))&&y(I.key,l,t,!1)&&(x+=1,s?pe(f,I,g,a):f.push(I)),F&&h.push(I)}"natural"!==l.sort&&p&&!s&&f.sort((function(e,r){return b(l,p,e,r)})),"natural"!==l.sort&&p&&h.sort((function(e,r){return b(l,p,e,r)}));var A=null==l.limit?f.slice(l.offset):f.slice(l.offset,l.offset+l.limit),S=new Set,C=[];for(i=0;i<A.length;++i)C.push(A[i]),S.add(A[i].key);for(i=0;i<h.length;++i)S.has(h[i].key)||(C.push(h[i]),S.add(h[i].key));"natural"!==l.sort&&p&&h.length&&C.sort((function(e,r){return b(l,p,e,r)}));var B={entries:C.map(v),limit:l.limit,offset:l.offset,sort:l.sort,sortMetric:p?p.id:null};return l.includeTotals&&(B.total=x),B}return d||(d=a[0]||null),o=u[r.sortMetric]||u.rows||a[0]||null,{dispose:function(){c.dispose()},id:r.id||"group_"+n,read:function(e){return x(e)}}}function ge(e,r){if(!e||!e.columns||!e.length)return null;var n=e.columns[r];return n&&n.length?n[0]:null}function ve(e,r,n){if("function"==typeof e.takeColumns)return e.takeColumns(r,n);var t,o,a=e.all(),u={};for(t=0;t<n.length;++t)u[n[t]]=new Array(r.length);for(o=0;o<r.length;++o){var s=a[r[o]];for(t=0;t<n.length;++t)u[n[t]][o]=s?s[n[t]]:void 0}return{columns:u,fields:n?n.slice():[],length:r.length}}function ye(e,r,n,t){return e[t]||(e[t]=n.dimension(t),r.push(t)),e[t]}function be(e,r){if(((r=r||{}).table?1:0)+(r.columns?1:0)+(r.records?1:0)>1)throw new Error("createDashboardRuntime expects at most one of `table`, `columns` or `records`.");var n=function(e,r){return r.table?e.fromArrowTable(r.table,r.columnarOptions):r.columns?e.fromColumns(r.columns,r.columnarOptions):e(r.records||[])}(e,r);"function"==typeof n.configureRuntime?n.configureRuntime({wasm:!1!==r.wasm}):e.configureRuntime({wasm:!1!==r.wasm});for(var t=r.groups||[],o=ne((r.dimensions||[]).concat(t.map((function(e){return e.field})))),a={},u={},s={},i=function(e,r){var n=se(r),t=n?null:ue(r),o=n&&"function"==typeof e.groupAll?e.groupAll().reduceSum(ie(n)):e.groupAll().reduce(t.add,t.remove,t.initial);return{dispose:function(){o.dispose()},read:function(){if(n){var e={};return e[n.id]=o.value(),e}return t.finalize(o.value())}}}(n,oe(r.kpis,"kpi")),l=n.groupAll().reduceCount(),f=0;f<o.length;++f)a[o[f]]=n.dimension(o[f]);var c=0;for(c=0;c<t.length;++c){var d=t[c],h=me(ye(a,o,n,d.field),d,c);s[h.id]=h}function p(r){var t=function(e){var r={};if(!e)return r;for(var n in e)r[n]=le(e[n]);return r}(r),o=new Set,s=[],i=[],l=0;for(var f in t){if(!a[f])throw new Error("Unknown dashboard filter dimension: "+f);o.add(f),fe(u[f],t[f])||(s.push({dimension:a[f],filter:t[f]}),l+=1)}for(f in u)o.has(f)||a[f]&&(i.push(f),l+=1);var c=function(){var e;for(e=0;e<s.length;++e)ce(s[e].dimension,s[e].filter);for(e=0;e<i.length;++e)a[i[e]].filterAll()};return l>1&&"function"==typeof n.batch?n.batch(c):c(),u=t,"function"==typeof n.runtimeInfo?n.runtimeInfo():e.runtimeInfo()}function m(e){var r={};if(!e){for(var n in s)r[n]=s[n].read();return r}for(var t in e){if(!s[t])throw new Error("Unknown dashboard group: "+t);!1!==e[t]&&(r[t]=s[t].read(e[t]))}return r}function g(r){var t={};return r&&!1===r.groups||(t=m(r&&r.groups?r.groups:null)),{groups:t,kpis:i.read(),runtime:"function"==typeof n.runtimeInfo?n.runtimeInfo():e.runtimeInfo()}}function v(){return l.value()}function y(e){var r,t,u=function(e){return{columnar:!0===(e=e||{}).columnar,direction:"bottom"===e.direction?"bottom":"top",fields:Array.isArray(e.fields)&&e.fields.length?e.fields.slice():null,limit:"number"==typeof e.limit&&e.limit>=0?Math.floor(e.limit):50,offset:"number"==typeof e.offset&&e.offset>=0?Math.floor(e.offset):0,sortBy:e.sortBy||null}}(e);if(u.columnar){if(!u.fields)throw new Error("Columnar row queries require `fields`.");if(u.sortBy){var s=ye(a,o,n,u.sortBy);r="bottom"===u.direction&&"function"==typeof s.bottomIndex?s.bottomIndex(u.limit,u.offset):"function"==typeof s.topIndex?s.topIndex(u.limit,u.offset):null}else"function"==typeof n.allFilteredIndexes&&(r=n.allFilteredIndexes().slice(u.offset,u.offset+u.limit));if(r)return ve(n,r,u.fields)}if(u.sortBy){var i=ye(a,o,n,u.sortBy);t="bottom"===u.direction?i.bottom(u.limit,u.offset):i.top(u.limit,u.offset)}else{t=("function"==typeof n.allFiltered?n.allFiltered():n.all()).slice(u.offset,u.offset+u.limit)}return function(e,r){return r?e.map((function(e){for(var n={},t=0;t<r.length;++t)n[r[t]]=e[r[t]];return n})):e.slice()}(t,u.fields)}function b(e){var r,t=function(e){return e=e||{},{fields:Array.isArray(e.fields)&&e.fields.length?ne(e.fields):[]}}(e),u={};for(r=0;r<t.fields.length;++r){var s=t.fields[r],i=ye(a,o,n,s),l="function"==typeof i.bottomIndex?i.bottomIndex(1):null,f="function"==typeof i.topIndex?i.topIndex(1):null,c=null,d=null;if(l&&l.length)c=ge(ve(n,[l[0]],[s]),s);else{var h=i.bottom(1);c=h.length?h[0][s]:null}if(f&&f.length)d=ge(ve(n,[f[0]],[s]),s);else{var p=i.top(1);d=p.length?p[0][s]:null}u[s]={max:null==d?null:d,min:null==c?null:c}}return u}function w(e){var r={};if(!e)return r;for(var n in e)!1!==e[n]&&(r[n]=y(e[n]));return r}return{append:function(e){return n.add(e||[]),n.size()},appendArrowTable:function(r,t){return function(e,r,n,t){return r.add(e.rowsFromArrowTable(n,t||{})),r.size()}(e,n,r,t)},appendColumns:function(r,t){return function(e,r,n,t){return r.add(e.rowsFromColumns(n||{},t||{})),r.size()}(e,n,r,t)},bounds:function(e){return function(e){return(e=e||{}).filters&&p(e.filters),b(e.bounds||e)}(e)},dispose:function(){for(var e in this.reset(),s)s[e].dispose();i.dispose(),l.dispose();for(var r=0;r<o.length;++r)a[o[r]].dispose()},createGroup:function(e){var r=me(ye(a,o,n,e.field),e,c++);return s[r.id]=r,r.id},disposeGroup:function(e){s[e]&&(s[e].dispose(),delete s[e])},query:function(e){return function(e){var r=null;(e=e||{}).isolatedFilters?(r=function(e){var r={};for(var n in e)r[n]=e[n];return r}(u),p(e.isolatedFilters)):e.filters&&p(e.filters);var n={rows:e.rows?y(e.rows):[],snapshot:!1===e.snapshot?null:g(e.snapshot)};return e.rowCount&&(n.rowCount=v()),e.groups&&(n.groups=m(e.groups)),e.bounds&&(n.bounds=b(e.bounds)),e.rowSets&&(n.rowSets=w(e.rowSets)),r&&p(r),n}(e)},groups:function(e){return function(e){return(e=e||{}).filters&&p(e.filters),m(e.groups||null)}(e)},removeFiltered:function(e){return function(e){return"excluded"===e?n.remove((function(e,r){return"function"==typeof n.isElementFiltered&&!n.isElementFiltered(r)})):n.remove(),n.size()}(e)},reset:function(){return p({})},rows:function(e){return y(e)},rowSets:function(e){return function(e){return(e=e||{}).filters&&p(e.filters),w(e.rowSets||e)}(e)},rowCount:function(e){return(e=e||{}).filters&&p(e.filters),v()},runtimeInfo:function(){return"function"==typeof n.runtimeInfo?n.runtimeInfo():e.runtimeInfo()},size:function(){return n.size()},snapshot:function(e,r){return e&&p(e),g(r)},updateFilters:p}}function we(e){return"function"==typeof URL&&"undefined"!=typeof location&&location&&location.href?new URL(e,location.href).toString():e}function ke(e){if(!!(e=e||{}).arrowBuffer==!!e.dataUrl)throw new Error("createDashboardWorker expects exactly one of `arrowBuffer` or `dataUrl`.");var r=e.workerFactory,n=null;if(!r){if("undefined"==typeof Worker)throw new Error("Workers are not available in this environment.");if(!e.crossfilterUrl||!e.arrowRuntimeUrl&&!e.arrowUrl)throw new Error("createDashboardWorker requires `crossfilterUrl` and `arrowRuntimeUrl` unless `workerFactory` is provided.");var t=we(e.crossfilterUrl),o=we(e.arrowRuntimeUrl||e.arrowUrl);r=function(){var e,r;return n=URL.createObjectURL(new Blob([(e=t,r=o,["'use strict';","importScripts("+JSON.stringify(e)+", "+JSON.stringify(r)+");","var runtime = null;","function getTableFromIPC(module) {"," return module && (module.tableFromIPC || (module.default && module.default.tableFromIPC)) || null;","}","function collectRowTransferables(obj) {"," var buffers = [];"," if (!obj || typeof obj !== 'object' || !obj.columns) return buffers;"," for (var field in obj.columns) {"," if (Object.prototype.hasOwnProperty.call(obj.columns, field)) {"," var col = obj.columns[field];"," if (ArrayBuffer.isView(col) && col.buffer) buffers.push(col.buffer);"," }"," }"," return buffers;","}","function collectResponseTransferables(payload) {"," if (!payload || typeof payload !== 'object') return [];"," var seen = [];"," var buffers = [];"," function add(obj) {"," var found = collectRowTransferables(obj);"," for (var i = 0; i < found.length; ++i) {"," if (seen.indexOf(found[i]) < 0) {"," seen.push(found[i]);"," buffers.push(found[i]);"," }"," }"," }"," add(payload);"," if (payload.rows) add(payload.rows);"," if (payload.rowSets) {"," for (var setId in payload.rowSets) {"," if (Object.prototype.hasOwnProperty.call(payload.rowSets, setId)) {"," add(payload.rowSets[setId]);"," }"," }"," }"," return buffers;","}","function respond(id, payload) {"," var transferables = collectResponseTransferables(payload);"," self.postMessage({ id: id, ok: true, payload: payload }, transferables);","}","function fail(id, error) {"," self.postMessage({ id: id, ok: false, error: {"," message: String(error && error.message || error),"," stack: error && error.stack ? String(error.stack) : null"," } });","}","self.onmessage = async function(event) {"," var message = event.data || {};"," var id = message.id;"," try {"," if (message.type !== 'init' && message.type !== 'dispose') {"," if (!runtime) throw new Error('Dashboard worker is not initialized.');"," }"," switch (message.type) {"," case 'init': {"," var arrow = self.Arrow;"," var tableFromIPC = getTableFromIPC(arrow);"," if (!tableFromIPC) {"," throw new Error('Apache Arrow tableFromIPC is not available in the worker.');"," }"," var tableSource = null;"," if (message.payload.dataUrl) {"," tableSource = fetch(message.payload.dataUrl, message.payload.dataFetchInit || undefined);"," } else if (message.payload.arrowBuffer) {"," tableSource = new Uint8Array(message.payload.arrowBuffer);"," } else {"," throw new Error('Dashboard worker init requires `dataUrl` or `arrowBuffer`.');"," }"," var table = await tableFromIPC(tableSource);"," runtime = self.crossfilter.createDashboardRuntime({"," table: table,"," wasm: message.payload.wasm,"," dimensions: message.payload.dimensions,"," groups: message.payload.groups,"," kpis: message.payload.kpis"," });"," respond(id, { runtime: runtime.runtimeInfo() });"," return;"," }"," case 'snapshot':"," respond(id, runtime.snapshot(message.payload.filters, message.payload.options || null));"," return;"," case 'groups':"," respond(id, runtime.groups(message.payload.request));"," return;"," case 'bounds':"," respond(id, runtime.bounds(message.payload.request));"," return;"," case 'query':"," respond(id, runtime.query(message.payload.request));"," return;"," case 'createGroup':"," respond(id, runtime.createGroup(message.payload.spec));"," return;"," case 'disposeGroup':"," respond(id, runtime.disposeGroup(message.payload.id));"," return;"," case 'rows':"," respond(id, runtime.rows(message.payload.query));"," return;"," case 'rowSets':"," respond(id, runtime.rowSets(message.payload.request));"," return;"," case 'append':"," respond(id, runtime.append(message.payload.records || []));"," return;"," case 'removeFiltered':"," respond(id, runtime.removeFiltered(message.payload.selection));"," return;"," case 'updateFilters':"," respond(id, runtime.updateFilters(message.payload.filters));"," return;"," case 'reset':"," respond(id, runtime.reset());"," return;"," case 'runtimeInfo':"," respond(id, runtime.runtimeInfo());"," return;"," case 'dispose':"," if (runtime) {"," runtime.dispose();"," runtime = null;"," }"," respond(id, null);"," self.close();"," return;"," default:"," throw new Error('Unknown dashboard worker message: ' + message.type);"," }"," } catch (error) {"," fail(id, error);"," }","};"].join("\n"))],{type:"text/javascript"})),new Worker(n)}}var a=r(),u=1,s=new Map,i=!1;function l(){n&&(URL.revokeObjectURL(n),n=null)}function f(e,r,n){if(i)return Promise.reject(new Error("Dashboard worker has already been disposed."));var t=u++;return new Promise((function(o,u){s.set(t,{reject:u,resolve:o}),a.postMessage({id:t,payload:r||null,type:e},n||[])}))}a.addEventListener("message",(function(e){var r=e.data||{},n=s.get(r.id);if(n)if(s.delete(r.id),r.ok)n.resolve(r.payload);else{var t=new Error(r.error&&r.error.message||"Dashboard worker request failed.");r.error&&r.error.stack&&(t.stack=r.error.stack),n.reject(t)}})),a.addEventListener("error",(function(e){!function(e){s.forEach((function(r){r.reject(e)})),s.clear()}(e.error||new Error(e.message||"Dashboard worker failed.")),l()}));var c=[],d={dataFetchInit:e.dataFetchInit||null,dataUrl:e.dataUrl?we(e.dataUrl):null,dimensions:e.dimensions||[],groups:e.groups||[],kpis:e.kpis||[],wasm:!1!==e.wasm};return e.arrowBuffer&&(d.arrowBuffer=function(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e)){var r=e;return 0===r.byteOffset&&r.byteLength===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}throw new Error("createDashboardWorker expects `arrowBuffer` to be an ArrayBuffer or typed array view.")}(e.arrowBuffer),c.push(d.arrowBuffer)),f("init",d,c).then((function(e){return{append:function(e){return f("append",{records:e||[]})},bounds:function(e){return f("bounds",{request:e||null})},dispose:function(){return i?Promise.resolve():f("dispose").catch((function(e){throw a.terminate(),l(),e})).finally((function(){i=!0,a.terminate(),l()}))},query:function(e){return f("query",{request:e||null})},createGroup:function(e){return f("createGroup",{spec:e})},disposeGroup:function(e){return f("disposeGroup",{id:e})},groups:function(e){return f("groups",{request:e||null})},removeFiltered:function(e){return f("removeFiltered",{selection:e||"included"})},reset:function(){return f("reset")},runtimeInfo:function(){return f("runtimeInfo")},snapshot:function(e,r){return f("snapshot",{filters:e||null,options:r||null})},rows:function(e){return f("rows",{query:e||null})},rowSets:function(e){return f("rowSets",{request:e||null})},updateFilters:function(e){return f("updateFilters",{filters:e||null})},workerRuntime:e.runtime}})).catch((function(e){throw i=!0,a.terminate(),l(),e}))}function xe(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e)){var r=e;return 0===r.byteOffset&&r.byteLength===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}throw new Error("createStreamingDashboardWorker expects `arrowBuffer` to be an ArrayBuffer or typed array view.")}function Ie(e){return"function"==typeof URL&&"undefined"!=typeof location&&location&&location.href?new URL(e,location.href).toString():e}function Fe(e,r){if(!Array.isArray(e.sources)||!e.sources.length)return null;for(var n=e.sources.map((function(n,t){return function(e,r,n,t){if(!e||"object"!=typeof e)throw new Error("Streaming dashboard source at index "+r+" must be an object.");var o=e.id||"source_"+r,a=null!=e.arrowBuffer;if(a===!!e.dataUrl)throw new Error("Streaming dashboard source `"+o+"` expects exactly one of `arrowBuffer` or `dataUrl`.");var u={dataFetchInit:e.dataFetchInit||n||null,dataUrl:e.dataUrl?Ie(e.dataUrl):null,id:o,lookup:e.lookup||null,projection:e.projection||null,role:e.role||null};return a&&(u.arrowBuffer=xe(e.arrowBuffer),t.push(u.arrowBuffer)),u}(n,t,e.dataFetchInit||null,r)})),t=0,o=0;o<n.length;++o){var a=n[o];if(a.role||(a.role=0===o?"base":"lookup"),"base"!==a.role){if("lookup"!==a.role)throw new Error("Streaming dashboard source `"+a.id+"` has unsupported role `"+a.role+"`.");if(!(a.lookup&&Array.isArray(a.lookup.keyFields)&&a.lookup.keyFields.length&&Array.isArray(a.lookup.valueFields)&&a.lookup.valueFields.length))throw new Error("Streaming dashboard lookup source `"+a.id+"` requires non-empty `lookup.keyFields` and `lookup.valueFields`.")}else if(t+=1,a.lookup)throw new Error("Streaming dashboard source `"+a.id+"` cannot declare `lookup` when role is `base`.")}if(1!==t)throw new Error("Streaming dashboard worker expects exactly one base source.");return n}function Ae(e){e=e||{};var r=Array.isArray(e.sources)&&e.sources.length>0;if(1!==(e.arrowBuffer?1:0)+(e.dataUrl?1:0)+(r?1:0))throw new Error("createStreamingDashboardWorker expects exactly one of `arrowBuffer`, `dataUrl` or `sources`.");var n=e.workerFactory,t=null;if(!n){if("undefined"==typeof Worker)throw new Error("Workers are not available in this environment.");if(!e.crossfilterUrl||!e.arrowRuntimeUrl&&!e.arrowUrl)throw new Error("createStreamingDashboardWorker requires `crossfilterUrl` and `arrowRuntimeUrl` unless `workerFactory` is provided.");var o=Ie(e.crossfilterUrl),a=Ie(e.arrowRuntimeUrl||e.arrowUrl);n=function(){var e,r;return t=URL.createObjectURL(new Blob([(e=o,r=a,`\n'use strict';\nimportScripts(${JSON.stringify(e)}, ${JSON.stringify(r)});\nvar runtime = null;\nvar runtimeConfig = null;\nvar abortControllers = [];\nvar progress = null;\nvar progressTimer = 0;\nvar snapshotTimer = 0;\nfunction getRecordBatchReader(module) {\n return module && (module.RecordBatchReader || (module.default && module.default.RecordBatchReader)) || null;\n}\nfunction getFieldNames(table) {\n if (table && table.schema && Array.isArray(table.schema.fields)) {\n return table.schema.fields.map(function(field) { return field.name; });\n }\n if (table && Array.isArray(table.columnNames)) {\n return table.columnNames.slice();\n }\n return [];\n}\nfunction getColumn(table, name, index) {\n if (!table) return undefined;\n if (typeof table.getChild === 'function') {\n var child = table.getChild(name);\n if (child != null) return child;\n }\n if (typeof table.getColumn === 'function') {\n var column = table.getColumn(name);\n if (column != null) return column;\n }\n if (typeof table.getChildAt === 'function') {\n return table.getChildAt(index);\n }\n return table[name];\n}\nfunction getValue(column, index) {\n if (column == null) return undefined;\n if (typeof column.get === 'function') return column.get(index);\n if (typeof column.at === 'function') return column.at(index);\n return column[index];\n}\nfunction resolveColumnAccessor(column) {\n if (column == null) return null;\n if (ArrayBuffer.isView(column) || Array.isArray(column)) return 'index';\n if (typeof column.get === 'function') return 'get';\n if (typeof column.at === 'function') return 'at';\n return 'index';\n}\nfunction getValueByKind(column, index, kind) {\n if (kind === 'get') return column.get(index);\n if (kind === 'at') return column.at(index);\n return column[index];\n}\nfunction allocateMergedColumn(column, length) {\n if (ArrayBuffer.isView(column) && typeof column.constructor === 'function' && typeof column.BYTES_PER_ELEMENT === 'number') {\n return new column.constructor(length);\n }\n return new Array(length);\n}\nfunction copyColumnValues(target, targetOffset, source, length) {\n if (ArrayBuffer.isView(target) && ArrayBuffer.isView(source) && source.constructor === target.constructor && typeof source.length === 'number') {\n target.set(source, targetOffset);\n return;\n }\n var sourceKind = resolveColumnAccessor(source);\n for (var rowIndex = 0; rowIndex < length; ++rowIndex) {\n target[targetOffset + rowIndex] = source == null ? undefined : getValueByKind(source, rowIndex, sourceKind);\n }\n}\nfunction mergeProjectedBatches(batches) {\n if (!batches.length) {\n return null;\n }\n if (batches.length === 1) {\n return batches[0];\n }\n\n var fields = batches[0].fields.slice();\n var totalLength = 0;\n var columns = {};\n\n for (var batchIndex = 0; batchIndex < batches.length; ++batchIndex) {\n totalLength += batches[batchIndex].length;\n }\n\n for (var fieldIndex = 0; fieldIndex < fields.length; ++fieldIndex) {\n columns[fields[fieldIndex]] = allocateMergedColumn(batches[0].columns[fields[fieldIndex]], totalLength);\n }\n\n var offset = 0;\n for (batchIndex = 0; batchIndex < batches.length; ++batchIndex) {\n var batch = batches[batchIndex];\n for (fieldIndex = 0; fieldIndex < fields.length; ++fieldIndex) {\n var field = fields[fieldIndex];\n copyColumnValues(columns[field], offset, batch.columns[field], batch.length);\n }\n offset += batch.length;\n }\n\n return {\n columns: columns,\n fields: fields,\n length: totalLength\n };\n}\nfunction flushBufferedRuntimeBatches(bufferedBatches) {\n if (!runtime || !bufferedBatches.length) {\n return;\n }\n var merged = mergeProjectedBatches(bufferedBatches);\n runtime.appendColumns(merged.columns, {\n fields: merged.fields,\n length: merged.length\n });\n bufferedBatches.length = 0;\n}\nfunction normalizeTimestampValue(value) {\n if (typeof value === 'string') {\n var parsed = new Date(value).getTime();\n return Number.isFinite(parsed) ? parsed : 0;\n }\n if (value instanceof Date) {\n return value.getTime();\n }\n if (typeof value === 'number') {\n return value < 1e12 ? value * 1000 : value;\n }\n var numeric = Number(value);\n if (Number.isFinite(numeric)) {\n return numeric < 1e12 ? numeric * 1000 : numeric;\n }\n return 0;\n}\nfunction collectRowTransferables(obj) {\n var buffers = [];\n if (!obj || typeof obj !== 'object' || !obj.columns) return buffers;\n for (var field in obj.columns) {\n if (Object.prototype.hasOwnProperty.call(obj.columns, field)) {\n var col = obj.columns[field];\n if (ArrayBuffer.isView(col) && col.buffer) buffers.push(col.buffer);\n }\n }\n return buffers;\n}\nfunction collectResponseTransferables(payload) {\n if (!payload || typeof payload !== 'object') return [];\n var seen = [];\n var buffers = [];\n function add(obj) {\n var found = collectRowTransferables(obj);\n for (var i = 0; i < found.length; ++i) {\n if (seen.indexOf(found[i]) < 0) {\n seen.push(found[i]);\n buffers.push(found[i]);\n }\n }\n }\n add(payload);\n if (payload.rows) add(payload.rows);\n if (payload.rowSets) {\n for (var setId in payload.rowSets) {\n if (Object.prototype.hasOwnProperty.call(payload.rowSets, setId)) {\n add(payload.rowSets[setId]);\n }\n }\n }\n return buffers;\n}\nfunction respond(id, payload) {\n var transferables = collectResponseTransferables(payload);\n self.postMessage({ id: id, ok: true, payload: payload }, transferables);\n}\nfunction fail(id, error) {\n self.postMessage({ id: id, ok: false, error: {\n message: String(error && error.message || error),\n stack: error && error.stack ? String(error.stack) : null\n } });\n}\nfunction publish(eventType, payload) {\n self.postMessage({ eventType: eventType, payload: payload });\n}\nfunction getProjectionFieldName(projection, inputName) {\n return projection && projection.rename && projection.rename[inputName] || inputName;\n}\nfunction getProjectionTransform(projection, inputName, outputName) {\n if (!projection || !projection.transforms) {\n return null;\n }\n return projection.transforms[outputName] || projection.transforms[inputName] || null;\n}\nfunction normalizeNumericValue(value) {\n if (typeof value === 'bigint') {\n return Number(value);\n }\n var numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : 0;\n}\nfunction projectBatch(batch, projection) {\n var actualFields = getFieldNames(batch);\n var inputFields = projection && Array.isArray(projection.fields) && projection.fields.length\n ? projection.fields.slice()\n : actualFields.slice();\n var fieldIndexes = {};\n var projectedFields = [];\n var columns = {};\n var length = batch && typeof batch.numRows === 'number' ? batch.numRows : 0;\n\n for (var actualIndex = 0; actualIndex < actualFields.length; ++actualIndex) {\n fieldIndexes[actualFields[actualIndex]] = actualIndex;\n }\n if (projection && Array.isArray(projection.extraFields) && projection.extraFields.length) {\n for (var extraIndex = 0; extraIndex < projection.extraFields.length; ++extraIndex) {\n var extraField = projection.extraFields[extraIndex];\n if (inputFields.indexOf(extraField) < 0) {\n inputFields.push(extraField);\n }\n }\n }\n\n for (var fieldIndex = 0; fieldIndex < inputFields.length; ++fieldIndex) {\n var inputName = inputFields[fieldIndex];\n var outputName = getProjectionFieldName(projection, inputName);\n var inputIndex = Object.prototype.hasOwnProperty.call(fieldIndexes, inputName)\n ? fieldIndexes[inputName]\n : fieldIndex;\n var sourceColumn = getColumn(batch, inputName, inputIndex);\n var transform = getProjectionTransform(projection, inputName, outputName);\n\n if (!Object.prototype.hasOwnProperty.call(columns, outputName)) {\n projectedFields.push(outputName);\n }\n\n var sourceKind = resolveColumnAccessor(sourceColumn);\n\n if (transform === 'timestampMs') {\n var values = new Float64Array(length);\n for (var rowIndex = 0; rowIndex < length; ++rowIndex) {\n values[rowIndex] = normalizeTimestampValue(sourceColumn == null ? undefined : getValueByKind(sourceColumn, rowIndex, sourceKind));\n }\n columns[outputName] = values;\n } else if (transform === 'number') {\n values = new Float64Array(length);\n for (rowIndex = 0; rowIndex < length; ++rowIndex) {\n values[rowIndex] = normalizeNumericValue(sourceColumn == null ? undefined : getValueByKind(sourceColumn, rowIndex, sourceKind));\n }\n columns[outputName] = values;\n } else if (transform === 'constantOne') {\n values = new Float64Array(length);\n values.fill(1);\n columns[outputName] = values;\n } else {\n columns[outputName] = sourceColumn;\n }\n }\n\n return {\n columns: columns,\n fields: projectedFields,\n length: length\n };\n}\nfunction buildLookupKey(columns, keyFields, rowIndex) {\n if (keyFields.length === 1) {\n var value = getValue(columns[keyFields[0]], rowIndex);\n return value == null ? '' : String(value);\n }\n var parts = new Array(keyFields.length);\n for (var fieldIndex = 0; fieldIndex < keyFields.length; ++fieldIndex) {\n var value = getValue(columns[keyFields[fieldIndex]], rowIndex);\n parts[fieldIndex] = value == null ? '' : String(value);\n }\n return parts.join('|');\n}\nfunction buildLookupKeyResolved(columns, keyFields, keyKinds, rowIndex) {\n if (keyFields.length === 1) {\n var col = columns[keyFields[0]];\n var value = col == null ? undefined : getValueByKind(col, rowIndex, keyKinds[0]);\n return value == null ? '' : String(value);\n }\n var parts = new Array(keyFields.length);\n for (var fieldIndex = 0; fieldIndex < keyFields.length; ++fieldIndex) {\n var col = columns[keyFields[fieldIndex]];\n var value = col == null ? undefined : getValueByKind(col, rowIndex, keyKinds[fieldIndex]);\n parts[fieldIndex] = value == null ? '' : String(value);\n }\n return parts.join('|');\n}\nfunction createSourceProgress(source) {\n return {\n batchesLoaded: 0,\n bytesLoaded: 0,\n response: null,\n rowsLoaded: 0,\n status: 'idle',\n totalBytes: null\n };\n}\nfunction cloneSourceProgressMap(sources) {\n var clone = {};\n for (var sourceId in sources) {\n var source = sources[sourceId];\n clone[sourceId] = {\n batchesLoaded: source.batchesLoaded,\n bytesLoaded: source.bytesLoaded,\n response: source.response ? Object.assign({}, source.response) : null,\n rowsLoaded: source.rowsLoaded,\n status: source.status,\n totalBytes: source.totalBytes\n };\n }\n return clone;\n}\nasync function readResponseErrorDetail(response) {\n if (!response || typeof response.text !== 'function') {\n return null;\n }\n\n try {\n var text = await response.text();\n if (!text) {\n return null;\n }\n try {\n var parsed = JSON.parse(text);\n return parsed && (parsed.error || parsed.message) ? String(parsed.error || parsed.message) : text;\n } catch (_) {\n return text;\n }\n } catch (_) {\n return null;\n }\n}\nfunction releaseAbortControllers() {\n for (var controllerIndex = 0; controllerIndex < abortControllers.length; ++controllerIndex) {\n try {\n abortControllers[controllerIndex].abort();\n } catch (_) {}\n }\n abortControllers = [];\n}\nfunction ensureRuntimeFromColumns(batchSpec) {\n if (runtime) {\n return;\n }\n runtime = self.crossfilter.createDashboardRuntime({\n columnarOptions: {\n fields: batchSpec.fields,\n length: batchSpec.length\n },\n columns: batchSpec.columns,\n wasm: runtimeConfig.wasm,\n dimensions: runtimeConfig.dimensions,\n groups: runtimeConfig.groups,\n kpis: runtimeConfig.kpis\n });\n if (runtimeConfig.initialFilters) {\n runtime.updateFilters(runtimeConfig.initialFilters);\n }\n}\nfunction ensureEmptyRuntime() {\n if (runtime) {\n return;\n }\n runtime = self.crossfilter.createDashboardRuntime({\n records: [],\n wasm: runtimeConfig.wasm,\n dimensions: runtimeConfig.dimensions,\n groups: runtimeConfig.groups,\n kpis: runtimeConfig.kpis\n });\n if (runtimeConfig.initialFilters) {\n runtime.updateFilters(runtimeConfig.initialFilters);\n }\n}\nfunction progressPayload(status, extra) {\n var sources = progress && progress.sources ? progress.sources : {};\n var batchesLoaded = 0;\n var bytesLoaded = 0;\n var rowsLoaded = 0;\n var totalBytes = 0;\n var hasKnownTotals = true;\n var hasSources = false;\n var baseRuntimeInfo = self.crossfilter.runtimeInfo();\n var payload = {\n batchesLoaded: 0,\n bytesLoaded: 0,\n fetch: {\n bytesLoaded: 0,\n totalBytes: null,\n percent: null,\n complete: false\n },\n load: {\n batchesLoaded: 0,\n rowsLoaded: 0,\n complete: !!(progress && progress.ready)\n },\n rowsLoaded: 0,\n runtime: runtime ? runtime.runtimeInfo() : {\n active: 'js',\n lastError: baseRuntimeInfo.lastError,\n wasmEnabled: runtimeConfig ? runtimeConfig.wasm !== false : baseRuntimeInfo.wasmEnabled,\n wasmSupported: baseRuntimeInfo.wasmSupported\n },\n sources: cloneSourceProgressMap(sources),\n status: status,\n totalBytes: null\n };\n\n for (var sourceId in sources) {\n var source = sources[sourceId];\n hasSources = true;\n batchesLoaded += source.batchesLoaded || 0;\n bytesLoaded += source.bytesLoaded || 0;\n rowsLoaded += source.rowsLoaded || 0;\n if (source.totalBytes == null) {\n hasKnownTotals = false;\n } else {\n totalBytes += source.totalBytes;\n }\n }\n\n payload.batchesLoaded = batchesLoaded;\n payload.bytesLoaded = bytesLoaded;\n payload.rowsLoaded = rowsLoaded;\n payload.load = {\n batchesLoaded: batchesLoaded,\n rowsLoaded: rowsLoaded,\n complete: !!(progress && progress.ready)\n };\n payload.totalBytes = hasSources && hasKnownTotals ? totalBytes : null;\n payload.fetch = {\n bytesLoaded: bytesLoaded,\n totalBytes: payload.totalBytes,\n percent: payload.totalBytes > 0 ? Math.min(1, bytesLoaded / payload.totalBytes) : null,\n complete: status === 'ready' || status === 'aborted' || status === 'error' || (payload.totalBytes != null && bytesLoaded >= payload.totalBytes)\n };\n\n if (extra) {\n for (var key in extra) {\n payload[key] = extra[key];\n }\n }\n\n return payload;\n}\nfunction publishProgress(status, force, extra) {\n var now = Date.now();\n if (!force && progress && progress.progressThrottleMs > 0 && now - progressTimer < progress.progressThrottleMs) {\n return;\n }\n progressTimer = now;\n publish('progress', progressPayload(status, extra));\n}\nasync function* responseChunks(sourceId, response) {\n var sourceProgress = progress.sources[sourceId];\n if (!response.body || typeof response.body.getReader !== 'function') {\n var buffer = await response.arrayBuffer();\n sourceProgress.bytesLoaded = buffer.byteLength;\n sourceProgress.status = 'downloading';\n publishProgress('downloading', true);\n yield new Uint8Array(buffer);\n return;\n }\n var reader = response.body.getReader();\n try {\n while (true) {\n var chunk = await reader.read();\n if (chunk.done) {\n return;\n }\n var value = chunk.value;\n sourceProgress.bytesLoaded += value.byteLength || value.length || 0;\n sourceProgress.status = 'downloading';\n publishProgress('downloading', false);\n yield value;\n }\n } finally {\n if (reader.releaseLock) reader.releaseLock();\n }\n}\nasync function getSourceInput(source) {\n var sourceProgress = progress.sources[source.id];\n if (source.dataUrl) {\n sourceProgress.status = 'requesting';\n publishProgress('starting', true);\n var controller = typeof AbortController === 'function' ? new AbortController() : null;\n var fetchInit = source.dataFetchInit || {};\n if (controller) {\n fetchInit = Object.assign({}, fetchInit, { signal: controller.signal });\n abortControllers.push(controller);\n }\n var response = await fetch(source.dataUrl, fetchInit);\n if (!response.ok) {\n var responseErrorDetail = await readResponseErrorDetail(response);\n throw new Error('Failed to fetch Arrow stream for ' + source.id + ': ' + response.status + ' ' + response.statusText + (responseErrorDetail ? ' — ' + responseErrorDetail : ''));\n }\n var headerValue = response.headers && response.headers.get ? response.headers.get('content-length') : null;\n sourceProgress.response = response.headers && response.headers.get ? {\n arrowFieldMapping: response.headers.get('x-synmetrix-arrow-field-mapping') || null,\n arrowFieldMappingEncoding: response.headers.get('x-synmetrix-arrow-field-mapping-encoding') || null,\n contentDisposition: response.headers.get('content-disposition') || null,\n contentType: response.headers.get('content-type') || null\n } : null;\n sourceProgress.totalBytes = headerValue == null ? null : Number(headerValue);\n sourceProgress.status = 'downloading';\n publishProgress('downloading', true);\n return responseChunks(source.id, response);\n }\n sourceProgress.totalBytes = source.arrowBuffer.byteLength || null;\n sourceProgress.bytesLoaded = sourceProgress.totalBytes || 0;\n sourceProgress.status = 'downloading';\n publishProgress('downloading', true);\n return new Uint8Array(source.arrowBuffer);\n}\nasync function maybePublishSnapshot(force) {\n if (!progress || !progress.emitSnapshots || !runtime) {\n return;\n }\n var now = Date.now();\n if (!force && progress.snapshotThrottleMs > 0 && now - snapshotTimer < progress.snapshotThrottleMs) {\n return;\n }\n snapshotTimer = now;\n publish('snapshot', {\n progress: progressPayload(progress.ready ? 'ready' : 'streaming'),\n snapshot: runtime.snapshot(null, runtimeConfig && runtimeConfig.snapshotGroups ? { groups: runtimeConfig.snapshotGroups } : null)\n });\n}\nasync function streamBaseSourceIntoRuntime(source) {\n var arrow = self.Arrow;\n var RecordBatchReader = getRecordBatchReader(arrow);\n var sourceProgress = progress.sources[source.id];\n var reader = await RecordBatchReader.from(await getSourceInput(source));\n var bufferedBatches = [];\n var bufferedRows = 0;\n\n for await (var batch of reader) {\n var projected = projectBatch(batch, source.projection);\n if (!runtime) {\n ensureRuntimeFromColumns(projected);\n } else {\n bufferedBatches.push(projected);\n bufferedRows += projected.length;\n if (bufferedRows >= runtimeConfig.batchCoalesceRows) {\n flushBufferedRuntimeBatches(bufferedBatches);\n bufferedRows = 0;\n }\n }\n sourceProgress.batchesLoaded += 1;\n sourceProgress.rowsLoaded += projected.length;\n sourceProgress.status = 'streaming';\n publishProgress('streaming', false);\n if (progress.emitSnapshots && bufferedBatches.length) {\n var shouldFlushForSnapshot = progress.snapshotThrottleMs <= 0 || Date.now() - snapshotTimer >= progress.snapshotThrottleMs;\n if (shouldFlushForSnapshot) {\n flushBufferedRuntimeBatches(bufferedBatches);\n bufferedRows = 0;\n }\n }\n await maybePublishSnapshot(false);\n }\n\n if (bufferedBatches.length) {\n flushBufferedRuntimeBatches(bufferedBatches);\n }\n\n sourceProgress.status = 'ready';\n publishProgress('streaming', true);\n}\nasync function loadProjectedBatchesFromSource(source) {\n var arrow = self.Arrow;\n var RecordBatchReader = getRecordBatchReader(arrow);\n var sourceProgress = progress.sources[source.id];\n var reader = await RecordBatchReader.from(await getSourceInput(source));\n var batches = [];\n var fields = [];\n var rowCount = 0;\n\n for await (var batch of reader) {\n var projected = projectBatch(batch, source.projection);\n batches.push(projected);\n if (!fields.length) {\n fields = projected.fields.slice();\n }\n rowCount += projected.length;\n sourceProgress.batchesLoaded += 1;\n sourceProgress.rowsLoaded += projected.length;\n sourceProgress.status = 'streaming';\n publishProgress('streaming', false);\n }\n\n sourceProgress.status = 'ready';\n publishProgress('streaming', true);\n return {\n batches: batches,\n fields: fields,\n rowCount: rowCount,\n sourceId: source.id\n };\n}\nasync function buildLookupIndexFromSource(source) {\n var arrow = self.Arrow;\n var RecordBatchReader = getRecordBatchReader(arrow);\n var sourceProgress = progress.sources[source.id];\n var reader = await RecordBatchReader.from(await getSourceInput(source));\n var index = new Map();\n var valueFields = source.lookup.valueFields.slice();\n var valueKinds = new Array(valueFields.length);\n\n for await (var batch of reader) {\n var projected = projectBatch(batch, source.projection);\n var keyKinds = new Array(source.lookup.keyFields.length);\n for (var ki = 0; ki < source.lookup.keyFields.length; ++ki) {\n keyKinds[ki] = resolveColumnAccessor(projected.columns[source.lookup.keyFields[ki]]);\n }\n var valKinds = new Array(valueFields.length);\n for (var vi = 0; vi < valueFields.length; ++vi) {\n valKinds[vi] = resolveColumnAccessor(projected.columns[valueFields[vi]]);\n }\n\n for (var rowIndex = 0; rowIndex < projected.length; ++rowIndex) {\n var key = buildLookupKeyResolved(projected.columns, source.lookup.keyFields, keyKinds, rowIndex);\n if (index.has(key)) {\n continue;\n }\n var values = new Array(valueFields.length);\n for (var valueIndex = 0; valueIndex < valueFields.length; ++valueIndex) {\n var valCol = projected.columns[valueFields[valueIndex]];\n var fieldValue = valCol == null ? undefined : getValueByKind(valCol, rowIndex, valKinds[valueIndex]);\n values[valueIndex] = fieldValue;\n if (valueKinds[valueIndex] !== 'generic' && typeof fieldValue === 'number' && Number.isFinite(fieldValue)) {\n valueKinds[valueIndex] = 'number';\n } else if (fieldValue != null && (typeof fieldValue !== 'number' || !Number.isFinite(fieldValue))) {\n valueKinds[valueIndex] = 'generic';\n }\n }\n index.set(key, values);\n }\n\n sourceProgress.batchesLoaded += 1;\n sourceProgress.rowsLoaded += projected.length;\n sourceProgress.status = 'streaming';\n publishProgress('streaming', false);\n }\n\n sourceProgress.status = 'ready';\n publishProgress('streaming', true);\n return {\n id: source.id,\n index: index,\n keyFields: source.lookup.keyFields.slice(),\n valueFields: valueFields,\n valueKinds: valueKinds.map(function(kind) {\n return kind === 'number' ? 'number' : 'generic';\n })\n };\n}\nfunction allocateLookupColumn(length, kind) {\n if (kind === 'number') {\n var numeric = new Float64Array(length);\n numeric.fill(NaN);\n return numeric;\n }\n return new Array(length);\n}\nfunction applyLookupIndexes(baseBatches, lookupResults) {\n for (var batchIndex = 0; batchIndex < baseBatches.length; ++batchIndex) {\n var batch = baseBatches[batchIndex];\n\n for (var lookupIndex = 0; lookupIndex < lookupResults.length; ++lookupIndex) {\n var lookup = lookupResults[lookupIndex];\n var columnsByField = {};\n\n for (var valueFieldIndex = 0; valueFieldIndex < lookup.valueFields.length; ++valueFieldIndex) {\n var valueField = lookup.valueFields[valueFieldIndex];\n columnsByField[valueField] = allocateLookupColumn(batch.length, lookup.valueKinds[valueFieldIndex]);\n if (batch.fields.indexOf(valueField) < 0) {\n batch.fields.push(valueField);\n }\n }\n\n var lookupKeyKinds = new Array(lookup.keyFields.length);\n for (var ki = 0; ki < lookup.keyFields.length; ++ki) {\n lookupKeyKinds[ki] = resolveColumnAccessor(batch.columns[lookup.keyFields[ki]]);\n }\n\n for (var rowIndex = 0; rowIndex < batch.length; ++rowIndex) {\n var values = lookup.index.get(buildLookupKeyResolved(batch.columns, lookup.keyFields, lookupKeyKinds, rowIndex));\n if (!values) {\n continue;\n }\n for (var fieldIndex = 0; fieldIndex < lookup.valueFields.length; ++fieldIndex) {\n columnsByField[lookup.valueFields[fieldIndex]][rowIndex] = values[fieldIndex];\n }\n }\n\n for (fieldIndex = 0; fieldIndex < lookup.valueFields.length; ++fieldIndex) {\n batch.columns[lookup.valueFields[fieldIndex]] = columnsByField[lookup.valueFields[fieldIndex]];\n }\n }\n }\n}\nfunction buildRuntimeFromBatches(batches) {\n if (!batches.length) {\n ensureEmptyRuntime();\n return;\n }\n\n ensureRuntimeFromColumns(batches[0]);\n if (batches.length === 1) {\n return;\n }\n\n var bufferedBatches = [];\n var bufferedRows = 0;\n\n for (var batchIndex = 1; batchIndex < batches.length; ++batchIndex) {\n bufferedBatches.push(batches[batchIndex]);\n bufferedRows += batches[batchIndex].length;\n if (bufferedRows >= runtimeConfig.batchCoalesceRows) {\n flushBufferedRuntimeBatches(bufferedBatches);\n bufferedRows = 0;\n }\n }\n\n if (bufferedBatches.length) {\n flushBufferedRuntimeBatches(bufferedBatches);\n }\n}\nasync function startStreaming(payload) {\n var arrow = self.Arrow;\n var RecordBatchReader = getRecordBatchReader(arrow);\n if (!RecordBatchReader || !RecordBatchReader.from) {\n throw new Error('Apache Arrow RecordBatchReader is not available in the worker.');\n }\n\n var sources = payload.sources && payload.sources.length\n ? payload.sources.slice()\n : [{\n arrowBuffer: payload.arrowBuffer || null,\n dataFetchInit: payload.dataFetchInit || null,\n dataUrl: payload.dataUrl || null,\n id: 'source_0',\n lookup: null,\n projection: null,\n role: 'base'\n }];\n\n progress = {\n emitSnapshots: payload.emitSnapshots === true,\n progressThrottleMs: typeof payload.progressThrottleMs === 'number' ? payload.progressThrottleMs : 100,\n ready: false,\n snapshotThrottleMs: typeof payload.snapshotThrottleMs === 'number' ? payload.snapshotThrottleMs : 250,\n sources: {}\n };\n\n progressTimer = 0;\n snapshotTimer = 0;\n abortControllers = [];\n\n for (var sourceIndex = 0; sourceIndex < sources.length; ++sourceIndex) {\n progress.sources[sources[sourceIndex].id] = createSourceProgress(sources[sourceIndex]);\n }\n\n publishProgress('starting', true);\n\n try {\n if (sources.length === 1 && sources[0].role === 'base') {\n await streamBaseSourceIntoRuntime(sources[0]);\n } else {\n var baseSource = null;\n var lookupSources = [];\n\n for (sourceIndex = 0; sourceIndex < sources.length; ++sourceIndex) {\n if (sources[sourceIndex].role === 'base') {\n baseSource = sources[sourceIndex];\n } else {\n lookupSources.push(sources[sourceIndex]);\n }\n }\n\n var results = await Promise.all([loadProjectedBatchesFromSource(baseSource)].concat(lookupSources.map(function(source) {\n return buildLookupIndexFromSource(source);\n })));\n var baseResult = results[0];\n var lookupResults = results.slice(1);\n\n publishProgress('joining', true);\n applyLookupIndexes(baseResult.batches, lookupResults);\n publishProgress('building', true);\n buildRuntimeFromBatches(baseResult.batches);\n }\n\n ensureEmptyRuntime();\n progress.ready = true;\n publishProgress('ready', true);\n await maybePublishSnapshot(true);\n publish('ready', progressPayload('ready'));\n } catch (error) {\n if (error && error.name === 'AbortError') {\n publishProgress('aborted', true);\n return;\n }\n publish('error', Object.assign(progressPayload('error'), {\n message: String(error && error.message || error),\n stack: error && error.stack ? String(error.stack) : null\n }));\n }\n}\nself.onmessage = async function(event) {\n var message = event.data || {};\n var id = message.id;\n try {\n if (message.type !== 'initStreaming' && message.type !== 'dispose') {\n if (!runtime) throw new Error('Streaming dashboard worker is not initialized.');\n }\n switch (message.type) {\n case 'initStreaming': {\n runtimeConfig = {\n batchCoalesceRows: typeof message.payload.batchCoalesceRows === 'number' && message.payload.batchCoalesceRows > 0\n ? Math.floor(message.payload.batchCoalesceRows)\n : 65536,\n wasm: message.payload.wasm,\n dimensions: message.payload.dimensions,\n groups: message.payload.groups,\n kpis: message.payload.kpis,\n initialFilters: message.payload.initialFilters || null,\n snapshotGroups: message.payload.snapshotGroups || null\n };\n runtime = null;\n startStreaming(message.payload);\n respond(id, { runtime: null });\n return;\n }\n case 'snapshot':\n respond(id, runtime.snapshot(message.payload.filters, message.payload.options || null));\n return;\n case 'groups':\n respond(id, runtime.groups(message.payload.request));\n return;\n case 'bounds':\n respond(id, runtime.bounds(message.payload.request));\n return;\n case 'query':\n respond(id, runtime.query(message.payload.request));\n return;\n case 'append':\n respond(id, runtime.append(message.payload.records || []));\n return;\n case 'updateFilters':\n respond(id, runtime.updateFilters(message.payload.filters));\n return;\n case 'createGroup':\n respond(id, runtime.createGroup(message.payload.spec));\n return;\n case 'disposeGroup':\n respond(id, runtime.disposeGroup(message.payload.id));\n return;\n case 'rows':\n respond(id, runtime.rows(message.payload.query));\n return;\n case 'rowSets':\n respond(id, runtime.rowSets(message.payload.request));\n return;\n case 'removeFiltered':\n respond(id, runtime.removeFiltered(message.payload.selection));\n return;\n case 'reset':\n respond(id, runtime.reset());\n return;\n case 'runtimeInfo':\n respond(id, runtime.runtimeInfo());\n return;\n case 'dispose':\n releaseAbortControllers();\n if (runtime) {\n runtime.dispose();\n runtime = null;\n }\n runtimeConfig = null;\n respond(id, null);\n self.close();\n return;\n default:\n throw new Error('Unknown streaming dashboard worker message: ' + message.type);\n }\n } catch (error) {\n fail(id, error);\n }\n};\n`)],{type:"text/javascript"})),new Worker(t)}}var u,s,i=n(),l=1,f=new Map,c={error:new Set,progress:new Set,ready:new Set,snapshot:new Set},d=!1,h=new Promise((function(e,r){u=e,s=r}));function p(){t&&(URL.revokeObjectURL(t),t=null)}function m(e,r,n){if(d)return Promise.reject(new Error("Streaming dashboard worker has already been disposed."));var t=l++;return new Promise((function(o,a){f.set(t,{resolve:o,reject:a}),i.postMessage({id:t,payload:r||null,type:e},n||[])}))}i.addEventListener("message",(function(e){var r=e.data||{};if(r.eventType)return function(e,r){c[e].forEach((function(e){e(r)}))}(r.eventType,r.payload),void("ready"===r.eventType?u(r.payload):"error"===r.eventType&&s(new Error(r.payload&&r.payload.message||"Streaming dashboard worker failed.")));var n=f.get(r.id);if(n)if(f.delete(r.id),r.ok)n.resolve(r.payload);else{var t=new Error(r.error&&r.error.message||"Streaming dashboard worker request failed.");r.error&&r.error.stack&&(t.stack=r.error.stack),n.reject(t)}})),i.addEventListener("error",(function(e){var r=e.error||new Error(e.message||"Streaming dashboard worker failed.");!function(e){f.forEach((function(r){r.reject(e)})),f.clear()}(r),s(r),p()}));var g=[],v=Fe(e,g),y={dataFetchInit:e.dataFetchInit||null,dataUrl:v?null:e.dataUrl?Ie(e.dataUrl):null,dimensions:e.dimensions||[],emitSnapshots:!0===e.emitSnapshots,groups:e.groups||[],initialFilters:e.initialFilters||null,kpis:e.kpis||[],progressThrottleMs:e.progressThrottleMs,snapshotGroups:e.snapshotGroups||null,snapshotThrottleMs:e.snapshotThrottleMs,sources:v,batchCoalesceRows:e.batchCoalesceRows,wasm:!1!==e.wasm};return!v&&e.arrowBuffer&&(y.arrowBuffer=xe(e.arrowBuffer),g.push(y.arrowBuffer)),m("initStreaming",y,g).then((function(e){return{append:function(e){return m("append",{records:e||[]})},bounds:function(e){return m("bounds",{request:e||null})},dispose:function(){return d?Promise.resolve():m("dispose").catch((function(e){throw i.terminate(),p(),e})).finally((function(){d=!0,i.terminate(),p()}))},on:function(e,r){if(!c[e])throw new Error("Unsupported streaming dashboard event: "+e);return c[e].add(r),function(){c[e].delete(r)}},ready:h,query:function(e){return m("query",{request:e||null})},groups:function(e){return m("groups",{request:e||null})},removeFiltered:function(e){return m("removeFiltered",{selection:e||"included"})},reset:function(){return m("reset")},runtimeInfo:function(){return m("runtimeInfo")},snapshot:function(e,r){return m("snapshot",{filters:e||null,options:r||null})},rows:function(e){return m("rows",{query:e||null})},rowSets:function(e){return m("rowSets",{request:e||null})},updateFilters:function(e){return m("updateFilters",{filters:e||null})},createGroup:function(e){return m("createGroup",{spec:e})},disposeGroup:function(e){return m("disposeGroup",{id:e})},workerRuntime:e.runtime}})).catch((function(e){throw d=!0,i.terminate(),p(),e}))}var Se=-1;je.heap=m,je.heapselect=v,je.bisect=I,je.permute=F,je.rowsFromColumns=V,je.fromColumns=function(e,r){return je(V(e,r))},je.rowsFromArrowTable=K,je.fromArrowTable=function(e,r){return je(K(e,r))},je.configureRuntime=function(e){return e&&Object.prototype.hasOwnProperty.call(e,"wasm")&&(q.wasm=!1!==e.wasm),ee.configureRuntime(e)},je.runtimeInfo=function(){return ee.runtimeInfo()},je.createDashboardRuntime=function(e){return be(je,e)},je.createDashboardWorker=function(e){return ke(e)},je.createStreamingDashboardWorker=function(e){return Ae(e)};var Ce=/^\(?(\w+)\)?\s*=>\s*\1(?:\.(\w+)|\[['"]([^'"]+)['"]\])\s*$/,Be=/^function\s*\w*\s*\(\s*(\w+)\s*\)\s*\{\s*return\s+\1(?:\.(\w+)|\[['"]([^'"]+)['"]\])\s*;?\s*\}$/;function Re(e){try{var r=e.toString().trim(),n=Ce.exec(r)||Be.exec(r);return n?n[2]||n[3]:null}catch(e){return null}}function je(){var e,r=X(),n={add:ne,allFilteredIndexes:ce,batch:G,remove:te,dimension:ue,getFieldValue:Z,groupAll:se,size:ie,all:le,allFiltered:fe,onChange:he,isElementFiltered:ae,takeColumns:de,configureRuntime:r.configureRuntime,runtimeInfo:r.runtimeInfo},t=[],o=0,a=[],u=[],p=[],g=[],y=[],b=[],x=0,R=0,j=!1,T=!1;function L(e){var r=t.length;t.length=r+e.length;var n=O(e);if(n)for(var o in n.rows)Object.prototype.hasOwnProperty.call(n.rows,o)&&(t[r+Number(o)]=n.rows[o]);else for(var a=0;a<e.length;++a)t[r+a]=e[a]}function E(e,r,n){var t=O(e);t&&b.push({batch:t,accessors:t.accessorsByField,columns:t.columns,start:r,end:r+n})}function P(e){if(1===b.length){var r=b[0];return e>=r.start&&e<r.end?r:null}for(var n=0,t=b.length;n<t;){var o=n+t>>>1,a=b[o];if(e<a.start)t=o;else{if(!(e>=a.end))return a;n=o+1}}return null}function _(){return x>0}function V(e){return g.push(e),e}function z(e){var r=g.indexOf(e);r>=0&&g.splice(r,1)}function K(){if(!T){T=!0;for(var e=0;e<g.length;++e)g[e]()}}function q(e,r,n,t){if(R>0)return j=!0,void K();a.forEach((function(o){o(e,r,n,t)})),pe("filtered")}function D(){j&&(j=!1,T=!1,pe("filtered"))}function G(e){R+=1;try{return e()}finally{(R-=1)||D()}}function W(e){var r=t[e];if(void 0!==r)return r;if(!b.length)return e in t?r:void 0;var n=P(e);if(!n)return e in t?r:void 0;var o=e-n.start;return r=n.batch.materialized&&n.batch.materialized[o]?n.batch.rows[o]:N(n.batch,o),t[e]=r,r}function Z(e,r){var n=t[e];if(void 0!==n)return n?n[r]:void 0;if(b.length){var o=P(e);if(o){var a=e-o.start;if(o.accessors&&o.accessors[r])return o.accessors[r](a);if(Object.prototype.hasOwnProperty.call(o.columns,r))return M(o.columns[r],a)}}return(n=W(e))?n[r]:void 0}function J(e){return"number"==typeof e&&Number.isFinite(e)}function Y(e,r,n){var t=e&&e._xfilterMetricSpec;return t&&t===(r&&r._xfilterMetricSpec)&&t===(n&&n._xfilterMetricSpec)?t:null}function $(e,r,n,t){if(!e)return e;for(var o=0;o<r.length;++o){var a,u=r[o];switch(u.op){case"count":e[u.id]+=t;break;case"sum":J(a=Z(n,u.field))&&(e[u.id]+=t*a);break;case"avg":J(a=Z(n,u.field))&&(e[u.id].sum+=t*a,e[u.id].count+=t);break;case"avgNonZero":J(a=Z(n,u.field))&&0!==a&&(e[u.id].sum+=t*a,e[u.id].count+=t)}}return e.__version+=1,e}function H(){if(b.length)for(var e=0;e<o;++e)W(e)}function Q(e,r,n,t,o){for(var a=t;a<o;++a)e[r++]=W(a)[n];return r}function ee(e,r,n){if(!n)return[];var t=new Array(n),o=r,a=0,u=r+n;if(!b.length)return Q(t,0,e,r,u),t;for(var s=0;s<b.length&&o<u;++s){var i=b[s];if(!(i.end<=o)){if(i.start>=u)break;if(o<i.start){var l=Math.min(i.start,u);if(a=Q(t,a,e,o,l),(o=l)>=u)break}var f=Math.max(o,i.start),c=Math.min(i.end,u),d=i.accessors&&i.accessors[e],h=i.columns[e];if(d)for(var p=f;p<c;++p)t[a++]=d(p-i.start);else if(null!=h)for(p=f;p<c;++p)t[a++]=M(h,p-i.start);else a=Q(t,a,e,f,c);o=c}}return o<u&&Q(t,a,e,o,u),t}function re(e,r,n){if(!n||!b.length)return null;for(var t=r+n,o=0;o<b.length;++o){var a=b[o];if(!(a.end<=r))return a.start>r||a.end<t?null:a.accessors&&a.accessors[e]?{accessor:a.accessors[e],offset:r-a.start}:null}return null}function ne(r){var t=o,a=r.length;return a&&(L(r),E(r,t,a),e.lengthen(o+=a),u.forEach((function(e){e(r,t,a)})),pe("dataAdded")),n}function te(r){H();for(var n,u=new Array(o),s=[],i="function"==typeof r,l=0,f=0;l<o;++l)n=l,(i?r(W(n),n):e.zero(n))?(s.push(l),u[l]=Se):u[l]=f++;a.forEach((function(e){e(-1,-1,[],s,!0)})),p.forEach((function(e){e(u)}));for(var c=0,d=0;c<o;++c)u[c]!==Se&&(c!==d&&(e.copy(d,c),t[d]=t[c]),++d);t.length=o=d,e.truncate(d),b=[],pe("dataRemoved")}function oe(r){var n,t,o,a,u=Array(e.subarrays);for(n=0;n<e.subarrays;n++)u[n]=-1;for(t=0,o=r.length;t<o;t++)u[(a=r[t].id())>>7]&=~(1<<(63&a));return u}function ae(r,n){var t=oe(n||[]);return e.zeroExceptMask(r,t)}function ue(n,g){var R;"string"==typeof n?(R=n,n=function(e){return U(e,R)}):"function"==typeof n&&(R=Re(n));var j,T,L,E,M,P,O,N,_,K,D,G,Z,J,H,Q={filter:function(e){return null==e?Qe():Array.isArray(e)?He(e):"function"==typeof e?Xe(e):$e(e)},filterExact:$e,filterIn:function(e){if(se=null,ie=0,le&&!M){var r=me(e),n=Ae(r);if(n)return Z=e,Oe(!0),te=f,G=null,oe="in",ae=r,Be(n,"in");Me()}var t=me(e),o=Ve(t),a=ze(),u=new Set(t),s=function(e){return u.has(e)};if(Z=e,Oe(!0),te=f,G=s,oe="in",ae=t,null===a)return er(s,!1),de=o.length?o[0][0]:0,he=o.length?o[o.length-1][1]:0,Q;return De(a,o,!1)},filterRange:He,filterFunction:Xe,filterAll:Qe,currentFilter:function(){return Z},hasCurrentFilter:function(){return J},top:function(r,n){Me();var t,o=[],a=he,u=0;n&&n>0&&(u=n);for(;--a>=de&&r>0;)e.zero(t=P[a])&&(u>0?--u:(o.push(W(t)),--r));if(g)for(a=0;a<X.length&&r>0;a++)e.zero(t=X[a])&&(u>0?--u:(o.push(W(t)),--r));return o},topIndex:function(r,n){Me();var t,o=[],a=he,u=0;n&&n>0&&(u=n);for(;--a>=de&&r>0;)e.zero(t=P[a])&&(u>0?--u:(o.push(t),--r));if(g)for(a=0;a<X.length&&r>0;a++)e.zero(t=X[a])&&(u>0?--u:(o.push(t),--r));return o},bottom:function(r,n){Me();var t,o,a=[],u=0;n&&n>0&&(u=n);if(g)for(t=0;t<X.length&&r>0;t++)e.zero(o=X[t])&&(u>0?--u:(a.push(W(o)),--r));t=de;for(;t<he&&r>0;)e.zero(o=P[t])&&(u>0?--u:(a.push(W(o)),--r)),t++;return a},bottomIndex:function(r,n){Me();var t,o,a=[],u=0;n&&n>0&&(u=n);if(g)for(t=0;t<X.length&&r>0;t++)e.zero(o=X[t])&&(u>0?--u:(a.push(o),--r));t=de;for(;t<he&&r>0;)e.zero(o=P[t])&&(u>0?--u:(a.push(o),--r)),t++;return a},group:rr,groupAll:function(){var e=rr(d),r=e.all;return delete e.all,delete e.top,delete e.order,delete e.orderNatural,delete e.size,e.value=function(){return r()[0].value},e},dispose:nr,remove:nr,accessor:n,id:function(){return E}},X=[],ne=function(e){return Te(e).sort((function(e,r){return w(O[e],O[r])||e-r}))},te=f,oe="all",ae=null,ue=new Map,se=null,ie=0,le=null,fe=[],ce=[],de=0,he=0,pe=0;function me(e){var r=Array.from(new Set(e));return r.sort(w),r}function ge(e){var r=typeof e;return null==e||"string"===r||"number"===r||"boolean"===r||"bigint"===r}function ve(e){if(!(le.selectionMarks.length>=e)){var r=new Uint32Array(e);r.set(le.selectionMarks),le.selectionMarks=r}}function ye(){return le.codes.length===le.codesLength?le.codes:le.codes.subarray(0,le.codesLength)}function be(e,r){var n=new Uint32Array(le.codeToValue.length);return n.set(e),le.codeCounts=n,n}function we(e,r){for(var n=new Uint32Array(r),t=0;t<e.length;++t)++n[e[t]];return n}function ke(e){if(!e)return null;for(var r=0;r<e.length;++r)if(!e[r])return e;return null}function xe(e){return e&&e.length!==o?e:null}function Ie(e){if(!e||e.length===o)return null;for(var r=new Uint8Array(o),n=0;n<e.length;++n)r[e[n]]=1;return r}function Fe(e,r){return r||Ie(e)}function Ae(e){if(!le)return null;var r,n,t,o,a,u=new Uint32Array(e.length),s=0;for(ve(le.codeToValue.length),t=le.selectionMarks,4294967295===le.selectionMarkVersion&&(t.fill(0),le.selectionMarkVersion=1),n=le.selectionMarkVersion++,r=0;r<e.length;++r){if(!ge(o=e[r]))return null;void 0!==(a=le.valueToCode.get(o))&&t[a]!==n&&(t[a]=n,u[s++]=a)}return u.slice(0,s)}function Ce(r){var n,t,u,s,i,l,f,c=a.length>0||y.length>0,d=c?[]:null,h=c?[]:null,p=le.selected,m=xe(le.matchIndices);if(r=xe(r),!m&&!r)return le.selected=null,le.matchIndices=null,Q;if(m&&r){for(p=Fe(m,p),n=0,t=0;n<m.length||t<r.length;)(u=n<m.length?m[n]:o)!==(s=t<r.length?r[t]:o)?u<s?(e[L][u]&j||(e[L][u]|=j),p[u]=0,c&&h.push(u),++n):(e[L][s]&j&&(e[L][s]&=T),p[s]=1,c&&d.push(s),++t):(++n,++t);return le.selected=ke(p),le.matchIndices=r,c&&q(j,L,d,h),Q}if(f=Ie(r),!(p=Fe(m,p))&&!f)return le.selected=null,le.matchIndices=null,Q;for(i=0;i<o;++i)(!p||1===p[i])!==(l=!f||1===f[i])&&(l?(e[L][i]&j&&(e[L][i]&=T),c&&d.push(i)):(e[L][i]&j||(e[L][i]|=j),c&&h.push(i)));return le.selected=f,le.matchIndices=r,c&&q(j,L,d,h),Q}function Be(e,n){var t;return function(e){if(!le||!e||!e.length)return!1;for(var r=0,n=0;n<e.length;++n)r+=le.codeCounts[e[n]]||0;return r===o}(e)?(oe=n,de=0,he=0,Ce(null)):(t=r.findEncodedMatches(ye(),e),t=new Uint32Array(t),oe=n,de=0,he=0,Ce(t))}function je(){if(!le||!J||"all"===oe)return new Uint32Array(0);if(se){var e=le.codeToValue.length;if(e===ie)return se;var r,n,t=le.codeToValue,o=[],a=Z;for(r=1;r<t.length;++r)w(n=t[r],a[0])>=0&&w(n,a[1])<0&&o.push(r);return se=new Uint32Array(o),ie=e,se}return Ae("in"===oe?ae||[]:[Z])}function Ee(n,t){var a,u,s,i,l,f,c,d=xe(le.matchIndices);if(d)if(c=je()){for((a=Fe(d,le.selected)).length>=o?s=a:(s=new Uint8Array(o)).set(a),i=r.findEncodedMatches(t,c),u=new Uint32Array(i.length),l=0;l<i.length;++l)s[f=n+i[l]]=1,u[l]=f;for(f=n;f<o;++f)s[f]||(e[L][f]|=j);le.matchIndices=xe(function(e,r){if(!e||!e.length)return r;if(!r||!r.length)return e;var n=new Uint32Array(e.length+r.length);return n.set(e),n.set(r,e.length),n}(d,u)),le.selected=ke(s)}else Me()}function Me(){if(le&&!M){var e,r,n,t=ye(),o=new Array(t.length);for(r=0;r<o.length;++r)o[r]=le.codeToValue[t[r]];O=o,N=ne(o.length),M=F(O,N),P=N,O=N=null,ue.clear(),"in"===oe?(n=Ve(ae||[]),de=n.length?n[0][0]:0,he=n.length?n[n.length-1][1]:0):(e=te(M),de=e[0],he=e[1]),le=null}}function Pe(){if(!le||M||g)return!1;for(var e=1;e<le.codeToValue.length;++e){var r=le.codeToValue[e];if(void 0===r||!(r>=r))return!1}return!0}function Oe(e){!0===J!==(e=!!e)&&(x+=e?1:-1,J=e)}function Ne(){return x>(J?1:0)}function _e(e){if(ue.has(e))return ue.get(e);var r=I.left(M,e,0,M.length),n=I.right(M,e,r,M.length),t=r===n?null:[r,n];return ue.set(e,t),t}function Ve(e){if(!e||!e.length)return[];for(var r=[],n=0;n<e.length;++n){var t=_e(e[n]),o=r[r.length-1];t&&(o&&t[0]<=o[1]?o[1]=Math.max(o[1],t[1]):r.push([t[0],t[1]]))}return r}function ze(){if(!M)return[];switch(oe){case"all":return M.length?[[0,M.length]]:[];case"bounds":return de===he?[]:[[de,he]];case"in":return Ve(ae);default:return null}}function Ke(e,r,n,t){for(var o=n;o<t;++o)e.push(P[o]),r.push(o)}function qe(r,n,t,o,a){var u,s;if(g){var i=[],l=[];for(u=0;u<r.length;u++)K[r[u]]++,D[t[u]]=0,1===K[r[u]]&&(e[L][r[u]]^=j,i.push(r[u]));for(u=0;u<n.length;u++)K[n[u]]--,D[o[u]]=1,0===K[n[u]]&&(e[L][n[u]]^=j,l.push(n[u]));if(r=i,n=l,a)for(u=0;u<X.length;u++)e[L][s=X[u]]&j&&(e[L][s]^=j,r.push(s));else for(u=0;u<X.length;u++)e[L][s=X[u]]&j||(e[L][s]^=j,n.push(s))}else{for(u=0;u<r.length;u++)e[L][r[u]]^=j;for(u=0;u<n.length;u++)e[L][n[u]]^=j}return q(j,L,r,n),Q}function De(e,r,n){for(var t=[],o=[],a=[],u=[],s=e.map((function(e){return[e[0],e[1]]})),i=r.map((function(e){return[e[0],e[1]]})),l=0,f=0;l<s.length||f<i.length;){var c=s[l],d=i[f];c?d?c[1]<=d[0]?(Ke(o,u,c[0],c[1]),++l):d[1]<=c[0]?(Ke(t,a,d[0],d[1]),++f):(c[0]<d[0]?Ke(o,u,c[0],d[0]):d[0]<c[0]&&Ke(t,a,d[0],c[0]),c[1]<d[1]?(i[f]=[c[1],d[1]],++l):d[1]<c[1]?(s[l]=[d[1],c[1]],++f):(++l,++f)):(Ke(o,u,c[0],c[1]),++l):(Ke(t,a,d[0],d[1]),++f)}return de=r.length?r[0][0]:0,he=r.length?r[r.length-1][1]:0,qe(t,o,a,u,n)}u.unshift(We),u.push(Ze),p.push(Je);var Ge=e.add();function We(a,u,i){var l,f,c=null,d=R&&!g&&r.canUseWasmScan()?re(R,u,i):null,h=!R&&a===t&&b.length;function p(){return R?(c||(c=ee(R,u,i)),c):null}function m(e){return h?W(u+e):a[e]}if(!g&&R)if(u||M){if(le&&!M){var v=d?function(e,r,n){if(!le)return null;var t,o,a,u=le.codesLength,s=u+n,i=le.codes,l=le.codeCounts,f=new Uint32Array(n);if(s>i.length){for(var c=i.length;c<s;)c*=2;var d=new Uint32Array(c);d.set(i.subarray(0,u)),i=d,le.codes=i}for(t=0;t<n;++t){if(!ge(o=e(r+t)))return null;le.valueToCode.has(o)||(a=le.codeToValue.length,le.valueToCode.set(o,a),le.codeToValue.push(o)),a=le.valueToCode.get(o),f[t]=a,i[u+t]=a,a>=l.length&&(l=be(l)),++l[a]}return le.codesLength=s,ve(le.codeToValue.length),f}(d.accessor,d.offset,i):function(e){if(!le)return null;var r,n,t,o=le.codesLength,a=o+e.length,u=le.codes,s=le.codeCounts,i=new Uint32Array(e.length);if(a>u.length){for(var l=u.length;l<a;)l*=2;var f=new Uint32Array(l);f.set(u.subarray(0,o)),u=f,le.codes=u}for(r=0;r<e.length;++r){if(!ge(n=e[r]))return null;le.valueToCode.has(n)||(t=le.codeToValue.length,le.valueToCode.set(n,t),le.codeToValue.push(n)),t=le.valueToCode.get(n),i[r]=t,u[o+r]=t,t>=s.length&&(s=be(s)),++s[t]}return le.codesLength=a,ve(le.codeToValue.length),i}(p());if(v)return Ee(u,v),_=v,de=0,void(he=0);Me()}}else if(le=d?function(e,n,t){if(!R||g||!r.canUseWasmScan())return null;var o,a,u,s=new Uint32Array(t<64?64:t),i=new Map,l=[void 0];for(o=0;o<t;++o){if(!ge(a=e(n+o)))return null;i.has(a)||(u=l.length,i.set(a,u),l.push(a)),s[o]=i.get(a)}return{codeCounts:we(s,l.length),codesLength:t,codeToValue:l,codes:s,matchIndices:null,selected:null,selectionMarkVersion:1,selectionMarks:new Uint32Array(l.length),valueToCode:i}}(d.accessor,d.offset,i):function(e){if(!R||g||!r.canUseWasmScan())return null;var n,t,o,a=e.length<64?64:e.length,u=new Uint32Array(a),s=new Map,i=[void 0];for(n=0;n<e.length;++n){if(!ge(t=e[n]))return null;s.has(t)||(o=i.length,s.set(t,o),i.push(t)),u[n]=s.get(t)}return{codeCounts:we(u,i.length),codesLength:e.length,codeToValue:i,codes:u,matchIndices:null,selected:null,selectionMarkVersion:1,selectionMarks:new Uint32Array(i.length),valueToCode:s}}(p()),le){if(J&&"all"!==oe){var y=je();if(y){var k=y.length?r.findEncodedMatches(ye(),y):new Uint32Array(0);k=new Uint32Array(k);for(var x=new Uint8Array(i),I=0;I<k.length;++I)x[k[I]]=1;for(var A=0;A<i;++A)x[A]||(e[L][A]|=j);le.matchIndices=xe(k),le.selected=ke(x)}}return _=ye(),de=0,void(he=0)}if(g){c=p(),pe=0,me=0,H=[];for(var S=0;S<a.length;S++)for(me=0,H=c?c[S]:n(m(S));me<H.length;me++)pe++;O=[],l=Te(a.length),f=Ue(pe,1);for(var C=Te(pe),B=0,U=0;U<a.length;U++)if((H=c?c[U]:n(m(U))).length)for(l[U]=H.length,me=0;me<H.length;me++)O.push(H[me]),C[B]=U,B++;else l[U]=0,X.push(U+u);var T=ne(pe);O=F(O,T),N=F(C,T)}else{if(c=p())O=c;else if(h){O=new Array(i);for(var E=0;E<i;++E)O[E]=n(m(E))}else O=a.map(n);N=ne(i),O=F(O,N)}var V,z,q,Z=te(O),Y=Z[0],$=Z[1];if(g)if(i=pe,G)for(V=0;V<i;++V)G(O[V],V)||(0==--l[N[V]]&&(e[L][N[V]+u]|=j),f[V]=1);else{for(z=0;z<Y;++z)0==--l[N[z]]&&(e[L][N[z]+u]|=j),f[z]=1;for(q=$;q<i;++q)0==--l[N[q]]&&(e[L][N[q]+u]|=j),f[q]=1}else if(G)for(V=0;V<i;++V)G(O[V],V)||(e[L][N[V]+u]|=j);else{for(z=0;z<Y;++z)e[L][N[z]+u]|=j;for(q=$;q<i;++q)e[L][N[q]+u]|=j}if(!u)return M=O,P=N,K=l,D=f,ue.clear(),de=Y,void(he=$);var Q,ae=M,se=P,ie=D,fe=0;if(S=0,g&&(Q=u,u=ae.length,i=pe),M=new Array(g?u+i:o),P=g?new Array(u+i):Ue(o,o),g&&(D=Ue(u+i,1)),g){var ce=K.length;K=s.arrayLengthen(K,o);for(var me=0;me+ce<o;me++)K[me+ce]=l[me]}for(var Ie=0;S<u&&fe<i;++Ie)w(ae[S],O[fe])<0?(M[Ie]=ae[S],g&&(D[Ie]=ie[S]),P[Ie]=se[S++]):(M[Ie]=O[fe],g&&(D[Ie]=f[fe]),P[Ie]=N[fe++]+(g?Q:u));for(;S<u;++S,++Ie)M[Ie]=ae[S],g&&(D[Ie]=ie[S]),P[Ie]=se[S];for(;fe<i;++fe,++Ie)M[Ie]=O[fe],g&&(D[Ie]=f[fe]),P[Ie]=N[fe]+(g?Q:u);ue.clear(),Z=te(M),de=Z[0],he=Z[1]}function Ze(e,r,n){fe.forEach((function(e){e(O,N,r,n,_)})),O=N=null,_=null}function Je(e){if(!le||M){if(g){for(var r=0,n=0;r<X.length;r++)e[X[r]]!==Se&&(X[n]=e[X[r]],n++);for(X.length=n,r=0,n=0;r<o;r++)e[r]!==Se&&(n!==r&&(K[n]=K[r]),n++);K=K.slice(0,n)}for(var t,a=M.length,u=0,s=0;u<a;++u)e[t=P[u]]!==Se&&(u!==s&&(M[s]=M[u]),P[s]=e[t],g&&(D[s]=D[u]),++s);for(M.length=s,g&&(D=D.slice(0,s));s<a;)P[s++]=0;ue.clear();var i=te(M);de=i[0],he=i[1]}else!function(e){var r,n,t,o=xe(le.matchIndices),a=0,u=0,s=o?new Uint32Array(o.length):null,i=le.selected?new Uint8Array(e.length):null;for(r=0;r<e.length;++r)e[r]!==Se&&++a;n=new Uint32Array(a<64?64:a),i&&(i=new Uint8Array(a));var l=ye();for(r=0,t=0;r<e.length;++r)e[r]!==Se&&(n[t]=l[r],i&&le.selected[r]&&(i[t]=1),++t);if(s){for(r=0;r<o.length;++r)(t=e[o[r]])!==Se&&(s[u++]=t);s=xe(s.slice(0,u))}le.codes=n,le.codesLength=a,le.codeCounts=we(n.subarray(0,a),le.codeToValue.length),le.matchIndices=s,le.selected=ke(i),de=0,he=0}(e)}function Ye(e,r,n){var t=e[0],o=e[1],a=oe,u=ze(),s=t===o?[]:[[t,o]];if(void 0===r&&(r=!1),void 0===n&&(n="bounds"),null===u)return G=null,oe=n,ae=null,er((function(e,r){return t<=r&&r<o}),r),de=t,he=o,Q;if(G=null,oe=n,ae=null,"in"===a)return De(u,s,r);var i,l,f=[],c=[],d=[],h=[];if(t<de)for(i=t,l=Math.min(de,o);i<l;++i)f.push(P[i]),d.push(i);else if(t>de)for(i=de,l=Math.min(t,he);i<l;++i)c.push(P[i]),h.push(i);if(o>he)for(i=Math.max(t,he),l=o;i<l;++i)f.push(P[i]),d.push(i);else if(o<he)for(i=Math.max(de,o),l=he;i<l;++i)c.push(P[i]),h.push(i);return de=t,he=o,qe(f,c,d,h,r)}function $e(e){if(se=null,ie=0,le&&!M){var r=Ae([e]);if(r)return Z=e,Oe(!0),te=i(I,e),G=null,ae=null,Be(r,"bounds");Me()}return Z=e,Oe(!0),te=i(I,e),Ye(_e(e)||[0,0],!1,"bounds")}function He(e){if(le&&!M&&Pe()){var r,n,t=le.codeToValue,o=[];for(r=1;r<t.length;++r)w(n=t[r],e[0])>=0&&w(n,e[1])<0&&o.push(r);return Z=e,Oe(!0),te=l(I,e),G=null,ae=null,oe="bounds",se=new Uint32Array(o),ie=t.length,Be(se,"bounds")}return le&&!M&&Me(),Z=e,Oe(!0),Ye((te=l(I,e))(M),!1,"bounds")}function Qe(){return se=null,ie=0,le&&!M?(Z=void 0,Oe(!1),te=f,G=null,ae=null,Ce(null)):(Z=void 0,Oe(!1),te=f,Ye((te=f)(M),!0,"all"))}function Xe(e){se=null,ie=0,le&&!M&&Me(),Z=e,Oe(!0),G=e,te=f,oe="function",ae=null,er(e,!1);var r=te(M);return de=r[0],he=r[1],Q}function er(r,n){var t,o,a,u=[],s=[],i=[],l=[],f=M.length;if(!g)for(t=0;t<f;++t)!(e[L][o=P[t]]&j)^!!(a=r(M[t],t))&&(a?u.push(o):s.push(o));if(g)for(t=0;t<f;++t)r(M[t],t)?(u.push(P[t]),i.push(t)):(s.push(P[t]),l.push(t));if(g){var c=[],d=[];for(t=0;t<u.length;t++)1===D[i[t]]&&(K[u[t]]++,D[i[t]]=0,1===K[u[t]]&&(e[L][u[t]]^=j,c.push(u[t])));for(t=0;t<s.length;t++)0===D[l[t]]&&(K[s[t]]--,D[l[t]]=1,0===K[s[t]]&&(e[L][s[t]]^=j,d.push(s[t])));if(u=c,s=d,n)for(t=0;t<X.length;t++)e[L][o=X[t]]&j&&(e[L][o]^=j,u.push(o));else for(t=0;t<X.length;t++)e[L][o=X[t]]&j||(e[L][o]^=j,s.push(o))}else{for(t=0;t<u.length;t++)e[L][u[t]]&j&&(e[L][u[t]]&=T);for(t=0;t<s.length;t++)e[L][s[t]]&j||(e[L][s[t]]|=j)}q(j,L,u,s)}function rr(r){arguments.length<1&&(r=c);var n=(r===c||r===d)&&Pe();n||Me();var t={top:ne,all:re,reduce:te,reduceCount:oe,reduceSum:ae,order:ue,orderNatural:se,size:ie,dispose:de,remove:de};ce.push(t);var u,i,l,f,y,b,x,I,F=8,R=Le(F),U=0,E=null,O=null,N=null,_=d,K=d,q=!0,D=V((function(){q=!0})),G=r===d;function Z(t,l,f,c,h){if(h&&le&&!M&&U>0){if(G)return void(q=!0);if(E){var p,m,v=!1;for(m=0;m<h.length;++m)if((p=h[m])>0&&void 0===E[p]){v=!0;break}if(!v){if(U>1)for(i=s.arrayLengthen(i,o),m=0;m<h.length;++m)i[f+m]=E[h[m]];return void(q=!0)}}}if(n&&le&&!M){var A,S,C,B=le.codeToValue,j=ye(),P=[],V=q?d:x;u=[],U=0;for(var z=1;z<B.length;++z)k(B[z])&&P.push(z);if(P.sort((function(e,r){return w(B[e],B[r])||e-r})),G)U=1,u=[{key:null,value:V()}],i=null,E=null;else if(P.length){for(;P.length>R;)R=Le(F<<=1);for(E=new Array(B.length),C=0;C<P.length;++C)S=P[C],u[C]={key:B[S],value:V()},E[S]=C;if(U=u.length,i=U>1?Ue(o,R):null)for(A=0;A<o;++A)i[A]=E[j[A]]}else U=0,u=[],i=null,E=null;q=!0;var D=a.indexOf(_);return U>1?(_=H,K=X):1===U?(_=Q,K=ee,i=null):(_=d,K=d,i=null),void(a[D]=_)}g&&(I=f,f=M.length-t.length,c=t.length);var Z,J,Y,re,ne,te,oe=u,ae=g?[]:Ue(U,R),ue=y,se=b,ie=x,fe=U,ce=0,de=0;for(q&&(ue=ie=d),q&&(se=ie=d),u=new Array(U),U=0,i=g?fe?i:[]:fe>1?s.arrayLengthen(i,o):Ue(o,R),fe&&(Y=(J=oe[0]).key);de<c&&!k(re=r(t[de]));)++de;for(;de<c;){for(J&&w(Y,re)<=0?(ne=J,te=Y,ae[ce]=U,(J=oe[++ce])&&(Y=J.key)):(ne={key:re,value:ie()},te=re),u[U]=ne;w(re,te)<=0;){if(Z=l[de]+(g?I:f),g?i[Z]?i[Z].push(U):i[Z]=[U]:i[Z]=U,"count"===N)q||(ne.value+=1,Ne()&&!e.zeroExcept(Z,L,T)&&(ne.value-=1));else if("metricSpec"===N)q||(ne.value=$(ne.value,O,Z,1),Ne()&&!e.zeroExcept(Z,L,T)&&(ne.value=$(ne.value,O,Z,-1)));else{var he=W(Z);ne.value=ue(ne.value,he,!0),Ne()&&!e.zeroExcept(Z,L,T)&&(ne.value=se(ne.value,he,!1))}if(++de>=c)break;re=r(t[de])}me()}for(;ce<fe;)u[ae[ce]=U]=oe[ce++],me();if(g)for(var pe=0;pe<o;pe++)i[pe]||(i[pe]=[]);if(U>ce)if(g)for(ce=0;ce<I;++ce)for(pe=0;pe<i[ce].length;pe++)i[ce][pe]=ae[i[ce][pe]];else for(ce=0;ce<f;++ce)i[ce]=ae[i[ce]];function me(){g?U++:++U===R&&(ae=s.arrayWiden(ae,F<<=1),i=s.arrayWiden(i,F),R=Le(F))}Z=a.indexOf(_),U>1||g?(_=H,K=X):(!U&&G&&(U=1,u=[{key:null,value:ie()}]),1===U?(_=Q,K=ee):(_=d,K=d),i=null),a[Z]=_}function J(e){if(E=null,U>1||g){var r,n,t,s=U,l=u,f=Ue(s,s);if(g){for(r=0,t=0;r<o;++r)if(e[r]!==Se){for(i[t]=i[r],n=0;n<i[t].length;n++)f[i[t][n]]=1;++t}i=i.slice(0,t)}else for(r=0,t=0;r<o;++r)e[r]!==Se&&(f[i[t]=i[r]]=1,++t);for(u=[],U=0,r=0;r<s;++r)f[r]&&(f[r]=U++,u.push(l[r]));if(U>1||g)if(g)for(r=0;r<t;++r)for(n=0;n<i[r].length;++n)i[r][n]=f[i[r][n]];else for(r=0;r<t;++r)i[r]=f[i[r]];else i=null;a[a.indexOf(_)]=U>1||g?(K=X,_=H):1===U?(K=ee,_=Q):K=_=d}else if(1===U){if(G)return;for(var c=0;c<o;++c)if(e[c]!==Se)return;u=[],U=0,a[a.indexOf(_)]=_=K=d}}function H(r,n,t,o,a){var s,l,f,c,d;if(!(r===j&&n===L||q))if(g){for(s=0,c=t.length;s<c;++s)if(e.zeroExcept(f=t[s],L,T))for(l=0;l<i[f].length;l++)d=u[i[f][l]],"count"===N?d.value+=1:d.value="metricSpec"===N?$(d.value,O,f,1):y(d.value,W(f),!1,l);for(s=0,c=o.length;s<c;++s)if(e.onlyExcept(f=o[s],L,T,n,r))for(l=0;l<i[f].length;l++)d=u[i[f][l]],"count"===N?d.value-=1:d.value="metricSpec"===N?$(d.value,O,f,-1):b(d.value,W(f),a,l)}else{for(s=0,c=t.length;s<c;++s)e.zeroExcept(f=t[s],L,T)&&(d=u[i[f]],"count"===N?d.value+=1:d.value="metricSpec"===N?$(d.value,O,f,1):y(d.value,W(f),!1));for(s=0,c=o.length;s<c;++s)e.onlyExcept(f=o[s],L,T,n,r)&&(d=u[i[f]],"count"===N?d.value-=1:d.value="metricSpec"===N?$(d.value,O,f,-1):b(d.value,W(f),a))}}function Q(r,n,t,o,a){if(!(r===j&&n===L||q)){var s,i,l,f=u[0];for(s=0,l=t.length;s<l;++s)e.zeroExcept(i=t[s],L,T)&&("count"===N?f.value+=1:f.value="metricSpec"===N?$(f.value,O,i,1):y(f.value,W(i),!1));for(s=0,l=o.length;s<l;++s)e.onlyExcept(i=o[s],L,T,n,r)&&("count"===N?f.value-=1:f.value="metricSpec"===N?$(f.value,O,i,-1):b(f.value,W(i),a))}}function X(){var r,n,t,a=Ne();for(r=0;r<U;++r)u[r].value=x();if(g){for(r=0;r<o;++r)for(n=0;n<i[r].length;n++)if(t=u[i[r][n]],"count"===N)t.value+=1;else if("metricSpec"===N)t.value=$(t.value,O,r,1);else{var s=W(r);t.value=y(t.value,s,!0,n)}if(!a)return;for(r=0;r<o;++r)if(!e.zeroExcept(r,L,T))for(n=0;n<i[r].length;n++)if(t=u[i[r][n]],"count"===N)t.value-=1;else if("metricSpec"===N)t.value=$(t.value,O,r,-1);else{var l=W(r);t.value=b(t.value,l,!1,n)}}else{for(r=0;r<o;++r)t=u[i[r]],"count"===N?t.value+=1:t.value="metricSpec"===N?$(t.value,O,r,1):y(t.value,W(r),!0);if(a)for(r=0;r<o;++r)e.zeroExcept(r,L,T)||(t=u[i[r]],"count"===N?t.value-=1:t.value="metricSpec"===N?$(t.value,O,r,-1):b(t.value,W(r),!1))}}function ee(){var r,n=Ne(),t=u[0];for(t.value=x(),r=0;r<o;++r)"count"===N?t.value+=1:t.value="metricSpec"===N?$(t.value,O,r,1):y(t.value,W(r),!0);if(n)for(r=0;r<o;++r)e.zeroExcept(r,L,T)||("count"===N?t.value-=1:t.value="metricSpec"===N?$(t.value,O,r,-1):b(t.value,W(r),!1))}function re(){return q&&(K(),q=!1),u}function ne(e){var r=l(re(),0,u.length,e);return f.sort(r,0,r.length)}function te(e,r,n){return y=e,b=r,x=n,O=Y(e,r,n),N=null,O&&(N="metricSpec"),q=!0,t}function oe(){return te(A,S,h),N="count",t}function ae(e){return te(C(e),B(e),h)}function ue(e){function r(r){return e(r.value)}return l=v.by(r),f=m.by(r),t}function se(){return ue(c)}function ie(){return U}function de(){var e=a.indexOf(_);return e>=0&&a.splice(e,1),(e=fe.indexOf(Z))>=0&&fe.splice(e,1),(e=p.indexOf(J))>=0&&p.splice(e,1),(e=ce.indexOf(t))>=0&&ce.splice(e,1),z(D),t}return a.push(_),fe.push(Z),p.push(J),Z(M,P,0,o),oe().orderNatural()}function nr(){ce.forEach((function(e){e.dispose()}));var r=u.indexOf(We);return r>=0&&u.splice(r,1),(r=u.indexOf(Ze))>=0&&u.splice(r,1),(r=p.indexOf(Je))>=0&&p.splice(r,1),e.masks[L]&=T,Qe()}return L=Ge.offset,j=Ge.one,T=~j,E=L<<7|Math.log(j)/Math.log(2),We(t,0,o),Ze(t,0,o),Q}function se(){var r,n,s,i,l={reduce:v,reduceCount:y,reduceSum:function(e){return v(C(e),B(e),h)},value:function(){d&&(function(){var t,a=_();for(r=i(),t=0;t<o;++t)if("count"===c)r+=1,a&&!e.zero(t)&&(r-=1);else if("metricSpec"===c)r=$(r,f,t,1),a&&!e.zero(t)&&(r=$(r,f,t,-1));else{var u=W(t);r=n(r,u,!0),a&&!e.zero(t)&&(r=s(r,u,!1))}}(),d=!1);return r},dispose:b,remove:b},f=null,c=null,d=!0,p=V((function(){d=!0}));function m(t,a){var u,i=_();if(!d)for(u=a;u<o;++u)if("count"===c)r+=1,i&&!e.zero(u)&&(r-=1);else if("metricSpec"===c)r=$(r,f,u,1),i&&!e.zero(u)&&(r=$(r,f,u,-1));else{var l=W(u);r=n(r,l,!0),i&&!e.zero(u)&&(r=s(r,l,!1))}}function g(t,o,a,u,i){var l,h,p;if(!d){for(l=0,p=a.length;l<p;++l)e.zero(h=a[l])&&("count"===c?r+=1:r="metricSpec"===c?$(r,f,h,1):n(r,W(h),i));for(l=0,p=u.length;l<p;++l)e.only(h=u[l],o,t)&&("count"===c?r-=1:r="metricSpec"===c?$(r,f,h,-1):s(r,W(h),i))}}function v(e,r,t){return n=e,s=r,i=t,f=Y(e,r,t),c=null,f&&(c="metricSpec"),d=!0,l}function y(){return v(A,S,h),c="count",l}function b(){var e=a.indexOf(g);return e>=0&&a.splice(e,1),(e=u.indexOf(m))>=0&&u.splice(e,1),z(p),l}return a.push(g),u.push(m),m(t,0),y()}function ie(){return o}function le(){return H(),t}function fe(r){var n=[],t=0,a=oe(r||[]);for(t=0;t<o;t++)e.zeroExceptMask(t,a)&&n.push(W(t));return n}function ce(r){var n=[],t=0,a=oe(r||[]);for(t=0;t<o;t++)e.zeroExceptMask(t,a)&&n.push(t);return n}function de(e,r){var n,t,o=r&&r.length?r.slice():null,a={},u=e?e.length:0;if(!o)return{columns:a,fields:[],length:u};for(n=0;n<o.length;++n)a[o[n]]=new Array(u);for(t=0;t<u;++t)for(n=0;n<o.length;++n){var s=o[n];a[s][t]=Z(e[t],s)}return{columns:a,fields:o,length:u}}function he(e){if("function"==typeof e)return y.push(e),function(){y.splice(y.indexOf(e),1)};console.warn("onChange callback parameter must be a function!")}function pe(e){for(var r=0;r<y.length;r++)y[r](e)}return e=new s.bitarray(0),arguments.length?ne(arguments[0]):n}function Ue(e,r){return(r<257?s.array8:r<65537?s.array16:s.array32)(e)}function Te(e){for(var r=Ue(e,e),n=-1;++n<e;)r[n]=n;return r}function Le(e){return 8===e?256:16===e?65536:4294967296}return je.version="3.0.2",je}));