@verdocs/web-sdk 5.0.18 → 5.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{Datastore-4448f6ef.js → Datastore-931fd77e.js} +7 -4
- package/dist/cjs/Datastore-931fd77e.js.map +1 -0
- package/dist/cjs/verdocs-build.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-checkbox_6.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-envelope-recipient-link_2.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-envelope-recipient-summary.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-field-attachment_13.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-field-payment.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-kba-dialog_2.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-menu-panel_2.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-preview_6.cjs.entry.js +18 -15
- package/dist/cjs/verdocs-preview_6.cjs.entry.js.map +1 -1
- package/dist/cjs/verdocs-sign.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-template-document-page_2.cjs.entry.js +1 -1
- package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.css +5 -10
- package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.js +16 -13
- package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.js.map +1 -1
- package/dist/components/{p-d9a2e920.js → p-1ab01232.js} +3 -3
- package/dist/components/{p-d9a2e920.js.map → p-1ab01232.js.map} +1 -1
- package/dist/components/{p-efa3b8ac.js → p-1ce18a42.js} +2 -2
- package/dist/components/{p-efa3b8ac.js.map → p-1ce18a42.js.map} +1 -1
- package/dist/components/{p-c662e5f4.js → p-1f0f5448.js} +2 -2
- package/dist/components/{p-c662e5f4.js.map → p-1f0f5448.js.map} +1 -1
- package/dist/components/{p-aa59fa42.js → p-28e3b2e3.js} +14 -14
- package/dist/components/{p-aa59fa42.js.map → p-28e3b2e3.js.map} +1 -1
- package/dist/components/{p-9bcf9620.js → p-2d8b46e5.js} +2 -2
- package/dist/components/{p-9bcf9620.js.map → p-2d8b46e5.js.map} +1 -1
- package/dist/components/{p-58d027d1.js → p-3828cb31.js} +7 -4
- package/dist/components/p-3828cb31.js.map +1 -0
- package/dist/components/{p-314d698d.js → p-53168eec.js} +2 -2
- package/dist/components/{p-314d698d.js.map → p-53168eec.js.map} +1 -1
- package/dist/components/{p-bcc8771f.js → p-681e7dd4.js} +3 -3
- package/dist/components/{p-bcc8771f.js.map → p-681e7dd4.js.map} +1 -1
- package/dist/components/{p-78043e4b.js → p-78de9e65.js} +20 -17
- package/dist/components/p-78de9e65.js.map +1 -0
- package/dist/components/{p-14c80ae8.js → p-91d65fde.js} +3 -3
- package/dist/components/{p-14c80ae8.js.map → p-91d65fde.js.map} +1 -1
- package/dist/components/{p-d8340641.js → p-a415ce22.js} +3 -3
- package/dist/components/{p-d8340641.js.map → p-a415ce22.js.map} +1 -1
- package/dist/components/{p-022b87d3.js → p-b8885b5c.js} +2 -2
- package/dist/components/{p-022b87d3.js.map → p-b8885b5c.js.map} +1 -1
- package/dist/components/{p-5182136e.js → p-c4c9feda.js} +3 -3
- package/dist/components/{p-5182136e.js.map → p-c4c9feda.js.map} +1 -1
- package/dist/components/{p-2ddf4d5b.js → p-e4799d51.js} +3 -3
- package/dist/components/{p-2ddf4d5b.js.map → p-e4799d51.js.map} +1 -1
- package/dist/components/{p-261521bc.js → p-e4a97ad5.js} +3 -3
- package/dist/components/{p-261521bc.js.map → p-e4a97ad5.js.map} +1 -1
- package/dist/components/{p-c9bed8f7.js → p-e9528d9f.js} +3 -3
- package/dist/components/{p-c9bed8f7.js.map → p-e9528d9f.js.map} +1 -1
- package/dist/components/{p-8a76ec8a.js → p-e95ded6b.js} +14 -14
- package/dist/components/{p-8a76ec8a.js.map → p-e95ded6b.js.map} +1 -1
- package/dist/components/{p-7cd6c0ce.js → p-eb12a71c.js} +2 -2
- package/dist/components/{p-7cd6c0ce.js.map → p-eb12a71c.js.map} +1 -1
- package/dist/components/{p-6c4fe42c.js → p-eb2ad8d0.js} +2 -2
- package/dist/components/{p-6c4fe42c.js.map → p-eb2ad8d0.js.map} +1 -1
- package/dist/components/{p-43fa069d.js → p-ecfc85ae.js} +3 -3
- package/dist/components/{p-43fa069d.js.map → p-ecfc85ae.js.map} +1 -1
- package/dist/components/{p-211fa3e2.js → p-f6156f7a.js} +3 -3
- package/dist/components/{p-211fa3e2.js.map → p-f6156f7a.js.map} +1 -1
- package/dist/components/{p-13260b9f.js → p-fcf13666.js} +13 -13
- package/dist/components/{p-13260b9f.js.map → p-fcf13666.js.map} +1 -1
- package/dist/components/verdocs-build.js +20 -20
- package/dist/components/verdocs-envelope-recipient-link.js +1 -1
- package/dist/components/verdocs-envelope-recipient-summary.js +1 -1
- package/dist/components/verdocs-envelope-sidebar.js +2 -2
- package/dist/components/verdocs-field-attachment.js +1 -1
- package/dist/components/verdocs-field-checkbox.js +1 -1
- package/dist/components/verdocs-field-date.js +1 -1
- package/dist/components/verdocs-field-dropdown.js +1 -1
- package/dist/components/verdocs-field-initial.js +1 -1
- package/dist/components/verdocs-field-payment.js +2 -2
- package/dist/components/verdocs-field-radio.js +1 -1
- package/dist/components/verdocs-field-signature.js +1 -1
- package/dist/components/verdocs-field-textarea.js +1 -1
- package/dist/components/verdocs-field-textbox.js +1 -1
- package/dist/components/verdocs-field-timestamp.js +1 -1
- package/dist/components/verdocs-preview.js +1 -1
- package/dist/components/verdocs-send.js +1 -1
- package/dist/components/verdocs-sign.js +2 -2
- package/dist/components/verdocs-template-attachments.js +1 -1
- package/dist/components/verdocs-template-build-tabs.js +1 -1
- package/dist/components/verdocs-template-document-page.js +1 -1
- package/dist/components/verdocs-template-field-properties.js +1 -1
- package/dist/components/verdocs-template-fields.js +1 -1
- package/dist/components/verdocs-template-role-properties.js +1 -1
- package/dist/components/verdocs-template-roles.js +1 -1
- package/dist/components/verdocs-view.js +1 -1
- package/dist/esm/{Datastore-b55570ff.js → Datastore-3f924d94.js} +7 -4
- package/dist/esm/Datastore-3f924d94.js.map +1 -0
- package/dist/esm/verdocs-build.entry.js +1 -1
- package/dist/esm/verdocs-checkbox_6.entry.js +1 -1
- package/dist/esm/verdocs-envelope-recipient-link_2.entry.js +1 -1
- package/dist/esm/verdocs-envelope-recipient-summary.entry.js +1 -1
- package/dist/esm/verdocs-envelope-sidebar.entry.js +1 -1
- package/dist/esm/verdocs-field-attachment_13.entry.js +1 -1
- package/dist/esm/verdocs-field-payment.entry.js +1 -1
- package/dist/esm/verdocs-kba-dialog_2.entry.js +1 -1
- package/dist/esm/verdocs-menu-panel_2.entry.js +1 -1
- package/dist/esm/verdocs-preview_6.entry.js +18 -15
- package/dist/esm/verdocs-preview_6.entry.js.map +1 -1
- package/dist/esm/verdocs-sign.entry.js +1 -1
- package/dist/esm/verdocs-template-document-page_2.entry.js +1 -1
- package/dist/esm-es5/{Datastore-b55570ff.js → Datastore-3f924d94.js} +2 -2
- package/dist/esm-es5/Datastore-3f924d94.js.map +1 -0
- package/dist/esm-es5/verdocs-build.entry.js +1 -1
- package/dist/esm-es5/verdocs-checkbox_6.entry.js +1 -1
- package/dist/esm-es5/verdocs-envelope-recipient-link_2.entry.js +1 -1
- package/dist/esm-es5/verdocs-envelope-recipient-summary.entry.js +1 -1
- package/dist/esm-es5/verdocs-envelope-sidebar.entry.js +1 -1
- package/dist/esm-es5/verdocs-field-attachment_13.entry.js +1 -1
- package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
- package/dist/esm-es5/verdocs-kba-dialog_2.entry.js +1 -1
- package/dist/esm-es5/verdocs-menu-panel_2.entry.js +1 -1
- package/dist/esm-es5/verdocs-preview_6.entry.js +2 -2
- package/dist/esm-es5/verdocs-preview_6.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-sign.entry.js +1 -1
- package/dist/esm-es5/verdocs-template-document-page_2.entry.js +1 -1
- package/dist/types/components/templates/verdocs-template-roles/verdocs-template-roles.d.ts +3 -0
- package/dist/verdocs-web-sdk/{p-19462841.system.entry.js → p-086ee7f1.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-fedcc413.entry.js → p-1902bf04.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-fda9c437.system.entry.js → p-208a8b41.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-00ed440b.system.entry.js → p-2175c81a.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-3cc50f0b.system.entry.js → p-26106576.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-eb3ceb39.system.entry.js → p-32cf09f0.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-9021fc7b.system.entry.js → p-34c2298e.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-d8d279a8.entry.js → p-3701b851.entry.js} +3 -3
- package/dist/verdocs-web-sdk/p-3701b851.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-58d027d1.js → p-3828cb31.js} +2 -2
- package/dist/verdocs-web-sdk/p-3828cb31.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-dced30fa.entry.js → p-471fd78e.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-99d5305a.system.entry.js → p-51c7f852.system.entry.js} +3 -3
- package/dist/verdocs-web-sdk/p-51c7f852.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-17f35bcb.entry.js → p-60da8e6b.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-35dcb386.system.js → p-65be7617.system.js} +2 -2
- package/dist/verdocs-web-sdk/p-65be7617.system.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-e3077c5e.system.entry.js → p-6b2fc4bd.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-37fa9d00.system.entry.js → p-7975ec40.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-27416916.entry.js → p-7ffebea3.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-bbf30adc.system.entry.js → p-90690dde.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-03399c69.entry.js → p-a4d94e2e.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-882aa754.entry.js → p-c59aa521.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-f2b16ddf.entry.js → p-cc230abf.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-c2bca18a.entry.js → p-d4aff253.entry.js} +2 -2
- package/dist/verdocs-web-sdk/p-db1faf41.entry.js +2 -0
- package/dist/verdocs-web-sdk/{p-d23b5949.entry.js.map → p-db1faf41.entry.js.map} +1 -1
- package/dist/verdocs-web-sdk/{p-ea078594.system.entry.js → p-dc5c275f.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/p-e2b70dfb.system.js +1 -1
- package/dist/verdocs-web-sdk/{p-88baf4d1.entry.js → p-e84cf41e.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-546daa8b.entry.js → p-f6ed768d.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-41f22b0a.system.entry.js → p-ff048639.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
- package/package.json +5 -5
- package/dist/cjs/Datastore-4448f6ef.js.map +0 -1
- package/dist/components/p-58d027d1.js.map +0 -1
- package/dist/components/p-78043e4b.js.map +0 -1
- package/dist/esm/Datastore-b55570ff.js.map +0 -1
- package/dist/esm-es5/Datastore-b55570ff.js.map +0 -1
- package/dist/verdocs-web-sdk/p-35dcb386.system.js.map +0 -1
- package/dist/verdocs-web-sdk/p-58d027d1.js.map +0 -1
- package/dist/verdocs-web-sdk/p-99d5305a.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-d23b5949.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-d8d279a8.entry.js.map +0 -1
- /package/dist/verdocs-web-sdk/{p-19462841.system.entry.js.map → p-086ee7f1.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-fedcc413.entry.js.map → p-1902bf04.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-fda9c437.system.entry.js.map → p-208a8b41.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-00ed440b.system.entry.js.map → p-2175c81a.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-3cc50f0b.system.entry.js.map → p-26106576.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-eb3ceb39.system.entry.js.map → p-32cf09f0.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-9021fc7b.system.entry.js.map → p-34c2298e.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-dced30fa.entry.js.map → p-471fd78e.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-17f35bcb.entry.js.map → p-60da8e6b.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-e3077c5e.system.entry.js.map → p-6b2fc4bd.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-37fa9d00.system.entry.js.map → p-7975ec40.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-27416916.entry.js.map → p-7ffebea3.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-bbf30adc.system.entry.js.map → p-90690dde.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-03399c69.entry.js.map → p-a4d94e2e.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-882aa754.entry.js.map → p-c59aa521.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-f2b16ddf.entry.js.map → p-cc230abf.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-c2bca18a.entry.js.map → p-d4aff253.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-ea078594.system.entry.js.map → p-dc5c275f.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-88baf4d1.entry.js.map → p-e84cf41e.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-546daa8b.entry.js.map → p-f6ed768d.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-41f22b0a.system.entry.js.map → p-ff048639.system.entry.js.map} +0 -0
@@ -1,2 +1,2 @@
|
|
1
|
-
import{getTemplate as t}from"@verdocs/js-sdk";const s=t=>typeof t;const n="";const o=s(n);const c=s(true);const e=s(0);const l=s(s);const r="type";const a="default";const i="Listener";const u="add";const f="Has";const d="Ids";const h="Table";const b=h+"s";const g=h+d;const T="Row";const _=T+"Count";const p=T+d;const v="Cell";const S=v+d;const w="Value";const m=w+"s";const C=w+d;const V=t=>n+t;const I=isFinite;const y=(t,s)=>t instanceof s;const R=t=>t==void 0;const J=(t,s,n)=>R(t)?n?.():s(t);const L=t=>t==o||t==c;const E=t=>s(t)==l;const O=t=>Array.isArray(t);const j=(t,s,n)=>t.slice(s,n);const N=t=>t.length;const F=(t,s)=>t.test(s);const M=(t,s)=>t.includes(s);const $=(t,s)=>t.every(s);const x=(t,s)=>N(t)===N(s)&&$(t,((t,n)=>s[n]===t));const A=(t,s)=>t.sort(s);const D=(t,s)=>t.forEach(s);const P=(t,s)=>t.map(s);const k=(t,s,n)=>t.reduce(s,n);const z=(t,...s)=>t.push(...s);const H=t=>t.shift();const W=Object;const q=t=>W.getPrototypeOf(t);const B=W.entries;const G=W.isFrozen;const K=t=>!R(t)&&J(q(t),(t=>t==W.prototype||R(q(t))),(()=>true));const Q=W.keys;const U=W.freeze;const X=(t,s)=>s in t;const Y=(t,s)=>{delete t[s];return t};const Z=(t,s)=>P(B(t),(([t,n])=>s(n,t)));const tt=t=>N(Q(t));const st=t=>K(t)&&tt(t)==0;const nt=(t,s,n,o=0)=>{if(R(t)||!K(t)||!o&&st(t)||G(t)){n?.();return false}Z(t,((n,o)=>{if(!s(n,o)){Y(t,o)}}));return o?true:!st(t)};const ot=t=>s=>k(ut(s),((s,n)=>s+t(n)),0);const ct=t=>t?.size??0;const et=ot(ct);const lt=ot(et);const rt=ot(lt);const at=(t,s)=>t?.has(s)??false;const it=t=>R(t)||ct(t)==0;const ut=t=>[...t?.values()??[]];const ft=t=>t.clear();const dt=(t,s)=>t?.forEach(s);const ht=(t,s)=>t?.delete(s);const bt=t=>new Map(t);const gt=t=>[...t?.keys()??[]];const Tt=(t,s)=>t?.get(s);const _t=(t,s)=>dt(t,((t,n)=>s(n,t)));const pt=(t,s)=>P([...t?.entries()??[]],(([t,n])=>s(n,t)));const vt=(t,s,n)=>R(n)?(ht(t,s),t):t?.set(s,n);const St=(t,s,n,o)=>{if(!at(t,s)){vt(t,s,n())}else{o?.(Tt(t,s))}return Tt(t,s)};const wt=(t,s,n,o=vt)=>{Z(s,((s,o)=>n(t,o,s)));_t(t,(n=>X(s,n)?0:o(t,n)));return t};const mt=(t,s,n,o)=>{const c={};dt(t,((t,e)=>{if(!n?.(t,e)){const n=s?s(t,e):t;if(!o?.(n)){c[e]=n}}}));return c};const Ct=(t,s,n)=>mt(t,(t=>mt(t,s,n)),it,st);const Vt=(t,s,n)=>mt(t,(t=>Ct(t,s,n)),it,st);const It=(t,s)=>{const n=bt();dt(t,((t,o)=>n.set(o,s?.(t)??t)));return n};const yt=t=>It(t,It);const Rt=t=>It(t,yt);const Jt=(t,s,n,o,c=0)=>J((n?St:Tt)(t,s[c],c>N(s)-2?n:bt),(e=>{if(c>N(s)-2){if(o?.(e)){vt(t,s[c])}return e}const l=Jt(e,s,n,o,c+1);if(it(e)){vt(t,s[c])}return l}));const Lt=t=>{const n=s(t);return L(n)||n==e&&I(t)?n:void 0};const Et=(t,s,n,o,c)=>R(c)?t.delCell(s,n,o,true):t.setCell(s,n,o,c);const Ot=(t,s,n)=>R(n)?t.delValue(s):t.setValue(s,n);const jt=t=>new Set(O(t)||R(t)?t:[t]);const Nt=(t,s)=>t?.add(s);const Ft=/^\d+$/;const Mt=()=>{const t=[];let s=0;return[o=>(o?H(t):null)??n+s++,s=>{if(F(Ft,s)&&N(t)<1e3){z(t,s)}}]};const $t=(t,s=[n])=>{const o=[];const c=(t,n)=>n==N(s)?z(o,t):s[n]===null?dt(t,(t=>c(t,n+1))):D([s[n],null],(s=>c(Tt(t,s),n+1)));c(t,0);return o};const xt=t=>{let s;const[o,c]=Mt();const e=bt();const l=(c,l,r,a=[],i=(()=>[]))=>{s??=t();const u=o(1);vt(e,u,[c,l,r,a,i]);Nt(Jt(l,r??[n],jt),u);return u};const r=(t,n,...o)=>D($t(t,n),(t=>dt(t,(t=>Tt(e,t)[0](s,...n??[],...o)))));const a=t=>J(Tt(e,t),(([,s,o])=>{Jt(s,o??[n],void 0,(s=>{ht(s,t);return it(s)?1:0}));vt(e,t);c(t);return o}));const i=t=>J(Tt(e,t),(([t,,n=[],o,c])=>{const e=(...l)=>{const r=N(l);if(r==N(n)){t(s,...l,...c(l))}else if(R(n[r])){D(o[r]?.(...l)??[],(t=>e(...l,t)))}else{e(...l,n[r])}};e()}));return[l,r,a,i]};const At=(t,s)=>(t??0)<(s??0)?-1:1;const Dt=t=>[t,t];const Pt=(t,s=et)=>s(t[0])+s(t[1]);const kt=()=>[bt(),bt()];const zt=t=>[...t];const Ht=([t,s])=>t===s;const Wt=JSON.stringify;const qt=JSON.parse;const Bt=t=>Wt(t,((t,s)=>y(s,Map)?W.fromEntries([...s]):s));const Gt=(t,s,n)=>vt(t,s,Tt(t,s)==-n?void 0:n);const Kt=()=>{let t;let s;let n=false;let o=false;let c=0;let l=[];const d=bt();const I=bt();const y=bt();const N=bt();const F=bt();const $=bt();const k=bt();const H=bt();const W=bt();const q=bt();const B=bt();const G=bt();const K=bt();const Q=bt();const tt=jt();const ot=bt();const ut=bt();const Jt=bt();const Ft=bt();const $t=kt();const Wt=kt();const Qt=kt();const Ut=kt();const Xt=kt();const Yt=kt();const Zt=kt();const ts=kt();const ss=kt();const ns=kt();const os=kt();const cs=kt();const es=kt();const ls=kt();const rs=kt();const as=kt();const is=kt();const us=kt();const fs=kt();const ds=kt();const hs=kt();const bs=kt();const gs=bt();const Ts=kt();const[_s,ps,vs,Ss]=xt((()=>jo));const ws=t=>nt(t,(t=>nt(t,Cs)));const ms=t=>nt(t,Cs);const Cs=t=>{if(!nt(t,((t,s)=>M([r,a],s)))){return false}const s=t[r];if(!L(s)&&s!=e){return false}if(Lt(t[a])!=s){Y(t,a)}return true};const Vs=O;const Is=t=>nt(t,ys,on);const ys=(s,n)=>(!t||at(B,n)||on(n))&&nt(s,((t,s)=>Rs(n,s,t)),(()=>on(n)));const Rs=(t,s,n,o)=>nt(o?n:Os(n,t,s),((o,c)=>J(Js(t,s,c,o),(t=>{n[c]=t;return true}),(()=>false))),(()=>on(t,s)));const Js=(s,n,o,c)=>t?J(Tt(Tt(B,s),o),(t=>Lt(c)!=t[r]?on(s,n,o,c,t[a]):c),(()=>on(s,n,o,c))):R(Lt(c))?on(s,n,o,c):c;const Ls=(t,s)=>nt(s?t:js(t),((s,n)=>J(Es(n,s),(s=>{t[n]=s;return true}),(()=>false))),(()=>cn()));const Es=(t,n)=>s?J(Tt(K,t),(s=>Lt(n)!=s[r]?cn(t,n,s[a]):n),(()=>cn(t,n))):R(Lt(n))?cn(t,n):n;const Os=(t,s,n)=>{J(Tt(G,s),(([o,c])=>{dt(o,((s,n)=>{if(!X(t,n)){t[n]=s}}));dt(c,(o=>{if(!X(t,o)){on(s,n,o)}}))}));return t};const js=t=>{if(s){dt(Q,((s,n)=>{if(!X(t,n)){t[n]=s}}));dt(tt,(s=>{if(!X(t,s)){cn(s)}}))}return t};const Ns=t=>wt(B,t,((t,s,n)=>{const o=bt();const c=jt();wt(St(B,s,bt),n,((t,s,n)=>{vt(t,s,n);J(n[a],(t=>vt(o,s,t)),(()=>Nt(c,s)))}));vt(G,s,[o,c])}),((t,s)=>{vt(B,s);vt(G,s)}));const Fs=t=>wt(K,t,((t,s,n)=>{vt(K,s,n);J(n[a],(t=>vt(Q,s,t)),(()=>Nt(tt,s)))}),((t,s)=>{vt(K,s);vt(Q,s);ht(tt,s)}));const Ms=t=>st(t)?co():zn(t);const $s=([t,s])=>{(st(t)?co:zn)(t);(st(s)?ao:Kn)(s)};const xs=t=>wt(Jt,t,((t,s,n)=>As(s,n)),((t,s)=>Gs(s)));const As=(t,s)=>wt(St(Jt,t,(()=>{Xs(t,1);vt(ot,t,Mt());vt(ut,t,bt());return bt()})),s,((s,n,o)=>Ds(t,s,n,o)),((s,n)=>Ks(t,s,n)));const Ds=(t,s,n,o,c)=>wt(St(s,n,(()=>{Ys(t,n,1);return bt()})),o,((s,o,c)=>Ps(t,n,s,o,c)),((o,e)=>Qs(t,s,n,o,e,c)));const Ps=(t,s,n,o,c)=>{if(!at(n,o)){Zs(t,s,o,1)}const e=Tt(n,o);if(c!==e){tn(t,s,o,e,c);vt(n,o,c)}};const ks=(t,s,n,o,c)=>J(Tt(s,n),(s=>Ps(t,n,s,o,c)),(()=>Ds(t,s,n,Os({[o]:c},t,n))));const zs=t=>st(t)?ao():Kn(t);const Hs=t=>wt(Ft,t,((t,s,n)=>Ws(s,n)),((t,s)=>Us(s)));const Ws=(t,s)=>{if(!at(Ft,t)){sn(t,1)}const n=Tt(Ft,t);if(s!==n){nn(t,n,s);vt(Ft,t,s)}};const qs=(t,s)=>{const[n]=Tt(ot,t);let o;do{o=n(s)}while(at(Tt(Jt,t),o));return o};const Bs=t=>Tt(Jt,t)??As(t,{});const Gs=t=>As(t,{});const Ks=(t,s,n)=>{const[,o]=Tt(ot,t);o(n);Ds(t,s,n,{},true)};const Qs=(t,s,n,o,c,e)=>{const l=Tt(Tt(G,t)?.[0],c);if(!R(l)&&!e){return Ps(t,n,o,c,l)}const r=s=>{tn(t,n,s,Tt(o,s));Zs(t,n,s,-1);vt(o,s)};if(R(l)){r(c)}else{_t(o,r)}if(it(o)){Ys(t,n,-1);if(it(vt(s,n))){Xs(t,-1);vt(Jt,t);vt(ot,t);vt(ut,t)}}};const Us=t=>{const s=Tt(Q,t);if(!R(s)){return Ws(t,s)}nn(t,Tt(Ft,t));sn(t,-1);vt(Ft,t)};const Xs=(t,s)=>Gt(d,t,s);const Ys=(t,s,n)=>Gt(St(N,t,bt),s,n)&&vt(y,t,St(y,t,(()=>0))+n);const Zs=(t,s,n,o)=>{const c=Tt(ut,t);const e=Tt(c,n)??0;if(e==0&&o==1||e==1&&o==-1){Gt(St(I,t,bt),n,o)}vt(c,n,e!=-o?e+o:null);Gt(St(St(F,t,bt),s,bt),n,o)};const tn=(t,s,n,o,c)=>{St(St(St($,t,bt),s,bt),n,(()=>[o,0]))[1]=c;l[3]?.(t,s,n,c)};const sn=(t,s)=>Gt(k,t,s);const nn=(t,s,n)=>{St(H,t,(()=>[s,0]))[1]=n;l[4]?.(t,n)};const on=(t,s,n,o,c)=>{z(St(St(St(W,t,bt),s,bt),n,(()=>[])),o);return c};const cn=(t,s,n)=>{z(St(q,t,(()=>[])),s);return n};const en=(t,s,n)=>J(Tt(Tt(Tt($,t),s),n),(([t,s])=>[true,t,s]),(()=>[false,...Dt(Vn(t,s,n))]));const ln=t=>J(Tt(H,t),(([t,s])=>[true,t,s]),(()=>[false,...Dt(Rn(t))]));const rn=t=>!it(W)&&!it(as[t])?dt(t?Rt(W):W,((s,n)=>dt(s,((s,o)=>dt(s,((s,c)=>ps(as[t],[n,o,c],s))))))):0;const an=t=>!it(q)&&!it(is[t])?dt(t?It(q):q,((s,n)=>ps(is[t],[n],s))):0;const un=(t,s,n,o)=>{if(!it(t)){ps(s,o,(()=>mt(t)));_t(t,((t,s)=>ps(n,[...o??[],t],s==1)));return 1}};const fn=t=>{const s=Jn();if(s!=n){ps($t[t],void 0,s)}const o=it(ns[t]);const c=it(es[t])&&it(ls[t])&&it(ss[t])&&it(os[t])&&it(Yt[t])&&it(Zt[t])&&it(ts[t])&&o&&it(Qt[t])&&it(Ut[t]);const e=it(rs[t])&&it(cs[t])&&it(Xt[t])&&it(Wt[t]);if(!c||!e){const s=t?[It(d),yt(I),It(y),yt(N),Rt(F),Rt($)]:[d,I,y,N,F,$];if(!c){un(s[0],Qt[t],Ut[t]);dt(s[1],((s,n)=>un(s,Yt[t],Zt[t],[n])));dt(s[2],((s,n)=>{if(s!=0){ps(ts[t],[n],vn(n))}}));const n=jt();dt(s[3],((s,c)=>{if(un(s,ss[t],os[t],[c])&&!o){ps(ns[t],[c,null]);Nt(n,c)}}));if(!o){dt(s[5],((s,o)=>{if(!at(n,o)){const n=jt();dt(s,(t=>dt(t,(([s,o],c)=>o!==s?Nt(n,c):ht(t,c)))));dt(n,(s=>ps(ns[t],[o,s])))}}))}dt(s[4],((s,n)=>dt(s,((s,o)=>un(s,es[t],ls[t],[n,o])))))}if(!e){let n;dt(s[5],((s,o)=>{let c;dt(s,((s,e)=>{let l;dt(s,(([s,r],a)=>{if(r!==s){ps(rs[t],[o,e,a],r,s,en);n=c=l=1}}));if(l){ps(cs[t],[o,e],en)}}));if(c){ps(Xt[t],[o],en)}}));if(n){ps(Wt[t],void 0,en)}}}};const dn=t=>{const s=Nn();if(s!=o){ps(us[t],void 0,s)}const n=it(ds[t])&&it(hs[t]);const c=it(bs[t])&&it(fs[t]);if(!n||!c){const s=t?[It(k),It(H)]:[k,H];if(!n){un(s[0],ds[t],hs[t])}if(!c){let n;dt(s[1],(([s,o],c)=>{if(o!==s){ps(bs[t],[c],o,s,ln);n=1}}));if(n){ps(fs[t],void 0,ln)}}}};const hn=(t,...s)=>{bo((()=>t(...P(s,V))));return jo};const bn=()=>[gn(),In()];const gn=()=>Vt(Jt);const Tn=()=>gt(Jt);const _n=t=>Ct(Tt(Jt,V(t)));const pn=t=>gt(Tt(ut,V(t)));const vn=t=>ct(Tt(Jt,V(t)));const Sn=t=>gt(Tt(Jt,V(t)));const wn=(t,s,n,o=0,c)=>P(j(A(pt(Tt(Jt,V(t)),((t,n)=>[R(s)?n:Tt(t,V(s)),n])),(([t],[s])=>At(t,s)*(n?-1:1))),o,R(c)?c:o+c),(([,t])=>t));const mn=(t,s)=>mt(Tt(Tt(Jt,V(t)),V(s)));const Cn=(t,s)=>gt(Tt(Tt(Jt,V(t)),V(s)));const Vn=(t,s,n)=>Tt(Tt(Tt(Jt,V(t)),V(s)),V(n));const In=()=>mt(Ft);const yn=()=>gt(Ft);const Rn=t=>Tt(Ft,V(t));const Jn=()=>!it(Jt);const Ln=t=>at(Jt,V(t));const En=(t,s)=>at(Tt(ut,V(t)),V(s));const On=(t,s)=>at(Tt(Jt,V(t)),V(s));const jn=(t,s,n)=>at(Tt(Tt(Jt,V(t)),V(s)),V(n));const Nn=()=>!it(Ft);const Fn=t=>at(Ft,V(t));const Mn=()=>Bt(Jt);const $n=()=>Bt(Ft);const xn=()=>Bt([Jt,Ft]);const An=()=>Bt(B);const Dn=()=>Bt(K);const Pn=()=>Bt([B,K]);const kn=t=>hn((()=>Vs(t)?$s(t):0));const zn=t=>hn((()=>Is(t)?xs(t):0));const Hn=(t,s)=>hn((t=>ys(s,t)?As(t,s):0),t);const Wn=(t,s,n)=>hn(((t,s)=>Rs(t,s,n)?Ds(t,Bs(t),s,n):0),t,s);const qn=(t,s,n=true)=>bo((()=>{let o=void 0;if(Rs(t,o,s)){t=V(t);Ds(t,Bs(t),o=qs(t,n?1:0),s)}return o}));const Bn=(t,s,n)=>hn(((t,s)=>{if(Rs(t,s,n,1)){const o=Bs(t);Z(n,((n,c)=>ks(t,o,s,c,n)))}}),t,s);const Gn=(t,s,n,o)=>hn(((t,s,n)=>J(Js(t,s,n,E(o)?o(Vn(t,s,n)):o),(o=>ks(t,Bs(t),s,n,o)))),t,s,n);const Kn=t=>hn((()=>Ls(t)?Hs(t):0));const Qn=t=>hn((()=>Ls(t,1)?Z(t,((t,s)=>Ws(s,t))):0));const Un=(t,s)=>hn((t=>J(Es(t,E(s)?s(Rn(t)):s),(s=>Ws(t,s)))),t);const Xn=t=>hn((()=>{Z(t[0],((t,s)=>R(t)?eo(s):Z(t,((t,n)=>R(t)?lo(s,n):Z(t,((t,o)=>Et(jo,s,n,o,t)))))));Z(t[1],((t,s)=>Ot(jo,s,t)))}));const Yn=t=>{try{Ms(qt(t))}catch{}return jo};const Zn=t=>{try{zs(qt(t))}catch{}return jo};const to=t=>hn((()=>{try{const[s,n]=qt(t);Ms(s);zs(n)}catch{Yn(t)}}));const so=s=>hn((()=>{if(t=ws(s)){Ns(s);if(!it(Jt)){const t=gn();co();zn(t)}}}));const no=t=>hn((()=>{if(s=ms(t)){const n=In();fo();ao();s=true;Fs(t);Kn(n)}}));const oo=(t,s)=>hn((()=>{so(t);no(s)}));const co=()=>hn((()=>xs({})));const eo=t=>hn((t=>at(Jt,t)?Gs(t):0),t);const lo=(t,s)=>hn(((t,s)=>J(Tt(Jt,t),(n=>at(n,s)?Ks(t,n,s):0))),t,s);const ro=(t,s,n,o)=>hn(((t,s,n)=>J(Tt(Jt,t),(c=>J(Tt(c,s),(e=>at(e,n)?Qs(t,c,s,e,n,o):0))))),t,s,n);const ao=()=>hn((()=>Hs({})));const io=t=>hn((t=>at(Ft,t)?Us(t):0),t);const uo=()=>hn((()=>{Ns({});t=false}));const fo=()=>hn((()=>{Fs({});s=false}));const ho=()=>hn((()=>{uo();fo()}));const bo=(t,s)=>{if(c!=-1){go();const n=t();po(s);return n}};const go=()=>{if(c!=-1){c++}if(c==1){l[0]?.();ps(gs)}return jo};const To=()=>[mt($,((t,s)=>Tt(d,s)===-1?void 0:mt(t,((t,n)=>Tt(Tt(N,s),n)===-1?void 0:mt(t,(([,t])=>t),(t=>Ht(t)))),it,st)),it,st),mt(H,(([,t])=>t),(t=>Ht(t))),1];const _o=()=>[!it($),!it(H),Vt($,zt,Ht),Vt(W),mt(H,zt,Ht),mt(q),mt(d),Ct(N),Vt(F),mt(k)];const po=t=>{if(c>0){c--;if(c==0){c=1;rn(1);if(!it($)){fn(1)}an(1);if(!it(H)){dn(1)}if(t?.(jo)){dt($,((t,s)=>dt(t,((t,n)=>dt(t,(([t],o)=>Et(jo,s,n,o,t)))))));ft($);dt(H,(([t],s)=>Ot(jo,s,t)));ft(H)}ps(Ts[0],void 0);c=-1;rn(0);if(!it($)){fn(0)}an(0);if(!it(H)){dn(0)}l[1]?.();ps(Ts[1],void 0);l[2]?.();c=0;n=Jn();o=Nn();D([d,I,y,N,F,$,W,k,H,q],ft)}}return jo};const vo=t=>dt(Jt,((s,n)=>t(n,(t=>dt(s,((s,n)=>t(n,(t=>_t(s,t)))))))));const So=(t,s)=>_t(Tt(ut,V(t)),s);const wo=(t,s)=>dt(Tt(Jt,V(t)),((t,n)=>s(n,(s=>_t(t,s)))));const mo=(t,s,n)=>_t(Tt(Tt(Jt,V(t)),V(s)),n);const Co=t=>_t(Ft,t);const Vo=(t,s,n,o,c,e,l)=>{let r=wn(t,s,n,o,c);return _s((()=>{const l=wn(t,s,n,o,c);if(!x(l,r)){r=l;e(jo,t,s,n,o,c,r)}}),ns[l?1:0],[t,s],[Tn])};const Io=t=>_s(t,gs);const yo=t=>_s(t,Ts[0]);const Ro=t=>_s(t,Ts[1]);const Jo=t=>{Ss(t);return jo};const Lo=t=>{vs(t);return jo};const Eo=()=>({hasTables:Pt($t),tables:Pt(Wt),tableIds:Pt(Qt),hasTable:Pt(Ut),table:Pt(Xt),tableCellIds:Pt(Yt),hasTableCell:Pt(Zt,lt),rowCount:Pt(ts),rowIds:Pt(ss),sortedRowIds:Pt(ns),hasRow:Pt(os,lt),row:Pt(cs,lt),cellIds:Pt(es,lt),hasCell:Pt(ls,rt),cell:Pt(rs,rt),invalidCell:Pt(as,rt),hasValues:Pt(us),values:Pt(fs),valueIds:Pt(ds),hasValue:Pt(hs),value:Pt(bs),invalidValue:Pt(is),transaction:et(gs)+Pt(Ts)});const Oo=(t,s,n,o,c)=>l=[t,s,n,o,c];const jo={getContent:bn,getTables:gn,getTableIds:Tn,getTable:_n,getTableCellIds:pn,getRowCount:vn,getRowIds:Sn,getSortedRowIds:wn,getRow:mn,getCellIds:Cn,getCell:Vn,getValues:In,getValueIds:yn,getValue:Rn,hasTables:Jn,hasTable:Ln,hasTableCell:En,hasRow:On,hasCell:jn,hasValues:Nn,hasValue:Fn,getTablesJson:Mn,getValuesJson:$n,getJson:xn,getTablesSchemaJson:An,getValuesSchemaJson:Dn,getSchemaJson:Pn,hasTablesSchema:()=>t,hasValuesSchema:()=>s,setContent:kn,setTables:zn,setTable:Hn,setRow:Wn,addRow:qn,setPartialRow:Bn,setCell:Gn,setValues:Kn,setPartialValues:Qn,setValue:Un,applyChanges:Xn,setTablesJson:Yn,setValuesJson:Zn,setJson:to,setTablesSchema:so,setValuesSchema:no,setSchema:oo,delTables:co,delTable:eo,delRow:lo,delCell:ro,delValues:ao,delValue:io,delTablesSchema:uo,delValuesSchema:fo,delSchema:ho,transaction:bo,startTransaction:go,getTransactionChanges:To,getTransactionLog:_o,finishTransaction:po,forEachTable:vo,forEachTableCell:So,forEachRow:wo,forEachCell:mo,forEachValue:Co,addSortedRowIdsListener:Vo,addStartTransactionListener:Io,addWillFinishTransactionListener:yo,addDidFinishTransactionListener:Ro,callListener:Jo,delListener:Lo,getListenerStats:Eo,isMergeable:()=>false,createStore:Kt,addListener:_s,callListeners:ps,setInternalListeners:Oo};Z({[f+b]:[0,$t,[],()=>[Jn()]],[b]:[0,Wt],[g]:[0,Qt],[f+h]:[1,Ut,[Tn],t=>[Ln(...t)]],[h]:[1,Xt,[Tn]],[h+S]:[1,Yt,[Tn]],[f+h+v]:[2,Zt,[Tn,pn],t=>[En(...t)]],[_]:[1,ts,[Tn]],[p]:[1,ss,[Tn]],[f+T]:[2,os,[Tn,Sn],t=>[On(...t)]],[T]:[2,cs,[Tn,Sn]],[S]:[2,es,[Tn,Sn]],[f+v]:[3,ls,[Tn,Sn,Cn],t=>[jn(...t)]],[v]:[3,rs,[Tn,Sn,Cn],t=>Dt(Vn(...t))],InvalidCell:[3,as],[f+m]:[0,us,[],()=>[Nn()]],[m]:[0,fs],[C]:[0,ds],[f+w]:[1,hs,[yn],t=>[Fn(...t)]],[w]:[1,bs,[yn],t=>Dt(Rn(t[0]))],InvalidValue:[1,is]},(([t,s,n,o],c)=>{jo[u+c+i]=(...c)=>_s(c[t],s[c[t+1]?1:0],t>0?j(c,0,t):void 0,n,o)}));return U(jo)};const Qt=Kt();Qt.delTables();Qt.delValues();console.log("[STORE] Data store initialized.");const Ut=(t,s)=>{try{return JSON.parse(t)}catch(t){return s||null}};const Xt=t=>{const s={};for(let n in t){if(typeof t[n]==="string"||typeof t[n]==="number"||typeof t[n]==="boolean"){s[n]=t[n]}else if(t[n]===null){s[`__null__${n}`]=""}else if(Array.isArray(t[n])){s[`__array__${n}`]=JSON.stringify(t[n])}else if(typeof t[n]==="object"){s[`__object__${n}`]=JSON.stringify(t[n])}}return s};const Yt=t=>{const s={};for(let n in t){if(n.startsWith("__null__")){s[n.replace("__null__","")]=null}else if(typeof t[n]==="string"&&n.startsWith("__array__")){s[n.replace("__array__","")]=Ut(t[n])}else if(typeof t[n]==="string"&&n.startsWith("__object__")){s[n.replace("__object__","")]=Ut(t[n])}else{s[n]=t[n]}}return s};const Zt={store:Qt,subscribe(t,s,n,o,c){if(Qt.hasRow(t,s)){c(Yt(Qt.getRow(t,s)))}const e=Qt.addRowListener(t,s,(()=>{const n=Qt.getRow(t,s);c(Yt(n))}));if(!Qt.hasRow(t,s)||o){console.log("[STORE] Loading/reloading",{tableId:t,rowId:s});n().then((n=>{Qt.setRow(t,s,Xt(n))})).catch((n=>{console.error("[STORE] Error getting row",{tableId:t,rowId:s,forceReload:o},n)}))}return e},unsubscribe(t){Qt.delListener(t)},async getTemplate(s,n,o=false){if(!o){if(!Qt.hasRow("templates",n)){return null}const t=Qt.getRow("templates",n);return Yt(t)}const c=await t(s,n);console.log("[STORE] Reloading template",c);Qt.setRow("templates",n,Xt(c));return c},updateTemplate(t,s){Qt.setRow("templates",t,Xt(s));return s},async getEnvelope(s,n,o=false){if(!o){if(!Qt.hasRow("envelopes",n)){return null}const t=Qt.getRow("envelopes",n);return Yt(t)}const c=await t(s,n);Qt.setRow("envelopes",n,Xt(c));return c},updateEnvelope(t,s){Qt.setRow("envelopes",t,Xt(s));return s},getField(t,s,n,o){if(t==="template"){const t=Qt.getRow("templates",s);const c=Yt(t);const e=(c.fields||[]).find((t=>t.name===n));const l=(c.roles||[]).map((t=>t.name));const r=l.findIndex((t=>t===e.role_name));return{index:Math.max(r,0),field:o||e}}else{const t=Qt.getRow("envelopes",s);const c=Yt(t);const e=(c.fields||[]).find((t=>t.name===n));const l=(c.recipients||[]).map((t=>t.role_name));const r=l.findIndex((t=>t===e.role_name));return{index:r,field:o||e}}}};export{Zt as S};
|
2
|
-
//# sourceMappingURL=p-
|
1
|
+
import{getTemplate as t}from"@verdocs/js-sdk";const s=t=>typeof t;const n="";const o=s(n);const c=s(true);const e=s(0);const l=s(s);const r="type";const a="default";const i="Listener";const u="add";const f="Has";const d="Ids";const h="Table";const b=h+"s";const g=h+d;const T="Row";const _=T+"Count";const p=T+d;const v="Cell";const S=v+d;const w="Value";const m=w+"s";const C=w+d;const V=t=>n+t;const I=isFinite;const y=(t,s)=>t instanceof s;const R=t=>t==void 0;const J=(t,s,n)=>R(t)?n?.():s(t);const L=t=>t==o||t==c;const E=t=>s(t)==l;const O=t=>Array.isArray(t);const j=(t,s,n)=>t.slice(s,n);const N=t=>t.length;const F=(t,s)=>t.test(s);const M=(t,s)=>t.includes(s);const $=(t,s)=>t.every(s);const x=(t,s)=>N(t)===N(s)&&$(t,((t,n)=>s[n]===t));const A=(t,s)=>t.sort(s);const D=(t,s)=>t.forEach(s);const P=(t,s)=>t.map(s);const k=(t,s,n)=>t.reduce(s,n);const z=(t,...s)=>t.push(...s);const H=t=>t.shift();const W=Object;const q=t=>W.getPrototypeOf(t);const B=W.entries;const G=W.isFrozen;const K=t=>!R(t)&&J(q(t),(t=>t==W.prototype||R(q(t))),(()=>true));const Q=W.keys;const U=W.freeze;const X=(t,s)=>s in t;const Y=(t,s)=>{delete t[s];return t};const Z=(t,s)=>P(B(t),(([t,n])=>s(n,t)));const tt=t=>N(Q(t));const st=t=>K(t)&&tt(t)==0;const nt=(t,s,n,o=0)=>{if(R(t)||!K(t)||!o&&st(t)||G(t)){n?.();return false}Z(t,((n,o)=>{if(!s(n,o)){Y(t,o)}}));return o?true:!st(t)};const ot=t=>s=>k(ut(s),((s,n)=>s+t(n)),0);const ct=t=>t?.size??0;const et=ot(ct);const lt=ot(et);const rt=ot(lt);const at=(t,s)=>t?.has(s)??false;const it=t=>R(t)||ct(t)==0;const ut=t=>[...t?.values()??[]];const ft=t=>t.clear();const dt=(t,s)=>t?.forEach(s);const ht=(t,s)=>t?.delete(s);const bt=t=>new Map(t);const gt=t=>[...t?.keys()??[]];const Tt=(t,s)=>t?.get(s);const _t=(t,s)=>dt(t,((t,n)=>s(n,t)));const pt=(t,s)=>P([...t?.entries()??[]],(([t,n])=>s(n,t)));const vt=(t,s,n)=>R(n)?(ht(t,s),t):t?.set(s,n);const St=(t,s,n,o)=>{if(!at(t,s)){vt(t,s,n())}else{o?.(Tt(t,s))}return Tt(t,s)};const wt=(t,s,n,o=vt)=>{Z(s,((s,o)=>n(t,o,s)));_t(t,(n=>X(s,n)?0:o(t,n)));return t};const mt=(t,s,n,o)=>{const c={};dt(t,((t,e)=>{if(!n?.(t,e)){const n=s?s(t,e):t;if(!o?.(n)){c[e]=n}}}));return c};const Ct=(t,s,n)=>mt(t,(t=>mt(t,s,n)),it,st);const Vt=(t,s,n)=>mt(t,(t=>Ct(t,s,n)),it,st);const It=(t,s)=>{const n=bt();dt(t,((t,o)=>n.set(o,s?.(t)??t)));return n};const yt=t=>It(t,It);const Rt=t=>It(t,yt);const Jt=(t,s,n,o,c=0)=>J((n?St:Tt)(t,s[c],c>N(s)-2?n:bt),(e=>{if(c>N(s)-2){if(o?.(e)){vt(t,s[c])}return e}const l=Jt(e,s,n,o,c+1);if(it(e)){vt(t,s[c])}return l}));const Lt=t=>{const n=s(t);return L(n)||n==e&&I(t)?n:void 0};const Et=(t,s,n,o,c)=>R(c)?t.delCell(s,n,o,true):t.setCell(s,n,o,c);const Ot=(t,s,n)=>R(n)?t.delValue(s):t.setValue(s,n);const jt=t=>new Set(O(t)||R(t)?t:[t]);const Nt=(t,s)=>t?.add(s);const Ft=/^\d+$/;const Mt=()=>{const t=[];let s=0;return[o=>(o?H(t):null)??n+s++,s=>{if(F(Ft,s)&&N(t)<1e3){z(t,s)}}]};const $t=(t,s=[n])=>{const o=[];const c=(t,n)=>n==N(s)?z(o,t):s[n]===null?dt(t,(t=>c(t,n+1))):D([s[n],null],(s=>c(Tt(t,s),n+1)));c(t,0);return o};const xt=t=>{let s;const[o,c]=Mt();const e=bt();const l=(c,l,r,a=[],i=(()=>[]))=>{s??=t();const u=o(1);vt(e,u,[c,l,r,a,i]);Nt(Jt(l,r??[n],jt),u);return u};const r=(t,n,...o)=>D($t(t,n),(t=>dt(t,(t=>Tt(e,t)[0](s,...n??[],...o)))));const a=t=>J(Tt(e,t),(([,s,o])=>{Jt(s,o??[n],void 0,(s=>{ht(s,t);return it(s)?1:0}));vt(e,t);c(t);return o}));const i=t=>J(Tt(e,t),(([t,,n=[],o,c])=>{const e=(...l)=>{const r=N(l);if(r==N(n)){t(s,...l,...c(l))}else if(R(n[r])){D(o[r]?.(...l)??[],(t=>e(...l,t)))}else{e(...l,n[r])}};e()}));return[l,r,a,i]};const At=(t,s)=>(t??0)<(s??0)?-1:1;const Dt=t=>[t,t];const Pt=(t,s=et)=>s(t[0])+s(t[1]);const kt=()=>[bt(),bt()];const zt=t=>[...t];const Ht=([t,s])=>t===s;const Wt=JSON.stringify;const qt=JSON.parse;const Bt=t=>Wt(t,((t,s)=>y(s,Map)?W.fromEntries([...s]):s));const Gt=(t,s,n)=>vt(t,s,Tt(t,s)==-n?void 0:n);const Kt=()=>{let t;let s;let n=false;let o=false;let c=0;let l=[];const d=bt();const I=bt();const y=bt();const N=bt();const F=bt();const $=bt();const k=bt();const H=bt();const W=bt();const q=bt();const B=bt();const G=bt();const K=bt();const Q=bt();const tt=jt();const ot=bt();const ut=bt();const Jt=bt();const Ft=bt();const $t=kt();const Wt=kt();const Qt=kt();const Ut=kt();const Xt=kt();const Yt=kt();const Zt=kt();const ts=kt();const ss=kt();const ns=kt();const os=kt();const cs=kt();const es=kt();const ls=kt();const rs=kt();const as=kt();const is=kt();const us=kt();const fs=kt();const ds=kt();const hs=kt();const bs=kt();const gs=bt();const Ts=kt();const[_s,ps,vs,Ss]=xt((()=>jo));const ws=t=>nt(t,(t=>nt(t,Cs)));const ms=t=>nt(t,Cs);const Cs=t=>{if(!nt(t,((t,s)=>M([r,a],s)))){return false}const s=t[r];if(!L(s)&&s!=e){return false}if(Lt(t[a])!=s){Y(t,a)}return true};const Vs=O;const Is=t=>nt(t,ys,on);const ys=(s,n)=>(!t||at(B,n)||on(n))&&nt(s,((t,s)=>Rs(n,s,t)),(()=>on(n)));const Rs=(t,s,n,o)=>nt(o?n:Os(n,t,s),((o,c)=>J(Js(t,s,c,o),(t=>{n[c]=t;return true}),(()=>false))),(()=>on(t,s)));const Js=(s,n,o,c)=>t?J(Tt(Tt(B,s),o),(t=>Lt(c)!=t[r]?on(s,n,o,c,t[a]):c),(()=>on(s,n,o,c))):R(Lt(c))?on(s,n,o,c):c;const Ls=(t,s)=>nt(s?t:js(t),((s,n)=>J(Es(n,s),(s=>{t[n]=s;return true}),(()=>false))),(()=>cn()));const Es=(t,n)=>s?J(Tt(K,t),(s=>Lt(n)!=s[r]?cn(t,n,s[a]):n),(()=>cn(t,n))):R(Lt(n))?cn(t,n):n;const Os=(t,s,n)=>{J(Tt(G,s),(([o,c])=>{dt(o,((s,n)=>{if(!X(t,n)){t[n]=s}}));dt(c,(o=>{if(!X(t,o)){on(s,n,o)}}))}));return t};const js=t=>{if(s){dt(Q,((s,n)=>{if(!X(t,n)){t[n]=s}}));dt(tt,(s=>{if(!X(t,s)){cn(s)}}))}return t};const Ns=t=>wt(B,t,((t,s,n)=>{const o=bt();const c=jt();wt(St(B,s,bt),n,((t,s,n)=>{vt(t,s,n);J(n[a],(t=>vt(o,s,t)),(()=>Nt(c,s)))}));vt(G,s,[o,c])}),((t,s)=>{vt(B,s);vt(G,s)}));const Fs=t=>wt(K,t,((t,s,n)=>{vt(K,s,n);J(n[a],(t=>vt(Q,s,t)),(()=>Nt(tt,s)))}),((t,s)=>{vt(K,s);vt(Q,s);ht(tt,s)}));const Ms=t=>st(t)?co():zn(t);const $s=([t,s])=>{(st(t)?co:zn)(t);(st(s)?ao:Kn)(s)};const xs=t=>wt(Jt,t,((t,s,n)=>As(s,n)),((t,s)=>Gs(s)));const As=(t,s)=>wt(St(Jt,t,(()=>{Xs(t,1);vt(ot,t,Mt());vt(ut,t,bt());return bt()})),s,((s,n,o)=>Ds(t,s,n,o)),((s,n)=>Ks(t,s,n)));const Ds=(t,s,n,o,c)=>wt(St(s,n,(()=>{Ys(t,n,1);return bt()})),o,((s,o,c)=>Ps(t,n,s,o,c)),((o,e)=>Qs(t,s,n,o,e,c)));const Ps=(t,s,n,o,c)=>{if(!at(n,o)){Zs(t,s,o,1)}const e=Tt(n,o);if(c!==e){tn(t,s,o,e,c);vt(n,o,c)}};const ks=(t,s,n,o,c)=>J(Tt(s,n),(s=>Ps(t,n,s,o,c)),(()=>Ds(t,s,n,Os({[o]:c},t,n))));const zs=t=>st(t)?ao():Kn(t);const Hs=t=>wt(Ft,t,((t,s,n)=>Ws(s,n)),((t,s)=>Us(s)));const Ws=(t,s)=>{if(!at(Ft,t)){sn(t,1)}const n=Tt(Ft,t);if(s!==n){nn(t,n,s);vt(Ft,t,s)}};const qs=(t,s)=>{const[n]=Tt(ot,t);let o;do{o=n(s)}while(at(Tt(Jt,t),o));return o};const Bs=t=>Tt(Jt,t)??As(t,{});const Gs=t=>As(t,{});const Ks=(t,s,n)=>{const[,o]=Tt(ot,t);o(n);Ds(t,s,n,{},true)};const Qs=(t,s,n,o,c,e)=>{const l=Tt(Tt(G,t)?.[0],c);if(!R(l)&&!e){return Ps(t,n,o,c,l)}const r=s=>{tn(t,n,s,Tt(o,s));Zs(t,n,s,-1);vt(o,s)};if(R(l)){r(c)}else{_t(o,r)}if(it(o)){Ys(t,n,-1);if(it(vt(s,n))){Xs(t,-1);vt(Jt,t);vt(ot,t);vt(ut,t)}}};const Us=t=>{const s=Tt(Q,t);if(!R(s)){return Ws(t,s)}nn(t,Tt(Ft,t));sn(t,-1);vt(Ft,t)};const Xs=(t,s)=>Gt(d,t,s);const Ys=(t,s,n)=>Gt(St(N,t,bt),s,n)&&vt(y,t,St(y,t,(()=>0))+n);const Zs=(t,s,n,o)=>{const c=Tt(ut,t);const e=Tt(c,n)??0;if(e==0&&o==1||e==1&&o==-1){Gt(St(I,t,bt),n,o)}vt(c,n,e!=-o?e+o:null);Gt(St(St(F,t,bt),s,bt),n,o)};const tn=(t,s,n,o,c)=>{St(St(St($,t,bt),s,bt),n,(()=>[o,0]))[1]=c;l[3]?.(t,s,n,c)};const sn=(t,s)=>Gt(k,t,s);const nn=(t,s,n)=>{St(H,t,(()=>[s,0]))[1]=n;l[4]?.(t,n)};const on=(t,s,n,o,c)=>{z(St(St(St(W,t,bt),s,bt),n,(()=>[])),o);return c};const cn=(t,s,n)=>{z(St(q,t,(()=>[])),s);return n};const en=(t,s,n)=>J(Tt(Tt(Tt($,t),s),n),(([t,s])=>[true,t,s]),(()=>[false,...Dt(Vn(t,s,n))]));const ln=t=>J(Tt(H,t),(([t,s])=>[true,t,s]),(()=>[false,...Dt(Rn(t))]));const rn=t=>!it(W)&&!it(as[t])?dt(t?Rt(W):W,((s,n)=>dt(s,((s,o)=>dt(s,((s,c)=>ps(as[t],[n,o,c],s))))))):0;const an=t=>!it(q)&&!it(is[t])?dt(t?It(q):q,((s,n)=>ps(is[t],[n],s))):0;const un=(t,s,n,o)=>{if(!it(t)){ps(s,o,(()=>mt(t)));_t(t,((t,s)=>ps(n,[...o??[],t],s==1)));return 1}};const fn=t=>{const s=Jn();if(s!=n){ps($t[t],void 0,s)}const o=it(ns[t]);const c=it(es[t])&&it(ls[t])&&it(ss[t])&&it(os[t])&&it(Yt[t])&&it(Zt[t])&&it(ts[t])&&o&&it(Qt[t])&&it(Ut[t]);const e=it(rs[t])&&it(cs[t])&&it(Xt[t])&&it(Wt[t]);if(!c||!e){const s=t?[It(d),yt(I),It(y),yt(N),Rt(F),Rt($)]:[d,I,y,N,F,$];if(!c){un(s[0],Qt[t],Ut[t]);dt(s[1],((s,n)=>un(s,Yt[t],Zt[t],[n])));dt(s[2],((s,n)=>{if(s!=0){ps(ts[t],[n],vn(n))}}));const n=jt();dt(s[3],((s,c)=>{if(un(s,ss[t],os[t],[c])&&!o){ps(ns[t],[c,null]);Nt(n,c)}}));if(!o){dt(s[5],((s,o)=>{if(!at(n,o)){const n=jt();dt(s,(t=>dt(t,(([s,o],c)=>o!==s?Nt(n,c):ht(t,c)))));dt(n,(s=>ps(ns[t],[o,s])))}}))}dt(s[4],((s,n)=>dt(s,((s,o)=>un(s,es[t],ls[t],[n,o])))))}if(!e){let n;dt(s[5],((s,o)=>{let c;dt(s,((s,e)=>{let l;dt(s,(([s,r],a)=>{if(r!==s){ps(rs[t],[o,e,a],r,s,en);n=c=l=1}}));if(l){ps(cs[t],[o,e],en)}}));if(c){ps(Xt[t],[o],en)}}));if(n){ps(Wt[t],void 0,en)}}}};const dn=t=>{const s=Nn();if(s!=o){ps(us[t],void 0,s)}const n=it(ds[t])&&it(hs[t]);const c=it(bs[t])&&it(fs[t]);if(!n||!c){const s=t?[It(k),It(H)]:[k,H];if(!n){un(s[0],ds[t],hs[t])}if(!c){let n;dt(s[1],(([s,o],c)=>{if(o!==s){ps(bs[t],[c],o,s,ln);n=1}}));if(n){ps(fs[t],void 0,ln)}}}};const hn=(t,...s)=>{bo((()=>t(...P(s,V))));return jo};const bn=()=>[gn(),In()];const gn=()=>Vt(Jt);const Tn=()=>gt(Jt);const _n=t=>Ct(Tt(Jt,V(t)));const pn=t=>gt(Tt(ut,V(t)));const vn=t=>ct(Tt(Jt,V(t)));const Sn=t=>gt(Tt(Jt,V(t)));const wn=(t,s,n,o=0,c)=>P(j(A(pt(Tt(Jt,V(t)),((t,n)=>[R(s)?n:Tt(t,V(s)),n])),(([t],[s])=>At(t,s)*(n?-1:1))),o,R(c)?c:o+c),(([,t])=>t));const mn=(t,s)=>mt(Tt(Tt(Jt,V(t)),V(s)));const Cn=(t,s)=>gt(Tt(Tt(Jt,V(t)),V(s)));const Vn=(t,s,n)=>Tt(Tt(Tt(Jt,V(t)),V(s)),V(n));const In=()=>mt(Ft);const yn=()=>gt(Ft);const Rn=t=>Tt(Ft,V(t));const Jn=()=>!it(Jt);const Ln=t=>at(Jt,V(t));const En=(t,s)=>at(Tt(ut,V(t)),V(s));const On=(t,s)=>at(Tt(Jt,V(t)),V(s));const jn=(t,s,n)=>at(Tt(Tt(Jt,V(t)),V(s)),V(n));const Nn=()=>!it(Ft);const Fn=t=>at(Ft,V(t));const Mn=()=>Bt(Jt);const $n=()=>Bt(Ft);const xn=()=>Bt([Jt,Ft]);const An=()=>Bt(B);const Dn=()=>Bt(K);const Pn=()=>Bt([B,K]);const kn=t=>hn((()=>{const s=E(t)?t():t;if(Vs(s)){$s(s)}}));const zn=t=>hn((()=>Is(t)?xs(t):0));const Hn=(t,s)=>hn((t=>ys(s,t)?As(t,s):0),t);const Wn=(t,s,n)=>hn(((t,s)=>Rs(t,s,n)?Ds(t,Bs(t),s,n):0),t,s);const qn=(t,s,n=true)=>bo((()=>{let o=void 0;if(Rs(t,o,s)){t=V(t);Ds(t,Bs(t),o=qs(t,n?1:0),s)}return o}));const Bn=(t,s,n)=>hn(((t,s)=>{if(Rs(t,s,n,1)){const o=Bs(t);Z(n,((n,c)=>ks(t,o,s,c,n)))}}),t,s);const Gn=(t,s,n,o)=>hn(((t,s,n)=>J(Js(t,s,n,E(o)?o(Vn(t,s,n)):o),(o=>ks(t,Bs(t),s,n,o)))),t,s,n);const Kn=t=>hn((()=>Ls(t)?Hs(t):0));const Qn=t=>hn((()=>Ls(t,1)?Z(t,((t,s)=>Ws(s,t))):0));const Un=(t,s)=>hn((t=>J(Es(t,E(s)?s(Rn(t)):s),(s=>Ws(t,s)))),t);const Xn=t=>hn((()=>{Z(t[0],((t,s)=>R(t)?eo(s):Z(t,((t,n)=>R(t)?lo(s,n):Z(t,((t,o)=>Et(jo,s,n,o,t)))))));Z(t[1],((t,s)=>Ot(jo,s,t)))}));const Yn=t=>{try{Ms(qt(t))}catch{}return jo};const Zn=t=>{try{zs(qt(t))}catch{}return jo};const to=t=>hn((()=>{try{const[s,n]=qt(t);Ms(s);zs(n)}catch{Yn(t)}}));const so=s=>hn((()=>{if(t=ws(s)){Ns(s);if(!it(Jt)){const t=gn();co();zn(t)}}}));const no=t=>hn((()=>{if(s=ms(t)){const n=In();fo();ao();s=true;Fs(t);Kn(n)}}));const oo=(t,s)=>hn((()=>{so(t);no(s)}));const co=()=>hn((()=>xs({})));const eo=t=>hn((t=>at(Jt,t)?Gs(t):0),t);const lo=(t,s)=>hn(((t,s)=>J(Tt(Jt,t),(n=>at(n,s)?Ks(t,n,s):0))),t,s);const ro=(t,s,n,o)=>hn(((t,s,n)=>J(Tt(Jt,t),(c=>J(Tt(c,s),(e=>at(e,n)?Qs(t,c,s,e,n,o):0))))),t,s,n);const ao=()=>hn((()=>Hs({})));const io=t=>hn((t=>at(Ft,t)?Us(t):0),t);const uo=()=>hn((()=>{Ns({});t=false}));const fo=()=>hn((()=>{Fs({});s=false}));const ho=()=>hn((()=>{uo();fo()}));const bo=(t,s)=>{if(c!=-1){go();const n=t();po(s);return n}};const go=()=>{if(c!=-1){c++}if(c==1){l[0]?.();ps(gs)}return jo};const To=()=>[mt($,((t,s)=>Tt(d,s)===-1?void 0:mt(t,((t,n)=>Tt(Tt(N,s),n)===-1?void 0:mt(t,(([,t])=>t),(t=>Ht(t)))),it,st)),it,st),mt(H,(([,t])=>t),(t=>Ht(t))),1];const _o=()=>[!it($),!it(H),Vt($,zt,Ht),Vt(W),mt(H,zt,Ht),mt(q),mt(d),Ct(N),Vt(F),mt(k)];const po=t=>{if(c>0){c--;if(c==0){c=1;rn(1);if(!it($)){fn(1)}an(1);if(!it(H)){dn(1)}if(t?.(jo)){dt($,((t,s)=>dt(t,((t,n)=>dt(t,(([t],o)=>Et(jo,s,n,o,t)))))));ft($);dt(H,(([t],s)=>Ot(jo,s,t)));ft(H)}ps(Ts[0],void 0);c=-1;rn(0);if(!it($)){fn(0)}an(0);if(!it(H)){dn(0)}l[1]?.();ps(Ts[1],void 0);l[2]?.();c=0;n=Jn();o=Nn();D([d,I,y,N,F,$,W,k,H,q],ft)}}return jo};const vo=t=>dt(Jt,((s,n)=>t(n,(t=>dt(s,((s,n)=>t(n,(t=>_t(s,t)))))))));const So=(t,s)=>_t(Tt(ut,V(t)),s);const wo=(t,s)=>dt(Tt(Jt,V(t)),((t,n)=>s(n,(s=>_t(t,s)))));const mo=(t,s,n)=>_t(Tt(Tt(Jt,V(t)),V(s)),n);const Co=t=>_t(Ft,t);const Vo=(t,s,n,o,c,e,l)=>{let r=wn(t,s,n,o,c);return _s((()=>{const l=wn(t,s,n,o,c);if(!x(l,r)){r=l;e(jo,t,s,n,o,c,r)}}),ns[l?1:0],[t,s],[Tn])};const Io=t=>_s(t,gs);const yo=t=>_s(t,Ts[0]);const Ro=t=>_s(t,Ts[1]);const Jo=t=>{Ss(t);return jo};const Lo=t=>{vs(t);return jo};const Eo=()=>({hasTables:Pt($t),tables:Pt(Wt),tableIds:Pt(Qt),hasTable:Pt(Ut),table:Pt(Xt),tableCellIds:Pt(Yt),hasTableCell:Pt(Zt,lt),rowCount:Pt(ts),rowIds:Pt(ss),sortedRowIds:Pt(ns),hasRow:Pt(os,lt),row:Pt(cs,lt),cellIds:Pt(es,lt),hasCell:Pt(ls,rt),cell:Pt(rs,rt),invalidCell:Pt(as,rt),hasValues:Pt(us),values:Pt(fs),valueIds:Pt(ds),hasValue:Pt(hs),value:Pt(bs),invalidValue:Pt(is),transaction:et(gs)+Pt(Ts)});const Oo=(t,s,n,o,c)=>l=[t,s,n,o,c];const jo={getContent:bn,getTables:gn,getTableIds:Tn,getTable:_n,getTableCellIds:pn,getRowCount:vn,getRowIds:Sn,getSortedRowIds:wn,getRow:mn,getCellIds:Cn,getCell:Vn,getValues:In,getValueIds:yn,getValue:Rn,hasTables:Jn,hasTable:Ln,hasTableCell:En,hasRow:On,hasCell:jn,hasValues:Nn,hasValue:Fn,getTablesJson:Mn,getValuesJson:$n,getJson:xn,getTablesSchemaJson:An,getValuesSchemaJson:Dn,getSchemaJson:Pn,hasTablesSchema:()=>t,hasValuesSchema:()=>s,setContent:kn,setTables:zn,setTable:Hn,setRow:Wn,addRow:qn,setPartialRow:Bn,setCell:Gn,setValues:Kn,setPartialValues:Qn,setValue:Un,applyChanges:Xn,setTablesJson:Yn,setValuesJson:Zn,setJson:to,setTablesSchema:so,setValuesSchema:no,setSchema:oo,delTables:co,delTable:eo,delRow:lo,delCell:ro,delValues:ao,delValue:io,delTablesSchema:uo,delValuesSchema:fo,delSchema:ho,transaction:bo,startTransaction:go,getTransactionChanges:To,getTransactionLog:_o,finishTransaction:po,forEachTable:vo,forEachTableCell:So,forEachRow:wo,forEachCell:mo,forEachValue:Co,addSortedRowIdsListener:Vo,addStartTransactionListener:Io,addWillFinishTransactionListener:yo,addDidFinishTransactionListener:Ro,callListener:Jo,delListener:Lo,getListenerStats:Eo,isMergeable:()=>false,createStore:Kt,addListener:_s,callListeners:ps,setInternalListeners:Oo};Z({[f+b]:[0,$t,[],()=>[Jn()]],[b]:[0,Wt],[g]:[0,Qt],[f+h]:[1,Ut,[Tn],t=>[Ln(...t)]],[h]:[1,Xt,[Tn]],[h+S]:[1,Yt,[Tn]],[f+h+v]:[2,Zt,[Tn,pn],t=>[En(...t)]],[_]:[1,ts,[Tn]],[p]:[1,ss,[Tn]],[f+T]:[2,os,[Tn,Sn],t=>[On(...t)]],[T]:[2,cs,[Tn,Sn]],[S]:[2,es,[Tn,Sn]],[f+v]:[3,ls,[Tn,Sn,Cn],t=>[jn(...t)]],[v]:[3,rs,[Tn,Sn,Cn],t=>Dt(Vn(...t))],InvalidCell:[3,as],[f+m]:[0,us,[],()=>[Nn()]],[m]:[0,fs],[C]:[0,ds],[f+w]:[1,hs,[yn],t=>[Fn(...t)]],[w]:[1,bs,[yn],t=>Dt(Rn(t[0]))],InvalidValue:[1,is]},(([t,s,n,o],c)=>{jo[u+c+i]=(...c)=>_s(c[t],s[c[t+1]?1:0],t>0?j(c,0,t):void 0,n,o)}));return U(jo)};const Qt=Kt();Qt.delTables();Qt.delValues();console.log("[STORE] Data store initialized.");const Ut=(t,s)=>{try{return JSON.parse(t)}catch(t){return s||null}};const Xt=t=>{const s={};for(let n in t){if(typeof t[n]==="string"||typeof t[n]==="number"||typeof t[n]==="boolean"){s[n]=t[n]}else if(t[n]===null){s[`__null__${n}`]=""}else if(Array.isArray(t[n])){s[`__array__${n}`]=JSON.stringify(t[n])}else if(typeof t[n]==="object"){s[`__object__${n}`]=JSON.stringify(t[n])}}return s};const Yt=t=>{const s={};for(let n in t){if(n.startsWith("__null__")){s[n.replace("__null__","")]=null}else if(typeof t[n]==="string"&&n.startsWith("__array__")){s[n.replace("__array__","")]=Ut(t[n])}else if(typeof t[n]==="string"&&n.startsWith("__object__")){s[n.replace("__object__","")]=Ut(t[n])}else{s[n]=t[n]}}return s};const Zt={store:Qt,subscribe(t,s,n,o,c){if(Qt.hasRow(t,s)){c(Yt(Qt.getRow(t,s)))}const e=Qt.addRowListener(t,s,(()=>{const n=Qt.getRow(t,s);c(Yt(n))}));if(!Qt.hasRow(t,s)||o){console.log("[STORE] Loading/reloading",{tableId:t,rowId:s});n().then((n=>{Qt.setRow(t,s,Xt(n))})).catch((n=>{console.error("[STORE] Error getting row",{tableId:t,rowId:s,forceReload:o},n)}))}return e},unsubscribe(t){Qt.delListener(t)},async getTemplate(s,n,o=false){if(!o){if(!Qt.hasRow("templates",n)){return null}const t=Qt.getRow("templates",n);return Yt(t)}const c=await t(s,n);console.log("[STORE] Reloading template",c);Qt.setRow("templates",n,Xt(c));return c},updateTemplate(t,s){Qt.setRow("templates",t,Xt(s));return s},async getEnvelope(s,n,o=false){if(!o){if(!Qt.hasRow("envelopes",n)){return null}const t=Qt.getRow("envelopes",n);return Yt(t)}const c=await t(s,n);Qt.setRow("envelopes",n,Xt(c));return c},updateEnvelope(t,s){Qt.setRow("envelopes",t,Xt(s));return s},getField(t,s,n,o){if(t==="template"){const t=Qt.getRow("templates",s);const c=Yt(t);const e=(c.fields||[]).find((t=>t.name===n));const l=(c.roles||[]).map((t=>t.name));const r=l.findIndex((t=>t===e.role_name));return{index:Math.max(r,0),field:o||e}}else{const t=Qt.getRow("envelopes",s);const c=Yt(t);const e=(c.fields||[]).find((t=>t.name===n));const l=(c.recipients||[]).map((t=>t.role_name));const r=l.findIndex((t=>t===e.role_name));return{index:r,field:o||e}}}};export{Zt as S};
|
2
|
+
//# sourceMappingURL=p-3828cb31.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["getTypeOf","thing","EMPTY_STRING","STRING","BOOLEAN","NUMBER","FUNCTION","TYPE","DEFAULT","LISTENER","ADD","HAS","IDS","TABLE","TABLES","TABLE_IDS","ROW","ROW_COUNT","ROW_IDS","CELL","CELL_IDS","VALUE","VALUES","VALUE_IDS","id","key","isFiniteNumber","isFinite","isInstanceOf","cls","isUndefined","ifNotUndefined","value","then","otherwise","isTypeStringOrBoolean","type","isFunction","isArray","Array","slice","arrayOrString","start","end","size","length","test","regex","subject","arrayHas","array","includes","arrayEvery","cb","every","arrayIsEqual","array1","array2","value1","index","arraySort","sorter","sort","arrayForEach","forEach","arrayMap","map","arrayReduce","initial","reduce","arrayPush","values","push","arrayShift","shift","object","Object","getPrototypeOf","obj","objEntries","entries","objFrozen","isFrozen","isObject","objPrototype","prototype","objIds","keys","objFreeze","freeze","objHas","objDel","objToArray","objSize","objIsEmpty","objValidate","validateChild","onInvalidObj","emptyIsValid","child","collSizeN","collSizer","coll","collValues","total","coll2","collSize","collSize2","collSize3","collSize4","collHas","keyOrValue","has","collIsEmpty","collClear","clear","collForEach","collDel","delete","mapNew","Map","mapKeys","mapGet","get","mapForEach","mapMap","mapSet","set","mapEnsure","getDefaultValue","hadExistingValue","mapMatch","del","mapToObj","valueMapper","excludeMapValue","excludeObjValue","mapValue","objValue","mapToObj2","childMap","mapToObj3","mapClone","map2","mapClone2","mapClone3","visitTree","node","path","ensureLeaf","pruneLeaf","p","nodeOrLeaf","leaf","getCellOrValueType","cellOrValue","setOrDelCell","store","tableId","rowId","cellId","cell","delCell","setCell","setOrDelValue","valueId","delValue","setValue","setNew","entryOrEntries","Set","setAdd","add","INTEGER","getPoolFunctions","pool","nextId","reuse","getWildcardedLeaves","deepIdSet","leaves","deep","node2","getListenerFunctions","getThing","getId","releaseId","allListeners","addListener","listener","idSetNode","pathGetters","extraArgsGetter","callListeners","ids","extraArgs","delListener","idOrNulls","idSet","callListener","callWithIds","id2","defaultSorter","sortKey1","sortKey2","pairNew","pairCollSize2","pair","func","pairNewMap","pairClone","pairIsEqual","entry1","entry2","jsonString","JSON","stringify","jsonParse","parse","jsonStringWithMap","_key","fromEntries","idsChanged","changedIds","addedOrRemoved","createStore","hasTablesSchema","hasValuesSchema","hadTables","hadValues","transactions","internalListeners","changedTableIds","changedTableCellIds","changedRowCount","changedRowIds","changedCellIds","changedCells","changedValueIds","changedValues","invalidCells","invalidValues","tablesSchemaMap","tablesSchemaRowCache","valuesSchemaMap","valuesDefaulted","valuesNonDefaulted","tablePoolFunctions","tableCellIds","tablesMap","valuesMap","hasTablesListeners","tablesListeners","tableIdsListeners","hasTableListeners","tableListeners","tableCellIdsListeners","hasTableCellListeners","rowCountListeners","rowIdsListeners","sortedRowIdsListeners","hasRowListeners","rowListeners","cellIdsListeners","hasCellListeners","cellListeners","invalidCellListeners","invalidValueListeners","hasValuesListeners","valuesListeners","valueIdsListeners","hasValueListeners","valueListeners","startTransactionListeners","finishTransactionListeners","delListenerImpl","callListenerImpl","validateTablesSchema","tableSchema","tableSchema2","validateCellOrValueSchema","validateValuesSchema","valuesSchema","schema","_child","validateContent","validateTables","tables","validateTable","cellInvalid","table","row","validateRow","skipDefaults","addDefaultsToRow","getValidatedCell","validCell","cellSchema","validateValues","addDefaultsToValues","getValidatedValue","validValue","valueInvalid","valueSchema","rowDefaulted","rowNonDefaulted","setValidTablesSchema","tablesSchema","_tablesSchema","tableSchemaMap","def","setValidValuesSchema","_valuesSchema","setOrDelTables","delTables","setTables","setValidContent","delValues","setValues","setValidTables","_tables","setValidTable","delValidTable","tableIdsChanged","tableMap","setValidRow","delValidRow","forceDel","rowIdsChanged","rowMap","setValidCell","delValidCell","cellIdsChanged","oldCell","cellChanged","setCellIntoDefaultRow","setOrDelValues","setValidValues","_valuesMap","setValidValue","delValidValue","valueIdsChanged","oldValue","valueChanged","getNewRowId","getOrCreateTable","defaultCell","delCell2","cellId2","defaultValue","cellIds","count","newCell","newValue","invalidCell","defaultedCell","invalidValue","defaultedValue","getCellChange","getCell","getValueChange","getValue","callInvalidCellListeners","mutator","rows","cells","callInvalidValueListeners","callIdsAndHasListenersIfChanged","idListeners","hasListeners","changedId","changed","callTabularListenersForChanges","hasTablesNow","hasTables","emptySortedRowIdListeners","emptyIdAndHasListeners","emptyOtherListeners","changes","changedCount","getRowCount","calledSortableTableIds","sortableCellIds","rowCellIds","tablesChanged","tableChanged","rowChanged","callValuesListenersForChanges","hasValuesNow","hasValues","valuesChanged","fluentTransaction","actions","args","transaction","getContent","getTables","getValues","getTableIds","getTable","getTableCellIds","getRowIds","getSortedRowIds","descending","offset","limit","cell1","cell2","getRow","getCellIds","getValueIds","hasTable","hasTableCell","hasRow","hasCell","hasValue","getTablesJson","getValuesJson","getJson","getTablesSchemaJson","getValuesSchemaJson","getSchemaJson","setContent","content","content2","setTable","tableId2","setRow","rowId2","addRow","reuseRowIds","setPartialRow","partialRow","setPartialValues","partialValues","valueId2","applyChanges","delTable","delRow","setTablesJson","tablesJson","setValuesJson","valuesJson","setJson","tablesAndValuesJson","setTablesSchema","setValuesSchema","delValuesSchema","setSchema","delTablesSchema","delSchema","doRollback","startTransaction","result","finishTransaction","getTransactionChanges","changedCell","changedValue","getTransactionLog","forEachTable","tableCallback","rowCallback","cellCallback","forEachTableCell","tableCellCallback","forEachRow","forEachCell","forEachValue","valueCallback","addSortedRowIdsListener","sortedRowIds","newSortedRowIds","addStartTransactionListener","addWillFinishTransactionListener","addDidFinishTransactionListener","listenerId","getListenerStats","tableIds","rowCount","rowIds","valueIds","setInternalListeners","preStartTransaction","preFinishTransaction","postFinishTransaction","cellChanged2","valueChanged2","isMergeable","InvalidCell","InvalidValue","argumentCount","listenable","console","log","safeJsonParse","val","fallback","e","objectToRow","rowToObject","startsWith","replace","Store","subscribe","getter","forceReload","callback","addRowListener","catch","error","unsubscribe","getTemplate","endpoint","templateId","reload","template","updateTemplate","getEnvelope","envelopeId","envelope","updateEnvelope","getField","source","sourceId","fieldName","fieldOverride","field","fields","find","name","roleNames","roles","role","findIndex","role_name","Math","max","recipients","recipient"],"sources":["node_modules/tinybase/index.js","src/utils/Datastore.ts"],"sourcesContent":["const getTypeOf = (thing) => typeof thing;\nconst EMPTY_STRING = '';\nconst STRING = getTypeOf(EMPTY_STRING);\nconst BOOLEAN = getTypeOf(true);\nconst NUMBER = getTypeOf(0);\nconst FUNCTION = getTypeOf(getTypeOf);\nconst TYPE = 'type';\nconst DEFAULT = 'default';\nconst SUM = 'sum';\nconst AVG = 'avg';\nconst MIN = 'min';\nconst MAX = 'max';\nconst LISTENER = 'Listener';\nconst RESULT = 'Result';\nconst GET = 'get';\nconst SET = 'set';\nconst ADD = 'add';\nconst DEL = 'del';\nconst HAS = 'Has';\nconst IDS = 'Ids';\nconst TABLE = 'Table';\nconst TABLES = TABLE + 's';\nconst TABLE_IDS = TABLE + IDS;\nconst ROW = 'Row';\nconst ROW_COUNT = ROW + 'Count';\nconst ROW_IDS = ROW + IDS;\nconst SORTED_ROW_IDS = 'Sorted' + ROW + IDS;\nconst CELL = 'Cell';\nconst CELL_IDS = CELL + IDS;\nconst VALUE = 'Value';\nconst VALUES = VALUE + 's';\nconst VALUE_IDS = VALUE + IDS;\nconst TRANSACTION = 'Transaction';\nconst id = (key) => EMPTY_STRING + key;\nconst strStartsWith = (str, prefix) => str.startsWith(prefix);\nconst strEndsWith = (str, suffix) => str.endsWith(suffix);\nconst strSplit = (str, separator = EMPTY_STRING, limit) =>\n str.split(separator, limit);\n\nconst GLOBAL = globalThis;\nconst math = Math;\nconst mathMax = math.max;\nconst mathMin = math.min;\nconst mathFloor = math.floor;\nconst isFiniteNumber = isFinite;\nconst isInstanceOf = (thing, cls) => thing instanceof cls;\nconst isUndefined = (thing) => thing == void 0;\nconst ifNotUndefined = (value, then, otherwise) =>\n isUndefined(value) ? otherwise?.() : then(value);\nconst isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;\nconst isString = (thing) => getTypeOf(thing) == STRING;\nconst isFunction = (thing) => getTypeOf(thing) == FUNCTION;\nconst isArray = (thing) => Array.isArray(thing);\nconst slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);\nconst size = (arrayOrString) => arrayOrString.length;\nconst test = (regex, subject) => regex.test(subject);\nconst getUndefined = () => void 0;\n\nconst arrayHas = (array, value) => array.includes(value);\nconst arrayEvery = (array, cb) => array.every(cb);\nconst arrayIsEqual = (array1, array2) =>\n size(array1) === size(array2) &&\n arrayEvery(array1, (value1, index) => array2[index] === value1);\nconst arrayIsSorted = (array, sorter) =>\n arrayEvery(\n array,\n (value, index) => index == 0 || sorter(array[index - 1], value) <= 0,\n );\nconst arraySort = (array, sorter) => array.sort(sorter);\nconst arrayForEach = (array, cb) => array.forEach(cb);\nconst arrayMap = (array, cb) => array.map(cb);\nconst arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);\nconst arrayIsEmpty = (array) => size(array) == 0;\nconst arrayReduce = (array, cb, initial) => array.reduce(cb, initial);\nconst arrayClear = (array, to) => array.splice(0, to);\nconst arrayPush = (array, ...values) => array.push(...values);\nconst arrayPop = (array) => array.pop();\nconst arrayUnshift = (array, ...values) => array.unshift(...values);\nconst arrayShift = (array) => array.shift();\n\nconst object = Object;\nconst getPrototypeOf = (obj) => object.getPrototypeOf(obj);\nconst objEntries = object.entries;\nconst objFrozen = object.isFrozen;\nconst isObject = (obj) =>\n !isUndefined(obj) &&\n ifNotUndefined(\n getPrototypeOf(obj),\n (objPrototype) =>\n objPrototype == object.prototype ||\n isUndefined(getPrototypeOf(objPrototype)),\n\n /* istanbul ignore next */\n () => true,\n );\nconst objIds = object.keys;\nconst objFreeze = object.freeze;\nconst objNew = (entries = []) => object.fromEntries(entries);\nconst objHas = (obj, id) => id in obj;\nconst objDel = (obj, id) => {\n delete obj[id];\n return obj;\n};\nconst objForEach = (obj, cb) =>\n arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));\nconst objToArray = (obj, cb) =>\n arrayMap(objEntries(obj), ([id, value]) => cb(value, id));\nconst objSize = (obj) => size(objIds(obj));\nconst objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;\nconst objEnsure = (obj, id, getDefaultValue) => {\n if (!objHas(obj, id)) {\n obj[id] = getDefaultValue();\n }\n return obj[id];\n};\nconst objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {\n if (\n isUndefined(obj) ||\n !isObject(obj) ||\n (!emptyIsValid && objIsEmpty(obj)) ||\n objFrozen(obj)\n ) {\n onInvalidObj?.();\n return false;\n }\n objToArray(obj, (child, id) => {\n if (!validateChild(child, id)) {\n objDel(obj, id);\n }\n });\n return emptyIsValid ? true : !objIsEmpty(obj);\n};\n\nconst collSizeN = (collSizer) => (coll) =>\n arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);\nconst collSize = (coll) => coll?.size ?? 0;\nconst collSize2 = collSizeN(collSize);\nconst collSize3 = collSizeN(collSize2);\nconst collSize4 = collSizeN(collSize3);\nconst collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;\nconst collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;\nconst collValues = (coll) => [...(coll?.values() ?? [])];\nconst collClear = (coll) => coll.clear();\nconst collForEach = (coll, cb) => coll?.forEach(cb);\nconst collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);\n\nconst mapNew = (entries) => new Map(entries);\nconst mapKeys = (map) => [...(map?.keys() ?? [])];\nconst mapGet = (map, key) => map?.get(key);\nconst mapForEach = (map, cb) =>\n collForEach(map, (value, key) => cb(key, value));\nconst mapMap = (coll, cb) =>\n arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));\nconst mapSet = (map, key, value) =>\n isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);\nconst mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {\n if (!collHas(map, key)) {\n mapSet(map, key, getDefaultValue());\n } else {\n hadExistingValue?.(mapGet(map, key));\n }\n return mapGet(map, key);\n};\nconst mapMatch = (map, obj, set, del = mapSet) => {\n objToArray(obj, (value, id) => set(map, id, value));\n mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));\n return map;\n};\nconst mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {\n const obj = {};\n collForEach(map, (mapValue, id) => {\n if (!excludeMapValue?.(mapValue, id)) {\n const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;\n if (!excludeObjValue?.(objValue)) {\n obj[id] = objValue;\n }\n }\n });\n return obj;\n};\nconst mapToObj2 = (map, valueMapper, excludeMapValue) =>\n mapToObj(\n map,\n (childMap) => mapToObj(childMap, valueMapper, excludeMapValue),\n collIsEmpty,\n objIsEmpty,\n );\nconst mapToObj3 = (map, valueMapper, excludeMapValue) =>\n mapToObj(\n map,\n (childMap) => mapToObj2(childMap, valueMapper, excludeMapValue),\n collIsEmpty,\n objIsEmpty,\n );\nconst mapClone = (map, mapValue) => {\n const map2 = mapNew();\n collForEach(map, (value, key) => map2.set(key, mapValue?.(value) ?? value));\n return map2;\n};\nconst mapClone2 = (map) => mapClone(map, mapClone);\nconst mapClone3 = (map) => mapClone(map, mapClone2);\nconst visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>\n ifNotUndefined(\n (ensureLeaf ? mapEnsure : mapGet)(\n node,\n path[p],\n p > size(path) - 2 ? ensureLeaf : mapNew,\n ),\n (nodeOrLeaf) => {\n if (p > size(path) - 2) {\n if (pruneLeaf?.(nodeOrLeaf)) {\n mapSet(node, path[p]);\n }\n return nodeOrLeaf;\n }\n const leaf = visitTree(nodeOrLeaf, path, ensureLeaf, pruneLeaf, p + 1);\n if (collIsEmpty(nodeOrLeaf)) {\n mapSet(node, path[p]);\n }\n return leaf;\n },\n );\n\nconst getCellOrValueType = (cellOrValue) => {\n const type = getTypeOf(cellOrValue);\n return isTypeStringOrBoolean(type) ||\n (type == NUMBER && isFiniteNumber(cellOrValue))\n ? type\n : void 0;\n};\nconst isCellOrValueOrNullOrUndefined = (cellOrValue) =>\n isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));\nconst setOrDelCell = (store, tableId, rowId, cellId, cell) =>\n isUndefined(cell)\n ? store.delCell(tableId, rowId, cellId, true)\n : store.setCell(tableId, rowId, cellId, cell);\nconst setOrDelValue = (store, valueId, value) =>\n isUndefined(value) ? store.delValue(valueId) : store.setValue(valueId, value);\n\nconst setNew = (entryOrEntries) =>\n new Set(\n isArray(entryOrEntries) || isUndefined(entryOrEntries)\n ? entryOrEntries\n : [entryOrEntries],\n );\nconst setAdd = (set, value) => set?.add(value);\n\nconst getDefinableFunctions = (\n store,\n getDefaultThing,\n validateRowValue,\n addListener,\n callListeners,\n) => {\n const hasRow = store.hasRow;\n const tableIds = mapNew();\n const things = mapNew();\n const thingIdListeners = mapNew();\n const allRowValues = mapNew();\n const allSortKeys = mapNew();\n const storeListenerIds = mapNew();\n const getStore = () => store;\n const getThingIds = () => mapKeys(tableIds);\n const forEachThing = (cb) => mapForEach(things, cb);\n const hasThing = (id) => collHas(things, id);\n const getTableId = (id) => mapGet(tableIds, id);\n const getThing = (id) => mapGet(things, id);\n const setThing = (id, thing) => mapSet(things, id, thing);\n const addStoreListeners = (id, andCall, ...listenerIds) => {\n const set = mapEnsure(storeListenerIds, id, setNew);\n arrayForEach(\n listenerIds,\n (listenerId) =>\n setAdd(set, listenerId) && andCall && store.callListener(listenerId),\n );\n return listenerIds;\n };\n const delStoreListeners = (id, ...listenerIds) =>\n ifNotUndefined(mapGet(storeListenerIds, id), (allListenerIds) => {\n arrayForEach(\n arrayIsEmpty(listenerIds) ? collValues(allListenerIds) : listenerIds,\n (listenerId) => {\n store.delListener(listenerId);\n collDel(allListenerIds, listenerId);\n },\n );\n if (collIsEmpty(allListenerIds)) {\n mapSet(storeListenerIds, id);\n }\n });\n const setDefinition = (id, tableId) => {\n mapSet(tableIds, id, tableId);\n if (!collHas(things, id)) {\n mapSet(things, id, getDefaultThing());\n mapSet(allRowValues, id, mapNew());\n mapSet(allSortKeys, id, mapNew());\n callListeners(thingIdListeners);\n }\n };\n const setDefinitionAndListen = (\n id,\n tableId,\n onChanged,\n getRowValue,\n getSortKey,\n ) => {\n setDefinition(id, tableId);\n const changedRowValues = mapNew();\n const changedSortKeys = mapNew();\n const rowValues = mapGet(allRowValues, id);\n const sortKeys = mapGet(allSortKeys, id);\n const processRow = (rowId) => {\n const getCell = (cellId) => store.getCell(tableId, rowId, cellId);\n const oldRowValue = mapGet(rowValues, rowId);\n const newRowValue = hasRow(tableId, rowId)\n ? validateRowValue(getRowValue(getCell, rowId))\n : void 0;\n if (\n !(\n oldRowValue === newRowValue ||\n (isArray(oldRowValue) &&\n isArray(newRowValue) &&\n arrayIsEqual(oldRowValue, newRowValue))\n )\n ) {\n mapSet(changedRowValues, rowId, [oldRowValue, newRowValue]);\n }\n if (!isUndefined(getSortKey)) {\n const oldSortKey = mapGet(sortKeys, rowId);\n const newSortKey = hasRow(tableId, rowId)\n ? getSortKey(getCell, rowId)\n : void 0;\n if (oldSortKey != newSortKey) {\n mapSet(changedSortKeys, rowId, newSortKey);\n }\n }\n };\n const processTable = (force) => {\n onChanged(\n () => {\n collForEach(changedRowValues, ([, newRowValue], rowId) =>\n mapSet(rowValues, rowId, newRowValue),\n );\n collForEach(changedSortKeys, (newSortKey, rowId) =>\n mapSet(sortKeys, rowId, newSortKey),\n );\n },\n changedRowValues,\n changedSortKeys,\n rowValues,\n sortKeys,\n force,\n );\n collClear(changedRowValues);\n collClear(changedSortKeys);\n };\n mapForEach(rowValues, processRow);\n if (store.hasTable(tableId)) {\n arrayForEach(store.getRowIds(tableId), (rowId) => {\n if (!collHas(rowValues, rowId)) {\n processRow(rowId);\n }\n });\n }\n processTable(true);\n delStoreListeners(id);\n addStoreListeners(\n id,\n 0,\n store.addRowListener(tableId, null, (_store, _tableId, rowId) =>\n processRow(rowId),\n ),\n store.addTableListener(tableId, () => processTable()),\n );\n };\n const delDefinition = (id) => {\n mapSet(tableIds, id);\n mapSet(things, id);\n mapSet(allRowValues, id);\n mapSet(allSortKeys, id);\n delStoreListeners(id);\n callListeners(thingIdListeners);\n };\n const addThingIdsListener = (listener) =>\n addListener(listener, thingIdListeners);\n const destroy = () => mapForEach(storeListenerIds, delDefinition);\n return [\n getStore,\n getThingIds,\n forEachThing,\n hasThing,\n getTableId,\n getThing,\n setThing,\n setDefinition,\n setDefinitionAndListen,\n delDefinition,\n addThingIdsListener,\n destroy,\n addStoreListeners,\n delStoreListeners,\n ];\n};\nconst getRowCellFunction = (getRowCell, defaultCellValue) =>\n isString(getRowCell)\n ? (getCell) => getCell(getRowCell)\n : (getRowCell ?? (() => defaultCellValue ?? EMPTY_STRING));\nconst getCreateFunction = (getFunction, initFunction) => {\n const thingsByStore = /* @__PURE__ */ new WeakMap();\n return (store) => {\n if (!thingsByStore.has(store)) {\n thingsByStore.set(store, getFunction(store));\n }\n const thing = thingsByStore.get(store);\n initFunction?.(thing);\n return thing;\n };\n};\n\nconst INTEGER = /^\\d+$/;\nconst getPoolFunctions = () => {\n const pool = [];\n let nextId = 0;\n return [\n (reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,\n (id) => {\n if (test(INTEGER, id) && size(pool) < 1e3) {\n arrayPush(pool, id);\n }\n },\n ];\n};\n\nconst getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {\n const leaves = [];\n const deep = (node, p) =>\n p == size(path)\n ? arrayPush(leaves, node)\n : path[p] === null\n ? collForEach(node, (node2) => deep(node2, p + 1))\n : arrayForEach([path[p], null], (id) => deep(mapGet(node, id), p + 1));\n deep(deepIdSet, 0);\n return leaves;\n};\nconst getListenerFunctions = (getThing) => {\n let thing;\n const [getId, releaseId] = getPoolFunctions();\n const allListeners = mapNew();\n const addListener = (\n listener,\n idSetNode,\n path,\n pathGetters = [],\n extraArgsGetter = () => [],\n ) => {\n thing ??= getThing();\n const id = getId(1);\n mapSet(allListeners, id, [\n listener,\n idSetNode,\n path,\n pathGetters,\n extraArgsGetter,\n ]);\n setAdd(visitTree(idSetNode, path ?? [EMPTY_STRING], setNew), id);\n return id;\n };\n const callListeners = (idSetNode, ids, ...extraArgs) =>\n arrayForEach(getWildcardedLeaves(idSetNode, ids), (set) =>\n collForEach(set, (id) =>\n mapGet(allListeners, id)[0](thing, ...(ids ?? []), ...extraArgs),\n ),\n );\n const delListener = (id) =>\n ifNotUndefined(mapGet(allListeners, id), ([, idSetNode, idOrNulls]) => {\n visitTree(idSetNode, idOrNulls ?? [EMPTY_STRING], void 0, (idSet) => {\n collDel(idSet, id);\n return collIsEmpty(idSet) ? 1 : 0;\n });\n mapSet(allListeners, id);\n releaseId(id);\n return idOrNulls;\n });\n const callListener = (id) =>\n ifNotUndefined(\n mapGet(allListeners, id),\n ([listener, , path = [], pathGetters, extraArgsGetter]) => {\n const callWithIds = (...ids) => {\n const index = size(ids);\n if (index == size(path)) {\n listener(thing, ...ids, ...extraArgsGetter(ids));\n } else if (isUndefined(path[index])) {\n arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>\n callWithIds(...ids, id2),\n );\n } else {\n callWithIds(...ids, path[index]);\n }\n };\n callWithIds();\n },\n );\n return [addListener, callListeners, delListener, callListener];\n};\n\nconst createCheckpoints = getCreateFunction(\n (store) => {\n let backwardIdsSize = 100;\n let currentId;\n let cellsDelta = mapNew();\n let valuesDelta = mapNew();\n let listening = 1;\n let nextCheckpointId;\n let checkpointsChanged;\n const checkpointIdsListeners = mapNew();\n const checkpointListeners = mapNew();\n const [addListener, callListeners, delListenerImpl] = getListenerFunctions(\n () => checkpoints,\n );\n const deltas = mapNew();\n const labels = mapNew();\n const backwardIds = [];\n const forwardIds = [];\n const updateStore = (oldOrNew, checkpointId) => {\n listening = 0;\n store.transaction(() => {\n const [cellsDelta2, valuesDelta2] = mapGet(deltas, checkpointId);\n collForEach(cellsDelta2, (table, tableId) =>\n collForEach(table, (row, rowId) =>\n collForEach(row, (oldNew, cellId) =>\n setOrDelCell(store, tableId, rowId, cellId, oldNew[oldOrNew]),\n ),\n ),\n );\n collForEach(valuesDelta2, (oldNew, valueId) =>\n setOrDelValue(store, valueId, oldNew[oldOrNew]),\n );\n });\n listening = 1;\n };\n const clearCheckpointId = (checkpointId) => {\n mapSet(deltas, checkpointId);\n mapSet(labels, checkpointId);\n callListeners(checkpointListeners, [checkpointId]);\n };\n const clearCheckpointIds = (checkpointIds, to) =>\n arrayForEach(\n arrayClear(checkpointIds, to ?? size(checkpointIds)),\n clearCheckpointId,\n );\n const trimBackwardsIds = () =>\n clearCheckpointIds(backwardIds, size(backwardIds) - backwardIdsSize);\n const storeChanged = () =>\n ifNotUndefined(currentId, () => {\n arrayPush(backwardIds, currentId);\n trimBackwardsIds();\n clearCheckpointIds(forwardIds);\n currentId = void 0;\n checkpointsChanged = 1;\n });\n const storeUnchanged = () => {\n currentId = arrayPop(backwardIds);\n checkpointsChanged = 1;\n };\n let cellListenerId;\n let valueListenerId;\n const addCheckpointImpl = (label = EMPTY_STRING) => {\n if (isUndefined(currentId)) {\n currentId = EMPTY_STRING + nextCheckpointId++;\n mapSet(deltas, currentId, [cellsDelta, valuesDelta]);\n setCheckpoint(currentId, label);\n cellsDelta = mapNew();\n valuesDelta = mapNew();\n checkpointsChanged = 1;\n }\n return currentId;\n };\n const goBackwardImpl = () => {\n if (!arrayIsEmpty(backwardIds)) {\n arrayUnshift(forwardIds, addCheckpointImpl());\n updateStore(0, currentId);\n currentId = arrayPop(backwardIds);\n checkpointsChanged = 1;\n }\n };\n const goForwardImpl = () => {\n if (!arrayIsEmpty(forwardIds)) {\n arrayPush(backwardIds, currentId);\n currentId = arrayShift(forwardIds);\n updateStore(1, currentId);\n checkpointsChanged = 1;\n }\n };\n const callListenersIfChanged = () => {\n if (checkpointsChanged) {\n callListeners(checkpointIdsListeners);\n checkpointsChanged = 0;\n }\n };\n const setSize = (size2) => {\n backwardIdsSize = size2;\n trimBackwardsIds();\n return checkpoints;\n };\n const addCheckpoint = (label) => {\n const id = addCheckpointImpl(label);\n callListenersIfChanged();\n return id;\n };\n const setCheckpoint = (checkpointId, label) => {\n if (\n hasCheckpoint(checkpointId) &&\n mapGet(labels, checkpointId) !== label\n ) {\n mapSet(labels, checkpointId, label);\n callListeners(checkpointListeners, [checkpointId]);\n }\n return checkpoints;\n };\n const getStore = () => store;\n const getCheckpointIds = () => [\n [...backwardIds],\n currentId,\n [...forwardIds],\n ];\n const forEachCheckpoint = (checkpointCallback) =>\n mapForEach(labels, checkpointCallback);\n const hasCheckpoint = (checkpointId) => collHas(deltas, checkpointId);\n const getCheckpoint = (checkpointId) => mapGet(labels, checkpointId);\n const goBackward = () => {\n goBackwardImpl();\n callListenersIfChanged();\n return checkpoints;\n };\n const goForward = () => {\n goForwardImpl();\n callListenersIfChanged();\n return checkpoints;\n };\n const goTo = (checkpointId) => {\n const action = arrayHas(backwardIds, checkpointId)\n ? goBackwardImpl\n : arrayHas(forwardIds, checkpointId)\n ? goForwardImpl\n : null;\n while (!isUndefined(action) && checkpointId != currentId) {\n action();\n }\n callListenersIfChanged();\n return checkpoints;\n };\n const addCheckpointIdsListener = (listener) =>\n addListener(listener, checkpointIdsListeners);\n const addCheckpointListener = (checkpointId, listener) =>\n addListener(listener, checkpointListeners, [checkpointId]);\n const delListener = (listenerId) => {\n delListenerImpl(listenerId);\n return checkpoints;\n };\n const clear = () => {\n clearCheckpointIds(backwardIds);\n clearCheckpointIds(forwardIds);\n if (!isUndefined(currentId)) {\n clearCheckpointId(currentId);\n }\n currentId = void 0;\n nextCheckpointId = 0;\n addCheckpoint();\n return checkpoints;\n };\n const clearForward = () => {\n if (!arrayIsEmpty(forwardIds)) {\n clearCheckpointIds(forwardIds);\n callListeners(checkpointIdsListeners);\n }\n return checkpoints;\n };\n const destroy = () => {\n store.delListener(cellListenerId);\n store.delListener(valueListenerId);\n };\n const getListenerStats = () => ({\n checkpointIds: collSize2(checkpointIdsListeners),\n checkpoint: collSize2(checkpointListeners),\n });\n const _registerListeners = () => {\n cellListenerId = store.addCellListener(\n null,\n null,\n null,\n (_store, tableId, rowId, cellId, newCell, oldCell) => {\n if (listening) {\n storeChanged();\n const table = mapEnsure(cellsDelta, tableId, mapNew);\n const row = mapEnsure(table, rowId, mapNew);\n const oldNew = mapEnsure(row, cellId, () => [oldCell, void 0]);\n oldNew[1] = newCell;\n if (\n oldNew[0] === newCell &&\n collIsEmpty(mapSet(row, cellId)) &&\n collIsEmpty(mapSet(table, rowId)) &&\n collIsEmpty(mapSet(cellsDelta, tableId))\n ) {\n storeUnchanged();\n }\n callListenersIfChanged();\n }\n },\n );\n valueListenerId = store.addValueListener(\n null,\n (_store, valueId, newValue, oldValue) => {\n if (listening) {\n storeChanged();\n const oldNew = mapEnsure(valuesDelta, valueId, () => [\n oldValue,\n void 0,\n ]);\n oldNew[1] = newValue;\n if (\n oldNew[0] === newValue &&\n collIsEmpty(mapSet(valuesDelta, valueId))\n ) {\n storeUnchanged();\n }\n callListenersIfChanged();\n }\n },\n );\n };\n const checkpoints = {\n setSize,\n addCheckpoint,\n setCheckpoint,\n getStore,\n getCheckpointIds,\n forEachCheckpoint,\n hasCheckpoint,\n getCheckpoint,\n goBackward,\n goForward,\n goTo,\n addCheckpointIdsListener,\n addCheckpointListener,\n delListener,\n clear,\n clearForward,\n destroy,\n getListenerStats,\n _registerListeners,\n };\n return objFreeze(checkpoints.clear());\n },\n (checkpoints) => checkpoints._registerListeners(),\n);\n\nconst MASK6 = 63;\nconst ENCODE = /* @__PURE__ */ strSplit(\n '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz',\n);\nconst DECODE = /* @__PURE__ */ mapNew(\n /* @__PURE__ */ arrayMap(ENCODE, (char, index) => [char, index]),\n);\nconst encode = (num) => ENCODE[num & MASK6];\nconst decode = (str, pos) => mapGet(DECODE, str[pos]) ?? 0;\n\nconst getRandomValues = GLOBAL.crypto\n ? (array) => GLOBAL.crypto.getRandomValues(array)\n : /* istanbul ignore next */\n (array) => arrayMap(array, () => mathFloor(math.random() * 256));\nconst defaultSorter = (sortKey1, sortKey2) =>\n (sortKey1 ?? 0) < (sortKey2 ?? 0) ? -1 : 1;\nconst getUniqueId = (length = 16) =>\n arrayReduce(\n getRandomValues(new Uint8Array(length)),\n (uniqueId, number) => uniqueId + encode(number),\n '',\n );\n\nconst createIndexes = getCreateFunction((store) => {\n const sliceIdsListeners = mapNew();\n const sliceRowIdsListeners = mapNew();\n const [addListener, callListeners, delListenerImpl] = getListenerFunctions(\n () => indexes,\n );\n const [\n getStore,\n getIndexIds,\n forEachIndexImpl,\n hasIndex,\n getTableId,\n getIndex,\n setIndex,\n ,\n setDefinitionAndListen,\n delDefinition,\n addIndexIdsListener,\n destroy,\n ] = getDefinableFunctions(\n store,\n mapNew,\n (value) =>\n isUndefined(value)\n ? EMPTY_STRING\n : isArray(value)\n ? arrayMap(value, id)\n : id(value),\n addListener,\n callListeners,\n );\n const hasSlice = (indexId, sliceId) => collHas(getIndex(indexId), sliceId);\n const setIndexDefinition = (\n indexId,\n tableId,\n getSliceIdOrIds,\n getSortKey,\n sliceIdSorter,\n rowIdSorter = defaultSorter,\n ) => {\n const sliceIdArraySorter = isUndefined(sliceIdSorter)\n ? void 0\n : ([id1], [id2]) => sliceIdSorter(id1, id2);\n setDefinitionAndListen(\n indexId,\n tableId,\n (change, changedSliceIds, changedSortKeys, sliceIds, sortKeys, force) => {\n let sliceIdsChanged = 0;\n const changedSlices = setNew();\n const unsortedSlices = setNew();\n const index = getIndex(indexId);\n collForEach(\n changedSliceIds,\n ([oldSliceIdOrIds, newSliceIdOrIds], rowId) => {\n const oldSliceIds = setNew(oldSliceIdOrIds);\n const newSliceIds = setNew(newSliceIdOrIds);\n collForEach(oldSliceIds, (oldSliceId) =>\n collDel(newSliceIds, oldSliceId)\n ? collDel(oldSliceIds, oldSliceId)\n : 0,\n );\n collForEach(oldSliceIds, (oldSliceId) => {\n setAdd(changedSlices, oldSliceId);\n ifNotUndefined(mapGet(index, oldSliceId), (oldSlice) => {\n collDel(oldSlice, rowId);\n if (collIsEmpty(oldSlice)) {\n mapSet(index, oldSliceId);\n sliceIdsChanged = 1;\n }\n });\n });\n collForEach(newSliceIds, (newSliceId) => {\n setAdd(changedSlices, newSliceId);\n if (!collHas(index, newSliceId)) {\n mapSet(index, newSliceId, setNew());\n sliceIdsChanged = 1;\n }\n setAdd(mapGet(index, newSliceId), rowId);\n if (!isUndefined(getSortKey)) {\n setAdd(unsortedSlices, newSliceId);\n }\n });\n },\n );\n change();\n if (!collIsEmpty(sortKeys)) {\n if (force) {\n mapForEach(index, (sliceId) => setAdd(unsortedSlices, sliceId));\n } else {\n mapForEach(changedSortKeys, (rowId) =>\n ifNotUndefined(mapGet(sliceIds, rowId), (sliceId) =>\n setAdd(unsortedSlices, sliceId),\n ),\n );\n }\n collForEach(unsortedSlices, (sliceId) => {\n const rowIdArraySorter = (rowId1, rowId2) =>\n rowIdSorter(\n mapGet(sortKeys, rowId1),\n mapGet(sortKeys, rowId2),\n sliceId,\n );\n const sliceArray = [...mapGet(index, sliceId)];\n if (!arrayIsSorted(sliceArray, rowIdArraySorter)) {\n mapSet(\n index,\n sliceId,\n setNew(arraySort(sliceArray, rowIdArraySorter)),\n );\n setAdd(changedSlices, sliceId);\n }\n });\n }\n if (sliceIdsChanged || force) {\n if (!isUndefined(sliceIdArraySorter)) {\n const indexArray = [...index];\n if (!arrayIsSorted(indexArray, sliceIdArraySorter)) {\n setIndex(\n indexId,\n mapNew(arraySort(indexArray, sliceIdArraySorter)),\n );\n sliceIdsChanged = 1;\n }\n }\n }\n if (sliceIdsChanged) {\n callListeners(sliceIdsListeners, [indexId]);\n }\n collForEach(changedSlices, (sliceId) =>\n callListeners(sliceRowIdsListeners, [indexId, sliceId]),\n );\n },\n getRowCellFunction(getSliceIdOrIds),\n ifNotUndefined(getSortKey, getRowCellFunction),\n );\n return indexes;\n };\n const forEachIndex = (indexCallback) =>\n forEachIndexImpl((indexId, slices) =>\n indexCallback(indexId, (sliceCallback) =>\n forEachSliceImpl(indexId, sliceCallback, slices),\n ),\n );\n const forEachSlice = (indexId, sliceCallback) =>\n forEachSliceImpl(indexId, sliceCallback, getIndex(indexId));\n const forEachSliceImpl = (indexId, sliceCallback, slices) => {\n const tableId = getTableId(indexId);\n collForEach(slices, (rowIds, sliceId) =>\n sliceCallback(sliceId, (rowCallback) =>\n collForEach(rowIds, (rowId) =>\n rowCallback(rowId, (cellCallback) =>\n store.forEachCell(tableId, rowId, cellCallback),\n ),\n ),\n ),\n );\n };\n const delIndexDefinition = (indexId) => {\n delDefinition(indexId);\n return indexes;\n };\n const getSliceIds = (indexId) => mapKeys(getIndex(indexId));\n const getSliceRowIds = (indexId, sliceId) =>\n collValues(mapGet(getIndex(indexId), sliceId));\n const addSliceIdsListener = (indexId, listener) =>\n addListener(listener, sliceIdsListeners, [indexId]);\n const addSliceRowIdsListener = (indexId, sliceId, listener) =>\n addListener(listener, sliceRowIdsListeners, [indexId, sliceId]);\n const delListener = (listenerId) => {\n delListenerImpl(listenerId);\n return indexes;\n };\n const getListenerStats = () => ({\n sliceIds: collSize2(sliceIdsListeners),\n sliceRowIds: collSize3(sliceRowIdsListeners),\n });\n const indexes = {\n setIndexDefinition,\n delIndexDefinition,\n getStore,\n getIndexIds,\n forEachIndex,\n forEachSlice,\n hasIndex,\n hasSlice,\n getTableId,\n getSliceIds,\n getSliceRowIds,\n addIndexIdsListener,\n addSliceIdsListener,\n addSliceRowIdsListener,\n delListener,\n destroy,\n getListenerStats,\n };\n return objFreeze(indexes);\n});\n\nconst numericAggregators = /* @__PURE__ */ mapNew([\n [\n AVG,\n [\n (numbers, length) => arraySum(numbers) / length,\n (metric, add, length) => metric + (add - metric) / (length + 1),\n (metric, remove, length) => metric + (metric - remove) / (length - 1),\n (metric, add, remove, length) => metric + (add - remove) / length,\n ],\n ],\n [\n MAX,\n [\n (numbers) => mathMax(...numbers),\n (metric, add) => mathMax(add, metric),\n (metric, remove) => (remove == metric ? void 0 : metric),\n (metric, add, remove) =>\n remove == metric ? void 0 : mathMax(add, metric),\n ],\n ],\n [\n MIN,\n [\n (numbers) => mathMin(...numbers),\n (metric, add) => mathMin(add, metric),\n (metric, remove) => (remove == metric ? void 0 : metric),\n (metric, add, remove) =>\n remove == metric ? void 0 : mathMin(add, metric),\n ],\n ],\n [\n SUM,\n [\n (numbers) => arraySum(numbers),\n (metric, add) => metric + add,\n (metric, remove) => metric - remove,\n (metric, add, remove) => metric - remove + add,\n ],\n ],\n]);\nconst getAggregateValue = (\n aggregateValue,\n oldLength,\n newValues,\n changedValues,\n aggregators,\n force = false,\n) => {\n if (collIsEmpty(newValues)) {\n return void 0;\n }\n const [aggregate, aggregateAdd, aggregateRemove, aggregateReplace] =\n aggregators;\n force ||= isUndefined(aggregateValue);\n collForEach(changedValues, ([oldValue, newValue]) => {\n if (!force) {\n aggregateValue = isUndefined(oldValue)\n ? aggregateAdd?.(aggregateValue, newValue, oldLength++)\n : isUndefined(newValue)\n ? aggregateRemove?.(aggregateValue, oldValue, oldLength--)\n : aggregateReplace?.(aggregateValue, newValue, oldValue, oldLength);\n force ||= isUndefined(aggregateValue);\n }\n });\n return force\n ? aggregate(collValues(newValues), collSize(newValues))\n : aggregateValue;\n};\n\nconst createMetrics = getCreateFunction((store) => {\n const metricListeners = mapNew();\n const [addListener, callListeners, delListenerImpl] = getListenerFunctions(\n () => metrics,\n );\n const [\n getStore,\n getMetricIds,\n forEachMetric,\n hasMetric,\n getTableId,\n getMetric,\n setMetric,\n ,\n setDefinitionAndListen,\n delDefinition,\n addMetricIdsListener,\n destroy,\n ] = getDefinableFunctions(\n store,\n getUndefined,\n (value) =>\n isNaN(value) ||\n isUndefined(value) ||\n value === true ||\n value === false ||\n value === EMPTY_STRING\n ? void 0\n : value * 1,\n addListener,\n callListeners,\n );\n const setMetricDefinition = (\n metricId,\n tableId,\n aggregate,\n getNumber,\n aggregateAdd,\n aggregateRemove,\n aggregateReplace,\n ) => {\n const aggregators = isFunction(aggregate)\n ? [aggregate, aggregateAdd, aggregateRemove, aggregateReplace]\n : (mapGet(numericAggregators, aggregate) ??\n mapGet(numericAggregators, SUM));\n setDefinitionAndListen(\n metricId,\n tableId,\n (change, changedNumbers, _changedSortKeys, numbers, _sortKeys, force) => {\n const oldMetric = getMetric(metricId);\n const oldLength = collSize(numbers);\n force ||= isUndefined(oldMetric);\n change();\n let newMetric = getAggregateValue(\n oldMetric,\n oldLength,\n numbers,\n changedNumbers,\n aggregators,\n force,\n );\n if (!isFiniteNumber(newMetric)) {\n newMetric = void 0;\n }\n if (newMetric != oldMetric) {\n setMetric(metricId, newMetric);\n callListeners(metricListeners, [metricId], newMetric, oldMetric);\n }\n },\n getRowCellFunction(getNumber, 1),\n );\n return metrics;\n };\n const delMetricDefinition = (metricId) => {\n delDefinition(metricId);\n return metrics;\n };\n const addMetricListener = (metricId, listener) =>\n addListener(listener, metricListeners, [metricId]);\n const delListener = (listenerId) => {\n delListenerImpl(listenerId);\n return metrics;\n };\n const getListenerStats = () => ({\n metric: collSize2(metricListeners),\n });\n const metrics = {\n setMetricDefinition,\n delMetricDefinition,\n getStore,\n getMetricIds,\n forEachMetric,\n hasMetric,\n getTableId,\n getMetric,\n addMetricIdsListener,\n addMetricListener,\n delListener,\n destroy,\n getListenerStats,\n };\n return objFreeze(metrics);\n});\n\nconst createQueries = getCreateFunction((store) => {\n const createStore = store.createStore;\n const preStore = createStore();\n const resultStore = createStore();\n const preStoreListenerIds = mapNew();\n const {\n addListener,\n callListeners,\n delListener: delListenerImpl,\n } = resultStore;\n const [\n getStore,\n getQueryIds,\n forEachQuery,\n hasQuery,\n getTableId,\n ,\n ,\n setDefinition,\n ,\n delDefinition,\n addQueryIdsListenerImpl,\n destroy,\n addStoreListeners,\n delStoreListeners,\n ] = getDefinableFunctions(\n store,\n () => true,\n getUndefined,\n addListener,\n callListeners,\n );\n const addPreStoreListener = (preStore2, queryId, ...listenerIds) =>\n arrayForEach(listenerIds, (listenerId) =>\n setAdd(\n mapEnsure(\n mapEnsure(preStoreListenerIds, queryId, mapNew),\n preStore2,\n setNew,\n ),\n listenerId,\n ),\n );\n const resetPreStores = (queryId) => {\n ifNotUndefined(\n mapGet(preStoreListenerIds, queryId),\n (queryPreStoreListenerIds) => {\n mapForEach(queryPreStoreListenerIds, (preStore2, listenerIds) =>\n collForEach(listenerIds, (listenerId) =>\n preStore2.delListener(listenerId),\n ),\n );\n collClear(queryPreStoreListenerIds);\n },\n );\n arrayForEach([resultStore, preStore], (store2) => store2.delTable(queryId));\n };\n const synchronizeTransactions = (queryId, fromStore, toStore) =>\n addPreStoreListener(\n fromStore,\n queryId,\n fromStore.addStartTransactionListener(toStore.startTransaction),\n fromStore.addDidFinishTransactionListener(() =>\n toStore.finishTransaction(),\n ),\n );\n const setQueryDefinition = (queryId, tableId, build) => {\n setDefinition(queryId, tableId);\n resetPreStores(queryId);\n const selectEntries = [];\n const joinEntries = [[null, [tableId, null, null, [], mapNew()]]];\n const wheres = [];\n const groupEntries = [];\n const havings = [];\n const select = (arg1, arg2) => {\n const selectEntry = isFunction(arg1)\n ? [size(selectEntries) + EMPTY_STRING, arg1]\n : [\n isUndefined(arg2) ? arg1 : arg2,\n (getTableCell) => getTableCell(arg1, arg2),\n ];\n arrayPush(selectEntries, selectEntry);\n return {as: (selectedCellId) => (selectEntry[0] = selectedCellId)};\n };\n const join = (joinedTableId, arg1, arg2) => {\n const fromIntermediateJoinedTableId =\n isUndefined(arg2) || isFunction(arg1) ? null : arg1;\n const onArg = isUndefined(fromIntermediateJoinedTableId) ? arg1 : arg2;\n const joinEntry = [\n joinedTableId,\n [\n joinedTableId,\n fromIntermediateJoinedTableId,\n isFunction(onArg) ? onArg : (getCell) => getCell(onArg),\n [],\n mapNew(),\n ],\n ];\n arrayPush(joinEntries, joinEntry);\n return {as: (joinedTableId2) => (joinEntry[0] = joinedTableId2)};\n };\n const where = (arg1, arg2, arg3) =>\n arrayPush(\n wheres,\n isFunction(arg1)\n ? arg1\n : isUndefined(arg3)\n ? (getTableCell) => getTableCell(arg1) === arg2\n : (getTableCell) => getTableCell(arg1, arg2) === arg3,\n );\n const group = (\n selectedCellId,\n aggregate,\n aggregateAdd,\n aggregateRemove,\n aggregateReplace,\n ) => {\n const groupEntry = [\n selectedCellId,\n [\n selectedCellId,\n isFunction(aggregate)\n ? [aggregate, aggregateAdd, aggregateRemove, aggregateReplace]\n : (mapGet(numericAggregators, aggregate) ?? [\n (_cells, length) => length,\n ]),\n ],\n ];\n arrayPush(groupEntries, groupEntry);\n return {as: (groupedCellId) => (groupEntry[0] = groupedCellId)};\n };\n const having = (arg1, arg2) =>\n arrayPush(\n havings,\n isFunction(arg1)\n ? arg1\n : (getSelectedOrGroupedCell) =>\n getSelectedOrGroupedCell(arg1) === arg2,\n );\n build({select, join, where, group, having});\n const selects = mapNew(selectEntries);\n if (collIsEmpty(selects)) {\n return queries;\n }\n const joins = mapNew(joinEntries);\n mapForEach(joins, (asTableId, [, fromAsTableId]) =>\n ifNotUndefined(mapGet(joins, fromAsTableId), ({3: toAsTableIds}) =>\n isUndefined(asTableId) ? 0 : arrayPush(toAsTableIds, asTableId),\n ),\n );\n const groups = mapNew(groupEntries);\n let selectJoinWhereStore = preStore;\n if (collIsEmpty(groups) && arrayIsEmpty(havings)) {\n selectJoinWhereStore = resultStore;\n } else {\n synchronizeTransactions(queryId, selectJoinWhereStore, resultStore);\n const groupedSelectedCellIds = mapNew();\n mapForEach(groups, (groupedCellId, [selectedCellId, aggregators]) =>\n setAdd(mapEnsure(groupedSelectedCellIds, selectedCellId, setNew), [\n groupedCellId,\n aggregators,\n ]),\n );\n const groupBySelectedCellIds = setNew();\n mapForEach(selects, (selectedCellId) =>\n collHas(groupedSelectedCellIds, selectedCellId)\n ? 0\n : setAdd(groupBySelectedCellIds, selectedCellId),\n );\n const tree = mapNew();\n const writeGroupRow = (\n leaf,\n changedGroupedSelectedCells,\n selectedRowId,\n forceRemove,\n ) =>\n ifNotUndefined(\n leaf,\n ([selectedCells, selectedRowIds, groupRowId, groupRow]) => {\n mapForEach(\n changedGroupedSelectedCells,\n (selectedCellId, [newCell]) => {\n const selectedCell = mapEnsure(\n selectedCells,\n selectedCellId,\n mapNew,\n );\n const oldLeafCell = mapGet(selectedCell, selectedRowId);\n const newLeafCell = forceRemove ? void 0 : newCell;\n if (oldLeafCell !== newLeafCell) {\n const oldNewSet = setNew([[oldLeafCell, newLeafCell]]);\n const oldLength = collSize(selectedCell);\n mapSet(selectedCell, selectedRowId, newLeafCell);\n collForEach(\n mapGet(groupedSelectedCellIds, selectedCellId),\n ([groupedCellId, aggregators]) => {\n const aggregateValue = getAggregateValue(\n groupRow[groupedCellId],\n oldLength,\n selectedCell,\n oldNewSet,\n aggregators,\n );\n groupRow[groupedCellId] = isUndefined(\n getCellOrValueType(aggregateValue),\n )\n ? null\n : aggregateValue;\n },\n );\n }\n },\n );\n if (\n collIsEmpty(selectedRowIds) ||\n !arrayEvery(havings, (having2) =>\n having2((cellId) => groupRow[cellId]),\n )\n ) {\n resultStore.delRow(queryId, groupRowId);\n } else if (isUndefined(groupRowId)) {\n leaf[2] = resultStore.addRow(queryId, groupRow);\n } else {\n resultStore.setRow(queryId, groupRowId, groupRow);\n }\n },\n );\n addPreStoreListener(\n selectJoinWhereStore,\n queryId,\n selectJoinWhereStore.addRowListener(\n queryId,\n null,\n (_store, _tableId, selectedRowId, getCellChange) => {\n const oldPath = [];\n const newPath = [];\n const changedGroupedSelectedCells = mapNew();\n const rowExists = selectJoinWhereStore.hasRow(\n queryId,\n selectedRowId,\n );\n let changedLeaf = !rowExists;\n collForEach(groupBySelectedCellIds, (selectedCellId) => {\n const [changed, oldCell, newCell] = getCellChange(\n queryId,\n selectedRowId,\n selectedCellId,\n );\n arrayPush(oldPath, oldCell);\n arrayPush(newPath, newCell);\n changedLeaf ||= changed;\n });\n mapForEach(groupedSelectedCellIds, (selectedCellId) => {\n const [changed, , newCell] = getCellChange(\n queryId,\n selectedRowId,\n selectedCellId,\n );\n if (changedLeaf || changed) {\n mapSet(changedGroupedSelectedCells, selectedCellId, [newCell]);\n }\n });\n if (changedLeaf) {\n writeGroupRow(\n visitTree(tree, oldPath, void 0, ([, selectedRowIds]) => {\n collDel(selectedRowIds, selectedRowId);\n return collIsEmpty(selectedRowIds);\n }),\n changedGroupedSelectedCells,\n selectedRowId,\n 1,\n );\n }\n if (rowExists) {\n writeGroupRow(\n visitTree(\n tree,\n newPath,\n () => {\n const groupRow = {};\n collForEach(\n groupBySelectedCellIds,\n (selectedCellId) =>\n (groupRow[selectedCellId] =\n selectJoinWhereStore.getCell(\n queryId,\n selectedRowId,\n selectedCellId,\n )),\n );\n return [mapNew(), setNew(), void 0, groupRow];\n },\n ([, selectedRowIds]) => {\n setAdd(selectedRowIds, selectedRowId);\n },\n ),\n changedGroupedSelectedCells,\n selectedRowId,\n );\n }\n },\n ),\n );\n }\n synchronizeTransactions(queryId, store, selectJoinWhereStore);\n const writeSelectRow = (rootRowId) => {\n const getTableCell = (arg1, arg2) =>\n store.getCell(\n ...(isUndefined(arg2)\n ? [tableId, rootRowId, arg1]\n : arg1 === tableId\n ? [tableId, rootRowId, arg2]\n : [\n mapGet(joins, arg1)?.[0],\n mapGet(mapGet(joins, arg1)?.[4], rootRowId)?.[0],\n arg2,\n ]),\n );\n selectJoinWhereStore.transaction(() =>\n arrayEvery(wheres, (where2) => where2(getTableCell))\n ? mapForEach(selects, (asCellId, tableCellGetter) =>\n setOrDelCell(\n selectJoinWhereStore,\n queryId,\n rootRowId,\n asCellId,\n tableCellGetter(getTableCell, rootRowId),\n ),\n )\n : selectJoinWhereStore.delRow(queryId, rootRowId),\n );\n };\n const listenToTable = (rootRowId, tableId2, rowId, joinedTableIds2) => {\n const getCell = (cellId) => store.getCell(tableId2, rowId, cellId);\n arrayForEach(joinedTableIds2, (remoteAsTableId) => {\n const [realJoinedTableId, , on, nextJoinedTableIds, remoteIdPair] =\n mapGet(joins, remoteAsTableId);\n const remoteRowId = on?.(getCell, rootRowId);\n const [previousRemoteRowId, previousRemoteListenerId] =\n mapGet(remoteIdPair, rootRowId) ?? [];\n if (remoteRowId != previousRemoteRowId) {\n if (!isUndefined(previousRemoteListenerId)) {\n delStoreListeners(queryId, previousRemoteListenerId);\n }\n mapSet(\n remoteIdPair,\n rootRowId,\n isUndefined(remoteRowId)\n ? null\n : [\n remoteRowId,\n ...addStoreListeners(\n queryId,\n 1,\n store.addRowListener(realJoinedTableId, remoteRowId, () =>\n listenToTable(\n rootRowId,\n realJoinedTableId,\n remoteRowId,\n nextJoinedTableIds,\n ),\n ),\n ),\n ],\n );\n }\n });\n writeSelectRow(rootRowId);\n };\n const {3: joinedTableIds} = mapGet(joins, null);\n selectJoinWhereStore.transaction(() =>\n addStoreListeners(\n queryId,\n 1,\n store.addRowListener(tableId, null, (_store, _tableId, rootRowId) => {\n if (store.hasRow(tableId, rootRowId)) {\n listenToTable(rootRowId, tableId, rootRowId, joinedTableIds);\n } else {\n selectJoinWhereStore.delRow(queryId, rootRowId);\n collForEach(joins, ({4: idsByRootRowId}) =>\n ifNotUndefined(\n mapGet(idsByRootRowId, rootRowId),\n ([, listenerId]) => {\n delStoreListeners(queryId, listenerId);\n mapSet(idsByRootRowId, rootRowId);\n },\n ),\n );\n }\n }),\n ),\n );\n return queries;\n };\n const delQueryDefinition = (queryId) => {\n resetPreStores(queryId);\n delDefinition(queryId);\n return queries;\n };\n const addQueryIdsListener = (listener) =>\n addQueryIdsListenerImpl(() => listener(queries));\n const delListener = (listenerId) => {\n delListenerImpl(listenerId);\n return queries;\n };\n const getListenerStats = () => {\n const {\n tables: _1,\n tableIds: _2,\n transaction: _3,\n ...stats\n } = resultStore.getListenerStats();\n return stats;\n };\n const queries = {\n setQueryDefinition,\n delQueryDefinition,\n getStore,\n getQueryIds,\n forEachQuery,\n hasQuery,\n getTableId,\n addQueryIdsListener,\n delListener,\n destroy,\n getListenerStats,\n };\n objToArray(\n {\n [TABLE]: [1, 1],\n [TABLE + CELL_IDS]: [0, 1],\n [ROW_COUNT]: [0, 1],\n [ROW_IDS]: [0, 1],\n [SORTED_ROW_IDS]: [0, 5],\n [ROW]: [1, 2],\n [CELL_IDS]: [0, 2],\n [CELL]: [1, 3],\n },\n ([hasAndForEach, argumentCount], gettable) => {\n arrayForEach(\n hasAndForEach ? [GET, 'has', 'forEach'] : [GET],\n (prefix) =>\n (queries[prefix + RESULT + gettable] = (...args) =>\n resultStore[prefix + gettable](...args)),\n );\n queries[ADD + RESULT + gettable + LISTENER] = (...args) =>\n resultStore[ADD + gettable + LISTENER](\n ...slice(args, 0, argumentCount),\n (_store, ...listenerArgs) =>\n args[argumentCount](queries, ...listenerArgs),\n true,\n );\n },\n );\n return objFreeze(queries);\n});\n\nconst createRelationships = getCreateFunction((store) => {\n const remoteTableIds = mapNew();\n const remoteRowIdListeners = mapNew();\n const localRowIdsListeners = mapNew();\n const linkedRowIdsListeners = mapNew();\n const [addListener, callListeners, delListenerImpl] = getListenerFunctions(\n () => relationships,\n );\n const [\n getStore,\n getRelationshipIds,\n forEachRelationshipImpl,\n hasRelationship,\n getLocalTableId,\n getRelationship,\n ,\n ,\n setDefinitionAndListen,\n delDefinition,\n addRelationshipIdsListener,\n destroy,\n ] = getDefinableFunctions(\n store,\n () => [mapNew(), mapNew(), mapNew(), mapNew()],\n (value) => (isUndefined(value) ? void 0 : value + EMPTY_STRING),\n addListener,\n callListeners,\n );\n const getLinkedRowIdsCache = (relationshipId, firstRowId, skipCache) =>\n ifNotUndefined(\n getRelationship(relationshipId),\n ([remoteRows, , linkedRowsCache]) => {\n if (!collHas(linkedRowsCache, firstRowId)) {\n const linkedRows = setNew();\n if (\n getLocalTableId(relationshipId) != getRemoteTableId(relationshipId)\n ) {\n setAdd(linkedRows, firstRowId);\n } else {\n let rowId = firstRowId;\n while (!isUndefined(rowId) && !collHas(linkedRows, rowId)) {\n setAdd(linkedRows, rowId);\n rowId = mapGet(remoteRows, rowId);\n }\n }\n if (skipCache) {\n return linkedRows;\n }\n mapSet(linkedRowsCache, firstRowId, linkedRows);\n }\n return mapGet(linkedRowsCache, firstRowId);\n },\n );\n const delLinkedRowIdsCache = (relationshipId, firstRowId) =>\n ifNotUndefined(getRelationship(relationshipId), ([, , linkedRowsCache]) =>\n mapSet(linkedRowsCache, firstRowId),\n );\n const setRelationshipDefinition = (\n relationshipId,\n localTableId,\n remoteTableId,\n getRemoteRowId2,\n ) => {\n mapSet(remoteTableIds, relationshipId, remoteTableId);\n setDefinitionAndListen(\n relationshipId,\n localTableId,\n (change, changedRemoteRowIds) => {\n const changedLocalRows = setNew();\n const changedRemoteRows = setNew();\n const changedLinkedRows = setNew();\n const [localRows, remoteRows] = getRelationship(relationshipId);\n collForEach(\n changedRemoteRowIds,\n ([oldRemoteRowId, newRemoteRowId], localRowId) => {\n if (!isUndefined(oldRemoteRowId)) {\n setAdd(changedRemoteRows, oldRemoteRowId);\n ifNotUndefined(\n mapGet(remoteRows, oldRemoteRowId),\n (oldRemoteRow) => {\n collDel(oldRemoteRow, localRowId);\n if (collIsEmpty(oldRemoteRow)) {\n mapSet(remoteRows, oldRemoteRowId);\n }\n },\n );\n }\n if (!isUndefined(newRemoteRowId)) {\n setAdd(changedRemoteRows, newRemoteRowId);\n if (!collHas(remoteRows, newRemoteRowId)) {\n mapSet(remoteRows, newRemoteRowId, setNew());\n }\n setAdd(mapGet(remoteRows, newRemoteRowId), localRowId);\n }\n setAdd(changedLocalRows, localRowId);\n mapSet(localRows, localRowId, newRemoteRowId);\n mapForEach(\n mapGet(linkedRowIdsListeners, relationshipId),\n (firstRowId) => {\n if (\n collHas(\n getLinkedRowIdsCache(relationshipId, firstRowId),\n localRowId,\n )\n ) {\n setAdd(changedLinkedRows, firstRowId);\n }\n },\n );\n },\n );\n change();\n collForEach(changedLocalRows, (localRowId) =>\n callListeners(remoteRowIdListeners, [relationshipId, localRowId]),\n );\n collForEach(changedRemoteRows, (remoteRowId) =>\n callListeners(localRowIdsListeners, [relationshipId, remoteRowId]),\n );\n collForEach(changedLinkedRows, (firstRowId) => {\n delLinkedRowIdsCache(relationshipId, firstRowId);\n callListeners(linkedRowIdsListeners, [relationshipId, firstRowId]);\n });\n },\n getRowCellFunction(getRemoteRowId2),\n );\n return relationships;\n };\n const forEachRelationship = (relationshipCallback) =>\n forEachRelationshipImpl((relationshipId) =>\n relationshipCallback(relationshipId, (rowCallback) =>\n store.forEachRow(getLocalTableId(relationshipId), rowCallback),\n ),\n );\n const delRelationshipDefinition = (relationshipId) => {\n mapSet(remoteTableIds, relationshipId);\n delDefinition(relationshipId);\n return relationships;\n };\n const getRemoteTableId = (relationshipId) =>\n mapGet(remoteTableIds, relationshipId);\n const getRemoteRowId = (relationshipId, localRowId) =>\n mapGet(getRelationship(relationshipId)?.[0], localRowId);\n const getLocalRowIds = (relationshipId, remoteRowId) =>\n collValues(mapGet(getRelationship(relationshipId)?.[1], remoteRowId));\n const getLinkedRowIds = (relationshipId, firstRowId) =>\n isUndefined(getRelationship(relationshipId))\n ? [firstRowId]\n : collValues(getLinkedRowIdsCache(relationshipId, firstRowId, true));\n const addRemoteRowIdListener = (relationshipId, localRowId, listener) =>\n addListener(listener, remoteRowIdListeners, [relationshipId, localRowId]);\n const addLocalRowIdsListener = (relationshipId, remoteRowId, listener) =>\n addListener(listener, localRowIdsListeners, [relationshipId, remoteRowId]);\n const addLinkedRowIdsListener = (relationshipId, firstRowId, listener) => {\n getLinkedRowIdsCache(relationshipId, firstRowId);\n return addListener(listener, linkedRowIdsListeners, [\n relationshipId,\n firstRowId,\n ]);\n };\n const delListener = (listenerId) => {\n delLinkedRowIdsCache(...(delListenerImpl(listenerId) ?? []));\n return relationships;\n };\n const getListenerStats = () => ({\n remoteRowId: collSize3(remoteRowIdListeners),\n localRowIds: collSize3(localRowIdsListeners),\n linkedRowIds: collSize3(linkedRowIdsListeners),\n });\n const relationships = {\n setRelationshipDefinition,\n delRelationshipDefinition,\n getStore,\n getRelationshipIds,\n forEachRelationship,\n hasRelationship,\n getLocalTableId,\n getRemoteTableId,\n getRemoteRowId,\n getLocalRowIds,\n getLinkedRowIds,\n addRelationshipIdsListener,\n addRemoteRowIdListener,\n addLocalRowIdsListener,\n addLinkedRowIdsListener,\n delListener,\n destroy,\n getListenerStats,\n };\n return objFreeze(relationships);\n});\n\nconst textEncoder = /* @__PURE__ */ new GLOBAL.TextEncoder();\nconst getHash = (value) => {\n let hash = 2166136261;\n arrayForEach(textEncoder.encode(value), (char) => {\n hash ^= char;\n hash +=\n (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n });\n return hash >>> 0;\n};\n\nconst stampClone = ([value, time]) => stampNew(value, time);\nconst stampCloneWithHash = ([value, time, hash]) => [value, time, hash];\nconst stampNew = (value, time) => (time ? [value, time] : [value]);\nconst stampNewWithHash = (value, time, hash) => [value, time, hash];\nconst getStampHash = (stamp) => stamp[2];\nconst hashIdAndHash = (id, hash) => getHash(id + ':' + hash);\nconst replaceTimeHash = (oldTime, newTime) =>\n newTime > oldTime ? (oldTime ? getHash(oldTime) : 0) ^ getHash(newTime) : 0;\nconst getLatestTime = (time1, time2) =>\n /* istanbul ignore next */\n ((time1 ?? '') > (time2 ?? '') ? time1 : time2) ?? '';\nconst stampUpdate = (stamp, time, hash) => {\n if (time > stamp[1]) {\n stamp[1] = time;\n }\n stamp[2] = hash >>> 0;\n};\nconst stampNewObj = (time = EMPTY_STRING) => stampNew(objNew(), time);\nconst stampNewMap = (time = EMPTY_STRING) => [mapNew(), time, 0];\nconst stampMapToObjWithHash = (\n [map, time, hash],\n mapper = stampCloneWithHash,\n) => [mapToObj(map, mapper), time, hash];\nconst stampMapToObjWithoutHash = ([map, time], mapper = stampClone) =>\n stampNew(mapToObj(map, mapper), time);\nconst stampValidate = (stamp, validateThing) =>\n isArray(stamp) &&\n size(stamp) == 3 &&\n isString(stamp[1]) &&\n getTypeOf(stamp[2]) == NUMBER &&\n isFiniteNumber(stamp[2]) &&\n validateThing(stamp[0]);\n\nconst pairNew = (value) => [value, value];\nconst pairCollSize2 = (pair, func = collSize2) => func(pair[0]) + func(pair[1]);\nconst pairNewMap = () => [mapNew(), mapNew()];\nconst pairClone = (array) => [...array];\nconst pairIsEqual = ([entry1, entry2]) => entry1 === entry2;\n\nconst jsonString = JSON.stringify;\nconst jsonParse = JSON.parse;\nconst jsonStringWithMap = (obj) =>\n jsonString(obj, (_key, value) =>\n isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,\n );\n\nconst idsChanged = (changedIds, id2, addedOrRemoved) =>\n mapSet(\n changedIds,\n id2,\n mapGet(changedIds, id2) == -addedOrRemoved ? void 0 : addedOrRemoved,\n );\nconst createStore = () => {\n let hasTablesSchema;\n let hasValuesSchema;\n let hadTables = false;\n let hadValues = false;\n let transactions = 0;\n let internalListeners = [];\n const changedTableIds = mapNew();\n const changedTableCellIds = mapNew();\n const changedRowCount = mapNew();\n const changedRowIds = mapNew();\n const changedCellIds = mapNew();\n const changedCells = mapNew();\n const changedValueIds = mapNew();\n const changedValues = mapNew();\n const invalidCells = mapNew();\n const invalidValues = mapNew();\n const tablesSchemaMap = mapNew();\n const tablesSchemaRowCache = mapNew();\n const valuesSchemaMap = mapNew();\n const valuesDefaulted = mapNew();\n const valuesNonDefaulted = setNew();\n const tablePoolFunctions = mapNew();\n const tableCellIds = mapNew();\n const tablesMap = mapNew();\n const valuesMap = mapNew();\n const hasTablesListeners = pairNewMap();\n const tablesListeners = pairNewMap();\n const tableIdsListeners = pairNewMap();\n const hasTableListeners = pairNewMap();\n const tableListeners = pairNewMap();\n const tableCellIdsListeners = pairNewMap();\n const hasTableCellListeners = pairNewMap();\n const rowCountListeners = pairNewMap();\n const rowIdsListeners = pairNewMap();\n const sortedRowIdsListeners = pairNewMap();\n const hasRowListeners = pairNewMap();\n const rowListeners = pairNewMap();\n const cellIdsListeners = pairNewMap();\n const hasCellListeners = pairNewMap();\n const cellListeners = pairNewMap();\n const invalidCellListeners = pairNewMap();\n const invalidValueListeners = pairNewMap();\n const hasValuesListeners = pairNewMap();\n const valuesListeners = pairNewMap();\n const valueIdsListeners = pairNewMap();\n const hasValueListeners = pairNewMap();\n const valueListeners = pairNewMap();\n const startTransactionListeners = mapNew();\n const finishTransactionListeners = pairNewMap();\n const [addListener, callListeners, delListenerImpl, callListenerImpl] =\n getListenerFunctions(() => store);\n const validateTablesSchema = (tableSchema) =>\n objValidate(tableSchema, (tableSchema2) =>\n objValidate(tableSchema2, validateCellOrValueSchema),\n );\n const validateValuesSchema = (valuesSchema) =>\n objValidate(valuesSchema, validateCellOrValueSchema);\n const validateCellOrValueSchema = (schema) => {\n if (!objValidate(schema, (_child, id2) => arrayHas([TYPE, DEFAULT], id2))) {\n return false;\n }\n const type = schema[TYPE];\n if (!isTypeStringOrBoolean(type) && type != NUMBER) {\n return false;\n }\n if (getCellOrValueType(schema[DEFAULT]) != type) {\n objDel(schema, DEFAULT);\n }\n return true;\n };\n const validateContent = isArray;\n const validateTables = (tables) =>\n objValidate(tables, validateTable, cellInvalid);\n const validateTable = (table, tableId) =>\n (!hasTablesSchema ||\n collHas(tablesSchemaMap, tableId) ||\n /* istanbul ignore next */\n cellInvalid(tableId)) &&\n objValidate(\n table,\n (row, rowId) => validateRow(tableId, rowId, row),\n () => cellInvalid(tableId),\n );\n const validateRow = (tableId, rowId, row, skipDefaults) =>\n objValidate(\n skipDefaults ? row : addDefaultsToRow(row, tableId, rowId),\n (cell, cellId) =>\n ifNotUndefined(\n getValidatedCell(tableId, rowId, cellId, cell),\n (validCell) => {\n row[cellId] = validCell;\n return true;\n },\n () => false,\n ),\n () => cellInvalid(tableId, rowId),\n );\n const getValidatedCell = (tableId, rowId, cellId, cell) =>\n hasTablesSchema\n ? ifNotUndefined(\n mapGet(mapGet(tablesSchemaMap, tableId), cellId),\n (cellSchema) =>\n getCellOrValueType(cell) != cellSchema[TYPE]\n ? cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])\n : cell,\n () => cellInvalid(tableId, rowId, cellId, cell),\n )\n : isUndefined(getCellOrValueType(cell))\n ? cellInvalid(tableId, rowId, cellId, cell)\n : cell;\n const validateValues = (values, skipDefaults) =>\n objValidate(\n skipDefaults ? values : addDefaultsToValues(values),\n (value, valueId) =>\n ifNotUndefined(\n getValidatedValue(valueId, value),\n (validValue) => {\n values[valueId] = validValue;\n return true;\n },\n () => false,\n ),\n () => valueInvalid(),\n );\n const getValidatedValue = (valueId, value) =>\n hasValuesSchema\n ? ifNotUndefined(\n mapGet(valuesSchemaMap, valueId),\n (valueSchema) =>\n getCellOrValueType(value) != valueSchema[TYPE]\n ? valueInvalid(valueId, value, valueSchema[DEFAULT])\n : value,\n () => valueInvalid(valueId, value),\n )\n : isUndefined(getCellOrValueType(value))\n ? valueInvalid(valueId, value)\n : value;\n const addDefaultsToRow = (row, tableId, rowId) => {\n ifNotUndefined(\n mapGet(tablesSchemaRowCache, tableId),\n ([rowDefaulted, rowNonDefaulted]) => {\n collForEach(rowDefaulted, (cell, cellId) => {\n if (!objHas(row, cellId)) {\n row[cellId] = cell;\n }\n });\n collForEach(rowNonDefaulted, (cellId) => {\n if (!objHas(row, cellId)) {\n cellInvalid(tableId, rowId, cellId);\n }\n });\n },\n );\n return row;\n };\n const addDefaultsToValues = (values) => {\n if (hasValuesSchema) {\n collForEach(valuesDefaulted, (value, valueId) => {\n if (!objHas(values, valueId)) {\n values[valueId] = value;\n }\n });\n collForEach(valuesNonDefaulted, (valueId) => {\n if (!objHas(values, valueId)) {\n valueInvalid(valueId);\n }\n });\n }\n return values;\n };\n const setValidTablesSchema = (tablesSchema) =>\n mapMatch(\n tablesSchemaMap,\n tablesSchema,\n (_tablesSchema, tableId, tableSchema) => {\n const rowDefaulted = mapNew();\n const rowNonDefaulted = setNew();\n mapMatch(\n mapEnsure(tablesSchemaMap, tableId, mapNew),\n tableSchema,\n (tableSchemaMap, cellId, cellSchema) => {\n mapSet(tableSchemaMap, cellId, cellSchema);\n ifNotUndefined(\n cellSchema[DEFAULT],\n (def) => mapSet(rowDefaulted, cellId, def),\n () => setAdd(rowNonDefaulted, cellId),\n );\n },\n );\n mapSet(tablesSchemaRowCache, tableId, [rowDefaulted, rowNonDefaulted]);\n },\n (_tablesSchema, tableId) => {\n mapSet(tablesSchemaMap, tableId);\n mapSet(tablesSchemaRowCache, tableId);\n },\n );\n const setValidValuesSchema = (valuesSchema) =>\n mapMatch(\n valuesSchemaMap,\n valuesSchema,\n (_valuesSchema, valueId, valueSchema) => {\n mapSet(valuesSchemaMap, valueId, valueSchema);\n ifNotUndefined(\n valueSchema[DEFAULT],\n (def) => mapSet(valuesDefaulted, valueId, def),\n () => setAdd(valuesNonDefaulted, valueId),\n );\n },\n (_valuesSchema, valueId) => {\n mapSet(valuesSchemaMap, valueId);\n mapSet(valuesDefaulted, valueId);\n collDel(valuesNonDefaulted, valueId);\n },\n );\n const setOrDelTables = (tables) =>\n objIsEmpty(tables) ? delTables() : setTables(tables);\n const setValidContent = ([tables, values]) => {\n (objIsEmpty(tables) ? delTables : setTables)(tables);\n (objIsEmpty(values) ? delValues : setValues)(values);\n };\n const setValidTables = (tables) =>\n mapMatch(\n tablesMap,\n tables,\n (_tables, tableId, table) => setValidTable(tableId, table),\n (_tables, tableId) => delValidTable(tableId),\n );\n const setValidTable = (tableId, table) =>\n mapMatch(\n mapEnsure(tablesMap, tableId, () => {\n tableIdsChanged(tableId, 1);\n mapSet(tablePoolFunctions, tableId, getPoolFunctions());\n mapSet(tableCellIds, tableId, mapNew());\n return mapNew();\n }),\n table,\n (tableMap, rowId, row) => setValidRow(tableId, tableMap, rowId, row),\n (tableMap, rowId) => delValidRow(tableId, tableMap, rowId),\n );\n const setValidRow = (tableId, tableMap, rowId, row, forceDel) =>\n mapMatch(\n mapEnsure(tableMap, rowId, () => {\n rowIdsChanged(tableId, rowId, 1);\n return mapNew();\n }),\n row,\n (rowMap, cellId, cell) =>\n setValidCell(tableId, rowId, rowMap, cellId, cell),\n (rowMap, cellId) =>\n delValidCell(tableId, tableMap, rowId, rowMap, cellId, forceDel),\n );\n const setValidCell = (tableId, rowId, rowMap, cellId, cell) => {\n if (!collHas(rowMap, cellId)) {\n cellIdsChanged(tableId, rowId, cellId, 1);\n }\n const oldCell = mapGet(rowMap, cellId);\n if (cell !== oldCell) {\n cellChanged(tableId, rowId, cellId, oldCell, cell);\n mapSet(rowMap, cellId, cell);\n }\n };\n const setCellIntoDefaultRow = (tableId, tableMap, rowId, cellId, validCell) =>\n ifNotUndefined(\n mapGet(tableMap, rowId),\n (rowMap) => setValidCell(tableId, rowId, rowMap, cellId, validCell),\n () =>\n setValidRow(\n tableId,\n tableMap,\n rowId,\n addDefaultsToRow({[cellId]: validCell}, tableId, rowId),\n ),\n );\n const setOrDelValues = (values) =>\n objIsEmpty(values) ? delValues() : setValues(values);\n const setValidValues = (values) =>\n mapMatch(\n valuesMap,\n values,\n (_valuesMap, valueId, value) => setValidValue(valueId, value),\n (_valuesMap, valueId) => delValidValue(valueId),\n );\n const setValidValue = (valueId, value) => {\n if (!collHas(valuesMap, valueId)) {\n valueIdsChanged(valueId, 1);\n }\n const oldValue = mapGet(valuesMap, valueId);\n if (value !== oldValue) {\n valueChanged(valueId, oldValue, value);\n mapSet(valuesMap, valueId, value);\n }\n };\n const getNewRowId = (tableId, reuse) => {\n const [getId] = mapGet(tablePoolFunctions, tableId);\n let rowId;\n do {\n rowId = getId(reuse);\n } while (collHas(mapGet(tablesMap, tableId), rowId));\n return rowId;\n };\n const getOrCreateTable = (tableId) =>\n mapGet(tablesMap, tableId) ?? setValidTable(tableId, {});\n const delValidTable = (tableId) => setValidTable(tableId, {});\n const delValidRow = (tableId, tableMap, rowId) => {\n const [, releaseId] = mapGet(tablePoolFunctions, tableId);\n releaseId(rowId);\n setValidRow(tableId, tableMap, rowId, {}, true);\n };\n const delValidCell = (tableId, table, rowId, row, cellId, forceDel) => {\n const defaultCell = mapGet(\n mapGet(tablesSchemaRowCache, tableId)?.[0],\n cellId,\n );\n if (!isUndefined(defaultCell) && !forceDel) {\n return setValidCell(tableId, rowId, row, cellId, defaultCell);\n }\n const delCell2 = (cellId2) => {\n cellChanged(tableId, rowId, cellId2, mapGet(row, cellId2));\n cellIdsChanged(tableId, rowId, cellId2, -1);\n mapSet(row, cellId2);\n };\n if (isUndefined(defaultCell)) {\n delCell2(cellId);\n } else {\n mapForEach(row, delCell2);\n }\n if (collIsEmpty(row)) {\n rowIdsChanged(tableId, rowId, -1);\n if (collIsEmpty(mapSet(table, rowId))) {\n tableIdsChanged(tableId, -1);\n mapSet(tablesMap, tableId);\n mapSet(tablePoolFunctions, tableId);\n mapSet(tableCellIds, tableId);\n }\n }\n };\n const delValidValue = (valueId) => {\n const defaultValue = mapGet(valuesDefaulted, valueId);\n if (!isUndefined(defaultValue)) {\n return setValidValue(valueId, defaultValue);\n }\n valueChanged(valueId, mapGet(valuesMap, valueId));\n valueIdsChanged(valueId, -1);\n mapSet(valuesMap, valueId);\n };\n const tableIdsChanged = (tableId, addedOrRemoved) =>\n idsChanged(changedTableIds, tableId, addedOrRemoved);\n const rowIdsChanged = (tableId, rowId, addedOrRemoved) =>\n idsChanged(\n mapEnsure(changedRowIds, tableId, mapNew),\n rowId,\n addedOrRemoved,\n ) &&\n mapSet(\n changedRowCount,\n tableId,\n mapEnsure(changedRowCount, tableId, () => 0) + addedOrRemoved,\n );\n const cellIdsChanged = (tableId, rowId, cellId, addedOrRemoved) => {\n const cellIds = mapGet(tableCellIds, tableId);\n const count = mapGet(cellIds, cellId) ?? 0;\n if (\n (count == 0 && addedOrRemoved == 1) ||\n (count == 1 && addedOrRemoved == -1)\n ) {\n idsChanged(\n mapEnsure(changedTableCellIds, tableId, mapNew),\n cellId,\n addedOrRemoved,\n );\n }\n mapSet(\n cellIds,\n cellId,\n count != -addedOrRemoved ? count + addedOrRemoved : null,\n );\n idsChanged(\n mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),\n cellId,\n addedOrRemoved,\n );\n };\n const cellChanged = (tableId, rowId, cellId, oldCell, newCell) => {\n mapEnsure(\n mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),\n cellId,\n () => [oldCell, 0],\n )[1] = newCell;\n internalListeners[3]?.(tableId, rowId, cellId, newCell);\n };\n const valueIdsChanged = (valueId, addedOrRemoved) =>\n idsChanged(changedValueIds, valueId, addedOrRemoved);\n const valueChanged = (valueId, oldValue, newValue) => {\n mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;\n internalListeners[4]?.(valueId, newValue);\n };\n const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {\n arrayPush(\n mapEnsure(\n mapEnsure(mapEnsure(invalidCells, tableId, mapNew), rowId, mapNew),\n cellId,\n () => [],\n ),\n invalidCell,\n );\n return defaultedCell;\n };\n const valueInvalid = (valueId, invalidValue, defaultedValue) => {\n arrayPush(\n mapEnsure(invalidValues, valueId, () => []),\n invalidValue,\n );\n return defaultedValue;\n };\n const getCellChange = (tableId, rowId, cellId) =>\n ifNotUndefined(\n mapGet(mapGet(mapGet(changedCells, tableId), rowId), cellId),\n ([oldCell, newCell]) => [true, oldCell, newCell],\n () => [false, ...pairNew(getCell(tableId, rowId, cellId))],\n );\n const getValueChange = (valueId) =>\n ifNotUndefined(\n mapGet(changedValues, valueId),\n ([oldValue, newValue]) => [true, oldValue, newValue],\n () => [false, ...pairNew(getValue(valueId))],\n );\n const callInvalidCellListeners = (mutator) =>\n !collIsEmpty(invalidCells) && !collIsEmpty(invalidCellListeners[mutator])\n ? collForEach(\n mutator ? mapClone3(invalidCells) : invalidCells,\n (rows, tableId) =>\n collForEach(rows, (cells, rowId) =>\n collForEach(cells, (invalidCell, cellId) =>\n callListeners(\n invalidCellListeners[mutator],\n [tableId, rowId, cellId],\n invalidCell,\n ),\n ),\n ),\n )\n : 0;\n const callInvalidValueListeners = (mutator) =>\n !collIsEmpty(invalidValues) && !collIsEmpty(invalidValueListeners[mutator])\n ? collForEach(\n mutator ? mapClone(invalidValues) : invalidValues,\n (invalidValue, valueId) =>\n callListeners(\n invalidValueListeners[mutator],\n [valueId],\n invalidValue,\n ),\n )\n : 0;\n const callIdsAndHasListenersIfChanged = (\n changedIds,\n idListeners,\n hasListeners,\n ids,\n ) => {\n if (!collIsEmpty(changedIds)) {\n callListeners(idListeners, ids, () => mapToObj(changedIds));\n mapForEach(changedIds, (changedId, changed) =>\n callListeners(hasListeners, [...(ids ?? []), changedId], changed == 1),\n );\n return 1;\n }\n };\n const callTabularListenersForChanges = (mutator) => {\n const hasTablesNow = hasTables();\n if (hasTablesNow != hadTables) {\n callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);\n }\n const emptySortedRowIdListeners = collIsEmpty(\n sortedRowIdsListeners[mutator],\n );\n const emptyIdAndHasListeners =\n collIsEmpty(cellIdsListeners[mutator]) &&\n collIsEmpty(hasCellListeners[mutator]) &&\n collIsEmpty(rowIdsListeners[mutator]) &&\n collIsEmpty(hasRowListeners[mutator]) &&\n collIsEmpty(tableCellIdsListeners[mutator]) &&\n collIsEmpty(hasTableCellListeners[mutator]) &&\n collIsEmpty(rowCountListeners[mutator]) &&\n emptySortedRowIdListeners &&\n collIsEmpty(tableIdsListeners[mutator]) &&\n collIsEmpty(hasTableListeners[mutator]);\n const emptyOtherListeners =\n collIsEmpty(cellListeners[mutator]) &&\n collIsEmpty(rowListeners[mutator]) &&\n collIsEmpty(tableListeners[mutator]) &&\n collIsEmpty(tablesListeners[mutator]);\n if (!emptyIdAndHasListeners || !emptyOtherListeners) {\n const changes = mutator\n ? [\n mapClone(changedTableIds),\n mapClone2(changedTableCellIds),\n mapClone(changedRowCount),\n mapClone2(changedRowIds),\n mapClone3(changedCellIds),\n mapClone3(changedCells),\n ]\n : [\n changedTableIds,\n changedTableCellIds,\n changedRowCount,\n changedRowIds,\n changedCellIds,\n changedCells,\n ];\n if (!emptyIdAndHasListeners) {\n callIdsAndHasListenersIfChanged(\n changes[0],\n tableIdsListeners[mutator],\n hasTableListeners[mutator],\n );\n collForEach(changes[1], (changedIds, tableId) =>\n callIdsAndHasListenersIfChanged(\n changedIds,\n tableCellIdsListeners[mutator],\n hasTableCellListeners[mutator],\n [tableId],\n ),\n );\n collForEach(changes[2], (changedCount, tableId) => {\n if (changedCount != 0) {\n callListeners(\n rowCountListeners[mutator],\n [tableId],\n getRowCount(tableId),\n );\n }\n });\n const calledSortableTableIds = setNew();\n collForEach(changes[3], (changedIds, tableId) => {\n if (\n callIdsAndHasListenersIfChanged(\n changedIds,\n rowIdsListeners[mutator],\n hasRowListeners[mutator],\n [tableId],\n ) &&\n !emptySortedRowIdListeners\n ) {\n callListeners(sortedRowIdsListeners[mutator], [tableId, null]);\n setAdd(calledSortableTableIds, tableId);\n }\n });\n if (!emptySortedRowIdListeners) {\n collForEach(changes[5], (rows, tableId) => {\n if (!collHas(calledSortableTableIds, tableId)) {\n const sortableCellIds = setNew();\n collForEach(rows, (cells) =>\n collForEach(cells, ([oldCell, newCell], cellId) =>\n newCell !== oldCell\n ? setAdd(sortableCellIds, cellId)\n : collDel(cells, cellId),\n ),\n );\n collForEach(sortableCellIds, (cellId) =>\n callListeners(sortedRowIdsListeners[mutator], [\n tableId,\n cellId,\n ]),\n );\n }\n });\n }\n collForEach(changes[4], (rowCellIds, tableId) =>\n collForEach(rowCellIds, (changedIds, rowId) =>\n callIdsAndHasListenersIfChanged(\n changedIds,\n cellIdsListeners[mutator],\n hasCellListeners[mutator],\n [tableId, rowId],\n ),\n ),\n );\n }\n if (!emptyOtherListeners) {\n let tablesChanged;\n collForEach(changes[5], (rows, tableId) => {\n let tableChanged;\n collForEach(rows, (cells, rowId) => {\n let rowChanged;\n collForEach(cells, ([oldCell, newCell], cellId) => {\n if (newCell !== oldCell) {\n callListeners(\n cellListeners[mutator],\n [tableId, rowId, cellId],\n newCell,\n oldCell,\n getCellChange,\n );\n tablesChanged = tableChanged = rowChanged = 1;\n }\n });\n if (rowChanged) {\n callListeners(\n rowListeners[mutator],\n [tableId, rowId],\n getCellChange,\n );\n }\n });\n if (tableChanged) {\n callListeners(tableListeners[mutator], [tableId], getCellChange);\n }\n });\n if (tablesChanged) {\n callListeners(tablesListeners[mutator], void 0, getCellChange);\n }\n }\n }\n };\n const callValuesListenersForChanges = (mutator) => {\n const hasValuesNow = hasValues();\n if (hasValuesNow != hadValues) {\n callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);\n }\n const emptyIdAndHasListeners =\n collIsEmpty(valueIdsListeners[mutator]) &&\n collIsEmpty(hasValueListeners[mutator]);\n const emptyOtherListeners =\n collIsEmpty(valueListeners[mutator]) &&\n collIsEmpty(valuesListeners[mutator]);\n if (!emptyIdAndHasListeners || !emptyOtherListeners) {\n const changes = mutator\n ? [mapClone(changedValueIds), mapClone(changedValues)]\n : [changedValueIds, changedValues];\n if (!emptyIdAndHasListeners) {\n callIdsAndHasListenersIfChanged(\n changes[0],\n valueIdsListeners[mutator],\n hasValueListeners[mutator],\n );\n }\n if (!emptyOtherListeners) {\n let valuesChanged;\n collForEach(changes[1], ([oldValue, newValue], valueId) => {\n if (newValue !== oldValue) {\n callListeners(\n valueListeners[mutator],\n [valueId],\n newValue,\n oldValue,\n getValueChange,\n );\n valuesChanged = 1;\n }\n });\n if (valuesChanged) {\n callListeners(valuesListeners[mutator], void 0, getValueChange);\n }\n }\n }\n };\n const fluentTransaction = (actions, ...args) => {\n transaction(() => actions(...arrayMap(args, id)));\n return store;\n };\n const getContent = () => [getTables(), getValues()];\n const getTables = () => mapToObj3(tablesMap);\n const getTableIds = () => mapKeys(tablesMap);\n const getTable = (tableId) => mapToObj2(mapGet(tablesMap, id(tableId)));\n const getTableCellIds = (tableId) =>\n mapKeys(mapGet(tableCellIds, id(tableId)));\n const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));\n const getRowIds = (tableId) => mapKeys(mapGet(tablesMap, id(tableId)));\n const getSortedRowIds = (tableId, cellId, descending, offset = 0, limit) =>\n arrayMap(\n slice(\n arraySort(\n mapMap(mapGet(tablesMap, id(tableId)), (row, rowId) => [\n isUndefined(cellId) ? rowId : mapGet(row, id(cellId)),\n rowId,\n ]),\n ([cell1], [cell2]) =>\n defaultSorter(cell1, cell2) * (descending ? -1 : 1),\n ),\n offset,\n isUndefined(limit) ? limit : offset + limit,\n ),\n ([, rowId]) => rowId,\n );\n const getRow = (tableId, rowId) =>\n mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));\n const getCellIds = (tableId, rowId) =>\n mapKeys(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));\n const getCell = (tableId, rowId, cellId) =>\n mapGet(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));\n const getValues = () => mapToObj(valuesMap);\n const getValueIds = () => mapKeys(valuesMap);\n const getValue = (valueId) => mapGet(valuesMap, id(valueId));\n const hasTables = () => !collIsEmpty(tablesMap);\n const hasTable = (tableId) => collHas(tablesMap, id(tableId));\n const hasTableCell = (tableId, cellId) =>\n collHas(mapGet(tableCellIds, id(tableId)), id(cellId));\n const hasRow = (tableId, rowId) =>\n collHas(mapGet(tablesMap, id(tableId)), id(rowId));\n const hasCell = (tableId, rowId, cellId) =>\n collHas(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));\n const hasValues = () => !collIsEmpty(valuesMap);\n const hasValue = (valueId) => collHas(valuesMap, id(valueId));\n const getTablesJson = () => jsonStringWithMap(tablesMap);\n const getValuesJson = () => jsonStringWithMap(valuesMap);\n const getJson = () => jsonStringWithMap([tablesMap, valuesMap]);\n const getTablesSchemaJson = () => jsonStringWithMap(tablesSchemaMap);\n const getValuesSchemaJson = () => jsonStringWithMap(valuesSchemaMap);\n const getSchemaJson = () =>\n jsonStringWithMap([tablesSchemaMap, valuesSchemaMap]);\n const setContent = (content) =>\n fluentTransaction(() => {\n const content2 = isFunction(content) ? content() : content;\n if (validateContent(content2)) {\n setValidContent(content2);\n }\n });\n const setTables = (tables) =>\n fluentTransaction(() =>\n validateTables(tables) ? setValidTables(tables) : 0,\n );\n const setTable = (tableId, table) =>\n fluentTransaction(\n (tableId2) =>\n validateTable(table, tableId2) ? setValidTable(tableId2, table) : 0,\n tableId,\n );\n const setRow = (tableId, rowId, row) =>\n fluentTransaction(\n (tableId2, rowId2) =>\n validateRow(tableId2, rowId2, row)\n ? setValidRow(tableId2, getOrCreateTable(tableId2), rowId2, row)\n : 0,\n tableId,\n rowId,\n );\n const addRow = (tableId, row, reuseRowIds = true) =>\n transaction(() => {\n let rowId = void 0;\n if (validateRow(tableId, rowId, row)) {\n tableId = id(tableId);\n setValidRow(\n tableId,\n getOrCreateTable(tableId),\n (rowId = getNewRowId(tableId, reuseRowIds ? 1 : 0)),\n row,\n );\n }\n return rowId;\n });\n const setPartialRow = (tableId, rowId, partialRow) =>\n fluentTransaction(\n (tableId2, rowId2) => {\n if (validateRow(tableId2, rowId2, partialRow, 1)) {\n const table = getOrCreateTable(tableId2);\n objToArray(partialRow, (cell, cellId) =>\n setCellIntoDefaultRow(tableId2, table, rowId2, cellId, cell),\n );\n }\n },\n tableId,\n rowId,\n );\n const setCell = (tableId, rowId, cellId, cell) =>\n fluentTransaction(\n (tableId2, rowId2, cellId2) =>\n ifNotUndefined(\n getValidatedCell(\n tableId2,\n rowId2,\n cellId2,\n isFunction(cell) ? cell(getCell(tableId2, rowId2, cellId2)) : cell,\n ),\n (validCell) =>\n setCellIntoDefaultRow(\n tableId2,\n getOrCreateTable(tableId2),\n rowId2,\n cellId2,\n validCell,\n ),\n ),\n tableId,\n rowId,\n cellId,\n );\n const setValues = (values) =>\n fluentTransaction(() =>\n validateValues(values) ? setValidValues(values) : 0,\n );\n const setPartialValues = (partialValues) =>\n fluentTransaction(() =>\n validateValues(partialValues, 1)\n ? objToArray(partialValues, (value, valueId) =>\n setValidValue(valueId, value),\n )\n : 0,\n );\n const setValue = (valueId, value) =>\n fluentTransaction(\n (valueId2) =>\n ifNotUndefined(\n getValidatedValue(\n valueId2,\n isFunction(value) ? value(getValue(valueId2)) : value,\n ),\n (validValue) => setValidValue(valueId2, validValue),\n ),\n valueId,\n );\n const applyChanges = (changes) =>\n fluentTransaction(() => {\n objToArray(changes[0], (table, tableId) =>\n isUndefined(table)\n ? delTable(tableId)\n : objToArray(table, (row, rowId) =>\n isUndefined(row)\n ? delRow(tableId, rowId)\n : objToArray(row, (cell, cellId) =>\n setOrDelCell(store, tableId, rowId, cellId, cell),\n ),\n ),\n );\n objToArray(changes[1], (value, valueId) =>\n setOrDelValue(store, valueId, value),\n );\n });\n const setTablesJson = (tablesJson) => {\n try {\n setOrDelTables(jsonParse(tablesJson));\n } catch {}\n return store;\n };\n const setValuesJson = (valuesJson) => {\n try {\n setOrDelValues(jsonParse(valuesJson));\n } catch {}\n return store;\n };\n const setJson = (tablesAndValuesJson) =>\n fluentTransaction(() => {\n try {\n const [tables, values] = jsonParse(tablesAndValuesJson);\n setOrDelTables(tables);\n setOrDelValues(values);\n } catch {\n setTablesJson(tablesAndValuesJson);\n }\n });\n const setTablesSchema = (tablesSchema) =>\n fluentTransaction(() => {\n if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {\n setValidTablesSchema(tablesSchema);\n if (!collIsEmpty(tablesMap)) {\n const tables = getTables();\n delTables();\n setTables(tables);\n }\n }\n });\n const setValuesSchema = (valuesSchema) =>\n fluentTransaction(() => {\n if ((hasValuesSchema = validateValuesSchema(valuesSchema))) {\n const values = getValues();\n delValuesSchema();\n delValues();\n hasValuesSchema = true;\n setValidValuesSchema(valuesSchema);\n setValues(values);\n }\n });\n const setSchema = (tablesSchema, valuesSchema) =>\n fluentTransaction(() => {\n setTablesSchema(tablesSchema);\n setValuesSchema(valuesSchema);\n });\n const delTables = () => fluentTransaction(() => setValidTables({}));\n const delTable = (tableId) =>\n fluentTransaction(\n (tableId2) =>\n collHas(tablesMap, tableId2) ? delValidTable(tableId2) : 0,\n tableId,\n );\n const delRow = (tableId, rowId) =>\n fluentTransaction(\n (tableId2, rowId2) =>\n ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>\n collHas(tableMap, rowId2)\n ? delValidRow(tableId2, tableMap, rowId2)\n : 0,\n ),\n tableId,\n rowId,\n );\n const delCell = (tableId, rowId, cellId, forceDel) =>\n fluentTransaction(\n (tableId2, rowId2, cellId2) =>\n ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>\n ifNotUndefined(mapGet(tableMap, rowId2), (rowMap) =>\n collHas(rowMap, cellId2)\n ? delValidCell(\n tableId2,\n tableMap,\n rowId2,\n rowMap,\n cellId2,\n forceDel,\n )\n : 0,\n ),\n ),\n tableId,\n rowId,\n cellId,\n );\n const delValues = () => fluentTransaction(() => setValidValues({}));\n const delValue = (valueId) =>\n fluentTransaction(\n (valueId2) =>\n collHas(valuesMap, valueId2) ? delValidValue(valueId2) : 0,\n valueId,\n );\n const delTablesSchema = () =>\n fluentTransaction(() => {\n setValidTablesSchema({});\n hasTablesSchema = false;\n });\n const delValuesSchema = () =>\n fluentTransaction(() => {\n setValidValuesSchema({});\n hasValuesSchema = false;\n });\n const delSchema = () =>\n fluentTransaction(() => {\n delTablesSchema();\n delValuesSchema();\n });\n const transaction = (actions, doRollback) => {\n if (transactions != -1) {\n startTransaction();\n const result = actions();\n finishTransaction(doRollback);\n return result;\n }\n };\n const startTransaction = () => {\n if (transactions != -1) {\n transactions++;\n }\n if (transactions == 1) {\n internalListeners[0]?.();\n callListeners(startTransactionListeners);\n }\n return store;\n };\n const getTransactionChanges = () => [\n mapToObj(\n changedCells,\n (table, tableId) =>\n mapGet(changedTableIds, tableId) === -1\n ? void 0\n : mapToObj(\n table,\n (row, rowId) =>\n mapGet(mapGet(changedRowIds, tableId), rowId) === -1\n ? void 0\n : mapToObj(\n row,\n ([, newCell]) => newCell,\n (changedCell) => pairIsEqual(changedCell),\n ),\n collIsEmpty,\n objIsEmpty,\n ),\n collIsEmpty,\n objIsEmpty,\n ),\n mapToObj(\n changedValues,\n ([, newValue]) => newValue,\n (changedValue) => pairIsEqual(changedValue),\n ),\n 1,\n ];\n const getTransactionLog = () => [\n !collIsEmpty(changedCells),\n !collIsEmpty(changedValues),\n mapToObj3(changedCells, pairClone, pairIsEqual),\n mapToObj3(invalidCells),\n mapToObj(changedValues, pairClone, pairIsEqual),\n mapToObj(invalidValues),\n mapToObj(changedTableIds),\n mapToObj2(changedRowIds),\n mapToObj3(changedCellIds),\n mapToObj(changedValueIds),\n ];\n const finishTransaction = (doRollback) => {\n if (transactions > 0) {\n transactions--;\n if (transactions == 0) {\n transactions = 1;\n callInvalidCellListeners(1);\n if (!collIsEmpty(changedCells)) {\n callTabularListenersForChanges(1);\n }\n callInvalidValueListeners(1);\n if (!collIsEmpty(changedValues)) {\n callValuesListenersForChanges(1);\n }\n if (doRollback?.(store)) {\n collForEach(changedCells, (table, tableId) =>\n collForEach(table, (row, rowId) =>\n collForEach(row, ([oldCell], cellId) =>\n setOrDelCell(store, tableId, rowId, cellId, oldCell),\n ),\n ),\n );\n collClear(changedCells);\n collForEach(changedValues, ([oldValue], valueId) =>\n setOrDelValue(store, valueId, oldValue),\n );\n collClear(changedValues);\n }\n callListeners(finishTransactionListeners[0], void 0);\n transactions = -1;\n callInvalidCellListeners(0);\n if (!collIsEmpty(changedCells)) {\n callTabularListenersForChanges(0);\n }\n callInvalidValueListeners(0);\n if (!collIsEmpty(changedValues)) {\n callValuesListenersForChanges(0);\n }\n internalListeners[1]?.();\n callListeners(finishTransactionListeners[1], void 0);\n internalListeners[2]?.();\n transactions = 0;\n hadTables = hasTables();\n hadValues = hasValues();\n arrayForEach(\n [\n changedTableIds,\n changedTableCellIds,\n changedRowCount,\n changedRowIds,\n changedCellIds,\n changedCells,\n invalidCells,\n changedValueIds,\n changedValues,\n invalidValues,\n ],\n collClear,\n );\n }\n }\n return store;\n };\n const forEachTable = (tableCallback) =>\n collForEach(tablesMap, (tableMap, tableId) =>\n tableCallback(tableId, (rowCallback) =>\n collForEach(tableMap, (rowMap, rowId) =>\n rowCallback(rowId, (cellCallback) =>\n mapForEach(rowMap, cellCallback),\n ),\n ),\n ),\n );\n const forEachTableCell = (tableId, tableCellCallback) =>\n mapForEach(mapGet(tableCellIds, id(tableId)), tableCellCallback);\n const forEachRow = (tableId, rowCallback) =>\n collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>\n rowCallback(rowId, (cellCallback) => mapForEach(rowMap, cellCallback)),\n );\n const forEachCell = (tableId, rowId, cellCallback) =>\n mapForEach(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), cellCallback);\n const forEachValue = (valueCallback) => mapForEach(valuesMap, valueCallback);\n const addSortedRowIdsListener = (\n tableId,\n cellId,\n descending,\n offset,\n limit,\n listener,\n mutator,\n ) => {\n let sortedRowIds = getSortedRowIds(\n tableId,\n cellId,\n descending,\n offset,\n limit,\n );\n return addListener(\n () => {\n const newSortedRowIds = getSortedRowIds(\n tableId,\n cellId,\n descending,\n offset,\n limit,\n );\n if (!arrayIsEqual(newSortedRowIds, sortedRowIds)) {\n sortedRowIds = newSortedRowIds;\n listener(\n store,\n tableId,\n cellId,\n descending,\n offset,\n limit,\n sortedRowIds,\n );\n }\n },\n sortedRowIdsListeners[mutator ? 1 : 0],\n [tableId, cellId],\n [getTableIds],\n );\n };\n const addStartTransactionListener = (listener) =>\n addListener(listener, startTransactionListeners);\n const addWillFinishTransactionListener = (listener) =>\n addListener(listener, finishTransactionListeners[0]);\n const addDidFinishTransactionListener = (listener) =>\n addListener(listener, finishTransactionListeners[1]);\n const callListener = (listenerId) => {\n callListenerImpl(listenerId);\n return store;\n };\n const delListener = (listenerId) => {\n delListenerImpl(listenerId);\n return store;\n };\n const getListenerStats = () => ({\n hasTables: pairCollSize2(hasTablesListeners),\n tables: pairCollSize2(tablesListeners),\n tableIds: pairCollSize2(tableIdsListeners),\n hasTable: pairCollSize2(hasTableListeners),\n table: pairCollSize2(tableListeners),\n tableCellIds: pairCollSize2(tableCellIdsListeners),\n hasTableCell: pairCollSize2(hasTableCellListeners, collSize3),\n rowCount: pairCollSize2(rowCountListeners),\n rowIds: pairCollSize2(rowIdsListeners),\n sortedRowIds: pairCollSize2(sortedRowIdsListeners),\n hasRow: pairCollSize2(hasRowListeners, collSize3),\n row: pairCollSize2(rowListeners, collSize3),\n cellIds: pairCollSize2(cellIdsListeners, collSize3),\n hasCell: pairCollSize2(hasCellListeners, collSize4),\n cell: pairCollSize2(cellListeners, collSize4),\n invalidCell: pairCollSize2(invalidCellListeners, collSize4),\n hasValues: pairCollSize2(hasValuesListeners),\n values: pairCollSize2(valuesListeners),\n valueIds: pairCollSize2(valueIdsListeners),\n hasValue: pairCollSize2(hasValueListeners),\n value: pairCollSize2(valueListeners),\n invalidValue: pairCollSize2(invalidValueListeners),\n transaction:\n collSize2(startTransactionListeners) +\n pairCollSize2(finishTransactionListeners),\n });\n const setInternalListeners = (\n preStartTransaction,\n preFinishTransaction,\n postFinishTransaction,\n cellChanged2,\n valueChanged2,\n ) =>\n (internalListeners = [\n preStartTransaction,\n preFinishTransaction,\n postFinishTransaction,\n cellChanged2,\n valueChanged2,\n ]);\n const store = {\n getContent,\n getTables,\n getTableIds,\n getTable,\n getTableCellIds,\n getRowCount,\n getRowIds,\n getSortedRowIds,\n getRow,\n getCellIds,\n getCell,\n getValues,\n getValueIds,\n getValue,\n hasTables,\n hasTable,\n hasTableCell,\n hasRow,\n hasCell,\n hasValues,\n hasValue,\n getTablesJson,\n getValuesJson,\n getJson,\n getTablesSchemaJson,\n getValuesSchemaJson,\n getSchemaJson,\n hasTablesSchema: () => hasTablesSchema,\n hasValuesSchema: () => hasValuesSchema,\n setContent,\n setTables,\n setTable,\n setRow,\n addRow,\n setPartialRow,\n setCell,\n setValues,\n setPartialValues,\n setValue,\n applyChanges,\n setTablesJson,\n setValuesJson,\n setJson,\n setTablesSchema,\n setValuesSchema,\n setSchema,\n delTables,\n delTable,\n delRow,\n delCell,\n delValues,\n delValue,\n delTablesSchema,\n delValuesSchema,\n delSchema,\n transaction,\n startTransaction,\n getTransactionChanges,\n getTransactionLog,\n finishTransaction,\n forEachTable,\n forEachTableCell,\n forEachRow,\n forEachCell,\n forEachValue,\n addSortedRowIdsListener,\n addStartTransactionListener,\n addWillFinishTransactionListener,\n addDidFinishTransactionListener,\n callListener,\n delListener,\n getListenerStats,\n isMergeable: () => false,\n // only used internally by other modules\n createStore,\n addListener,\n callListeners,\n setInternalListeners,\n };\n objToArray(\n {\n [HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],\n [TABLES]: [0, tablesListeners],\n [TABLE_IDS]: [0, tableIdsListeners],\n [HAS + TABLE]: [\n 1,\n hasTableListeners,\n [getTableIds],\n (ids) => [hasTable(...ids)],\n ],\n [TABLE]: [1, tableListeners, [getTableIds]],\n [TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],\n [HAS + TABLE + CELL]: [\n 2,\n hasTableCellListeners,\n [getTableIds, getTableCellIds],\n (ids) => [hasTableCell(...ids)],\n ],\n [ROW_COUNT]: [1, rowCountListeners, [getTableIds]],\n [ROW_IDS]: [1, rowIdsListeners, [getTableIds]],\n [HAS + ROW]: [\n 2,\n hasRowListeners,\n [getTableIds, getRowIds],\n (ids) => [hasRow(...ids)],\n ],\n [ROW]: [2, rowListeners, [getTableIds, getRowIds]],\n [CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],\n [HAS + CELL]: [\n 3,\n hasCellListeners,\n [getTableIds, getRowIds, getCellIds],\n (ids) => [hasCell(...ids)],\n ],\n [CELL]: [\n 3,\n cellListeners,\n [getTableIds, getRowIds, getCellIds],\n (ids) => pairNew(getCell(...ids)),\n ],\n InvalidCell: [3, invalidCellListeners],\n [HAS + VALUES]: [0, hasValuesListeners, [], () => [hasValues()]],\n [VALUES]: [0, valuesListeners],\n [VALUE_IDS]: [0, valueIdsListeners],\n [HAS + VALUE]: [\n 1,\n hasValueListeners,\n [getValueIds],\n (ids) => [hasValue(...ids)],\n ],\n [VALUE]: [\n 1,\n valueListeners,\n [getValueIds],\n (ids) => pairNew(getValue(ids[0])),\n ],\n InvalidValue: [1, invalidValueListeners],\n },\n ([argumentCount, idSetNode, pathGetters, extraArgsGetter], listenable) => {\n store[ADD + listenable + LISTENER] = (...args) =>\n addListener(\n args[argumentCount],\n idSetNode[args[argumentCount + 1] ? 1 : 0],\n argumentCount > 0 ? slice(args, 0, argumentCount) : void 0,\n pathGetters,\n extraArgsGetter,\n );\n },\n );\n return objFreeze(store);\n};\n\nconst SHIFT36 = 2 ** 36;\nconst SHIFT30 = 2 ** 30;\nconst SHIFT24 = 2 ** 24;\nconst SHIFT18 = 2 ** 18;\nconst SHIFT12 = 2 ** 12;\nconst SHIFT6 = 2 ** 6;\nconst encodeTimeAndCounter = (logicalTime42, counter24) =>\n encode(logicalTime42 / SHIFT36) +\n encode(logicalTime42 / SHIFT30) +\n encode(logicalTime42 / SHIFT24) +\n encode(logicalTime42 / SHIFT18) +\n encode(logicalTime42 / SHIFT12) +\n encode(logicalTime42 / SHIFT6) +\n encode(logicalTime42) +\n encode(counter24 / SHIFT18) +\n encode(counter24 / SHIFT12) +\n encode(counter24 / SHIFT6) +\n encode(counter24);\nconst decodeTimeAndCounter = (hlc16) => [\n decode(hlc16, 0) * SHIFT36 +\n decode(hlc16, 1) * SHIFT30 +\n decode(hlc16, 2) * SHIFT24 +\n decode(hlc16, 3) * SHIFT18 +\n decode(hlc16, 4) * SHIFT12 +\n decode(hlc16, 5) * SHIFT6 +\n decode(hlc16, 6),\n decode(hlc16, 7) * SHIFT18 +\n decode(hlc16, 8) * SHIFT12 +\n decode(hlc16, 9) * SHIFT6 +\n decode(hlc16, 10),\n];\nconst getHlcFunctions = (uniqueId) => {\n let logicalTime = 0;\n let lastCounter = -1;\n const clientPart = ifNotUndefined(\n uniqueId,\n (uniqueId2) => {\n const clientHash30 = getHash(uniqueId2);\n return (\n encode(clientHash30 / SHIFT24) +\n encode(clientHash30 / SHIFT18) +\n encode(clientHash30 / SHIFT12) +\n encode(clientHash30 / SHIFT6) +\n encode(clientHash30)\n );\n },\n () => getUniqueId(5),\n );\n const getHlc = () => {\n seenHlc();\n return encodeTimeAndCounter(logicalTime, ++lastCounter) + clientPart;\n };\n const seenHlc = (hlc) => {\n const previousLogicalTime = logicalTime;\n const [remoteLogicalTime, remoteCounter] =\n isUndefined(hlc) || hlc == '' ? [0, 0] : decodeTimeAndCounter(hlc);\n logicalTime = mathMax(\n previousLogicalTime,\n remoteLogicalTime,\n GLOBAL.HLC_TIME ?? Date.now(),\n );\n lastCounter =\n logicalTime == previousLogicalTime\n ? logicalTime == remoteLogicalTime\n ? mathMax(lastCounter, remoteCounter)\n : lastCounter\n : logicalTime == remoteLogicalTime\n ? remoteCounter\n : -1;\n };\n return [getHlc, seenHlc];\n};\n\nconst LISTENER_ARGS = {\n HasTable: 1,\n Table: 1,\n TableCellIds: 1,\n HasTableCell: 2,\n RowCount: 1,\n RowIds: 1,\n SortedRowIds: 5,\n HasRow: 2,\n Row: 2,\n CellIds: 2,\n HasCell: 3,\n Cell: 3,\n HasValue: 1,\n Value: 1,\n InvalidCell: 3,\n InvalidValue: 1,\n};\nconst newContentStampMap = (time = EMPTY_STRING) => [\n stampNewMap(time),\n stampNewMap(time),\n];\nconst validateMergeableContent = (mergeableContent) =>\n isArray(mergeableContent) &&\n size(mergeableContent) == 2 &&\n stampValidate(mergeableContent[0], (tableStamps) =>\n objValidate(\n tableStamps,\n (tableStamp) =>\n stampValidate(tableStamp, (rowStamps) =>\n objValidate(\n rowStamps,\n (rowStamp) =>\n stampValidate(rowStamp, (cellStamps) =>\n objValidate(\n cellStamps,\n (cellStamp) =>\n stampValidate(cellStamp, isCellOrValueOrNullOrUndefined),\n void 0,\n 1,\n ),\n ),\n void 0,\n 1,\n ),\n ),\n void 0,\n 1,\n ),\n ) &&\n stampValidate(mergeableContent[1], (values) =>\n objValidate(\n values,\n (value) => stampValidate(value, isCellOrValueOrNullOrUndefined),\n void 0,\n 1,\n ),\n );\nconst createMergeableStore = (uniqueId) => {\n let listeningToRawStoreChanges = 1;\n let contentStampMap = newContentStampMap();\n let defaultingContent = 0;\n const touchedCells = mapNew();\n const touchedValues = setNew();\n const [getHlc, seenHlc] = getHlcFunctions(uniqueId);\n const store = createStore();\n const disableListeningToRawStoreChanges = (actions) => {\n const wasListening = listeningToRawStoreChanges;\n listeningToRawStoreChanges = 0;\n actions();\n listeningToRawStoreChanges = wasListening;\n return mergeableStore;\n };\n const mergeContentOrChanges = (contentOrChanges, isContent = 0) => {\n const tablesChanges = {};\n const valuesChanges = {};\n const [\n [tablesObj, incomingTablesTime = EMPTY_STRING, incomingTablesHash = 0],\n values,\n ] = contentOrChanges;\n const [tablesStampMap, valuesStampMap] = contentStampMap;\n const [tableStampMaps, oldTablesTime, oldTablesHash] = tablesStampMap;\n let tablesHash = isContent ? incomingTablesHash : oldTablesHash;\n let tablesTime = incomingTablesTime;\n objForEach(\n tablesObj,\n (\n [rowsObj, incomingTableTime = EMPTY_STRING, incomingTableHash = 0],\n tableId,\n ) => {\n const tableStampMap = mapEnsure(tableStampMaps, tableId, stampNewMap);\n const [rowStampMaps, oldTableTime, oldTableHash] = tableStampMap;\n let tableHash = isContent ? incomingTableHash : oldTableHash;\n let tableTime = incomingTableTime;\n objForEach(rowsObj, (row, rowId) => {\n const [rowTime, oldRowHash, rowHash] = mergeCellsOrValues(\n row,\n mapEnsure(rowStampMaps, rowId, stampNewMap),\n objEnsure(objEnsure(tablesChanges, tableId, objNew), rowId, objNew),\n isContent,\n );\n tableHash ^= isContent\n ? 0\n : (oldRowHash ? hashIdAndHash(rowId, oldRowHash) : 0) ^\n hashIdAndHash(rowId, rowHash);\n tableTime = getLatestTime(tableTime, rowTime);\n });\n tableHash ^= isContent\n ? 0\n : replaceTimeHash(oldTableTime, incomingTableTime);\n stampUpdate(tableStampMap, incomingTableTime, tableHash);\n tablesHash ^= isContent\n ? 0\n : (oldTableHash ? hashIdAndHash(tableId, oldTableHash) : 0) ^\n hashIdAndHash(tableId, tableStampMap[2]);\n tablesTime = getLatestTime(tablesTime, tableTime);\n },\n );\n tablesHash ^= isContent\n ? 0\n : replaceTimeHash(oldTablesTime, incomingTablesTime);\n stampUpdate(tablesStampMap, incomingTablesTime, tablesHash);\n const [valuesTime] = mergeCellsOrValues(\n values,\n valuesStampMap,\n valuesChanges,\n isContent,\n );\n seenHlc(getLatestTime(tablesTime, valuesTime));\n return [tablesChanges, valuesChanges, 1];\n };\n const mergeCellsOrValues = (\n things,\n thingsStampMap,\n thingsChanges,\n isContent,\n ) => {\n const [\n thingsObj,\n incomingThingsTime = EMPTY_STRING,\n incomingThingsHash = 0,\n ] = things;\n const [thingStampMaps, oldThingsTime, oldThingsHash] = thingsStampMap;\n let thingsTime = incomingThingsTime;\n let thingsHash = isContent ? incomingThingsHash : oldThingsHash;\n objForEach(\n thingsObj,\n ([thing, thingTime, incomingThingHash = 0], thingId) => {\n const thingStampMap = mapEnsure(thingStampMaps, thingId, () => [\n void 0,\n EMPTY_STRING,\n 0,\n ]);\n const [, oldThingTime, oldThingHash] = thingStampMap;\n if (!oldThingTime || thingTime > oldThingTime) {\n stampUpdate(\n thingStampMap,\n thingTime,\n isContent\n ? incomingThingHash\n : getHash(jsonStringWithMap(thing ?? null) + ':' + thingTime),\n );\n thingStampMap[0] = thing;\n thingsChanges[thingId] = thing;\n thingsHash ^= isContent\n ? 0\n : hashIdAndHash(thingId, oldThingHash) ^\n hashIdAndHash(thingId, thingStampMap[2]);\n thingsTime = getLatestTime(thingsTime, thingTime);\n }\n },\n );\n thingsHash ^= isContent\n ? 0\n : replaceTimeHash(oldThingsTime, incomingThingsTime);\n stampUpdate(thingsStampMap, incomingThingsTime, thingsHash);\n return [thingsTime, oldThingsHash, thingsStampMap[2]];\n };\n const preStartTransaction = () => {};\n const preFinishTransaction = () => {};\n const postFinishTransaction = () => {\n collClear(touchedCells);\n collClear(touchedValues);\n };\n const cellChanged = (tableId, rowId, cellId, newCell) => {\n setAdd(\n mapEnsure(mapEnsure(touchedCells, tableId, mapNew), rowId, setNew),\n cellId,\n );\n if (listeningToRawStoreChanges) {\n mergeContentOrChanges([\n [\n {\n [tableId]: [\n {\n [rowId]: [\n {\n [cellId]: [\n newCell,\n defaultingContent ? EMPTY_STRING : getHlc(),\n ],\n },\n ],\n },\n ],\n },\n ],\n [{}],\n 1,\n ]);\n }\n };\n const valueChanged = (valueId, newValue) => {\n setAdd(touchedValues, valueId);\n if (listeningToRawStoreChanges) {\n mergeContentOrChanges([\n [{}],\n [{[valueId]: [newValue, defaultingContent ? EMPTY_STRING : getHlc()]}],\n 1,\n ]);\n }\n };\n const getMergeableContent = () => [\n stampMapToObjWithHash(contentStampMap[0], (tableStampMap) =>\n stampMapToObjWithHash(tableStampMap, (rowStampMap) =>\n stampMapToObjWithHash(rowStampMap),\n ),\n ),\n stampMapToObjWithHash(contentStampMap[1]),\n ];\n const getMergeableContentHashes = () => [\n contentStampMap[0][2],\n contentStampMap[1][2],\n ];\n const getMergeableTableHashes = () =>\n mapToObj(contentStampMap[0][0], getStampHash);\n const getMergeableTableDiff = (otherTableHashes) => {\n const newTables = stampNewObj(contentStampMap[0][1]);\n const differingTableHashes = {};\n mapForEach(\n contentStampMap[0][0],\n (tableId, [tableStampMap, tableTime, hash]) =>\n objHas(otherTableHashes, tableId)\n ? hash != otherTableHashes[tableId]\n ? (differingTableHashes[tableId] = hash)\n : 0\n : (newTables[0][tableId] = stampMapToObjWithoutHash(\n [tableStampMap, tableTime],\n (rowStampMap) => stampMapToObjWithoutHash(rowStampMap),\n )),\n );\n return [newTables, differingTableHashes];\n };\n const getMergeableRowHashes = (otherTableHashes) => {\n const rowHashes = {};\n objForEach(otherTableHashes, (otherTableHash, tableId) =>\n ifNotUndefined(\n mapGet(contentStampMap[0][0], tableId),\n ([rowStampMaps, , tableHash]) =>\n tableHash != otherTableHash\n ? mapForEach(\n rowStampMaps,\n (rowId, [, , rowHash]) =>\n (objEnsure(rowHashes, tableId, objNew)[rowId] = rowHash),\n )\n : 0,\n ),\n );\n return rowHashes;\n };\n const getMergeableRowDiff = (otherTableRowHashes) => {\n const newRows = stampNewObj(contentStampMap[0][1]);\n const differingRowHashes = {};\n objForEach(otherTableRowHashes, (otherRowHashes, tableId) =>\n mapForEach(\n mapGet(contentStampMap[0][0], tableId)?.[0],\n (rowId, [rowStampMap, rowTime, hash]) =>\n objHas(otherRowHashes, rowId)\n ? hash !== otherRowHashes[rowId]\n ? (objEnsure(differingRowHashes, tableId, objNew)[rowId] = hash)\n : 0\n : (objEnsure(newRows[0], tableId, stampNewObj)[0][rowId] =\n stampMapToObjWithoutHash([rowStampMap, rowTime])),\n ),\n );\n return [newRows, differingRowHashes];\n };\n const getMergeableCellHashes = (otherTableRowHashes) => {\n const cellHashes = {};\n objForEach(otherTableRowHashes, (otherRowHashes, tableId) =>\n ifNotUndefined(mapGet(contentStampMap[0][0], tableId), ([rowStampMaps]) =>\n objForEach(otherRowHashes, (otherRowHash, rowId) =>\n ifNotUndefined(\n mapGet(rowStampMaps, rowId),\n ([cellStampMaps, , rowHash]) =>\n rowHash !== otherRowHash\n ? mapForEach(\n cellStampMaps,\n (cellId, [, , cellHash]) =>\n (objEnsure(\n objEnsure(cellHashes, tableId, objNew),\n rowId,\n objNew,\n )[cellId] = cellHash),\n )\n : 0,\n ),\n ),\n ),\n );\n return cellHashes;\n };\n const getMergeableCellDiff = (otherTableRowCellHashes) => {\n const [[tableStampMaps, tablesTime]] = contentStampMap;\n const tablesObj = {};\n objForEach(otherTableRowCellHashes, (otherRowCellHashes, tableId) =>\n objForEach(otherRowCellHashes, (otherCellHashes, rowId) =>\n ifNotUndefined(\n mapGet(tableStampMaps, tableId),\n ([rowStampMaps, tableTime]) =>\n ifNotUndefined(\n mapGet(rowStampMaps, rowId),\n ([cellStampMaps, rowTime]) =>\n mapForEach(cellStampMaps, (cellId, [cell, cellTime, hash]) =>\n hash !== otherCellHashes[cellId]\n ? (objEnsure(\n objEnsure(tablesObj, tableId, () =>\n stampNewObj(tableTime),\n )[0],\n rowId,\n () => stampNewObj(rowTime),\n )[0][cellId] = [cell, cellTime])\n : 0,\n ),\n ),\n ),\n ),\n );\n return stampNew(tablesObj, tablesTime);\n };\n const getMergeableValueHashes = () =>\n mapToObj(contentStampMap[1][0], getStampHash);\n const getMergeableValueDiff = (otherValueHashes) => {\n const [, [valueStampMaps, valuesTime]] = contentStampMap;\n const values = mapToObj(\n valueStampMaps,\n stampClone,\n ([, , hash], valueId) => hash == otherValueHashes?.[valueId],\n );\n return stampNew(values, valuesTime);\n };\n const setMergeableContent = (mergeableContent) =>\n disableListeningToRawStoreChanges(() =>\n validateMergeableContent(mergeableContent)\n ? store.transaction(() => {\n store.delTables().delValues();\n contentStampMap = newContentStampMap();\n store.applyChanges(mergeContentOrChanges(mergeableContent, 1));\n })\n : 0,\n );\n const setDefaultContent = (content) => {\n store.transaction(() => {\n defaultingContent = 1;\n store.setContent(content);\n defaultingContent = 0;\n });\n return mergeableStore;\n };\n const getTransactionMergeableChanges = (withHashes = false) => {\n const [\n [tableStampMaps, tablesTime, tablesHash],\n [valueStampMaps, valuesTime, valuesHash],\n ] = contentStampMap;\n const newStamp = withHashes ? stampNewWithHash : stampNew;\n const tablesObj = {};\n collForEach(touchedCells, (touchedTable, tableId) =>\n ifNotUndefined(\n mapGet(tableStampMaps, tableId),\n ([rowStampMaps, tableTime, tableHash]) => {\n const tableObj = {};\n collForEach(touchedTable, (touchedRow, rowId) =>\n ifNotUndefined(\n mapGet(rowStampMaps, rowId),\n ([cellStampMaps, rowTime, rowHash]) => {\n const rowObj = {};\n collForEach(touchedRow, (cellId) => {\n ifNotUndefined(\n mapGet(cellStampMaps, cellId),\n ([cell, time, hash]) =>\n (rowObj[cellId] = newStamp(cell, time, hash)),\n );\n });\n tableObj[rowId] = newStamp(rowObj, rowTime, rowHash);\n },\n ),\n );\n tablesObj[tableId] = newStamp(tableObj, tableTime, tableHash);\n },\n ),\n );\n const valuesObj = {};\n collForEach(touchedValues, (valueId) =>\n ifNotUndefined(\n mapGet(valueStampMaps, valueId),\n ([value, time, hash]) =>\n (valuesObj[valueId] = newStamp(value, time, hash)),\n ),\n );\n return [\n newStamp(tablesObj, tablesTime, tablesHash),\n newStamp(valuesObj, valuesTime, valuesHash),\n 1,\n ];\n };\n const applyMergeableChanges = (mergeableChanges) =>\n disableListeningToRawStoreChanges(() =>\n store.applyChanges(mergeContentOrChanges(mergeableChanges)),\n );\n const merge = (mergeableStore2) => {\n const mergeableChanges = getMergeableContent();\n const mergeableChanges2 = mergeableStore2.getMergeableContent();\n mergeableStore2.applyMergeableChanges(mergeableChanges);\n return applyMergeableChanges(mergeableChanges2);\n };\n const mergeableStore = {\n getMergeableContent,\n getMergeableContentHashes,\n getMergeableTableHashes,\n getMergeableTableDiff,\n getMergeableRowHashes,\n getMergeableRowDiff,\n getMergeableCellHashes,\n getMergeableCellDiff,\n getMergeableValueHashes,\n getMergeableValueDiff,\n setMergeableContent,\n setDefaultContent,\n getTransactionMergeableChanges,\n applyMergeableChanges,\n merge,\n };\n store.setInternalListeners(\n preStartTransaction,\n preFinishTransaction,\n postFinishTransaction,\n cellChanged,\n valueChanged,\n );\n objToArray(\n store,\n (method, name) =>\n (mergeableStore[name] = // fluent methods\n strStartsWith(name, SET) ||\n strStartsWith(name, DEL) ||\n strStartsWith(name, 'apply') ||\n strEndsWith(name, TRANSACTION) ||\n name == 'call' + LISTENER\n ? (...args) => {\n method(...args);\n return mergeableStore;\n }\n : strStartsWith(name, ADD) && strEndsWith(name, LISTENER)\n ? (...args) => {\n const listenerArg = LISTENER_ARGS[slice(name, 3, -8)] ?? 0;\n const listener = args[listenerArg];\n args[listenerArg] = (_store, ...args2) =>\n listener(mergeableStore, ...args2);\n return method(...args);\n }\n : name == 'isMergeable'\n ? () => true\n : method),\n );\n return objFreeze(mergeableStore);\n};\n\nexport {\n createCheckpoints,\n createIndexes,\n createMergeableStore,\n createMetrics,\n createQueries,\n createRelationships,\n createStore,\n defaultSorter,\n getUniqueId,\n};\n","import {createStore, Row} from 'tinybase';\nimport {getTemplate, VerdocsEndpoint} from '@verdocs/js-sdk';\nimport type {IEnvelope, IEnvelopeField, ITemplate, ITemplateField} from '@verdocs/js-sdk';\n\nconst store = createStore();\n\n// For now, we clear the database every page load to keep it clean and small.\n// We're only using it to synchronize data between isolated components. e-Signing\n// flows don't really benefit from \"offline-first\" approaches anyway, since most\n// of a user's interactions need to go through our servers anyway.\nstore.delTables();\nstore.delValues();\nconsole.log('[STORE] Data store initialized.');\n\nexport const safeJsonParse = (val: any, fallback?: any) => {\n try {\n return JSON.parse(val);\n } catch (e) {\n return fallback || null;\n }\n};\n\nexport const objectToRow = (obj: Object): Row => {\n const row: Row = {};\n for (let key in obj) {\n if (typeof obj[key] === 'string' || typeof obj[key] === 'number' || typeof obj[key] === 'boolean') {\n row[key] = obj[key];\n } else if (obj[key] === null) {\n row[`__null__${key}`] = '';\n } else if (Array.isArray(obj[key])) {\n row[`__array__${key}`] = JSON.stringify(obj[key]);\n } else if (typeof obj[key] === 'object') {\n row[`__object__${key}`] = JSON.stringify(obj[key]);\n }\n }\n\n return row;\n};\n\nexport const rowToObject = <T extends {}>(row: Row): T => {\n const obj = {} as T;\n\n for (let key in row) {\n if (key.startsWith('__null__')) {\n obj[key.replace('__null__', '')] = null;\n } else if (typeof row[key] === 'string' && key.startsWith('__array__')) {\n obj[key.replace('__array__', '')] = safeJsonParse(row[key]);\n } else if (typeof row[key] === 'string' && key.startsWith('__object__')) {\n obj[key.replace('__object__', '')] = safeJsonParse(row[key]);\n } else {\n obj[key] = row[key];\n }\n }\n\n return obj;\n};\n\nexport type TRowUpdatedCallback<T> = (row: T) => void;\nexport type TRowGetter<T> = () => Promise<T>;\n\nexport const Store = {\n store,\n\n // Extends the store's listener mechanism with two features:\n // 1. Apply typing to the return result, and pass the whole updated value to the callback instead\n // of just the \"changes\".\n // 2. Fire the callback immediately with the current value, so that the component can initialize.\n subscribe<T extends object>(tableId: string, rowId: string, getter: TRowGetter<T>, forceReload: boolean, callback: TRowUpdatedCallback<T>): string {\n // We call the callback immediately if the row exists so we get an SWR-like behavior.\n if (store.hasRow(tableId, rowId)) {\n callback(rowToObject<T>(store.getRow(tableId, rowId)));\n }\n\n const listenerId = store.addRowListener(tableId, rowId, () => {\n const row = store.getRow(tableId, rowId);\n callback(rowToObject<T>(row));\n });\n\n if (!store.hasRow(tableId, rowId) || forceReload) {\n console.log('[STORE] Loading/reloading', {tableId, rowId});\n getter()\n .then(result => {\n // We don't need to call the callback because it's already listening\n store.setRow(tableId, rowId, objectToRow(result));\n })\n .catch(e => {\n console.error('[STORE] Error getting row', {tableId, rowId, forceReload}, e);\n });\n }\n\n return listenerId;\n },\n\n unsubscribe(listenerId: string) {\n store.delListener(listenerId);\n },\n\n async getTemplate(endpoint: VerdocsEndpoint, templateId: string, reload: boolean = false): Promise<ITemplate | null> {\n if (!reload) {\n if (!store.hasRow('templates', templateId)) {\n return null;\n }\n\n const row = store.getRow('templates', templateId);\n return rowToObject<ITemplate>(row);\n }\n\n const template = await getTemplate(endpoint, templateId);\n console.log('[STORE] Reloading template', template);\n store.setRow('templates', templateId, objectToRow(template));\n return template;\n },\n\n updateTemplate(templateId: string, template: ITemplate) {\n store.setRow('templates', templateId, objectToRow(template));\n return template;\n },\n\n async getEnvelope(endpoint: VerdocsEndpoint, envelopeId: string, reload: boolean = false): Promise<ITemplate | null> {\n if (!reload) {\n if (!store.hasRow('envelopes', envelopeId)) {\n return null;\n }\n\n const row = store.getRow('envelopes', envelopeId);\n return rowToObject<ITemplate>(row);\n }\n\n const envelope = await getTemplate(endpoint, envelopeId);\n store.setRow('envelopes', envelopeId, objectToRow(envelope));\n return envelope;\n },\n\n updateEnvelope(envelopeId: string, envelope: IEnvelope) {\n store.setRow('envelopes', envelopeId, objectToRow(envelope));\n return envelope;\n },\n\n // Get a field from an already-loaded envelope or template. Intended to be\n // called by the verdocs-field-* components themselves which are only rendered\n // after a template or envelope is already loaded and cached in the store, so\n // no attempt is made to load the parent record if it isn't already known.\n getField(source: 'template' | 'envelope', sourceId: string, fieldName: string, fieldOverride: ITemplateField | IEnvelopeField | null | undefined) {\n if (source === 'template') {\n const row = store.getRow('templates', sourceId);\n const template = rowToObject<ITemplate>(row);\n const field = (template.fields || []).find(field => field.name === fieldName);\n\n const roleNames = (template.roles || []).map(role => role.name);\n const index = roleNames.findIndex(name => name === field.role_name);\n\n return {index: Math.max(index, 0), field: fieldOverride || field};\n } else {\n const row = store.getRow('envelopes', sourceId);\n const envelope = rowToObject<IEnvelope>(row);\n const field = (envelope.fields || []).find(field => field.name === fieldName);\n\n const roleNames = (envelope.recipients || []).map(recipient => recipient.role_name);\n const index = roleNames.findIndex(name => name === field.role_name);\n\n return {index, field: fieldOverride || field};\n }\n },\n};\n"],"mappings":"8CAAA,MAAMA,EAAaC,UAAiBA,EACpC,MAAMC,EAAe,GACrB,MAAMC,EAASH,EAAUE,GACzB,MAAME,EAAUJ,EAAU,MAC1B,MAAMK,EAASL,EAAU,GACzB,MAAMM,EAAWN,EAAUA,GAC3B,MAAMO,EAAO,OACb,MAAMC,EAAU,UAKhB,MAAMC,EAAW,WAIjB,MAAMC,EAAM,MAEZ,MAAMC,EAAM,MACZ,MAAMC,EAAM,MACZ,MAAMC,EAAQ,QACd,MAAMC,EAASD,EAAQ,IACvB,MAAME,EAAYF,EAAQD,EAC1B,MAAMI,EAAM,MACZ,MAAMC,EAAYD,EAAM,QACxB,MAAME,EAAUF,EAAMJ,EAEtB,MAAMO,EAAO,OACb,MAAMC,EAAWD,EAAOP,EACxB,MAAMS,EAAQ,QACd,MAAMC,EAASD,EAAQ,IACvB,MAAME,EAAYF,EAAQT,EAE1B,MAAMY,EAAMC,GAAQvB,EAAeuB,EAWnC,MAAMC,EAAiBC,SACvB,MAAMC,EAAe,CAAC3B,EAAO4B,IAAQ5B,aAAiB4B,EACtD,MAAMC,EAAe7B,GAAUA,QAAc,EAC7C,MAAM8B,EAAiB,CAACC,EAAOC,EAAMC,IACnCJ,EAAYE,GAASE,MAAgBD,EAAKD,GAC5C,MAAMG,EAAyBC,GAASA,GAAQjC,GAAUiC,GAAQhC,EAElE,MAAMiC,EAAcpC,GAAUD,EAAUC,IAAUK,EAClD,MAAMgC,EAAWrC,GAAUsC,MAAMD,QAAQrC,GACzC,MAAMuC,EAAQ,CAACC,EAAeC,EAAOC,IAAQF,EAAcD,MAAME,EAAOC,GACxE,MAAMC,EAAQH,GAAkBA,EAAcI,OAC9C,MAAMC,EAAO,CAACC,EAAOC,IAAYD,EAAMD,KAAKE,GAG5C,MAAMC,EAAW,CAACC,EAAOlB,IAAUkB,EAAMC,SAASnB,GAClD,MAAMoB,EAAa,CAACF,EAAOG,IAAOH,EAAMI,MAAMD,GAC9C,MAAME,EAAe,CAACC,EAAQC,IAC5Bb,EAAKY,KAAYZ,EAAKa,IACtBL,EAAWI,GAAQ,CAACE,EAAQC,IAAUF,EAAOE,KAAWD,IAM1D,MAAME,EAAY,CAACV,EAAOW,IAAWX,EAAMY,KAAKD,GAChD,MAAME,EAAe,CAACb,EAAOG,IAAOH,EAAMc,QAAQX,GAClD,MAAMY,EAAW,CAACf,EAAOG,IAAOH,EAAMgB,IAAIb,GAG1C,MAAMc,EAAc,CAACjB,EAAOG,EAAIe,IAAYlB,EAAMmB,OAAOhB,EAAIe,GAE7D,MAAME,EAAY,CAACpB,KAAUqB,IAAWrB,EAAMsB,QAAQD,GAGtD,MAAME,EAAcvB,GAAUA,EAAMwB,QAEpC,MAAMC,EAASC,OACf,MAAMC,EAAkBC,GAAQH,EAAOE,eAAeC,GACtD,MAAMC,EAAaJ,EAAOK,QAC1B,MAAMC,EAAYN,EAAOO,SACzB,MAAMC,EAAYL,IACfhD,EAAYgD,IACb/C,EACE8C,EAAeC,IACdM,GACCA,GAAgBT,EAAOU,WACvBvD,EAAY+C,EAAeO,MAG7B,IAAM,OAEV,MAAME,EAASX,EAAOY,KACtB,MAAMC,EAAYb,EAAOc,OAEzB,MAAMC,EAAS,CAACZ,EAAKtD,IAAOA,KAAMsD,EAClC,MAAMa,EAAS,CAACb,EAAKtD,YACZsD,EAAItD,GACX,OAAOsD,CAAG,EAIZ,MAAMc,EAAa,CAACd,EAAKzB,IACvBY,EAASc,EAAWD,IAAM,EAAEtD,EAAIQ,KAAWqB,EAAGrB,EAAOR,KACvD,MAAMqE,GAAWf,GAAQlC,EAAK0C,EAAOR,IACrC,MAAMgB,GAAchB,GAAQK,EAASL,IAAQe,GAAQf,IAAQ,EAO7D,MAAMiB,GAAc,CAACjB,EAAKkB,EAAeC,EAAcC,EAAe,KACpE,GACEpE,EAAYgD,KACXK,EAASL,KACRoB,GAAgBJ,GAAWhB,IAC7BG,EAAUH,GACV,CACAmB,MACA,OAAO,KACX,CACEL,EAAWd,GAAK,CAACqB,EAAO3E,KACtB,IAAKwE,EAAcG,EAAO3E,GAAK,CAC7BmE,EAAOb,EAAKtD,EAClB,KAEE,OAAO0E,EAAe,MAAQJ,GAAWhB,EAAI,EAG/C,MAAMsB,GAAaC,GAAeC,GAChCnC,EAAYoC,GAAWD,IAAO,CAACE,EAAOC,IAAUD,EAAQH,EAAUI,IAAQ,GAC5E,MAAMC,GAAYJ,GAASA,GAAM1D,MAAQ,EACzC,MAAM+D,GAAYP,GAAUM,IAC5B,MAAME,GAAYR,GAAUO,IAC5B,MAAME,GAAYT,GAAUQ,IAC5B,MAAME,GAAU,CAACR,EAAMS,IAAeT,GAAMU,IAAID,IAAe,MAC/D,MAAME,GAAeX,GAASxE,EAAYwE,IAASI,GAASJ,IAAS,EACrE,MAAMC,GAAcD,GAAS,IAAKA,GAAM/B,UAAY,IACpD,MAAM2C,GAAaZ,GAASA,EAAKa,QACjC,MAAMC,GAAc,CAACd,EAAMjD,IAAOiD,GAAMtC,QAAQX,GAChD,MAAMgE,GAAU,CAACf,EAAMS,IAAeT,GAAMgB,OAAOP,GAEnD,MAAMQ,GAAUvC,GAAY,IAAIwC,IAAIxC,GACpC,MAAMyC,GAAWvD,GAAQ,IAAKA,GAAKqB,QAAU,IAC7C,MAAMmC,GAAS,CAACxD,EAAKzC,IAAQyC,GAAKyD,IAAIlG,GACtC,MAAMmG,GAAa,CAAC1D,EAAKb,IACvB+D,GAAYlD,GAAK,CAAClC,EAAOP,IAAQ4B,EAAG5B,EAAKO,KAC3C,MAAM6F,GAAS,CAACvB,EAAMjD,IACpBY,EAAS,IAAKqC,GAAMtB,WAAa,KAAM,EAAEvD,EAAKO,KAAWqB,EAAGrB,EAAOP,KACrE,MAAMqG,GAAS,CAAC5D,EAAKzC,EAAKO,IACxBF,EAAYE,IAAUqF,GAAQnD,EAAKzC,GAAMyC,GAAOA,GAAK6D,IAAItG,EAAKO,GAChE,MAAMgG,GAAY,CAAC9D,EAAKzC,EAAKwG,EAAiBC,KAC5C,IAAKpB,GAAQ5C,EAAKzC,GAAM,CACtBqG,GAAO5D,EAAKzC,EAAKwG,IACrB,KAAS,CACLC,IAAmBR,GAAOxD,EAAKzC,GACnC,CACE,OAAOiG,GAAOxD,EAAKzC,EAAI,EAEzB,MAAM0G,GAAW,CAACjE,EAAKY,EAAKiD,EAAKK,EAAMN,MACrClC,EAAWd,GAAK,CAAC9C,EAAOR,IAAOuG,EAAI7D,EAAK1C,EAAIQ,KAC5C4F,GAAW1D,GAAM1C,GAAQkE,EAAOZ,EAAKtD,GAAM,EAAI4G,EAAIlE,EAAK1C,KACxD,OAAO0C,CAAG,EAEZ,MAAMmE,GAAW,CAACnE,EAAKoE,EAAaC,EAAiBC,KACnD,MAAM1D,EAAM,GACZsC,GAAYlD,GAAK,CAACuE,EAAUjH,KAC1B,IAAK+G,IAAkBE,EAAUjH,GAAK,CACpC,MAAMkH,EAAWJ,EAAcA,EAAYG,EAAUjH,GAAMiH,EAC3D,IAAKD,IAAkBE,GAAW,CAChC5D,EAAItD,GAAMkH,CAClB,CACA,KAEE,OAAO5D,CAAG,EAEZ,MAAM6D,GAAY,CAACzE,EAAKoE,EAAaC,IACnCF,GACEnE,GACC0E,GAAaP,GAASO,EAAUN,EAAaC,IAC9CtB,GACAnB,IAEJ,MAAM+C,GAAY,CAAC3E,EAAKoE,EAAaC,IACnCF,GACEnE,GACC0E,GAAaD,GAAUC,EAAUN,EAAaC,IAC/CtB,GACAnB,IAEJ,MAAMgD,GAAW,CAAC5E,EAAKuE,KACrB,MAAMM,EAAOxB,KACbH,GAAYlD,GAAK,CAAClC,EAAOP,IAAQsH,EAAKhB,IAAItG,EAAKgH,IAAWzG,IAAUA,KACpE,OAAO+G,CAAI,EAEb,MAAMC,GAAa9E,GAAQ4E,GAAS5E,EAAK4E,IACzC,MAAMG,GAAa/E,GAAQ4E,GAAS5E,EAAK8E,IACzC,MAAME,GAAY,CAACC,EAAMC,EAAMC,EAAYC,EAAWC,EAAI,IACxDxH,GACGsH,EAAarB,GAAYN,IACxByB,EACAC,EAAKG,GACLA,EAAI3G,EAAKwG,GAAQ,EAAIC,EAAa9B,KAEnCiC,IACC,GAAID,EAAI3G,EAAKwG,GAAQ,EAAG,CACtB,GAAIE,IAAYE,GAAa,CAC3B1B,GAAOqB,EAAMC,EAAKG,GAC5B,CACQ,OAAOC,CACf,CACM,MAAMC,EAAOP,GAAUM,EAAYJ,EAAMC,EAAYC,EAAWC,EAAI,GACpE,GAAItC,GAAYuC,GAAa,CAC3B1B,GAAOqB,EAAMC,EAAKG,GAC1B,CACM,OAAOE,CAAI,IAIjB,MAAMC,GAAsBC,IAC1B,MAAMvH,EAAOpC,EAAU2J,GACvB,OAAOxH,EAAsBC,IAC1BA,GAAQ/B,GAAUqB,EAAeiI,GAChCvH,OACK,CAAC,EAIZ,MAAMwH,GAAe,CAACC,EAAOC,EAASC,EAAOC,EAAQC,IACnDnI,EAAYmI,GACRJ,EAAMK,QAAQJ,EAASC,EAAOC,EAAQ,MACtCH,EAAMM,QAAQL,EAASC,EAAOC,EAAQC,GAC5C,MAAMG,GAAgB,CAACP,EAAOQ,EAASrI,IACrCF,EAAYE,GAAS6H,EAAMS,SAASD,GAAWR,EAAMU,SAASF,EAASrI,GAEzE,MAAMwI,GAAUC,GACd,IAAIC,IACFpI,EAAQmI,IAAmB3I,EAAY2I,GACnCA,EACA,CAACA,IAET,MAAME,GAAS,CAAC5C,EAAK/F,IAAU+F,GAAK6C,IAAI5I,GA8KxC,MAAM6I,GAAU,QAChB,MAAMC,GAAmB,KACvB,MAAMC,EAAO,GACb,IAAIC,EAAS,EACb,MAAO,CACJC,IAAWA,EAAQxG,EAAWsG,GAAQ,OAAS7K,EAAe8K,IAC9DxJ,IACC,GAAIsB,EAAK+H,GAASrJ,IAAOoB,EAAKmI,GAAQ,IAAK,CACzCzG,EAAUyG,EAAMvJ,EACxB,GAEG,EAGH,MAAM0J,GAAsB,CAACC,EAAW/B,EAAO,CAAClJ,MAC9C,MAAMkL,EAAS,GACf,MAAMC,EAAO,CAAClC,EAAMI,IAClBA,GAAK3G,EAAKwG,GACN9E,EAAU8G,EAAQjC,GAClBC,EAAKG,KAAO,KACVnC,GAAY+B,GAAOmC,GAAUD,EAAKC,EAAO/B,EAAI,KAC7CxF,EAAa,CAACqF,EAAKG,GAAI,OAAQ/H,GAAO6J,EAAK3D,GAAOyB,EAAM3H,GAAK+H,EAAI,KACzE8B,EAAKF,EAAW,GAChB,OAAOC,CAAM,EAEf,MAAMG,GAAwBC,IAC5B,IAAIvL,EACJ,MAAOwL,EAAOC,GAAaZ,KAC3B,MAAMa,EAAepE,KACrB,MAAMqE,EAAc,CAClBC,EACAC,EACA1C,EACA2C,EAAc,GACdC,EAAkB,KAAM,OAExB/L,IAAUuL,IACV,MAAMhK,EAAKiK,EAAM,GACjB3D,GAAO6D,EAAcnK,EAAI,CACvBqK,EACAC,EACA1C,EACA2C,EACAC,IAEFrB,GAAOzB,GAAU4C,EAAW1C,GAAQ,CAAClJ,GAAesK,IAAShJ,GAC7D,OAAOA,CAAE,EAEX,MAAMyK,EAAgB,CAACH,EAAWI,KAAQC,IACxCpI,EAAamH,GAAoBY,EAAWI,IAAOnE,GACjDX,GAAYW,GAAMvG,GAChBkG,GAAOiE,EAAcnK,GAAI,GAAGvB,KAAWiM,GAAO,MAAQC,OAG5D,MAAMC,EAAe5K,GACnBO,EAAe2F,GAAOiE,EAAcnK,IAAK,EAAC,CAAGsK,EAAWO,MACtDnD,GAAU4C,EAAWO,GAAa,CAACnM,QAAoB,GAAIoM,IACzDjF,GAAQiF,EAAO9K,GACf,OAAOyF,GAAYqF,GAAS,EAAI,CAAC,IAEnCxE,GAAO6D,EAAcnK,GACrBkK,EAAUlK,GACV,OAAO6K,CAAS,IAEpB,MAAME,EAAgB/K,GACpBO,EACE2F,GAAOiE,EAAcnK,IACrB,EAAEqK,EAAQ,CAAIzC,EAAO,GAAI2C,EAAaC,MACpC,MAAMQ,EAAc,IAAIN,KACtB,MAAMvI,EAAQf,EAAKsJ,GACnB,GAAIvI,GAASf,EAAKwG,GAAO,CACvByC,EAAS5L,KAAUiM,KAAQF,EAAgBE,GACvD,MAAiB,GAAIpK,EAAYsH,EAAKzF,IAAS,CACnCI,EAAagI,EAAYpI,QAAYuI,IAAQ,IAAKO,GAChDD,KAAeN,EAAKO,IAElC,KAAiB,CACLD,KAAeN,EAAK9C,EAAKzF,GACrC,GAEQ6I,GAAa,IAGnB,MAAO,CAACZ,EAAaK,EAAeG,EAAaG,EAAa,EA4QhE,MAAMG,GAAgB,CAACC,EAAUC,KAC9BD,GAAY,IAAMC,GAAY,IAAM,EAAI,EA+iC3C,MAAMC,GAAW7K,GAAU,CAACA,EAAOA,GACnC,MAAM8K,GAAgB,CAACC,EAAMC,EAAOrG,KAAcqG,EAAKD,EAAK,IAAMC,EAAKD,EAAK,IAC5E,MAAME,GAAa,IAAM,CAAC1F,KAAUA,MACpC,MAAM2F,GAAahK,GAAU,IAAIA,GACjC,MAAMiK,GAAc,EAAEC,EAAQC,KAAYD,IAAWC,EAErD,MAAMC,GAAaC,KAAKC,UACxB,MAAMC,GAAYF,KAAKG,MACvB,MAAMC,GAAqB7I,GACzBwI,GAAWxI,GAAK,CAAC8I,EAAM5L,IACrBJ,EAAaI,EAAOwF,KAAO7C,EAAOkJ,YAAY,IAAI7L,IAAUA,IAGhE,MAAM8L,GAAa,CAACC,EAAYtB,EAAKuB,IACnClG,GACEiG,EACAtB,EACA/E,GAAOqG,EAAYtB,KAASuB,OAAsB,EAAIA,GAE1D,MAAMC,GAAc,KAClB,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EAAY,MAChB,IAAIC,EAAY,MAChB,IAAIC,EAAe,EACnB,IAAIC,EAAoB,GACxB,MAAMC,EAAkBjH,KACxB,MAAMkH,EAAsBlH,KAC5B,MAAMmH,EAAkBnH,KACxB,MAAMoH,EAAgBpH,KACtB,MAAMqH,EAAiBrH,KACvB,MAAMsH,EAAetH,KACrB,MAAMuH,EAAkBvH,KACxB,MAAMwH,EAAgBxH,KACtB,MAAMyH,EAAezH,KACrB,MAAM0H,EAAgB1H,KACtB,MAAM2H,EAAkB3H,KACxB,MAAM4H,EAAuB5H,KAC7B,MAAM6H,EAAkB7H,KACxB,MAAM8H,EAAkB9H,KACxB,MAAM+H,GAAqB9E,KAC3B,MAAM+E,GAAqBhI,KAC3B,MAAMiI,GAAejI,KACrB,MAAMkI,GAAYlI,KAClB,MAAMmI,GAAYnI,KAClB,MAAMoI,GAAqB1C,KAC3B,MAAM2C,GAAkB3C,KACxB,MAAM4C,GAAoB5C,KAC1B,MAAM6C,GAAoB7C,KAC1B,MAAM8C,GAAiB9C,KACvB,MAAM+C,GAAwB/C,KAC9B,MAAMgD,GAAwBhD,KAC9B,MAAMiD,GAAoBjD,KAC1B,MAAMkD,GAAkBlD,KACxB,MAAMmD,GAAwBnD,KAC9B,MAAMoD,GAAkBpD,KACxB,MAAMqD,GAAerD,KACrB,MAAMsD,GAAmBtD,KACzB,MAAMuD,GAAmBvD,KACzB,MAAMwD,GAAgBxD,KACtB,MAAMyD,GAAuBzD,KAC7B,MAAM0D,GAAwB1D,KAC9B,MAAM2D,GAAqB3D,KAC3B,MAAM4D,GAAkB5D,KACxB,MAAM6D,GAAoB7D,KAC1B,MAAM8D,GAAoB9D,KAC1B,MAAM+D,GAAiB/D,KACvB,MAAMgE,GAA4B1J,KAClC,MAAM2J,GAA6BjE,KACnC,MAAOrB,GAAaK,GAAekF,GAAiBC,IAClD7F,IAAqB,IAAM1B,KAC7B,MAAMwH,GAAwBC,GAC5BvL,GAAYuL,GAAcC,GACxBxL,GAAYwL,EAAcC,MAE9B,MAAMC,GAAwBC,GAC5B3L,GAAY2L,EAAcF,IAC5B,MAAMA,GAA6BG,IACjC,IAAK5L,GAAY4L,GAAQ,CAACC,EAAQnF,IAAQxJ,EAAS,CAAC1C,EAAMC,GAAUiM,KAAO,CACzE,OAAO,KACb,CACI,MAAMrK,EAAOuP,EAAOpR,GACpB,IAAK4B,EAAsBC,IAASA,GAAQ/B,EAAQ,CAClD,OAAO,KACb,CACI,GAAIqJ,GAAmBiI,EAAOnR,KAAa4B,EAAM,CAC/CuD,EAAOgM,EAAQnR,EACrB,CACI,OAAO,IAAI,EAEb,MAAMqR,GAAkBvP,EACxB,MAAMwP,GAAkBC,GACtBhM,GAAYgM,EAAQC,GAAeC,IACrC,MAAMD,GAAgB,CAACE,EAAOpI,MAC1BoE,GACApH,GAAQoI,EAAiBpF,IAEzBmI,GAAYnI,KACd/D,GACEmM,GACA,CAACC,EAAKpI,IAAUqI,GAAYtI,EAASC,EAAOoI,KAC5C,IAAMF,GAAYnI,KAEtB,MAAMsI,GAAc,CAACtI,EAASC,EAAOoI,EAAKE,IACxCtM,GACEsM,EAAeF,EAAMG,GAAiBH,EAAKrI,EAASC,IACpD,CAACE,EAAMD,IACLjI,EACEwQ,GAAiBzI,EAASC,EAAOC,EAAQC,IACxCuI,IACCL,EAAInI,GAAUwI,EACd,OAAO,IAAI,IAEb,IAAM,UAEV,IAAMP,GAAYnI,EAASC,KAE/B,MAAMwI,GAAmB,CAACzI,EAASC,EAAOC,EAAQC,IAChDiE,EACInM,EACE2F,GAAOA,GAAOwH,EAAiBpF,GAAUE,IACxCyI,GACC/I,GAAmBO,IAASwI,EAAWlS,GACnC0R,GAAYnI,EAASC,EAAOC,EAAQC,EAAMwI,EAAWjS,IACrDyJ,IACN,IAAMgI,GAAYnI,EAASC,EAAOC,EAAQC,KAE5CnI,EAAY4H,GAAmBO,IAC7BgI,GAAYnI,EAASC,EAAOC,EAAQC,GACpCA,EACR,MAAMyI,GAAiB,CAACnO,EAAQ8N,IAC9BtM,GACEsM,EAAe9N,EAASoO,GAAoBpO,IAC5C,CAACvC,EAAOqI,IACNtI,EACE6Q,GAAkBvI,EAASrI,IAC1B6Q,IACCtO,EAAO8F,GAAWwI,EAClB,OAAO,IAAI,IAEb,IAAM,UAEV,IAAMC,OAEV,MAAMF,GAAoB,CAACvI,EAASrI,IAClCmM,EACIpM,EACE2F,GAAO0H,EAAiB/E,IACvB0I,GACCrJ,GAAmB1H,IAAU+Q,EAAYxS,GACrCuS,GAAazI,EAASrI,EAAO+Q,EAAYvS,IACzCwB,IACN,IAAM8Q,GAAazI,EAASrI,KAE9BF,EAAY4H,GAAmB1H,IAC7B8Q,GAAazI,EAASrI,GACtBA,EACR,MAAMsQ,GAAmB,CAACH,EAAKrI,EAASC,KACtChI,EACE2F,GAAOyH,EAAsBrF,IAC7B,EAAEkJ,EAAcC,MACd7L,GAAY4L,GAAc,CAAC/I,EAAMD,KAC/B,IAAKtE,EAAOyM,EAAKnI,GAAS,CACxBmI,EAAInI,GAAUC,CAC1B,KAEQ7C,GAAY6L,GAAkBjJ,IAC5B,IAAKtE,EAAOyM,EAAKnI,GAAS,CACxBiI,GAAYnI,EAASC,EAAOC,EACxC,IACU,IAGN,OAAOmI,CAAG,EAEZ,MAAMQ,GAAuBpO,IAC3B,GAAI4J,EAAiB,CACnB/G,GAAYiI,GAAiB,CAACrN,EAAOqI,KACnC,IAAK3E,EAAOnB,EAAQ8F,GAAU,CAC5B9F,EAAO8F,GAAWrI,CAC5B,KAEMoF,GAAYkI,IAAqBjF,IAC/B,IAAK3E,EAAOnB,EAAQ8F,GAAU,CAC5ByI,GAAazI,EACvB,IAEA,CACI,OAAO9F,CAAM,EAEf,MAAM2O,GAAwBC,GAC5BhL,GACE+G,EACAiE,GACA,CAACC,EAAetJ,EAASwH,KACvB,MAAM0B,EAAezL,KACrB,MAAM0L,EAAkBzI,KACxBrC,GACEH,GAAUkH,EAAiBpF,EAASvC,IACpC+J,GACA,CAAC+B,EAAgBrJ,EAAQyI,KACvB3K,GAAOuL,EAAgBrJ,EAAQyI,GAC/B1Q,EACE0Q,EAAWjS,IACV8S,GAAQxL,GAAOkL,EAAchJ,EAAQsJ,KACtC,IAAM3I,GAAOsI,EAAiBjJ,IAC/B,IAGLlC,GAAOqH,EAAsBrF,EAAS,CAACkJ,EAAcC,GAAiB,IAExE,CAACG,EAAetJ,KACdhC,GAAOoH,EAAiBpF,GACxBhC,GAAOqH,EAAsBrF,EAAQ,IAG3C,MAAMyJ,GAAwB7B,GAC5BvJ,GACEiH,EACAsC,GACA,CAAC8B,EAAenJ,EAAS0I,KACvBjL,GAAOsH,EAAiB/E,EAAS0I,GACjChR,EACEgR,EAAYvS,IACX8S,GAAQxL,GAAOuH,EAAiBhF,EAASiJ,KAC1C,IAAM3I,GAAO2E,GAAoBjF,IAClC,IAEH,CAACmJ,EAAenJ,KACdvC,GAAOsH,EAAiB/E,GACxBvC,GAAOuH,EAAiBhF,GACxBhD,GAAQiI,GAAoBjF,EAAQ,IAG1C,MAAMoJ,GAAkB1B,GACtBjM,GAAWiM,GAAU2B,KAAcC,GAAU5B,GAC/C,MAAM6B,GAAkB,EAAE7B,EAAQxN,OAC/BuB,GAAWiM,GAAU2B,GAAYC,IAAW5B,IAC5CjM,GAAWvB,GAAUsP,GAAYC,IAAWvP,EAAO,EAEtD,MAAMwP,GAAkBhC,GACtB5J,GACEsH,GACAsC,GACA,CAACiC,EAASlK,EAASoI,IAAU+B,GAAcnK,EAASoI,KACpD,CAAC8B,EAASlK,IAAYoK,GAAcpK,KAExC,MAAMmK,GAAgB,CAACnK,EAASoI,IAC9B/J,GACEH,GAAUyH,GAAW3F,GAAS,KAC5BqK,GAAgBrK,EAAS,GACzBhC,GAAOyH,GAAoBzF,EAASgB,MACpChD,GAAO0H,GAAc1F,EAASvC,MAC9B,OAAOA,IAAQ,IAEjB2K,GACA,CAACkC,EAAUrK,EAAOoI,IAAQkC,GAAYvK,EAASsK,EAAUrK,EAAOoI,KAChE,CAACiC,EAAUrK,IAAUuK,GAAYxK,EAASsK,EAAUrK,KAExD,MAAMsK,GAAc,CAACvK,EAASsK,EAAUrK,EAAOoI,EAAKoC,IAClDpM,GACEH,GAAUoM,EAAUrK,GAAO,KACzByK,GAAc1K,EAASC,EAAO,GAC9B,OAAOxC,IAAQ,IAEjB4K,GACA,CAACsC,EAAQzK,EAAQC,IACfyK,GAAa5K,EAASC,EAAO0K,EAAQzK,EAAQC,KAC/C,CAACwK,EAAQzK,IACP2K,GAAa7K,EAASsK,EAAUrK,EAAO0K,EAAQzK,EAAQuK,KAE7D,MAAMG,GAAe,CAAC5K,EAASC,EAAO0K,EAAQzK,EAAQC,KACpD,IAAKnD,GAAQ2N,EAAQzK,GAAS,CAC5B4K,GAAe9K,EAASC,EAAOC,EAAQ,EAC7C,CACI,MAAM6K,EAAUnN,GAAO+M,EAAQzK,GAC/B,GAAIC,IAAS4K,EAAS,CACpBC,GAAYhL,EAASC,EAAOC,EAAQ6K,EAAS5K,GAC7CnC,GAAO2M,EAAQzK,EAAQC,EAC7B,GAEE,MAAM8K,GAAwB,CAACjL,EAASsK,EAAUrK,EAAOC,EAAQwI,IAC/DzQ,EACE2F,GAAO0M,EAAUrK,IAChB0K,GAAWC,GAAa5K,EAASC,EAAO0K,EAAQzK,EAAQwI,KACzD,IACE6B,GACEvK,EACAsK,EACArK,EACAuI,GAAiB,CAACtI,CAACA,GAASwI,GAAY1I,EAASC,MAGzD,MAAMiL,GAAkBzQ,GACtBuB,GAAWvB,GAAUsP,KAAcC,GAAUvP,GAC/C,MAAM0Q,GAAkB1Q,GACtB4D,GACEuH,GACAnL,GACA,CAAC2Q,EAAY7K,EAASrI,IAAUmT,GAAc9K,EAASrI,KACvD,CAACkT,EAAY7K,IAAY+K,GAAc/K,KAE3C,MAAM8K,GAAgB,CAAC9K,EAASrI,KAC9B,IAAK8E,GAAQ4I,GAAWrF,GAAU,CAChCgL,GAAgBhL,EAAS,EAC/B,CACI,MAAMiL,EAAW5N,GAAOgI,GAAWrF,GACnC,GAAIrI,IAAUsT,EAAU,CACtBC,GAAalL,EAASiL,EAAUtT,GAChC8F,GAAO4H,GAAWrF,EAASrI,EACjC,GAEE,MAAMwT,GAAc,CAAC1L,EAASmB,KAC5B,MAAOQ,GAAS/D,GAAO6H,GAAoBzF,GAC3C,IAAIC,EACJ,EAAG,CACDA,EAAQ0B,EAAMR,EACpB,OAAanE,GAAQY,GAAO+H,GAAW3F,GAAUC,IAC7C,OAAOA,CAAK,EAEd,MAAM0L,GAAoB3L,GACxBpC,GAAO+H,GAAW3F,IAAYmK,GAAcnK,EAAS,IACvD,MAAMoK,GAAiBpK,GAAYmK,GAAcnK,EAAS,IAC1D,MAAMwK,GAAc,CAACxK,EAASsK,EAAUrK,KACtC,MAAM,CAAG2B,GAAahE,GAAO6H,GAAoBzF,GACjD4B,EAAU3B,GACVsK,GAAYvK,EAASsK,EAAUrK,EAAO,GAAI,KAAK,EAEjD,MAAM4K,GAAe,CAAC7K,EAASoI,EAAOnI,EAAOoI,EAAKnI,EAAQuK,KACxD,MAAMmB,EAAchO,GAClBA,GAAOyH,EAAsBrF,KAAW,GACxCE,GAEF,IAAKlI,EAAY4T,KAAiBnB,EAAU,CAC1C,OAAOG,GAAa5K,EAASC,EAAOoI,EAAKnI,EAAQ0L,EACvD,CACI,MAAMC,EAAYC,IAChBd,GAAYhL,EAASC,EAAO6L,EAASlO,GAAOyK,EAAKyD,IACjDhB,GAAe9K,EAASC,EAAO6L,GAAU,GACzC9N,GAAOqK,EAAKyD,EAAQ,EAEtB,GAAI9T,EAAY4T,GAAc,CAC5BC,EAAS3L,EACf,KAAW,CACLpC,GAAWuK,EAAKwD,EACtB,CACI,GAAI1O,GAAYkL,GAAM,CACpBqC,GAAc1K,EAASC,GAAQ,GAC/B,GAAI9C,GAAYa,GAAOoK,EAAOnI,IAAS,CACrCoK,GAAgBrK,GAAU,GAC1BhC,GAAO2H,GAAW3F,GAClBhC,GAAOyH,GAAoBzF,GAC3BhC,GAAO0H,GAAc1F,EAC7B,CACA,GAEE,MAAMsL,GAAiB/K,IACrB,MAAMwL,EAAenO,GAAO2H,EAAiBhF,GAC7C,IAAKvI,EAAY+T,GAAe,CAC9B,OAAOV,GAAc9K,EAASwL,EACpC,CACIN,GAAalL,EAAS3C,GAAOgI,GAAWrF,IACxCgL,GAAgBhL,GAAU,GAC1BvC,GAAO4H,GAAWrF,EAAQ,EAE5B,MAAM8J,GAAkB,CAACrK,EAASkE,IAChCF,GAAWU,EAAiB1E,EAASkE,GACvC,MAAMwG,GAAgB,CAAC1K,EAASC,EAAOiE,IACrCF,GACE9F,GAAU2G,EAAe7E,EAASvC,IAClCwC,EACAiE,IAEFlG,GACE4G,EACA5E,EACA9B,GAAU0G,EAAiB5E,GAAS,IAAM,IAAKkE,GAEnD,MAAM4G,GAAiB,CAAC9K,EAASC,EAAOC,EAAQgE,KAC9C,MAAM8H,EAAUpO,GAAO8H,GAAc1F,GACrC,MAAMiM,EAAQrO,GAAOoO,EAAS9L,IAAW,EACzC,GACG+L,GAAS,GAAK/H,GAAkB,GAChC+H,GAAS,GAAK/H,IAAmB,EAClC,CACAF,GACE9F,GAAUyG,EAAqB3E,EAASvC,IACxCyC,EACAgE,EAER,CACIlG,GACEgO,EACA9L,EACA+L,IAAU/H,EAAiB+H,EAAQ/H,EAAiB,MAEtDF,GACE9F,GAAUA,GAAU4G,EAAgB9E,EAASvC,IAASwC,EAAOxC,IAC7DyC,EACAgE,EACD,EAEH,MAAM8G,GAAc,CAAChL,EAASC,EAAOC,EAAQ6K,EAASmB,KACpDhO,GACEA,GAAUA,GAAU6G,EAAc/E,EAASvC,IAASwC,EAAOxC,IAC3DyC,GACA,IAAM,CAAC6K,EAAS,KAChB,GAAKmB,EACPzH,EAAkB,KAAKzE,EAASC,EAAOC,EAAQgM,EAAQ,EAEzD,MAAMX,GAAkB,CAAChL,EAAS2D,IAChCF,GAAWgB,EAAiBzE,EAAS2D,GACvC,MAAMuH,GAAe,CAAClL,EAASiL,EAAUW,KACvCjO,GAAU+G,EAAe1E,GAAS,IAAM,CAACiL,EAAU,KAAI,GAAKW,EAC5D1H,EAAkB,KAAKlE,EAAS4L,EAAS,EAE3C,MAAMhE,GAAc,CAACnI,EAASC,EAAOC,EAAQkM,EAAaC,KACxD7R,EACE0D,GACEA,GAAUA,GAAUgH,EAAclF,EAASvC,IAASwC,EAAOxC,IAC3DyC,GACA,IAAM,KAERkM,GAEF,OAAOC,CAAa,EAEtB,MAAMrD,GAAe,CAACzI,EAAS+L,EAAcC,KAC3C/R,EACE0D,GAAUiH,EAAe5E,GAAS,IAAM,KACxC+L,GAEF,OAAOC,CAAc,EAEvB,MAAMC,GAAgB,CAACxM,EAASC,EAAOC,IACrCjI,EACE2F,GAAOA,GAAOA,GAAOmH,EAAc/E,GAAUC,GAAQC,IACrD,EAAE6K,EAASmB,KAAa,CAAC,KAAMnB,EAASmB,KACxC,IAAM,CAAC,SAAUnJ,GAAQ0J,GAAQzM,EAASC,EAAOC,OAErD,MAAMwM,GAAkBnM,GACtBtI,EACE2F,GAAOqH,EAAe1E,IACtB,EAAEiL,EAAUW,KAAc,CAAC,KAAMX,EAAUW,KAC3C,IAAM,CAAC,SAAUpJ,GAAQ4J,GAASpM,OAEtC,MAAMqM,GAA4BC,IAC/B1P,GAAY+H,KAAkB/H,GAAYyJ,GAAqBiG,IAC5DvP,GACEuP,EAAU1N,GAAU+F,GAAgBA,GACpC,CAAC4H,EAAM9M,IACL1C,GAAYwP,GAAM,CAACC,EAAO9M,IACxB3C,GAAYyP,GAAO,CAACX,EAAalM,IAC/BiC,GACEyE,GAAqBiG,GACrB,CAAC7M,EAASC,EAAOC,GACjBkM,SAKV,EACN,MAAMY,GAA6BH,IAChC1P,GAAYgI,KAAmBhI,GAAY0J,GAAsBgG,IAC9DvP,GACEuP,EAAU7N,GAASmG,GAAiBA,GACpC,CAACmH,EAAc/L,IACb4B,GACE0E,GAAsBgG,GACtB,CAACtM,GACD+L,KAGN,EACN,MAAMW,GAAkC,CACtChJ,EACAiJ,EACAC,EACA/K,KAEA,IAAKjF,GAAY8G,GAAa,CAC5B9B,GAAc+K,EAAa9K,GAAK,IAAM7D,GAAS0F,KAC/CnG,GAAWmG,GAAY,CAACmJ,EAAWC,IACjClL,GAAcgL,EAAc,IAAK/K,GAAO,GAAKgL,GAAYC,GAAW,KAEtE,OAAO,CACb,GAEE,MAAMC,GAAkCT,IACtC,MAAMU,EAAeC,KACrB,GAAID,GAAgBjJ,EAAW,CAC7BnC,GAAc0D,GAAmBgH,QAAe,EAAGU,EACzD,CACI,MAAME,EAA4BtQ,GAChCmJ,GAAsBuG,IAExB,MAAMa,EACJvQ,GAAYsJ,GAAiBoG,KAC7B1P,GAAYuJ,GAAiBmG,KAC7B1P,GAAYkJ,GAAgBwG,KAC5B1P,GAAYoJ,GAAgBsG,KAC5B1P,GAAY+I,GAAsB2G,KAClC1P,GAAYgJ,GAAsB0G,KAClC1P,GAAYiJ,GAAkByG,KAC9BY,GACAtQ,GAAY4I,GAAkB8G,KAC9B1P,GAAY6I,GAAkB6G,IAChC,MAAMc,EACJxQ,GAAYwJ,GAAckG,KAC1B1P,GAAYqJ,GAAaqG,KACzB1P,GAAY8I,GAAe4G,KAC3B1P,GAAY2I,GAAgB+G,IAC9B,IAAKa,IAA2BC,EAAqB,CACnD,MAAMC,EAAUf,EACZ,CACE7N,GAAS0F,GACTxF,GAAUyF,GACV3F,GAAS4F,GACT1F,GAAU2F,GACV1F,GAAU2F,GACV3F,GAAU4F,IAEZ,CACEL,EACAC,EACAC,EACAC,EACAC,EACAC,GAEN,IAAK2I,EAAwB,CAC3BT,GACEW,EAAQ,GACR7H,GAAkB8G,GAClB7G,GAAkB6G,IAEpBvP,GAAYsQ,EAAQ,IAAI,CAAC3J,EAAYjE,IACnCiN,GACEhJ,EACAiC,GAAsB2G,GACtB1G,GAAsB0G,GACtB,CAAC7M,MAGL1C,GAAYsQ,EAAQ,IAAI,CAACC,EAAc7N,KACrC,GAAI6N,GAAgB,EAAG,CACrB1L,GACEiE,GAAkByG,GAClB,CAAC7M,GACD8N,GAAY9N,GAE1B,KAEQ,MAAM+N,EAAyBrN,KAC/BpD,GAAYsQ,EAAQ,IAAI,CAAC3J,EAAYjE,KACnC,GACEiN,GACEhJ,EACAoC,GAAgBwG,GAChBtG,GAAgBsG,GAChB,CAAC7M,MAEFyN,EACD,CACAtL,GAAcmE,GAAsBuG,GAAU,CAAC7M,EAAS,OACxDa,GAAOkN,EAAwB/N,EAC3C,KAEQ,IAAKyN,EAA2B,CAC9BnQ,GAAYsQ,EAAQ,IAAI,CAACd,EAAM9M,KAC7B,IAAKhD,GAAQ+Q,EAAwB/N,GAAU,CAC7C,MAAMgO,EAAkBtN,KACxBpD,GAAYwP,GAAOC,GACjBzP,GAAYyP,GAAO,EAAEhC,EAASmB,GAAUhM,IACtCgM,IAAYnB,EACRlK,GAAOmN,EAAiB9N,GACxB3C,GAAQwP,EAAO7M,OAGvB5C,GAAY0Q,GAAkB9N,GAC5BiC,GAAcmE,GAAsBuG,GAAU,CAC5C7M,EACAE,KAGlB,IAEA,CACQ5C,GAAYsQ,EAAQ,IAAI,CAACK,EAAYjO,IACnC1C,GAAY2Q,GAAY,CAAChK,EAAYhE,IACnCgN,GACEhJ,EACAwC,GAAiBoG,GACjBnG,GAAiBmG,GACjB,CAAC7M,EAASC,OAIxB,CACM,IAAK0N,EAAqB,CACxB,IAAIO,EACJ5Q,GAAYsQ,EAAQ,IAAI,CAACd,EAAM9M,KAC7B,IAAImO,EACJ7Q,GAAYwP,GAAM,CAACC,EAAO9M,KACxB,IAAImO,EACJ9Q,GAAYyP,GAAO,EAAEhC,EAASmB,GAAUhM,KACtC,GAAIgM,IAAYnB,EAAS,CACvB5I,GACEwE,GAAckG,GACd,CAAC7M,EAASC,EAAOC,GACjBgM,EACAnB,EACAyB,IAEF0B,EAAgBC,EAAeC,EAAa,CAC5D,KAEY,GAAIA,EAAY,CACdjM,GACEqE,GAAaqG,GACb,CAAC7M,EAASC,GACVuM,GAEhB,KAEU,GAAI2B,EAAc,CAChBhM,GAAc8D,GAAe4G,GAAU,CAAC7M,GAAUwM,GAC9D,KAEQ,GAAI0B,EAAe,CACjB/L,GAAc2D,GAAgB+G,QAAe,EAAGL,GAC1D,CACA,CACA,GAEE,MAAM6B,GAAiCxB,IACrC,MAAMyB,EAAeC,KACrB,GAAID,GAAgB/J,EAAW,CAC7BpC,GAAc2E,GAAmB+F,QAAe,EAAGyB,EACzD,CACI,MAAMZ,EACJvQ,GAAY6J,GAAkB6F,KAC9B1P,GAAY8J,GAAkB4F,IAChC,MAAMc,EACJxQ,GAAY+J,GAAe2F,KAC3B1P,GAAY4J,GAAgB8F,IAC9B,IAAKa,IAA2BC,EAAqB,CACnD,MAAMC,EAAUf,EACZ,CAAC7N,GAASgG,GAAkBhG,GAASiG,IACrC,CAACD,EAAiBC,GACtB,IAAKyI,EAAwB,CAC3BT,GACEW,EAAQ,GACR5G,GAAkB6F,GAClB5F,GAAkB4F,GAE5B,CACM,IAAKc,EAAqB,CACxB,IAAIa,EACJlR,GAAYsQ,EAAQ,IAAI,EAAEpC,EAAUW,GAAW5L,KAC7C,GAAI4L,IAAaX,EAAU,CACzBrJ,GACE+E,GAAe2F,GACf,CAACtM,GACD4L,EACAX,EACAkB,IAEF8B,EAAgB,CAC5B,KAEQ,GAAIA,EAAe,CACjBrM,GAAc4E,GAAgB8F,QAAe,EAAGH,GAC1D,CACA,CACA,GAEE,MAAM+B,GAAoB,CAACC,KAAYC,KACrCC,IAAY,IAAMF,KAAWvU,EAASwU,EAAMjX,MAC5C,OAAOqI,EAAK,EAEd,MAAM8O,GAAa,IAAM,CAACC,KAAaC,MACvC,MAAMD,GAAY,IAAM/P,GAAU4G,IAClC,MAAMqJ,GAAc,IAAMrR,GAAQgI,IAClC,MAAMsJ,GAAYjP,GAAYnB,GAAUjB,GAAO+H,GAAWjO,EAAGsI,KAC7D,MAAMkP,GAAmBlP,GACvBrC,GAAQC,GAAO8H,GAAchO,EAAGsI,KAClC,MAAM8N,GAAe9N,GAAYpD,GAASgB,GAAO+H,GAAWjO,EAAGsI,KAC/D,MAAMmP,GAAanP,GAAYrC,GAAQC,GAAO+H,GAAWjO,EAAGsI,KAC5D,MAAMoP,GAAkB,CAACpP,EAASE,EAAQmP,EAAYC,EAAS,EAAGC,IAChEpV,EACEzB,EACEoB,EACEiE,GAAOH,GAAO+H,GAAWjO,EAAGsI,KAAW,CAACqI,EAAKpI,IAAU,CACrDjI,EAAYkI,GAAUD,EAAQrC,GAAOyK,EAAK3Q,EAAGwI,IAC7CD,MAEF,EAAEuP,IAASC,KACT7M,GAAc4M,EAAOC,IAAUJ,GAAc,EAAI,KAErDC,EACAtX,EAAYuX,GAASA,EAAQD,EAASC,IAExC,EAAC,CAAGtP,KAAWA,IAEnB,MAAMyP,GAAS,CAAC1P,EAASC,IACvB1B,GAASX,GAAOA,GAAO+H,GAAWjO,EAAGsI,IAAWtI,EAAGuI,KACrD,MAAM0P,GAAa,CAAC3P,EAASC,IAC3BtC,GAAQC,GAAOA,GAAO+H,GAAWjO,EAAGsI,IAAWtI,EAAGuI,KACpD,MAAMwM,GAAU,CAACzM,EAASC,EAAOC,IAC/BtC,GAAOA,GAAOA,GAAO+H,GAAWjO,EAAGsI,IAAWtI,EAAGuI,IAASvI,EAAGwI,IAC/D,MAAM6O,GAAY,IAAMxQ,GAASqH,IACjC,MAAMgK,GAAc,IAAMjS,GAAQiI,IAClC,MAAM+G,GAAYpM,GAAY3C,GAAOgI,GAAWlO,EAAG6I,IACnD,MAAMiN,GAAY,KAAOrQ,GAAYwI,IACrC,MAAMkK,GAAY7P,GAAYhD,GAAQ2I,GAAWjO,EAAGsI,IACpD,MAAM8P,GAAe,CAAC9P,EAASE,IAC7BlD,GAAQY,GAAO8H,GAAchO,EAAGsI,IAAWtI,EAAGwI,IAChD,MAAM6P,GAAS,CAAC/P,EAASC,IACvBjD,GAAQY,GAAO+H,GAAWjO,EAAGsI,IAAWtI,EAAGuI,IAC7C,MAAM+P,GAAU,CAAChQ,EAASC,EAAOC,IAC/BlD,GAAQY,GAAOA,GAAO+H,GAAWjO,EAAGsI,IAAWtI,EAAGuI,IAASvI,EAAGwI,IAChE,MAAMqO,GAAY,KAAOpR,GAAYyI,IACrC,MAAMqK,GAAY1P,GAAYvD,GAAQ4I,GAAWlO,EAAG6I,IACpD,MAAM2P,GAAgB,IAAMrM,GAAkB8B,IAC9C,MAAMwK,GAAgB,IAAMtM,GAAkB+B,IAC9C,MAAMwK,GAAU,IAAMvM,GAAkB,CAAC8B,GAAWC,KACpD,MAAMyK,GAAsB,IAAMxM,GAAkBuB,GACpD,MAAMkL,GAAsB,IAAMzM,GAAkByB,GACpD,MAAMiL,GAAgB,IACpB1M,GAAkB,CAACuB,EAAiBE,IACtC,MAAMkL,GAAcC,GAClBhC,IAAkB,KAChB,MAAMiC,EAAWnY,EAAWkY,GAAWA,IAAYA,EACnD,GAAI1I,GAAgB2I,GAAW,CAC7B5G,GAAgB4G,EACxB,KAEE,MAAM7G,GAAa5B,GACjBwG,IAAkB,IAChBzG,GAAeC,GAAUgC,GAAehC,GAAU,IAEtD,MAAM0I,GAAW,CAAC3Q,EAASoI,IACzBqG,IACGmC,GACC1I,GAAcE,EAAOwI,GAAYzG,GAAcyG,EAAUxI,GAAS,GACpEpI,GAEJ,MAAM6Q,GAAS,CAAC7Q,EAASC,EAAOoI,IAC9BoG,IACE,CAACmC,EAAUE,IACTxI,GAAYsI,EAAUE,EAAQzI,GAC1BkC,GAAYqG,EAAUjF,GAAiBiF,GAAWE,EAAQzI,GAC1D,GACNrI,EACAC,GAEJ,MAAM8Q,GAAS,CAAC/Q,EAASqI,EAAK2I,EAAc,OAC1CpC,IAAY,KACV,IAAI3O,OAAa,EACjB,GAAIqI,GAAYtI,EAASC,EAAOoI,GAAM,CACpCrI,EAAUtI,EAAGsI,GACbuK,GACEvK,EACA2L,GAAiB3L,GAChBC,EAAQyL,GAAY1L,EAASgR,EAAc,EAAI,GAChD3I,EAEV,CACM,OAAOpI,CAAK,IAEhB,MAAMgR,GAAgB,CAACjR,EAASC,EAAOiR,IACrCzC,IACE,CAACmC,EAAUE,KACT,GAAIxI,GAAYsI,EAAUE,EAAQI,EAAY,GAAI,CAChD,MAAM9I,EAAQuD,GAAiBiF,GAC/B9U,EAAWoV,GAAY,CAAC/Q,EAAMD,IAC5B+K,GAAsB2F,EAAUxI,EAAO0I,EAAQ5Q,EAAQC,IAEnE,IAEMH,EACAC,GAEJ,MAAMI,GAAU,CAACL,EAASC,EAAOC,EAAQC,IACvCsO,IACE,CAACmC,EAAUE,EAAQhF,IACjB7T,EACEwQ,GACEmI,EACAE,EACAhF,EACAvT,EAAW4H,GAAQA,EAAKsM,GAAQmE,EAAUE,EAAQhF,IAAY3L,IAE/DuI,GACCuC,GACE2F,EACAjF,GAAiBiF,GACjBE,EACAhF,EACApD,MAGR1I,EACAC,EACAC,GAEJ,MAAM8J,GAAavP,GACjBgU,IAAkB,IAChB7F,GAAenO,GAAU0Q,GAAe1Q,GAAU,IAEtD,MAAM0W,GAAoBC,GACxB3C,IAAkB,IAChB7F,GAAewI,EAAe,GAC1BtV,EAAWsV,GAAe,CAAClZ,EAAOqI,IAChC8K,GAAc9K,EAASrI,KAEzB,IAER,MAAMuI,GAAW,CAACF,EAASrI,IACzBuW,IACG4C,GACCpZ,EACE6Q,GACEuI,EACA9Y,EAAWL,GAASA,EAAMyU,GAAS0E,IAAanZ,IAEjD6Q,GAAesC,GAAcgG,EAAUtI,MAE5CxI,GAEJ,MAAM+Q,GAAgB1D,GACpBa,IAAkB,KAChB3S,EAAW8R,EAAQ,IAAI,CAACxF,EAAOpI,IAC7BhI,EAAYoQ,GACRmJ,GAASvR,GACTlE,EAAWsM,GAAO,CAACC,EAAKpI,IACtBjI,EAAYqQ,GACRmJ,GAAOxR,EAASC,GAChBnE,EAAWuM,GAAK,CAAClI,EAAMD,IACrBJ,GAAaC,GAAOC,EAASC,EAAOC,EAAQC,SAI1DrE,EAAW8R,EAAQ,IAAI,CAAC1V,EAAOqI,IAC7BD,GAAcP,GAAOQ,EAASrI,IAC/B,IAEL,MAAMuZ,GAAiBC,IACrB,IACE/H,GAAehG,GAAU+N,GAC/B,CAAM,MAAM,CACR,OAAO3R,EAAK,EAEd,MAAM4R,GAAiBC,IACrB,IACE1G,GAAevH,GAAUiO,GAC/B,CAAM,MAAM,CACR,OAAO7R,EAAK,EAEd,MAAM8R,GAAWC,GACfrD,IAAkB,KAChB,IACE,MAAOxG,EAAQxN,GAAUkJ,GAAUmO,GACnCnI,GAAe1B,GACfiD,GAAezQ,EACvB,CAAQ,MACAgX,GAAcK,EACtB,KAEE,MAAMC,GAAmB1I,GACvBoF,IAAkB,KAChB,GAAKrK,EAAkBmD,GAAqB8B,GAAgB,CAC1DD,GAAqBC,GACrB,IAAKlM,GAAYwI,IAAY,CAC3B,MAAMsC,EAAS6G,KACflF,KACAC,GAAU5B,EACpB,CACA,KAEE,MAAM+J,GAAmBpK,GACvB6G,IAAkB,KAChB,GAAKpK,EAAkBsD,GAAqBC,GAAgB,CAC1D,MAAMnN,EAASsU,KACfkD,KACAlI,KACA1F,EAAkB,KAClBoF,GAAqB7B,GACrBoC,GAAUvP,EAClB,KAEE,MAAMyX,GAAY,CAAC7I,EAAczB,IAC/B6G,IAAkB,KAChBsD,GAAgB1I,GAChB2I,GAAgBpK,EAAa,IAEjC,MAAMgC,GAAY,IAAM6E,IAAkB,IAAMxE,GAAe,MAC/D,MAAMsH,GAAYvR,GAChByO,IACGmC,GACC5T,GAAQ2I,GAAWiL,GAAYxG,GAAcwG,GAAY,GAC3D5Q,GAEJ,MAAMwR,GAAS,CAACxR,EAASC,IACvBwO,IACE,CAACmC,EAAUE,IACT7Y,EAAe2F,GAAO+H,GAAWiL,IAAYtG,GAC3CtN,GAAQsN,EAAUwG,GACdtG,GAAYoG,EAAUtG,EAAUwG,GAChC,KAER9Q,EACAC,GAEJ,MAAMG,GAAU,CAACJ,EAASC,EAAOC,EAAQuK,IACvCgE,IACE,CAACmC,EAAUE,EAAQhF,IACjB7T,EAAe2F,GAAO+H,GAAWiL,IAAYtG,GAC3CrS,EAAe2F,GAAO0M,EAAUwG,IAAUnG,GACxC3N,GAAQ2N,EAAQmB,GACZjB,GACE+F,EACAtG,EACAwG,EACAnG,EACAmB,EACArB,GAEF,OAGVzK,EACAC,EACAC,GAEJ,MAAM6J,GAAY,IAAM0E,IAAkB,IAAMtD,GAAe,MAC/D,MAAM3K,GAAYD,GAChBkO,IACG4C,GACCrU,GAAQ4I,GAAWyL,GAAY/F,GAAc+F,GAAY,GAC3D9Q,GAEJ,MAAM4R,GAAkB,IACtB1D,IAAkB,KAChBrF,GAAqB,IACrBhF,EAAkB,KAAK,IAE3B,MAAM6N,GAAkB,IACtBxD,IAAkB,KAChBhF,GAAqB,IACrBpF,EAAkB,KAAK,IAE3B,MAAM+N,GAAY,IAChB3D,IAAkB,KAChB0D,KACAF,IAAiB,IAErB,MAAMrD,GAAc,CAACF,EAAS2D,KAC5B,GAAI7N,IAAiB,EAAG,CACtB8N,KACA,MAAMC,EAAS7D,IACf8D,GAAkBH,GAClB,OAAOE,CACb,GAEE,MAAMD,GAAmB,KACvB,GAAI9N,IAAiB,EAAG,CACtBA,GACN,CACI,GAAIA,GAAgB,EAAG,CACrBC,EAAkB,OAClBtC,GAAcgF,GACpB,CACI,OAAOpH,EAAK,EAEd,MAAM0S,GAAwB,IAAM,CAClClU,GACEwG,GACA,CAACqD,EAAOpI,IACNpC,GAAO8G,EAAiB1E,MAAc,OAC7B,EACLzB,GACE6J,GACA,CAACC,EAAKpI,IACJrC,GAAOA,GAAOiH,EAAe7E,GAAUC,MAAY,OAC1C,EACL1B,GACE8J,GACA,EAAC,CAAG6D,KAAaA,IAChBwG,GAAgBrP,GAAYqP,MAErCvV,GACAnB,KAERmB,GACAnB,IAEFuC,GACE0G,GACA,EAAC,CAAGkH,KAAcA,IACjBwG,GAAiBtP,GAAYsP,KAEhC,GAEF,MAAMC,GAAoB,IAAM,EAC7BzV,GAAY4H,IACZ5H,GAAY8H,GACblG,GAAUgG,EAAc3B,GAAWC,IACnCtE,GAAUmG,GACV3G,GAAS0G,EAAe7B,GAAWC,IACnC9E,GAAS4G,GACT5G,GAASmG,GACT7F,GAAUgG,GACV9F,GAAU+F,GACVvG,GAASyG,IAEX,MAAMwN,GAAqBH,IACzB,GAAI7N,EAAe,EAAG,CACpBA,IACA,GAAIA,GAAgB,EAAG,CACrBA,EAAe,EACfoI,GAAyB,GACzB,IAAKzP,GAAY4H,GAAe,CAC9BuI,GAA+B,EACzC,CACQN,GAA0B,GAC1B,IAAK7P,GAAY8H,GAAgB,CAC/BoJ,GAA8B,EACxC,CACQ,GAAIgE,IAAatS,IAAQ,CACvBzC,GAAYyH,GAAc,CAACqD,EAAOpI,IAChC1C,GAAY8K,GAAO,CAACC,EAAKpI,IACvB3C,GAAY+K,GAAK,EAAE0C,GAAU7K,IAC3BJ,GAAaC,GAAOC,EAASC,EAAOC,EAAQ6K,SAIlD3N,GAAU2H,GACVzH,GAAY2H,GAAe,EAAEuG,GAAWjL,IACtCD,GAAcP,GAAOQ,EAASiL,KAEhCpO,GAAU6H,EACpB,CACQ9C,GAAciF,GAA2B,QAAS,GAClD5C,GAAgB,EAChBoI,GAAyB,GACzB,IAAKzP,GAAY4H,GAAe,CAC9BuI,GAA+B,EACzC,CACQN,GAA0B,GAC1B,IAAK7P,GAAY8H,GAAgB,CAC/BoJ,GAA8B,EACxC,CACQ5J,EAAkB,OAClBtC,GAAciF,GAA2B,QAAS,GAClD3C,EAAkB,OAClBD,EAAe,EACfF,EAAYkJ,KACZjJ,EAAYgK,KACZtU,EACE,CACEyK,EACAC,EACAC,EACAC,EACAC,EACAC,EACAG,EACAF,EACAC,EACAE,GAEF/H,GAEV,CACA,CACI,OAAO2C,EAAK,EAEd,MAAM8S,GAAgBC,GACpBxV,GAAYqI,IAAW,CAAC2E,EAAUtK,IAChC8S,EAAc9S,GAAU+S,GACtBzV,GAAYgN,GAAU,CAACK,EAAQ1K,IAC7B8S,EAAY9S,GAAQ+S,GAClBlV,GAAW6M,EAAQqI,WAK7B,MAAMC,GAAmB,CAACjT,EAASkT,IACjCpV,GAAWF,GAAO8H,GAAchO,EAAGsI,IAAWkT,GAChD,MAAMC,GAAa,CAACnT,EAAS+S,IAC3BzV,GAAYM,GAAO+H,GAAWjO,EAAGsI,KAAW,CAAC2K,EAAQ1K,IACnD8S,EAAY9S,GAAQ+S,GAAiBlV,GAAW6M,EAAQqI,OAE5D,MAAMI,GAAc,CAACpT,EAASC,EAAO+S,IACnClV,GAAWF,GAAOA,GAAO+H,GAAWjO,EAAGsI,IAAWtI,EAAGuI,IAAS+S,GAChE,MAAMK,GAAgBC,GAAkBxV,GAAW8H,GAAW0N,GAC9D,MAAMC,GAA0B,CAC9BvT,EACAE,EACAmP,EACAC,EACAC,EACAxN,EACA8K,KAEA,IAAI2G,EAAepE,GACjBpP,EACAE,EACAmP,EACAC,EACAC,GAEF,OAAOzN,IACL,KACE,MAAM2R,EAAkBrE,GACtBpP,EACAE,EACAmP,EACAC,EACAC,GAEF,IAAK9V,EAAaga,EAAiBD,GAAe,CAChDA,EAAeC,EACf1R,EACEhC,GACAC,EACAE,EACAmP,EACAC,EACAC,EACAiE,EAEZ,IAEMlN,GAAsBuG,EAAU,EAAI,GACpC,CAAC7M,EAASE,GACV,CAAC8O,IACF,EAEH,MAAM0E,GAA+B3R,GACnCD,GAAYC,EAAUoF,IACxB,MAAMwM,GAAoC5R,GACxCD,GAAYC,EAAUqF,GAA2B,IACnD,MAAMwM,GAAmC7R,GACvCD,GAAYC,EAAUqF,GAA2B,IACnD,MAAM3E,GAAgBoR,IACpBvM,GAAiBuM,GACjB,OAAO9T,EAAK,EAEd,MAAMuC,GAAeuR,IACnBxM,GAAgBwM,GAChB,OAAO9T,EAAK,EAEd,MAAM+T,GAAmB,MACvBtG,UAAWxK,GAAc6C,IACzBoC,OAAQjF,GAAc8C,IACtBiO,SAAU/Q,GAAc+C,IACxB8J,SAAU7M,GAAcgD,IACxBoC,MAAOpF,GAAciD,IACrBP,aAAc1C,GAAckD,IAC5B4J,aAAc9M,GAAcmD,GAAuBrJ,IACnDkX,SAAUhR,GAAcoD,IACxB6N,OAAQjR,GAAcqD,IACtBmN,aAAcxQ,GAAcsD,IAC5ByJ,OAAQ/M,GAAcuD,GAAiBzJ,IACvCuL,IAAKrF,GAAcwD,GAAc1J,IACjCkP,QAAShJ,GAAcyD,GAAkB3J,IACzCkT,QAAShN,GAAc0D,GAAkB3J,IACzCoD,KAAM6C,GAAc2D,GAAe5J,IACnCqP,YAAapJ,GAAc4D,GAAsB7J,IACjDwR,UAAWvL,GAAc8D,IACzBrM,OAAQuI,GAAc+D,IACtBmN,SAAUlR,GAAcgE,IACxBiJ,SAAUjN,GAAciE,IACxB/O,MAAO8K,GAAckE,IACrBoF,aAActJ,GAAc6D,IAC5B+H,YACE/R,GAAUsK,IACVnE,GAAcoE,MAElB,MAAM+M,GAAuB,CAC3BC,EACAC,EACAC,EACAC,EACAC,IAEC/P,EAAoB,CACnB2P,EACAC,EACAC,EACAC,EACAC,GAEJ,MAAMzU,GAAQ,CACZ8O,cACAC,aACAE,eACAC,YACAC,mBACApB,eACAqB,aACAC,mBACAM,UACAC,cACAlD,WACAsC,aACAa,eACAjD,YACAa,aACAqC,YACAC,gBACAC,UACAC,WACAzB,aACA0B,YACAC,iBACAC,iBACAC,WACAC,uBACAC,uBACAC,iBACAnM,gBAAiB,IAAMA,EACvBC,gBAAiB,IAAMA,EACvBmM,cACA3G,aACA8G,YACAE,UACAE,UACAE,iBACA5Q,WACA2J,aACAmH,oBACA1Q,YACA6Q,gBACAG,iBACAE,iBACAE,WACAE,mBACAC,mBACAE,aACAtI,aACA2H,YACAC,UACApR,WACA2J,aACAvJ,YACA2R,mBACAF,mBACAG,aACAxD,eACA0D,oBACAG,yBACAG,qBACAJ,qBACAK,gBACAI,oBACAE,cACAC,eACAC,gBACAE,2BACAG,+BACAC,oCACAC,mCACAnR,gBACAH,eACAwR,oBACAW,YAAa,IAAM,MAEnBtQ,eACArC,eACAK,iBACAgS,yBAEFrY,EACE,CACE,CAACjF,EAAMG,GAAS,CAAC,EAAG6O,GAAoB,GAAI,IAAM,CAAC2H,OACnDxW,CAACA,GAAS,CAAC,EAAG8O,IACd7O,CAACA,GAAY,CAAC,EAAG8O,IACjB,CAAClP,EAAME,GAAQ,CACb,EACAiP,GACA,CAACgJ,IACA5M,GAAQ,CAACyN,MAAYzN,KAExBrL,CAACA,GAAQ,CAAC,EAAGkP,GAAgB,CAAC+I,KAC9B,CAACjY,EAAQO,GAAW,CAAC,EAAG4O,GAAuB,CAAC8I,KAChD,CAACnY,EAAME,EAAQM,GAAO,CACpB,EACA8O,GACA,CAAC6I,GAAaE,IACb9M,GAAQ,CAAC0N,MAAgB1N,KAE5BjL,CAACA,GAAY,CAAC,EAAGiP,GAAmB,CAAC4I,KACrC5X,CAACA,GAAU,CAAC,EAAGiP,GAAiB,CAAC2I,KACjC,CAACnY,EAAMK,GAAM,CACX,EACAqP,GACA,CAACyI,GAAaG,IACb/M,GAAQ,CAAC2N,MAAU3N,KAEtBlL,CAACA,GAAM,CAAC,EAAGsP,GAAc,CAACwI,GAAaG,KACvC7X,CAACA,GAAW,CAAC,EAAGmP,GAAkB,CAACuI,GAAaG,KAChD,CAACtY,EAAMQ,GAAO,CACZ,EACAqP,GACA,CAACsI,GAAaG,GAAWQ,IACxBvN,GAAQ,CAAC4N,MAAW5N,KAEvB/K,CAACA,GAAO,CACN,EACAsP,GACA,CAACqI,GAAaG,GAAWQ,IACxBvN,GAAQW,GAAQ0J,MAAWrK,KAE9BsS,YAAa,CAAC,EAAG9N,IACjB,CAAC/P,EAAMW,GAAS,CAAC,EAAGsP,GAAoB,GAAI,IAAM,CAACyH,OACnD/W,CAACA,GAAS,CAAC,EAAGuP,IACdtP,CAACA,GAAY,CAAC,EAAGuP,IACjB,CAACnQ,EAAMU,GAAQ,CACb,EACA0P,GACA,CAAC2I,IACAxN,GAAQ,CAAC6N,MAAY7N,KAExB7K,CAACA,GAAQ,CACP,EACA2P,GACA,CAAC0I,IACAxN,GAAQW,GAAQ4J,GAASvK,EAAI,MAEhCuS,aAAc,CAAC,EAAG9N,MAEpB,EAAE+N,EAAe5S,EAAWC,EAAaC,GAAkB2S,KACzD9U,GAAMnJ,EAAMie,EAAale,GAAY,IAAIgY,IACvC7M,GACE6M,EAAKiG,GACL5S,EAAU2M,EAAKiG,EAAgB,GAAK,EAAI,GACxCA,EAAgB,EAAIlc,EAAMiW,EAAM,EAAGiG,QAAsB,EACzD3S,EACAC,EACD,IAGP,OAAOxG,EAAUqE,GAAM,EChnGzB,MAAMA,GAAQoE,KAMdpE,GAAM6J,YACN7J,GAAMgK,YACN+K,QAAQC,IAAI,mCAEL,MAAMC,GAAgB,CAACC,EAAUC,KACtC,IACE,OAAOzR,KAAKG,MAAMqR,E,CAClB,MAAOE,GACP,OAAOD,GAAY,I,GAIhB,MAAME,GAAepa,IAC1B,MAAMqN,EAAW,GACjB,IAAK,IAAI1Q,KAAOqD,EAAK,CACnB,UAAWA,EAAIrD,KAAS,iBAAmBqD,EAAIrD,KAAS,iBAAmBqD,EAAIrD,KAAS,UAAW,CACjG0Q,EAAI1Q,GAAOqD,EAAIrD,E,MACV,GAAIqD,EAAIrD,KAAS,KAAM,CAC5B0Q,EAAI,WAAW1Q,KAAS,E,MACnB,GAAIc,MAAMD,QAAQwC,EAAIrD,IAAO,CAClC0Q,EAAI,YAAY1Q,KAAS8L,KAAKC,UAAU1I,EAAIrD,G,MACvC,UAAWqD,EAAIrD,KAAS,SAAU,CACvC0Q,EAAI,aAAa1Q,KAAS8L,KAAKC,UAAU1I,EAAIrD,G,EAIjD,OAAO0Q,CAAG,EAGL,MAAMgN,GAA6BhN,IACxC,MAAMrN,EAAM,GAEZ,IAAK,IAAIrD,KAAO0Q,EAAK,CACnB,GAAI1Q,EAAI2d,WAAW,YAAa,CAC9Bta,EAAIrD,EAAI4d,QAAQ,WAAY,KAAO,I,MAC9B,UAAWlN,EAAI1Q,KAAS,UAAYA,EAAI2d,WAAW,aAAc,CACtEta,EAAIrD,EAAI4d,QAAQ,YAAa,KAAOP,GAAc3M,EAAI1Q,G,MACjD,UAAW0Q,EAAI1Q,KAAS,UAAYA,EAAI2d,WAAW,cAAe,CACvEta,EAAIrD,EAAI4d,QAAQ,aAAc,KAAOP,GAAc3M,EAAI1Q,G,KAClD,CACLqD,EAAIrD,GAAO0Q,EAAI1Q,E,EAInB,OAAOqD,CAAG,E,MAMCwa,GAAQ,CACnBzV,SAMA,SAAA0V,CAA4BzV,EAAiBC,EAAeyV,EAAuBC,EAAsBC,GAEvG,GAAI7V,GAAMgQ,OAAO/P,EAASC,GAAQ,CAChC2V,EAASP,GAAetV,GAAM2P,OAAO1P,EAASC,I,CAGhD,MAAM4T,EAAa9T,GAAM8V,eAAe7V,EAASC,GAAO,KACtD,MAAMoI,EAAMtI,GAAM2P,OAAO1P,EAASC,GAClC2V,EAASP,GAAehN,GAAK,IAG/B,IAAKtI,GAAMgQ,OAAO/P,EAASC,IAAU0V,EAAa,CAChDb,QAAQC,IAAI,4BAA6B,CAAC/U,UAASC,UACnDyV,IACGvd,MAAKoa,IAEJxS,GAAM8Q,OAAO7Q,EAASC,EAAOmV,GAAY7C,GAAQ,IAElDuD,OAAMX,IACLL,QAAQiB,MAAM,4BAA6B,CAAC/V,UAASC,QAAO0V,eAAcR,EAAE,G,CAIlF,OAAOtB,C,EAGT,WAAAmC,CAAYnC,GACV9T,GAAMuC,YAAYuR,E,EAGpB,iBAAMoC,CAAYC,EAA2BC,EAAoBC,EAAkB,OACjF,IAAKA,EAAQ,CACX,IAAKrW,GAAMgQ,OAAO,YAAaoG,GAAa,CAC1C,OAAO,I,CAGT,MAAM9N,EAAMtI,GAAM2P,OAAO,YAAayG,GACtC,OAAOd,GAAuBhN,E,CAGhC,MAAMgO,QAAiBJ,EAAYC,EAAUC,GAC7CrB,QAAQC,IAAI,6BAA8BsB,GAC1CtW,GAAM8Q,OAAO,YAAasF,EAAYf,GAAYiB,IAClD,OAAOA,C,EAGT,cAAAC,CAAeH,EAAoBE,GACjCtW,GAAM8Q,OAAO,YAAasF,EAAYf,GAAYiB,IAClD,OAAOA,C,EAGT,iBAAME,CAAYL,EAA2BM,EAAoBJ,EAAkB,OACjF,IAAKA,EAAQ,CACX,IAAKrW,GAAMgQ,OAAO,YAAayG,GAAa,CAC1C,OAAO,I,CAGT,MAAMnO,EAAMtI,GAAM2P,OAAO,YAAa8G,GACtC,OAAOnB,GAAuBhN,E,CAGhC,MAAMoO,QAAiBR,EAAYC,EAAUM,GAC7CzW,GAAM8Q,OAAO,YAAa2F,EAAYpB,GAAYqB,IAClD,OAAOA,C,EAGT,cAAAC,CAAeF,EAAoBC,GACjC1W,GAAM8Q,OAAO,YAAa2F,EAAYpB,GAAYqB,IAClD,OAAOA,C,EAOT,QAAAE,CAASC,EAAiCC,EAAkBC,EAAmBC,GAC7E,GAAIH,IAAW,WAAY,CACzB,MAAMvO,EAAMtI,GAAM2P,OAAO,YAAamH,GACtC,MAAMR,EAAWhB,GAAuBhN,GACxC,MAAM2O,GAASX,EAASY,QAAU,IAAIC,MAAKF,GAASA,EAAMG,OAASL,IAEnE,MAAMM,GAAaf,EAASgB,OAAS,IAAIjd,KAAIkd,GAAQA,EAAKH,OAC1D,MAAMtd,EAAQud,EAAUG,WAAUJ,GAAQA,IAASH,EAAMQ,YAEzD,MAAO,CAAC3d,MAAO4d,KAAKC,IAAI7d,EAAO,GAAImd,MAAOD,GAAiBC,E,KACtD,CACL,MAAM3O,EAAMtI,GAAM2P,OAAO,YAAamH,GACtC,MAAMJ,EAAWpB,GAAuBhN,GACxC,MAAM2O,GAASP,EAASQ,QAAU,IAAIC,MAAKF,GAASA,EAAMG,OAASL,IAEnE,MAAMM,GAAaX,EAASkB,YAAc,IAAIvd,KAAIwd,GAAaA,EAAUJ,YACzE,MAAM3d,EAAQud,EAAUG,WAAUJ,GAAQA,IAASH,EAAMQ,YAEzD,MAAO,CAAC3d,QAAOmd,MAAOD,GAAiBC,E","ignoreList":[]}
|