gpu-sankhya 0.3.4 → 0.4.0

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/README.md CHANGED
@@ -46,9 +46,15 @@ parse("sava lakh");
46
46
  // [{
47
47
  // span: "sava lakh", start: 0, end: 9,
48
48
  // value: 125000, unit: "lakh", currency: null,
49
- // confidence: 0.95, classes: ["PFX_SAVA", "SEP", "UNIT_LAKH"]
49
+ // confidence: 0.95, classes: ["PFX_SAVA", "SEP", "UNIT_LAKH"],
50
+ // verified: true, tokens: [["PFX_SAVA","sava"],["SEP"," "],["UNIT_LAKH","lakh"]]
50
51
  // }]
51
52
 
53
+ // strict mode: only verified spans come back -- "the right number or
54
+ // nothing" (see "Correct or abstains" below).
55
+ parse("savaa lakhhh", { strict: true }); // []
56
+ parse("savaa lakhhh"); // [{ value: 125000, verified: false, ... }]
57
+
52
58
  parse("mera budget paune do lakh tak ka hai");
53
59
  // [{ span: "paune do lakh", value: 175000, unit: "lakh", ... }]
54
60
 
@@ -105,9 +111,28 @@ interface Sankhya {
105
111
  currency: "INR"|null; // adjacent marker detected outside the span
106
112
  confidence: number; // mean of span-tag softmax probs over the span
107
113
  classes: string[]; // normalised token classes, e.g. ["PFX_DHAI","UNIT_LAKH"]
114
+ verified: boolean; // true iff every token in `tokens` is independently
115
+ // justified by the lexicon -- see "Correct or abstains"
116
+ tokens: Array<[string, string]>; // (class, text) tokens the span decoded to,
117
+ // in order -- for explainability and verification
108
118
  }
109
119
  ```
110
120
 
121
+ ### Correct or abstains
122
+
123
+ The CNN's job is only to *propose* a span and its token classes; a
124
+ deterministic core (lexicon lookups + the arithmetic in `core.ts`) computes
125
+ the value. A span is **verified** when every one of its `tokens` is
126
+ independently justified by the lexicon — a digit run is all digits, a
127
+ separator is whitespace, and every other token's exact (lowercased) text
128
+ is the surface form the lexicon lists for that class — so a verified
129
+ span's value is a pure function of the lexicon and the arithmetic core,
130
+ neither of which is a black box: both are unit-tested (`test/verify.test.ts`,
131
+ `test/core.test.ts`) independent of the model. `strict: true` uses this to
132
+ give you the guarantee "the right number or nothing": it drops every span
133
+ the model tagged but the lexicon didn't corroborate, rather than risk
134
+ returning a value for a spelling the model merely guessed at.
135
+
111
136
  ### API
112
137
 
113
138
  - **`parse(text, opts?) => Sankhya[]`** — synchronous, always CPU. Use
@@ -117,6 +142,11 @@ interface Sankhya {
117
142
  `{ backend: "auto" }` to use WebGPU automatically when it's available
118
143
  *and* the batch has at least 32 texts (otherwise CPU, since GPU
119
144
  dispatch overhead dominates for small batches).
145
+ - **`{ strict: true }`** (on `parse`/`parseBatch`/`Parser.parse`/
146
+ `Parser.parseBatch`, CPU and WebGPU paths alike) — drop any span that
147
+ isn't `verified`, so you only ever get back a span whose value is
148
+ provably a pure function of the lexicon + arithmetic core. Default
149
+ `false` (unverified spans are still returned, with `verified: false`).
120
150
  - **`createParser({ weights?, backend? })`** — build a `Parser` instance
121
151
  around a custom weights JSON (float or int8 form, as written by
122
152
  `python/sankhya/export.py`), instead of the bundled default model. See
@@ -212,15 +242,16 @@ training): 0.925 value accuracy. This number is optimistic — it's testing
212
242
  the model on its own distribution.
213
243
 
214
244
  On two hand-written gold sets, written independently of the generator —
215
- `python/tests/gold.jsonl` (romanised Hindi, 225 sentences / 197 spans)
216
- and `python/tests/gold_deva.jsonl` (Devanagari Hindi, 185 sentences / 154
245
+ `python/tests/gold.jsonl` (romanised Hindi, 227 sentences / 199 spans)
246
+ and `python/tests/gold_deva.jsonl` (Devanagari Hindi, 186 sentences / 155
217
247
  spans) — evaluated against the shipped int8-quantized weights:
218
248
 
219
249
  | gold set | examples | spans | value accuracy | span precision | span recall | span F1 |
220
250
  | --- | ---: | ---: | ---: | ---: | ---: | ---: |
221
- | gold.jsonl (romanised) | 225 | 197 | 0.9543 | 0.9497 | 0.9594 | 0.9545 |
222
- | gold_deva.jsonl (Devanagari) | 185 | 154 | 0.9740 | 0.9805 | 0.9805 | 0.9805 |
223
- | combined | 410 | 351 | 0.9632 | 0.9632 | 0.9687 | 0.9659 |
251
+ | gold.jsonl (romanised) | 227 | 199 | 0.9548 | 0.9502 | 0.9598 | 0.9550 |
252
+ | gold_deva.jsonl (Devanagari) | 186 | 155 | 0.9806 | 0.9806 | 0.9806 | 0.9806 |
253
+ | combined | 413 | 354 | 0.9661 | 0.9635 | 0.9689 | 0.9662 |
254
+ | strict mode (verified spans only) | 413 | 320 covered (0.904) | 1.0000 | — | — | — |
224
255
 
225
256
  Negatives (zero-gold-span examples, 75 total): 0 false positives.
226
257
  Miss summary: missed 1, spurious 1, wrong value 2, wrong boundary 10.
@@ -356,6 +387,19 @@ Raw per-character BIO/class predictions are cleaned up before evaluation:
356
387
  space) as one additive amount rather than a `[low, high]` range —
357
388
  genuine ranges (only one side has a unit, or both do but ascending) are
358
389
  unaffected.
390
+ - **R7 — juxtaposed ranges with no connector word**: two adjacent
391
+ coefficient+unit terms with NO `RANGE` token between them at all (e.g.
392
+ `"teen hazaar paanch hazaar"`, `"bees lac pachees lac"`, `"तीन हज़ार
393
+ पाँच हज़ार"`) are evaluated as a `[low, high]` range rather than
394
+ summed, when both terms carry an explicit coefficient and the second
395
+ term's unit is the same size or larger — this is the same shape of
396
+ arithmetic as an explicit range connector, just spoken without one.
397
+ Multiplicative stacking (`"das hazaar crore"`, second term has no
398
+ coefficient), descending additive chains (`"ek lakh dus hazaar"`), and
399
+ cardinal-only juxtaposition (`"do teen lakh"`, already repaired into an
400
+ explicit `RANGE` upstream) are all unaffected; two equal terms
401
+ (`"paanch lakh paanch lakh"`) fall back to plain additive doubling
402
+ rather than a degenerate `[x, x]` range.
359
403
 
360
404
  An optional linear-chain CRF (`--crf`, see `python/README.md`) can replace
361
405
  the plain per-character argmax with Viterbi decoding, but experiments on
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- function TA(A){if(A.crf)return{trans:Float32Array.from(A.crf.trans.data),start:Float32Array.from(A.crf.start.data),end:Float32Array.from(A.crf.end.data)}}function GA(A){return A.version===2&&Array.isArray(A.conv)}function kA(A){return A.quantized!==void 0}function mA(A){let e=atob(A),r=new Int8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n)<<24>>24;return r}function T(A){let e=mA(A.data_b64),r=new Float32Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n]*A.scale;return{shape:A.shape,data:r}}function G(A){return{shape:A.shape,data:Float32Array.from(A.data)}}function wA(A,e){return A*(e-1)/2}function j(A){return{w:G(A.w),b:Float32Array.from(A.b.data)}}function N(A){return{w:T(A.w),b:Float32Array.from(A.b)}}function PA(A){let e=kA(A);if(GA(A)){let s=A.conv.map(B=>{let g=wA(B.dilation,B.k);if(e){let w=B;return{k:B.k,dilation:B.dilation,residual:B.residual,padding:g,w:T(w.w),b:Float32Array.from(w.b)}}let v=B;return{k:B.k,dilation:B.dilation,residual:B.residual,padding:g,w:G(v.w),b:Float32Array.from(v.b.data)}});return{version:2,charset:A.charset,classes:A.classes,embed:e?T(A.embed):G(A.embed),conv:s,bio:e?N(A.bio):j(A.bio),cls:e?N(A.cls):j(A.cls),crf:TA(A)}}let r=A.layers??3,n=A.dilation??2,f=[{name:"conv1",k:3,dilation:1},{name:"conv2",k:5,dilation:1},{name:"conv3",k:3,dilation:n}];r===4&&f.push({name:"conv4",k:3,dilation:4});let t=f.map(s=>{let B=wA(s.dilation,s.k);if(e){let P=A[s.name];if(!P)throw new Error(`missing ${s.name} in weights JSON`);return{k:s.k,dilation:s.dilation,residual:!1,padding:B,w:T(P.w),b:Float32Array.from(P.b)}}let v=A[s.name];if(!v)throw new Error(`missing ${s.name} in weights JSON`);return{k:s.k,dilation:s.dilation,residual:!1,padding:B,w:G(v.w),b:Float32Array.from(v.b.data)}});return{version:A.version??1,charset:A.charset,classes:A.classes,embed:e?T(A.embed):G(A.embed),conv:t,bio:e?N(A.bio):j(A.bio),cls:e?N(A.cls):j(A.cls)}}function yA(A){return Math.ceil(A/8)*8}function x(A){return yA(A+24)}var z=x(128),XA=/[०-९]/g;function k(A){return A.normalize("NFC").replace(XA,e=>String(e.charCodeAt(0)-2406)).toLowerCase()}function DA(A){let e=new Map;for(let r=0;r<A.length;r++)e.set(A[r],r);return e}function m(A,e,r,n){let f=e.get("<unk>")??1,t=e.get("<pad>")??0,s=n??A.length,B=r?r.subarray(0,s):new Int32Array(s);for(let g=0;g<A.length;g++)B[g]=e.get(A[g])??f;for(let g=A.length;g<s;g++)B[g]=t;return B}function nA(A){if(A<=128)return[{offset:0,length:A}];let e=[],r=112,n=0;for(;n<A;){let f=Math.min(128,A-n);if(e.push({offset:n,length:f}),n+f>=A)break;n+=r}return e}var S=class{buffers;padded;bioBuf;clsBuf;constructor(e){let r=e.conv,n=Math.max(e.embed.shape[1],...r.map(t=>t.w.shape[0]));this.buffers=[new Float32Array(n*z),new Float32Array(n*z)];let f=r.length?Math.max(...r.map(t=>t.padding)):0;this.padded=new Float32Array(n*(z+2*f)),this.bioBuf=new Float32Array(e.bio.w.shape[0]*z),this.clsBuf=new Float32Array(e.cls.w.shape[0]*z)}buf(e){return this.buffers[e%2]}paddedBuf(){return this.padded}};function YA(A,e,r,n,f,t){let[s,B,g]=n.w.shape;if(B!==e)throw new Error(`channel mismatch: expected ${e}, got ${B}`);let v=n.w.data,w=n.b,P=n.padding,o=n.dilation,D=r+2*P;for(let Q=0;Q<e;Q++)t.fill(0,Q*D,Q*D+P),t.set(A.subarray(Q*r,Q*r+r),Q*D+P),t.fill(0,Q*D+P+r,Q*D+D);for(let Q=0;Q<s;Q++){let u=Q*r,I=w[Q],i=Q*e*g;if(g===3){for(let C=0;C<r;C++)f[u+C]=I;for(let C=0;C<e;C++){let E=C*D,b=i+C*3,d=v[b],L=v[b+1],l=v[b+2];for(let c=0;c<r;c++){let a=E+c;f[u+c]+=d*t[a]+L*t[a+o]+l*t[a+2*o]}}}else if(g===5){for(let C=0;C<r;C++)f[u+C]=I;for(let C=0;C<e;C++){let E=C*D,b=i+C*5,d=v[b],L=v[b+1],l=v[b+2],c=v[b+3],a=v[b+4];for(let h=0;h<r;h++){let M=E+h;f[u+h]+=d*t[M]+L*t[M+1]+l*t[M+2]+c*t[M+3]+a*t[M+4]}}}else{for(let C=0;C<r;C++)f[u+C]=I;for(let C=0;C<e;C++){let E=C*D,b=i+C*g;for(let d=0;d<g;d++){let L=v[b+d],l=d*o,c=E+l;for(let a=0;a<r;a++)f[u+a]+=L*t[c+a]}}}if(n.residual)for(let C=0;C<r;C++){let E=f[u+C];f[u+C]=(E>0?E:0)+A[u+C]}else for(let C=0;C<r;C++){let E=f[u+C];f[u+C]=E>0?E:0}}return s}function CA(A,e,r,n,f){let[t,s]=n.w.shape;if(s!==e)throw new Error(`head channel mismatch: expected ${e}, got ${s}`);let B=n.w.data,g=n.b,v=e-e%4;for(let w=0;w<r;w++){let P=w*t;for(let o=0;o<t;o++){let D=g[o],Q=o*e,u=0;for(;u<v;u+=4)D+=B[Q+u]*A[u*r+w]+B[Q+u+1]*A[(u+1)*r+w]+B[Q+u+2]*A[(u+2)*r+w]+B[Q+u+3]*A[(u+3)*r+w];for(;u<e;u++)D+=B[Q+u]*A[u*r+w];f[P+o]=D}}return t}function J(A,e,r){let n=e.length,f=A.embed,t=f.shape[1],s=r.buf(0);for(let P=0;P<n;P++){let D=e[P]*t;for(let Q=0;Q<t;Q++)s[Q*n+P]=f.data[D+Q]}let B=t,g=r.paddedBuf(),v=1;for(let P of A.conv){let o=r.buf(v);B=YA(s,B,n,P,o,g),s=o,v++}CA(s,B,n,A.bio,r.bioBuf);let w=CA(s,B,n,A.cls,r.clsBuf);return{bioLogits:r.bioBuf,clsLogits:r.clsBuf,length:n,nCls:w}}function rA(A,e,r,n){let f=-1/0;for(let s=0;s<r;s++)f=Math.max(f,A[e+s]);let t=0;for(let s=0;s<r;s++){let B=Math.exp(A[e+s]-f);n[s]=B,t+=B}for(let s=0;s<r;s++)n[s]/=t;return n}function y(A,e,r){let n=0,f=-1/0;for(let t=0;t<r;t++){let s=A[e+t];s>f&&(f=s,n=t)}return n}var jA=new Float32Array(z*3),NA=new Int32Array(z*3);function tA(A,e,r,n){if(e===0)return;let{trans:f,start:t,end:s}=r,B=jA,g=NA;for(let o=0;o<3;o++)B[o]=Math.fround(t[o]+A[o]);for(let o=1;o<e;o++){let D=(o-1)*3,Q=o*3,u=o*3;for(let I=0;I<3;I++){let i=-1/0,C=0;for(let E=0;E<3;E++){let b=Math.fround(B[D+E]+f[E*3+I]);b>i&&(i=b,C=E)}B[Q+I]=Math.fround(i+A[u+I]),g[Q+I]=C}}let v=(e-1)*3,w=-1/0,P=0;for(let o=0;o<3;o++){let D=Math.fround(B[v+o]+s[o]);D>w&&(w=D,P=o)}n[e-1]=P;for(let o=e-1;o>0;o--)P=g[o*3+P],n[o-1]=P}var SA=["PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE"],JA=Array.from({length:99},(A,e)=>`CARD_${e+1}`),_A=["UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],KA=["O","SEP","RANGE","DIGITS","DOT","COMMA"],F=["O",...KA.filter(A=>A!=="O"),...SA,...JA,..._A],O=Object.fromEntries(F.map((A,e)=>[A,e])),QA={UNIT_SAU:100,UNIT_HAZAAR:1e3,UNIT_LAKH:1e5,UNIT_MILLION:1e6,UNIT_CRORE:1e7,UNIT_BILLION:1e9,UNIT_ARAB:1e9,UNIT_KHARAB:1e11},_={UNIT_SAU:"sau",UNIT_HAZAAR:"hazaar",UNIT_LAKH:"lakh",UNIT_MILLION:"million",UNIT_CRORE:"crore",UNIT_BILLION:"billion",UNIT_ARAB:"arab",UNIT_KHARAB:"kharab"},BA={PFX_PAAV:{standalone:.25,op:null},PFX_AADHA:{standalone:.5,op:null},PFX_PAUNE:{standalone:.75,op:"sub25",min_n:2},PFX_SAVA:{standalone:1.25,op:"add25",min_n:2},PFX_DEDH:{standalone:1.5,op:null},PFX_DHAI:{standalone:2.5,op:null},PFX_SAADHE:{standalone:.5,op:"add5",min_n:3}};function uA(A){return A in BA}function cA(A){return A.startsWith("CARD_")}function aA(A){return A in QA}function iA(A){return parseInt(A.split("_",2)[1],10)}function K(A){return QA[A]}var VA=new Set(["SEP","RANGE","DOT","COMMA"]),EA=new Set([...VA,"O"]),sA=["PFX_","CARD_","UNIT_"],qA=["PFX_","CARD_","UNIT_"],ZA=new Set(["-","\u2013","\u2014","/"]),$A=new Set(["k","K","l","L"]),lA=/['’]([A-Za-zऀ-ॿ]{1,2})(?![A-Za-zऀ-ॿ])/g;function Ae(A){return sA.some(e=>A.startsWith(e))||A==="DIGITS"}function ee(A){return qA.some(e=>A.startsWith(e))}var V=O.O,U=O.SEP,W=O.RANGE,ne=O.DIGITS,re=O.DOT,te=O.COMMA,Be=/\p{L}|\p{M}/u;function R(A){return Be.test(A)?"letter":/[0-9]/.test(A)?"digit":/\s/.test(A)?"space":"punct"}function fe(A){let e=[],r=0,n=A.length;for(;r<n;){let f=R(A[r]),t=r+1;for(;t<n&&R(A[t])===f;)t++;e.push({type:f,start:r,end:t}),r=t}return e}function se(A,e,r){let n=new Map;for(let v=e;v<r;v++){let w=A[v];ee(F[w])&&n.set(w,(n.get(w)??0)+1)}if(n.size===0)return V;let f=-1;for(let v of n.values())v>f&&(f=v);let t=[...n.entries()].filter(([,v])=>v===f).map(([v])=>v);if(t.length===1)return t[0];let s=-1,B=1/0,g=t[0];for(let v of t){let w=0,P=0,o=1/0;for(let D=e;D<r;D++)A[D]===v?(o===1/0&&(o=D),w++,w>P&&(P=w)):w=0;(P>s||P===s&&o<B)&&(s=P,B=o,g=v)}return g}function hA(A,e,r){let n=[],f=e;for(;f<r;){let B=f+1;for(;B<r&&A[B]===A[f];)B++;n.push({start:f,end:B,cls:A[f]}),f=B}let t=se(A,e,r),s=[];for(let B=0;B<n.length;B++){let g=n[B];if(g.end-g.start>=3){s.push([g.start,g.end,g.cls]);continue}let w=B>0?n[B-1]:null,P=B<n.length-1?n[B+1]:null,o=w!==null&&w.end-w.start>=3,D=P!==null&&P.end-P.start>=3,Q;if(o&&D){let u=w.end-w.start;Q=P.end-P.start>u?P.cls:w.cls}else o?Q=w.cls:D?Q=P.cls:Q=t;s.push([g.start,g.end,Q])}return s}function ge(A){return sA.some(e=>A.startsWith(e))||A==="DIGITS"}function IA(A,e,r,n){if(A==="digit")return"DIGITS";if(A==="letter"){let f=hA(n,e,r),t=new Map;for(let[g,v,w]of f)t.set(w,(t.get(w)??0)+(v-g));let s=-1,B=-1;for(let[g,v]of t)v>B&&(B=v,s=g);return s>=0?F[s]:null}return null}function bA(A,e,r){let n=e+r;if(n<0||n>=A.length||A[n].type==="space"&&(n+=r,n<0||n>=A.length))return null;let f=A[n];return f.type==="digit"||f.type==="letter"?f:null}function oe(A,e,r){let n=bA(A,e,-1),f=bA(A,e,1);if(!n||!f)return!1;let t=IA(n.type,n.start,n.end,r),s=IA(f.type,f.start,f.end,r);return!t||!s||!ge(t)?!1:s==="DIGITS"||s.startsWith("CARD_")||s.startsWith("PFX_")}function ve(A,e){let r=A.length,n=new Array(r),f=fe(A);for(let t=0;t<f.length;t++){let s=f[t],{type:B,start:g,end:v}=s;if(B==="digit"){for(let D=g;D<v;D++)n[D]=ne;continue}if(B==="space"){let D=!1;for(let u=g;u<v;u++)if(e[u]===W){D=!0;break}let Q=D?W:U;for(let u=g;u<v;u++)n[u]=Q;continue}if(B==="letter"){for(let[D,Q,u]of hA(e,g,v))for(let I=D;I<Q;I++)n[I]=u;continue}let w=t>0?f[t-1].type:null,P=t<f.length-1?f[t+1].type:null,o=U;if(v-g===1){let D=A[g];(D==="."||D===",")&&w==="digit"&&P==="digit"?o=D==="."?re:te:ZA.has(D)&&oe(f,t,e)?o=W:o=U}for(let D=g;D<v;D++)n[D]=o}return n}function we(A,e){let r=Array.from({length:e},(n,f)=>A[f]);for(let n=1;n<e-1;n++)A[n]===0&&(A[n-1]===1||A[n-1]===2)&&A[n+1]===2&&(r[n]=2);return r}function HA(A){return A!==void 0&&A>="0"&&A<="9"}function Pe(A,e,r){if(r<=e||!HA(A[r-1]))return r;let n=r;for(;n<A.length&&HA(A[n]);)n++;return n}var De=24;function Ce(A,e,r){let n=[],f=e;for(;f<r;){let B=f+1;for(;B<r&&A[B]===A[f];)B++;n.push({start:f,end:B,cls:A[f]}),f=B}let t=[];for(let B=0;B<n.length;B++){let g=n[B];if(g.end-g.start>=3){t.push(g.cls);continue}let v=B>0?n[B-1]:null,w=B<n.length-1?n[B+1]:null,P=v!==null&&v.end-v.start>=3,o=w!==null&&w.end-w.start>=3;if(P&&o){let D=v.end-v.start,Q=w.end-w.start;t.push(Q>D?w.cls:v.cls)}else if(P)t.push(v.cls);else if(o)t.push(w.cls);else return null}return new Set(t).size===1?t[0]:null}function Qe(A,e,r){let n=A.length,f=Array.from({length:n},(t,s)=>A[s]);for(let[t,s]of r){let B=s-t;if(B===0||B>De)continue;let g=!1,v=!0;for(let P=t;P<s;P++)A[P]===1||A[P]===2?g=!0:v=!1;if(!g||v)continue;let w=Ce(e,t,s);if(!(w===null||!fA(F[w]))){for(let P=t;P<s;P++)f[P]=2;f[t]=1}}return f}function ue(A){let e=[],r=0,n=A.length;for(;r<n;)if(R(A[r])==="letter"){let f=r+1;for(;f<n&&R(A[f])==="letter";)f++;e.push([r,f]),r=f}else r++;return e}function fA(A){return sA.some(e=>A.startsWith(e))&&A!=="DIGITS"}function ce(A,e,r,n,f){let t=Array.from({length:n.length},(s,B)=>n[B]);for(let[s,B]of f){if(B<=e||s>=r)continue;let g=Math.max(s,e),v=Math.min(B,r),w=s>=e&&B<=r;if(w){for(let P=s;P<B;P++)if(!fA(F[t[P]])){w=!1;break}}if(w){B-s===1&&F[t[s]].startsWith("UNIT_")&&$A.has(A[s])&&B<A.length&&R(A[B])==="letter"&&(t[s]=V);continue}for(let P=g;P<v;P++)fA(F[t[P]])&&(t[P]=V)}return t}function ae(A,e,r,n){let f=Array.from({length:n.length},(B,g)=>n[g]),t=A.slice(e,r);lA.lastIndex=0;let s;for(;s=lA.exec(t);)for(let B=e+s.index;B<e+s.index+s[0].length;B++)f[B]=V;return f}function ie(A){let e=new Map;for(let s of A)e.set(s,(e.get(s)??0)+1);let r=-1;for(let s of e.values())s>r&&(r=s);let n=[...e.entries()].filter(([,s])=>s===r).map(([s])=>s);if(n.length===1)return n[0];let f=-1,t=n[0];for(let s of n){let B=0,g=0;for(let v of A)v===s?(B++,B>g&&(g=B)):B=0;g>f&&(f=g,t=s)}return t}function Ee(A,e,r){if(r.length<2)return r;let n=[r[0]];for(let f of r.slice(1)){let t=n[n.length-1],s=t.end,B=f.start,g=A.slice(s,B),v=g.length,w=0;for(;w<v&&R(g[w])==="space";)w++;let P=w;for(;w<v&&R(g[w])==="letter";)w++;let o=w;for(;w<v&&R(g[w])==="space";)w++;if(P===o||w!==v){n.push(f);continue}let D=s+P,Q=s+o,u=[];for(let E=D;E<Q;E++)u.push(e[E]);if(F[ie(u)]!=="RANGE"){n.push(f);continue}let i=[];P>0&&i.push([U,g.slice(0,P)]),i.push([W,g.slice(P,o)]),o<v&&i.push([U,g.slice(o,v)]);let C=t.confidence===null||f.confidence===null?null:(t.confidence+f.confidence)/2;n[n.length-1]={start:t.start,end:f.end,text:A.slice(t.start,f.end),tokens:[...t.tokens,...i,...f.tokens],confidence:C}}return n}function dA(A,e,r,n){let f=A.length,t=ue(A),s=we(e,f);s=Qe(s,r,t);let B=[],g=null;for(let P=0;P<f;P++){let o=s[P];o===1?(g!==null&&B.push([g,P]),g=P):o===2||g!==null&&(B.push([g,P]),g=null)}g!==null&&B.push([g,f]);for(let P=0;P<B.length;P++)B[P]=[B[P][0],Pe(A,B[P][0],B[P][1])];let v=Array.from({length:f},(P,o)=>r[o]),w=[];for(let[P,o]of B){let D=A.slice(P,o),Q=Array.from({length:o-P},(c,a)=>v[P+a]),u=ve(D,Q);for(let c=P;c<o;c++)v[c]=u[c-P];v=ce(A,P,o,v,t),v=ae(A,P,o,v);let I=P,i=[];for(let c=P+1;c<=o;c++)(c===o||v[c]!==v[I])&&(i.push([v[I],I,c]),I=c);let C=0,E=i.length;for(;C<E&&EA.has(F[i[C][0]]);)C++;for(;E>C&&EA.has(F[i[E-1][0]]);)E--;let b=i.slice(C,E);if(b.length===0)continue;let d=b[0][1],L=b[b.length-1][2];if(!b.some(([c])=>Ae(F[c])))continue;let l=null;if(n){let c=[];for(let a=d;a<L;a++)c.push(Math.max(...n[a]));if(l=c.length?c.reduce((a,h)=>a+h,0)/c.length:0,l<.5)continue}w.push({start:d,end:L,text:A.slice(d,L),tokens:b.map(([c,a,h])=>[c,A.slice(a,h)]),confidence:l})}return Ee(A,r,w)}function le(A){let e=[],r="",n=!1,f=()=>{if(n){let t=r.replace(/,/g,""),s=parseFloat(t);e.push(["NUM",Number.isNaN(s)?0:s])}r="",n=!1};for(let[t,s]of A)t!=="SEP"&&(t==="DIGITS"||t==="DOT"||t==="COMMA"?(r+=s,n=!0):(f(),e.push([t,s])));return f(),e}function Ie(A,e){if(e!==null){let r=BA[e];if(r===void 0)return A!==null?A:1;if(A!==null&&r.op){if(r.op==="sub25")return A-.25;if(r.op==="add25")return A+.25;if(r.op==="add5")return A+.5}return r.standalone}return A!==null?A:1}function be(A){let e=le(A),r=0,n=null,f=null,t=null,s=null;function B(g){let v=Ie(t,s);if(g===null)r+=v*1;else{let w=K(g);n!==null&&w>n?r=r*w:r=r+v*w,n=w,(f===null||w>K(f))&&(f=g)}t=null,s=null}for(let[g,v]of e)if(g==="NUM")t!==null&&B(null),t=v;else if(cA(g)){t!==null&&B(null);try{t=iA(g)}catch{}}else if(uA(g))s!==null&&B(null),s=g;else if(aA(g))B(g);else continue;return(t!==null||s!==null)&&B(null),[r,f]}function X(A){let e=Math.round(A),r=Math.max(1e-6,Math.abs(A)*1e-9);return Math.abs(A-e)<r?e:Math.round(A*1e6)/1e6}function He(A){let e=[],r=0;for(;r<A.length;){let[n,f]=A[r];if(n.startsWith("PFX_")){let t=f,s=r+1;for(;;){let B=s;if(B<A.length&&A[B][0]==="SEP"&&B++,B<A.length&&A[B][0]===n){for(let g=s;g<=B;g++)t+=A[g][1];s=B+1;continue}break}e.push([n,t]),r=s}else e.push(A[r]),r++}return e}function FA(A){try{let e=A.map(o=>o[0]),r=He(A),n=[[]];for(let[o,D]of r){if(o==="RANGE"){n.length<2&&n.push([]);continue}n[n.length-1].push([o,D])}let f=n.filter(o=>o.length>0).map(o=>be(o));if(f.length===0)return{value:0,range:null,unit:null,classes:e,currency:null};if(f.length===1){let[o,D]=f[0];return{value:X(o),range:null,unit:D?_[D]??null:null,classes:e,currency:null}}let[t,s]=f[0],[B,g]=f[1];if(s!==null&&g!==null&&t>B)return{value:X(t+B),range:null,unit:_[s]??null,classes:e,currency:null};let v;s===null&&g!==null?(t=t*K(g),v=g):v=s!==null?s:g;let[w,P]=t<=B?[t,B]:[B,t];return{value:X(w),range:[X(w),X(P)],unit:v?_[v]??null:null,classes:e,currency:null}}catch{return{value:0,range:null,unit:null,classes:A.map(e=>e[0]),currency:null}}}function he(A){let e=!1;for(let[r]of A)if(r==="DIGITS")e=!0;else if(r.startsWith("UNIT_")||r.startsWith("PFX_")||r.startsWith("CARD_"))return!1;return e}function MA(A){if(!he(A))return!1;let e=0,r=!1;for(let[n,f]of A)n==="DIGITS"?e+=f.length:n==="COMMA"&&(r=!0);return e<=4&&!r||e>=10}var de=new Set(["SEP","RANGE","DOT","COMMA","O"]);function LA(A){let e=A.filter(([n])=>!de.has(n));if(e.length!==1)return!1;let[r]=e[0];if(r!=="UNIT_KHARAB"&&r!=="UNIT_MILLION")return!1;for(let[n]of A)if(n==="DIGITS"||n.startsWith("CARD_")||n.startsWith("PFX_"))return!1;return!0}function zA(...A){let e=(n,f)=>f.length-n.length,r=n=>[...new Set(n.flat())].sort(e);return{currency_markers_before:r(A.map(n=>n.currency_markers_before??[])),currency_words_after:r(A.map(n=>n.currency_words_after??[]))}}function RA(A,e,r,n){let f=A.slice(Math.max(0,e-8),e),t=A.slice(r,r+8),B=f.replace(/\s+$/,"").toLowerCase(),g=[...n.currency_markers_before??[]].sort((o,D)=>D.length-o.length);for(let o of g){let D=o.replace(/\.+$/,"").toLowerCase();if(B.endsWith(o.toLowerCase())||B.endsWith(D))return"INR"}let w=t.replace(/^\s+/,"").toLowerCase(),P=[...n.currency_words_after??[]].sort((o,D)=>D.length-o.length);for(let o of P){let D=o.toLowerCase();if(w.startsWith(D))return"INR"}return null}var OA={currency_markers_before:["\u20B9","Rs","Rs.","rs","INR","Re"],currency_words_after:["rupaye","rupay","rupees","rupiya","rupya","/-"]};var xA={currency_markers_before:["\u20B9","\u0930\u0941","\u0930\u0941.","Rs","Rs.","INR"],currency_words_after:["\u0930\u0941\u092A\u092F\u0947","\u0930\u0941\u092A\u090F","\u0930\u0942\u092A\u092F\u0947","\u0930\u0941\u092A\u092F\u093E","/-"]};var Fe=`
1
+ function XA(A){if(A.crf)return{trans:Float32Array.from(A.crf.trans.data),start:Float32Array.from(A.crf.start.data),end:Float32Array.from(A.crf.end.data)}}function NA(A){return A.version===2&&Array.isArray(A.conv)}function YA(A){return A.quantized!==void 0}function jA(A){let e=atob(A),t=new Int8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)<<24>>24;return t}function x(A){let e=jA(A.data_b64),t=new Float32Array(e.length);for(let n=0;n<e.length;n++)t[n]=e[n]*A.scale;return{shape:A.shape,data:t}}function m(A){return{shape:A.shape,data:Float32Array.from(A.data)}}function cA(A,e){return A*(e-1)/2}function j(A){return{w:m(A.w),b:Float32Array.from(A.b.data)}}function S(A){return{w:x(A.w),b:Float32Array.from(A.b)}}function uA(A){let e=YA(A);if(NA(A)){let f=A.conv.map(B=>{let a=cA(B.dilation,B.k);if(e){let D=B;return{k:B.k,dilation:B.dilation,residual:B.residual,padding:a,w:x(D.w),b:Float32Array.from(D.b)}}let C=B;return{k:B.k,dilation:B.dilation,residual:B.residual,padding:a,w:m(C.w),b:Float32Array.from(C.b.data)}});return{version:2,charset:A.charset,classes:A.classes,embed:e?x(A.embed):m(A.embed),conv:f,bio:e?S(A.bio):j(A.bio),cls:e?S(A.cls):j(A.cls),crf:XA(A)}}let t=A.layers??3,n=A.dilation??2,r=[{name:"conv1",k:3,dilation:1},{name:"conv2",k:5,dilation:1},{name:"conv3",k:3,dilation:n}];t===4&&r.push({name:"conv4",k:3,dilation:4});let s=r.map(f=>{let B=cA(f.dilation,f.k);if(e){let o=A[f.name];if(!o)throw new Error(`missing ${f.name} in weights JSON`);return{k:f.k,dilation:f.dilation,residual:!1,padding:B,w:x(o.w),b:Float32Array.from(o.b)}}let C=A[f.name];if(!C)throw new Error(`missing ${f.name} in weights JSON`);return{k:f.k,dilation:f.dilation,residual:!1,padding:B,w:m(C.w),b:Float32Array.from(C.b.data)}});return{version:A.version??1,charset:A.charset,classes:A.classes,embed:e?x(A.embed):m(A.embed),conv:s,bio:e?S(A.bio):j(A.bio),cls:e?S(A.cls):j(A.cls)}}function SA(A){return Math.ceil(A/8)*8}function z(A){return SA(A+24)}var L=z(128),JA=/[०-९]/g;function y(A){return A.normalize("NFC").replace(JA,e=>String(e.charCodeAt(0)-2406)).toLowerCase()}function iA(A){let e=new Map;for(let t=0;t<A.length;t++)e.set(A[t],t);return e}function G(A,e,t,n){let r=e.get("<unk>")??1,s=e.get("<pad>")??0,f=n??A.length,B=t?t.subarray(0,f):new Int32Array(f);for(let a=0;a<A.length;a++)B[a]=e.get(A[a])??r;for(let a=A.length;a<f;a++)B[a]=s;return B}function tA(A){if(A<=128)return[{offset:0,length:A}];let e=[],t=112,n=0;for(;n<A;){let r=Math.min(128,A-n);if(e.push({offset:n,length:r}),n+r>=A)break;n+=t}return e}var J=class{buffers;padded;bioBuf;clsBuf;constructor(e){let t=e.conv,n=Math.max(e.embed.shape[1],...t.map(s=>s.w.shape[0]));this.buffers=[new Float32Array(n*L),new Float32Array(n*L)];let r=t.length?Math.max(...t.map(s=>s.padding)):0;this.padded=new Float32Array(n*(L+2*r)),this.bioBuf=new Float32Array(e.bio.w.shape[0]*L),this.clsBuf=new Float32Array(e.cls.w.shape[0]*L)}buf(e){return this.buffers[e%2]}paddedBuf(){return this.padded}};function KA(A,e,t,n,r,s){let[f,B,a]=n.w.shape;if(B!==e)throw new Error(`channel mismatch: expected ${e}, got ${B}`);let C=n.w.data,D=n.b,o=n.padding,g=n.dilation,v=t+2*o;for(let P=0;P<e;P++)s.fill(0,P*v,P*v+o),s.set(A.subarray(P*t,P*t+t),P*v+o),s.fill(0,P*v+o+t,P*v+v);for(let P=0;P<f;P++){let c=P*t,l=D[P],Q=P*e*a;if(a===3){for(let w=0;w<t;w++)r[c+w]=l;for(let w=0;w<e;w++){let E=w*v,R=Q+w*3,H=C[R],F=C[R+1],h=C[R+2];for(let u=0;u<t;u++){let i=E+u;r[c+u]+=H*s[i]+F*s[i+g]+h*s[i+2*g]}}}else if(a===5){for(let w=0;w<t;w++)r[c+w]=l;for(let w=0;w<e;w++){let E=w*v,R=Q+w*5,H=C[R],F=C[R+1],h=C[R+2],u=C[R+3],i=C[R+4];for(let b=0;b<t;b++){let _=E+b;r[c+b]+=H*s[_]+F*s[_+1]+h*s[_+2]+u*s[_+3]+i*s[_+4]}}}else{for(let w=0;w<t;w++)r[c+w]=l;for(let w=0;w<e;w++){let E=w*v,R=Q+w*a;for(let H=0;H<a;H++){let F=C[R+H],h=H*g,u=E+h;for(let i=0;i<t;i++)r[c+i]+=F*s[u+i]}}}if(n.residual)for(let w=0;w<t;w++){let E=r[c+w];r[c+w]=(E>0?E:0)+A[c+w]}else for(let w=0;w<t;w++){let E=r[c+w];r[c+w]=E>0?E:0}}return f}function QA(A,e,t,n,r){let[s,f]=n.w.shape;if(f!==e)throw new Error(`head channel mismatch: expected ${e}, got ${f}`);let B=n.w.data,a=n.b,C=e-e%4;for(let D=0;D<t;D++){let o=D*s;for(let g=0;g<s;g++){let v=a[g],P=g*e,c=0;for(;c<C;c+=4)v+=B[P+c]*A[c*t+D]+B[P+c+1]*A[(c+1)*t+D]+B[P+c+2]*A[(c+2)*t+D]+B[P+c+3]*A[(c+3)*t+D];for(;c<e;c++)v+=B[P+c]*A[c*t+D];r[o+g]=v}}return s}function K(A,e,t){let n=e.length,r=A.embed,s=r.shape[1],f=t.buf(0);for(let o=0;o<n;o++){let v=e[o]*s;for(let P=0;P<s;P++)f[P*n+o]=r.data[v+P]}let B=s,a=t.paddedBuf(),C=1;for(let o of A.conv){let g=t.buf(C);B=KA(f,B,n,o,g,a),f=g,C++}QA(f,B,n,A.bio,t.bioBuf);let D=QA(f,B,n,A.cls,t.clsBuf);return{bioLogits:t.bioBuf,clsLogits:t.clsBuf,length:n,nCls:D}}function rA(A,e,t,n){let r=-1/0;for(let f=0;f<t;f++)r=Math.max(r,A[e+f]);let s=0;for(let f=0;f<t;f++){let B=Math.exp(A[e+f]-r);n[f]=B,s+=B}for(let f=0;f<t;f++)n[f]/=s;return n}function X(A,e,t){let n=0,r=-1/0;for(let s=0;s<t;s++){let f=A[e+s];f>r&&(r=f,n=s)}return n}var WA=new Float32Array(L*3),VA=new Int32Array(L*3);function sA(A,e,t,n){if(e===0)return;let{trans:r,start:s,end:f}=t,B=WA,a=VA;for(let g=0;g<3;g++)B[g]=Math.fround(s[g]+A[g]);for(let g=1;g<e;g++){let v=(g-1)*3,P=g*3,c=g*3;for(let l=0;l<3;l++){let Q=-1/0,w=0;for(let E=0;E<3;E++){let R=Math.fround(B[v+E]+r[E*3+l]);R>Q&&(Q=R,w=E)}B[P+l]=Math.fround(Q+A[c+l]),a[P+l]=w}}let C=(e-1)*3,D=-1/0,o=0;for(let g=0;g<3;g++){let v=Math.fround(B[C+g]+f[g]);v>D&&(D=v,o=g)}n[e-1]=o;for(let g=e-1;g>0;g--)o=a[g*3+o],n[g-1]=o}var qA=["PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE"],ZA=Array.from({length:99},(A,e)=>`CARD_${e+1}`),$A=["UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],Ae=["O","SEP","RANGE","DIGITS","DOT","COMMA"],d=["O",...Ae.filter(A=>A!=="O"),...qA,...ZA,...$A],O=Object.fromEntries(d.map((A,e)=>[A,e])),EA={UNIT_SAU:100,UNIT_HAZAAR:1e3,UNIT_LAKH:1e5,UNIT_MILLION:1e6,UNIT_CRORE:1e7,UNIT_BILLION:1e9,UNIT_ARAB:1e9,UNIT_KHARAB:1e11},N={UNIT_SAU:"sau",UNIT_HAZAAR:"hazaar",UNIT_LAKH:"lakh",UNIT_MILLION:"million",UNIT_CRORE:"crore",UNIT_BILLION:"billion",UNIT_ARAB:"arab",UNIT_KHARAB:"kharab"},BA={PFX_PAAV:{standalone:.25,op:null},PFX_AADHA:{standalone:.5,op:null},PFX_PAUNE:{standalone:.75,op:"sub25",min_n:2},PFX_SAVA:{standalone:1.25,op:"add25",min_n:2},PFX_DEDH:{standalone:1.5,op:null},PFX_DHAI:{standalone:2.5,op:null},PFX_SAADHE:{standalone:.5,op:"add5",min_n:3}};function fA(A){return A in BA}function aA(A){return A.startsWith("CARD_")}function DA(A){return A in EA}function lA(A){return parseInt(A.split("_",2)[1],10)}function p(A){return EA[A]}var ne=new Set(["SEP","RANGE","DOT","COMMA"]),hA=new Set([...ne,"O"]),oA=["PFX_","CARD_","UNIT_"],te=["PFX_","CARD_","UNIT_"],re=new Set(["-","\u2013","\u2014","/"]),se=new Set(["k","K","l","L"]),RA=/['’]([A-Za-zऀ-ॿ]{1,2})(?![A-Za-zऀ-ॿ])/g;function Be(A){return oA.some(e=>A.startsWith(e))||A==="DIGITS"}function fe(A){return te.some(e=>A.startsWith(e))}var V=O.O,T=O.SEP,W=O.RANGE,ae=O.DIGITS,De=O.DOT,Ce=O.COMMA,oe=/\p{L}|\p{M}/u;function M(A){return oe.test(A)?"letter":/[0-9]/.test(A)?"digit":/\s/.test(A)?"space":"punct"}function ge(A){let e=[],t=0,n=A.length;for(;t<n;){let r=M(A[t]),s=t+1;for(;s<n&&M(A[s])===r;)s++;e.push({type:r,start:t,end:s}),t=s}return e}function ve(A,e,t){let n=new Map;for(let C=e;C<t;C++){let D=A[C];fe(d[D])&&n.set(D,(n.get(D)??0)+1)}if(n.size===0)return V;let r=-1;for(let C of n.values())C>r&&(r=C);let s=[...n.entries()].filter(([,C])=>C===r).map(([C])=>C);if(s.length===1)return s[0];let f=-1,B=1/0,a=s[0];for(let C of s){let D=0,o=0,g=1/0;for(let v=e;v<t;v++)A[v]===C?(g===1/0&&(g=v),D++,D>o&&(o=D)):D=0;(o>f||o===f&&g<B)&&(f=o,B=g,a=C)}return a}function dA(A,e,t){let n=[],r=e;for(;r<t;){let B=r+1;for(;B<t&&A[B]===A[r];)B++;n.push({start:r,end:B,cls:A[r]}),r=B}let s=ve(A,e,t),f=[];for(let B=0;B<n.length;B++){let a=n[B];if(a.end-a.start>=3){f.push([a.start,a.end,a.cls]);continue}let D=B>0?n[B-1]:null,o=B<n.length-1?n[B+1]:null,g=D!==null&&D.end-D.start>=3,v=o!==null&&o.end-o.start>=3,P;if(g&&v){let c=D.end-D.start;P=o.end-o.start>c?o.cls:D.cls}else g?P=D.cls:v?P=o.cls:P=s;f.push([a.start,a.end,P])}return f}function Pe(A){return oA.some(e=>A.startsWith(e))||A==="DIGITS"}function IA(A,e,t,n){if(A==="digit")return"DIGITS";if(A==="letter"){let r=dA(n,e,t),s=new Map;for(let[a,C,D]of r)s.set(D,(s.get(D)??0)+(C-a));let f=-1,B=-1;for(let[a,C]of s)C>B&&(B=C,f=a);return f>=0?d[f]:null}return null}function bA(A,e,t){let n=e+t;if(n<0||n>=A.length||A[n].type==="space"&&(n+=t,n<0||n>=A.length))return null;let r=A[n];return r.type==="digit"||r.type==="letter"?r:null}function we(A,e,t){let n=bA(A,e,-1),r=bA(A,e,1);if(!n||!r)return!1;let s=IA(n.type,n.start,n.end,t),f=IA(r.type,r.start,r.end,t);return!s||!f||!Pe(s)?!1:f==="DIGITS"||f.startsWith("CARD_")||f.startsWith("PFX_")}function ce(A,e){let t=A.length,n=new Array(t),r=ge(A);for(let s=0;s<r.length;s++){let f=r[s],{type:B,start:a,end:C}=f;if(B==="digit"){for(let v=a;v<C;v++)n[v]=ae;continue}if(B==="space"){let v=!1;for(let c=a;c<C;c++)if(e[c]===W){v=!0;break}let P=v?W:T;for(let c=a;c<C;c++)n[c]=P;continue}if(B==="letter"){for(let[v,P,c]of dA(e,a,C))for(let l=v;l<P;l++)n[l]=c;continue}let D=s>0?r[s-1].type:null,o=s<r.length-1?r[s+1].type:null,g=T;if(C-a===1){let v=A[a];(v==="."||v===",")&&D==="digit"&&o==="digit"?g=v==="."?De:Ce:re.has(v)&&we(r,s,e)?g=W:g=T}for(let v=a;v<C;v++)n[v]=g}return n}function ue(A,e){let t=Array.from({length:e},(n,r)=>A[r]);for(let n=1;n<e-1;n++)A[n]===0&&(A[n-1]===1||A[n-1]===2)&&A[n+1]===2&&(t[n]=2);return t}function HA(A){return A!==void 0&&A>="0"&&A<="9"}function ie(A,e,t){if(t<=e||!HA(A[t-1]))return t;let n=t;for(;n<A.length&&HA(A[n]);)n++;return n}var Qe=24;function Ee(A,e,t){let n=[],r=e;for(;r<t;){let B=r+1;for(;B<t&&A[B]===A[r];)B++;n.push({start:r,end:B,cls:A[r]}),r=B}let s=[];for(let B=0;B<n.length;B++){let a=n[B];if(a.end-a.start>=3){s.push(a.cls);continue}let C=B>0?n[B-1]:null,D=B<n.length-1?n[B+1]:null,o=C!==null&&C.end-C.start>=3,g=D!==null&&D.end-D.start>=3;if(o&&g){let v=C.end-C.start,P=D.end-D.start;s.push(P>v?D.cls:C.cls)}else if(o)s.push(C.cls);else if(g)s.push(D.cls);else return null}return new Set(s).size===1?s[0]:null}function le(A,e,t){let n=A.length,r=Array.from({length:n},(s,f)=>A[f]);for(let[s,f]of t){let B=f-s;if(B===0||B>Qe)continue;let a=!1,C=!0;for(let o=s;o<f;o++)A[o]===1||A[o]===2?a=!0:C=!1;if(!a||C)continue;let D=Ee(e,s,f);if(!(D===null||!CA(d[D]))){for(let o=s;o<f;o++)r[o]=2;r[s]=1}}return r}function he(A){let e=[],t=0,n=A.length;for(;t<n;)if(M(A[t])==="letter"){let r=t+1;for(;r<n&&M(A[r])==="letter";)r++;e.push([t,r]),t=r}else t++;return e}function CA(A){return oA.some(e=>A.startsWith(e))&&A!=="DIGITS"}function Re(A,e,t,n,r){let s=Array.from({length:n.length},(f,B)=>n[B]);for(let[f,B]of r){if(B<=e||f>=t)continue;let a=Math.max(f,e),C=Math.min(B,t),D=f>=e&&B<=t;if(D){for(let o=f;o<B;o++)if(!CA(d[s[o]])){D=!1;break}}if(D){B-f===1&&d[s[f]].startsWith("UNIT_")&&se.has(A[f])&&B<A.length&&M(A[B])==="letter"&&(s[f]=V);continue}for(let o=a;o<C;o++)CA(d[s[o]])&&(s[o]=V)}return s}function Ie(A,e,t,n){let r=Array.from({length:n.length},(B,a)=>n[a]),s=A.slice(e,t);RA.lastIndex=0;let f;for(;f=RA.exec(s);)for(let B=e+f.index;B<e+f.index+f[0].length;B++)r[B]=V;return r}function be(A){let e=new Map;for(let f of A)e.set(f,(e.get(f)??0)+1);let t=-1;for(let f of e.values())f>t&&(t=f);let n=[...e.entries()].filter(([,f])=>f===t).map(([f])=>f);if(n.length===1)return n[0];let r=-1,s=n[0];for(let f of n){let B=0,a=0;for(let C of A)C===f?(B++,B>a&&(a=B)):B=0;a>r&&(r=a,s=f)}return s}function He(A,e,t){if(t.length<2)return t;let n=[t[0]];for(let r of t.slice(1)){let s=n[n.length-1],f=s.end,B=r.start,a=A.slice(f,B),C=a.length,D=0;for(;D<C&&M(a[D])==="space";)D++;let o=D;for(;D<C&&M(a[D])==="letter";)D++;let g=D;for(;D<C&&M(a[D])==="space";)D++;if(o===g||D!==C){n.push(r);continue}let v=f+o,P=f+g,c=[];for(let E=v;E<P;E++)c.push(e[E]);if(d[be(c)]!=="RANGE"){n.push(r);continue}let Q=[];o>0&&Q.push([T,a.slice(0,o)]),Q.push([W,a.slice(o,g)]),g<C&&Q.push([T,a.slice(g,C)]);let w=s.confidence===null||r.confidence===null?null:(s.confidence+r.confidence)/2;n[n.length-1]={start:s.start,end:r.end,text:A.slice(s.start,r.end),tokens:[...s.tokens,...Q,...r.tokens],confidence:w}}return n}function _A(A,e,t,n){let r=A.length,s=he(A),f=ue(e,r);f=le(f,t,s);let B=[],a=null;for(let o=0;o<r;o++){let g=f[o];g===1?(a!==null&&B.push([a,o]),a=o):g===2||a!==null&&(B.push([a,o]),a=null)}a!==null&&B.push([a,r]);for(let o=0;o<B.length;o++)B[o]=[B[o][0],ie(A,B[o][0],B[o][1])];let C=Array.from({length:r},(o,g)=>t[g]),D=[];for(let[o,g]of B){let v=A.slice(o,g),P=Array.from({length:g-o},(u,i)=>C[o+i]),c=ce(v,P);for(let u=o;u<g;u++)C[u]=c[u-o];C=Re(A,o,g,C,s),C=Ie(A,o,g,C);let l=o,Q=[];for(let u=o+1;u<=g;u++)(u===g||C[u]!==C[l])&&(Q.push([C[l],l,u]),l=u);let w=0,E=Q.length;for(;w<E&&hA.has(d[Q[w][0]]);)w++;for(;E>w&&hA.has(d[Q[E-1][0]]);)E--;let R=Q.slice(w,E);if(R.length===0)continue;let H=R[0][1],F=R[R.length-1][2];if(!R.some(([u])=>Be(d[u])))continue;let h=null;if(n){let u=[];for(let i=H;i<F;i++)u.push(Math.max(...n[i]));if(h=u.length?u.reduce((i,b)=>i+b,0)/u.length:0,h<.5)continue}D.push({start:H,end:F,text:A.slice(H,F),tokens:R.map(([u,i,b])=>[u,A.slice(i,b)]),confidence:h})}return He(A,t,D)}function FA(A){let e=[],t="",n=!1,r=()=>{if(n){let s=t.replace(/,/g,""),f=parseFloat(s);e.push(["NUM",Number.isNaN(f)?0:f])}t="",n=!1};for(let[s,f]of A)s!=="SEP"&&(s==="DIGITS"||s==="DOT"||s==="COMMA"?(t+=f,n=!0):(r(),e.push([s,f])));return r(),e}function de(A,e){if(e!==null){let t=BA[e];if(t===void 0)return A!==null?A:1;if(A!==null&&t.op){if(t.op==="sub25")return A-.25;if(t.op==="add25")return A+.25;if(t.op==="add5")return A+.5}return t.standalone}return A!==null?A:1}function gA(A){let e=FA(A),t=0,n=null,r=null,s=null,f=null;function B(a){let C=de(s,f);if(a===null)t+=C*1;else{let D=p(a);n!==null&&D>n?t=t*D:t=t+C*D,n=D,(r===null||D>p(r))&&(r=a)}s=null,f=null}for(let[a,C]of e)if(a==="NUM")s!==null&&B(null),s=C;else if(aA(a)){s!==null&&B(null);try{s=lA(a)}catch{}}else if(fA(a))f!==null&&B(null),f=a;else if(DA(a))B(a);else continue;return(s!==null||f!==null)&&B(null),[t,r]}function U(A){let e=Math.round(A),t=Math.max(1e-6,Math.abs(A)*1e-9);return Math.abs(A-e)<t?e:Math.round(A*1e6)/1e6}function _e(A){let e=[],t=0;for(;t<A.length;){let[n,r]=A[t];if(n.startsWith("PFX_")){let s=r,f=t+1;for(;;){let B=f;if(B<A.length&&A[B][0]==="SEP"&&B++,B<A.length&&A[B][0]===n){for(let a=f;a<=B;a++)s+=A[a][1];f=B+1;continue}break}e.push([n,s]),t=f}else e.push(A[t]),t++}return e}function Fe(A){let e=[],t=0,n=!1;for(let r=0;r<A.length;r++){let[s]=A[r];if(s==="NUM"||aA(s)||fA(s))n=!0;else if(DA(s))e.push([t,r+1,n,s]),t=r+1,n=!1;else continue}return t<A.length&&e.push([t,A.length,n,null]),e}function Le(A,e){let t=FA(A),n=Fe(t);for(let r=0;r<n.length-1;r++){let[,s,f,B]=n[r],[a,,C,D]=n[r+1];if(!(f&&C&&B!==null&&D!==null)||p(D)<p(B))continue;let[o]=gA(t.slice(0,s)),[g]=gA(t.slice(a));if(o<g)return{value:U(o),range:[U(o),U(g)],unit:N[B]??null,classes:e,currency:null}}return null}function LA(A){try{let e=A.map(g=>g[0]),t=_e(A),n=[[]];for(let[g,v]of t){if(g==="RANGE"){n.length<2&&n.push([]);continue}n[n.length-1].push([g,v])}let r=n.filter(g=>g.length>0).map(g=>gA(g));if(r.length===0)return{value:0,range:null,unit:null,classes:e,currency:null};if(r.length===1){let g=Le(n[0],e);if(g!==null)return g;let[v,P]=r[0];return{value:U(v),range:null,unit:P?N[P]??null:null,classes:e,currency:null}}let[s,f]=r[0],[B,a]=r[1];if(f!==null&&a!==null&&s>B)return{value:U(s+B),range:null,unit:N[f]??null,classes:e,currency:null};let C;f===null&&a!==null?(s=s*p(a),C=a):C=f!==null?f:a;let[D,o]=s<=B?[s,B]:[B,s];return{value:U(D),range:[U(D),U(o)],unit:C?N[C]??null:null,classes:e,currency:null}}catch{return{value:0,range:null,unit:null,classes:A.map(e=>e[0]),currency:null}}}function Me(A){let e=!1;for(let[t]of A)if(t==="DIGITS")e=!0;else if(t.startsWith("UNIT_")||t.startsWith("PFX_")||t.startsWith("CARD_"))return!1;return e}function MA(A){if(!Me(A))return!1;let e=0,t=!1;for(let[n,r]of A)n==="DIGITS"?e+=r.length:n==="COMMA"&&(t=!0);return e<=4&&!t||e>=10}var Ue=new Set(["SEP","RANGE","DOT","COMMA","O"]);function UA(A){let e=A.filter(([n])=>!Ue.has(n));if(e.length!==1)return!1;let[t]=e[0];if(t!=="UNIT_KHARAB"&&t!=="UNIT_MILLION")return!1;for(let[n]of A)if(n==="DIGITS"||n.startsWith("CARD_")||n.startsWith("PFX_"))return!1;return!0}function OA(...A){let e=(n,r)=>r.length-n.length,t=n=>[...new Set(n.flat())].sort(e);return{currency_markers_before:t(A.map(n=>n.currency_markers_before??[])),currency_words_after:t(A.map(n=>n.currency_words_after??[]))}}function zA(A,e,t,n){let r=A.slice(Math.max(0,e-8),e),s=A.slice(t,t+8),B=r.replace(/\s+$/,"").toLowerCase(),a=[...n.currency_markers_before??[]].sort((g,v)=>v.length-g.length);for(let g of a){let v=g.replace(/\.+$/,"").toLowerCase();if(B.endsWith(g.toLowerCase())||B.endsWith(v))return"INR"}let D=s.replace(/^\s+/,"").toLowerCase(),o=[...n.currency_words_after??[]].sort((g,v)=>v.length-g.length);for(let g of o){let v=g.toLowerCase();if(D.startsWith(v))return"INR"}return null}var pA={packs:{hi_deva:{forms:{bn:"UNIT_BILLION",cr:"UNIT_CRORE",k:"UNIT_HAZAAR",l:"UNIT_LAKH",lpa:"UNIT_LAKH",m:"UNIT_MILLION",\u0905\u091F\u094D\u0920\u093E\u0908\u0938:"CARD_28",\u0905\u091F\u094D\u0920\u093E\u0928\u0935\u0947:"CARD_98",\u0905\u091F\u094D\u0920\u093E\u0935\u0928:"CARD_58",\u0905\u091F\u094D\u0920\u093E\u0938\u0940:"CARD_88",\u0905\u0920\u0939\u0924\u094D\u0924\u0930:"CARD_78",\u0905\u0920\u093E\u0908\u0938:"CARD_28",\u0905\u0920\u093E\u0930\u0939:"CARD_18",\u0905\u0920\u094D\u0920\u093E\u0908\u0938:"CARD_28",\u0905\u0921\u093C\u0924\u093E\u0932\u0940\u0938:"CARD_48",\u0905\u0921\u093C\u0924\u0940\u0938:"CARD_38",\u0905\u0921\u093C\u0938\u0920:"CARD_68",\u0905\u0922\u093C\u093E\u0908:"PFX_DHAI",\u0905\u0930\u092C:"UNIT_ARAB",\u0905\u0938\u094D\u0938\u0940:"CARD_80",\u0906\u0920:"CARD_8",\u0906\u0927\u093E:"PFX_AADHA",\u0906\u0927\u0940:"PFX_AADHA",\u0906\u0927\u0947:"PFX_AADHA",\u0907\u0915\u0924\u093E\u0932\u0940\u0938:"CARD_41",\u0907\u0915\u0924\u0940\u0938:"CARD_31",\u0907\u0915\u0938\u0920:"CARD_61",\u0907\u0915\u0939\u0924\u094D\u0924\u0930:"CARD_71",\u0907\u0915\u094D\u0915\u0940\u0938:"CARD_21",\u0907\u0915\u094D\u092F\u093E\u0928\u0935\u0947:"CARD_91",\u0907\u0915\u094D\u092F\u093E\u0935\u0928:"CARD_51",\u0907\u0915\u094D\u092F\u093E\u0938\u0940:"CARD_81",\u0909\u0928\u091A\u093E\u0938:"CARD_49",\u0909\u0928\u0924\u093E\u0932\u0940\u0938:"CARD_39",\u0909\u0928\u0924\u0940\u0938:"CARD_29",\u0909\u0928\u0938\u0920:"CARD_59",\u0909\u0928\u0939\u0924\u094D\u0924\u0930:"CARD_69",\u0909\u0928\u094D\u0928\u0940\u0938:"CARD_19",\u0909\u0928\u094D\u092F\u093E\u0938\u0940:"CARD_79",\u090F\u0915:"CARD_1",\u0915\u0930\u094B\u0921:"UNIT_CRORE",\u0915\u0930\u094B\u0921\u093C:"UNIT_CRORE",\u0915\u0930\u094B\u0921\u093C\u094B\u0902:"O",\u0916\u0930\u092C:"UNIT_KHARAB",\u0916\u094B\u0916\u093E:"UNIT_CRORE",\u0917\u094D\u092F\u093E\u0930\u0939:"CARD_11",\u091A\u093E\u0930:"CARD_4",\u091A\u093E\u0932\u0940\u0938:"CARD_40",\u091A\u094C\u0902\u0924\u0940\u0938:"CARD_34",\u091A\u094C\u0902\u0938\u0920:"CARD_64",\u091A\u094C\u0926\u0939:"CARD_14",\u091A\u094C\u092C\u0940\u0938:"CARD_24",\u091A\u094C\u0930\u093E\u0928\u0935\u0947:"CARD_94",\u091A\u094C\u0930\u093E\u0938\u0940:"CARD_84",\u091A\u094C\u0935\u0928:"CARD_54",\u091A\u094C\u0935\u093E\u0932\u0940\u0938:"CARD_44",\u091A\u094C\u0939\u0924\u094D\u0924\u0930:"CARD_74",\u091B\u0903:"CARD_6",\u091B\u0924\u094D\u0924\u0940\u0938:"CARD_36",\u091B\u092A\u094D\u092A\u0928:"CARD_56",\u091B\u092C\u094D\u092C\u0940\u0938:"CARD_26",\u091B\u0939:"CARD_6",\u091B\u093F\u092F\u093E\u0928\u0935\u0947:"CARD_96",\u091B\u093F\u092F\u093E\u0932\u0940\u0938:"CARD_46",\u091B\u093F\u092F\u093E\u0938\u0920:"CARD_66",\u091B\u093F\u092F\u093E\u0938\u0940:"CARD_86",\u091B\u093F\u0939\u0924\u094D\u0924\u0930:"CARD_76",\u091B\u0947:"CARD_6",\u0921\u0947\u0922:"PFX_DEDH",\u0921\u0947\u0922\u093C:"PFX_DEDH",\u0922\u093E\u0908:"PFX_DHAI",\u0924\u093F\u0930\u092A\u0928:"CARD_53",\u0924\u093F\u0930\u0938\u0920:"CARD_63",\u0924\u093F\u0930\u093E\u0928\u0935\u0947:"CARD_93",\u0924\u093F\u0930\u093E\u0938\u0940:"CARD_83",\u0924\u093F\u0939\u0924\u094D\u0924\u0930:"CARD_73",\u0924\u0940\u0928:"CARD_3",\u0924\u0940\u0938:"CARD_30",\u0924\u0947\u0908\u0938:"CARD_23",\u0924\u0947\u0930\u0939:"CARD_13",\u0924\u0948\u0902\u0924\u093E\u0932\u0940\u0938:"CARD_43",\u0924\u0948\u0902\u0924\u0940\u0938:"CARD_33",\u0926\u0938:"CARD_10",\u0926\u094B:"CARD_2",\u0928\u092C\u094D\u092C\u0947:"CARD_90",\u0928\u0935\u093E\u0938\u0940:"CARD_89",\u0928\u093F\u0928\u094D\u092F\u093E\u0928\u0935\u0947:"CARD_99",\u0928\u094C:"CARD_9",\u092A\u0902\u0926\u094D\u0930\u0939:"CARD_15",\u092A\u091A\u092A\u0928:"CARD_55",\u092A\u091A\u0939\u0924\u094D\u0924\u0930:"CARD_75",\u092A\u091A\u093E\u0928\u0935\u0947:"CARD_95",\u092A\u091A\u093E\u0938:"CARD_50",\u092A\u091A\u093E\u0938\u0940:"CARD_85",\u092A\u091A\u094D\u091A\u0940\u0938:"CARD_25",\u092A\u0928\u094D\u0926\u094D\u0930\u0939:"CARD_15",\u092A\u093E\u0901\u091A:"CARD_5",\u092A\u093E\u0902\u091A:"CARD_5",\u092A\u093E\u0935:"PFX_PAAV",\u092A\u0947\u091F\u0940:"UNIT_LAKH",\u092A\u0948\u0902\u0924\u093E\u0932\u0940\u0938:"CARD_45",\u092A\u0948\u0902\u0924\u0940\u0938:"CARD_35",\u092A\u0948\u0902\u0938\u0920:"CARD_65",\u092A\u094C\u0928\u0947:"PFX_PAUNE",\u092C\u0924\u094D\u0924\u0940\u0938:"CARD_32",\u092C\u092F\u093E\u0932\u0940\u0938:"CARD_42",\u092C\u092F\u093E\u0938\u0940:"CARD_82",\u092C\u0939\u0924\u094D\u0924\u0930:"CARD_72",\u092C\u093E\u0908\u0938:"CARD_22",\u092C\u093E\u0928\u0935\u0947:"CARD_92",\u092C\u093E\u0930\u0939:"CARD_12",\u092C\u093E\u0935\u0928:"CARD_52",\u092C\u093E\u0938\u0920:"CARD_62",\u092C\u093F\u0932\u093F\u092F\u0928:"UNIT_BILLION",\u092C\u0940\u0938:"CARD_20",\u092E\u093F\u0932\u093F\u092F\u0928:"UNIT_MILLION",\u0932\u093E\u0916:"UNIT_LAKH",\u0932\u093E\u0916\u094B\u0902:"O",\u0938\u0921\u093C\u0938\u0920:"CARD_67",\u0938\u0924\u0939\u0924\u094D\u0924\u0930:"CARD_77",\u0938\u0924\u094D\u0924\u0930:"CARD_70",\u0938\u0924\u094D\u0924\u093E\u0908\u0938:"CARD_27",\u0938\u0924\u094D\u0924\u093E\u0928\u0935\u0947:"CARD_97",\u0938\u0924\u094D\u0924\u093E\u0935\u0928:"CARD_57",\u0938\u0924\u094D\u0924\u093E\u0938\u0940:"CARD_87",\u0938\u0924\u094D\u0930\u0939:"CARD_17",\u0938\u0935\u093E:"PFX_SAVA",\u0938\u093E\u0920:"CARD_60",\u0938\u093E\u0922\u093C\u0947:"PFX_SAADHE",\u0938\u093E\u0922\u0947:"PFX_SAADHE",\u0938\u093E\u0924:"CARD_7",\u0938\u0948\u0902\u0924\u093E\u0932\u0940\u0938:"CARD_47",\u0938\u0948\u0902\u0924\u0940\u0938:"CARD_37",\u0938\u0948\u0915\u0921\u093C\u094B\u0902:"O",\u0938\u094B\u0932\u0939:"CARD_16",\u0938\u094C:"UNIT_SAU",\u0939\u091C\u093C\u093E\u0930:"UNIT_HAZAAR",\u0939\u091C\u093C\u093E\u0930\u094B\u0902:"O",\u0939\u091C\u093E\u0930:"UNIT_HAZAAR",\u0939\u091C\u093E\u0930\u094B\u0902:"O"},range_words:["to","\u092F\u093E","\u0938\u0947"]},hi_latn:{forms:{"1":"CARD_1",aadh:"PFX_AADHA",aadha:"PFX_AADHA",aadhaa:"PFX_AADHA",aadhe:"PFX_AADHA",aadhi:"PFX_AADHA",aath:"CARD_8",adha:"PFX_AADHA",adhaa:"PFX_AADHA",adhaai:"PFX_DHAI",adhai:"PFX_DHAI",adhe:"PFX_AADHA",adhi:"PFX_AADHA",adsath:"CARD_68",adtalis:"CARD_48",adtis:"CARD_38","and a half":"PFX_SAADHE","and a quarter":"PFX_SAVA","and half":"PFX_SAADHE",arab:"UNIT_ARAB",araba:"UNIT_ARAB",arabon:"O",arhaai:"PFX_DHAI",arhai:"PFX_DHAI",arsath:"CARD_68",artalis:"CARD_48",artis:"CARD_38",assi:"CARD_80",atarah:"CARD_18",athaarah:"CARD_18",athanve:"CARD_98",athara:"CARD_18",atharah:"CARD_18",athasi:"CARD_88",athattar:"CARD_78",athavan:"CARD_58",athhattar:"CARD_78",athsath:"CARD_68",athtalis:"CARD_48",athtis:"CARD_38",atthaanve:"CARD_98",atthaasi:"CARD_88",atthais:"CARD_28",atthanve:"CARD_98",attharah:"CARD_18",atthasi:"CARD_88",atthattar:"CARD_78",atthavan:"CARD_58",atthawan:"CARD_58",b:"UNIT_BILLION",baais:"CARD_22",baanve:"CARD_92",baarah:"CARD_12",baasath:"CARD_62",baavan:"CARD_52",bahatar:"CARD_72",bahattar:"CARD_72",bais:"CARD_22",banave:"CARD_92",banve:"CARD_92",bara:"CARD_12",barah:"CARD_12",basath:"CARD_62",baseth:"CARD_62",battis:"CARD_32",bavan:"CARD_52",bawan:"CARD_52",bayaalis:"CARD_42",bayaasi:"CARD_82",bayalis:"CARD_42",bayasi:"CARD_82",bayees:"CARD_22",bees:"CARD_20",billion:"UNIT_BILLION",bis:"CARD_20",biss:"CARD_20",bn:"UNIT_BILLION",byalis:"CARD_42",byasi:"CARD_82",chaachat:"CARD_66",chaar:"CARD_4",chah:"CARD_6",chalis:"CARD_40",chanchat:"CARD_66",chanchatt:"CARD_66",chansath:"CARD_66",chappan:"CARD_56",char:"CARD_4",chaubis:"CARD_24",chauda:"CARD_14",chaudah:"CARD_14",chauhatar:"CARD_74",chauhattar:"CARD_74",chaunsath:"CARD_64",chauntis:"CARD_34",chauraanve:"CARD_94",chauraasi:"CARD_84",chauranve:"CARD_94",chaurasi:"CARD_84",chausath:"CARD_64",chauvan:"CARD_54",chauwalis:"CARD_44",chauwan:"CARD_54",chawwan:"CARD_54",che:"CARD_6",cheh:"CARD_6",chhabbis:"CARD_26",chhabees:"CARD_26",chhachat:"CARD_66",chhah:"CARD_6",chhapan:"CARD_56",chhappan:"CARD_56",chhasath:"CARD_66",chhattis:"CARD_36",chhe:"CARD_6",chhianve:"CARD_96",chhiasath:"CARD_66",chhiasi:"CARD_86",chhihattar:"CARD_76",chhiyalis:"CARD_46",chhiyanve:"CARD_96",chhiyasat:"CARD_66",chhiyasath:"CARD_66",chhiyasi:"CARD_86",chhiyattar:"CARD_76",chihattar:"CARD_76",chihttr:"CARD_76",chiyanve:"CARD_96",chiyasat:"CARD_66",chiyasath:"CARD_66",chiyasi:"CARD_86",chohattar:"CARD_74",chonsath:"CARD_64",choranve:"CARD_94",chorasi:"CARD_84",choudah:"CARD_14",cr:"UNIT_CRORE",crode:"UNIT_CRORE",crodon:"O",croer:"UNIT_CRORE",crore:"UNIT_CRORE",crores:"UNIT_CRORE",croron:"O",crorr:"UNIT_CRORE",crs:"UNIT_CRORE",das:"CARD_10",ded:"PFX_DEDH",dedh:"PFX_DEDH",dedhh:"PFX_DEDH",dedhi:"PFX_DEDH",derh:"PFX_DEDH",dhaai:"PFX_DHAI",dhaee:"PFX_DHAI",dhai:"PFX_DHAI",dhaii:"PFX_DHAI",dhay:"PFX_DHAI",dhayi:"PFX_DHAI",dhed:"PFX_DEDH",dhedh:"PFX_DEDH",do:"CARD_2",dus:"CARD_10",eight:"CARD_8",eighteen:"CARD_18",eighty:"CARD_80",ek:"CARD_1",ekhattar:"CARD_71",ekkis:"CARD_21",eksath:"CARD_61",ektalis:"CARD_41",ektis:"CARD_31",ekyanve:"CARD_91",ekyasi:"CARD_81",ekyavan:"CARD_51",eleven:"CARD_11",fifteen:"CARD_15",fifty:"CARD_50",five:"CARD_5",forty:"CARD_40",four:"CARD_4",fourteen:"CARD_14",gyaarah:"CARD_11",gyara:"CARD_11",gyarah:"CARD_11",hajaar:"UNIT_HAZAAR",hajar:"UNIT_HAZAAR",hajaron:"O",half:"PFX_AADHA","half a":"PFX_AADHA",hazaar:"UNIT_HAZAAR",hazaaron:"O",hazar:"UNIT_HAZAAR",hazaron:"O",hazzar:"UNIT_HAZAAR",hundred:"UNIT_SAU",hzr:"UNIT_HAZAAR",ikattis:"CARD_31",ikhatar:"CARD_71",ikhattar:"CARD_71",ikhsath:"CARD_61",ikkees:"CARD_21",ikkis:"CARD_21",ikkyanve:"CARD_91",ikkyasi:"CARD_81",ikkyavan:"CARD_51",iksath:"CARD_61",iktaalis:"CARD_41",iktalis:"CARD_41",iktis:"CARD_31",ikyaanve:"CARD_91",ikyaasi:"CARD_81",ikyanve:"CARD_91",ikyasi:"CARD_81",ikyavan:"CARD_51",k:"UNIT_HAZAAR",karod:"UNIT_CRORE",karodh:"UNIT_CRORE",karodon:"O",karor:"UNIT_CRORE",karore:"UNIT_CRORE",karoron:"O",kharab:"UNIT_KHARAB",khokha:"UNIT_CRORE",khokhaa:"UNIT_CRORE",krodo:"O",krodon:"O",l:"UNIT_LAKH",laakh:"UNIT_LAKH",laakhon:"O",lac:"UNIT_LAKH",lack:"UNIT_LAKH",lacs:"UNIT_LAKH",lakh:"UNIT_LAKH",lakhh:"UNIT_LAKH",lakho:"O",lakhon:"O",lakhs:"UNIT_LAKH",lk:"UNIT_LAKH",lkah:"UNIT_LAKH",lkh:"UNIT_LAKH",lpa:"UNIT_LAKH",m:"UNIT_MILLION",mil:"UNIT_MILLION",million:"UNIT_MILLION",millium:"UNIT_MILLION",mn:"UNIT_MILLION","n half":"PFX_SAADHE",nabbe:"CARD_90",nabbey:"CARD_90",nau:"CARD_9",navaasi:"CARD_89",navasi:"CARD_89",nawaasi:"CARD_89",nawasi:"CARD_89",ninanve:"CARD_99",nine:"CARD_9",nineteen:"CARD_19",ninety:"CARD_90",ninnyanve:"CARD_99",ninyaanve:"CARD_99",ninyanve:"CARD_99",one:"CARD_1",paach:"CARD_5",paanch:"CARD_5",paav:"PFX_PAAV",pachaanve:"CARD_95",pachaas:"CARD_50",pachaasi:"CARD_85",pachanve:"CARD_95",pachas:"CARD_50",pachasi:"CARD_85",pachattar:"CARD_75",pachchees:"CARD_25",pachchis:"CARD_25",pachees:"CARD_25",pachhatar:"CARD_75",pachhattar:"CARD_75",pachis:"CARD_25",pachpan:"CARD_55",pachpann:"CARD_55",painsath:"CARD_65",painsatth:"CARD_65",paintaalis:"CARD_45",paintalis:"CARD_45",paintees:"CARD_35",paintis:"CARD_35",panch:"CARD_5",panchanve:"CARD_95",pandra:"CARD_15",pandrah:"CARD_15",pandreh:"CARD_15",pantis:"CARD_35",pau:"PFX_PAAV",paun:"PFX_PAUNE",pauna:"PFX_PAUNE",paunay:"PFX_PAUNE",paune:"PFX_PAUNE",pauv:"PFX_PAAV",pav:"PFX_PAAV",paw:"PFX_PAAV",pawne:"PFX_PAUNE",pensath:"CARD_65",pentalis:"CARD_45",pentis:"CARD_35",peti:"UNIT_LAKH",pichasi:"CARD_85",pona:"PFX_PAUNE",pone:"PFX_PAUNE",powne:"PFX_PAUNE",saade:"PFX_SAADHE",saadhe:"PFX_SAADHE",saadhey:"PFX_SAADHE",saat:"CARD_7",saath:"CARD_60",sade:"PFX_SAADHE",sadhe:"PFX_SAADHE",sadhey:"PFX_SAADHE",sadsath:"CARD_67",sainkdon:"O",saintalis:"CARD_47",saintees:"CARD_37",saintis:"CARD_37",saitalis:"CARD_47",saitis:"CARD_37",sao:"UNIT_SAU",sarhe:"PFX_SAADHE",sarhsath:"CARD_67",sarsath:"CARD_67",sataanve:"CARD_97",sataasi:"CARD_87",satais:"CARD_27",satanve:"CARD_97",satasi:"CARD_87",satattar:"CARD_77",satavan:"CARD_57",sath:"CARD_60",sathattar:"CARD_77",satra:"CARD_17",satrah:"CARD_17",satreh:"CARD_17",sattaees:"CARD_27",sattahattar:"CARD_77",sattais:"CARD_27",sattanve:"CARD_97",sattar:"CARD_70",sattasi:"CARD_87",sattavan:"CARD_57",sattawan:"CARD_57",sau:"UNIT_SAU",sava:"PFX_SAVA",savaa:"PFX_SAVA",savva:"PFX_SAVA",sawa:"PFX_SAVA",sawaa:"PFX_SAVA",seven:"CARD_7",seventeen:"CARD_17",seventy:"CARD_70",six:"CARD_6",sixteen:"CARD_16",sixty:"CARD_60",so:"UNIT_SAU",sola:"CARD_16",solah:"CARD_16",soleh:"CARD_16",sou:"UNIT_SAU",swa:"PFX_SAVA",taintalis:"CARD_43",taintis:"CARD_33",teen:"CARD_3",tees:"CARD_30",tehattar:"CARD_73",teis:"CARD_23",ten:"CARD_10",tera:"CARD_13",terah:"CARD_13",teranve:"CARD_93",terasi:"CARD_83",terh:"CARD_13",thirteen:"CARD_13",thirty:"CARD_30",thou:"UNIT_HAZAAR",thousand:"UNIT_HAZAAR",three:"CARD_3",tihatar:"CARD_73",tihattar:"CARD_73",tin:"CARD_3",tiraanve:"CARD_93",tiraasi:"CARD_83",tiranve:"CARD_93",tirasi:"CARD_83",tirepan:"CARD_53",tirpan:"CARD_53",tirsath:"CARD_63",tirseth:"CARD_63",tis:"CARD_30",trepan:"CARD_53",tresath:"CARD_63",twelve:"CARD_12",twenty:"CARD_20",two:"CARD_2",unanchas:"CARD_49",unasi:"CARD_79",unatees:"CARD_29",unattis:"CARD_29",unchalis:"CARD_39",unchas:"CARD_49",unees:"CARD_19",unhatar:"CARD_69",unhattar:"CARD_69",unnaasi:"CARD_79",unnasi:"CARD_79",unnatis:"CARD_29",unnchas:"CARD_49",unnees:"CARD_19",unnhattar:"CARD_69",unnis:"CARD_19",unnsath:"CARD_59",unnyasi:"CARD_79",unsath:"CARD_59",unsatth:"CARD_59",untaalis:"CARD_39",untalis:"CARD_39",untees:"CARD_29",untis:"CARD_29",unyasi:"CARD_79"},range_words:["or","se","to","ya"]}},version:1};var ze=pA,q=new Map,TA=new Set;for(let A of Object.values(ze.packs)){for(let[e,t]of Object.entries(A.forms))q.has(e)||q.set(e,t);for(let e of A.range_words)TA.add(e.toLowerCase())}var pe=new Set(["-","\u2013","\u2014","/"]);function Te(A){if(A.length===0)return!1;for(let e of A){let t=e.codePointAt(0),n=e>="0"&&e<="9",r=t>=2406&&t<=2415;if(!n&&!r)return!1}return!0}function kA(A){if(A.length===0)return!1;let e=!1;for(let[t,n]of A)switch(t){case"SEP":{if(n.length===0||/\S/.test(n))return!1;break}case"DOT":{if(n!==".")return!1;break}case"COMMA":{if(n!==",")return!1;break}case"RANGE":{let r=n.replace(/\s+/g,""),s=n.toLowerCase();if(!pe.has(r)&&!TA.has(s))return!1;break}case"DIGITS":{if(!Te(n))return!1;e=!0;break}case"O":{if(q.get(n.toLowerCase())!=="O")return!1;break}default:{if(q.get(n.toLowerCase())!==t)return!1;e=!0;break}}return e}var xA={currency_markers_before:["\u20B9","Rs","Rs.","rs","INR","Re"],currency_words_after:["rupaye","rupay","rupees","rupiya","rupya","/-"]};var mA={currency_markers_before:["\u20B9","\u0930\u0941","\u0930\u0941.","Rs","Rs.","INR"],currency_words_after:["\u0930\u0941\u092A\u092F\u0947","\u0930\u0941\u092A\u090F","\u0930\u0942\u092A\u092F\u0947","\u0930\u0941\u092A\u092F\u093E","/-"]};var ke=`
2
2
  struct Params { batch: u32, length: u32, embedDim: u32, vocab: u32, stride: u32 };
3
3
  @group(0) @binding(0) var<uniform> p: Params;
4
4
  @group(0) @binding(1) var<storage, read> charIds: array<i32>;
@@ -17,7 +17,7 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
17
17
  xOut[(b * p.embedDim + c) * p.length + t] = embed[cid * p.embedDim + c];
18
18
  }
19
19
  }
20
- `,Me=`
20
+ `,xe=`
21
21
  struct Params { batch: u32, length: u32, cIn: u32, cOut: u32, k: u32, padding: u32, dilation: u32, relu: u32, residual: u32, stride: u32 };
22
22
  @group(0) @binding(0) var<uniform> p: Params;
23
23
  @group(0) @binding(1) var<storage, read> x: array<f32>; // (batch, cIn, L)
@@ -52,7 +52,7 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
52
52
  }
53
53
  out[(b * p.cOut + oc) * p.length + t] = acc;
54
54
  }
55
- `,Le=`
55
+ `,me=`
56
56
  struct Params { batch: u32, length: u32, cIn: u32, nOut: u32, stride: u32 };
57
57
  @group(0) @binding(0) var<uniform> p: Params;
58
58
  @group(0) @binding(1) var<storage, read> x: array<f32>; // (batch, cIn, L)
@@ -76,4 +76,4 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
76
76
  }
77
77
  out[(b * p.length + t) * p.nOut + o] = acc;
78
78
  }
79
- `;function gA(){return typeof navigator<"u"&&!!navigator.gpu}var q=null;function oA(){return q||(q=(async()=>{if(!gA())return!1;try{return await navigator.gpu.requestAdapter()!==null}catch{return!1}})(),q)}var Z=class{weights;state=null;constructor(e){this.weights=e}async init(){if(this.state)return this.state;if(!gA())throw new Error("WebGPU is not available in this environment");let e=await navigator.gpu.requestAdapter();if(!e)throw new Error("No WebGPU adapter available");let r=await e.requestDevice(),n=(B,g)=>{let v=r.createBuffer({size:Math.max(4,B.byteLength),usage:g,mappedAtCreation:!0});return new Float32Array(v.getMappedRange()).set(B),v.unmap(),v},f=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,t=this.weights,s=t.conv.map(B=>({w:n(B.w.data,f),b:n(B.b,f)}));return this.state={device:r,embedModule:r.createShaderModule({code:Fe}),convModule:r.createShaderModule({code:Me}),headModule:r.createShaderModule({code:Le}),embedBuf:n(t.embed.data,f),convBufs:s,bioBuf:{w:n(t.bio.w.data,f),b:n(t.bio.b,f)},clsBuf:{w:n(t.cls.w.data,f),b:n(t.cls.b,f)}},this.state}async run(e,r,n){let f=await this.init(),{device:t}=f,s=this.weights,B=s.embed.shape[1],g=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,v=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,w=t.createBuffer({size:e.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});new Int32Array(w.getMappedRange()).set(e),w.unmap();let P=l=>{let c=t.createBuffer({size:l.byteLength,usage:v,mappedAtCreation:!0});return new Uint32Array(c.getMappedRange()).set(l),c.unmap(),c},o=t.limits?.maxComputeWorkgroupsPerDimension??65535,D=l=>{let c=Math.max(1,Math.ceil(l/64)),a=Math.min(c,o),h=Math.ceil(c/a);return{x:a,y:h,stride:a*64}},Q=(l,c,a)=>{let h=t.createBindGroup({layout:l.getBindGroupLayout(0),entries:c}),M=t.createCommandEncoder(),H=M.beginComputePass();H.setPipeline(l),H.setBindGroup(0,h),H.dispatchWorkgroups(a.x,a.y),H.end(),t.queue.submit([M.finish()])},u=t.createBuffer({size:r*B*n*4,usage:g});{let l=D(r*n),c=P(new Uint32Array([r,n,B,s.embed.shape[0],l.stride])),a=t.createComputePipeline({layout:"auto",compute:{module:f.embedModule,entryPoint:"main"}});Q(a,[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:w}},{binding:2,resource:{buffer:f.embedBuf}},{binding:3,resource:{buffer:u}}],l)}let I=B,i=s.conv,C=t.createComputePipeline({layout:"auto",compute:{module:f.convModule,entryPoint:"main"}});for(let l=0;l<i.length;l++){let c=i[l],[a,,h]=c.w.shape,M=c.dilation,H=c.padding,p=t.createBuffer({size:r*a*n*4,usage:g}),Y=D(r*a*n),pA=P(new Uint32Array([r,n,I,a,h,H,M,1,c.residual?1:0,Y.stride]));Q(C,[{binding:0,resource:{buffer:pA}},{binding:1,resource:{buffer:u}},{binding:2,resource:{buffer:f.convBufs[l].w}},{binding:3,resource:{buffer:f.convBufs[l].b}},{binding:4,resource:{buffer:p}}],Y),u=p,I=a}let E=t.createComputePipeline({layout:"auto",compute:{module:f.headModule,entryPoint:"main"}}),b=async(l,c)=>{let a=t.createBuffer({size:r*n*c*4,usage:g}),h=D(r*n*c),M=P(new Uint32Array([r,n,I,c,h.stride]));Q(E,[{binding:0,resource:{buffer:M}},{binding:1,resource:{buffer:u}},{binding:2,resource:{buffer:l.w}},{binding:3,resource:{buffer:l.b}},{binding:4,resource:{buffer:a}}],h);let H=t.createBuffer({size:r*n*c*4,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),p=t.createCommandEncoder();p.copyBufferToBuffer(a,0,H,0,r*n*c*4),t.queue.submit([p.finish()]),await H.mapAsync(GPUMapMode.READ);let Y=new Float32Array(H.getMappedRange().slice(0));return H.unmap(),Y},d=await b(f.bioBuf,s.bio.w.shape[0]),L=await b(f.clsBuf,s.cls.w.shape[0]);return{bio:d,cls:L}}};var UA={version:2,quantized:"int8_symmetric_per_tensor",charset:["<pad>","<unk>"," ","!",'"',"#","%","'","(",")","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":","=","?","@","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","}","~","\u0901","\u0902","\u0903","\u0905","\u0906","\u0907","\u0908","\u0909","\u090A","\u090F","\u0911","\u0913","\u0914","\u0915","\u0916","\u0917","\u0918","\u091A","\u091B","\u091C","\u091D","\u091F","\u0920","\u0921","\u0922","\u0923","\u0924","\u0925","\u0926","\u0927","\u0928","\u092A","\u092B","\u092C","\u092D","\u092E","\u092F","\u0930","\u0932","\u0935","\u0936","\u0937","\u0938","\u0939","\u093C","\u093E","\u093F","\u0940","\u0941","\u0942","\u0947","\u0948","\u0949","\u094B","\u094C","\u094D","\u20B9"],classes:["O","SEP","RANGE","DIGITS","DOT","COMMA","PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE","CARD_1","CARD_2","CARD_3","CARD_4","CARD_5","CARD_6","CARD_7","CARD_8","CARD_9","CARD_10","CARD_11","CARD_12","CARD_13","CARD_14","CARD_15","CARD_16","CARD_17","CARD_18","CARD_19","CARD_20","CARD_21","CARD_22","CARD_23","CARD_24","CARD_25","CARD_26","CARD_27","CARD_28","CARD_29","CARD_30","CARD_31","CARD_32","CARD_33","CARD_34","CARD_35","CARD_36","CARD_37","CARD_38","CARD_39","CARD_40","CARD_41","CARD_42","CARD_43","CARD_44","CARD_45","CARD_46","CARD_47","CARD_48","CARD_49","CARD_50","CARD_51","CARD_52","CARD_53","CARD_54","CARD_55","CARD_56","CARD_57","CARD_58","CARD_59","CARD_60","CARD_61","CARD_62","CARD_63","CARD_64","CARD_65","CARD_66","CARD_67","CARD_68","CARD_69","CARD_70","CARD_71","CARD_72","CARD_73","CARD_74","CARD_75","CARD_76","CARD_77","CARD_78","CARD_79","CARD_80","CARD_81","CARD_82","CARD_83","CARD_84","CARD_85","CARD_86","CARD_87","CARD_88","CARD_89","CARD_90","CARD_91","CARD_92","CARD_93","CARD_94","CARD_95","CARD_96","CARD_97","CARD_98","CARD_99","UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],embed_dim:16,channels:48,embed:{shape:[115,16],scale:.027303295210003853,data_b64:"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"},conv:[{k:5,dilation:1,residual:!1,w:{shape:[48,16,5],scale:.006574669387191534,data_b64:"BQYF/NcM9eXq4Bsk+wUQ8CkkChPwJRcZFAUYADYICSnS+x8aAbcG+DD8/Q4L9Azy+AcTFThB7hb1Gyv98h6wHv7musbgBALIFNLr2vcpCgMC+ishFgr6/Ajp9/TmBw718vL8/Av01PT1Be5JJQwM5Rvm+RD64QcQDA/sCAv08PvP3/f47tP7/dEYEAgNEQDeFwf+2Nr09fcp9/QAFvAWBTrpLlIH1fco+hQvAwEPIAVABtLuzNfd8AvdyM0tJSg05tIQNe0GJhDZGDMZJe7i6/wI7vsUCxcJHBTl+s3DzwAaELja4OQaMCkCAtM0Perw/Pj18vUF+g/+DgYAF/EXBwve0AEC/OX6AQInHjv1Bw4M/hT8AQUQ8wcG/QYSCyIP3NYJ8snu6/fwEBoIAfu1teoJBenK8gkjIwTj/Q7Y7/7+KeUoAh8L+TcG9wglIvwVO+gAAxXoNvLnCfs27f8kI9cN/SIZvuLrEQsPAgXgvtzBAQXGMQj7LFUcIwsJ3gkO/ezl6An/2ucA7fsSQkoMAPv/Kv4EAAHhEfwGHjMN8/3/DxX78vHX7Oj46v7u8BMW2+bcCx8uAwERF0Du+/0uGQv1/jxUD/XzAxTs+/b3n9cJ/u/S2gTx/e0aBf4AzA4AAAoa3usNCS39DAjf7tcnB+AGyxj+D+8iAQT58ggGDQ36zgf9E+/e+QPnD8oDA/AHGg8NAg3r9Pvf0AoNCgPP1wMAB9nsAP7uEwQI/gk14vUB3QbkC9/y9+kG8/3zDw/69fD9+w6q6ST/EtLY5P0KIwQnAgAcA+0D6SUg7PT0zB4X9w8h4/70Ag0f/QDv7tUOB/z6EP8J/OjFCw4LJvHq/fvZ0v7rC/7A1/ARRUX39gk149j299e07PUBE/DZAA40CuLVCeK91/gOT+HD+vvstAb2Bh4e9ewCAO4d+v3ZAenx+/3j7v787tAdD/3VA/cHDP0B9P/9BP0AAP/0FN/6A/AVEvzs7On5AfsJC+n9DiH17wYAQToZAA8eNu0CDiW//Pv1+Qf8/fXz7AsG8AzWAf7yC8v7/woA8wUCDOckBAEF9/UCDAb58PAFChwoAfoI8+br/v8JCNHuAPHcBxoH4PPz+gXdxQsUCebj/xf2+eXf9A4UHRUI+QACCQEEAPj98AQNCAEB+wLk7/v38u3//gsSFez5/AUB8QT//SHpA/L39AYR7/0yCvT27ubkCQcNGOf48TTu5QMQ3C7gBwXXGRP/8EbIAQwHExj4CfQg+RMN+d0e8/oDv9zt8xXoJAz4+Rg6+v4Q8+vyBg0e4Bz5BRvR6ez8B0UtGAYxAcHY8wHe+BLyABD9/f8u+driAO8B+/gRG+oB9+3c4v8H++PHAv8MEePsDAD2HiDu/PcZHvL89vvuC/HxIwD7/dHm2gL45vgL/vj88QMEAv3+EAD12CIKEwIEKRIL+vsDHB4DJDID9fzeHv4L+vQu9fsA5R78+/4HKQH9BhP23+7+AvQL/wcPDuDwHh60FQAiJ/bk/fL26AIN7Q30zPP+CvEa8BolCOMWD0sa3usiMcIDFuL+J/ISGjTn/vQPCvMi+/z83dX27d/41QfguSoWFwHz6w335/XwBegF//r0AwkmNggSGxc+9gb/9QAb/wj50gHsBA5aOAj97N0U/gEWKRAG8fcU/v8HCTvt7wXkxOv7/Pj82/YH/vIKBPv8LAcB8+X5Ggz09N4FAfQVwxAN/Nz1AhQOPzH3COrm7fL68tZM3eMF057gBhQk46zSHyMO6wgA8cQQCwQcC/cK98X7ChcC///g9frxwc39BvQfHAMBEvwzChYYAgEO5OAB9AMhEgoW+PvqJA4H/fXx9uoS+S87Dfza8/AcB/oiJw4H/BIoLg7X8wHv88vmA/0dDt/e9/rUxN79+ObA8wUUDisH6uLxGAsFCS/w/v0ZAPoOAGk9Geb+OSEF/f0J4R72B/TJ3wn7/xUqPwS5v9sGAGD2UCX6AtXL9QA0KvUW+SQZIgH69cjjCAURygwAAdYpAOoP4iMH9wMVGQAN+uTh1+n9+AIP3fjr3Oj7Ce/mAvD/Dxj1DAXu593r+gUG9PED6ePX2RMTBhoA/ggOFBIJBRcFzfsA1+7x+vfN5+YCDSEj+vgDHSII+QoM9E8gBv/+ywj9AwIaAgAFGDLR/Av71hv46OPo5fPlCs/P/gMJYw4CAAbzDvbq4NgBAQr4Bw/p6gn28fn4vcHQ+/rH2Qfy6woN4P0CKAPxDRgCDQb/4Pn9CNsQTQ0L2Prm8QjdxM/mA/362voG6gj6DBzw8cXM+PbW9i4ME9q17gDIDkYUAtzj6w7079LuBAP3x8j4ABEc7w3vAAED9/r45v0QBRvx+QECEaX39ucqyfMA+urt++f48ufk8fNKEy4EDwH62/jq87/19O7k4QDw/hrNBPb6/iT/BQP219Hs+wrY7fv0DhwSAQTt8TUzEg3bEwoEEyEaDQsb9R0I+RQdJOH6+Dfn9Pr3KgoaDAIBJgoBEewGAfkzNRv0Aem59vT+JgkH/gsG9eMD/ekO1RMD//nn9v7+ARoODgLw8uz9+goK/wP19uP2/fv+8enwAQwvAQMAHkAGBwAfGQ0EAxYjAQ4FAUACCvv7V94KABLXBP8B/wMKA/fzAf77BwkTDQIFBiX+CwQOuxYB/QK89/v/EQoP9vbuOQ3/Aig7LQ0CEOgeHwDs7dcVEjvgS/sU/PIiKxUQ3NvuFBkUAxj/CwgU//Twvwr6A+3mFPsM3whBCP/uzf36/QJCBv386fHr8fP+NQgAH/rb8g0OJw0T/RsfF+z/B+LS9P7ptwQOBxLbxA0f0+X/6wzA9xUeGQj/Bvzu/+LM7frdBBMB+Prgwfj6DbvG+AbYEfMT/B4tEfIEDOwvFP0b/gTuA/v9MygHSij2DgMD9g4jABPS1czy+gL4DAkr8dny6hbf8/f17OHL0P0F3wEJ/MX07/QA2toRJPsIxc309dIlK/gA6hQv9P73Dy7t/TER0AT9LP4oKwAL4vsNBgrc8PkPNh0QAALuCgATEQn21PkAARL3EwUIy+0GBBkaC/sDFevN7wPSCPrk8wvKvP7+9i75C/EKIScA/f5NCwQf/Nn99fX/ESwe+wsuNg4BCRMf8fsPNeAI9/oK9yQL9PLhDRMHIAH69urlGvXrBPHt4vPsEfnxC/gG5uUXCvP/CAnz1DQbDwL9IhoJBOoKLA/2EPsaDwcE3Q3+//7tIf7x8P8G+gX5+OP5+hPyRA3tAeAVFPYA0VAT/Pj89vL1/OkOBfv2AwYK+g35Hvz3APAK/Q3+E9zzFRVL+hEF/AoRFAsa2v/rFhPxFf8L8ALezPD1E+cL8uAK3+n56CIDCBf2BucLHfY3B/357dzx/wUV8PgB/wssB/4BCATT//vp9ekM/Au+Oyn3BOIJ6BoTBO72JP/O1/746e4VEUU55AIKB8bVBPP24Bv660bx/wQMGu7myu0+Cvb2ErjF9PIMCkDu/vQNle///tid19Hn+7DZ3/vExgIbDQQYJB/28fDoAvkHAovxCQQK5DMYEzw4/wzr/C72D/j0BPITAgrP3hANDQwKGQEjSmY5Bfrf8vEHEe0a9fvP3Nn//fnnHNgC/bnwCQTmy/H3/e0M1OUC8voC/O/51u8AAPkADwb49O3tADsY4NwHBe3a+w8H/RAT9trC5fgMCuIO9f8MHvf3+/cE8BH88Ovk4Qrz78b26fvt5wUBAxYmAAvyKTzw8R4jfxYi8g+29A4zHffj+AUO4QMGCwAI9vsC9iELBhv+/vQJHPAu+hNDNQ0AC/cx0hgECS3+GAsG8+Tz8BwP8xMg/sbk5PvSM74KBO0CEgMD9uIb9AX+EOUCEBE5IfIAEeT4BwD+5OoBA/T5QPcIAAr5+wMDA+rwBAcjQgT3//bFCPwM+hEXBQAUXAEKDAwj/AQIDQH0+vwU/PL78QRC+QMxC1AL5u3t6Njo/SQwCwPx8wj8+x7i9dj1APUC2/v69eznDPHM2gUJ1gILBQn+/fHb9/312P4O3O8e/Pbl7gTb+AjWyPAJAyYOKiUHFQofBPgO3QkXBggkEvL3KB8eEfoK9e4jAhLnt/MC7d8gDwop5t69AOLDzCkLCyvmR/Xl1d0OAhgiAhwOEAs1Gvz4/+r2/wjCz/L91g4QFgLrLjL6Ctr44P/5190GAPX4KxECGN8NAvv73Qn9ANnv+fz8FQUgC/sP8egF+QTo/w/rCNa7AggH+esVCefrLvEGBfjh7QIB8/sFAhDwCBQC+fP0BQH58CALBvoF1/P+Afb8CyH39f1HHP0aCuLnARAE1Ov2EdrcA+bx3vX6Chr48jATISTE6gD29zQr/ezy/RD7Dgzi8wT+u68AA/gB8+byBiAJAgXxMgccBiAf8QbgCFr+/d38OzQK9/cTFgv5AaosGu0JORU1++oMyhP3JBkAEfTWIPvy5N8IEwz08Ofo5/jGE9EeAvStAQTtBxsKAQ4PGgII7vJGQyQACCgrCe7yKgUN7O0i+BABBkHG3AIf8ggi7P099/3f2BIqFPjaCfMiDOjz3gDi+Ob+CdnU4ALp7O4FAwMI+/z/8x4T6O4F+C3wCf4sXRjvEQT88vsmKijoKSgtuP35+Uch7gr6CBf/Bfze9/oNFQcB8Nj6CeEDARn16vIPAQcC3vcF8/UYMBMB4ePcHwjf/8vyJyIF/Anz7iAcGfXs9wr/BQux5P4PNffrABdD+/sC+hLV9Qj+ADYfDOzo5gMAAgjZGQb71uM1DAjx7/H/7w0cCQb9zh0MAfKzK/r69vP3AfYl+w3K9QTu9AYCHBUV7xna+OUXDBvt3f/9MwXu8gr78xQA9fkJ7uf3Liz6DhQr+QLlCPgE+hwK3AYbAvjkHu3tBhMA7tP57u3ht//xuNTuCQkZ69Xv9v8d/QkFGOm/GAX95PMBBw8q+O0GEEYu+f7nEeXu+f/6AO4DDykf8wgUCvkc/AglAAUF6fQf8An/7R7/CP/1OzIPCM4IAvUGvMIICPEpHQ/z9xYT8A3MNf/sDOwXAvoEGfwL+wdNWxn68wXMDv7+7Rnf+BNr5v7tDSLvAvETPfv5+fvsEOPyCQsTCvMN8PraAgBJAwTv89HL6QX6xkEXAv3tAQ4K"},b:[-.31929,-.045999,-.40305,-.39295,-.13954,-.24104,-.53474,-.21671,-.46175,.077572,.039769,-.040953,-.48041,-.11485,-.32836,.083721,-.52205,-.22272,-.083818,-.56126,-.55955,-.60158,-.62202,.086986,.046654,.019929,-.41565,-.37971,-.13659,-.042863,-.10238,-.17997,-.30422,-.04185,-.37229,-.20252,-.13547,-.69886,-.30349,-.24882,-.25193,-.28751,-.45349,-.63501,-.42076,-.1823,.070981,-.017687]},{k:3,dilation:1,residual:!0,w:{shape:[48,48,3],scale:.01602521724998951,data_b64:"GwMV/PL++fr5+fbh7/f+Ev/uAvr56/TbFg3+BwcE/vv3+PkBAAED9unv/P7zBuzXEAwN49neAPDzDQkQ8vLS7fX5HRkKARMJ/wwHDwUF/wj1+/QB/vj3AwQM+vkJCQoRBOn25PL+/gkIAPsGA/v5IBEKDgAD+PD49/kHDgYJ+OD3//37BBQOAg0PDvr/8+/V/fT3HOkK6+7xBw4HAwb88OnuBRMEBfv+/u0KCvwMA+3oAvzy+Pf3Av33AAf/Ag8MCAb99QP7DQ/+BBwb9gMPDREQDBANAAr0Av768PL3BQ8A+AoPDgMQ+fwGAP7589z1GSUD7QAB9v0B+gsPCRAGDB0RBSAS99v/AgAD/O/6A/77FAH//QYLDxAB//f/+PT34wn1DgHnBOsb4ODlDAD3/+0K9wz4/wICEunfBuLy//nvDwcCDvgRFgMFFgcBBAwGBgb1+Qn/BAEB3/j+Dy4P6hTzAAAABPoE9PsACwX/AP0L/tfsCAsFBPUC1Aj9+PID+//o//QK8A0GAwD4BAj9yfT44BIA4hbxBfwB8fjzFAP+/vbw9PAK7wf8Bf0B7AQCAQsSAPQA8d/EFfor9fr8Cwb0+wn8CPbm9P3uBwsJ+fH7//z9BxMOCQft+ObVBd+57uz+3+HgEejJ8QwiANrBHCESCRkXBxIM/P//CwAE7/IF/wgX3O7xAAMF5/r5AwEF8u3s8Onv+REQ/hMM9gf5AAcJ8wPj/xsa7eLxCxMoAALuzdL2/wcLABAdDQ7++vvY9dDtEhkMDxYY9vjuD/MIAvv2+A8K/gwKCBTtBAbnAQsI/AMGCBMN/RMO/hEKAAEJ+v4A4QMODQUP/O4CDRzz/BEcDQH/DBMR7wD5CQISDBQQ4/jPDQwZ4eDVzAAP9df5B/j08Pvy9goH+AMKAA4Y3Ova7+ng+NgLBQn88+7pBRECBf/+5e307fP2/QEC+frw+gcV9AUAGQz1DAYK4/L7J/AL/xcM7OwJ/BH8+fwRAfkB9Orv+N/v/OvjBgABCQEKBwn/D/zc7fv8DwEGCRgX/fkADAv8FfDk6uT6AgT++QT2AAv5/PP38gERACoC8PQCEgfzAg8T+v0NExTyFB4TAwb19QgIEhgc/wMD9wACGg3rAOnx/AMH++X9A/D5ABLz8+f/+Q4GBAwG7b7W8fP13/AII/gdC/kC+vbJ8f4B6gQWBwIJ//4OAgYHCwr1+xYXAQ0V+BAQAg8G+/36+PDUAPL87v3x7/309OgC/A8MCBUUFgrr+vz59wMLDBgGBusH9Nby5O78Awb+6tf7BhAMDhEN5fXtFycIEhYd5Pv9Av37EgYODgQd3d3+8u3P/fMDBwAICgT5+wb4C/n8Cg8B8gEI/P0OHgMh/uLlEA3sBgUKCQL1Eg8G8PYAERL0BwQN+fX28wULFBAACAAbE/vh9AwCBfjbAtjI5tjt5/r3AfP87+Hp8AL/8Qn4APAK+OX/C/8D8e36+Qrx39/e7e0LFRvyB+Le9/YTDSAeDPfqGAwXAfr89CEb1/n6AwsM3foAAvbq+gABAgoKAQj57u4H5eLf6QcO//sGMAsY+g7++PUH/fX5Cv77/wcPCwsNCQsD+AES9+gB//bx+fwT7Q8b6fj89uzzAvzyBAPX+vXy/P/69/r9+fHz/QMBDQoHAPwGDQ0D7dwA9/b8CRb1BRgNExYM/PfbBggL/fv9A/z9/AD3/d0N+vj3//P39/fr+/fs9fANE/T4ARP/DP0EEgoHFBrn7vD3+hbQAfXlEQIZ4gX4+wAJ6d3wCQPpD+/JEwXsBdr0BwPh+/PyBfUG4AKU/dkB9wHcAREA+Qf//+T9+RAY9QcI5TUN+gUE++0WDwIFE+/l7v4ZDf8KCc4S8RD+6QoM+CAE9A7/9e33BRIQ+ATOCxjv9/X9/+71BPH/BeTx0OIFBgQQB/sDAQ71B/H7ExbaBcff/fT5CP7x8tn1FeAX8vwK4ggM8gEDCQAVAgn+Cfnv//gBEPf3Bxb5JTjpDvj7CAnzByX5AfIC/QYaAggE+fbY9fPW7+/99wkN+gcFAhIdBP7nAPLc6/oS6BcGEdjX5uH0AhAy2+UJ8v/r9/PuC/kbAgr3Ct/kCgLzBPD5DhEA5vwG9wEK/PkEBPsS+Qn8/w0R+BMA5Qf38BkQ/P8FEOgR/v3+BQYN+wICBf4D9gAA7fD/AxEX7vEBBCcS+vUI8wcPBvME9vj6/BL/DxAG6wvqDwEG8xD51/QE+AcADxkZ4wX/+v0L+QXv+wj60uH07gAA/RQK9wID6f3qAP8Q/QYN//r69fYF7fEC3wMEAgwJ9AoS+vz6FAj7/fryCxIK5wAFA/YG9er/7u/8AwAIBf/5He0L/PQCCg4L9+r0/AAH9/T0Af0A8A8Gy93t9PcMBNvtAAn0CvMA+v//1er/Avz8DRYL+P79+gQKCRL7/v3zAA0R6Ov+BQEE/fICAgAG+ur5+wIACP79BAEK//z6/f3m9fAAAw8M+fT5D/34BxkLAgMF5Nr0/wH3+P3wDf3uDfUJ/QH7/vby9+LgBwoM/fn8AQL/F+sFCgoJ7Pj0ChIDBwQA7Qf4ABUC7f38DA4H+OP1AvkA9AD9EfsQ9AsDGBYQA/v/CAzxGwUFBvb6Cw7p99nx//wADAsDAA8H+/kE8vP95AwFAfv74fv2+/fw8uz0A/v2AOr+CPwEA/H4/fHz/wUF9gH9+vbl6vX/DQ4C7Oj98/n+0ezwCRUVCgkP9v4B6e7v+/IDGPobAwIIDAkCAPkAAwIHAwsKAy0n+wD9AQD+9vHm9/f09v7++QgIAg4C/QX87/j15gLy/QECEhP0BPv78AQTFQgNAAr49wwc7QcB8uHu7vYC/QcHCfUMBAwT/wT6A/P7AQ4NEQkGFRML6PLs9/nzBwMMCgf3+Pro+wX9/wL27fP65eUQ8fXpCwb8AAYFDPz6CQr8AOMN/A0N5QHpEvv39v4NHRoKBQUK+AwT9fMACe/9CA378v/8AA0C9O7j+AH37PH6/AMCDxoe2/wBAwwQ8QAR3bPXBA8TDgH5Agb68/ACBA4O/REH6tvz9tz98gkOBAP+AgT5+9vu+/4CCAX05vn3+fXsAwT+8A8aAPkGB/b8EQT//gv7BhL/AQT4AfwJ8vD7ChX9Ge8mAgAGBv7++A/+Ev348fT4+QH/+/fvBOT5/vj3AQMDDhMIBQADAgn17PXk/RAEF/7u9gD4ARgQBgnhDwYT6AsLCPv+CwMX7xAI6/b39An+BAYF/QsR/wj/APYF/vzxBwEAAAH1BukIIwzw+O8P4/gK9gH6/gIA9+TaAfnb8t4OCPv9/Oj4BwQF/PwSBQb4/PbsBtwT/Qj5DAEJ7xTv/O7p9gD9AfjL+wEE9vv1AQTyDBcN+u3/CgsFAxIRDwME9Q4cEQAgCPX7GyIE9f/iGRIS3gb+CggACADkDfcBBhMAFwwNCAcLAAENAgUC1dPSCAQBAvr48woBDgr6BQr7Gf4ABwoG+P76E/sFEw0FCwwEBwgFBAT6/QX+6fL4CRYKCQb+Eg7zBNEW9P32CQYNAwYAAPH5/w0G/AkGBAcE/vv+++Xw9v3xAAD6Dfb4BAAADh79BwoBAQEECvUK+/v76fL2//f/Bff3CgsMBfz3+PgDBggM+PT6+ewB/vf6DwQK+O/+DxL2ABgWCAvz5PHt6+Ho/xIP/Q0SCwkDGhoDExYO2NP/9dva8P0KEB0fDfb68fwF3dfx+dDqJR0XDiAVEBcC9+zrAsH57eoD3NrpAPf54PgA+hMNDhkD5vT3DRMJAPTnAhEK+eLoMyDS+PgUAyEVDgb9FAYH+eb/9/n6v9j2+fkPHBcRBQXgA/Dc9tfB6fP0+e78/wkNCwf929vl8g4aBQMBBQT4+gEOEgoCHBUL8/LzGAn83MX2+fX9Ce3vChoc+AP+EhIPBQYNEf0jGSAQ9N/m2LjLjIH6AwH89/j/BxIPGBUSABQK2wj3FxsG/u7xFBERHAkG++bZ6OPuDSAS9/gIFf787/EI/gkJ1Ov0+O/mERgOCQoG3OXfA+fP+fv56/b65vHy/gEFBPrnDRkRA/339/bw8Pr0ChkfCQj7++fm9u/6BQ4F+/b39/DmFA8GDhkVAgr6/xIPFSAV99Mj8uXwBgwX/ej1/gH46eb5/woAAPn2ChUJ6gX/Bfv7IzsmFB4m6fL9GyUNBggA9wkO+wYN7+To9vkC//7uBujuBAcABA8IFBsB793jBvLMAgkEA/j6Avf/BQT/BvMDDv//DgQC+f7+DAAGBPr+AP0C/v8BAPr//gcH+AQM/PkBBPn+DAYC/PH0Cwv/8vT+DAUCENQNCQb8/vv3AQD6AAgKBA8G+fPw//r3Bfn9BP/19unqCgMC//gHEgv5APn1+PgECQYGBg8B8/8DBvz4/voH+fX8/Pv+/fT8BP4DEv8IAAD+8AsJ9/399+MD8vrq7/TeDyf/9u4E8wPz7/4a6Ar5++TlyOb0BhUTAAX0BA4H/wsH7vTq7+rh9gYg+eji5fj/8trsFM0l8dEA4uPi/w7+Duj2y/AH8BYVsvL7EAb47dDlAfj4DwkT/QAW5fb9FyIP7xT4EPMEAPYC+xMH7a/jFQDxGhgU4AYJ6vzn5f76AP0C7/ru5u/i7wX/AREB//kJ6PnxDgn2++v2FQsD9hAO+AUZDAMS+Q358ffr+ff69e7/5efvAxAH9ADpA+fL4vj8/BMKBggKD/IADAMH9ff6DwURAvYF/uoABezqAgoF8uXmBgP//u0CBObeCO/94eXlFRQLEyEC9gD9//sE/w344MT5CAkI/BELDwv78OPt1dnxAf74CgQCDgr3+wUT4tfi/P3tAgIEAf/tC/jrA/8PA/j/EAQKCesA8/b8++n+/v7v7fH8+/v2Fg/4+BYWFRcLBRgOAhL8AfQJFu4V9wQE9gPm+AD/AQsABAcKBgD88vj63fvyIAEDDSAS/QYCDwHo/gDi/xEZ8//8DBb0+vsHAgIVAO/5GgUG+AkN+QHxARn+/gIGBvf9DQX2C+rrFxECBP7sDAMG8P/9Be7zAO/5/fgCBvX6B/X+9e76+PHnAgEAEBIG/Af3CBb6CRAPCg//CAcABRgH+QcPAggDDtH5AQcMA/78Bvz93wD7Cw8ACx0LCA34Aw4LAwT3CxMCAv/35un2Av0DHBL4A/z2C+0H9v0LCP7+9PL6Afr//fYG9fr1Avjt9wP7BgoC7PXbFBIF9Of69wj/FQD3CAz0DxMM8+buDAMP8AcO8foP7sn4FxgN7QIR59jnAwD+/OkC7OP6/ezw++Hr+gD+AQQG+trmKg8d8+zxBf749fkIBv8D+uvo+wDuDQv8DQTxCffVAQP/Ff/4D/z8/fH1CQQP7NkADSAWAwIEDA8ED/nsEhf5A/jzAwMNCBoN9djD8P0B+Pn9++z8+Pz7Cxn7BwvLBv0JAAINBQwM/ff9Afr5Bvf3DQgM5QESBA3/CQkJDg8ZAAsZBAb5/A4TCAbu+wf/9O/uD/fsAvAS/QD8AP8HD+3dBhH87hIG9O4C7gUF/ezy9BIX//wPBunc/fL1/wj2A+oABfn8APr8EPzzAv37FRD5FuMIDSEgAvwLDQvz6ggT+QALBAwN/BoE1ejJ/foD8d4D+fH/CQH/9QH++fkBGfnsB/nsDRT+AQMG/P39/fHd6gP47u38+wQH/vb38P769fEMAuUD/AELD/AWFBz4FwwFGRMFDgcW/PDhAQXu8d8OFRgdChQTDxYP/gb2/QcB1Pj+0df/+AILA+UJ8fr69tDs/P0M7Pr45/XsCwUPAPnu8PXyFAPu9uDpDwv5/Q8FCA0E//wG4+/4AOv87Oq+BAnlAwcG1N/VANjn8hgT+O/v7PwM+/bx/gH4AgQgxPT7Bwb6BA8R8gD1+fz4AvkeAAf5AQwB2O73AhARDSIZ9Pjn5vHcBw72AfP+/v///QX7/9H78hok/AwF/wMM9gTwBA4M7fX7/vb+GhTt3NvS8AL9AvHt8er3/fIBD9roESUcAPfr8vn+2Nbj+vkKCwoN/gTxChHuAQbw+fgJERULEAv/79ru9u0B/BUk7RUI5OnrCvPzDAzjCvUOEwkL+vb2M/oO/xb/7eL5EhkmA/Xw/gENCyMJ+vgI+ODxDCQAEhQI4fT0AygfC/8F8fkBAfb6EQn0DBIJ7OXuDxgVBAT+6Ojp1tTyDQf47/MEGQvuEA0Q8+Xl8+fs4drm+gYKEh4OLSAdCxcF2eX+3cjc9hQL8v4J2+HmBQkHAvTy/PQC4+X17ufcE/nlv8f6CwP19QECExQCShwn7g4fDQoIEhX+7ebl/B0e+P/3DAIABQQI9/P68fX/5tniCQkDEPrzDwwPBv3cAwv8///3CAfgEAUU9/vaFf778uwH/A8EANcKBekAEBECAAb7+fQNCQsA4eL4AAIK+f79AhQQ8ff6+v/48+P9+Oog7vXu8fkH5g72AQ7z8fb/FBr+AA/vBgP+/v0E8/8A+8TcKeABBgkKA/z8+NcJ+PTxDAYKDgP4C+wMBPT7+PcMDvXv/f4EDQn+9+UEF/4RD/r1/f8EBgXtA+jrAPz4CvTxCATv5NvuAPb0B+/8/vDnAwn+9Pj9+/QF5+bvBesCAwYI2OQP8fH5Dg0H+fv37fH+9PQECBgQ9PIF+v7uAgcNDPrw9vj5BggF/g0HDwX/DQP07AgDHvUeBvvx7AH8EwP7EQX++AHy+O/xHQr/3eP87u/xEAwGBg4BAAb+/hL4FgQFDQX1B+73FgwGAQID5Pvm/v779t/1BgLwCgTq9O/+7tzhCvX3+PMC+ugKFwYH7vj72Ob0/vrt8A8Q8vH93OX/18rrCg4GAPD2AQAK5+X09gz7CvoHBgsJJR4S/AIA+g8FAtXQ+gISJwgRAPYEBRoXEhwRFhL9++7wIPfqAt/yBwn99vP77QcE/+v5CAIK+Ov/AwIE+vH9ExDx+QMIBQL6ExYK/wAF8PX79/L3FxL/BwwH+ur5+/f5AQ0H9gYL/vwGAhgd9AT66O4M+fb8/RUS9O75//n3/vj/++73BQ0N8/7uDBMD+P8D5gYGBxH13en2CAbv7PH1+OjrHtoQ8vcEAP/3ABANAvgB6gEHCvD97/cA/Q0J+e/w+Aj+/fb9AfH9Df4A28jt8PYL8P3x4eXnBgoH/OTw7vfi+QEA6fkH+Pv2CRAV8ezxCg8B7tPk+g0R++T3+/sJFwwU/ff7Bwf7BQIJEAj9Afb38AAN5fgACAwQ2eT3//kGIxYP9PPx8+TvEwwE/gYDCxcK/ervKxIeAgIPEx4A9vT9BwYG+czgEAYE+QH7Cv0BCgXx5PLoAv/25/LsAQ0I9w8F7uva8hAL7+frAObnFBgK7fnuEBMMAPruBPf2//H2/+zoAgsB6fkIAP0MCPz17xYoAfYC4PcBxr3k9fXxA+Tx+OsOCALr7fr3CgsACgkbBPUCBhcdAwUJ9fsLDRMaChkHGCkV5O4FF/oaDhL8A/j+Cv3+Bt7vCgsE+hcR9+//6+3vBRr1+f4I8O779QQJHfz7DBXV/dnpE/jf6f8Z9OvlAREgISIW8vQLAuX74tvoFAj4/P4K8/Hz/u3n+AYHGBP9+QfyCSMW8vL76/saBP//7cXdCgwL++7w/AQK8f8L8gXuHxP6/hEgCBr0DxIHB/Tc7AQNDBj739zrGO8TIS8lDhcN5u/5+urXGA4LEgzt4evtB8Pj+wwFDRgO+vj/EA0H/xIE4vbr8+/3AfEAExT95fHoCvUHA//wAPr//PgL//b2EfsO+QEG+/X2BgD/6fwHDQ4W3PIH6ev19QUHB+/37uz16vMDAQz2+OTzAPz7+Pj99vXy/gsDDA/9/gwgEBwP3dHxARAPDAL4B/0JGusZ8ebz+/L6ABYZ9u8A+/T6Av0GFRD/BBcJ/wkH/QYBGw0DCQv8GgsE7PIA7MHW+Q/2CQQP19z0+wH9Ef/j++763cPEAA/74///+QQI7OoFDwv8wcH9/N7aCwL9AxAFCgoN9wgD+hcXDxMEIR0k/vf1//wCBQgJ8ufp8PDqBQUABwMDDv0I9ggNAgkKDQXh1vL1BQcU8AP59eXUGRkLFx4VCg36/Pbw++Xp+PsC9QsYBRX3FA0IE/f7+fAQ/v/5Bu0P5O/39fgCAwkEARAAAwQA9QEHBwcICwIFE98BCAP+8/P8Gz0lBgERCAH0+/b/BQ3qCwsCCwYP6gjvAgMK9+z/COj05QG49QgB/djvB//1AeMPDv4F8u7tDfIBGPzeCA0DB+b3Cd4R/AIKCfLi+9sF/goG+toL6fgDAfv6AgP95ez/BPEB+v3/BQ7/AvX5DAgF9fsZBwgC+v/4Cu4BA/MH+AIA/wUCBQoMCgUCBQsL/P8OBg7+9QYT9d7j/PsI/wby///9+O7z7/nxAO37/QD1+ejk/w8CDA7w+QQJ9vzpGd7998r3D+T9++/+CQjzDAQCEhIFAOsK9ewfDAP/DgrvCgX+Dwz7++vmDRADCBgb8Nbw4O3y7dvaHxUCAiYQD/wC9v0FCgf1+fD/9vHyB/X/EicgCRMMGAb5B/0D59/o/A7pCQEG7uf1AwAD++cK+PAKBezv1+8CFwn7EQEHDf/84/Ly/fP99/3/GRcf6Of2Ew8LDB39ExsQ+vjyERcO/ez/CQob/f8B7uruGvEnIgjuCA39DfcFHBwb9vf5EA/8Ch0Y7u7pAREP4d/n+OrrD/8PCwoD8OP7AgYH9+L08f0L8fwICf3jCQn+AxQU8OfP/AQQ5+n9yuPz+vPy7czUCAAC7fkD+f749gEB9QDxBQD14fgCEfv58tj2+vz+CR4RDBYEHioX1+8M+wb+AgMAEg35BhEk9O4A6ObaBwIGH/0gBf/qCQcN+u/3/fvwBvkEFxcNDg8LBAT88O/vAfnvAAIHAgf//vD/CQAC/u4E+en/+/X1AhEI+AcG+eX7BR8BCwX9BQcMBAL6AAwBCSD1BfEI9f4ECAwJEeoIBPb+8PLx6+wD+9vxAw0RFAbc7vgAAQgIBAEDABP/5Av44f31C/z99vEF/hEKCxAE9gQG9w75EtgcBRD/9/0F5QID+wH48ff38Nzk+wjz/xYG+vUXBwUT7QwsDgcS/OPP6ebn9sTrAgUL6gj++BcC8v/z9+bP4RU0AQn80AMM7vkB+PPlB7cE2vz7v/Xj+x0Y1fzu9vX7DBwc9QQXDfT5Cw0YtQwP6Rco/AXxzucS/REXEu8D4/nq5tn5B+XuB8fg+wwJBQr/7Qz8Gvko"},b:[.056214,-.12524,.23884,.0024871,-.06175,-.31766,-.14961,-.037517,.20302,-.044519,.15582,.46601,.78273,.11867,.05001,.35455,-.034919,-.073859,-.050784,-.037817,-.41513,-.13376,.70105,.70566,.26129,.15269,-.2305,-.078317,-.22751,.13662,.25707,-.19063,.25661,-.028151,.28978,.41472,.47561,.12276,-.059242,-.49669,.57152,-.32093,.041158,.018289,-.14852,.054595,.1895,.21106]},{k:3,dilation:2,residual:!0,w:{shape:[48,48,3],scale:.011627851985394955,data_b64:"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"},b:[-.2905,-.03646,.20467,-.11792,-.068682,-.12794,.67811,.40356,-.10258,.021032,.41819,1.2684,1.3565,.29341,.12242,.30189,1.0168,.037088,-.18086,.14312,-.39863,.47754,.16237,.36304,.058092,1.1541,.11184,-.019706,.045608,1.4488,.0021099,-.21032,.030593,-.10661,.24996,-.21887,.058977,.16564,.13488,-.4112,.87899,.21653,.33517,.7668,.18889,.12303,.83771,.78421]},{k:3,dilation:4,residual:!0,w:{shape:[48,48,3],scale:.030631914734840393,data_b64:"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"},b:[.051436,.58024,.71758,-.27969,.28778,.33216,.31188,.23569,.3305,-.10469,.5278,1.6406,-.067324,.24835,.41882,-.22585,1.8259,.96147,.002934,.048236,.0073087,.60823,.31096,.12285,.042868,.89324,.23269,.11376,.24216,1.1819,.34392,-.3203,.060985,.10997,.43409,.018524,.47538,-.022916,.03208,.21715,1.9319,.34116,.42903,.89243,.058132,-.1399,.59723,.9662]},{k:3,dilation:8,residual:!0,w:{shape:[48,48,3],scale:.02437734417617321,data_b64:"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"},b:[-.095424,-1.0412,.038494,-1.8677,-.11797,.14448,1.1875,93106e-8,.53545,.49672,.35824,.25156,.49496,.2637,.65419,.99175,1.3647,-.10529,-.083752,-.012303,-.13534,.67019,.90971,-.030518,-.034959,1.9539,.41068,-.038103,-.1407,.54517,-.095919,.93171,.5754,.47958,1.0011,.31704,.44425,-1.3234,-.076986,.1531,.45021,.25218,.26872,.0026443,1.817,.19703,1.7538,-.35513]}],bio:{w:{shape:[3,48],scale:.005212794058024883,data_b64:"DQQEIPr+Cvbxuwg0A/3z9yUGFw36Be8EEQT/9vzwA/v4+wukDX/35zXzBvPw8wADEDUTQe8ADPbx8ggDBPz4+uVMAPH6A+4F+PgA7PbyAPz3+gv7CwT78ODzCPPAAAEhG9jt8v4AC/XxOwjeBPv3+grG+gMDBO4LFf3/CfbxBPz3+go+DLLzCMbzCfMuCgDo"},b:[.3519,-.45088,-.36292]},cls:{w:{shape:[120,48],scale:.005673965439200401,data_b64:"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"},b:[2.242,1.3744,-.47951,.6161,-2.4455,-1.5301,-1.0143,-.093522,.023086,.0087727,-.078257,-.17369,.020164,-.54997,-.57181,.44243,.027244,-.35139,-.89164,-.33272,-.18314,-.76673,-.54692,-.68857,-.30066,-.258,-.71149,-.31854,-.089586,-.43189,.047698,-.016066,-.81204,-.4251,-.88151,-.88009,-.79047,-.51782,-.42018,-1.1849,-.78106,-.77428,-.2046,-.38955,-1.4188,-.7007,-.31201,-.41446,-.92158,-.42966,-.86422,-.54021,-.30576,-.54322,-.63683,-.16471,-.12409,-.03448,-1.0125,-.22992,-.30688,-.54466,-.85746,.10627,-1.0269,-.95531,-.3397,-1.1359,-.60038,-1.0637,-.36039,-.94921,-.32892,-.66161,-.6971,-1.3174,-.35987,-.38449,-.36889,-.25041,-.47356,-.28453,-.45676,-.4763,-.32352,-.64705,-.33239,-.25252,-.48801,-.32516,-.76514,-.40702,-.33294,-.62638,-.8749,-.86953,-.65204,-.073133,-.13683,-.55527,-.82726,-.029609,-.69776,-.77748,-.5235,-1.2791,-.2632,-.59748,-.76975,-.81658,-.29771,-.60698,.0051561,.93853,1.3302,-.49395,.34466,-.30127,-.65059,-.63965]}};var AA=class{weights;charToId;gpu=null;defaultBackend;scratch;idsScratch=new Int32Array(z);bioIdsScratch=new Int32Array(128);clsIdsScratch=new Int32Array(128);bioProbsScratch=Array.from({length:128},()=>new Float32Array(3));constructor(e={}){this.weights=PA(e.weights??UA),this.charToId=DA(this.weights.charset),this.defaultBackend=e.backend??"cpu",this.scratch=new S(this.weights)}parse(e,r={}){if(typeof e!="string")return[];let n=e;e=k(e);let f=n.length===e.length,t,s=nA(e.length);if(s.length===1&&s[0].length===e.length){let B=x(e.length),g=m(e,this.charToId,this.idsScratch,B),v=J(this.weights,g,this.scratch);t=this.decodeForward(e,v,0,e.length)}else{let B=[],g=new Set;for(let v of s){let w=e.slice(v.offset,v.offset+v.length),P=x(w.length),o=m(w,this.charToId,this.idsScratch,P),D=J(this.weights,o,this.scratch),Q=this.decodeForward(w,D,v.offset,w.length);for(let u of Q){let I=`${u.start}:${u.end}`;g.has(I)||(g.add(I),B.push(u))}}B.sort((v,w)=>v.start-w.start),t=B}if(f)for(let B of t)B.span=n.slice(B.start,B.end);return t}decodeForward(e,r,n,f=r.length){let t=f,s=t<=128,B=s?this.bioIdsScratch:new Int32Array(t),g=s?this.clsIdsScratch:new Int32Array(t),v=s?this.bioProbsScratch:Array.from({length:t},()=>new Float32Array(3));this.weights.crf&&tA(r.bioLogits,t,this.weights.crf,B);for(let o=0;o<t;o++)this.weights.crf||(B[o]=y(r.bioLogits,o*3,3)),g[o]=y(r.clsLogits,o*r.nCls,r.nCls),rA(r.bioLogits,o*3,3,v[o]);let w=dA(e,B.subarray(0,t),g.subarray(0,t),v),P=[];for(let o of w){let D=o.tokens.map(([I,i])=>[F[I],i]),Q=RA(e,o.start,o.end,Re);if(MA(D)&&Q===null||LA(D)&&Q===null)continue;let u=FA(D);P.push({span:o.text,start:o.start+n,end:o.end+n,value:u.value,...u.range?{range:u.range}:{},unit:u.unit??null,currency:Q,confidence:o.confidence??0,classes:u.classes})}return P}inspect(e){let r=performance.now();typeof e!="string"&&(e="");let n=k(e),f=nA(n.length),t=new Array(n.length),s=new Array(n.length).fill(!1);for(let v of f){let w=n.slice(v.offset,v.offset+v.length),P=x(w.length),o=m(w,this.charToId,this.idsScratch,P),D=J(this.weights,o,this.scratch);this.weights.crf&&tA(D.bioLogits,w.length,this.weights.crf,this.bioIdsScratch);for(let Q=0;Q<w.length;Q++){let u=v.offset+Q;if(s[u])continue;s[u]=!0;let I=this.weights.crf?this.bioIdsScratch[Q]:y(D.bioLogits,Q*3,3),i=new Float32Array(3);rA(D.bioLogits,Q*3,3,i);let C=y(D.clsLogits,Q*D.nCls,D.nCls);t[u]={ch:w[Q],bio:I,bioProb:[i[0],i[1],i[2]],cls:F[C],clsId:C}}}let B=this.parse(e),g=performance.now()-r;return{text:n,chars:t,spans:B,ms:g}}modelInfo(){let e=this.weights,r=e.embed.data.length;for(let f of e.conv)r+=f.w.data.length+f.b.length;r+=e.bio.w.data.length+e.bio.b.length,r+=e.cls.w.data.length+e.cls.b.length,e.crf&&(r+=e.crf.trans.length+e.crf.start.length+e.crf.end.length);let n=e.conv.length?Math.max(...e.conv.map(f=>f.w.shape[0])):e.embed.shape[1];return{version:e.version,params:r,channels:n,embedDim:e.embed.shape[1],vocab:e.embed.shape[0],classes:e.classes.length,layers:e.conv.map(f=>({k:f.k,dilation:f.dilation,residual:f.residual})),crf:!!e.crf}}async parseBatch(e,r={}){e=e.map(w=>typeof w=="string"?w:"");let n=r.backend??this.defaultBackend;if(!(n==="webgpu"||n==="auto"&&e.length>=32&&await oA()))return e.map(w=>this.parse(w,{backend:"cpu"}));let t=e,s=e.map(k),B=new Array(e.length),g=[],v=[];for(let w=0;w<s.length;w++)s[w].length<=128?g.push(w):v.push(w);for(let w of v)B[w]=this.parse(t[w],{backend:"cpu"});if(g.length>0){this.gpu||(this.gpu=new Z(this.weights));let w=Math.max(...g.map(C=>s[C].length),1),P=x(w),o=g.length,D=new Int32Array(o*P),Q=this.charToId.get("<pad>")??0;D.fill(Q);for(let C=0;C<o;C++){let E=s[g[C]],b=m(E,this.charToId);D.set(b,C*P)}let{bio:u,cls:I}=await this.gpu.run(D,o,P),i=this.weights.cls.w.shape[0];for(let C=0;C<o;C++){let E=g[C],b=s[E],d=t[E],L=d.length===b.length,l=b.length,c=new Float32Array(l*3),a=new Float32Array(l*i);for(let H=0;H<l;H++)c.set(u.subarray((C*P+H)*3,(C*P+H)*3+3),H*3),a.set(I.subarray((C*P+H)*i,(C*P+H)*i+i),H*i);let h={bioLogits:c,clsLogits:a,length:l,nCls:i},M=this.decodeForward(b,h,0,l);if(L)for(let H of M)H.span=d.slice(H.start,H.end);B[E]=M}}return B}},vA=null;function eA(){return vA||(vA=new AA),vA}function $e(A,e={}){return eA().parse(A,e)}function An(A,e={}){return eA().parseBatch(A,e)}function en(A){return eA().inspect(A)}function nn(){return eA().modelInfo()}function rn(A={}){return new AA(A)}var Re=zA(OA,xA);export{F as CLASSES,AA as Parser,rn as createParser,en as inspect,gA as isWebGPUAvailable,nn as modelInfo,k as normalizeText,$e as parse,An as parseBatch,oA as probeWebGPU};
79
+ `;function vA(){return typeof navigator<"u"&&!!navigator.gpu}var Z=null;function PA(){return Z||(Z=(async()=>{if(!vA())return!1;try{return await navigator.gpu.requestAdapter()!==null}catch{return!1}})(),Z)}var $=class{weights;state=null;constructor(e){this.weights=e}async init(){if(this.state)return this.state;if(!vA())throw new Error("WebGPU is not available in this environment");let e=await navigator.gpu.requestAdapter();if(!e)throw new Error("No WebGPU adapter available");let t=await e.requestDevice(),n=(B,a)=>{let C=t.createBuffer({size:Math.max(4,B.byteLength),usage:a,mappedAtCreation:!0});return new Float32Array(C.getMappedRange()).set(B),C.unmap(),C},r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,s=this.weights,f=s.conv.map(B=>({w:n(B.w.data,r),b:n(B.b,r)}));return this.state={device:t,embedModule:t.createShaderModule({code:ke}),convModule:t.createShaderModule({code:xe}),headModule:t.createShaderModule({code:me}),embedBuf:n(s.embed.data,r),convBufs:f,bioBuf:{w:n(s.bio.w.data,r),b:n(s.bio.b,r)},clsBuf:{w:n(s.cls.w.data,r),b:n(s.cls.b,r)}},this.state}async run(e,t,n){let r=await this.init(),{device:s}=r,f=this.weights,B=f.embed.shape[1],a=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,C=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,D=s.createBuffer({size:e.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});new Int32Array(D.getMappedRange()).set(e),D.unmap();let o=h=>{let u=s.createBuffer({size:h.byteLength,usage:C,mappedAtCreation:!0});return new Uint32Array(u.getMappedRange()).set(h),u.unmap(),u},g=s.limits?.maxComputeWorkgroupsPerDimension??65535,v=h=>{let u=Math.max(1,Math.ceil(h/64)),i=Math.min(u,g),b=Math.ceil(u/i);return{x:i,y:b,stride:i*64}},P=(h,u,i)=>{let b=s.createBindGroup({layout:h.getBindGroupLayout(0),entries:u}),_=s.createCommandEncoder(),I=_.beginComputePass();I.setPipeline(h),I.setBindGroup(0,b),I.dispatchWorkgroups(i.x,i.y),I.end(),s.queue.submit([_.finish()])},c=s.createBuffer({size:t*B*n*4,usage:a});{let h=v(t*n),u=o(new Uint32Array([t,n,B,f.embed.shape[0],h.stride])),i=s.createComputePipeline({layout:"auto",compute:{module:r.embedModule,entryPoint:"main"}});P(i,[{binding:0,resource:{buffer:u}},{binding:1,resource:{buffer:D}},{binding:2,resource:{buffer:r.embedBuf}},{binding:3,resource:{buffer:c}}],h)}let l=B,Q=f.conv,w=s.createComputePipeline({layout:"auto",compute:{module:r.convModule,entryPoint:"main"}});for(let h=0;h<Q.length;h++){let u=Q[h],[i,,b]=u.w.shape,_=u.dilation,I=u.padding,k=s.createBuffer({size:t*i*n*4,usage:a}),Y=v(t*i*n),GA=o(new Uint32Array([t,n,l,i,b,I,_,1,u.residual?1:0,Y.stride]));P(w,[{binding:0,resource:{buffer:GA}},{binding:1,resource:{buffer:c}},{binding:2,resource:{buffer:r.convBufs[h].w}},{binding:3,resource:{buffer:r.convBufs[h].b}},{binding:4,resource:{buffer:k}}],Y),c=k,l=i}let E=s.createComputePipeline({layout:"auto",compute:{module:r.headModule,entryPoint:"main"}}),R=async(h,u)=>{let i=s.createBuffer({size:t*n*u*4,usage:a}),b=v(t*n*u),_=o(new Uint32Array([t,n,l,u,b.stride]));P(E,[{binding:0,resource:{buffer:_}},{binding:1,resource:{buffer:c}},{binding:2,resource:{buffer:h.w}},{binding:3,resource:{buffer:h.b}},{binding:4,resource:{buffer:i}}],b);let I=s.createBuffer({size:t*n*u*4,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),k=s.createCommandEncoder();k.copyBufferToBuffer(i,0,I,0,t*n*u*4),s.queue.submit([k.finish()]),await I.mapAsync(GPUMapMode.READ);let Y=new Float32Array(I.getMappedRange().slice(0));return I.unmap(),Y},H=await R(r.bioBuf,f.bio.w.shape[0]),F=await R(r.clsBuf,f.cls.w.shape[0]);return{bio:H,cls:F}}};var yA={version:2,quantized:"int8_symmetric_per_tensor",charset:["<pad>","<unk>"," ","!",'"',"#","%","'","(",")","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":","=","?","@","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","}","~","\u0901","\u0902","\u0903","\u0905","\u0906","\u0907","\u0908","\u0909","\u090A","\u090F","\u0911","\u0913","\u0914","\u0915","\u0916","\u0917","\u0918","\u091A","\u091B","\u091C","\u091D","\u091F","\u0920","\u0921","\u0922","\u0923","\u0924","\u0925","\u0926","\u0927","\u0928","\u092A","\u092B","\u092C","\u092D","\u092E","\u092F","\u0930","\u0932","\u0935","\u0936","\u0937","\u0938","\u0939","\u093C","\u093E","\u093F","\u0940","\u0941","\u0942","\u0947","\u0948","\u0949","\u094B","\u094C","\u094D","\u20B9"],classes:["O","SEP","RANGE","DIGITS","DOT","COMMA","PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE","CARD_1","CARD_2","CARD_3","CARD_4","CARD_5","CARD_6","CARD_7","CARD_8","CARD_9","CARD_10","CARD_11","CARD_12","CARD_13","CARD_14","CARD_15","CARD_16","CARD_17","CARD_18","CARD_19","CARD_20","CARD_21","CARD_22","CARD_23","CARD_24","CARD_25","CARD_26","CARD_27","CARD_28","CARD_29","CARD_30","CARD_31","CARD_32","CARD_33","CARD_34","CARD_35","CARD_36","CARD_37","CARD_38","CARD_39","CARD_40","CARD_41","CARD_42","CARD_43","CARD_44","CARD_45","CARD_46","CARD_47","CARD_48","CARD_49","CARD_50","CARD_51","CARD_52","CARD_53","CARD_54","CARD_55","CARD_56","CARD_57","CARD_58","CARD_59","CARD_60","CARD_61","CARD_62","CARD_63","CARD_64","CARD_65","CARD_66","CARD_67","CARD_68","CARD_69","CARD_70","CARD_71","CARD_72","CARD_73","CARD_74","CARD_75","CARD_76","CARD_77","CARD_78","CARD_79","CARD_80","CARD_81","CARD_82","CARD_83","CARD_84","CARD_85","CARD_86","CARD_87","CARD_88","CARD_89","CARD_90","CARD_91","CARD_92","CARD_93","CARD_94","CARD_95","CARD_96","CARD_97","CARD_98","CARD_99","UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],embed_dim:16,channels:48,embed:{shape:[115,16],scale:.027303295210003853,data_b64:"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"},conv:[{k:5,dilation:1,residual:!1,w:{shape:[48,16,5],scale:.006574669387191534,data_b64:"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"},b:[-.31929,-.045999,-.40305,-.39295,-.13954,-.24104,-.53474,-.21671,-.46175,.077572,.039769,-.040953,-.48041,-.11485,-.32836,.083721,-.52205,-.22272,-.083818,-.56126,-.55955,-.60158,-.62202,.086986,.046654,.019929,-.41565,-.37971,-.13659,-.042863,-.10238,-.17997,-.30422,-.04185,-.37229,-.20252,-.13547,-.69886,-.30349,-.24882,-.25193,-.28751,-.45349,-.63501,-.42076,-.1823,.070981,-.017687]},{k:3,dilation:1,residual:!0,w:{shape:[48,48,3],scale:.01602521724998951,data_b64:"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"},b:[.056214,-.12524,.23884,.0024871,-.06175,-.31766,-.14961,-.037517,.20302,-.044519,.15582,.46601,.78273,.11867,.05001,.35455,-.034919,-.073859,-.050784,-.037817,-.41513,-.13376,.70105,.70566,.26129,.15269,-.2305,-.078317,-.22751,.13662,.25707,-.19063,.25661,-.028151,.28978,.41472,.47561,.12276,-.059242,-.49669,.57152,-.32093,.041158,.018289,-.14852,.054595,.1895,.21106]},{k:3,dilation:2,residual:!0,w:{shape:[48,48,3],scale:.011627851985394955,data_b64:"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"},b:[-.2905,-.03646,.20467,-.11792,-.068682,-.12794,.67811,.40356,-.10258,.021032,.41819,1.2684,1.3565,.29341,.12242,.30189,1.0168,.037088,-.18086,.14312,-.39863,.47754,.16237,.36304,.058092,1.1541,.11184,-.019706,.045608,1.4488,.0021099,-.21032,.030593,-.10661,.24996,-.21887,.058977,.16564,.13488,-.4112,.87899,.21653,.33517,.7668,.18889,.12303,.83771,.78421]},{k:3,dilation:4,residual:!0,w:{shape:[48,48,3],scale:.030631914734840393,data_b64:"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"},b:[.051436,.58024,.71758,-.27969,.28778,.33216,.31188,.23569,.3305,-.10469,.5278,1.6406,-.067324,.24835,.41882,-.22585,1.8259,.96147,.002934,.048236,.0073087,.60823,.31096,.12285,.042868,.89324,.23269,.11376,.24216,1.1819,.34392,-.3203,.060985,.10997,.43409,.018524,.47538,-.022916,.03208,.21715,1.9319,.34116,.42903,.89243,.058132,-.1399,.59723,.9662]},{k:3,dilation:8,residual:!0,w:{shape:[48,48,3],scale:.02437734417617321,data_b64:"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"},b:[-.095424,-1.0412,.038494,-1.8677,-.11797,.14448,1.1875,93106e-8,.53545,.49672,.35824,.25156,.49496,.2637,.65419,.99175,1.3647,-.10529,-.083752,-.012303,-.13534,.67019,.90971,-.030518,-.034959,1.9539,.41068,-.038103,-.1407,.54517,-.095919,.93171,.5754,.47958,1.0011,.31704,.44425,-1.3234,-.076986,.1531,.45021,.25218,.26872,.0026443,1.817,.19703,1.7538,-.35513]}],bio:{w:{shape:[3,48],scale:.005212794058024883,data_b64:"DQQEIPr+Cvbxuwg0A/3z9yUGFw36Be8EEQT/9vzwA/v4+wukDX/35zXzBvPw8wADEDUTQe8ADPbx8ggDBPz4+uVMAPH6A+4F+PgA7PbyAPz3+gv7CwT78ODzCPPAAAEhG9jt8v4AC/XxOwjeBPv3+grG+gMDBO4LFf3/CfbxBPz3+go+DLLzCMbzCfMuCgDo"},b:[.3519,-.45088,-.36292]},cls:{w:{shape:[120,48],scale:.005673965439200401,data_b64:"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"},b:[2.242,1.3744,-.47951,.6161,-2.4455,-1.5301,-1.0143,-.093522,.023086,.0087727,-.078257,-.17369,.020164,-.54997,-.57181,.44243,.027244,-.35139,-.89164,-.33272,-.18314,-.76673,-.54692,-.68857,-.30066,-.258,-.71149,-.31854,-.089586,-.43189,.047698,-.016066,-.81204,-.4251,-.88151,-.88009,-.79047,-.51782,-.42018,-1.1849,-.78106,-.77428,-.2046,-.38955,-1.4188,-.7007,-.31201,-.41446,-.92158,-.42966,-.86422,-.54021,-.30576,-.54322,-.63683,-.16471,-.12409,-.03448,-1.0125,-.22992,-.30688,-.54466,-.85746,.10627,-1.0269,-.95531,-.3397,-1.1359,-.60038,-1.0637,-.36039,-.94921,-.32892,-.66161,-.6971,-1.3174,-.35987,-.38449,-.36889,-.25041,-.47356,-.28453,-.45676,-.4763,-.32352,-.64705,-.33239,-.25252,-.48801,-.32516,-.76514,-.40702,-.33294,-.62638,-.8749,-.86953,-.65204,-.073133,-.13683,-.55527,-.82726,-.029609,-.69776,-.77748,-.5235,-1.2791,-.2632,-.59748,-.76975,-.81658,-.29771,-.60698,.0051561,.93853,1.3302,-.49395,.34466,-.30127,-.65059,-.63965]}};var eA=class{weights;charToId;gpu=null;defaultBackend;scratch;idsScratch=new Int32Array(L);bioIdsScratch=new Int32Array(128);clsIdsScratch=new Int32Array(128);bioProbsScratch=Array.from({length:128},()=>new Float32Array(3));constructor(e={}){this.weights=uA(e.weights??yA),this.charToId=iA(this.weights.charset),this.defaultBackend=e.backend??"cpu",this.scratch=new J(this.weights)}parse(e,t={}){if(typeof e!="string")return[];let n=e;e=y(e);let r=n.length===e.length,s,f=tA(e.length);if(f.length===1&&f[0].length===e.length){let B=z(e.length),a=G(e,this.charToId,this.idsScratch,B),C=K(this.weights,a,this.scratch);s=this.decodeForward(e,C,0,e.length,t.strict??!1)}else{let B=[],a=new Set;for(let C of f){let D=e.slice(C.offset,C.offset+C.length),o=z(D.length),g=G(D,this.charToId,this.idsScratch,o),v=K(this.weights,g,this.scratch),P=this.decodeForward(D,v,C.offset,D.length,t.strict??!1);for(let c of P){let l=`${c.start}:${c.end}`;a.has(l)||(a.add(l),B.push(c))}}B.sort((C,D)=>C.start-D.start),s=B}if(r)for(let B of s)B.span=n.slice(B.start,B.end);return s}decodeForward(e,t,n,r=t.length,s=!1){let f=r,B=f<=128,a=B?this.bioIdsScratch:new Int32Array(f),C=B?this.clsIdsScratch:new Int32Array(f),D=B?this.bioProbsScratch:Array.from({length:f},()=>new Float32Array(3));this.weights.crf&&sA(t.bioLogits,f,this.weights.crf,a);for(let v=0;v<f;v++)this.weights.crf||(a[v]=X(t.bioLogits,v*3,3)),C[v]=X(t.clsLogits,v*t.nCls,t.nCls),rA(t.bioLogits,v*3,3,D[v]);let o=_A(e,a.subarray(0,f),C.subarray(0,f),D),g=[];for(let v of o){let P=v.tokens.map(([w,E])=>[d[w],E]),c=zA(e,v.start,v.end,Ge);if(MA(P)&&c===null||UA(P)&&c===null)continue;let l=kA(P);if(s&&!l)continue;let Q=LA(P);g.push({span:v.text,start:v.start+n,end:v.end+n,value:Q.value,...Q.range?{range:Q.range}:{},unit:Q.unit??null,currency:c,confidence:v.confidence??0,classes:Q.classes,verified:l,tokens:P})}return g}inspect(e){let t=performance.now();typeof e!="string"&&(e="");let n=y(e),r=tA(n.length),s=new Array(n.length),f=new Array(n.length).fill(!1);for(let C of r){let D=n.slice(C.offset,C.offset+C.length),o=z(D.length),g=G(D,this.charToId,this.idsScratch,o),v=K(this.weights,g,this.scratch);this.weights.crf&&sA(v.bioLogits,D.length,this.weights.crf,this.bioIdsScratch);for(let P=0;P<D.length;P++){let c=C.offset+P;if(f[c])continue;f[c]=!0;let l=this.weights.crf?this.bioIdsScratch[P]:X(v.bioLogits,P*3,3),Q=new Float32Array(3);rA(v.bioLogits,P*3,3,Q);let w=X(v.clsLogits,P*v.nCls,v.nCls);s[c]={ch:D[P],bio:l,bioProb:[Q[0],Q[1],Q[2]],cls:d[w],clsId:w}}}let B=this.parse(e),a=performance.now()-t;return{text:n,chars:s,spans:B,ms:a}}modelInfo(){let e=this.weights,t=e.embed.data.length;for(let r of e.conv)t+=r.w.data.length+r.b.length;t+=e.bio.w.data.length+e.bio.b.length,t+=e.cls.w.data.length+e.cls.b.length,e.crf&&(t+=e.crf.trans.length+e.crf.start.length+e.crf.end.length);let n=e.conv.length?Math.max(...e.conv.map(r=>r.w.shape[0])):e.embed.shape[1];return{version:e.version,params:t,channels:n,embedDim:e.embed.shape[1],vocab:e.embed.shape[0],classes:e.classes.length,layers:e.conv.map(r=>({k:r.k,dilation:r.dilation,residual:r.residual})),crf:!!e.crf}}async parseBatch(e,t={}){e=e.map(D=>typeof D=="string"?D:"");let n=t.backend??this.defaultBackend;if(!(n==="webgpu"||n==="auto"&&e.length>=32&&await PA()))return e.map(D=>this.parse(D,{backend:"cpu",strict:t.strict}));let s=e,f=e.map(y),B=new Array(e.length),a=[],C=[];for(let D=0;D<f.length;D++)f[D].length<=128?a.push(D):C.push(D);for(let D of C)B[D]=this.parse(s[D],{backend:"cpu",strict:t.strict});if(a.length>0){this.gpu||(this.gpu=new $(this.weights));let D=Math.max(...a.map(w=>f[w].length),1),o=z(D),g=a.length,v=new Int32Array(g*o),P=this.charToId.get("<pad>")??0;v.fill(P);for(let w=0;w<g;w++){let E=f[a[w]],R=G(E,this.charToId);v.set(R,w*o)}let{bio:c,cls:l}=await this.gpu.run(v,g,o),Q=this.weights.cls.w.shape[0];for(let w=0;w<g;w++){let E=a[w],R=f[E],H=s[E],F=H.length===R.length,h=R.length,u=new Float32Array(h*3),i=new Float32Array(h*Q);for(let I=0;I<h;I++)u.set(c.subarray((w*o+I)*3,(w*o+I)*3+3),I*3),i.set(l.subarray((w*o+I)*Q,(w*o+I)*Q+Q),I*Q);let b={bioLogits:u,clsLogits:i,length:h,nCls:Q},_=this.decodeForward(R,b,0,h,t.strict??!1);if(F)for(let I of _)I.span=H.slice(I.start,I.end);B[E]=_}}return B}},wA=null;function nA(){return wA||(wA=new eA),wA}function vn(A,e={}){return nA().parse(A,e)}function Pn(A,e={}){return nA().parseBatch(A,e)}function wn(A){return nA().inspect(A)}function cn(){return nA().modelInfo()}function un(A={}){return new eA(A)}var Ge=OA(xA,mA);export{d as CLASSES,eA as Parser,un as createParser,wn as inspect,vA as isWebGPUAvailable,cn as modelInfo,y as normalizeText,vn as parse,Pn as parseBatch,PA as probeWebGPU};
package/dist/types.d.ts CHANGED
@@ -8,9 +8,20 @@ export interface Sankhya {
8
8
  currency: "INR" | null;
9
9
  confidence: number;
10
10
  classes: string[];
11
+ /** True when every decoded token is independently justified by the
12
+ * lexicon (or a structural rule for SEP/DOT/COMMA/RANGE/DIGITS) -- see
13
+ * verifyTokens() in verify.ts. A verified span's value is a pure
14
+ * function of the lexicon + arithmetic core. */
15
+ verified: boolean;
16
+ /** The (class, text) tokens the span decoded to, in order -- for
17
+ * explainability and for verifyTokens(). */
18
+ tokens: Array<[string, string]>;
11
19
  }
12
20
  export interface ParseOptions {
13
21
  backend?: "cpu" | "webgpu" | "auto";
22
+ /** When true, spans that are not verified() are dropped from the
23
+ * result. Default false. */
24
+ strict?: boolean;
14
25
  }
15
26
  /** Raw float weights JSON, as written by python/sankhya/export.py (float form). */
16
27
  export interface WeightsJsonFloat {
@@ -0,0 +1,3 @@
1
+ /** Verify a decoded span's token list against the lexicon + structural
2
+ * rules. Pure function of (tokens, lexicon) -- see VERIFY_CONTRACT.md. */
3
+ export declare function verifyTokens(tokens: Array<[string, string]>): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gpu-sankhya",
3
- "version": "0.3.4",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "Fast char-CNN extraction of Hinglish and Devanagari Hindi numeric quantities, with CPU and WebGPU backends.",
6
6
  "license": "MIT",