@trebco/treb 23.3.3 → 23.5.1
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/package.json +1 -1
- package/treb-bundle.css +2 -2
- package/treb-bundle.mjs +12 -12
- package/treb.d.ts +116 -56
package/treb-bundle.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/*! TREB v23.
|
|
2
|
-
var ns=Object.defineProperty;var os=(c,e,t)=>e in c?ns(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var as=(c,e)=>()=>(e||c((e={exports:{}}).exports,e),e.exports);var k=(c,e,t)=>(os(c,typeof e!="symbol"?e+"":e,t),t);var rs=as((qf,wn)=>{wn.exports={}});var z=c=>typeof c=="object"&&typeof c.row<"u"&&typeof c.column<"u",ti=c=>typeof c=="object"&&z(c.start)&&z(c.end),y=class{start_;end_;constructor(e,t=e,r=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),r&&this.Normalize()}static FromColumn(e){return new y({row:1/0,column:e})}static FromRow(e){return new y({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let r=new y(e.start,e.end);for(let i of t)i&&(r.ConsumeAddress(i.start),r.ConsumeAddress(i.end));return r}static Bleed(e,t=1){return new y({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new y(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can't convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,r=0;for(let i=this.start_.row;i<=this.end_.row;i++)for(let s=this.start_.column;s<=this.end_.column;s++)e[r++]={row:i,column:s,sheet_id:t};return e}get left(){let e=new y(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new y(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new y(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new y(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don't iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let r=this.start_.row;r<=this.end_.row;r++)e({column:t,row:r,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=y.ColumnToLabel(this.start_.column),e+=":"+y.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=y.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+y.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var ve=c=>typeof c=="object"&&!!c&&typeof c.real=="number"&&typeof c.imaginary=="number",je=c=>c.real?c.imaginary?c.imaginary>0?`${c.real} + ${c.imaginary}i`:`${c.real} - ${Math.abs(c.imaginary)}i`:c.real.toString():c.imaginary?c.imaginary+"i":"0",ar=c=>typeof c=="object"&&!!c&&typeof c.value=="number"&&typeof c.unit=="string";var ce=c=>{switch(typeof c){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return c===null?0:ve(c)?7:ar(c)?9:5;case"string":return c[0]==="="?1:2;default:return 6}};var se=class{static StringToColumn(e){let t=0;e=e.toUpperCase();for(let r=0;r<e.length;r++)t*=26,t+=e.charCodeAt(r)-64;return t-1}value;type=0;calculated;calculated_type;formatted;rendered_type;style;area;merge_area;table;renderer_data;render_clean=[];note;hyperlink;editing;render_function;click_function;validation;constructor(e,t){typeof e<"u"&&this.Set(e,t)}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=ce(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=ce(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=ce(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var lr=c=>!c.cells,rt=c=>!!c[0]&&lr(c[0]),cr=c=>!!c[0]&&c[0].row!==void 0,Ct=class{data=[];rows_=0;columns_=0;get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let r=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(i=>{if(i.length>=e){let s=i.slice(0,e),n=e+t,a=i.slice(e);for(let o=0;o<a.length;o++)s[n++]=a[o];return s}return i}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(r=>r.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let r=[e,0,[]];for(let i=1;i<t;i++)r.push([]);Array.prototype.splice.apply(this.data,r),this.rows_+=t}GetCell(e,t){let{row:r,column:i}=e;if(!this.data[r])if(t)this.data[r]=[],this.rows_=Math.max(this.rows_,r+1);else return;return this.data[r][i]||t&&(this.data[r][i]=new se,this.columns_=Math.max(this.columns_,i+1)),this.data[r][i]}EnsureCell(e){let{row:t,column:r}=e,i=this.data[t];i||(this.data[t]=i=[],this.rows_=Math.max(this.rows_,t+1));let s=i[r];return s||(s=i[r]=new se,this.columns_=Math.max(this.columns_,r+1)),s}FromArray(e=[],t=!1){this.data=[];let r=0,i=0;if(t){i=e.length;for(let s=0;s<i;s++){let n=e[s];r=Math.max(r,n.length);for(let a=0;a<n.length;a++)this.data[a]||(this.data[a]=[]),this.data[a][s]=new se(n[a])}}else{r=e.length;for(let s=0;s<r;s++){let n=[],a=e[s];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)n[o]=new se(a[o]);this.data[s]=n}}this.rows_=r,this.columns_=i}FromJSON(e=[],t){if(this.data=[],!rt(e)){let i=[];if(cr(e))for(let s of e)for(let n of s.cells)i.push({...n,row:s.row});else for(let s of e)for(let n of s.cells)i.push({...n,column:s.column});e=i}let r=[];for(let i of e){this.data[i.row]||(this.data[i.row]=[]);let s=new se(i.value);if(typeof i.calculated<"u"&&s.SetCalculatedValue(i.calculated,i.calculated_type),t&&typeof i.style_ref<"u"&&(s.style=t[i.style_ref]),typeof i.note<"u"&&(s.note=i.note),typeof i.hyperlink<"u"&&(s.hyperlink=i.hyperlink),this.data[i.row][i.column]&&this.data[i.row][i.column].area&&(s.area=this.data[i.row][i.column].area),this.data[i.row][i.column]=s,i.area){let n=new y(i.area.start,i.area.end);for(let a=n.start.row;a<=n.end.row;a++)for(let o=n.start.column;o<=n.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new se),this.data[a][o].area=n}if(i.table&&r.push({...i.table}),i.merge_area){let n=new y(i.merge_area.start,i.merge_area.end);for(let a=n.start.row;a<=n.end.row;a++)for(let o=n.start.column;o<=n.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new se),this.data[a][o].merge_area=n}i.validation&&(s.validation=i.validation)}for(let i of r)for(let s=i.area.start.row;s<=i.area.end.row;s++)for(let n=i.area.start.column;n<=i.area.end.column;n++)this.data[s]||(this.data[s]=[]),this.data[s][n]||(this.data[s][n]=new se),this.data[s][n].table=i;this.rows_=this.data.length,this.columns_=this.data.reduce((i,s)=>Math.max(i,s.length),0)}toJSON(e={}){let t=0,r=0,i=this.data.length-1,s;e.subset&&(t=e.subset.start.column,r=e.subset.start.row,i=e.subset.end.row);let n=[],a=-1,o=-1,l={},d={};for(let u=r;u<=i;u++)if(this.data[u]){let h=this.data[u];s=h.length-1,e.subset&&(s=e.subset.end.column);for(let p=t;p<=s;p++){let f=h[p],m=f&&f.merge_area&&f.merge_area.start.row===u&&f.merge_area.start.column===p,_=f&&f.area&&f.area.start.row===u&&f.area.start.column===p,b=f&&f.table&&f.table.area.start.row===u&&f.table.area.start.column===p,g=f?f.type===2&&!f.value:!0;if(f&&(!g||e.preserve_empty_strings)&&(m||f.type||f.calculated_type&&e.expand_arrays||f.calculated_type&&e.calculated_value||f.validation||e.decorated_cells&&f.style&&(f.style.fill||f.style.border_bottom||f.style.border_top||f.style.border_left||f.style.border_right))){let x={row:u,column:p,value:f.value};f.note&&(x.note=f.note),f.hyperlink&&(x.hyperlink=f.hyperlink),e.preserve_type&&(x.type=f.type),e.sheet_id&&(x.sheet_id=e.sheet_id),e.calculated_value&&typeof f.calculated<"u"&&(x.calculated=f.calculated,(e.preserve_type||f.calculated_type===6)&&(x.calculated_type=f.calculated_type)),f.table&&b&&e.tables&&(x.table=JSON.parse(JSON.stringify(f.table))),f.area&&_&&(x.area=f.area.toJSON()),f.merge_area&&(x.merge_area=f.merge_area.toJSON()),f.validation&&(x.validation=f.validation),e.cell_style_refs&&e.cell_style_refs[p]&&e.cell_style_refs[p][u]&&(x.style_ref=e.cell_style_refs[p][u],e.cell_style_refs[p][u]=0),l[u]=u,d[p]=p,a=Math.max(u,a),o=Math.max(p,o),n.push(x)}}}if(e.nested){let u=Object.keys(l),h=Object.keys(d);if(u.length<=h.length&&u.length){let p={},f=[];for(let m of n){let{row:_,...b}=m;p[m.row]||(p[m.row]=[]),p[m.row].push(b)}for(let m of u){let _=Number(m);f.push({row:_,cells:p[_]})}return{data:f,rows:a,columns:o+1}}else if(h.length){let p={},f=[];for(let m of n){let{column:_,...b}=m;p[m.column]||(p[m.column]=[]),p[m.column].push(b)}for(let m of h){let _=Number(m);f.push({column:_,cells:p[_]})}return{data:f,rows:a,columns:o+1}}}return{data:n,rows:a+1,columns:o+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let r=[],i=this.data.slice(e.row,t.row+1),s=e.column,n=t.column+1;for(let a of i){let o=[];for(let l=s,d=0;l<n;l++,d++){let u=a[l];o.push(u?u.value:void 0)}r.push(o)}return r}GetRange(e,t,r=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let i=[];if(r)for(let s=e.column;s<=t.column;s++){let n=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][s]?n.push(this.data[a][s].GetValue()):n.push(void 0);i.push(n)}else for(let s=e.row;s<=t.row;s++){let n=[];for(let a=e.column;a<=t.column;a++)this.data[s]&&this.data[s][a]?n.push(this.data[s][a].GetValue()):n.push(void 0);i.push(n)}return i}GetRange4(e,t=e,r=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let i=[];if(r)for(let s=e.column;s<=t.column;s++){let n=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][s]?n.push(this.data[a][s].GetValue4()):n.push({type:0});i.push(n)}else for(let s=e.row;s<=t.row;s++){let n=[];for(let a=e.column;a<=t.column;a++)this.data[s]&&this.data[s][a]?n.push(this.data[s][a].GetValue4()):n.push({type:0});i.push(n)}return{type:8,value:i}}Apply(e,t,r=!1){if(z(e)&&(e=new y(e)),e.entire_column||e.entire_row)throw new Error("don't iterate infinite cells");let i=e.start,s=e.end;if(r)for(let n=i.row;n<=s.row;n++){this.data[n]||(this.data[n]=[]);let a=this.data[n];for(let o=i.column;o<=s.column;o++)a[o]||(a[o]=new se),t(a[o],o,n)}else for(let n=i.row;n<=s.row;n++)if(this.data[n]){let a=this.data[n];for(let o=i.column;o<=s.column;o++)a[o]&&t(a[o],o,n)}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let r=e.start.row,i=0;r<=e.end.row;r++,i++){this.data[r]||(this.data[r]=[]);let s=this.data[r];if(t[i])for(let n=e.start.column,a=0;n<=e.end.column;n++,a++)s[n]||(s[n]=new se),s[n].Set(t[i][a])}else{let r=ce(t);for(let i=e.start.row;i<=e.end.row;i++){this.data[i]||(this.data[i]=[]);let s=this.data[i];for(let n=e.start.column;n<=e.end.column;n++)s[n]||(s[n]=new se),s[n].Set(t,r)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let r of t)r&&e(r)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var T=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let i=self?.document?.location;if(i&&i.search&&/locale=([^?&]+?)(?:\?|$|&)/.test(i.search)){let s=i.search.match(/locale=(.*?)(?:\?|$|&)/);s&&(this.locale=s[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let r=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,r),r=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,r),r=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,r),r=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,r),r=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,r),r=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,r),r=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,r),r=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,r),r=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,r),r=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,r),r=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,r),r=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,r)}static UpdateDateComponent(e,t,r){t>=0&&(this.date_components.short_days[t]=r.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=r.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=r.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=r.toLocaleString(this.locale,{month:"long"}))}};k(T,"locale","en-us"),k(T,"decimal_separator","."),k(T,"argument_separator",","),k(T,"grouping_separator",","),k(T,"date_components",{short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]});T.UpdateLocale();var F=class{constructor(e=0,t=0,r=0,i=0){this.left=e;this.top=t;this.width=r;this.height=i}get right(){return this.left+this.width}get bottom(){return this.top+this.height}static Create(e){return new F(e.left||0,e.top||0,e.width||0,e.height||0)}static IsRectangle(e){return typeof e=="object"&&typeof e?.left=="number"&&typeof e?.top=="number"&&typeof e?.width=="number"&&typeof e?.height=="number"}Shift(e=0,t=0){return new F(this.left+e,this.top+t,this.width,this.height)}Scale(e=1,t=e){return new F(this.left*e,this.top*t,this.width*e,this.height*t)}Expand(e=0,t=0){return new F(this.left,this.top,this.width+e,this.height+t)}Combine(e){return new F(Math.min(this.left,e.left),Math.min(this.top,e.top),Math.max(this.right,e.right)-Math.min(this.left,e.left),Math.max(this.bottom,e.bottom)-Math.min(this.top,e.top))}CheckEdges(e,t,r=16){let i=0;return e-this.left<r&&(i|=1),this.right-e<r&&(i|=2),t-this.top<r&&(i|=4),this.bottom-t<r&&(i|=8),i}Contains(e,t,r=0){return e>=this.left-r&&e<=this.left+this.width+r&&t>=this.top-r&&t<=this.top+this.height+r}ContextFill(e){e.fillRect(this.left,this.top,this.width,this.height)}ContextStroke(e){e.strokeRect(this.left,this.top,this.width,this.height)}Clamp(e,t){return e=Math.min(Math.max(e,this.left),this.right),t=Math.min(Math.max(t,this.top),this.bottom),{x:e,y:t}}ApplyStyle(e){e.style.top=this.top+"px",e.style.left=this.left+"px",e.style.width=this.width+"px",e.style.height=this.height+"px"}toJSON(){return{top:this.top,left:this.left,width:this.width,height:this.height}}};var A;(p=>{let c=JSON.stringify({}),e;(g=>(g.None="",g.Left="left",g.Center="center",g.Right="right"))(e=p.HorizontalAlign||={});let t;(g=>(g.None="",g.Top="top",g.Bottom="bottom",g.Middle="middle"))(t=p.VerticalAlign||={}),p.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},p.CompositeBorders=f=>({top:{width:f.border_top||0,color:f.border_top_fill||{}},left:{width:f.border_left||0,color:f.border_left_fill||{}},right:{width:f.border_right||0,color:f.border_right_fill||{}},bottom:{width:f.border_bottom||0,color:f.border_bottom_fill||{}}}),p.Merge=(f,m,_=!0)=>{let b=_?{...f,...m}:{...m};return JSON.parse(JSON.stringify(b))},p.Composite=f=>JSON.parse(JSON.stringify(f.reduce((m,_)=>({...m,..._}),{}))),p.Empty=f=>JSON.stringify(f)===c,p.ValidColor=f=>!!(f&&!f.none&&(f.text||f.theme||f.theme===0)),p.ParseFontSize=(f="",m="em")=>{let _=f.match(/(-*[\d.]+)\s*(\S*)/);if(_){let b=Number(_[1]);if(!b||isNaN(b)||b<0)return{};let g=_[2].toLowerCase()||m;if(g==="pt"||g==="em"||g==="%"||g==="px")return{font_size:{unit:g,value:b}}}return{}},p.RelativeFontSize=(f,m)=>{let _=12,b=12;switch(f.font_size?.unit){case"pt":if(!f.font_size.value)return 1;b=f.font_size.value;break;case"px":if(!f.font_size.value)return 1;b=Math.round(f.font_size.value*300/4)/100;break;case"em":return f.font_size.value||1;case"%":return(f.font_size.value||100)/100;default:return 1}switch(m.font_size?.unit){case"pt":if(!m.font_size.value)return 1;_=m.font_size.value;break;case"px":if(!m.font_size.value)return 1;_=Math.round(m.font_size.value*300/4)/100;break;default:return 1}return b/_},p.FontSize=(f,m=!0)=>{let _=f.font_size?.value;switch(f.font_size?.unit){case"pt":return(_||12)+"pt";case"px":return m?Math.round((_||16)*300/4)/100+"pt":(_||16)+"px";case"em":return(_||1)+"em";case"%":return(_||100)+"%"}return""},p.Font=(f,m=1)=>{let _=[];return f.bold&&_.push("bold"),f.italic&&_.push("italic"),_.push(((f.font_size?.value||0)*m).toFixed(2)+(f.font_size?.unit||"pt")),_.push(f.font_face||""),_.join(" ")}})(A||={});var dr=c=>!!c&&Array.isArray(c)&&Array.isArray(c[0]),q=(c,e)=>(typeof e>"u"&&(e=ce(c)),{value:c,type:e}),pe=c=>c.imaginary?{type:7,value:c}:{type:3,value:c.real};var ur=class{Darken(e,t,r,i,s=!1){let{h:n,s:a,l:o}=this.RGBToHSL(e,t,r);return s?o-=o*i/100:o-=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(n,a,o)}Lighten(e,t,r,i,s=!1){let{h:n,s:a,l:o}=this.RGBToHSL(e,t,r);return s?o+=o*i/100:o+=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(n,a,o)}RGBToHSL(e,t,r){e/=255,t/=255,r/=255;let i=Math.max(e,t,r),s=Math.min(e,t,r),n=0,a=0,o=(i+s)/2;if(i===s)n=a=0;else{let l=i-s;switch(a=o>.5?l/(2-i-s):l/(i+s),i){case e:n=(t-r)/l+(t<r?6:0);break;case t:n=(r-e)/l+2;break;case r:n=(e-t)/l+4;break}n/=6}return{h:n*360,s:a,l:o}}HSLToRGB(e,t,r){let i,s,n;if(t===0)i=s=n=r;else{e=e/360;let a=r<.5?r*(1+t):r+t-r*t,o=2*r-a;i=this.HueToRGB(o,a,e+1/3),s=this.HueToRGB(o,a,e),n=this.HueToRGB(o,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(s*255),b:Math.round(n*255)}}HueToRGB(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}},it=new ur;var St={grid_color:"#ccc",note_marker_color:"#d2c500"},_e=(c,e)=>M(c,e,0),ls=(c,e,t)=>{c.tint_cache||(c.tint_cache=[]),c.tint_cache[e]||(c.tint_cache[e]={});let r=c.tint_cache[e][t];if(!r){let i=(c.theme_colors_rgb?c.theme_colors_rgb[e]:[0,0,0])||[0,0,0],s;t>0?s=it.Lighten(i[0],i[1],i[2],t*100,!0):s=it.Darken(i[0],i[1],i[2],-t*100,!0),r=`rgb(${s.r},${s.g},${s.b})`,c.tint_cache[e][t]=r}return r},M=(c,e,t)=>e?.text?e.text==="none"?"":e.text:e?.theme||e?.theme===0?e.tint?ls(c,e.theme,e.tint):c.theme_colors?c.theme_colors[e.theme]:"":(t||t===0)&&c.theme_colors?c.theme_colors[t]:"",cs=c=>{let e=10,t="pt",r=c.match(/^([\d.]+)(\D.*)$/);return r&&(e=Number(r[1]),t=r[2]),{value:e,unit:t}},st=(c,e)=>{let t={};if(e.borderTopColor!==c.borderTopColor&&(t.border_top=1,t.border_top_fill={text:e.borderTopColor},e.borderTopStyle==="double"&&(t.border_top=2)),e.borderBottomColor!==c.borderBottomColor&&(t.border_bottom=1,t.border_bottom_fill={text:e.borderBottomColor},e.borderBottomStyle==="double"&&(t.border_bottom=2)),e.backgroundColor!==c.backgroundColor&&(t.fill={text:e.backgroundColor}),e.color!==c.color&&(t.text={text:e.color}),e.fontWeight!==c.fontWeight&&(t.bold=/(?:700|bold)/.test(e.fontWeight)),e.fontStyle!==c.fontStyle&&(t.italic=/italic/.test(e.fontStyle)),e.textDecoration!==c.textDecoration){let r=/underline/.test(e.textDecoration);/underline/.test(c.textDecoration)!==r&&(t.underline=r);let s=/line-through/.test(e.textDecoration);/line-through/.test(c.textDecoration)!==s&&(t.strike=s)}return t},ri=c=>{let{value:e,unit:t}=cs(c.fontSize||""),r={fill:{text:c.backgroundColor},text:{text:c.color},font_size:{unit:t,value:e},font_face:c.fontFamily};return/italic/i.test(c.font)&&(r.italic=!0),c.fontWeight==="700"&&(r.bold=!0),r},ii=c=>{let e=JSON.parse(JSON.stringify(St)),t=(u,h)=>{let p=document.createElement("div");return p.setAttribute("class",h),u.appendChild(p),p},r=(u,h)=>window.getComputedStyle(t(u,h)),i=t(c,""),s=r.bind(0,i),n=s("grid-cells");e.grid_cell=ri(n),e.grid_color=n.stroke||"",n=s("grid-headers"),e.headers=ri(n),e.headers_grid_color=n.stroke,(!e.headers_grid_color||e.headers_grid_color==="none")&&(e.headers_grid_color=e.grid_color),n=s("note-marker"),e.note_marker_color=n.backgroundColor;let a=s("");e.table={header:st(a,s("treb-table header")),odd:st(a,s("treb-table row-odd")),even:st(a,s("treb-table row-even")),footer:st(a,s("treb-table footer")),total:st(a,s("treb-table total"))},i.style.color="rgba(1,2,3,.4)",n=s("");let o=n.color;e.theme_colors=[e.grid_cell.fill?.text||"rgb(255, 255, 255)",e.grid_cell.text?.text||"rgb(51, 51, 51)"];for(let u=1;u<32&&(n=s(`theme-color-${u}`),!(!n.color||n.color===o));u++)e.theme_colors.push(n.color);let l=document.createElement("canvas");l.width=3,l.height=3;let d=l.getContext("2d",{willReadFrequently:!0});return d&&(e.theme_colors_rgb=e.theme_colors.map(u=>{d.fillStyle=u,d.fillRect(0,0,3,3);let h=d.getImageData(1,1,1,1);return Array.from(h.data)})),i.parentElement?.removeChild(i),e};var si={column:0,type:"auto",asc:!0};var dt=/[\s-+=<>!()]/,ci=/['*\\]/,hr=34,pr=39,ds=160,ni=32,us=9,hs=10,ps=13,we=48,nt=57,fr=46,mr=43,ot=45,oi=40,_r=41,at=44,fs=37,br=95,At=36,ms=123,_s=125,lt=91,ai=93,bs=33,li=59,ys=35,gs=64,Je=65,ct=97,vs=69,ws=101,Rt=90,kt=122,xs=105;var yr=192,gr=312,vr={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},Cs=Object.keys(vr).sort((c,e)=>e.length-c.length),Ss={"-":100,"+":100},We=class{argument_separator=",";decimal_mark=".";flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};r1c1_regex=/[rR]((?:\[[-+]{0,1}\d+\]|\d+))[cC]((?:\[[-+]{0,1}\d+\]|\d+))$/;argument_separator_char=at;decimal_mark_char=fr;imaginary_char=xs;imaginary_number="i";id_counter=0;expression="";data=[];index=0;length=0;valid=!0;error_position;error;dependencies={addresses:{},ranges:{}};address_refcount={};full_reference_list=[];Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(r=>this.Walk(r,t));return;case"call":t(e)&&e.args.forEach(r=>this.Walk(r,t))}}Transpose(e){let t=e.length,r=[],i=0;for(let s=0;s<t;s++)Array.isArray(e[s])&&(i=Math.max(i,e[s].length));for(let s=0;s<i;s++){r[s]=[];for(let n=0;n<t;n++)r[s][n]=e[n][s]}return r}Render(e,t={}){let r=t.offset||{rows:0,columns:0},i=t.missing??"(missing)",{convert_decimal:s,convert_argument_separator:n,convert_imaginary_number:a,long_structured_references:o,table_name:l}=t,d=this.argument_separator+" ";n===","?d=", ":n===";"&&(d="; ");let u=this.imaginary_number;a&&(u=a);let h=s===","?",":".",p=this.decimal_mark===","?/,/:/\./,f=this.decimal_mark===","?/,/g:/\./g;switch(e.type){case"address":return this.AddressLabel(e,r);case"range":return this.AddressLabel(e.start,r)+":"+this.AddressLabel(e.end,r);case"missing":return i;case"array":return"{"+this.Transpose(e.values).map(m=>m.map(_=>typeof _=="string"?'"'+_+'"':_).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return s?e.text.replace(f,h):e.text;{let m=Math.abs(e.imaginary).toString();if((s===","||this.decimal_mark===",")&&(m=m.replace(/\./,",")),e.real){let _=e.real.toString();(s===","||this.decimal_mark===",")&&(_=_.replace(/\./,","));let b=Math.abs(e.imaginary);return`${_}${e.imaginary<0?" - ":" + "}${b===1?"":m}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${m}i`}break;case"literal":if(typeof e.value=="string")return'"'+e.value.replace(/"/g,'""')+'"';if(s&&typeof e.value=="number")if(e.text){let m=e.text;return s===","&&this.decimal_mark==="."&&(m=m.replace(/,/g,"")),m.replace(p,h)}else return e.value.toString().replace(/\./,h);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(m=>this.Render(m,t)).join(d)+")":e.elements.map(m=>this.Render(m,t)).join(d);case"call":return e.name+"("+e.args.map(m=>this.Render(m,t)).join(d)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let m=e.column;/[^A-Za-z]/.test(m)&&(m="["+m+"]");let _=e.table;switch(!_&&o&&l&&(_=l),e.scope){case"all":return`${_}[[#all],${m}]`;case"row":return o?`${_}[[#this row],${m}]`:`${_}[@${m}]`;case"column":return`${_}[${m}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=li;break;default:this.argument_separator_char=at;break}switch(this.decimal_mark){case",":this.decimal_mark_char=at;break;default:this.decimal_mark_char=fr;break}for(let i=0;i<this.length;i++)this.data[i]=e.charCodeAt(i);let t=this.ParseGeneric(),r={};for(let i of Object.keys(this.dependencies.addresses))this.address_refcount[i]&&(r[i]=this.dependencies.addresses[i]);return this.dependencies.addresses=r,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let r=e.column;!e.absolute_column&&e.column!==1/0&&(r+=t.columns);let i=e.row;if(!e.absolute_row&&e.row!==1/0&&(i+=t.rows),i<0||r<0||i===1/0&&r===1/0)return"#REF";let s="";return e.sheet&&(s=(dt.test(e.sheet)?"'"+e.sheet+"'":e.sheet)+"!"),i===1/0?s+(e.absolute_column?"$":"")+this.ColumnLabel(r):r===1/0?s+(e.absolute_row?"$":"")+(i+1):s+(e.absolute_column?"$":"")+this.ColumnLabel(r)+(e.absolute_row?"$":"")+(i+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let r=this.ParseNext(t.length===0);if(typeof r=="number"){if(e.some(i=>r===i))break;if(r===oi){this.index++;let i=this.ParseGeneric([_r]);this.index++,i&&t.push({type:"group",id:this.id_counter++,elements:[i],explicit:!0})}else{let i=this.ConsumeOperator();i?t.push(i):(this.error=`unexpected character [1]: ${String.fromCharCode(r)}, 0x${r.toString(16)}`,this.valid=!1,this.index++)}}else t.push(r)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let r=[],i=n=>n.type==="literal"&&typeof n.value=="number"&&n.value%1===0,s=0;for(;s<t.length-3;s++)if(i(t[s])&&i(t[s+1])&&t[s+2].type==="operator"&&t[s+2].operator==="/"&&i(t[s+3])){let n=t[s],a=t[s+1],o=t[s+3],l=(n.value<0?-1:1)*(a.value/o.value);s+=3,r.push({id:t[s].id,type:"literal",text:this.expression.substring(n.position,o.position+1),value:n.value+l,position:n.position})}else r.push(t[s]);for(;s<t.length;s++)r.push(t[s]);t=r}if(t=t.map(r=>r.type==="identifier"&&r.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:r.position,text:r.name,id:this.id_counter++}:r),this.flags.dimensioned_quantities){let r=[],i;for(let s=0;s<t.length;s++){let n=t[s];if(!i)i=n;else if(n.type==="identifier"&&(i.type==="literal"||i.type==="group"||i.type==="call")){let a=n;for(;t[s+1]?.type==="identifier";)a.name+=" "+t[++s].name;r.push({type:"dimensioned",expression:i,unit:n,id:this.id_counter++}),i=void 0}else r.push(i),i=n}i&&r.push(i),t=r}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,r=e.name,i=r.split("!");if(i.length>1&&(t=i.slice(0,i.length-1).join("!"),r=r.substr(t.length+1),t[0]==="'"))if(t.length>1&&t[t.length-1]==="'")t=t.substr(1,t.length-2);else return;let s=r[0]==="$";r=(s?r.substr(1):r).toUpperCase();let n=Number(r);if(isNaN(n)){if(/[A-Z]{1,3}/.test(r)){let a=-1;for(let o=0;o<r.length;o++){let l=r[o].charCodeAt(0);a=26*(1+a)+(l-Je)}return{type:"address",position:e.position,absolute_column:s,label:e.name,column:a,id:this.id_counter++,row:1/0,sheet:t}}}else if(n>0&&n!==1/0&&!/\./.test(r))return{type:"address",position:e.position,absolute_row:s,label:e.name,row:n-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r],s=e[r+1],n=e[r+2],a,o="",l;if(i&&s&&n&&s.type==="operator"&&s.operator===":"){if(i.type==="address"&&n.type==="address"){let d=i.position+i.label.length,u=n.position;a={type:"range",id:this.id_counter++,position:i.position,start:i,end:n,label:i.label+this.expression.substring(d,u)+n.label},o=a.start.label+":"+a.end.label,this.address_refcount[a.start.label]--,this.address_refcount[a.end.label]--;let h=[i.position,n.position];this.full_reference_list=this.full_reference_list.filter(p=>p.position!==h[0]&&p.position!==h[1])}else if((i.type==="literal"||i.type==="identifier")&&(n.type==="literal"||n.type==="identifier")){let d=this.UnitToAddress(i);if(!d&&i.type==="literal"&&typeof i.value=="number"&&i.value<0){let h={...i,text:(i.text||"").replace(/^-/,""),position:i.position+1,value:-i.value};d=this.UnitToAddress(h),d&&(l={type:"operator",operator:"-",position:i.position,id:this.id_counter++})}let u=this.UnitToAddress(n);d&&u&&(d.column===1/0&&u.column===1/0||d.row===1/0&&u.row===1/0)&&(o=d.label+":"+u.label,a={type:"range",id:this.id_counter++,position:d.position,start:d,end:u,label:o})}}a?(l&&t.push(l),t.push(a),this.dependencies.ranges[o]=a,this.full_reference_list.push(a),r+=2):t.push(i)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let r=e.right.imaginary;return e.operator==="-"&&(r=-r),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:r,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,r="";if(e.left.type==="address"&&e.right.type==="address"){let i=e.left.position+e.left.label.length,s=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(i,s)+e.right.label},r=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let n=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(a=>a.position!==n[0]&&a.position!==n[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let i=this.UnitToAddress(e.left),s=this.UnitToAddress(e.right);i&&s&&(i.column===1/0&&s.column===1/0||i.row===1/0&&s.row===1/0)&&(r=i.label+":"+s.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:i,end:s,label:r})}if(t)return this.dependencies.ranges[r]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(Ss[i.operator]){let s=this.BinaryToComplex(this.ArrangeUnits(e.slice(r+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};s.type==="binary"?(s.left={type:"unary",id:this.id_counter++,operator:i.operator,operand:s.left,position:i.position},i=s):i={type:"unary",id:this.id_counter++,operator:i.operator,operand:s,position:i.position},r=e.length}else return this.error=`unexpected character [2]: ${i.operator}`,this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(i);continue}if(t.length<2)t.push(i);else if(t[t.length-1].type==="operator"){let s=t[t.length-2],n=t[t.length-1],a=n.operator,o={type:"binary",id:this.id_counter++,left:s,operator:a,position:n.position,right:i};s.type==="binary"&&vr[a]>vr[s.operator]&&(o.left=s.left,o.operator=s.operator,o.position=s.position,o.right={type:"binary",id:this.id_counter++,left:s.right,right:i,operator:a,position:n.position}),t.splice(-2,2,o)}else return this.error="multiple expressions",this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===hr)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=we&&t<=nt||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===ms)return this.ConsumeArray();if(e&&(t===ot||t===mr)){let r=this.data[this.index+1];if(r>=we&&r<=nt||r===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=Je&&t<=Rt||t>=ct&&t<=kt||t===br||t===ys||t===pr||t===At||t===lt||t>=yr&&t<=gr)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,r=0;for(;this.index<this.length;){let i=this.ParseNext(),s=this.index;if(typeof i=="number")switch(this.index++,i){case li:r++,t=0;break;case at:t++;break;case _s:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=s,this.valid=!1);break}else switch(i.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][r]=i.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=s,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of Cs)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let r=this.ParseGeneric([this.argument_separator_char,_r]);r!==null&&t.push(r);let i=this.data[this.index];if(i===this.argument_separator_char){this.index++,e++;for(let s=t.length;s<e;s++)t.push({type:"missing",id:this.id_counter++})}else if(i===_r)return this.index++,t}return t}ConsumeToken(e){let t=[e],r=this.index,i=e===pr,s=0,n=!1;for(e===lt&&(s=1,n=!0),++this.index;this.index<this.length;this.index++){let d=this.data[this.index];if(d>=Je&&d<=Rt||d>=ct&&d<=kt||d>=yr&&d<=gr||d===br||d===At||d===fr||d===bs||i||d>=we&&d<=nt||d===lt||s>0&&d===ai||d===ot&&this.flags.r1c1&&s===1||s>0&&d===gs&&this.data[this.index-1]===lt||s===1&&(d===at||d===ni)||s>1)t.push(d),d===lt&&(s++,n=!0),d===ai&&s--,d===pr&&(i=!1);else break}let a=t.map(d=>String.fromCharCode(d)).join("");if(i)return this.error="unbalanced single quote",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(s)return this.error="unbalanced square bracket",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(a.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:r};if(a.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:r};if(this.ConsumeWhiteSpace(),this.data[this.index]===oi){let d=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:a,args:d,position:r}}if(this.flags.spreadsheet_semantics){let d=this.ConsumeAddress(a,r);if(d)return d;if(n){let u=this.ConsumeStructuredReference(a,r);if(u)return u}}let l={type:"identifier",id:this.id_counter++,name:a,position:r};return this.full_reference_list.push(l),l}ConsumeStructuredReference(e,t){let r=t,i=e.length,s=e,n="",a=0;for(;a<i;a++){if(e[a]==="["){e=e.substring(a);break}n+=e[a]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let o=e.split(",").map(h=>h.trim()),l="column",d="";if(o.length>2)return;o.length===2?(/\[#this row\]/i.test(o[0])?l="row":/\[#all\]/i.test(o[0])&&(l="all"),d=o[1]):(d=o[0],d[0]==="@"&&(l="row",d=d.substring(1,d.length))),d[0]==="["&&d[d.length-1]==="]"&&(d=d.substring(1,d.length-1));let u={type:"structured-reference",id:this.id_counter++,label:s,position:t,scope:l,column:d,table:n};return this.full_reference_list.push(u),u}ConsumeAddress(e,t){let r=t,i=e.length,s,n=e.split("!");if(n.length>1&&(s=n.slice(0,n.length-1).join("!"),t+=s.length+1),this.flags.r1c1){let u=n[n.length-1].match(this.r1c1_regex);if(u){let h={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:r,sheet:s,r1c1:!0};return u[1][0]==="["?(h.offset_row=!0,h.row=Number(u[1].substring(1,u[1].length-1))):h.row=Number(u[1])-1,u[2][0]==="["?(h.offset_column=!0,h.column=Number(u[2].substring(1,u[2].length-1))):h.column=Number(u[2])-1,h}}let a=this.ConsumeAddressColumn(t);if(!a)return null;t=a.position;let o=this.ConsumeAddressRow(t);if(!o)return null;t=o.position;let l=s?s+e.substr(s.length,t-r).toUpperCase():e.substr(0,t-r).toUpperCase();s&&s[0]==="'"&&(s=s.substr(1,s.length-2));let d={type:"address",id:this.id_counter++,label:l,row:o.row,column:a.column,absolute_row:o.absolute,absolute_column:a.absolute,position:r,sheet:s};return i!==t-r?null:(this.dependencies.addresses[d.label]=d,this.address_refcount[d.label]=(this.address_refcount[d.label]||0)+1,this.full_reference_list.push(d),d)}ConsumeAddressRow(e){let t=this.data[e]===At;t&&e++;let r=e,i=0;for(;;e++){let s=this.data[e];if(s>=we&&s<=nt)i*=10,i+=s-we;else break}return r===e?!1:{absolute:t,row:i-1,position:e}}ConsumeAddressColumn(e){let t=-1,r=0,i=this.data[e]===At;for(i&&e++;;e++,r++){if(r>=4)return!1;let s=this.data[e];if(s>=Je&&s<=Rt)t=26*(1+t)+(s-Je);else if(s>=ct&&s<=kt)t=26*(1+t)+(s-ct);else break}return t<0?!1:{absolute:i,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,r=!1,i=!1,s=0,n=0,a=0,o="integer",l=0,d=!1,u=this.index;for(;this.index<this.length;this.index++,l++){let p=this.data[this.index];if(p===this.decimal_mark_char)if(o==="integer")o="fraction";else break;else if(p===fs){s/=100,a/=100,this.index++;break}else if(p===mr||p===ot)if(l===0)p===ot&&(i=!0);else break;else if(p===vs||p===ws)if(o==="integer"||o==="fraction")o="exponent",this.index<this.length-1&&(this.data[this.index+1]===mr?this.index++:this.data[this.index+1]===ot&&(this.index++,r=!0));else break;else if(p===this.imaginary_char){let f=this.data[this.index+1];if(f>=Je&&f<=Rt||f>=ct&&f<=kt||f>=yr&&f<=gr||f===br)break;if(o==="integer"||o==="fraction"){this.index++,d=!0;break}}else if(p>=we&&p<=nt)switch(o){case"integer":s=s*10+(p-we);break;case"fraction":a=a*10+(p-we),n++;break;case"exponent":t=t*10+(p-we);break}else break}let h=s+a/Math.pow(10,n);return o==="exponent"&&(h=h*Math.pow(10,(r?-1:1)*t)),d?{type:"complex",id:this.id_counter++,position:e,imaginary:i?-h:h,real:0,text:this.expression.substring(u,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:i?-h:h,text:this.expression.substring(u,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===hr&&(this.index++,this.index>=this.length||this.data[this.index]!==hr))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===ni||e===us||e===hs||e===ps||e===ds)this.index++;else return}}};var di=(c,e=",")=>{let t=0,r=[],i="",s=[],n=c.length;if(/[\r\n"]/.test(e))throw new Error("invalid delimiter");for(let a=0;a<n;a++){let o=c[a];if(!(a===0&&o.charCodeAt(0)===65279))if(t===0)switch(o){case e:r.push(i),i="";break;case"\r":break;case`
|
|
1
|
+
/*! TREB v23.5.1. Copyright 2018-2023 trebco, llc. All rights reserved. LGPL: https://treb.app/license */
|
|
2
|
+
var ns=Object.defineProperty;var os=(c,e,t)=>e in c?ns(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var as=(c,e)=>()=>(e||c((e={exports:{}}).exports,e),e.exports);var k=(c,e,t)=>(os(c,typeof e!="symbol"?e+"":e,t),t);var rs=as((Yp,Cn)=>{Cn.exports={}});var z=c=>typeof c=="object"&&typeof c.row<"u"&&typeof c.column<"u",ti=c=>typeof c=="object"&&z(c.start)&&z(c.end),y=class{start_;end_;constructor(e,t=e,r=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),r&&this.Normalize()}static FromColumn(e){return new y({row:1/0,column:e})}static FromRow(e){return new y({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let r=new y(e.start,e.end);for(let i of t)i&&(r.ConsumeAddress(i.start),r.ConsumeAddress(i.end));return r}static Bleed(e,t=1){return new y({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new y(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can't convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,r=0;for(let i=this.start_.row;i<=this.end_.row;i++)for(let s=this.start_.column;s<=this.end_.column;s++)e[r++]={row:i,column:s,sheet_id:t};return e}get left(){let e=new y(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new y(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new y(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new y(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don't iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let r=this.start_.row;r<=this.end_.row;r++)e({column:t,row:r,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=y.ColumnToLabel(this.start_.column),e+=":"+y.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=y.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+y.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var ve=c=>typeof c=="object"&&!!c&&typeof c.real=="number"&&typeof c.imaginary=="number",Je=c=>c.real?c.imaginary?c.imaginary>0?`${c.real} + ${c.imaginary}i`:`${c.real} - ${Math.abs(c.imaginary)}i`:c.real.toString():c.imaginary?c.imaginary+"i":"0",or=c=>typeof c=="object"&&!!c&&typeof c.value=="number"&&typeof c.unit=="string";var ce=c=>{switch(typeof c){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return c===null?0:ve(c)?7:or(c)?9:5;case"string":return c[0]==="="?1:2;default:return 6}};var se=class{static StringToColumn(e){let t=0;e=e.toUpperCase();for(let r=0;r<e.length;r++)t*=26,t+=e.charCodeAt(r)-64;return t-1}value;type=0;calculated;calculated_type;formatted;rendered_type;style;area;merge_area;table;renderer_data;render_clean=[];note;hyperlink;editing;render_function;click_function;validation;constructor(e,t){typeof e<"u"&&this.Set(e,t)}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=ce(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=ce(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=ce(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var ar=c=>!c.cells,it=c=>!!c[0]&&ar(c[0]),lr=c=>!!c[0]&&c[0].row!==void 0,xt=class{data=[];rows_=0;columns_=0;get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let r=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(i=>{if(i.length>=e){let s=i.slice(0,e),n=e+t,a=i.slice(e);for(let o=0;o<a.length;o++)s[n++]=a[o];return s}return i}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(r=>r.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let r=[e,0,[]];for(let i=1;i<t;i++)r.push([]);Array.prototype.splice.apply(this.data,r),this.rows_+=t}GetCell(e,t){let{row:r,column:i}=e;if(!this.data[r])if(t)this.data[r]=[],this.rows_=Math.max(this.rows_,r+1);else return;return this.data[r][i]||t&&(this.data[r][i]=new se,this.columns_=Math.max(this.columns_,i+1)),this.data[r][i]}EnsureCell(e){let{row:t,column:r}=e,i=this.data[t];i||(this.data[t]=i=[],this.rows_=Math.max(this.rows_,t+1));let s=i[r];return s||(s=i[r]=new se,this.columns_=Math.max(this.columns_,r+1)),s}FromArray(e=[],t=!1){this.data=[];let r=0,i=0;if(t){i=e.length;for(let s=0;s<i;s++){let n=e[s];r=Math.max(r,n.length);for(let a=0;a<n.length;a++)this.data[a]||(this.data[a]=[]),this.data[a][s]=new se(n[a])}}else{r=e.length;for(let s=0;s<r;s++){let n=[],a=e[s];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)n[o]=new se(a[o]);this.data[s]=n}}this.rows_=r,this.columns_=i}FromJSON(e=[],t){if(this.data=[],!it(e)){let i=[];if(lr(e))for(let s of e)for(let n of s.cells)i.push({...n,row:s.row});else for(let s of e)for(let n of s.cells)i.push({...n,column:s.column});e=i}let r=[];for(let i of e){this.data[i.row]||(this.data[i.row]=[]);let s=new se(i.value);if(typeof i.calculated<"u"&&s.SetCalculatedValue(i.calculated,i.calculated_type),t&&typeof i.style_ref<"u"&&(s.style=t[i.style_ref]),typeof i.note<"u"&&(s.note=i.note),typeof i.hyperlink<"u"&&(s.hyperlink=i.hyperlink),this.data[i.row][i.column]&&this.data[i.row][i.column].area&&(s.area=this.data[i.row][i.column].area),this.data[i.row][i.column]=s,i.area){let n=new y(i.area.start,i.area.end);for(let a=n.start.row;a<=n.end.row;a++)for(let o=n.start.column;o<=n.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new se),this.data[a][o].area=n}if(i.table&&r.push({...i.table}),i.merge_area){let n=new y(i.merge_area.start,i.merge_area.end);for(let a=n.start.row;a<=n.end.row;a++)for(let o=n.start.column;o<=n.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new se),this.data[a][o].merge_area=n}i.validation&&(s.validation=i.validation)}for(let i of r)for(let s=i.area.start.row;s<=i.area.end.row;s++)for(let n=i.area.start.column;n<=i.area.end.column;n++)this.data[s]||(this.data[s]=[]),this.data[s][n]||(this.data[s][n]=new se),this.data[s][n].table=i;this.rows_=this.data.length,this.columns_=this.data.reduce((i,s)=>Math.max(i,s.length),0)}toJSON(e={}){let t=0,r=0,i=this.data.length-1,s;e.subset&&(t=e.subset.start.column,r=e.subset.start.row,i=e.subset.end.row);let n=[],a=-1,o=-1,l={},d={};for(let u=r;u<=i;u++)if(this.data[u]){let h=this.data[u];s=h.length-1,e.subset&&(s=e.subset.end.column);for(let f=t;f<=s;f++){let p=h[f],m=p&&p.merge_area&&p.merge_area.start.row===u&&p.merge_area.start.column===f,_=p&&p.area&&p.area.start.row===u&&p.area.start.column===f,b=p&&p.table&&p.table.area.start.row===u&&p.table.area.start.column===f,g=p?p.type===2&&!p.value:!0;if(p&&(!g||e.preserve_empty_strings)&&(m||p.type||p.calculated_type&&e.expand_arrays||p.calculated_type&&e.calculated_value||p.validation||e.decorated_cells&&p.style&&(p.style.fill||p.style.border_bottom||p.style.border_top||p.style.border_left||p.style.border_right))){let x={row:u,column:f,value:p.value};p.note&&(x.note=p.note),p.hyperlink&&(x.hyperlink=p.hyperlink),e.preserve_type&&(x.type=p.type),e.sheet_id&&(x.sheet_id=e.sheet_id),e.calculated_value&&typeof p.calculated<"u"&&(x.calculated=p.calculated,(e.preserve_type||p.calculated_type===6)&&(x.calculated_type=p.calculated_type)),p.table&&b&&e.tables&&(x.table=JSON.parse(JSON.stringify(p.table))),p.area&&_&&(x.area=p.area.toJSON()),p.merge_area&&(x.merge_area=p.merge_area.toJSON()),p.validation&&(x.validation=p.validation),e.cell_style_refs&&e.cell_style_refs[f]&&e.cell_style_refs[f][u]&&(x.style_ref=e.cell_style_refs[f][u],e.cell_style_refs[f][u]=0),l[u]=u,d[f]=f,a=Math.max(u,a),o=Math.max(f,o),n.push(x)}}}if(e.nested){let u=Object.keys(l),h=Object.keys(d);if(u.length<=h.length&&u.length){let f={},p=[];for(let m of n){let{row:_,...b}=m;f[m.row]||(f[m.row]=[]),f[m.row].push(b)}for(let m of u){let _=Number(m);p.push({row:_,cells:f[_]})}return{data:p,rows:a,columns:o+1}}else if(h.length){let f={},p=[];for(let m of n){let{column:_,...b}=m;f[m.column]||(f[m.column]=[]),f[m.column].push(b)}for(let m of h){let _=Number(m);p.push({column:_,cells:f[_]})}return{data:p,rows:a,columns:o+1}}}return{data:n,rows:a+1,columns:o+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let r=[],i=this.data.slice(e.row,t.row+1),s=e.column,n=t.column+1;for(let a of i){let o=[];for(let l=s,d=0;l<n;l++,d++){let u=a[l];o.push(u?u.value:void 0)}r.push(o)}return r}GetRange(e,t,r=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let i=[];if(r)for(let s=e.column;s<=t.column;s++){let n=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][s]?n.push(this.data[a][s].GetValue()):n.push(void 0);i.push(n)}else for(let s=e.row;s<=t.row;s++){let n=[];for(let a=e.column;a<=t.column;a++)this.data[s]&&this.data[s][a]?n.push(this.data[s][a].GetValue()):n.push(void 0);i.push(n)}return i}GetRange4(e,t=e,r=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let i=[];if(r)for(let s=e.column;s<=t.column;s++){let n=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][s]?n.push(this.data[a][s].GetValue4()):n.push({type:0});i.push(n)}else for(let s=e.row;s<=t.row;s++){let n=[];for(let a=e.column;a<=t.column;a++)this.data[s]&&this.data[s][a]?n.push(this.data[s][a].GetValue4()):n.push({type:0});i.push(n)}return{type:8,value:i}}Apply(e,t,r=!1){if(z(e)&&(e=new y(e)),e.entire_column||e.entire_row)throw new Error("don't iterate infinite cells");let i=e.start,s=e.end;if(r)for(let n=i.row;n<=s.row;n++){this.data[n]||(this.data[n]=[]);let a=this.data[n];for(let o=i.column;o<=s.column;o++)a[o]||(a[o]=new se),t(a[o],o,n)}else for(let n=i.row;n<=s.row;n++)if(this.data[n]){let a=this.data[n];for(let o=i.column;o<=s.column;o++)a[o]&&t(a[o],o,n)}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let r=e.start.row,i=0;r<=e.end.row;r++,i++){this.data[r]||(this.data[r]=[]);let s=this.data[r];if(t[i])for(let n=e.start.column,a=0;n<=e.end.column;n++,a++)s[n]||(s[n]=new se),s[n].Set(t[i][a])}else{let r=ce(t);for(let i=e.start.row;i<=e.end.row;i++){this.data[i]||(this.data[i]=[]);let s=this.data[i];for(let n=e.start.column;n<=e.end.column;n++)s[n]||(s[n]=new se),s[n].Set(t,r)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let r of t)r&&e(r)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var T=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let i=self?.document?.location;if(i&&i.search&&/locale=([^?&]+?)(?:\?|$|&)/.test(i.search)){let s=i.search.match(/locale=(.*?)(?:\?|$|&)/);s&&(this.locale=s[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let r=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,r),r=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,r),r=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,r),r=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,r),r=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,r),r=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,r),r=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,r),r=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,r),r=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,r),r=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,r),r=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,r),r=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,r)}static UpdateDateComponent(e,t,r){t>=0&&(this.date_components.short_days[t]=r.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=r.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=r.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=r.toLocaleString(this.locale,{month:"long"}))}};k(T,"locale","en-us"),k(T,"decimal_separator","."),k(T,"argument_separator",","),k(T,"grouping_separator",","),k(T,"date_components",{short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]});T.UpdateLocale();var F=class{constructor(e=0,t=0,r=0,i=0){this.left=e;this.top=t;this.width=r;this.height=i}get right(){return this.left+this.width}get bottom(){return this.top+this.height}static Create(e){return new F(e.left||0,e.top||0,e.width||0,e.height||0)}static IsRectangle(e){return typeof e=="object"&&typeof e?.left=="number"&&typeof e?.top=="number"&&typeof e?.width=="number"&&typeof e?.height=="number"}Shift(e=0,t=0){return new F(this.left+e,this.top+t,this.width,this.height)}Scale(e=1,t=e){return new F(this.left*e,this.top*t,this.width*e,this.height*t)}Expand(e=0,t=0){return new F(this.left,this.top,this.width+e,this.height+t)}Combine(e){return new F(Math.min(this.left,e.left),Math.min(this.top,e.top),Math.max(this.right,e.right)-Math.min(this.left,e.left),Math.max(this.bottom,e.bottom)-Math.min(this.top,e.top))}CheckEdges(e,t,r=16){let i=0;return e-this.left<r&&(i|=1),this.right-e<r&&(i|=2),t-this.top<r&&(i|=4),this.bottom-t<r&&(i|=8),i}Contains(e,t,r=0){return e>=this.left-r&&e<=this.left+this.width+r&&t>=this.top-r&&t<=this.top+this.height+r}ContextFill(e){e.fillRect(this.left,this.top,this.width,this.height)}ContextStroke(e){e.strokeRect(this.left,this.top,this.width,this.height)}Clamp(e,t){return e=Math.min(Math.max(e,this.left),this.right),t=Math.min(Math.max(t,this.top),this.bottom),{x:e,y:t}}ApplyStyle(e){e.style.top=this.top+"px",e.style.left=this.left+"px",e.style.width=this.width+"px",e.style.height=this.height+"px"}toJSON(){return{top:this.top,left:this.left,width:this.width,height:this.height}}};var A;(f=>{let c=JSON.stringify({}),e;(g=>(g.None="",g.Left="left",g.Center="center",g.Right="right"))(e=f.HorizontalAlign||={});let t;(g=>(g.None="",g.Top="top",g.Bottom="bottom",g.Middle="middle"))(t=f.VerticalAlign||={}),f.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},f.CompositeBorders=p=>({top:{width:p.border_top||0,color:p.border_top_fill||{}},left:{width:p.border_left||0,color:p.border_left_fill||{}},right:{width:p.border_right||0,color:p.border_right_fill||{}},bottom:{width:p.border_bottom||0,color:p.border_bottom_fill||{}}}),f.Merge=(p,m,_=!0)=>{let b=_?{...p,...m}:{...m};return JSON.parse(JSON.stringify(b))},f.Composite=p=>JSON.parse(JSON.stringify(p.reduce((m,_)=>({...m,..._}),{}))),f.Empty=p=>JSON.stringify(p)===c,f.ValidColor=p=>!!(p&&!p.none&&(p.text||p.theme||p.theme===0)),f.ParseFontSize=(p="",m="em")=>{let _=p.match(/(-*[\d.]+)\s*(\S*)/);if(_){let b=Number(_[1]);if(!b||isNaN(b)||b<0)return{};let g=_[2].toLowerCase()||m;if(g==="pt"||g==="em"||g==="%"||g==="px")return{font_size:{unit:g,value:b}}}return{}},f.RelativeFontSize=(p,m)=>{let _=12,b=12;switch(p.font_size?.unit){case"pt":if(!p.font_size.value)return 1;b=p.font_size.value;break;case"px":if(!p.font_size.value)return 1;b=Math.round(p.font_size.value*300/4)/100;break;case"em":return p.font_size.value||1;case"%":return(p.font_size.value||100)/100;default:return 1}switch(m.font_size?.unit){case"pt":if(!m.font_size.value)return 1;_=m.font_size.value;break;case"px":if(!m.font_size.value)return 1;_=Math.round(m.font_size.value*300/4)/100;break;default:return 1}return b/_},f.FontSize=(p,m=!0)=>{let _=p.font_size?.value;switch(p.font_size?.unit){case"pt":return(_||12)+"pt";case"px":return m?Math.round((_||16)*300/4)/100+"pt":(_||16)+"px";case"em":return(_||1)+"em";case"%":return(_||100)+"%"}return""},f.Font=(p,m=1)=>{let _=[];return p.bold&&_.push("bold"),p.italic&&_.push("italic"),_.push(((p.font_size?.value||0)*m).toFixed(2)+(p.font_size?.unit||"pt")),_.push(p.font_face||""),_.join(" ")}})(A||={});var cr=c=>!!c&&Array.isArray(c)&&Array.isArray(c[0]),q=(c,e)=>(typeof e>"u"&&(e=ce(c)),{value:c,type:e}),fe=c=>c.imaginary?{type:7,value:c}:{type:3,value:c.real};var dr=class{Darken(e,t,r,i,s=!1){let{h:n,s:a,l:o}=this.RGBToHSL(e,t,r);return s?o-=o*i/100:o-=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(n,a,o)}Lighten(e,t,r,i,s=!1){let{h:n,s:a,l:o}=this.RGBToHSL(e,t,r);return s?o+=o*i/100:o+=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(n,a,o)}RGBToHSL(e,t,r){e/=255,t/=255,r/=255;let i=Math.max(e,t,r),s=Math.min(e,t,r),n=0,a=0,o=(i+s)/2;if(i===s)n=a=0;else{let l=i-s;switch(a=o>.5?l/(2-i-s):l/(i+s),i){case e:n=(t-r)/l+(t<r?6:0);break;case t:n=(r-e)/l+2;break;case r:n=(e-t)/l+4;break}n/=6}return{h:n*360,s:a,l:o}}HSLToRGB(e,t,r){let i,s,n;if(t===0)i=s=n=r;else{e=e/360;let a=r<.5?r*(1+t):r+t-r*t,o=2*r-a;i=this.HueToRGB(o,a,e+1/3),s=this.HueToRGB(o,a,e),n=this.HueToRGB(o,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(s*255),b:Math.round(n*255)}}HueToRGB(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}},Ie=new dr;var Ct={grid_color:"#ccc",note_marker_color:"#d2c500",mode:"light",offset_cache:{},offset_light:"#fff",offset_dark:"#000"},_e=(c,e)=>U(c,e,0),ls=(c,e,t)=>{c.mode==="dark"&&(t=-t),c.tint_cache||(c.tint_cache=[]),c.tint_cache[e]||(c.tint_cache[e]={});let r=c.tint_cache[e][t];if(!r){let i=(c.theme_colors_rgb?c.theme_colors_rgb[e]:[0,0,0])||[0,0,0],s;t>0?s=Ie.Lighten(i[0],i[1],i[2],t*100,!0):s=Ie.Darken(i[0],i[1],i[2],-t*100,!0),r=`rgb(${s.r},${s.g},${s.b})`,c.tint_cache[e][t]=r}return r},U=(c,e,t)=>{if(e?.offset){if(e.offset.offset)return console.warn("invalid offset color"),"";let r=U(c,e.offset);if(c.offset_cache&&c.offset_cache[r])return c.offset_cache[r];let i=c.offset_light;if(r){let s=r.match(/rgb\((\d+), (\d+), (\d+)\)/);s?Ie.RGBToHSL(Number(s[1]),Number(s[2]),Number(s[3])).l>.65&&(i=c.offset_dark):console.warn("can't offset against color",r),c.offset_cache||(c.offset_cache={}),c.offset_cache[r]=i}else console.warn("can't resolve offset color",e.offset);return i}return e?.text?e.text==="none"?"":e.text:e?.theme||e?.theme===0?e.tint?ls(c,e.theme,e.tint):c.theme_colors?c.theme_colors[e.theme]:"":(t||t===0)&&c.theme_colors?c.theme_colors[t]:""},cs=c=>{let e=10,t="pt",r=c.match(/^([\d.]+)(\D.*)$/);return r&&(e=Number(r[1]),t=r[2]),{value:e,unit:t}},ri=c=>{let{value:e,unit:t}=cs(c.fontSize||""),r={fill:{text:c.backgroundColor},text:{text:c.color},font_size:{unit:t,value:e},font_face:c.fontFamily};return/italic/i.test(c.font)&&(r.italic=!0),c.fontWeight==="700"&&(r.bold=!0),r},ds=(c,e)=>{let t=c.grid_cell?.text,r=c.grid_cell?.fill;e.fillStyle=t?.text||"",e.fillRect(0,0,3,3);let i=Ie.RGBToHSL(...Array.from(e.getImageData(1,1,1,1).data));e.fillStyle=r?.text||"",e.fillRect(0,0,3,3);let s=Ie.RGBToHSL(...Array.from(e.getImageData(1,1,1,1).data));return i.l>s.l?"dark":"light"},ur=(c,e=.7)=>{let t={border_top:1,border_top_fill:{theme:c},border_bottom:1,border_bottom_fill:{theme:c}};return{header:{text:{offset:{theme:c}},fill:{theme:c},bold:!0,...t},odd:{fill:{theme:c,tint:e},...t},even:{...t},total:{...t,border_top:2}}},ii=c=>{let e=JSON.parse(JSON.stringify(Ct)),t=(d,u)=>{let h=document.createElement("div");return h.setAttribute("class",u),d.appendChild(h),h},r=(d,u)=>window.getComputedStyle(t(d,u)),i=t(c,""),s=r.bind(0,i),n=s("grid-cells");e.grid_cell=ri(n),e.grid_color=n.stroke||"",n=s("grid-headers"),e.headers=ri(n),e.headers_grid_color=n.stroke,(!e.headers_grid_color||e.headers_grid_color==="none")&&(e.headers_grid_color=e.grid_color),n=s("treb-offset-dark"),n.color&&(e.offset_dark=n.color),n=s("treb-offset-light"),n.color&&(e.offset_light=n.color),n=s("note-marker"),e.note_marker_color=n.backgroundColor,i.style.color="rgba(1,2,3,.4)",n=s("");let a=n.color;e.theme_colors=[e.grid_cell.fill?.text||"rgb(255, 255, 255)",e.grid_cell.text?.text||"rgb(51, 51, 51)"];for(let d=1;d<32&&(n=s(`theme-color-${d}`),!(!n.color||n.color===a));d++)e.theme_colors.push(n.color);let o=document.createElement("canvas");o.width=3,o.height=3;let l=o.getContext("2d",{willReadFrequently:!0});return l&&(e.mode=ds(e,l)),l&&(e.theme_colors_rgb=e.theme_colors.map(d=>{l.fillStyle=d,l.fillRect(0,0,3,3);let u=l.getImageData(1,1,1,1);return Array.from(u.data)})),e.table=ur(4),i.parentElement?.removeChild(i),e};var si={column:0,type:"auto",asc:!0};var ct=/[\s-+=<>!()]/,ci=/['*\\]/,hr=34,fr=39,us=160,ni=32,hs=9,fs=10,ps=13,we=48,st=57,pr=46,mr=43,nt=45,oi=40,_r=41,ot=44,ms=37,br=95,St=36,_s=123,bs=125,at=91,ai=93,ys=33,li=59,gs=35,vs=64,We=65,lt=97,ws=69,xs=101,At=90,Rt=122,Cs=105;var yr=192,gr=312,vr={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},Ss=Object.keys(vr).sort((c,e)=>e.length-c.length),As={"-":100,"+":100},qe=class{argument_separator=",";decimal_mark=".";flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};r1c1_regex=/[rR]((?:\[[-+]{0,1}\d+\]|\d+))[cC]((?:\[[-+]{0,1}\d+\]|\d+))$/;argument_separator_char=ot;decimal_mark_char=pr;imaginary_char=Cs;imaginary_number="i";id_counter=0;expression="";data=[];index=0;length=0;valid=!0;error_position;error;dependencies={addresses:{},ranges:{}};address_refcount={};full_reference_list=[];Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(r=>this.Walk(r,t));return;case"call":t(e)&&e.args.forEach(r=>this.Walk(r,t))}}Transpose(e){let t=e.length,r=[],i=0;for(let s=0;s<t;s++)Array.isArray(e[s])&&(i=Math.max(i,e[s].length));for(let s=0;s<i;s++){r[s]=[];for(let n=0;n<t;n++)r[s][n]=e[n][s]}return r}Render(e,t={}){let r=t.offset||{rows:0,columns:0},i=t.missing??"(missing)",{convert_decimal:s,convert_argument_separator:n,convert_imaginary_number:a,long_structured_references:o,table_name:l}=t,d=this.argument_separator+" ";n===","?d=", ":n===";"&&(d="; ");let u=this.imaginary_number;a&&(u=a);let h=s===","?",":".",f=this.decimal_mark===","?/,/:/\./,p=this.decimal_mark===","?/,/g:/\./g;switch(e.type){case"address":return this.AddressLabel(e,r);case"range":return this.AddressLabel(e.start,r)+":"+this.AddressLabel(e.end,r);case"missing":return i;case"array":return"{"+this.Transpose(e.values).map(m=>m.map(_=>typeof _=="string"?'"'+_+'"':_).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return s?e.text.replace(p,h):e.text;{let m=Math.abs(e.imaginary).toString();if((s===","||this.decimal_mark===",")&&(m=m.replace(/\./,",")),e.real){let _=e.real.toString();(s===","||this.decimal_mark===",")&&(_=_.replace(/\./,","));let b=Math.abs(e.imaginary);return`${_}${e.imaginary<0?" - ":" + "}${b===1?"":m}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${m}i`}break;case"literal":if(typeof e.value=="string")return'"'+e.value.replace(/"/g,'""')+'"';if(s&&typeof e.value=="number")if(e.text){let m=e.text;return s===","&&this.decimal_mark==="."&&(m=m.replace(/,/g,"")),m.replace(f,h)}else return e.value.toString().replace(/\./,h);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(m=>this.Render(m,t)).join(d)+")":e.elements.map(m=>this.Render(m,t)).join(d);case"call":return e.name+"("+e.args.map(m=>this.Render(m,t)).join(d)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let m=e.column;/[^A-Za-z]/.test(m)&&(m="["+m+"]");let _=e.table;switch(!_&&o&&l&&(_=l),e.scope){case"all":return`${_}[[#all],${m}]`;case"row":return o?`${_}[[#this row],${m}]`:`${_}[@${m}]`;case"column":return`${_}[${m}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=li;break;default:this.argument_separator_char=ot;break}switch(this.decimal_mark){case",":this.decimal_mark_char=ot;break;default:this.decimal_mark_char=pr;break}for(let i=0;i<this.length;i++)this.data[i]=e.charCodeAt(i);let t=this.ParseGeneric(),r={};for(let i of Object.keys(this.dependencies.addresses))this.address_refcount[i]&&(r[i]=this.dependencies.addresses[i]);return this.dependencies.addresses=r,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let r=e.column;!e.absolute_column&&e.column!==1/0&&(r+=t.columns);let i=e.row;if(!e.absolute_row&&e.row!==1/0&&(i+=t.rows),i<0||r<0||i===1/0&&r===1/0)return"#REF";let s="";return e.sheet&&(s=(ct.test(e.sheet)?"'"+e.sheet+"'":e.sheet)+"!"),i===1/0?s+(e.absolute_column?"$":"")+this.ColumnLabel(r):r===1/0?s+(e.absolute_row?"$":"")+(i+1):s+(e.absolute_column?"$":"")+this.ColumnLabel(r)+(e.absolute_row?"$":"")+(i+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let r=this.ParseNext(t.length===0);if(typeof r=="number"){if(e.some(i=>r===i))break;if(r===oi){this.index++;let i=this.ParseGeneric([_r]);this.index++,i&&t.push({type:"group",id:this.id_counter++,elements:[i],explicit:!0})}else{let i=this.ConsumeOperator();i?t.push(i):(this.error=`unexpected character [1]: ${String.fromCharCode(r)}, 0x${r.toString(16)}`,this.valid=!1,this.index++)}}else t.push(r)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let r=[],i=n=>n.type==="literal"&&typeof n.value=="number"&&n.value%1===0,s=0;for(;s<t.length-3;s++)if(i(t[s])&&i(t[s+1])&&t[s+2].type==="operator"&&t[s+2].operator==="/"&&i(t[s+3])){let n=t[s],a=t[s+1],o=t[s+3],l=(n.value<0?-1:1)*(a.value/o.value);s+=3,r.push({id:t[s].id,type:"literal",text:this.expression.substring(n.position,o.position+1),value:n.value+l,position:n.position})}else r.push(t[s]);for(;s<t.length;s++)r.push(t[s]);t=r}if(t=t.map(r=>r.type==="identifier"&&r.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:r.position,text:r.name,id:this.id_counter++}:r),this.flags.dimensioned_quantities){let r=[],i;for(let s=0;s<t.length;s++){let n=t[s];if(!i)i=n;else if(n.type==="identifier"&&(i.type==="literal"||i.type==="group"||i.type==="call")){let a=n;for(;t[s+1]?.type==="identifier";)a.name+=" "+t[++s].name;r.push({type:"dimensioned",expression:i,unit:n,id:this.id_counter++}),i=void 0}else r.push(i),i=n}i&&r.push(i),t=r}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,r=e.name,i=r.split("!");if(i.length>1&&(t=i.slice(0,i.length-1).join("!"),r=r.substr(t.length+1),t[0]==="'"))if(t.length>1&&t[t.length-1]==="'")t=t.substr(1,t.length-2);else return;let s=r[0]==="$";r=(s?r.substr(1):r).toUpperCase();let n=Number(r);if(isNaN(n)){if(/[A-Z]{1,3}/.test(r)){let a=-1;for(let o=0;o<r.length;o++){let l=r[o].charCodeAt(0);a=26*(1+a)+(l-We)}return{type:"address",position:e.position,absolute_column:s,label:e.name,column:a,id:this.id_counter++,row:1/0,sheet:t}}}else if(n>0&&n!==1/0&&!/\./.test(r))return{type:"address",position:e.position,absolute_row:s,label:e.name,row:n-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r],s=e[r+1],n=e[r+2],a,o="",l;if(i&&s&&n&&s.type==="operator"&&s.operator===":"){if(i.type==="address"&&n.type==="address"){let d=i.position+i.label.length,u=n.position;a={type:"range",id:this.id_counter++,position:i.position,start:i,end:n,label:i.label+this.expression.substring(d,u)+n.label},o=a.start.label+":"+a.end.label,this.address_refcount[a.start.label]--,this.address_refcount[a.end.label]--;let h=[i.position,n.position];this.full_reference_list=this.full_reference_list.filter(f=>f.position!==h[0]&&f.position!==h[1])}else if((i.type==="literal"||i.type==="identifier")&&(n.type==="literal"||n.type==="identifier")){let d=this.UnitToAddress(i);if(!d&&i.type==="literal"&&typeof i.value=="number"&&i.value<0){let h={...i,text:(i.text||"").replace(/^-/,""),position:i.position+1,value:-i.value};d=this.UnitToAddress(h),d&&(l={type:"operator",operator:"-",position:i.position,id:this.id_counter++})}let u=this.UnitToAddress(n);d&&u&&(d.column===1/0&&u.column===1/0||d.row===1/0&&u.row===1/0)&&(o=d.label+":"+u.label,a={type:"range",id:this.id_counter++,position:d.position,start:d,end:u,label:o})}}a?(l&&t.push(l),t.push(a),this.dependencies.ranges[o]=a,this.full_reference_list.push(a),r+=2):t.push(i)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let r=e.right.imaginary;return e.operator==="-"&&(r=-r),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:r,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,r="";if(e.left.type==="address"&&e.right.type==="address"){let i=e.left.position+e.left.label.length,s=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(i,s)+e.right.label},r=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let n=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(a=>a.position!==n[0]&&a.position!==n[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let i=this.UnitToAddress(e.left),s=this.UnitToAddress(e.right);i&&s&&(i.column===1/0&&s.column===1/0||i.row===1/0&&s.row===1/0)&&(r=i.label+":"+s.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:i,end:s,label:r})}if(t)return this.dependencies.ranges[r]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(As[i.operator]){let s=this.BinaryToComplex(this.ArrangeUnits(e.slice(r+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};s.type==="binary"?(s.left={type:"unary",id:this.id_counter++,operator:i.operator,operand:s.left,position:i.position},i=s):i={type:"unary",id:this.id_counter++,operator:i.operator,operand:s,position:i.position},r=e.length}else return this.error=`unexpected character [2]: ${i.operator}`,this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(i);continue}if(t.length<2)t.push(i);else if(t[t.length-1].type==="operator"){let s=t[t.length-2],n=t[t.length-1],a=n.operator,o={type:"binary",id:this.id_counter++,left:s,operator:a,position:n.position,right:i};s.type==="binary"&&vr[a]>vr[s.operator]&&(o.left=s.left,o.operator=s.operator,o.position=s.position,o.right={type:"binary",id:this.id_counter++,left:s.right,right:i,operator:a,position:n.position}),t.splice(-2,2,o)}else return this.error="multiple expressions",this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===hr)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=we&&t<=st||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===_s)return this.ConsumeArray();if(e&&(t===nt||t===mr)){let r=this.data[this.index+1];if(r>=we&&r<=st||r===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=We&&t<=At||t>=lt&&t<=Rt||t===br||t===gs||t===fr||t===St||t===at||t>=yr&&t<=gr)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,r=0;for(;this.index<this.length;){let i=this.ParseNext(),s=this.index;if(typeof i=="number")switch(this.index++,i){case li:r++,t=0;break;case ot:t++;break;case bs:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=s,this.valid=!1);break}else switch(i.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][r]=i.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=s,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of Ss)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let r=this.ParseGeneric([this.argument_separator_char,_r]);r!==null&&t.push(r);let i=this.data[this.index];if(i===this.argument_separator_char){this.index++,e++;for(let s=t.length;s<e;s++)t.push({type:"missing",id:this.id_counter++})}else if(i===_r)return this.index++,t}return t}ConsumeToken(e){let t=[e],r=this.index,i=e===fr,s=0,n=!1;for(e===at&&(s=1,n=!0),++this.index;this.index<this.length;this.index++){let d=this.data[this.index];if(d>=We&&d<=At||d>=lt&&d<=Rt||d>=yr&&d<=gr||d===br||d===St||d===pr||d===ys||i||d>=we&&d<=st||d===at||s>0&&d===ai||d===nt&&this.flags.r1c1&&s===1||s>0&&d===vs&&this.data[this.index-1]===at||s===1&&(d===ot||d===ni)||s>1)t.push(d),d===at&&(s++,n=!0),d===ai&&s--,d===fr&&(i=!1);else break}let a=t.map(d=>String.fromCharCode(d)).join("");if(i)return this.error="unbalanced single quote",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(s)return this.error="unbalanced square bracket",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(a.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:r};if(a.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:r};if(this.ConsumeWhiteSpace(),this.data[this.index]===oi){let d=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:a,args:d,position:r}}if(this.flags.spreadsheet_semantics){let d=this.ConsumeAddress(a,r);if(d)return d;if(n){let u=this.ConsumeStructuredReference(a,r);if(u)return u}}let l={type:"identifier",id:this.id_counter++,name:a,position:r};return this.full_reference_list.push(l),l}ConsumeStructuredReference(e,t){let r=t,i=e.length,s=e,n="",a=0;for(;a<i;a++){if(e[a]==="["){e=e.substring(a);break}n+=e[a]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let o=e.split(",").map(h=>h.trim()),l="column",d="";if(o.length>2)return;o.length===2?(/\[#this row\]/i.test(o[0])?l="row":/\[#all\]/i.test(o[0])&&(l="all"),d=o[1]):(d=o[0],d[0]==="@"&&(l="row",d=d.substring(1,d.length))),d[0]==="["&&d[d.length-1]==="]"&&(d=d.substring(1,d.length-1));let u={type:"structured-reference",id:this.id_counter++,label:s,position:t,scope:l,column:d,table:n};return this.full_reference_list.push(u),u}ConsumeAddress(e,t){let r=t,i=e.length,s,n=e.split("!");if(n.length>1&&(s=n.slice(0,n.length-1).join("!"),t+=s.length+1),this.flags.r1c1){let u=n[n.length-1].match(this.r1c1_regex);if(u){let h={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:r,sheet:s,r1c1:!0};return u[1][0]==="["?(h.offset_row=!0,h.row=Number(u[1].substring(1,u[1].length-1))):h.row=Number(u[1])-1,u[2][0]==="["?(h.offset_column=!0,h.column=Number(u[2].substring(1,u[2].length-1))):h.column=Number(u[2])-1,h}}let a=this.ConsumeAddressColumn(t);if(!a)return null;t=a.position;let o=this.ConsumeAddressRow(t);if(!o)return null;t=o.position;let l=s?s+e.substr(s.length,t-r).toUpperCase():e.substr(0,t-r).toUpperCase();s&&s[0]==="'"&&(s=s.substr(1,s.length-2));let d={type:"address",id:this.id_counter++,label:l,row:o.row,column:a.column,absolute_row:o.absolute,absolute_column:a.absolute,position:r,sheet:s};return i!==t-r?null:(this.dependencies.addresses[d.label]=d,this.address_refcount[d.label]=(this.address_refcount[d.label]||0)+1,this.full_reference_list.push(d),d)}ConsumeAddressRow(e){let t=this.data[e]===St;t&&e++;let r=e,i=0;for(;;e++){let s=this.data[e];if(s>=we&&s<=st)i*=10,i+=s-we;else break}return r===e?!1:{absolute:t,row:i-1,position:e}}ConsumeAddressColumn(e){let t=-1,r=0,i=this.data[e]===St;for(i&&e++;;e++,r++){if(r>=4)return!1;let s=this.data[e];if(s>=We&&s<=At)t=26*(1+t)+(s-We);else if(s>=lt&&s<=Rt)t=26*(1+t)+(s-lt);else break}return t<0?!1:{absolute:i,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,r=!1,i=!1,s=0,n=0,a=0,o="integer",l=0,d=!1,u=this.index;for(;this.index<this.length;this.index++,l++){let f=this.data[this.index];if(f===this.decimal_mark_char)if(o==="integer")o="fraction";else break;else if(f===ms){s/=100,a/=100,this.index++;break}else if(f===mr||f===nt)if(l===0)f===nt&&(i=!0);else break;else if(f===ws||f===xs)if(o==="integer"||o==="fraction")o="exponent",this.index<this.length-1&&(this.data[this.index+1]===mr?this.index++:this.data[this.index+1]===nt&&(this.index++,r=!0));else break;else if(f===this.imaginary_char){let p=this.data[this.index+1];if(p>=We&&p<=At||p>=lt&&p<=Rt||p>=yr&&p<=gr||p===br)break;if(o==="integer"||o==="fraction"){this.index++,d=!0;break}}else if(f>=we&&f<=st)switch(o){case"integer":s=s*10+(f-we);break;case"fraction":a=a*10+(f-we),n++;break;case"exponent":t=t*10+(f-we);break}else break}let h=s+a/Math.pow(10,n);return o==="exponent"&&(h=h*Math.pow(10,(r?-1:1)*t)),d?{type:"complex",id:this.id_counter++,position:e,imaginary:i?-h:h,real:0,text:this.expression.substring(u,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:i?-h:h,text:this.expression.substring(u,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===hr&&(this.index++,this.index>=this.length||this.data[this.index]!==hr))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===ni||e===hs||e===fs||e===ps||e===us)this.index++;else return}}};var di=(c,e=",")=>{let t=0,r=[],i="",s=[],n=c.length;if(/[\r\n"]/.test(e))throw new Error("invalid delimiter");for(let a=0;a<n;a++){let o=c[a];if(!(a===0&&o.charCodeAt(0)===65279))if(t===0)switch(o){case e:r.push(i),i="";break;case"\r":break;case`
|
|
3
3
|
`:r.push(i),i="",s.push(r),r=[];break;case'"':i.length===0?t=1:i+=o;break;default:i+=o;break}else o==='"'?a+1<n&&c[a+1]==='"'?(i+='"',a++):t=0:i+=o}return(r.length||i.length)&&(r.push(i),s.push(r)),s};var Cr=class{constructor(){}static get instance(){return this._instance}HTML(e){let t=[];for(let r of e){let i=[];for(let s of r)s.pre&&i.push("<pre>"),s.emphasis&&i.push("<em>"),s.strong&&i.push("<strong>"),s.strike&&i.push("<strike>"),i.push(s.text),s.strike&&i.push("</strike>"),s.strong&&i.push("</strong>"),s.emphasis&&i.push("</em>"),s.pre&&i.push("</pre>");t.push(i.join(""))}return t.join(`<br/>
|
|
4
4
|
`)}Dummy(e=""){return e.split(/\n/).map(t=>[{text:t}])}Parse(e=""){let t=this.Tokenize(e);for(let r=0;r<t.length;r++){let i=t[r];if(i.type==="delimeter"){let s=t[r-1],n=t[r+1],a=!s||s.type==="whitespace"||s.type==="newline",o=s&&s.type==="text"&&/[^\w\d]$/.test(s.text),l=!n||n.type==="whitespace"||n.type==="newline",d=n&&n.type==="text"&&/^[^\w\d]/.test(n.text);i.left_flanking=!l&&(!d||a),i.right_flanking=!a&&(!o||l)}}return this.ApplyFormatting(t),this.Consolidate(t)}IsWhitespace(e){return e===" "||e===" "}IsNewline(e){return e==="\r"||e===`
|
|
5
|
-
`}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],r={},i=[],s={type:"text",text:""};for(let n of e)if(n.type==="newline")s.text.length&&i.push(s),s={...r,text:"",type:"text"},t.push(i),i=[];else switch((!!r.strong!=!!n.strong||!!r.emphasis!=!!n.emphasis||!!r.strike!=!!n.strike)&&(r.strong=!!n.strong,r.emphasis=!!n.emphasis,r.strike=!!n.strike,s.text.length&&i.push(s),s={...r,text:"",type:"text"}),n.type){case"text":case"whitespace":s.text+=n.text;break;case"delimeter":for(let a=0;a<n.length;a++)s.text+=n.char;break}return s.text.length&&i.push(s),i.length&&t.push(i),t}ApplyFormatting(e,t){let r=0,i=e.length;for(r=0;r<i;r++){let s=e[r];if(s.type==="delimeter"){if(t&&s.right_flanking&&t.char===s.char&&s.length>0)return{index:r,token:s};if(s.left_flanking){let n=this.ApplyFormatting(e.slice(r+1),s);if(n.token){let a=Math.min(n.token.length,s.length),o=s.char==="~",l=!o&&!!(a%2),d=!o&&a>=2;for(let u=r+1;u<=r+n.index;u++)e[u].strong=!!e[u].strong||d,e[u].emphasis=!!e[u].emphasis||l,e[u].strike=!!e[u].strike||o;n.token.length-=a,s.length-=a,s.length>0?r--:r+=n.index}}}}return{index:r}}Tokenize(e=""){let t=[],r=e.length,i=0,s=!1,n="";for(i=0;i<r;i++){let a=e[i];if(this.IsWhitespace(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(this.IsWhitespace(l))o+=l,i++;else break}t.push({type:"whitespace",text:o}),s=!1,n=""}else if(this.IsNewline(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(this.IsNewline(l))o+=l,i++;else break}t.push({type:"newline",text:o}),s=!1,n=""}else if(s)n+=a,s=!1;else if(this.IsDelimeter(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(l===a)o+=l,i++;else break}t.push({type:"delimeter",text:o,char:a,length:o.length}),s=!1,n=""}else a==="\\"?s=!0:n+=a}return n&&t.push({type:"text",text:n}),t}},xe=Cr;k(xe,"_instance",new Cr);var ne=()=>Promise.resolve();var As=1e3,te=class{constructor(e=!1,t){this.verbose=e;this.log_id=t}queue=[];dispatched=!1;subscribers=[];Publish(e){this.verbose&&console.info(`es publish (${this.log_id})`,e),Array.isArray(e)?this.queue.push(...e):this.queue.push(e),this.dispatched||(this.dispatched=!0,ne().then(()=>{let t=this.queue.slice(0);this.dispatched=!1,this.queue=[];for(let r of t)for(let i of this.subscribers)i.subscriber(r)}))}Subscribe(e){let t=As++;return this.subscribers.push({subscriber:e,token:t}),t}Cancel(e){this.subscribers=this.subscribers.filter(t=>t.token!==e)}CancelAll(){this.subscribers=[]}};var B=class{constructor(e,t,r,i=e){B.Create({container:e,node:t,resize_callback:r,layout_reference:i})}static Create(e){let t=document.createElement("div");if(t.classList.add("treb-embed-resize-handle"),(e.layout_reference||e.container).appendChild(t),!B.resize_mask){let l=document.querySelector(".treb-embed-mouse-mask");l||(l=document.createElement("div"),l.classList.add("treb-embed-mouse-mask"),document.body.appendChild(l)),B.resize_mask=l}if(!B.resize_rect){let l=document.querySelector(".treb-embed-resize-rect");l||(l=document.createElement("div"),l.classList.add("treb-embed-resize-rect"),B.resize_mask.appendChild(l)),B.resize_rect=l}let r,i,s={width:0,height:0},n={x:0,y:0},a={x:0,y:0},o=()=>{if(B.resize_mask.removeEventListener("mousemove",i),B.resize_mask.removeEventListener("mouseup",r),B.resize_mask.style.display="none",a.x||a.y){let l=e.container.getBoundingClientRect(),d=l.width+a.x,u=l.height+a.y;e.container.style.width=`${d}px`,e.container.style.height=`${u}px`,e.resize_callback&&e.resize_callback()}};i=l=>{if(!l.buttons){o();return}a.x!==l.clientX-n.x&&(a.x=l.clientX-n.x,B.resize_rect.style.width=`${s.width+a.x+4}px`),a.y!==l.clientY-n.y&&(a.y=l.clientY-n.y,B.resize_rect.style.height=`${s.height+a.y+4}px`)},r=()=>{o()},t.addEventListener("mousedown",l=>{l.stopPropagation(),l.preventDefault();let d=e.node.getBoundingClientRect();s={width:d.width,height:d.height},B.resize_rect&&(B.resize_rect.style.top=`${d.top-2}px`,B.resize_rect.style.left=`${d.left-2}px`,B.resize_rect.style.width=`${d.width+4}px`,B.resize_rect.style.height=`${d.height+4}px`),n={x:l.clientX,y:l.clientY},a={x:0,y:0},B.resize_mask.style.display="block",B.resize_mask.addEventListener("mousemove",i),B.resize_mask.addEventListener("mouseup",r)})}},qe=B;k(qe,"resize_mask"),k(qe,"resize_rect");var re=class{static MeasureColorARGB(e){let t=this.MeasureColor(e),r="FF";for(let i=0;i<3;i++){let s=t[i].toString(16);s.length===0?r+="00":s.length===1?r+=`0${s}`:r+=s}return r.toUpperCase()}static MeasureColor(e){let t=this.color_cache[e];if(t)return t;this.color_measurement_canvas||(this.color_measurement_canvas=document.createElement("canvas"),this.color_measurement_canvas.width=1,this.color_measurement_canvas.height=1);let r=this.color_measurement_canvas.getContext("2d",{willReadFrequently:!0});return r?(r.fillStyle="#fff",r.fillRect(0,0,1,1),r.fillStyle=e,r.fillRect(0,0,1,1),t=new Uint8ClampedArray(r.getImageData(0,0,1,1).data),this.color_cache[e]=t,t):new Uint8ClampedArray(3)}static EnsureMeasurementNode(){if(!this.text_measurement_node){let e=document.querySelector(".treb-chart-measurement-node");e?this.text_measurement_node=e:(this.text_measurement_node=document.createElement("div"),this.text_measurement_node.classList.add("treb-chart-measurement-node"),this.text_measurement_node.style.margin="0px",this.text_measurement_node.style.padding="0px",this.text_measurement_node.style.height="initial",this.text_measurement_node.style.width="initial",this.text_measurement_node.style.whiteSpace="nowrap",this.text_measurement_node.style.position="fixed",this.text_measurement_node.style.border="0px",this.text_measurement_node.style.border="1px solid red",this.text_measurement_node.style.boxSizing="content-box",this.text_measurement_node.style.top=this.text_measurement_node.style.left="-1000px",document.body.appendChild(this.text_measurement_node))}}static FontLoaded(e,t=!1,r=400){let i=`${t?"italic":""} ${r} 20pt ${e}`,s=this.MeasureText(`${i}, sans-serif`,"check font"),n=this.MeasureText(`${i}, serif`,"check font"),a=this.MeasureText(`${i}, monospace`,"check font");return s.width===n.width&&n.width===a.width}static MeasureText(e,t,r=0){this.EnsureMeasurementNode(),this.text_measurement_node.style.font=e,/\n/.test(t)?(t=t.replace(/\n/g,"<BR/>"),this.text_measurement_node.innerHTML=t):this.text_measurement_node.textContent=t,this.text_measurement_node.style.lineHeight="1em",r?this.text_measurement_node.style.transform=`rotate(${r}deg)`:this.text_measurement_node.style.transform="";let i=this.text_measurement_node.getBoundingClientRect();return{width:i.width,height:i.height}}};k(re,"color_measurement_canvas"),k(re,"text_measurement_node"),k(re,"color_cache",{});var Sr,Rs=(c,e,t)=>{let r={};return Array.prototype.forEach.call(e,i=>{e[i]!==t[i]&&(r[i]=e[i])}),(Object.keys(r).map(i=>`${i}: ${r[i]}`).join("; ")+"; "+(c.getAttribute("style")||"")).trim().replace(/"/g,"'")},ui=(c,e)=>{let t=c.cloneNode(!1),r=getComputedStyle(c),i=Rs(c,r,e);return t.removeAttribute("class"),t.setAttribute("style",i),Array.prototype.forEach.call(c.childNodes,s=>{switch(s.nodeType){case Node.ELEMENT_NODE:t.appendChild(ui(s,r));break;case Node.TEXT_NODE:c.textContent&&t.appendChild(document.createTextNode(c.textContent));break;case Node.COMMENT_NODE:break;default:console.warn("unhandled node type in serialize",s)}}),t},hi=c=>{if(!Sr){let e={},t=document.createElement("iframe");t.style.width="10px",t.style.height="10px",t.style.position="absolute",t.style.left="-100px",document.body.appendChild(t);let r=t.contentDocument;if(r){let i=r.createElement("div");r.body.appendChild(i);let s=getComputedStyle(i);Array.prototype.forEach.call(s,n=>e[n]=s[n])}document.body.removeChild(t),Sr=e}return ui(c,Sr)};var ks={data:!0,same_origin:!0,remote:!1},Et=(c,e={})=>{let t={...ks,...e};try{let r=new URL(c,document.location.href);return r.protocol==="data:"?t.data?r.href:void 0:r.origin===document.location.origin?t.same_origin?r.href:void 0:t.remote?r.hash:void 0}catch(r){console.error(r)}};var pi=(c,e,t=6.5,r=!1,i=!1)=>{if(e===c)e++,c&&c--;else{let u=Math.round(e*1e5)/1e5;Math.abs(u-e)/(e-c)<1e-5&&(e=u)}let s=e-c,n=Math.log(s)/Math.log(10),a=Math.floor(Math.abs(n))*(n<0?-1:1)-1;i&&(a=Math.max(0,a));let o=i?[1,2,5,10,15,20,25,50,100]:[.1,.25,.5,1,2.5,5,10,25,50,100],l=-1,d=0;for(let u of o){let h=u*Math.pow(10,a),p=Math.floor(c/h)*h,m=(Math.ceil(e/h)*h-p)/h,_=Math.abs(m-t);(l<0||_<d)&&(!r||m<=t)&&(d=_,l=h)}return c=Math.floor(c/l)*l,e=Math.ceil(e/l)*l,t=Math.round((e-c)/l),{scale:a,step:l,count:t,min:c,max:e}};var fi=(c,e,t)=>{[].forEach.call(c.children,r=>{r.id&&(t[r.id]=r,r.id=`${e}-${r.id}`),r.children&&r.children.length&&fi(r,e,t)})},Es=(c,e)=>{let t=Math.random().toString(36).substring(2,15),r=document.createElement("div");r.innerHTML=c;let i={};if(fi(r,t,i),typeof e=="string"&&(e=document.querySelector(e)),e){let s=[].map.call(r.childNodes,n=>n);for(let n of s)e.appendChild(n)}return i},Tt=(c,...e)=>{let t=[];for(let r=0;r<c.length;r++)t.push(c[r]),e[r]&&t.push(e[r].toString());return t.join("")},Ut=(c,...e)=>Es(Tt(c,...e));var Ce=class{date_format=!1;string_format=!1;fraction_format=!1;twelve_hour=!1;fraction_denominator=0;fraction_integer=!0;fraction_align=0;fraction_denominator_digits=0;integer_min_digits=0;decimal_min_digits=0;decimal_max_digits=0;grouping=!1;has_number_format=!1;prefix=[{text:""}];suffix=[{text:""}];scaling=0;percent=!1;exponential=!1;has_asterisk=!1};var mi=42,_i=95,Ar=63,Mt=48,bi=46,Rr=44,yi=37,kr=34,ut=35,gi=59,Lt=92,vi=64,Ts=91,Us=93,wi=69,xi=101,Ms=72,Ls=104,Ds=77,Is=109,Vs=83,Fs=115,zs=68,Ps=100,Ns=89,Os=121,Gs=65,Hs=97;var de=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new Ce,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new Ce,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case Lt:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case kr:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case Lt:throw new Error("invalid escape character in formatting block");case Us:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\/([#?0-9]+)(?:$|[^#?0-9])/,r=this.pattern.substr(this.char_index).match(e);if(!r)return!1;let i=(r[1]||"").length+r[2].length+r[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!r[1];let s=Number(r[3]);return isNaN(s)||(this.current_section.fraction_denominator=s),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=r[3].length,this.char_index+=i,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let r=!1;for(let i=this.char_index+1;!r&&i<this.characters.length;i++){let s=this.characters[i];if(s===this.decimal_mark||s===ut||s===Mt)r=!0;else if(s!==Rr)break}if(r){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case ut:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case Mt:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===Ar||e===ut)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case gi:this.char_index++,this.current_section=new Ce,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case vi:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case Mt:case ut:case bi:case Rr:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case Ts:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case kr:this.AppendString(this.ConsumeString());break;case Ar:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case _i:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case mi:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case xi:case wi:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case yi:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case Lt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let r=t-1;r;r--){let i=this.sections[0].prefix[r];if(i.flag===3){/h/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let r=t+1;r<this.sections[0].prefix.length;r++){let i=this.sections[0].prefix[r];if(i.flag===3){/s/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),r={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)r.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(r.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)r.text+=this.pattern[this.char_index++];return r}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case gi:this.char_index=this.characters.length;break;case Mt:case ut:case xi:case wi:case yi:case vi:this.date_pattern=!1;break;case Ms:case Ls:case Ds:case Is:case Vs:case Fs:case zs:case Ps:case Ns:case Os:this.AppendTextPart(this.ConsumeDatePart());break;case Gs:case Hs:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case kr:this.AppendString(this.ConsumeString());break;case Ar:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case _i:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case mi:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case Lt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};k(de,"date_pattern",!1),k(de,"pattern",""),k(de,"char_index",0),k(de,"characters",[]),k(de,"sections",[]),k(de,"current_section",new Ce),k(de,"preserve_formatting_characters",!1),k(de,"decimal_mark",bi),k(de,"group_separator",Rr);var Pe=c=>(c>=60&&c--,new Date(-22090752e5+864e5*c)),Xe=(c,e=!0)=>{if(e){let t=new Date(c),r=new Date;r.setUTCMilliseconds(t.getUTCMilliseconds()),r.setUTCSeconds(t.getUTCSeconds()),r.setUTCMinutes(t.getUTCMinutes()),r.setUTCHours(t.getHours()),r.setUTCDate(t.getDate()),r.setUTCMonth(t.getMonth()),r.setUTCFullYear(t.getFullYear()),c=r.getTime()}return c=(c+22090752e5)/864e5,c>=60&&c++,c},Se=class{magic_decimal=!1;transform_value;_pattern="";sections;decimal_zero_regexp=[];cloned=[];get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}constructor(e){if(this._pattern=e,this.sections=de.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new Ce),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}static FormatPartsAsText(e,t=0){let r=-1,i=e.map((s,n)=>{switch(s.flag){case 2:return r=n,s.text;case 1:return s.text.replace(/./g," ");case 6:return"";default:return s.text}});if(r>=0&&t){let s=i.reduce((a,o,l)=>l===r?a:a+o.length,0),n="";for(let a=0;a<t-s;a++)n+=i[r];i[r]=n}return i.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",r=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let i="";for(let s=0;s<e.fraction_denominator_digits;s++)i+="#";t+=i,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=i}else if(e.has_number_format){for(r=0;r<e.integer_min_digits;r++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\d#]{1,3}(?=([\d#]{3})+(?![\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",r=0;r<e.decimal_min_digits;r++)t+="0";for(;r<e.decimal_max_digits;r++)t+="#"}if(e.scaling){let i=Math.log10(e.scaling)/3;for(r=0;r<i;r++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.flag===6?"["+i.text+"]":i.text).join("")+t+e.suffix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let r=this.transform_value(e);if(ar(r))e=r;else return typeof r=="string"?r:this.FormatParts(r)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],r=[],i=!1,s=!!e.imaginary;s&&(t=this.FormatParts(e.imaginary),s=t.some(o=>/[1-9]/.test(o.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",i=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",i=!0));let n=!!e.real;n&&(r=this.FormatParts(e.real),n=r.some(o=>/[1-9]/.test(o.text)));let a=[];if(n||!n&&!s){if(a.push(...r),s){let o=Math.abs(e.imaginary);a.push({text:e.imaginary<0?` ${Se.minus_character} `:" + "});let l=i?[]:this.FormatParts(Math.abs(e.imaginary));a.push(...l,{text:Se.imaginary_character})}}else s&&a.push(...t,{text:Se.imaginary_character});return a}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:r}=this.BaseFormat(e),i=[];if(r.date_format||r.string_format)for(let s of t)typeof s=="string"?i.push({text:s}):i.push(s);else this.magic_decimal&&t[1]===""&&t.splice(1,1),i=[...r.prefix.map(s=>({...s})),{text:r.has_number_format?t.join(T.decimal_separator):""},...r.suffix.map(s=>({...s}))];for(let s=1;s<i.length;s++)i[s].flag===i[s-1].flag&&(i[s].text=i[s-1].text+i[s].text,i[s-1].text="");return i.filter(s=>s.text)}Format(e,t=0){return Se.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=Pe(e),r=this.sections[0],i=t.getUTCHours();return r.twelve_hour&&(i>12&&(i-=12),i===0&&(i=12)),{parts:r.prefix.map(n=>{if(n.flag===4)return n.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(n.flag===3){switch(n.text.toLowerCase()){case"am/pm":case"a/p":{let o=n.text.split("/");return{text:t.getUTCHours()>12?o[1]:o[0]}}case"mmmmm":return{text:T.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return n.text==="MMMM"?{text:T.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:T.date_components.long_months[t.getUTCMonth()]};case"mmm":return n.text==="MMM"?{text:T.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:T.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return n.text==="DDDDD"||n.text==="DDDD"?{text:T.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:T.date_components.long_days[t.getUTCDay()]};case"ddd":return n.text==="DDD"?{text:T.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:T.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(i.toString(),2)};case"h":return{text:this.ZeroPad(i.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let a=n.text.match(/^(s+)\.(0+)$/);if(a)return{text:this.ZeroPad(t.getUTCSeconds().toString(),a[1].length)+T.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(a[2].length).substr(2)}}return{...n}}),section:r}}StringFormat(e,t){let r=[];for(let i of t.prefix)i.flag===5?r.push({text:e}):r.push({...i});return{parts:r,section:t}}Round2(e,t){let r=Math.pow(10,t);return Math.round(r*e)/r}FormatFraction(e,t){t.percent&&(e*=100);let r={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)r.denominator=t.fraction_denominator,r.numerator=Math.round(e*r.denominator);else if(r.error){let s=Se.fraction_limits[t.fraction_denominator_digits-1]||Se.fraction_limits[0];for(let n=2;n<=s;n++){let a=Math.round(e*n),o=Math.abs(a/n-e);if(o<r.error&&(r={numerator:a,denominator:n,error:o},!o))break}}let i=[];if(t.fraction_integer){let s=Math.floor(r.numerator/r.denominator);r.numerator%=r.denominator,(s||!r.numerator)&&(i.push(s.toString()),r.numerator&&i.push(" "))}else r.numerator||i.push("0");return r.numerator&&(i.push(r.numerator.toString()),i.push("/"),i.push(r.denominator.toString())),i.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],r=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let i=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,s=Math.pow(10,-i)/2,n=Math.abs(e);if(n<s&&(t=this.sections[2],r=this.decimal_zero_regexp[2]),t.scaling&&(n/=t.scaling,n<s&&(t=this.sections[2],r=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let a="";if(t.fraction_format)return{parts:[this.FormatFraction(n,t)],section:t};t.exponential?a=n.toExponential(t.decimal_max_digits):(t.percent&&(n*=100),a=this.Round2(n,t.decimal_max_digits).toFixed(t.decimal_max_digits)),r&&(a=a.replace(r,""));let o=a.split(".");for(;o[0].length<t.integer_min_digits;)o[0]=("0000000000000000"+o[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&o[0]==="0"&&(o[0]=""),t.grouping&&(o[0]=o[0].replace(Se.grouping_regexp,"$&"+T.grouping_separator)),{parts:o,section:t}}},X=Se;k(X,"grouping_regexp",/\d{1,3}(?=(\d{3})+(?!\d))/g),k(X,"fraction_limits",[9,99,999,9999]),k(X,"imaginary_character","\u{1D456}"),k(X,"minus_character","-");var D=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let r=this.symbolc_name_map[e.toLowerCase()],i=this.cache[r||e];return i||(i=new X(e),this.cache[e]=i),i}static Equals(e,t){if(e===t)return!0;let r=this.Get(e),i=this.Get(t);return r.pattern===i.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new X(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new X("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};k(D,"cache",{}),k(D,"complex_general"),k(D,"symbolc_name_map",{}),k(D,"base_formats",{Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"}),k(D,"aliases",{Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"});D.InitCache();var Ci=new Date().getUTCFullYear(),Tr=class{compare_day;compare_month;TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let r=new Date(t),s=e.replace(/[\d\-\\/,.\s]+/g," ").toLocaleLowerCase().split(/\s+/).map(o=>o.trim()).filter(o=>!!o);if(!s.length)return t;if(!this.compare_month){this.compare_month={};for(let o=0;o<12;o++)this.compare_month[T.date_components.long_months[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_month[T.date_components.short_months[o].toLocaleLowerCase().replace(/\./,"")]=o}if(!this.compare_day){this.compare_day={};for(let o=0;o<7;o++)this.compare_day[T.date_components.long_days[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_day[T.date_components.short_days[o].toLocaleLowerCase().replace(/\./,"")]=o}let n=!1,a=!1;for(let o of s){let l=!1;for(let[d,u]of Object.entries(this.compare_month))if(o===d){if(n||r.getUTCMonth()!==u)return!1;l=!0,n=!0}if(!l){for(let[d,u]of Object.entries(this.compare_day))if(o===d){if(a||r.getUTCDay()!==u)return!1;l=!0,a=!0}}if(!l)return!1}return a&&!n?!1:t}TryParse(e=""){let t=0;if(e[0]==="'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let r=e.trim(),i=r.match(/^[$](.*?)$/);i&&(r=i[1],t|=8);let s=r.match(/^\((.*?)\)$/);s&&(r=s[1],t|=32);let n=r.match(/^(.*?)%\s*$/);n&&(r=n[1],t|=4),T.decimal_separator==="."?/,/.test(r)&&(r=r.replace(/,/g,""),t|=16):(r=r.replace(/(\d)\s+/g,"$1"),r=r.replace(/\./g,""),r=r.replace(/,/,"."));let a=Number(r);if(a===null||isNaN(a)){let o=e.toLowerCase();if(o==="false")return{value:!1,type:4};if(o==="true")return{value:!0,type:4};let l=this.TestDate(e);if(l!==!1&&!isNaN(l)){let d=new Date(l),u=d.getUTCFullYear();if(u>=Ci-200&&u<=Ci+200)return t=64,(d.getHours()||d.getMinutes()||d.getSeconds())&&(t|=128),{value:Xe(l),type:3,hints:t}}return{value:e,type:2}}if(s&&(a=-a),n){let o=a<0?-1:1,l=(o*a).toString().split(".");l[0]=("00"+l[0]).replace(/(\d\d)$/,".$1"),a=Number(l.join(""))*o}return/e/.test(e)&&(t|=2),{value:a,type:3,hints:t}}},ye=new Tr;var ht="http://www.w3.org/2000/svg",Dt=class{constructor(e,t,r={x:0,y:0}){this.theme=t;this.offset=r;this.g=document.createElementNS(ht,"g"),this.g.setAttribute("transform",`translate(${r.x}, ${r.y})`),this.outline=document.createElementNS(ht,"rect"),this.outline.setAttribute("class","outline"),e?(this.g.setAttribute("class","selection primary-selection"),this.fill=document.createElementNS(ht,"path"),this.fill.setAttribute("class","fill"),this.nub=document.createElementNS(ht,"rect"),this.nub.setAttribute("class","nub"),this.g.appendChild(this.fill),this.g.appendChild(this.outline),this.g.appendChild(this.nub)):(this.g.setAttribute("class","selection alternate-selection"),this.fill=document.createElementNS(ht,"rect"),this.fill.setAttribute("class","fill"),this.g.appendChild(this.fill),this.g.appendChild(this.outline))}g;outline;fill;nub;Offset(e){this.g.setAttribute("transform",`translate(${e.x}, ${e.y})`)}Show(e=!0){this.g.style.display=e?"block":"none"}SetOutline(e,t=!1){this.outline.setAttribute("x",(e.left-1).toString()),this.outline.setAttribute("y",(e.top-1).toString()),this.outline.setAttribute("width",(e.width+1).toString()),this.outline.setAttribute("height",(e.height+1).toString()),t&&this.fill&&(this.fill.setAttribute("x",e.left.toString()),this.fill.setAttribute("y",e.top.toString()),this.fill.setAttribute("width",e.width.toString()),this.fill.setAttribute("height",e.height.toString()))}SetFill(e,t){if(!this.fill)return;let r=[];r.push("M"+e.left+" "+e.top),r.push("L"+e.left+" "+e.bottom),r.push("L"+e.right+" "+e.bottom),r.push("L"+e.right+" "+e.top),r.push("Z"),r.push("M"+t.left+" "+t.top),r.push("L"+t.right+" "+t.top),r.push("L"+t.right+" "+t.bottom),r.push("L"+t.left+" "+t.bottom),r.push("Z"),this.fill.setAttribute("d",r.join(" "))}SetNub(e){this.nub&&(this.nub.setAttribute("x",(e.left+e.width-4).toString()),this.nub.setAttribute("y",(e.top+e.height-4).toString()),this.nub.setAttribute("width","7"),this.nub.setAttribute("height","7"))}};var Ur="http://www.w3.org/2000/svg";var Ne=class{constructor(e,t,r){this.theme=e;this.container=t;this.orientation=r;this.g=document.createElementNS(Ur,"g"),this.g.setAttribute("class","header-overlay"),this.overlay=document.createElementNS(Ur,"rect"),this.overlay.setAttribute("class","overlay"),this.highlight=document.createElementNS(Ur,"rect"),this.highlight.setAttribute("class","highlight"),this.g.style.display="none",this.g.appendChild(this.highlight),this.g.appendChild(this.overlay),t.appendChild(this.g)}g;overlay;highlight;Remove(){this.container.removeChild(this.g)}Hide(){this.g.style.display="none"}Show(e,t,r,i){this.overlay.setAttribute("x",e.toString()),this.overlay.setAttribute("y",t.toString()),this.overlay.setAttribute("width",r.toString()),this.overlay.setAttribute("height",i.toString()),this.orientation===0?(this.highlight.setAttribute("x",e.toString()),this.highlight.setAttribute("y",(t+i-2).toString()),this.highlight.setAttribute("width",r.toString()),this.highlight.setAttribute("height","2")):(this.highlight.setAttribute("x",(e+r-2).toString()),this.highlight.setAttribute("y",t.toString()),this.highlight.setAttribute("width","2"),this.highlight.setAttribute("height",i.toString())),this.g.style.display="block"}};var It=class{constructor(e,t,r,i,s,n){this.theme=e;this.layout=t;this.model=r;this.view=i;this.primary_selection=s;this.additional_selections=n}nub_rectangle=new F(-1,-1,0,0);cached_additional_selections="";grid_selections=[];row_header_selections=[];column_header_selections=[];corner_selections=[];row_overlay;column_overlay;corner_row_overlay;corner_column_overlay;Initialize(){this.row_overlay=new Ne(this.theme,this.layout.row_header_selection,0),this.column_overlay=new Ne(this.theme,this.layout.column_header_selection,1),this.corner_row_overlay=new Ne(this.theme,this.layout.corner_selection,0),this.corner_column_overlay=new Ne(this.theme,this.layout.corner_selection,1)}RenderSelections(e=!0,t=!0){let r=this.primary_selection.empty;e||(this.primary_selection.empty=!0);let i=[this.primary_selection].concat(this.additional_selections);this.RenderSelectionGroup(i,this.layout.grid_selection,void 0,void 0,this.grid_selections,void 0,t);let s=new F(-1,-1,0,0);if(!this.primary_selection.empty){let o=this.view.active_sheet.RealArea(this.primary_selection.area);s=this.layout.CellAddressToRectangle(o.start).Combine(this.layout.CellAddressToRectangle(o.end))}if(!this.primary_selection.empty&&this.layout.header_offset.y>2?(this.row_overlay.Show(s.left,0,s.width,this.layout.header_offset.y),this.corner_row_overlay.Show(s.left+this.layout.header_offset.x,0,s.width,this.layout.header_offset.y)):(this.row_overlay.Hide(),this.corner_row_overlay.Hide()),!this.primary_selection.empty&&this.layout.header_offset.x>2?(this.column_overlay.Show(0,s.top,this.layout.header_offset.x,s.height),this.corner_column_overlay.Show(0,s.top+this.layout.header_offset.y,this.layout.header_offset.x,s.height)):(this.column_overlay.Hide(),this.corner_column_overlay.Hide()),!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows){this.primary_selection.empty=r;return}let n=[],a=[];if(this.primary_selection.empty)n.push(!1),a.push(!1);else{let o=this.primary_selection.area.start;n.push(o.row<=this.view.active_sheet.freeze.rows||o.row===1/0),a.push(o.column<=this.view.active_sheet.freeze.columns||o.column===1/0)}for(let{area:o}of this.additional_selections)n.push(o.start.row<=this.view.active_sheet.freeze.rows||o.start.row===1/0),a.push(o.start.column<=this.view.active_sheet.freeze.columns||o.start.column===1/0);this.view.active_sheet.freeze.rows&&this.RenderSelectionGroup(i,this.layout.row_header_selection,n,void 0,this.row_header_selections,{x:0,y:this.layout.header_offset.y}),this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.column_header_selection,a,void 0,this.column_header_selections,{x:this.layout.header_offset.x,y:0}),this.view.active_sheet.freeze.rows&&this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.corner_selection,a,n,this.corner_selections,{...this.layout.header_offset}),this.primary_selection.empty=r}RenderSelectionGroup(e,t,r,i,s,n,a=!0){for(let o=0;o<e.length;o++)if((!e[o].area.start.sheet_id||e[o].area.start.sheet_id===this.view.active_sheet.id)&&!e[o].empty&&(!r||r[o])&&(!i||i[o])){if(a||!e[o].rendered){let d=this.EnsureGridSelectionBlock(t,s,o,n);this.RenderSVGSelection(e[o],d,o)}}else s[o]&&s[o].Show(!1);for(let o=e.length;o<s.length;o++)s[o]&&s[o].Show(!1)}EnsureGridSelectionBlock(e,t,r,i){let s=t[r];if(!s)if(s=new Dt(!r,this.theme),t[r]=s,r){let n=e.querySelector(".alternate-selections");n||(n=document.createElementNS("http://www.w3.org/2000/svg","g"),n.setAttribute("class","alternate-selections"),e.appendChild(n)),n?.appendChild(s.g)}else e.appendChild(s.g);return i&&s.Offset(i),s}ClampEnd(e){return{row:Math.min(e.row,this.view.active_sheet.rows-1),column:Math.min(e.column,this.view.active_sheet.columns-1)}}RenderSVGSelection(e,t,r=0){let i=this.view.active_sheet.RealArea(e.area,!0),s=this.layout.CellAddressToRectangle(i.start);if(i.count>1)s=s.Combine(this.layout.CellAddressToRectangle(i.end));else if(r){let n=this.view.active_sheet.CellData(e.target);n.merge_area&&(s=this.layout.CellAddressToRectangle(n.merge_area.start),s=s.Combine(this.layout.CellAddressToRectangle(n.merge_area.end)))}if(r||(this.nub_rectangle=new F(s.left+s.width-6,s.top+s.height-6,11,11)),s.top===0&&this.layout.header_offset.y<=1&&(s.top=1,s.height-=1),s.left===0&&this.layout.header_offset.x<=1&&(s.left=1,s.width-=1),s.height<=0||s.height<=0){t.Show(!1);return}if(t.SetOutline(s,!!r),r)e.rendered=!0;else{let n=this.layout.CellAddressToRectangle(e.target),a=this.view.active_sheet.CellData(e.target);a.merge_area&&(n=this.layout.CellAddressToRectangle(a.merge_area.start),n=n.Combine(this.layout.CellAddressToRectangle(a.merge_area.end))),t.SetFill(n,s),t.SetNub(s)}t.Show()}};function be(c,e=[],t,r){typeof e=="string"&&(e=[e]);let i,s=a=>{a.stopPropagation(),a.preventDefault(),i(),r&&r(a)},n=a=>{if(a.stopPropagation(),a.preventDefault(),!a.buttons){i(),r&&r(a);return}t&&t(a)};i=()=>{c.style.display="none",c.removeEventListener("mousemove",n),c.removeEventListener("mouseup",s);for(let a of e)c.classList.remove(a)};for(let a of e)c.classList.add(a);c.style.display="block",t&&c.addEventListener("mousemove",n),r&&c.addEventListener("mouseup",s)}var I=class{static CreateDiv(e="",t,r){return this.Create("div",e,t,r)}static Create(e="",t="",r,i,s){let n=document.createElement(e);if(t&&n.setAttribute("class",t),i&&n.setAttribute(i,""),s){let a=Object.keys(s);for(let o of a)n.setAttribute(o,s[o])}return r&&r.appendChild(n),n}};var Vt=class extends te{constructor(t){super();this.container=t;this.format=D.Get("0.0");let r=I.CreateDiv("treb-scale-control-2",t);this.input=I.Create("input","treb-scale-input",r);let i=I.CreateDiv("treb-slider-container",r);this.input.addEventListener("keypress",s=>{switch(s.key){case"ArrowUp":case"ArrowDown":s.stopPropagation(),s.preventDefault(),console.info("mark?");break}}),this.input.addEventListener("keydown",s=>{switch(s.key){case"Enter":this.input.blur();break;case"ArrowUp":this.Tick(-1);break;case"ArrowDown":this.Tick(1);break;case"Escape":this.input.value=this.format.Format(this.scale)+"%",this.input.blur();break;default:return}s.stopPropagation(),s.preventDefault()}),this.input.addEventListener("change",()=>{let s=this.input.value;s=s.replace(/%/g,"");let n=ye.TryParse(s);n.type===3?this.UpdateScale(Number(n.value),!0):this.input.value=this.format.Format(this.scale)+"%"}),this.slider=I.Create("input",void 0,i,void 0,{type:"range",min:"50",max:"200",value:"100",step:"2.5"}),this.slider.addEventListener("input",()=>{this.UpdateScale(Number(this.slider.value),!0)}),r.addEventListener("wheel",s=>{s.stopPropagation(),s.preventDefault(),this.Tick(s.deltaY)})}input;slider;scale=0;format;timeout=0;Tick(t){let r=Math.round(this.scale/2.5)*2.5;t>0?this.UpdateScale(r-2.5,!0,!0):t<0&&this.UpdateScale(r+2.5,!0,!0)}UpdateScale(t,r=!1,i=!1){t=Math.max(50,Math.min(200,t)),t!==this.scale&&(this.scale=t,this.input.value=this.format.Format(t)+"%",this.slider.value=t.toFixed(1),r&&(this.timeout||(this.timeout=requestAnimationFrame(()=>{this.timeout=0,this.Publish({type:"scale",value:this.scale/100,keep_focus:i})}))))}};var Ft=class extends te{constructor(t,r,i,s,n,a){super();this.layout=t;this.model=r;this.view=i;this.options=s;this.theme=n;this.grid_container=a;this.Init(a)}node;container;scale_control;stats_panel;dragging=!1;double_click_data={};_visible=!1;get visible(){return this._visible}set stats_data(t){if(this.stats_panel){this.stats_panel.innerText="";for(let r of t){let i=document.createElement("span");i.classList.add("treb-stats-label"),i.textContent=r.label,this.stats_panel.appendChild(i);let s=document.createElement("span");s.classList.add("treb-stats-value"),s.textContent=r.value,this.stats_panel.appendChild(s)}}}IsDoubleClick(t,r=300){return this.double_click_data.index===t?(clearTimeout(this.double_click_data.timeout),this.double_click_data.index=void 0,this.double_click_data.timeout=void 0,!0):(this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.index=t,this.double_click_data.timeout=setTimeout(()=>{this.double_click_data.index=void 0,this.double_click_data.timeout=void 0},r),!1)}Hide(){this.Show(!1)}Show(t=!0){this.container&&(this._visible=t,t?(this.grid_container.classList.add("treb-tab-bar-layout"),this.grid_container.parentElement?.classList.add("has-tab-bar"),this.container.style.display="flex"):(this.grid_container.classList.remove("treb-tab-bar-layout"),this.grid_container.parentElement?.classList.remove("has-tab-bar"),this.container.style.display="none"))}SetActive(t,r){r?t.classList.add("selected"):t.classList.remove("selected")}UpdateScale(t){this.scale_control?.UpdateScale(t*100)}Update(){if(this.dragging||!this.node)return;if(this.options.tab_bar==="auto"){if(this.model.sheets.list.reduce((a,o)=>o.visible?a+1:a,0)<=1){this.Show(!1);return}this.Show(!0)}this.grid_container.classList.add("treb-tab-bar-layout"),this.grid_container.parentElement?.classList.add("has-tab-bar");let t=this.node,r=!1,i=Array.prototype.map.call(t.children,n=>n);for(let n of i)n.dataset.preserve?r=!0:t.removeChild(n);if(!r){let n=document.createElement("div");n.classList.add("tab-bar-spacer"),n.dataset.preserve="true",t.appendChild(n),n=document.createElement("div"),n.classList.add("tab-bar-end"),n.dataset.preserve="true",this.options.stats&&(this.stats_panel=document.createElement("div"),this.stats_panel.classList.add("treb-stats-panel"),n.appendChild(this.stats_panel)),this.options.scale_control&&(this.scale_control=new Vt(n),this.scale_control.Subscribe(a=>{this.Publish(a)}),this.UpdateScale(this.options.initial_scale||1)),t.appendChild(n)}if(this.options.delete_tab){let n=document.createElement("div");n.classList.add("delete-tab"),n.innerHTML="<svg viewbox='0 0 16 16'><path d='M4,4 L12,12 M12,4 L4,12'/></svg>",n.style.order=(-1).toString(),n.title="Delete current sheet",n.addEventListener("click",()=>{this.Publish({type:"delete-sheet"})}),t.appendChild(n)}let s=[];for(let n of this.model.sheets.list){if(!n.visible)continue;let a=s.length,o=document.createElement("div");o.classList.add("tab"),o.style.order=(a*2).toString(),this.SetActive(o,n===this.view.active_sheet);let l=u=>{if(u.stopPropagation(),u.preventDefault(),this.IsDoubleClick(a))return;this.Publish({type:"activate-sheet",sheet:n});let h=s.map(v=>v.getBoundingClientRect()),p=a*2-1,f=h[0].left,m=h[h.length-1].right,_=h[0].top,b=h[0].bottom,g=-1,x=(h.length-1)*2+1;for(let v of s)this.SetActive(v,v===o);this.dragging=!0,be(this.layout.mask,[],v=>{let[w,S]=[v.clientX,v.clientY];if(S>_&&S<b){let R=p;if(w<f)R=g;else if(w>m)R=x;else for(let E=0;E<h.length;E++){let H=h[E];if(w>=H.left&&w<=H.right){E!==a&&(w>=H.left+H.width/2?R=E*2+1:R=E*2-1);break}}R!==p&&(p=R,o.style.order=p.toString(),h=s.map(E=>E.getBoundingClientRect()))}},()=>{let v=a,w=(p+1)/2;this.dragging=!1;for(let S=0;S<this.model.sheets.length;S++)this.model.sheets.list[S].visible||(v>=S&&v++,w>=S&&w++);v===w||v===0&&w<=0||v===s.length-1&&w>=s.length-1||this.Publish({type:"reorder-sheet",index:v,move_before:w})})},d=()=>{o.removeEventListener("mousedown",l),o.removeEventListener("dblclick",d),o.contentEditable="true";let u=window.getSelection();if(u){u.removeAllRanges();let h=document.createRange();h.selectNodeContents(o),u.addRange(h)}o.addEventListener("keydown",h=>{switch(h.key){case"Enter":this.Publish({type:"rename-sheet",name:o.innerText.trim(),sheet:n});break;case"Escape":o.innerText=n.name,this.Publish({type:"cancel"});break;default:return}h.stopPropagation(),h.preventDefault()}),o.addEventListener("focusout",()=>{let h=o.innerText.trim();h!==n.name&&this.Publish({type:"rename-sheet",name:h,sheet:n})}),o.focus()};o.textContent=n.name,o.addEventListener("dblclick",d),o.addEventListener("mousedown",l),t.appendChild(o),s.push(o)}if(this.options.add_tab){let n=document.createElement("a");n.classList.add("add-tab"),n.style.order=(this.model.sheets.length*2).toString(),n.innerText="+",n.title="Add sheet",n.addEventListener("click",()=>{this.Publish({type:"add-sheet"})}),t.appendChild(n)}}Init(t){this.container=document.createElement("div"),this.container.classList.add("treb-tab-bar-container"),t.appendChild(this.container),this.node=document.createElement("div"),this.node.classList.add("treb-tab-bar"),this.container.appendChild(this.node)}};var Si=()=>({target:{row:0,column:0},area:new y({row:0,column:0}),empty:!0});var $s=100,Ie=class{get key(){return this.key_}rect;scaled_rect;layout;data={};type="";temp={};resizable=!0;movable=!0;removable=!0;selectable=!0;move_with_cells=!0;resize_with_cells=!0;view=[];dirty;formula="";extent;key_=$s++;constructor(e={}){for(let t of Object.keys(this))t!=="layout"&&e[t]&&(this[t]=e[t]);e.layout&&(this.layout=JSON.parse(JSON.stringify(e.layout))),e.rect&&(this.rect=F.Create(e.rect))}toJSON(){let e={};return this.data&&(e.data=this.data),this.formula&&(e.formula=this.formula),this.type&&(e.type=this.type),this.resizable||(e.resizable=this.resizable),this.movable||(e.movable=this.movable),this.removable||(e.removable=this.removable),this.selectable||(e.selectable=this.selectable),this.move_with_cells||(e.move_with_cells=this.move_with_cells),this.resize_with_cells||(e.resize_with_cells=this.resize_with_cells),this.layout&&(e.layout=this.layout),this.extent&&(e.extent=this.extent),e}};var Bs=100,Ai=60,Ve=class{default_style_properties;annotations=[];freeze={rows:0,columns:0};visible=!0;default_column_width=100;default_row_height=25;cells=new Ct;selection=Si();scroll_offset={x:0,y:0};name=Ve.default_sheet_name;background_image;_image=void 0;get image(){return this._image}id_;row_height_=[];column_width_=[];row_headers=[];column_headers=[];row_header_width=100;column_header_height=25;style_map=[];style_json_map=[];sheet_style={};row_styles={};column_styles={};row_pattern=[];cell_style=[];get header_offset(){return{x:this.row_header_width,y:this.column_header_height}}get rows(){return this.cells.rows}get columns(){return this.cells.columns}get id(){return this.id_}set id(e){this.id_=e,this.id>=Ve.base_id&&(Ve.base_id=this.id+1)}constructor(e){this.default_style_properties=e,this.default_column_width=Bs,this.row_header_width=Ai,this.UpdateDefaultRowHeight(),this.id_=Ve.base_id++}static Reset(){this.base_id=100}static Blank(e,t,r=30,i=20){let s=new Ve(e);return t&&(s.name=t),r=Math.max(r,1),i=Math.max(i,1),s.cells.EnsureCell({row:r-1,column:i-1}),s}static UpdateStyle(e){if(typeof e.horizontal_align=="number"){let t=[A.HorizontalAlign.None,A.HorizontalAlign.Left,A.HorizontalAlign.Center,A.HorizontalAlign.Right];e.horizontal_align=t[e.horizontal_align]||void 0}if(typeof e.vertical_align=="number"){let t=[A.VerticalAlign.None,A.VerticalAlign.Top,A.VerticalAlign.Bottom,A.VerticalAlign.Middle];e.vertical_align=t[e.vertical_align]||void 0}}static FromJSON(e,t,r){let i=typeof e=="string"?JSON.parse(e):e,s=(l,d)=>{Object.keys(d).forEach(u=>{let h=Number(u)||0;l[h]=d[u]})};r||(r=new Ve(t)),i.default_column_width&&(r.default_column_width=i.default_column_width),i.default_row_height&&(r.default_row_height=i.default_row_height),i.id&&(r.id=i.id),i.name&&(r.name=i.name),i.background_image&&(r.background_image=i.background_image);let n=l=>{let d=l;this.UpdateStyle(d),(d.font_size_value||d.font_size_unit)&&(d.font_size={unit:d.font_size_unit||"pt",value:d.font_size_value||10},d.font_size_unit=void 0,d.font_size_value=void 0),d.font_bold&&(d.bold=!0,d.font_bold=void 0),d.font_italic&&(d.italic=!0,d.font_italic=void 0),d.font_underline&&(d.underline=!0,d.font_underline=void 0),d.font_strike&&(d.strike=!0,d.font_strike=void 0),d.text_color&&(d.text_color!=="none"&&(d.text={text:d.text_color}),d.text_color=void 0),d.background&&(d.background!=="none"&&(d.fill={text:d.background}),d.background=void 0),d.border_top_color&&(d.border_top_color!=="none"&&(d.border_top_fill={text:d.border_top_color}),d.border_top_color=void 0),d.border_left_color&&(d.border_left_color!=="none"&&(d.border_left_fill={text:d.border_left_color}),d.border_left_color=void 0),d.border_bottom_color&&(d.border_bottom_color!=="none"&&(d.border_bottom_fill={text:d.border_bottom_color}),d.border_bottom_color=void 0),d.border_right_color&&(d.border_right_color!=="none"&&(d.border_right_fill={text:d.border_right_color}),d.border_right_color=void 0)},a=i.styles||i.cell_style_refs||[];for(let l of a)n(l);if(r.cell_style=[],a&&(i.cell_styles||[]).forEach(l=>{typeof l.ref=="number"&&(l.style=JSON.parse(JSON.stringify(a[l.ref])))}),r.cells.FromJSON(i.data),i.rows&&r.cells.EnsureRow(i.rows-1),i.columns&&r.cells.EnsureColumn(i.columns-1),i.data)if(rt(i.data))for(let l of i.data)l.style_ref&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=JSON.parse(JSON.stringify(a[l.style_ref])));else if(cr(i.data))for(let l of i.data){let d=l.row;for(let u of l.cells){let h=u.column;u.style_ref&&(r.cell_style[h]||(r.cell_style[h]=[]),r.cell_style[h][d]=JSON.parse(JSON.stringify(a[u.style_ref])))}}else for(let l of i.data){let d=l.column;for(let u of l.cells){let h=u.row;u.style_ref&&(r.cell_style[d]||(r.cell_style[d]=[]),r.cell_style[d][h]=JSON.parse(JSON.stringify(a[u.style_ref])))}}r.freeze.rows=0,r.freeze.columns=0,i.freeze&&(r.freeze.rows=i.freeze.rows||0,r.freeze.columns=i.freeze.columns||0),r.scroll_offset=i.scroll?{...i.scroll}:{x:0,y:0};for(let l of i.cell_styles||[])if(l.style&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=l.style,l.rows))for(let d=1;d<l.rows;d++)r.cell_style[l.column][l.row+d]=JSON.parse(JSON.stringify(l.style));r.sheet_style=i.sheet_style||{},r.column_styles={},r.row_styles={};let o=(l,d)=>{for(let u of Object.keys(l)){let h=Number(u),p=l[h];if(typeof p=="number"){let f=a[p];f&&(d[h]=JSON.parse(JSON.stringify(f)),n(d[h]))}else p&&(d[h]=p,n(d[h]))}};o(i.row_style,r.row_styles),o(i.column_style,r.column_styles),r.row_pattern=i.row_pattern||[],n(r.sheet_style||{});for(let l of r.row_pattern)n(l);return r.row_height_=[],s(r.row_height_,i.row_height||{}),r.row_height_.length&&r.cells.EnsureRow(r.row_height_.length-1),r.column_width_=[],s(r.column_width_,i.column_width||{}),r.column_width_.length&&r.cells.EnsureColumn(r.column_width_.length-1),r.annotations=(i.annotations||[]).map(l=>new Ie(l)),i.selection&&(r.selection=JSON.parse(JSON.stringify(i.selection))),r.visible=!0,typeof i.visible<"u"&&(r.visible=!!i.visible),r}Activate(){if(this.background_image){let e=Et(this.background_image);e&&(this._image=document.createElement("img"),this._image.src=e)}}MergeCells(e){e=e.Clone(),this.cells.Apply(e,(t,r,i)=>{t.merge_area=e,t.render_clean=[],(r!==e.start.column||i!==e.start.row)&&t.Reset()},!0)}UnmergeCells(e){let t=!0;if(this.cells.Apply(e,r=>{t=t&&!!r.merge_area&&e.Equals(r.merge_area)},!1),!t){console.warn("area mismatch");return}this.cells.Apply(e,r=>{r.merge_area=void 0,r.render_clean=[]},!1)}StyleFontSize(e,t={}){let r=e.font_size?.value||0,i=0;switch(e.font_size?.unit){case"px":r*=75/100;break;case"em":i=e.font_size.value||1;break;case"%":i=(e.font_size.value||100)/100;break}return i&&(r=i*(t.font_size?.value||10),t.font_size?.unit==="px"&&(r*=75/100)),r||10}UpdateDefaultRowHeight(){let e=A.Composite([this.default_style_properties,this.sheet_style]);if(typeof window<"u"){let t=re.MeasureText(A.Font(e),"M"),r=Math.round(t.height*1.4);this.default_row_height<r&&(this.default_row_height=r)}}SetRowHeaders(e){this.row_headers=e.map(t=>t===void 0?"":t.toString()),this.row_headers&&this.cells.EnsureRow(this.row_headers.length-1)}SetColumnHeaders(e){this.column_headers=e.map(t=>t===void 0?"":t.toString()),e&&this.cells.EnsureColumn(e.length-1)}RowHeader(e){return this.row_headers?this.row_headers.length>e?this.row_headers[e]:"":e+1}ColumnHeader(e){let t="";if(this.column_headers)return this.column_headers.length>e?this.column_headers[e]:"";for(;;){let r=e%26;if(t=String.fromCharCode(65+r)+t,e=Math.floor(e/26),e)e--;else break}return t}GetRowHeight(e){let t=this.row_height_[e];return typeof t>"u"?this.default_row_height:t}SetRowHeight(e,t){return this.row_height_[e]=t,this.cells.EnsureRow(e),t}GetColumnWidth(e){let t=this.column_width_[e];return typeof t>"u"?this.default_column_width:t}SetColumnWidth(e,t){return this.column_width_[e]=t,this.cells.EnsureColumn(e),t}Delta(e,t){let r={},i=[...Object.keys(e),...Object.keys(t)];for(let s of i){let n=e[s],a=t[s];typeof n=="object"&&typeof a=="object"?JSON.stringify(n)!==JSON.stringify(a)&&(r[s]=a):n!==a&&(r[s]=a)}return r}UpdateCellStyle(e,t,r=!0){let{row:i,column:s}=e;this.cell_style[s]||(this.cell_style[s]=[]);let n=this.CompositeStyleForCell(e,!1,!1),a=A.Composite([this.default_style_properties,n,A.Merge(this.cell_style[s][i]||{},t,r)]),o=this.Delta(n,a);this.cell_style[s][i]=o,this.CellData(e).FlushStyle()}Invalidate(e){this.cells.Apply(this.RealArea(e),t=>t.render_clean=[])}UpdateAreaStyle(e,t={},r=!0){if(e)if(e.entire_sheet)this.UpdateSheetStyle(t,r);else if(e.entire_column)for(let i=e.start.column;i<=e.end.column;i++)this.UpdateColumnStyle(i,t,r);else if(e.entire_row)for(let i=e.start.row;i<=e.end.row;i++)this.UpdateRowStyle(i,t,r);else e.Array().forEach(i=>this.UpdateCellStyle(i,t,r))}HasCellStyle(e){return!!(this.cell_style[e.column]&&this.cell_style[e.column][e.row]||this.row_styles[e.row]||this.column_styles[e.column]||this.row_pattern.length)}NextVisibleColumn(e){for(++e;this.column_width_[e]===0;e++);return e}PreviousVisibleColumn(e){for(--e;e>=0&&this.column_width_[e]===0;e--);return e}NextVisibleRow(e){for(++e;this.row_height_[e]===0;e++);return e}PreviousVisibleRow(e){for(--e;e>=0&&this.row_height_[e]===0;e--);return e}TableRow(e,t){let r={alternate:!1,header:t===e.area.start.row,last:!1,totals:e.totals_row&&t===e.area.end.row};if(r.header||r.totals)return r;if(!(e.totals_row&&this.GetRowHeight(e.area.end.row)>0)){let n=e.area.end.row;for(;n>=e.area.start.row;n--)if(this.GetRowHeight(n)){r.last=n===t;break}}let s=e.area.start.row+1;for(;s<=e.area.end.row&&!(this.GetRowHeight(s)&&(r.alternate=!r.alternate,s===t));s++);return r}SurroundingStyle(e,t){let r=[{},{},{},{},{},{},{},{},{},{}],i=e.column+1,s=e.column-1,n=e.row+1,a=e.row-1;for(;this.column_width_[i]===0;i++);for(;this.row_height_[n]===0;n++);for(;s>=0&&this.column_width_[s]===0;s--);for(;a>=0&&this.row_height_[a]===0;a--);return s>=0&&a>=0&&(r[7]=this.CellStyleData({row:a,column:s},t)||{}),s>=0&&(r[4]=this.CellStyleData({row:e.row,column:s},t)||{},r[1]=this.CellStyleData({row:n,column:s},t)||{}),a>=0&&(r[8]=this.CellStyleData({row:a,column:e.column},t)||{},r[9]=this.CellStyleData({row:a,column:i},t)||{}),r[6]=this.CellStyleData({row:e.row,column:i},t)||{},r[2]=this.CellStyleData({row:n,column:e.column},t)||{},r[3]=this.CellStyleData({row:n,column:i},t)||{},r}CellStyleData(e,t){let r=this.cells.GetCell(e);if(r){if(!r.style){let i=this.GetStyleIndex(this.CompositeStyleForCell(e));r.style=this.style_map[i]}if(r.table&&t){let i=JSON.parse(JSON.stringify(r.style)),s=this.TableRow(r.table,e.row);return s.header?t.header&&(i=A.Composite([i,t.header])):s.totals?t.total&&(i=A.Composite([i,t.total])):s.alternate?t.odd&&(i=A.Composite([i,t.odd])):t.even&&(i=A.Composite([i,t.even])),s.last&&t.footer&&(i=A.Composite([i,t.footer])),i}return r.style}}GetCopyStyle(e){return this.CompositeStyleForCell(e,!0,!1)}CellData(e){let t=this.cells.EnsureCell(e);if(t.rendered_type)return t;let r,i;if(t.calculated_type?(i=t.calculated,r=t.calculated_type):(i=t.value,r=t.type),!t.style){let s=this.GetStyleIndex(this.CompositeStyleForCell(e));t.style=this.style_map[s]}if(!r||i===null||typeof i>"u")t.formatted="",t.rendered_type=2;else if(r===3)isNaN(i)?t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan:t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=3;else if(r===6)t.formatted="#"+(i||"ERR?"),t.rendered_type=6;else if(r===4)t.formatted=i.toString().toUpperCase(),t.rendered_type=4;else if(r===1&&t.calculated===void 0)t.formatted="",t.rendered_type=2;else if(r===7){let s=i;if(isNaN(s.real)||isNaN(s.imaginary))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan;else{let n=D.Get(t.style.number_format||"",!0);t.formatted=n.FormatComplex(s)}t.rendered_type=7}else if(r===9){if(isNaN(i.value))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan,t.formatted+=" "+i.unit;else{let s=D.Get(t.style.number_format||"",!0);t.formatted=s.FormatDimensionedQuantity(i)}t.rendered_type=9}else t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=2;return t}FormatNumber(e,t=""){let r=D.Get(t).FormatParts(e);return r.length?r.length===1&&!r[0].flag?r[0].text||"":r:""}SetHeaderSize(e=Ai,t=this.default_row_height){this.row_header_width=e,this.column_header_height=t}AutoSizeRow(e,t={},r=!0){let i=this.default_row_height,s=9;for(let n=0;n<this.cells.columns;n++){let a=this.CellData({row:e,column:n}),o=a.style,l=a.formatted||"";if(typeof l!="string"&&(l=l.map(d=>d.text).join("")),o&&l&&l.length){let d=l.split(/\n/),u=Math.round(this.StyleFontSize(o,t)*1.5);i=Math.max(i,((u||10)+s)*d.length)}}!r&&this.GetRowHeight(e)>=i||this.SetRowHeight(e,i)}GetStyle(e){return this.style_map[e]}InsertRows(e=0,t=1){if(e)for(let o=0;o<this.cells.columns;o++){let l=this.cells.GetCell({row:e-1,column:o},!1);if(l&&l.area){let d=this.cells.GetCell({row:e,column:o},!1);if(d&&d.area&&d.area.Equals(l.area))return!1}}t<0?this.cells.DeleteRows(e,-t):this.cells.InsertRows(e,t);let r={},i={};for(let o=e;o<this.cells.rows;o++)for(let l=0;l<this.cells.columns;l++){let d=this.cells.GetCell({row:o,column:l},!1);d&&(d.area&&!i[d.area.spreadsheet_label]&&(i[d.area.spreadsheet_label]=d.area),d.merge_area&&!r[d.merge_area.spreadsheet_label]&&(r[d.merge_area.spreadsheet_label]=d.merge_area))}for(let o of Object.keys(i)){let l=i[o],d=new y({row:l.start.row+t,column:l.start.column},{row:l.end.row+t,column:l.end.column});d.Iterate(u=>{let h=this.cells.GetCell(u,!0);h.area=d})}for(let o of Object.keys(r)){let l=r[o],d={row:l.start.row,column:l.start.column};l.start.row>=e&&(d.row+=t);let u=new y(d,{row:l.end.row+t,column:l.end.column});u.Iterate(h=>{let p=this.cells.GetCell(h,!0);p.merge_area=u})}let s=Object.keys(this.row_styles),n={};s.forEach(o=>{let l=Number(o);l<e?n[l]=this.row_styles[l]:t<0&&l<e-t||(n[l+t]=this.row_styles[l])}),this.row_styles=n;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.forEach(o=>{o&&o.length>=e&&o.splice.apply(o,a)}),this.row_height_.splice.apply(this.row_height_,a),this.FlushCellStyles(),!0}InsertColumns(e=0,t=1){if(e)for(let o=0;o<this.cells.rows;o++){let l=this.cells.GetCell({row:o,column:e-1},!1);if(l&&l.area){let d=this.cells.GetCell({row:o,column:e},!1);if(d&&d.area&&d.area.Equals(l.area))return!1}}t<0?this.cells.DeleteColumns(e,-t):this.cells.InsertColumns(e,t);let r={},i={};for(let o=e;o<this.cells.columns;o++)for(let l=0;l<this.cells.rows;l++){let d=this.cells.GetCell({row:l,column:o},!1);d&&(d.area&&!i[d.area.spreadsheet_label]&&(i[d.area.spreadsheet_label]=d.area),d.merge_area&&!r[d.merge_area.spreadsheet_label]&&(r[d.merge_area.spreadsheet_label]=d.merge_area))}for(let o of Object.keys(i)){let l=i[o],d=new y({row:l.start.row,column:l.start.column+t},{row:l.end.row,column:l.end.column+t});d.Iterate(u=>{let h=this.cells.GetCell(u,!0);h.area=d})}for(let o of Object.keys(r)){let l=r[o],d={row:l.start.row,column:l.start.column};l.start.column>=e&&(d.column+=t);let u=new y(d,{row:l.end.row,column:l.end.column+t});u.Iterate(h=>{let p=this.cells.GetCell(h,!0);p.merge_area=u})}let s=Object.keys(this.column_styles),n={};s.forEach(o=>{let l=Number(o);l<e?n[l]=this.column_styles[l]:t<0&&l<e-t||(n[l+t]=this.column_styles[l])}),this.column_styles=n;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.splice.apply(this.cell_style,a),this.column_width_.splice.apply(this.column_width_,a),this.FlushCellStyles(),!0}ClearArea(e){e=this.RealArea(e),this.cells.Apply(e,t=>t.Reset())}SetAreaValues2(e,t){e=this.RealArea(e),this.cells.SetArea(e,t)}SetArrayValue(e,t){e=this.RealArea(e),this.cells.Apply(e,i=>i.SetArray(e),!0),this.cells.GetCell(e.start,!0).SetArrayHead(e,t)}SetCellValue(e,t){this.cells.GetCell(e,!0).Set(t)}TablesFromArea(e,t=!1){if(z(e)){let i=this.cells.GetCell(e,!1);return i?.table&&(!t||e.row===i.table.area.start.row)?[i.table]:[]}let r=new Set;for(let i=e.start.row;i<=e.end.row;i++)for(let s=e.start.column;s<=e.end.column;s++){let n=this.cells.GetCell({row:i,column:s},!1);n?.table&&!r.has(n.table)&&(!t||i===n.table.area.start.row)&&r.add(n.table)}return Array.from(r.values())}RealArea(e,t=!1){let r=e.start,i=e.end;return e.entire_row&&(r.column=0,r.absolute_column=!1,i.column=this.cells.columns-1,i.absolute_column=!1),e.entire_column&&(r.row=0,r.absolute_row=!1,i.row=this.cells.rows-1,i.absolute_row=!1),t&&(i.row>=this.rows&&(i.row=this.rows-1,i.absolute_row=!1),i.column>=this.columns&&(i.column=this.columns-1,i.absolute_column=!1)),new y(r,i)}GetCellStyle(e,t=!1){if(z(e))return this.CompositeStyleForCell(e,!0,!1,t);if(e.start.row===e.end.row&&e.start.column===e.end.column)return this.CompositeStyleForCell(e.start,!0,!1,t);let r=[];for(let i=e.start.row;i<=e.end.row;i++){let s=[];for(let n=e.start.column;n<=e.end.column;n++)s.push(this.CompositeStyleForCell({row:i,column:n},!0,!1,t));r.push(s)}return r}FormattedCellValue(e){let t=this.CellData(e);if(t)return typeof t.formatted=="string"?t.formatted:t.formatted?t.formatted.map(r=>{switch(r.flag){case 1:return" ";case 2:return" ";default:return r.text}}).join(""):t.value}GetFormattedRange(e,t=e){if(e.row===t.row&&e.column===t.column)return this.FormattedCellValue(e);let r=[];for(let i=e.row;i<=t.row;i++){let s=[];for(let n=e.column;n<=t.column;n++)s.push(this.FormattedCellValue({row:i,column:n}));r.push(s)}return r}NumberFormatsAndColors(e,t){let r=i=>{i.number_format&&(t[i.number_format]=1),i.text?.text&&i.text.text!=="none"&&(e[i.text.text]=1),i.fill?.text&&(e[i.fill.text]=1),i.border_top_fill?.text&&(e[i.border_top_fill.text]=1),i.border_left_fill?.text&&(e[i.border_left_fill.text]=1),i.border_right_fill?.text&&(e[i.border_right_fill.text]=1),i.border_bottom_fill?.text&&(e[i.border_bottom_fill.text]=1)};r(this.sheet_style);for(let i in this.row_styles)r(this.row_styles[i]);for(let i in this.column_styles)r(this.column_styles[i]);for(let i of this.row_pattern)r(i);for(let i of this.cell_style)if(i)for(let s of i)s&&r(s)}CompressCellStyles(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i)for(let s=0;s<i.length;s++){let n=i[s];if(n){let a=s+1;for(;a<i.length&&i[a]===n;a++);a>s+1?t.push({row:s,column:r,ref:n,rows:a-s}):t.push({row:s,column:r,ref:n}),s=a-1}}}return t}toJSON(e={}){let t=(w,S)=>{let R={};for(let E=0;E<w.length;E++)typeof w[E]<"u"&&w[E]!==S&&(R[E]=w[E]);if(Object.keys(R).length)return R},r=[{}],i={},s=[],n=JSON.stringify({});for(let w=0;w<this.cell_style.length;w++){let S=this.cell_style[w];if(S){s[w]=[];for(let R=0;R<S.length;R++)if(S[R]){let E=JSON.stringify(S[R]);if(E!==n){let H=i[E];typeof H!="number"&&(i[E]=H=r.length,r.push(S[R])),s[w][R]=H}}}}let a=w=>{let S=JSON.stringify(w);if(S===n)return 0;let R=i[S];return typeof R!="number"&&(i[S]=R=r.length,r.push(w)),R};r=JSON.parse(JSON.stringify(r));let o=JSON.parse(JSON.stringify(this.sheet_style)),l=JSON.parse(JSON.stringify(this.row_pattern)),d={},u={};for(let w of Object.keys(this.column_styles)){let S=Number(w),R=this.column_styles[S];if(R){let E=a(R);E&&(d[S]=E)}}for(let w of Object.keys(this.row_styles)){let S=Number(w),R=this.row_styles[S];if(R){let E=a(R);E&&(u[S]=E)}}let h=(w,S)=>{if(typeof w<"u"&&w!=="none")return w===S?void 0:re.MeasureColorARGB(w)},p=(w={},S={})=>{let R={...S,...w};if(R.text)return R.text=re.MeasureColorARGB(R.text),R;if(typeof R.theme=="number")return R};if(e.export_colors){let w=[];for(let S of[r,[o],l])if(Array.isArray(S))for(let R of S)w.push(R);else for(let R of Object.keys(S))w.push(S[R]);for(let S of w){let R=p(S.border_top_fill,A.DefaultProperties.border_top_fill);R!==void 0&&(S.border_top_fill=R),R=p(S.border_left_fill,A.DefaultProperties.border_left_fill),R!==void 0&&(S.border_left_fill=R),R=p(S.border_right_fill,A.DefaultProperties.border_right_fill),R!==void 0&&(S.border_right_fill=R),R=p(S.border_bottom_fill,A.DefaultProperties.border_bottom_fill),R!==void 0&&(S.border_bottom_fill=R),S.fill?.text&&(S.fill.text=re.MeasureColorARGB(S.fill.text)),S.text&&S.text.text&&S.text.text!=="none"&&(S.text.text=re.MeasureColorARGB(S.text.text))}}let f={calculated_value:!!e.rendered_values,preserve_type:!!e.preserve_type,expand_arrays:!!e.expand_arrays,decorated_cells:!!e.decorated_cells,nested:!0,cell_style_refs:s,tables:!!e.tables},m=this.cells.toJSON(f),_=m.data,{rows:b,columns:g}=m;e.shrink?(b+=2,g+=1):(b=this.rows,g=this.columns);for(let w of this.annotations)w.extent||this.CalculateAnnotationExtent(w),w.extent&&(b=Math.max(b,w.extent.row+1),g=Math.max(g,w.extent.column+1));let x=this.CompressCellStyles(s),v={id:this.id,name:this.name,data:_,sheet_style:o,rows:b,columns:g,cell_styles:x,styles:r,row_style:u,column_style:d,row_pattern:l.length?l:void 0,default_row_height:this.default_row_height,default_column_width:this.default_column_width,row_height:t(this.row_height_,this.default_row_height),column_width:t(this.column_width_,this.default_column_width),selection:JSON.parse(JSON.stringify(this.selection)),annotations:JSON.parse(JSON.stringify(this.annotations))};return this.visible||(v.visible=this.visible),(this.scroll_offset.x||this.scroll_offset.y)&&(v.scroll=this.scroll_offset),this.background_image&&(v.background_image=this.background_image),(this.freeze.rows||this.freeze.columns)&&(v.freeze=this.freeze),v}FlushCellStyles(){this.style_map=[],this.style_json_map=[],this.cells.FlushCellStyles()}ImportData(e){let t=e.styles,r=e.sheet_style;r&&this.UpdateAreaStyle(new y({row:1/0,column:1/0},{row:1/0,column:1/0}),t[r]);let i=e.column_styles;if(i)for(let n=0;n<i.length;n++)i[n]&&this.UpdateAreaStyle(new y({row:1/0,column:n},{row:1/0,column:n}),t[i[n]]);this.cells.FromJSON(e.cells),e.name&&(this.name=e.name||"");let s=this.cell_style;for(let n of e.cells)n.style_ref&&(s[n.column]||(s[n.column]=[]),s[n.column][n.row]=t[n.style_ref]);for(let n=0;n<e.column_widths.length;n++)typeof e.column_widths[n]<"u"&&this.SetColumnWidth(n,e.column_widths[n]);for(let n=0;n<e.row_heights.length;n++)typeof e.row_heights[n]<"u"&&this.SetRowHeight(n,e.row_heights[n]);for(let n of e.annotations||[])this.annotations.push(new Ie(n));e.hidden&&(this.visible=!1)}CalculateAnnotationExtent(e){if(e.layout){e.extent={...e.layout.br.address};return}let t=1e3;e.extent={row:0,column:0};let r=e.rect?.right;if(r&&this.default_column_width){for(let s=0;r>=0&&s<t;s++)if(r-=this.GetColumnWidth(s),r<0){e.extent.column=s;break}}let i=e.rect?.bottom;if(i&&this.default_row_height){for(let s=0;i>=0&&s<t;s++)if(i-=this.GetRowHeight(s),i<0){e.extent.row=s;break}}}UpdateSheetStyle(e,t=!0){this.sheet_style=A.Merge(this.sheet_style,e,t);let r=Object.keys(e);for(let i of this.cell_style)if(i)for(let s of i)s&&r.forEach(n=>delete s[n]);for(let i of Object.keys(this.row_styles))r.forEach(s=>delete this.row_styles[i][s]);for(let i of Object.keys(this.column_styles))r.forEach(s=>delete this.column_styles[i][s]);this.FlushCellStyles()}UpdateRowStyle(e,t,r=!0){this.row_styles[e]=A.Merge(this.row_styles[e]||{},t,r);let i=Object.keys(t);for(let s of this.cell_style)s&&s[e]&&i.forEach(n=>delete s[e][n]);for(let s=0;s<this.cells.columns;s++)if(this.column_styles[s]){let n=this.column_styles[s],a=this.cell_style[s]?this.cell_style[s][e]||{}:{};for(let o of i)typeof n[o]<"u"&&(a[o]=t[o]);Object.keys(a).length&&(this.cell_style[s]||(this.cell_style[s]=[]),this.cell_style[s][e]=JSON.parse(JSON.stringify(a)))}this.cells.Apply(this.RealArea(y.FromRow(e)),s=>s.FlushStyle())}UpdateColumnStyle(e,t,r=!0){this.column_styles[e]=A.Merge(this.column_styles[e]||{},t,r);let i=Object.keys(t);if(this.cell_style[e])for(let s of this.cell_style[e])s&&i.forEach(n=>delete s[n]);this.cells.Apply(this.RealArea(y.FromColumn(e)),s=>s.FlushStyle())}CompositeStyleForCell(e,t=!0,r=!0,i=!0){let{row:s,column:n}=e,a=[];return i&&a.push(this.default_style_properties),a.push(this.sheet_style),r&&this.row_pattern.length&&a.push(this.row_pattern[s%this.row_pattern.length]),this.row_styles[s]&&a.push(this.row_styles[s]),this.column_styles[n]&&a.push(this.column_styles[n]),t&&this.cell_style[n]&&this.cell_style[n][s]&&a.push(this.cell_style[n][s]),A.Composite(a)}GetStyleIndex(e){let t=JSON.stringify(e);for(let i=0;i<this.style_json_map.length;i++)if(t===this.style_json_map[i])return i;let r=this.style_map.length;return this.style_map.push(JSON.parse(t)),this.style_json_map.push(t),r}},j=Ve;k(j,"base_id",100),k(j,"default_sheet_name","Sheet1");var Ri="http://www.w3.org/2000/svg",zt=class{constructor(e,t){this.model=e;this.view=t;this.mask=I.CreateDiv("treb-mouse-mask"),this.tooltip=I.CreateDiv("treb-tooltip"),this.dropdown_caret=document.createElementNS(Ri,"svg"),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.setAttribute("viewBox","0 0 24 24"),this.dropdown_caret.tabIndex=-1;let r=document.createElementNS(Ri,"path");r.setAttribute("d","M5,7 L12,17 L19,7"),this.dropdown_caret.appendChild(r),this.dropdown_caret.addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),this.grid_cover.classList.remove("nub-select");let s=this.dropdown_caret.getAttribute("class")||"";/active/i.test(s)?this.dropdown_caret.setAttribute("class","treb-dropdown-caret"):(this.dropdown_caret.setAttribute("class","treb-dropdown-caret active"),this.dropdown_list.focus())}),this.dropdown_list=I.CreateDiv("treb-dropdown-list"),this.dropdown_list.setAttribute("tabindex","-1"),this.dropdown_list.addEventListener("keydown",i=>{let s=0;switch(i.key){case"ArrowDown":s=1;break;case"ArrowUp":s=-1;break;case"Escape":break;case"Enter":break;default:console.info(i.key);return}if(i.stopPropagation(),i.preventDefault(),i.key==="Escape"||i.key==="Enter")this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),i.key==="Enter"&&this.dropdown_callback&&this.dropdown_selected&&this.dropdown_callback.call(0,this.dropdown_selected.dropdown_value);else if(s&&this.dropdown_selected)if(s>0&&this.dropdown_selected.nextSibling){this.dropdown_selected.nextSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.nextSibling;let n=this.dropdown_selected.offsetTop+this.dropdown_selected.offsetHeight;n>this.dropdown_list.offsetHeight+this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=n-this.dropdown_list.offsetHeight)}else s<0&&this.dropdown_selected.previousSibling&&(this.dropdown_selected.previousSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.previousSibling,this.dropdown_selected.offsetTop<this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=this.dropdown_selected.offsetTop))}),this.dropdown_list.addEventListener("mousedown",i=>{let s=i.target;i.target!==this.dropdown_list&&(i.stopPropagation(),i.preventDefault(),this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_callback&&this.dropdown_callback.call(0,s.dropdown_value))}),this.dropdown_list.addEventListener("mousemove",i=>{let s=i.target;s!==this.dropdown_selected&&(this.grid_cover.classList.remove("nub-select"),this.dropdown_selected&&this.dropdown_selected.classList.remove("selected"),s.classList.add("selected"),this.dropdown_selected=s)}),this.mock_selection=I.CreateDiv("mock-selection-node"),this.mock_selection.innerHTML=" ",this.note_node=I.CreateDiv("treb-note"),this.title_node=I.CreateDiv("treb-hover-title"),this.sort_button=I.Create("button","treb-sort-button",void 0,void 0,{title:"Sort table"}),this.HideNote()}column_header;row_header;contents;buffer_canvas;corner;corner_canvas;grid_selection;grid_cover;column_header_cover;row_header_cover;annotation_container;mask;mock_selection;container;grid_tiles=[];column_header_tiles=[];row_header_tiles=[];corner_selection;row_header_selection;column_header_selection;corner_annotations;row_header_annotations;column_header_annotations;frozen_row_tiles=[];frozen_column_tiles=[];header_size={width:0,height:0};last_column=0;total_height=0;total_width=0;default_row_height=0;default_column_width=0;header_offset={x:0,y:0};dpr=Math.max(1,self.devicePixelRatio||1);scale=1;scroll_reference_node;get scroll_offset(){return this.scroll_reference_node?{x:this.scroll_reference_node.scrollLeft,y:this.scroll_reference_node.scrollTop}:{x:0,y:0}}set scroll_offset(e){this.scroll_reference_node&&(this.scroll_reference_node.scrollLeft=e.x,this.scroll_reference_node.scrollTop=e.y)}dropdown_caret;trident=typeof navigator<"u"&&navigator.userAgent&&/trident/i.test(navigator.userAgent);default_tile_size={width:1200,height:800};tooltip_state;tooltip;dropdown_list;dropdown_caret_visible=!1;dropdown_callback;dropdown_selected;note_node;sort_button;title_node;row_cache=[];column_cache=[];initialized=!1;UpdateDPR(){let e=Math.max(1,self.devicePixelRatio||1);return e===this.dpr?!1:(this.dpr=e,!0)}ColumnWidth(e){return Math.round(this.view.active_sheet.GetColumnWidth(e)*this.scale)}RowHeight(e){return Math.round(this.view.active_sheet.GetRowHeight(e)*this.scale)}SetRowHeight(e,t){this.view.active_sheet.SetRowHeight(e,Math.round(t/this.scale))}SetColumnWidth(e,t){this.view.active_sheet.SetColumnWidth(e,Math.round(t/this.scale))}ShowSelections(e=!0){this.grid_selection.style.display=e?"block":"none"}HideTitle(){this.title_node.style.opacity="0"}ShowTitle(e,t){if(this.title_node.textContent=e,!this.title_node.parentElement)return;let r=this.title_node.parentElement.getBoundingClientRect(),i=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.title_node.style.left=r.left+i.left-this.scroll_reference_node.scrollLeft+0+"px",this.title_node.style.top=r.top+i.bottom-this.scroll_reference_node.scrollTop+8+"px",this.title_node.style.opacity="1"}HideNote(){this.note_node.style.opacity="0",this.note_node.style.pointerEvents="none"}HideTableSortButton(){this.sort_button.style.opacity="0",this.sort_button.style.pointerEvents="none"}ShowTableSortButton(e,t,r){if(!this.sort_button.parentElement)return;let i=!0,s=!1;e.sort&&e.sort.column===t&&(i=!e.sort.asc,s=!0),this.sort_button.style.opacity="1",this.sort_button.style.pointerEvents="initial",this.sort_button.classList.remove("asc","desc"),s&&this.sort_button.classList.add(i?"asc":"desc"),this.sort_button.dataset.asc=i.toString(),this.sort_button.dataset.table=e.name,this.sort_button.dataset.column=t.toString();let n=this.OffsetCellAddressToRectangle(r).Shift(this.header_size.width,this.header_size.height),a=this.sort_button.getBoundingClientRect();this.sort_button.style.left=n.right-a.width-a.width/2+"px",this.sort_button.style.top=n.top+(n.height-a.height)/2+"px"}ShowNote(e,t,r,i){if(i?this.note_node.innerHTML=i:this.note_node.textContent=e,!this.note_node.parentElement)return;let s=this.note_node.getBoundingClientRect(),n=this.note_node.parentElement.getBoundingClientRect(),a={x:8,y:2},o=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.note_node.style.left=n.left+o.right-this.scroll_reference_node.scrollLeft+a.x+"px",this.note_node.style.top=n.top+o.top-this.scroll_reference_node.scrollTop-s.height/5-a.y+"px",this.note_node.style.opacity="1",this.note_node.style.pointerEvents="auto"}AnnotationLayoutOrder(e,t){let r=-1;for(let s=0;s<this.view.active_sheet.annotations.length;s++)if(this.view.active_sheet.annotations[s]===e){r=s;break}if(r<0)return!1;let i=Math.min(Math.max(0,r+t),this.view.active_sheet.annotations.length-1);if(i===r)return!1;this.view.active_sheet.annotations.splice(r,1),this.view.active_sheet.annotations.splice(i,0,e);for(let s=0;s<this.view.active_sheet.annotations.length;s++){let n=this.view.active_sheet.annotations[s].key,a=this.container?.querySelectorAll(`.annotation[data-key="${n}"]`);if(a)for(let o=0;o<a?.length;o++)a[o].style.zIndex=(s+1).toString()}return!0}PointToAnnotationCorner(e){let t=this.PointToAddress_Grid(e,void 0,!1),r=this.CellAddressToRectangle(t);return{address:t,offset:{x:(e.x-r.left)/r.width,y:(e.y-r.top)/r.height}}}RectToAnnotationLayout(e){return{tl:this.PointToAnnotationCorner({x:(e.left||0)+1,y:(e.top||0)+1}),br:this.PointToAnnotationCorner({x:e.right||e.left||100,y:e.bottom||e.top||100})}}AddressToAnnotationLayout(e,t){let r={tl:this.CellAddressToRectangle(e),br:this.CellAddressToRectangle(t)};return{tl:this.PointToAnnotationCorner({x:r.tl.left||0,y:r.tl.top||0}),br:this.PointToAnnotationCorner({x:r.br.right||r.tl.left||100,y:r.br.bottom||r.tl.left||100})}}AnnotationLayoutToRect(e){let t=this.CellAddressToRectangle(e.tl.address),r=this.CellAddressToRectangle(e.br.address),i=t.left+t.width*e.tl.offset.x-1,s=t.top+t.height*e.tl.offset.y-1;return new F(i,s,r.left+r.width*e.br.offset.x-i,r.top+r.height*e.br.offset.y-s)}UpdateAnnotation(e){Array.isArray(e)||(e=[e]);for(let t of e){let r=t.view[this.view.view_index]||{};if(r.node){if(r.node.dataset.scale=this.scale.toString(),r.node.style.fontSize=`${10*this.scale}pt`,t.rect&&!t.layout&&(t.scaled_rect=t.rect.Scale(this.scale),t.layout=this.RectToAnnotationLayout(t.scaled_rect)),t.layout){let i=this.AnnotationLayoutToRect(t.layout);i.ApplyStyle(r.node),t.scaled_rect=i}r.node.dataset.key=t.key.toString(),(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.CloneFrozenAnnotation(t)}}}GetFrozenAnnotations(e){return[this.row_header_annotations,this.column_header_annotations,this.corner_annotations].map(r=>r.querySelector(`.annotation[data-key="${e.key}"]`)).filter(r=>r!==null)}CloneFrozenAnnotations(){for(let e of this.view.active_sheet.annotations)e.view[this.view.view_index]?.node&&e.key&&this.CloneFrozenAnnotation(e)}ClearFrozenAnnotations(){for(let e of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let t=e.querySelectorAll(".annotation");for(let r=0;r<t.length;r++)t[r].parentElement?.removeChild(t[r])}}RemoveFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r)}}CloneFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r);let i=e.view[this.view.view_index];if(r=i?.node?.cloneNode(!0),r){let s=r.querySelector(".annotation-move-target"),n=r.querySelector(".annotation-resize-target");r.addEventListener("mousedown",a=>{let o=i.node;requestAnimationFrame(()=>{o?.focus()}),this.AnnotationMouseDown(e,i.node,a,s,n)}),t.appendChild(r)}}}RemoveAnnotation(e){let t=e.view[this.view.view_index]||{};t.node&&t.node.parentElement?.removeChild(t.node),this.RemoveFrozenAnnotation(e)}RemoveAnnotationNodes(){let e=Array.prototype.map.call(this.annotation_container.children,t=>t);for(let t of e)this.annotation_container.removeChild(t);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.ClearFrozenAnnotations()}AddAnnotation(e){let t=e.view[this.view.view_index]||{};if(!t.node)throw new Error("annotation view/node missing");this.annotation_container.appendChild(t.node),this.UpdateAnnotation(e)}AnnotationMouseDown(e,t,r,i,s){let n=e.scaled_rect;return n?new Promise(a=>{let o={left:n.left,top:n.top,width:n.width,height:n.height},l=this.scroll_reference_node,d=l.getBoundingClientRect(),u=t.getBoundingClientRect();if(r.target===i||r.target!==s&&r.altKey){r.stopPropagation(),r.preventDefault(),t.focus();let h={x:u.left+r.offsetX-n.left,y:u.top+r.offsetY-n.top},p=[t,...this.GetFrozenAnnotations(e)],f=25,m=this.CellAddressToRectangle({row:0,column:0}).Combine(this.CellAddressToRectangle({row:this.view.active_sheet.rows-1,column:this.view.active_sheet.columns-1})).Expand(-1,-1);be(this.mask,"move",_=>{if(_.offsetY-d.top<this.header_offset.y){let b=Math.min(f,l.scrollTop);l.scrollTop-=b,h.y+=b}else if(_.offsetY-d.top>=d.height&&l.scrollTop+d.height<m.height){let b=f;l.scrollTop+=b,h.y-=b}if(_.offsetX-d.left<this.header_offset.x){let b=Math.min(f,l.scrollLeft);l.scrollLeft-=b,h.x+=b}else if(_.offsetX-d.left>=d.width&&l.scrollLeft+d.width<m.width){let b=f;l.scrollLeft+=b,h.x-=b}if(n.top=_.offsetY-h.y,n.left=_.offsetX-h.x,_.shiftKey){let b=Math.abs(n.left-o.left),g=Math.abs(n.top-o.top);b<=g?n.left=o.left:n.top=o.top}if(_.ctrlKey){let b=this.ClampToGrid({x:n.left,y:n.top});n.left=b.x,n.top=b.y}for(let b of p)b.style.top=n.top+"px",b.style.left=n.left+"px"},()=>{e.extent=void 0,e.layout=this.RectToAnnotationLayout(n),a({type:"annotation",annotation:e,event:"move"})});return}else if(r.target===s){r.stopPropagation(),r.preventDefault(),t.focus();let h=0;e.data?.original_size&&e.data.original_size.width&&e.data.original_size.height&&(h=e.data.original_size.width/e.data.original_size.height);let p=t.getBoundingClientRect(),f={x:p.left+r.offsetX-n.width+s.offsetLeft,y:p.top+r.offsetY-n.height+s.offsetTop};be(this.mask,"nw-resize",m=>{let _=[t,...this.GetFrozenAnnotations(e)];if(n.height=m.offsetY-f.y,n.width=m.offsetX-f.x,m.shiftKey&&m.ctrlKey){if(h){let b=Math.abs(n.width-o.width),g=Math.abs(n.height-o.height);b<g?n.width=h*n.height:n.height=n.width/h}}else if(m.shiftKey){let b=Math.abs(n.height-o.height),g=Math.abs(n.width-o.width);b>g?n.width=o.width:n.height=o.height}else if(m.ctrlKey){let b=this.ClampToGrid({x:n.right,y:n.bottom});n.width=b.x-n.left+1,n.height=b.y-n.top+1}for(let b of _)b.style.height=n.height+"px",b.style.width=n.width+"px"},()=>{e.extent=void 0,e.layout=this.RectToAnnotationLayout(n),a({type:"annotation",annotation:e,event:"resize"})});return}else a()}):(console.info("missing scaled rect!"),Promise.reject())}Initialize(e,t,r,i,s=!0){this.mask.parentElement||e.appendChild(this.mask),this.tooltip.parentElement||e.appendChild(this.tooltip),this.dropdown_caret.parentElement||e.appendChild(this.dropdown_caret),this.dropdown_list.parentElement||e.appendChild(this.dropdown_list),this.note_node.parentElement||e.appendChild(this.note_node),this.sort_button.parentElement||(e.appendChild(this.sort_button),this.sort_button.addEventListener("click",()=>{i(this.sort_button.dataset.table||"",Number(this.sort_button.dataset.column||"0")||0,/true/i.test(this.sort_button.dataset.asc||"")),this.sort_button.classList.remove("asc","desc"),this.sort_button.dataset.asc==="true"?(this.sort_button.dataset.asc="false",this.sort_button.classList.add("desc")):(this.sort_button.dataset.asc="true",this.sort_button.classList.add("asc"))})),this.title_node.parentElement||e.appendChild(this.title_node),this.InitializeInternal(e,t),!s&&this.scroll_reference_node&&(this.scroll_reference_node.style.overflow="hidden"),this.dropdown_callback=r,this.initialized=!0}MockSelection(){if(!this.container||this.trident)return;let e=window.getSelection();if(e){let t=document.createRange();t.selectNodeContents(this.mock_selection),e.removeAllRanges(),e.addRange(t)}}CreateTile(e,t,r,i,s,n,a,o=!0){let l=document.createElement("canvas");return l.setAttribute("class",e),l.logical_size=t,l.width=t.width*this.dpr,l.height=t.height*this.dpr,l.style.width=`${t.width}px`,l.style.height=`${t.height}px`,l.tile_position=r,l.first_cell=i,this.UpdateTileGridPosition(l),l.last_cell={row:i.row+s.rows-1,column:i.column+s.columns-1},l.pixel_start=n,l.pixel_end={x:n.x+t.width,y:n.y+t.height},l.dirty=!!o,l.needs_full_repaint=!0,a.appendChild(l),l}ApplyTheme(e){this.row_header.style.backgroundColor=this.column_header.style.backgroundColor=this.corner.style.backgroundColor=e.headers?.fill?_e(e,e.headers.fill):"",this.corner.style.borderColor=e.grid_color||"";for(let t of this.grid_tiles)for(let r of t)r.style.backgroundColor=_e(e,e.grid_cell?.fill)||"#fff";this.dropdown_list.style.font=A.Font(e.grid_cell||{})}UpdateTotalSize(){this.total_height=0;let e=this.view.active_sheet.rows;for(let r=0;r<e;r++)this.total_height+=this.RowHeight(r);this.total_width=0;let t=this.view.active_sheet.columns;for(let r=0;r<t;r++)this.total_width+=this.ColumnWidth(r)}UpdateContentsSize(){let e=this.row_header_tiles.reduce((r,i)=>r+i.logical_size.height,0),t=this.column_header_tiles.reduce((r,i)=>r+i.logical_size.width,0);this.column_header.style.width=this.contents.style.width=`${t}px`,this.row_header.style.height=this.contents.style.height=`${e}px`}HideTooltip(){this.tooltip.style.display="none",this.tooltip_state=void 0,this.tooltip.classList.remove("arrow-up"),this.tooltip.classList.remove("arrow-left")}ShowTooltip(e={}){e.up?(this.tooltip.classList.add("arrow-up"),this.tooltip_state="up"):e.left&&(this.tooltip.classList.add("arrow-left"),this.tooltip_state="left"),this.tooltip.style.display="block",this.UpdateTooltip(e)}ShowDropdownCaret(e,t,r){let i=this.OffsetCellAddressToRectangle(e.start);e.count>1&&(i=i.Combine(this.OffsetCellAddressToRectangle(e.end))),i=i.Shift(this.header_size.width,this.header_size.height);let s=Math.round(this.scale*Math.max(8,Math.min(20,i.height)));this.dropdown_caret.style.height=`${s}px`,this.dropdown_caret.style.width=`${s}px`,this.dropdown_caret.style.left=`${i.right+1}px`,this.dropdown_caret.style.top=`${i.bottom-s}px`,this.dropdown_list.style.top=`${i.bottom+2}px`,this.dropdown_list.style.left=`${i.left+2}px`,this.dropdown_list.style.minWidth=`${i.width}px`,this.dropdown_list.textContent="";for(let n of t){let a=I.CreateDiv(void 0,this.dropdown_list);r===n&&(this.dropdown_selected=a,a.classList.add("selected")),a.dropdown_value=n,a.textContent=n?.toString()||""}this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.style.display="block",this.dropdown_caret_visible=!0}HideDropdownCaret(){this.dropdown_caret_visible&&(this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret_visible=!1,this.dropdown_caret.style.display="none")}GetScrollOffset(){return{x:this.scroll_reference_node.scrollLeft+this.header_offset.x,y:this.scroll_reference_node.scrollTop+this.header_offset.y}}ScrollTo(e,t=!0,r=!0,i=!1){let s=this.CellAddressToRectangle(e);if(i&&this.scroll_reference_node.scrollTo){let n={left:this.scroll_reference_node.scrollLeft,top:this.scroll_reference_node.scrollTop},a={left:t?s.left:n.left,top:r?s.top:n.top,behavior:"smooth"};this.scroll_reference_node.scrollTo(a)}else r&&(this.scroll_reference_node.scrollTop=s.top),t&&(this.scroll_reference_node.scrollLeft=s.left)}ScrollIntoView(e){let t=this.CellAddressToRectangle(e),r=this.scroll_reference_node.clientWidth-this.row_header.offsetWidth,i=this.scroll_reference_node.clientHeight-this.column_header.offsetHeight,s={x:0,y:0},n={x:!1,y:!1},a=new F(this.scroll_reference_node.scrollLeft,this.scroll_reference_node.scrollTop,r,i);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&(this.view.active_sheet.freeze.rows&&e.row>=this.view.active_sheet.freeze.rows?s.y=this.frozen_row_tiles[0].logical_size.height:this.view.active_sheet.freeze.rows&&(n.y=!0),this.view.active_sheet.freeze.columns&&e.column>=this.view.active_sheet.freeze.columns?s.x=this.frozen_column_tiles[0].logical_size.width:this.view.active_sheet.freeze.columns&&(n.x=!0)),e.row!==1/0&&(t.top<a.top+s.y&&!n.y?this.scroll_reference_node.scrollTop=t.top-s.y:t.bottom>a.bottom&&(this.scroll_reference_node.scrollTop=t.bottom-i)),e.column!==1/0&&(t.left<a.left+s.x&&!n.x?this.scroll_reference_node.scrollLeft=t.left-s.x:t.right>a.right&&(this.scroll_reference_node.scrollLeft=t.right-r))}UpdateTooltip(e={}){if(typeof e.text<"u"&&(this.tooltip.textContent=e.text),typeof e.x<"u"){let t=e.x||0;this.tooltip_state==="up"&&(t-=this.tooltip.offsetWidth/2),this.tooltip.style.left=Math.round(t)+"px"}if(typeof e.y<"u"){let t=e.y||0;this.tooltip_state==="left"&&(t-=this.tooltip.offsetHeight/2),this.tooltip.style.top=Math.round(t)+"px"}}CoordinateToRowHeader(e){let t={column:1/0,row:0};if(this.view.active_sheet.freeze.rows&&this.frozen_row_tiles[0].pixel_end.y>=e-this.scroll_reference_node.scrollTop){let r=0;e-=this.scroll_reference_node.scrollTop;for(let i=0;i<this.view.active_sheet.freeze.rows;i++)if(r+=this.RowHeight(i),r>=e)return t.row=i,t}for(let r of this.row_header_tiles)if(r.pixel_end.y>=e){let i=e-r.pixel_start.y,s=0;for(t.row=r.first_cell.row;t.row<=r.last_cell.row;t.row++,i-=s)if(s=this.RowHeight(t.row),s>i)return t;return t}return t}CoordinateToColumnHeader(e){let t={row:1/0,column:0};if(this.view.active_sheet.freeze.columns&&this.frozen_column_tiles[0].pixel_end.x>=e-this.scroll_reference_node.scrollLeft){let r=0;e-=this.scroll_reference_node.scrollLeft;for(let i=0;i<this.view.active_sheet.freeze.columns;i++)if(r+=this.ColumnWidth(i),r>=e)return t.column=i,t}for(let r of this.column_header_tiles)if(r.pixel_end.x>=e){let i=e-r.pixel_start.x,s=0;for(t.column=r.first_cell.column;t.column<=r.last_cell.column;t.column++,i-=s)if(s=this.ColumnWidth(t.column),s>i)return t;return t}return t}PointToAddress_Grid(e,t=!1,r=!0){if(r){if(this.view.active_sheet.freeze.rows){let a=this.frozen_row_tiles[0].logical_size.height;e.y-this.scroll_reference_node.scrollTop<a&&(e.y-=this.scroll_reference_node.scrollTop)}if(this.view.active_sheet.freeze.columns){let a=this.frozen_column_tiles[0].logical_size.width;e.x-this.scroll_reference_node.scrollLeft<a&&(e.x-=this.scroll_reference_node.scrollLeft)}}let i={row:0,column:0},s=this.grid_tiles[this.grid_tiles.length-1],n=s[s.length-1];if(e.y>n.pixel_end.y){let a=e.y-n.pixel_end.y;for(i.row=n.last_cell.row;a>0;)i.row++,a-=this.default_row_height}else for(let a of s)if(a.pixel_start.y<=e.y&&a.pixel_end.y>=e.y){let o=e.y-a.pixel_start.y,l=0;for(i.row=a.first_cell.row;i.row<=a.last_cell.row&&(l=this.RowHeight(i.row),!(l>o));i.row++,o-=l);break}if(e.x>n.pixel_end.x){let a=e.x-n.pixel_end.x;for(i.column=n.last_cell.column;a>0;)i.column++,a-=this.default_column_width}else for(let a of this.grid_tiles)if(a[0].pixel_start.x<=e.x&&a[0].pixel_end.x>=e.x){let o=a[0],l=e.x-o.pixel_start.x,d=0;for(i.column=o.first_cell.column;i.column<=o.last_cell.column&&(d=this.ColumnWidth(i.column),!(d>l));i.column++,l-=d);break}return i}AdjacentTile(e,t=0,r=0){if(!t&&!r)return e;let i=e.tile_position,s=e.tile_position.row+t,n=e.tile_position.column+r;if(!(s<0||n<0)){if(this.grid_tiles[i.column]&&this.grid_tiles[i.column][i.row]===e&&this.grid_tiles[n])return this.grid_tiles[n][s];if(!i.column&&this.frozen_column_tiles[i.row]===e)return this.frozen_column_tiles[s];if(!i.row&&this.frozen_row_tiles[i.column]===e)return this.frozen_row_tiles[n]}}UpdateTiles(){if(!this.container)throw new Error("invalid container");this.grid_tiles.forEach(v=>{v.forEach(w=>{w.parentElement&&w.parentElement.removeChild(w)})});for(let v of[this.column_header_tiles,this.row_header_tiles,this.frozen_row_tiles,this.frozen_column_tiles])for(let w of v)w.parentElement&&w.parentElement.removeChild(w);this.frozen_row_tiles=[],this.frozen_column_tiles=[],this.row_header_tiles=[],this.column_header_tiles=[],this.grid_tiles=[];let e=this.view.active_sheet;this.default_row_height=Math.round(e.default_row_height*this.scale),this.default_column_width=Math.round(e.default_column_width*this.scale),this.header_offset={x:Math.round(e.header_offset.x*this.scale),y:Math.round(e.header_offset.y*this.scale)},this.UpdateContainingGrid();let t=this.view.active_sheet.rows,r=this.view.active_sheet.columns;t||(t=100),r||(r=40);let i=0,s=0;for(let v=0;v<t;v++)i+=this.RowHeight(v);for(let v=0;v<r;v++)s+=this.ColumnWidth(v);if(!s||!i)throw"unexpected missing total size";if(i||(i=this.default_row_height*t),s||(s=this.default_column_width*r),this.container.offsetWidth>s){let v=Math.ceil((this.container.offsetWidth-s)/this.default_column_width);s+=v*this.default_column_width,r+=v}if(this.last_column=r,this.container.offsetHeight>i){let v=Math.ceil((this.container.offsetHeight-i)/this.default_row_height);i+=v*this.default_row_height,t+=v}this.column_header.style.width=this.contents.style.width=`${s}px`,this.row_header.style.height=this.contents.style.height=`${i}px`;let n=[],a=[],o=0,l=0;for(let v=0;v<r;v++){let w=this.ColumnWidth(v);o&&o+w>this.default_tile_size.width&&(n.push(o),a.push(l),l=v,o=0),o+=w}n.push(o),a.push(l);let d=[],u=[],h=0,p=0;for(let v=0;v<t;v++){let w=this.RowHeight(v);h&&h+w>this.default_tile_size.height&&(d.push(h),u.push(p),h=0,p=v),h+=w}d.push(h),u.push(p);let f=n.length,m=d.length,_=0,b=0,g=0,x=0;for(let v=0;v<this.view.active_sheet.freeze.rows;v++)g+=this.RowHeight(v);for(let v=0;v<this.view.active_sheet.freeze.columns;v++)x+=this.ColumnWidth(v);for(let v=0;v<f;v++){let w=[];_=0;let S=v===f-1?r-a[v]:a[v+1]-a[v];this.column_header_tiles.push(this.CreateTile("column-header-tile",{height:this.header_offset.y,width:n[v]},{row:0,column:v},{row:0,column:a[v]},{rows:0,columns:S},{x:b,y:0},this.column_header)),this.view.active_sheet.freeze.rows&&this.frozen_row_tiles.push(this.CreateTile("frozen-row-tile",{height:g,width:n[v]},{row:1,column:v},{row:0,column:a[v]},{rows:0,columns:S},{x:b,y:0},this.column_header));for(let R=0;R<m;R++){let E=R===m-1?t-u[R]:u[R+1]-u[R];v||(this.row_header_tiles.push(this.CreateTile("row-header-tile",{height:d[R],width:this.header_offset.x},{row:R,column:0},{row:u[R],column:0},{rows:E,columns:1},{x:0,y:_},this.row_header)),this.view.active_sheet.freeze.columns&&this.frozen_column_tiles.push(this.CreateTile("frozen-column-tile",{height:d[R],width:x},{row:R,column:1},{row:u[R],column:0},{rows:E,columns:1},{x:0,y:_},this.row_header))),w.push(this.CreateTile("grid-tile",{height:d[R],width:n[v]},{row:R,column:v},{row:u[R],column:a[v]},{rows:E,columns:S},{x:b,y:_},this.contents)),_+=d[R]}this.grid_tiles.push(w),b+=n[v]}this.total_height=i,this.total_width=s,this.ClearLayoutCaches(),this.UpdateGridTemplates(!0,!0)}ClearLayoutCaches(){this.row_cache=[],this.column_cache=[]}TileIndexForColumn(e){for(let t of this.column_header_tiles)if(t.first_cell.column<=e&&t.last_cell.column>=e)return t.tile_position.column;return-1}TileIndexForRow(e){for(let t of this.row_header_tiles)if(t.first_cell.row<=e&&t.last_cell.row>=e)return t.tile_position.row;return-1}DirtyHeaders(e){if(e){for(let t of this.column_header_tiles){if(t.dirty)continue;let r=new y({row:e.start.row,column:t.first_cell.column},{row:e.start.row,column:t.last_cell.column});(e.entire_row||r.Intersects(e))&&(t.dirty=!0)}for(let t of this.row_header_tiles){if(t.dirty)continue;let r=new y({column:e.start.column,row:t.first_cell.row},{column:e.start.column,row:t.last_cell.row});(e.entire_column||r.Intersects(e))&&(t.dirty=!0)}}}DirtyAll(){for(let e of this.grid_tiles)for(let t of e)t.dirty=!0}DirtyArea(e){if(!this.initialized)return;let t={row:0,column:0},r={row:this.grid_tiles[0].length-1,column:this.grid_tiles.length-1};e.start.column!==1/0&&(t.column=r.column=this.TileIndexForColumn(e.start.column),e.end.column!==e.start.column&&(r.column=this.TileIndexForColumn(e.end.column))),e.start.row!==1/0&&(t.row=r.row=this.TileIndexForRow(e.start.row),e.end.row!==e.start.row&&(r.row=this.TileIndexForRow(e.end.row)));for(let i=t.column;i<=r.column;i++)for(let s=t.row;s<=r.row;s++)this.grid_tiles[i][s].dirty=!0}VisibleTiles(){let e=[{row:0,column:0},{row:0,column:0}];if(!this.container||!this.grid_tiles.length||!this.grid_tiles[0].length)return new y(e[0],e[1]);let t=this.scroll_reference_node.scrollLeft,r=t+this.scroll_reference_node.offsetWidth,i=this.scroll_reference_node.scrollTop,s=i+this.scroll_reference_node.offsetHeight;for(let n of this.grid_tiles){let a=n[0];if(a.pixel_start.x<=t&&a.pixel_end.x>=t){for(a of n)if(a.pixel_start.y<=i&&a.pixel_end.y>=i){e[0]=a.tile_position;break}}if(n===this.grid_tiles[this.grid_tiles.length-1]||a.pixel_start.x<=r&&a.pixel_end.x>=r){for(a of n)if(a===n[n.length-1]||a.pixel_start.y<=s&&a.pixel_end.y>=s)return e[1]=a.tile_position,new y(e[0],e[1])}}return new y(e[0],e[1])}UpdateTileHeights(e=!0,t=-1){let r=0;for(let i=0;i<this.row_header_tiles.length;i++){let s=this.row_header_tiles[i];if(t>s.last_cell.row){r+=s.logical_size.height;continue}let n=0;for(let o=s.first_cell.row;o<=s.last_cell.row;o++)n+=this.RowHeight(o);let a=s.logical_size.height===n;if(s.pixel_start.y=r,r+=n,s.pixel_end.y=r,!a){if(s.logical_size.height=n,s.style.height=`${n}px`,s.height=this.dpr*n,this.view.active_sheet.freeze.columns){let o=this.frozen_column_tiles[i];o.logical_size.height=n,o.style.height=`${n}px`,o.height=this.dpr*n}e&&(s.dirty=!0,s.needs_full_repaint=!0)}for(let o of this.grid_tiles){let l=o[i];l.pixel_start.y=s.pixel_start.y,l.pixel_end.y=s.pixel_end.y,a||(l.logical_size.height=n,l.style.height=`${n}px`,l.height=this.dpr*n,e&&(l.dirty=!0,l.needs_full_repaint=!0))}}if(this.view.active_sheet.freeze.rows){let i=0;for(let s=0;s<this.view.active_sheet.freeze.rows;s++)i+=this.RowHeight(s);for(let s of this.frozen_row_tiles)s.style.height=`${i}px`,s.height=i*this.dpr;i+=this.header_offset.y,this.corner_canvas.style.height=`${i}px`,this.corner_canvas.height=i*this.dpr;for(let s of this.grid_tiles)s[0].dirty=!0}this.UpdateGridTemplates(!1,!0),this.row_header.style.height=this.contents.style.height=`${r}px`,this.ClearLayoutCaches()}UpdateTileWidths(e=!0,t=-1){let r=0;for(let i=0;i<this.column_header_tiles.length;i++){let s=this.column_header_tiles[i],n=this.grid_tiles[i];if(t>s.last_cell.column){r+=s.logical_size.width;continue}let a=0;for(let l=s.first_cell.column;l<=s.last_cell.column;l++)a+=this.ColumnWidth(l);let o=s.logical_size.width===a;if(s.pixel_start.x=r,r+=a,s.pixel_end.x=r,!o){if(s.logical_size.width=a,s.style.width=`${a}px`,s.width=this.dpr*a,this.view.active_sheet.freeze.rows){let l=this.frozen_row_tiles[i];l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a}e&&(s.dirty=!0,s.needs_full_repaint=!0)}for(let l of n)l.pixel_start.x=s.pixel_start.x,l.pixel_end.x=s.pixel_end.x,o||(l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a,e&&(l.dirty=!0,l.needs_full_repaint=!0))}if(this.view.active_sheet.freeze.columns){let i=0;for(let s=0;s<this.view.active_sheet.freeze.columns;s++)i+=this.ColumnWidth(s);for(let s of this.frozen_column_tiles)s.style.width=`${i}px`,s.width=i*this.dpr;i+=this.header_offset.x,this.corner_canvas.style.width=`${i}px`,this.corner_canvas.width=i*this.dpr;for(let s of this.grid_tiles[0])s.dirty=!0}this.UpdateGridTemplates(!0,!1),this.column_header.style.width=this.contents.style.width=`${r}px`,this.ClearLayoutCaches()}ClampToGrid(e){let t=this.PointToAddress_Grid(e),r=this.OffsetCellAddressToRectangle(t);return e.x>r.left+r.width/2?e.x=r.left+r.width-1:e.x=r.left-1,e.y>r.top+r.height/2?e.y=r.top+r.height-1:e.y=r.top-1,e}OffsetCellAddressToRectangle(e){let t=this.CellAddressToRectangle(e);return e.column>=0&&e.column<this.view.active_sheet.freeze.columns&&(t=t.Shift(this.scroll_reference_node.scrollLeft,0)),e.row>=0&&e.row<this.view.active_sheet.freeze.rows&&(t=t.Shift(0,this.scroll_reference_node.scrollTop)),t}CellAddressToRectangle(e){let t=e.row===1/0||e.row<0?0:e.row,r=e.column===1/0||e.column<0?0:e.column;if(this.column_cache.length<=r+1){this.column_cache.length||(this.column_cache[0]=0);for(let n=this.column_cache.length-1;n<=r;n++)this.column_cache[n+1]=this.column_cache[n]+this.ColumnWidth(n)}if(this.row_cache.length<=t+1){this.row_cache.length||(this.row_cache[0]=0);for(let n=this.row_cache.length-1;n<=t;n++)this.row_cache[n+1]=this.row_cache[n]+this.RowHeight(n)}let i=this.column_cache[r],s=this.row_cache[t];return new F(i,s,this.column_cache[r+1]-i,this.row_cache[t+1]-s)}ResizeTileWidth(e,t,r=!0){let i=this.column_header_tiles[e],s=t-i.logical_size.width;i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<this.column_header_tiles.length;a++){this.column_header_tiles[a].pixel_start.x+=s,this.column_header_tiles[a].pixel_end.x+=s;for(let o of this.grid_tiles[a])o.pixel_start.x+=s,o.pixel_end.x+=s}let n=this.grid_tiles[e];for(i of n)i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);this.UpdateTotalSize(),this.UpdateGridTemplates(!0,!1),this.UpdateContentsSize()}ResizeTileHeight(e,t,r=!0){let i=this.row_header_tiles[e],s=t-i.logical_size.height;i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let n=e+1;n<this.row_header_tiles.length;n++)i=this.row_header_tiles[n],i.pixel_start.y+=s,i.pixel_end.y+=s;for(let n of this.grid_tiles){i=n[e],i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<n.length;a++)n[a].pixel_start.y+=s,n[a].pixel_end.y+=s}this.UpdateTotalSize(),this.UpdateGridTemplates(!1,!0),this.UpdateContentsSize()}};var Pt="http://www.w3.org/2000/svg",Nt=class extends zt{constructor(e,t){super(e,t),this.column_header=I.CreateDiv("top-header"),this.row_header=I.CreateDiv("left-header"),this.corner=I.CreateDiv("corner"),this.corner_canvas=document.createElement("canvas"),this.corner.appendChild(this.corner_canvas),this.contents=I.CreateDiv("contents"),this.buffer_canvas=I.Create("canvas","treb-buffer-canvas",this.contents),this.grid_selection=document.createElementNS(Pt,"svg"),this.grid_selection.classList.add("grid-selection"),this.contents.appendChild(this.grid_selection),this.row_header_selection=document.createElementNS(Pt,"svg"),this.row_header_selection.classList.add("frozen-selection"),this.row_header_selection.classList.add("frozen-selection-rows"),this.column_header.appendChild(this.row_header_selection),this.row_header_annotations=I.CreateDiv("frozen-annotation-container frozen-annotation-container-rows",this.column_header),this.column_header_selection=document.createElementNS(Pt,"svg"),this.column_header_selection.classList.add("frozen-selection"),this.column_header_selection.classList.add("frozen-selection-columns"),this.row_header.appendChild(this.column_header_selection),this.column_header_annotations=I.CreateDiv("frozen-annotation-container frozen-annotation-container-columns",this.row_header),this.corner_selection=document.createElementNS(Pt,"svg"),this.corner_selection.classList.add("frozen-selection"),this.corner.appendChild(this.corner_selection),this.corner_annotations=I.CreateDiv("frozen-annotation-container frozen-annotation-container-corner",this.corner),this.annotation_container=I.CreateDiv("annotation-container"),this.grid_cover=I.CreateDiv("tile-cover grid-cover"),this.column_header_cover=I.CreateDiv("tile-cover column-header-cover"),this.row_header_cover=I.CreateDiv("tile-cover row-header-cover")}InitializeInternal(e,t){this.container=e,this.container.classList.add("grid-layout"),this.scroll_reference_node=this.container,e.appendChild(this.column_header),e.appendChild(this.row_header),e.appendChild(this.corner),e.appendChild(this.contents),e.appendChild(this.annotation_container),e.appendChild(this.grid_cover),e.appendChild(this.column_header_cover),e.appendChild(this.row_header_cover),e.appendChild(this.mock_selection),this.container.addEventListener("scroll",()=>t())}ResizeCursor(e){switch(e){case"row":this.row_header_cover.classList.add("resize");break;case"column":this.column_header_cover.classList.add("resize");break;default:this.row_header_cover.classList.remove("resize"),this.column_header_cover.classList.remove("resize");break}}UpdateTileGridPosition(e){e.style.gridColumn=`${e.tile_position.column+1} / ${e.tile_position.column+2}`,e.style.gridRow=`${e.tile_position.row+1} / ${e.tile_position.row+2}`}UpdateContainingGrid(){if(!this.container)throw new Error("missing container");this.header_size.width=this.header_offset.x,this.header_size.height=this.header_offset.y;let e=this.header_offset.x,t=this.header_offset.y;if(this.view.active_sheet.freeze.columns)for(let r=0;r<this.view.active_sheet.freeze.columns;r++)e+=this.ColumnWidth(r);if(this.view.active_sheet.freeze.rows)for(let r=0;r<this.view.active_sheet.freeze.rows;r++)t+=this.RowHeight(r);this.container.style.gridTemplateColumns=`${this.header_offset.x}px auto`,this.container.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.corner_canvas.setAttribute("width",`${this.dpr*e}`),this.corner_canvas.setAttribute("height",`${this.dpr*t}`),this.column_header.style.height=`${t}px`,this.corner_canvas.style.width=`${e}px`,this.corner_canvas.style.height=`${t}px`}UpdateGridTemplates(e=!0,t=!0){let r=0,i=0;this.column_header.style.gridTemplateColumns=this.contents.style.gridTemplateColumns=this.column_header_tiles.map(l=>(r+=l.logical_size.width,`${l.logical_size.width}px`)).join(" "),this.column_header.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.row_header.style.gridTemplateRows=this.contents.style.gridTemplateRows=this.row_header_tiles.map(l=>(i+=l.logical_size.height,`${l.logical_size.height}px`)).join(" ");let s=this.header_offset.y;if(this.view.active_sheet.freeze.rows)for(let l=0;l<this.view.active_sheet.freeze.rows;l++)s+=this.RowHeight(l);this.column_header.style.height=`${s}px`,this.row_header_selection.style.display="block",this.row_header_selection.style.width=`${r}px`,this.corner_selection.style.height=this.row_header_selection.style.height=`${s}px`,this.corner_selection.style.top=this.row_header_selection.style.top="0px",this.row_header_selection.style.left="0px";let n=this.header_offset.x;if(this.view.active_sheet.freeze.columns)for(let l=0;l<this.view.active_sheet.freeze.columns;l++)n+=this.ColumnWidth(l);this.column_header_selection.style.display="block",this.corner_selection.style.width=this.column_header_selection.style.width=`${n}px`,this.column_header_selection.style.height=`${i}px`,this.column_header_selection.style.top="0px",this.corner_selection.style.left=this.column_header_selection.style.left="0px";let a={x:this.view.active_sheet.header_offset.x*this.scale,y:this.view.active_sheet.header_offset.y*this.scale},o=this.view.active_sheet.freeze;o.rows&&o.columns?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="block"):o.rows?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"):o.columns?(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="none"):(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"),this.row_header_annotations.style.width=`${r}px`,this.corner_annotations.style.height=this.row_header_annotations.style.height=`${s-a.y}px`,this.corner_annotations.style.top=this.row_header_annotations.style.top=`${a.y}px`,this.column_header_annotations.style.width=this.corner_annotations.style.width=`${n-a.x}px`,this.column_header_annotations.style.height=`${i}px`,this.corner_annotations.style.left=this.column_header_annotations.style.left=`${a.x}px`,this.corner_selection.style.display="block",this.grid_selection.style.width=`${r}px`,this.grid_selection.style.height=`${i}px`,this.grid_selection.style.top=`${this.header_offset.y}px`,this.grid_selection.style.left=`${this.header_offset.x}px`,this.annotation_container.style.width=`${r}px`,this.annotation_container.style.height=`${i}px`,this.annotation_container.style.top=`${this.header_offset.y}px`,this.annotation_container.style.left=`${this.header_offset.x}px`}};var Ot=class{function_names=[];argument_separator=T.argument_separator.charCodeAt(0);function_map={};RemoveFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]);for(let r of e)t=t.filter(i=>i.name!==r.name);this.SetFunctions(t)}AddFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]).concat(...e);this.SetFunctions(t)}SetFunctions(e){this.function_map={},this.function_names=e.map(t=>(this.function_map[t.name.toLowerCase()]=t,t.name)).sort((t,r)=>t.toLowerCase().localeCompare(r.toLowerCase()))}NormalizeIdentifier(e){let t=this.function_map[e.toLowerCase()];return t?t.name:void 0}Exec(e){if(e.text[0]!=="=")return{};let t,r={};if(e.cursor===e.text.length&&(t=e.text.match(/(?:^|[^A-Za-z_\d])([A-Za-z_][\w\d_.]*)\s*$/),t)){let s=t[1],n=new RegExp("^"+s.replace(".","\\."),"i");r={completions:this.function_names.filter(o=>n.test(o)).map(o=>this.function_map[o.toLowerCase()]),token:s,position:e.cursor-s.length}}let i=this.ParseTooltip(e.text.substr(0,e.cursor));if(i.function){let s=this.function_map[i.function.toLowerCase()];s&&(r.tooltip='<span class="notranslate">'+s.name+"</span>",r.arguments="("+(s.arguments||[]).map((n,a)=>{let o=n.name||"argument";return a===i.argument?`<span class="active-argument">${o}</span>`:o}).join(T.argument_separator+" ")+")",r.description=s.description?`<span class="function-description">${s.description}</span>`:"",r.function_position=i.position||0)}return r}ParseTooltip(e){let t=[],r=0,i="",s=!1,n=0;for(let o of e){let l=o.charCodeAt(0);if(s)l===34&&(s=!1);else switch(l){case 40:t.push({buffer:i.trim(),argument:r,position:n-i.length}),i="",r=0;break;case this.argument_separator:r++;break;case 41:r=t.pop()?.argument||0;break;case 34:i="",s=!0;break;default:l>=97&&l<=122||l>=65&&l<=90||l>=48&&l<=57||l===95||l===46?i+=o:i=""}n++}let a=t.pop();return{function:a?.buffer||void 0,position:a?.position||0,argument:r}}};var js=typeof navigator>"u"?"":navigator.appVersion,Ae=typeof navigator>"u"?"":navigator.userAgent,Mr=class{is_edge=/Edge/.test(js);is_ipad=/iPad|iPhone/.test(Ae);is_android=/android|samsung/i.test(Ae);is_mobile=this.is_ipad||this.is_android;is_firefox=/firefox/i.test(Ae);is_safari=/safari/i.test(Ae)&&!/edg/i.test(Ae);is_mac=/macintosh/i.test(Ae);is_chrome=/Chrome/i.test(Ae);is_windows=/win64|win32|windows\s+nt/i.test(Ae);is_modern=!this.is_edge&&!(this.is_firefox&&this.is_android)&&/webkit|firefox/i.test(Ae)},Js={is_edge:!1,is_ipad:!1,is_android:!1,is_firefox:!1,is_safari:!1,is_mac:!1,is_chrome:!1,trident:!1,is_windows:!1,is_modern:!0,is_node:!0,is_mobile:!1},ie=typeof navigator>"u"?Js:new Mr;var Lr=class extends te{constructor(t,r,i,s,n){super();this.parser=t;this.theme=r;this.model=i;this.view=s;this.autocomplete=n;this.measurement_node=document.createElement("div")}active_cell;target_address;autocomplete_matcher;measurement_node;selecting_=!1;editor_insert_node;editor_node;container_node;last_parse_string="";last_parse_result;reference_list;dependency_list=[];reference_index_map=[];last_reconstructed_text="";enable_reconstruct=!0;get selecting(){return this.selecting_}selection_={target:{row:0,column:0},area:new y({row:0,column:0})};get selection(){return this.selection_}set selection(t){if(t){let r=t.target||t.area.start;this.selection_={target:{row:r.row,column:r.column},area:new y(t.area.start,t.area.end)}}else{let r={row:0,column:0};this.selection_={target:r,area:new y(r)}}}UpdateTheme(t){}InsertReference(t,r){if(!this.editor_node)return;if(!this.editor_insert_node){let s=window.getSelection();if(s){let n=s.getRangeAt(0);this.editor_insert_node=document.createElement("span"),n.insertNode(this.editor_insert_node),s.collapseToEnd()}}if(this.editor_insert_node&&(this.editor_insert_node.innerText=t,t.length)){let s=window.getSelection();if(s){let n=document.createRange();n.selectNodeContents(this.editor_insert_node),s.removeAllRanges(),s.addRange(n),s.collapseToEnd()}}let i=this.ListDependencies();this.Publish({type:"update",text:this.editor_node.textContent||void 0,dependencies:i})}Autocomplete(t,r){if(!this.container_node)return;let i;r?.nodeType===Node.ELEMENT_NODE?i=r.getBoundingClientRect():i=this.container_node.getBoundingClientRect();let s=new F(Math.round(i.left),Math.round(i.top),i.width,i.height);this.autocomplete.Show(this.AcceptAutocomplete.bind(this),t,s)}FlushReference(){this.editor_insert_node=void 0}SubstringToCaret(t){let r=window.getSelection();if(!r)throw new Error("error getting selection");if(r.rangeCount===0)return console.warn("range count is 0"),"";let i=r.getRangeAt(0),s=i.cloneRange();return s.selectNodeContents(t),s.setEnd(i.endContainer,i.endOffset),this.measurement_node.textContent="",this.measurement_node.appendChild(s.cloneContents()),this.measurement_node.textContent}UpdateSelectState(t=!1){let r=!1,i=!1;if(!this.editor_node)return;let s=this.editor_node.textContent||"";if(s.trim()[0]==="="){i=!0;let a=this.SubstringToCaret(this.editor_node).trim();if(a.length){let o=a[a.length-1];Lr.FormulaChars.some(d=>o===d)&&(r=!0);let l=this.autocomplete_matcher;l&&ne().then(()=>{let d=l.Exec({text:s,cursor:a.length}),u=this.NodeAtIndex(d.completions?d.position||0:d.function_position||0);this.Autocomplete(d,u)})}}r!==this.selecting_?(this.selecting_=r,r||this.Reconstruct(),(t||!r)&&this.Publish({type:"end-selection"})):r&&t&&this.Publish({type:"end-selection"});let n=i?this.ListDependencies():void 0;this.Publish({type:"update",text:s,dependencies:n})}NodeAtIndex(t){let r=this.editor_node?.childNodes||[];for(let i=0;i<r.length;i++){let s=r[i].textContent?.length||0;if(s>t)return r[i];t-=s}}Reconstruct(){if(!this.enable_reconstruct||!this.editor_node||(this.ParseDependencies(),!this.reference_list))return;let t=this.editor_node.textContent||"";if(t.trim()[0]!=="="||(this.editor_node.spellcheck=!1,this.selecting)||t.trim()===this.last_reconstructed_text.trim())return;this.last_reconstructed_text=t;let i=this.SubstringToCaret(this.editor_node).length,s=document.createDocumentFragment(),n,a=0,o,l="";if(this.last_parse_result){let d=0,u="",h=0,p=(f,m,_,b)=>{let g=document.createTextNode(m);if(_==="text")s.appendChild(g);else{let x=document.createElement("span");x.appendChild(g),x.dataset.position=f.toString(),x.dataset.type=_,_==="address"||_==="range"?x.classList.add(`highlight-${this.reference_index_map[h++]%5+1}`):_==="structured-reference"?this.target_address&&b?.type==="structured-reference"&&this.model.ResolveStructuredReference(b,this.target_address)&&x.classList.add(`highlight-${this.reference_index_map[h++]%5+1}`):_==="identifier"&&this.model.named_ranges.Get(m)&&x.classList.add(`highlight-${this.reference_index_map[h++]%5+1}`),s.appendChild(x)}return i>=f&&i<f+m.length&&(n=g,a=i-f),g};this.last_parse_result.expression&&this.parser.Walk(this.last_parse_result.expression,f=>{switch(f.type){case"address":case"range":case"call":case"identifier":case"structured-reference":f.position!==d-1&&p(d,t.substring(d,f.position+1),"text"),f.type==="call"||f.type==="identifier"?u=f.name:u=this.last_parse_string.substring(f.position+1,f.position+f.label.length+1),p(f.position+1,u,f.type,f),d=f.position+u.length+1;break}return f.type!=="range"}),l=t.substring(d)||"",o=p(d,l,"text")}if(!n)if(t.length===i){let d=document.createElement("span");s.appendChild(d),n=d,a=0}else n=o,a=Math.max(0,l.length-(t.length-i));if(this.editor_node.textContent="",this.editor_node.appendChild(s),n){let d=document.createRange(),u=window.getSelection();u&&(d.setStart(n,a),d.setEnd(n,a),d.collapse(!0),u.removeAllRanges(),u.addRange(d))}}ParseDependencies(){if(!this.editor_node)return;let t=this.editor_node.textContent||"";if(t!==this.last_parse_string||!this.reference_list){let r={};for(let i of this.model.sheets.list)r[i.name.toLowerCase()]=i.id;if(this.dependency_list=[],this.reference_index_map=[],t){let i=this.parser.Parse(t);if(this.last_parse_string=t,this.last_parse_result=i,this.reference_list=[],i.full_reference_list)for(let s of i.full_reference_list)if(s.type==="address"||s.type==="range"){let n=s.type==="address"?s:s.start;n.sheet_id||(n.sheet?n.sheet_id=r[n.sheet.toLowerCase()]||0:n.sheet_id=this.view.active_sheet.id),this.reference_list.push(s)}else if(s.type==="structured-reference")if(this.target_address){let n=this.model.ResolveStructuredReference(s,this.target_address);n&&this.reference_list.push(n)}else console.info("target address not set");else{let n=this.model.named_ranges.Get(s.name);n&&(n.count===1?this.reference_list.push({type:"address",...n.start,label:s.name,position:s.position,id:s.id}):this.reference_list.push({type:"range",start:{type:"address",position:s.position,id:s.id,label:s.name,...n.start},end:{type:"address",position:s.position,label:s.name,id:s.id,...n.end},label:s.name,position:s.position,id:s.id}))}if(this.reference_list){this.reference_list.sort((s,n)=>s.position-n.position);for(let s of this.reference_list){let n;s.type==="address"?n=new y({row:s.row,column:s.column,sheet_id:s.sheet_id}):n=new y({row:s.start.row,column:s.start.column,sheet_id:s.start.sheet_id},{row:s.end.row,column:s.end.column});let a=n.spreadsheet_label;this.dependency_list.some((o,l)=>o.spreadsheet_label===a&&o.start.sheet_id===n.start.sheet_id?(this.reference_index_map.push(l),!0):!1)||(this.reference_index_map.push(this.dependency_list.length),this.dependency_list.push(n))}}}else this.reference_list=void 0}}ListDependencies(){return this.ParseDependencies(),this.dependency_list||[]}AcceptAutocomplete(t){if(!this.editor_node)return;let r=window.getSelection(),i=0;if(t.data&&t.data.completions){for(let d of t.data.completions)if(d.name.toLowerCase()===t.value?.toLowerCase()){i=d.type||0;break}}if(!r)throw new Error("error getting selection");let s=r.getRangeAt(0),n=s.cloneRange(),a=document.createElement("div");n.selectNodeContents(this.editor_node),n.setEnd(s.endContainer,s.endOffset),a.appendChild(n.cloneContents());let o=(a.textContent||"").substr(0,t.data?t.data.position:0)+t.value,l=i===1?o:o+"(";this.editor_node.textContent=l,this.autocomplete.Hide(),ie.is_firefox||this.Reconstruct(),r=window.getSelection(),s=document.createRange(),this.editor_node?.lastChild&&s.setStartAfter(this.editor_node.lastChild),s.collapse(!0),r?.removeAllRanges(),r?.addRange(s),this.selecting_=!0,t.click&&this.UpdateSelectState()}},Oe=Lr;k(Oe,"FormulaChars",("$^&*(-+={[<>/~%"+T.argument_separator).split(""));var Gt=class extends Oe{constructor(t,r,i,s,n,a){super(r,i,s,n,a);this.container=t;this.edit_container=document.createElement("div"),this.edit_container.classList.add("overlay-container"),this.edit_container.classList.add("notranslate"),this.edit_container.translate=!1,this.edit_node=document.createElement("div"),this.edit_node.classList.add("overlay-editor"),this.edit_node.contentEditable="true",this.edit_node.tabIndex=-1,this.edit_node.spellcheck=!0,this.edit_node.setAttribute("role","gridcell"),ie.is_firefox&&this.edit_node.classList.add("firefox"),this.edit_node.inputMode="none";let o=!1;this.edit_node.addEventListener("compositionstart",()=>o=!0),this.edit_node.addEventListener("compositionend",()=>o=!1),this.edit_node.addEventListener("input",l=>{if(o)return;let d=this.edit_node.firstChild;d&&d.tagName==="BR"&&this.edit_node.removeChild(d),this.editing&&(this.Reconstruct(),this.UpdateSelectState())}),this.edit_node.addEventListener("keyup",l=>{if(!(o||!this.editing||this.autocomplete.HandleKey("keyup",l).handled)){if(this.selecting_)switch(l.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Shift":case"Control":return}this.FlushReference(),this.UpdateSelectState(!0)}}),this.edit_inset=document.createElement("div"),this.edit_inset.classList.add("overlay-inset"),this.edit_container.appendChild(this.edit_node),this.edit_container.appendChild(this.edit_inset),this.edit_inset.appendChild(this.edit_node),t.appendChild(this.edit_container),this.edit_container.style.opacity="0",this.editor_node=this.edit_node,this.container_node=this.edit_container,this.ClearContents()}edit_node;edit_container;edit_inset;scale=1;_editing=!1;get editing(){return this._editing}set editing(t){this._editing!==t&&(this._editing=t,t?(this.edit_container.style.opacity="1",this.edit_container.style.pointerEvents="initial"):(this.edit_container.style.opacity="0",this.edit_container.style.pointerEvents="none"))}UpdateCaption(t=""){this.edit_node.setAttribute("aria-label",t)}Focus(t=""){this.edit_node!==document.activeElement&&(this.edit_container.style.top=`${this.container.scrollTop+this.view.active_sheet.header_offset.y}px`,this.edit_container.style.left=`${this.container.scrollLeft+this.view.active_sheet.header_offset.x}px`),this.edit_node.focus(),this.UpdateCaption(t)}CloseEditor(){this.editing=!1,this.ClearContents(),this.edit_node.spellcheck=!0,this.autocomplete.Hide(),this.active_cell=void 0}ClearContents(){ie.is_firefox?this.edit_node.innerHTML="<span></span>":this.edit_node.textContent=""}Edit(t,r,i,s,n){this.Publish({type:"start-editing",editor:"ice"}),this.active_cell=i,this.target_address={...t.target};let a=i.style||{};switch(this.edit_node.style.font=A.Font(a,this.scale),this.edit_node.style.color=M(this.theme,a.text,1),this.edit_inset.style.backgroundColor=M(this.theme,a.fill,0),a.horizontal_align){case A.HorizontalAlign.Right:this.edit_container.classList.add("align-right"),this.edit_container.classList.remove("align-center"),this.edit_container.classList.remove("align-left");break;case A.HorizontalAlign.Center:this.edit_container.classList.remove("align-right"),this.edit_container.classList.add("align-center"),this.edit_container.classList.remove("align-left");break;default:this.edit_container.classList.remove("align-right"),this.edit_container.classList.remove("align-center"),this.edit_container.classList.add("align-left");break}this.edit_node.style.paddingBottom=`${Math.max(0,(self.devicePixelRatio||1)-1)}px`;let o=s?.toString()||"";if(o&&o[0]==="="&&(this.edit_node.spellcheck=!1),this.autocomplete.ResetBlock(),this.FlushReference(),this.selection=t,typeof s<"u"){let l=o[0]!=="="&&o[o.length-1]==="%",d=o.length;this.edit_node.textContent=o;{let u=document.createRange(),h=window.getSelection();if(!h)throw new Error("invalid selection object");this.edit_node.lastChild&&(l?(u.setStart(this.edit_node.lastChild,d-1),u.setEnd(this.edit_node.lastChild,d-1)):u.setStartAfter(this.edit_node.lastChild)),u.collapse(!0),h.removeAllRanges(),h.addRange(u)}if(!n){let u=this.ListDependencies();this.Publish({type:"update",text:s.toString(),dependencies:u})}}r.ApplyStyle(this.edit_container),this.editing=!0,ne().then(()=>{this.last_reconstructed_text="",this.Reconstruct()})}HandleKeyDown(t){if(!this.editing)return 0;let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),r.handled)return 1;switch(t.key){case"Enter":case"Tab":return this.selecting_=!1,2;case"Escape":case"Esc":return this.selecting_=!1,3;case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Up":case"Down":case"Left":case"Right":return this.selecting_?0:1}return 1}UpdateTheme(t){this.scale=t}};var Dr=class{canvas;cache={};constructor(){typeof document<"u"&&(this.canvas=document.createElement("canvas"))}Flush(){this.cache={}}Get(e,t=10){let r=e+";"+t,i=this.cache[r];return i||(i=this.Measure(e,t),this.cache[r]=i,i)}Measure(e,t){let r=e.match(/([\d.]+)((?:%|em))/);if(r){let h=r[1]+r[2],p=Number(r[1])*t;r[2]==="%"&&(p/=100),e=e.replace(h,p+"px")}let i=this.canvas.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("invalid context");i.font=e;let s=i.measureText("MMM"),n=Math.ceil(s.width);if(this.canvas.setAttribute("width",n.toString()),this.canvas.setAttribute("height",n.toString()),i=this.canvas.getContext("2d",{willReadFrequently:!0}),!i)throw new Error("invalid context");i.font=e,i.textAlign="center",i.textBaseline="alphabetic",i.fillStyle="#000";let a=Math.round(n*2/3),o=Math.round(n/2);i.clearRect(0,0,n,n);for(let h=32;h<=126;h++){let p=String.fromCharCode(h);i.fillText(p,o,a)}let l=i.getImageData(0,0,this.canvas.width,this.canvas.height).data,d=Math.floor(this.GetFirstIndex(l)/n),u=Math.floor(this.GetLastIndex(l)/n);return{ascender:a-d,descender:u-a,block:u-d+1,paren:i.measureText("(").width,hash:i.measureText("##").width-i.measureText("#").width}}GetFirstIndex(e){for(let t=3,r=e.length;t<r;t+=4)if(e[t]>0)return(t-3)/4;return e.length}GetLastIndex(e){for(let t=e.length-1;t>=3;t-=4)if(e[t]>0)return t/4;return 0}},Ht=new Dr;var Ir="bottom",ki=/webkit/i.test(typeof navigator>"u"?"":navigator?.userAgent||"")?1:0,$t=class{constructor(e,t,r,i,s){this.theme=e;this.layout=t;this.model=r;this.view=i;this.options=s;this.buffer_canvas=t.buffer_canvas,this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let n=this.buffer_canvas.getContext("2d",{alpha:!1});if(n){let a=this.layout.dpr;this.buffer_context=n,this.buffer_context.setTransform(a,0,0,a,0,0),this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Ir}}cell_edge_buffer=4;overflow_areas=[];buffer_canvas;buffer_context;buffer_canvas_size={width:256,height:256};FlushOverflows(){this.view.active_sheet.cells.IterateAll(t=>{t.renderer_data?.overflowed&&(t.renderer_data=void 0,t.render_clean[this.view.view_index]=!1)});for(let t of this.overflow_areas)t.tile.dirty=!0;this.overflow_areas=[]}MeasureText(e,t){let r=this.layout.grid_tiles[0][0].getContext("2d",{alpha:!1});if(!r)throw new Error("invalid context");return t&&(r.font=t),r.measureText(e)}EnsureBuffer(e=0,t=0,r=0){let i=this.layout.dpr;if(e=e*i,t=t*i,r=r*i,e>this.buffer_canvas_size.width||t>this.buffer_canvas_size.height){this.buffer_canvas_size.width=Math.max(Math.ceil(e/256)*256,this.buffer_canvas_size.width),this.buffer_canvas_size.height=Math.max(Math.ceil(t/256)*256,this.buffer_canvas_size.height),this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let s=this.buffer_canvas.getContext("2d",{alpha:!1});s&&(this.buffer_context=s,this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Ir)}this.buffer_context.setTransform(i,0,0,i,r,0)}OverflowDirty(e=!1){let t=[];for(let r of this.overflow_areas){let i=r.area.start.row,s=e;if(!s)for(let n=r.area.start.column;!s&&n<=r.area.end.column;n++){let a=this.view.active_sheet.cells.GetCell({row:i,column:n},!1);s=!!(a&&!a.render_clean[this.view.view_index])}if(s){for(let n=r.area.start.column;n<=r.area.end.column;n++){let a=this.view.active_sheet.cells.GetCell({row:i,column:n},!1);a&&(a.render_clean[this.view.view_index]=!1,a.renderer_data&&a.renderer_data.overflowed&&(a.renderer_data=void 0))}r.tile.dirty=!0}else t.push(r)}this.overflow_areas=t}RenderCorner(){let t=this.layout.corner_canvas.getContext("2d",{alpha:!1});if(!t)throw new Error("invalid context");let r=Ht.Get(A.Font(this.theme.headers||{},this.layout.scale)),i=this.layout.dpr,s=this.layout.header_offset,n=s.x;for(let o=0;o<this.view.active_sheet.freeze.columns;o++)n+=this.layout.ColumnWidth(o);let a=s.y;for(let o=0;o<this.view.active_sheet.freeze.rows;o++)a+=this.layout.RowHeight(o);t.setTransform(i,0,0,i,0,0),t.fillStyle=this.theme.headers?.fill?M(this.theme,this.theme.headers.fill):"",t.fillRect(0,0,n,s.y),t.fillRect(0,0,s.x,a),t.strokeStyle=this.theme.headers_grid_color||"",t.beginPath(),t.moveTo(s.x-.5,0),t.lineTo(s.x-.5,s.y),t.moveTo(0,s.y-.5),t.lineTo(s.x,s.y-.5),t.stroke(),!(!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows)&&(t.strokeStyle=this.theme.grid_color||"",t.beginPath(),a!==s.y&&(t.moveTo(s.x-.5,s.y),t.lineTo(s.x-.5,a)),n!==s.x&&(t.moveTo(s.x,s.y-.5),t.lineTo(n,s.y-.5)),t.stroke(),t.strokeStyle=this.theme.headers_grid_color||"",t.textAlign="center",t.textBaseline="middle",t.font=A.Font(this.theme.headers||{},this.layout.scale),t.fillStyle=M(this.theme,this.theme.headers?.text),this.view.active_sheet.freeze.rows&&this.layout.header_offset.x>1&&(t.setTransform(i,0,0,i,0,0),t.translate(0,s.y),t.beginPath(),t.moveTo(0,0-.5),t.lineTo(s.x,0-.5),t.stroke(),this.RenderRowLabels(t,0,this.view.active_sheet.freeze.rows-1,r.block)),this.view.active_sheet.freeze.columns&&this.layout.header_offset.y>1&&(t.setTransform(i,0,0,i,0,0),t.translate(s.x,0),t.beginPath(),t.moveTo(0-.5,0),t.lineTo(0-.5,s.y),t.stroke(),this.RenderColumnLabels(t,0,this.view.active_sheet.freeze.columns-1)))}RenderColumnLabels(e,t,r){let i=this.layout.header_offset.y;for(e.fillStyle=M(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let s=this.layout.ColumnWidth(t),n=y.ColumnToLabel(t),a=e.measureText(n);s>a.width&&e.fillText(n,s/2,i/2+1),e.moveTo(s-.5,0),e.lineTo(s-.5,i),e.translate(s,0)}e.stroke()}RenderRowLabels(e,t,r,i){let s=this.layout.header_offset.x;for(e.fillStyle=M(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let n=this.layout.RowHeight(t);n>=i*1.2&&e.fillText(`${t+1}`,s/2,n/2+1),e.moveTo(0,n-.5),e.lineTo(s,n-.5),e.translate(0,n)}e.stroke()}RenderHeaders(e,t=!1){let r=this.layout.dpr,i=this.layout.header_offset,s=Ht.Get(A.Font(this.theme.headers||{},this.layout.scale));for(let n=e.start.column;n<=e.end.column;n++){let a=this.layout.column_header_tiles[n];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=A.Font(this.theme.headers||{},this.layout.scale),o.fillStyle=this.theme.headers?.fill?M(this.theme,this.theme.headers.fill):"",o.fillRect(0,0,a.logical_size.width,this.layout.header_offset.y),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(0,i.y-.5),o.lineTo(a.logical_size.width,i.y-.5),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderColumnLabels(o,a.first_cell.column,a.last_cell.column),a.dirty=!1}}for(let n=e.start.row;n<=e.end.row;n++){let a=this.layout.row_header_tiles[n];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.fillStyle=this.theme.headers?.fill?M(this.theme,this.theme.headers.fill):"",o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=A.Font(this.theme.headers||{},this.layout.scale),o.fillRect(0,0,this.layout.header_offset.x,a.logical_size.height),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(i.x-.5,0),o.lineTo(i.x-.5,a.logical_size.height),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderRowLabels(o,a.first_cell.row,a.last_cell.row,s.block),a.dirty=!1}}(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.RenderCorner()}CopyToAdjacent(e,t,r,i,s,n,a){let o=this.layout.AdjacentTile(e,i,r);if(!o)return;let l=s,d=n;r>0?l=s-(e.pixel_end.x-e.pixel_start.x)*t:r<0&&(l=s+(o.pixel_end.x-o.pixel_start.x)*t),i>0&&(d=n-(e.pixel_end.y-e.pixel_start.y)*t);let u=o.getContext("2d",{alpha:!1});u&&(u.setTransform(t,0,0,t,l,d),u.drawImage(this.buffer_canvas,0,0,(a.width||0)*t,(a.height||0)*t,a.left||0,0,a.width||0,a.height||0))}Render(e){let t=e.getContext("2d",{alpha:!1});if(!t)return;t.textBaseline=Ir;let r=this.layout.dpr;t.setTransform(r,0,0,r,0,0);let i=0,s=0;for(let o=e.first_cell.column;o<=e.last_cell.column;o++){let l=this.layout.ColumnWidth(o);if(l){s=0;for(let d=e.first_cell.row;d<=e.last_cell.row;d++){let u=this.layout.RowHeight(d);if(u){t.setTransform(r,0,0,r,i,s);let h=this.view.active_sheet.CellData({row:d,column:o});if(e.needs_full_repaint||!h.render_clean[this.view.view_index]){let p=this.RenderCell(e,h,t,{row:d,column:o},l,u,e.pixel_start.x+i,e.pixel_start.y+s);p.tile_overflow_right&&this.CopyToAdjacent(e,r,1,0,i,s,p),p.tile_overflow_left&&this.CopyToAdjacent(e,r,-1,0,i,s,p),p.tile_overflow_bottom&&this.CopyToAdjacent(e,r,0,1,i,s,p)}}s+=u*r}i+=l*r}}if(!this.view.active_sheet.freeze.rows&&!this.view.active_sheet.freeze.columns)return;let n=0,a=0;if(e.first_cell.row<=this.view.active_sheet.freeze.rows-1)for(let o=e.first_cell.row;o<this.view.active_sheet.freeze.rows&&o<=e.last_cell.row;o++)n+=this.layout.RowHeight(o);if(e.first_cell.column<=this.view.active_sheet.freeze.columns-1)for(let o=e.first_cell.column;o<this.view.active_sheet.freeze.columns&&o<=e.last_cell.column;o++)a+=this.layout.ColumnWidth(o);if(n){let o=this.layout.frozen_row_tiles[e.tile_position.column];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,e.logical_size.width*r,n*r,0,0,e.logical_size.width,n)}if(a){let o=this.layout.frozen_column_tiles[e.tile_position.row];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,a*r,e.logical_size.height*r,0,0,a,e.logical_size.height)}if(a&&n){let o=this.layout.corner_canvas.getContext("2d",{alpha:"false"});if(!o)throw new Error("corner context failed");o.setTransform(r,0,0,r,this.layout.header_offset.x*r,this.layout.header_offset.y*r),o.drawImage(e,0,0,a*r,n*r,0,0,a,n)}}PrepText(e,t,r,i){let s=[],n=r.style||{},a,o=0,l,d=r.editing?"":r.formatted;if(Array.isArray(d)){for(let u of d){if(u.flag===6){l=u.text;continue}let h=e.measureText(u.text).width,p={width:h,text:u.text,hidden:u.flag===1};s.push(p),u.flag===2?a=p:o+=h}if(a){let u=a.text,h=a.width,p=i-o-2*this.cell_edge_buffer;if(a.width=Math.max(0,p),p>0){let f=Math.floor(p/h);for(let m=1;m<f;m++)a.text+=u;o=i-2*this.cell_edge_buffer}else a.text=""}return{strings:[s],format:l,width:o}}else if(d){r.type===2&&d[0]==="'"&&(d=d.slice(1));let u;this.options.markdown?u=xe.instance.Parse(d):(u=xe.instance.Dummy(d),e.font=t.base);let h=0,p=i-2*this.cell_edge_buffer,f=[];if(n.wrap)for(let m of u){for(let b=1;b<m.length;b++){let g=m[b].text.match(/^(\s+)/);g&&(m[b-1].text+=g[1],m[b].text=m[b].text.replace(/^\s+/,""))}let _=[];for(let b of m){this.options.markdown&&(b.strong&&b.emphasis?e.font=t.strong_emphasis:b.strong?e.font=t.strong:b.emphasis?e.font=t.emphasis:e.font=t.base);let g=b.text.match(/\S+\s*/g);if(g&&g.length)for(let x of g){let v=e.measureText(x.trim()).width,w=e.measureText(x).width;_.push({part:b,text:x,trimmed:v,width:w})}}for(;_.length;){let b=_.shift(),g=[b],x=b.trimmed;for(;x<p&&_.length;){let v=_[0],w=x-b.trimmed+b.width+v.trimmed;if(w>=p)break;b=v,g.push(v),x=w,_.shift()}b.text=b.text.trim(),b.width=b.trimmed,f.push(g.map(v=>({...v.part,hidden:!1,width:v.width,text:v.text})))}}else for(let m of u){let _=[],b=0;for(let g of m){this.options.markdown&&(g.strong&&g.emphasis?e.font=t.strong_emphasis:g.strong?e.font=t.strong:g.emphasis?e.font=t.emphasis:e.font=t.base);let x=e.measureText(g.text).width;b+=x,_.push({...g,hidden:!1,width:x})}h=Math.max(h,b),f.push(_)}return{strings:f,width:h}}return{strings:[[{text:"",hidden:!1,width:0}]],width:0}}ResolveColors(e){let t={...e};return t.text={text:M(this.theme,e.text,1)},t}RenderCellBorders(e,t,r,i=0,s=0,n=0,a=0){let o=this.view.active_sheet.SurroundingStyle(e,this.theme.table),l=M(this.theme,o[8].fill);l&&(t.fillStyle=l,t.fillRect(i+0,s-1,n,1)),l=M(this.theme,o[4].fill),l&&(t.fillStyle=l,t.fillRect(i-1,s,1,a)),l=M(this.theme,r.fill),l&&(t.fillStyle=l,t.fillRect(i-1,s-1,n+1,a+1)),l=M(this.theme,o[6].fill),l&&(t.fillStyle=l,t.fillRect(i+n-1,s-1,1,a+1)),l=M(this.theme,o[2].fill),l&&(t.fillStyle=l,t.fillRect(i-1,s+a-1,n+1,1)),o[6].border_top&&!o[6].border_left&&(t.fillStyle=M(this.theme,o[6].border_top_fill,1),t.fillRect(i+n-1,s-2+o[6].border_top,1,1)),o[9].border_left&&(t.fillStyle=M(this.theme,o[9].border_left_fill,1),t.fillRect(i+n-1,s-1,1,1)),o[9].border_bottom&&(t.fillStyle=M(this.theme,o[9].border_bottom_fill,1),t.fillRect(i+n-1,s-2+o[9].border_bottom,1,1)),o[4].border_top&&!o[4].border_right&&(t.fillStyle=M(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,s-2+o[4].border_top,1,1)),o[7].border_right&&(t.fillStyle=M(this.theme,o[7].border_right_fill,1),t.fillRect(i-1,s-1,1,1)),o[7].border_bottom&&(t.fillStyle=M(this.theme,o[7].border_bottom_fill,1),t.fillRect(i-1,s-2+o[7].border_bottom,1,1)),o[6].border_bottom&&!o[6].border_left&&(t.fillStyle=M(this.theme,o[6].border_bottom_fill,1),t.fillRect(i+n-1,s+a-o[6].border_bottom,1,1)),o[3].border_left&&(t.fillStyle=M(this.theme,o[3].border_left_fill,1),t.fillRect(i+n-1,s+a-1,1,1)),o[3].border_top&&(t.fillStyle=M(this.theme,o[3].border_top_fill,1),t.fillRect(i+n-1,s+a-o[3].border_top,1,1)),o[4].border_bottom&&!o[4].border_right&&(t.fillStyle=M(this.theme,o[4].border_bottom_fill,1),t.fillRect(i-1,s+a-o[4].border_bottom,1,1)),o[1].border_right&&(t.fillStyle=M(this.theme,o[1].border_right_fill,1),t.fillRect(i-1,s+a-1,1,1)),o[1].border_top&&(t.fillStyle=M(this.theme,o[1].border_top_fill,1),t.fillRect(i-1,s+a-o[1].border_top,1,1)),o[8].border_bottom&&(t.fillStyle=M(this.theme,o[8].border_bottom_fill,1),o[8].border_bottom===2&&(t.fillRect(i-1,s-2,n+1,1),t.fillRect(i-1,s-0,n+1,1),t.fillStyle=M(this.theme,o[8].fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s-1,n+1,1)),o[4].border_right&&(t.fillStyle=M(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,s-1,1,a+1)),o[6].border_left&&(t.fillStyle=M(this.theme,o[4].border_left_fill,1),t.fillRect(i+n-1,s-1,1,a+1)),o[2].border_top&&(t.fillStyle=M(this.theme,o[2].border_top_fill,1),o[2].border_top===2&&(t.fillRect(i-1,s+a-2,n+1,1),t.fillRect(i-1,s+a-0,n+1,1),t.fillStyle=M(this.theme,o[2].fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s+a-1,n+1,1)),r.border_top&&(t.fillStyle=M(this.theme,r.border_top_fill,1),r.border_top===2&&(t.fillRect(i-1,s-2,n+1,1),t.fillRect(i-1,s+0,n+1,1),t.fillStyle=M(this.theme,r.fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s-1,n+1,1)),r.border_left&&(t.fillStyle=M(this.theme,r.border_left_fill,1),t.fillRect(i-1,s-1,1,a+1)),r.border_right&&(t.fillStyle=M(this.theme,r.border_right_fill,1),t.fillRect(i+n-1,s-1,1,a+1)),r.border_bottom&&(t.fillStyle=M(this.theme,r.border_bottom_fill,1),r.border_bottom===2&&(t.fillRect(i-1,s+a-2,n+1,1),t.fillRect(i-1,s+a+0,n+1,1),t.fillStyle=M(this.theme,r.fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s+a-1,n+1,1))}PaintBackgroundImage(e,t,r,i,s,n,a=0,o=0,l=0){let d=(this.layout.scale||1)*this.layout.dpr,u=r/d%t.width,h=i/d%t.height,p=s/d,f=n/d,m=u+p>t.width,_=h+f>t.height;m&&e.drawImage(t,u-t.width,h,p,f,a,o,s-l,n-l),_&&e.drawImage(t,u,h-t.height,p,f,a,o,s-l,n-l),m&&_&&e.drawImage(t,u-t.width,h-t.height,p,f,a,o,s-l,n-l),e.drawImage(t,u,h,p,f,a,o,s-l,n-l)}RenderCellBackground(e,t,r,i,s,n,a=0,o=0){if(r.fillStyle=this.theme.grid_color,r.fillRect(0,0,s,n),this.view.active_sheet.image)this.PaintBackgroundImage(r,this.view.active_sheet.image,a,o,s,n,0,0,1);else{let l=M(this.theme,i.fill);l?(r.fillStyle=l,r.fillRect(0,0,s-1,n-1)):(r.fillStyle=_e(this.theme,this.theme.grid_cell?.fill)||"#fff",r.fillRect(0,0,s-1,n-1))}e&&(r.fillStyle=this.theme.note_marker_color,r.beginPath(),r.moveTo(s-2,1),r.lineTo(s-2-8,1),r.lineTo(s-2,1+8),r.lineTo(s-2,1),r.fill()),this.RenderCellBorders(t,r,i,0,0,s,n)}RenderCell(e,t,r,i,s,n,a=0,o=0){let l={},d=!t.render_clean[this.view.view_index];if(t.render_clean[this.view.view_index]=!0,e.needs_full_repaint&&t.renderer_data?.overflowed)return{};let u=t.style?{...t.style}:{};if(t.table&&(u=this.view.active_sheet.CellStyleData(i,this.theme.table)||{}),t.merge_area)if(i.row===t.merge_area.start.row&&i.column===t.merge_area.start.column){for(let C=t.merge_area.start.column+1;C<=t.merge_area.end.column;C++)s+=this.layout.ColumnWidth(C);for(let C=t.merge_area.start.row+1;C<=t.merge_area.end.row;C++)n+=this.layout.RowHeight(C);if(t.merge_area.count>1){let C=this.view.active_sheet.CellStyleData(t.merge_area.end);C&&(u.border_bottom=C.border_bottom,u.border_right=C.border_right,u.border_bottom_fill=C.border_bottom_fill,u.border_right_fill=C.border_right_fill)}t.merge_area.end.column>e.last_cell.column&&(l.tile_overflow_right=!0),t.merge_area.end.row>e.last_cell.row&&(l.tile_overflow_bottom=!0),(l.tile_overflow_bottom||l.tile_overflow_right)&&this.overflow_areas.push({tile:e,head:{...i},area:new y(t.merge_area.start,t.merge_area.end)})}else return{};let h=!!t.hyperlink;if(t.render_function){this.RenderCellBackground(!!t.note,i,r,u,s,n),r.strokeStyle=r.fillStyle=M(this.theme,u.text,1);let C=this.ResolveColors(u);if(t.render_function.call(void 0,{width:s,height:n,context:r,cell:t,style:C,scale:this.layout.scale||1}).handled)return l}let p={base:A.Font(u,this.layout.scale),strong:A.Font({...u,bold:!0},this.layout.scale),emphasis:A.Font({...u,italic:!0},this.layout.scale),strong_emphasis:A.Font({...u,bold:!0,italic:!0},this.layout.scale)};if(r.font=p.base,d||!t.renderer_data||t.renderer_data.width!==s||t.renderer_data.height!==n){let C=this.PrepText(r,p,t,s);t.renderer_data={text_data:C,width:s,height:n}}let f=t.renderer_data.text_data,m=f.width>s-2*this.cell_edge_buffer,_=s,b=0,g=!1,x=t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7||t.type===9||t.calculated_type===9,v=u.horizontal_align;v||(v=x?A.HorizontalAlign.Right:A.HorizontalAlign.Left);let w=[];if(m)if(t.type!==3&&t.calculated_type!==3&&!u.wrap&&!t.merge_area){let ee=f.width-s+this.cell_edge_buffer,ae=0,le=0;v===A.HorizontalAlign.Center?ae=le=ee/2:v===A.HorizontalAlign.Right?ae=ee:le=ee;let K=i.column,Y=i.column;for(;le>0&&K<this.layout.last_column;){K++;let Q={row:i.row,column:K},V=this.view.active_sheet.CellData(Q),$=this.layout.ColumnWidth(K);if(le-=$,V&&!V.type&&!V.calculated_type)w.push({address:Q,cell:V,grid:new F(_,0,$,n),background:new F(_-1,0,$,n-1),border:new F(_,0,$,n)}),_+=$,V.render_clean[this.view.view_index]=!0,V.renderer_data={overflowed:!0};else{g=!0;break}}for(K>e.last_cell.column&&(l.tile_overflow_right=!0);ae>0&&Y>=1;){Y--;let Q={row:i.row,column:Y},V=this.view.active_sheet.CellData(Q),$=this.layout.ColumnWidth(Y);if(ae-=$,V&&!V.type&&!V.calculated_type)b-=$,w.push({address:Q,cell:V,grid:new F(b,0,$,n),background:new F(b,0,$,n-1),border:new F(b,0,$,n)});else{g=!0;break}}Y<e.first_cell.column&&(l.tile_overflow_left=!0),this.overflow_areas.push({head:{...i},tile:e,area:new y({row:i.row,column:Y},{row:i.row,column:K})})}else g=!x;let S=!1,R=r;(l.tile_overflow_bottom||l.tile_overflow_left||l.tile_overflow_right)&&(S=!0,l.width=_-b,l.height=n,l.left=b,this.EnsureBuffer(l.width+1,n+1,-b),r=this.buffer_context,r.font=p.base),this.RenderCellBackground(!!t.note,i,r,u,s,n,a,o);for(let C of w)C.cell.style?.fill&&(C.cell.style.fill.text||C.cell.style.fill.theme||C.cell.style.fill.theme===0)&&!this.options.grid_over_background?(r.fillStyle=_e(this.theme,C.cell.style.fill),r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height)):(r.fillStyle=this.theme.grid_color||"",r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height),this.view.active_sheet.image?this.PaintBackgroundImage(r,this.view.active_sheet.image,a+C.background.left,o+C.background.top,C.background.width,C.background.height,C.background.left,C.background.top,0):(r.fillStyle=this.theme.grid_cell?.fill?_e(this.theme,this.theme.grid_cell.fill):"",r.fillRect(C.background.left,C.background.top,C.background.width,C.background.height))),C.cell.style&&this.RenderCellBorders(C.address,r,C.cell.style,C.border.left,C.border.top,C.border.width,C.border.height);let E=Ht.Get(p.base,this.theme.grid_cell?.font_size?.value);r.lineWidth=1,r.strokeStyle=r.fillStyle=f.format?f.format:M(this.theme,u.text,1),r.beginPath();let H=this.cell_edge_buffer,Z=1.25,Le=f.strings.length,De=Le*E.block*Z;g=(g||De>=n)&&!S,g&&(r.save(),r.beginPath(),r.moveTo(b+1.5,0),r.lineTo(b+1.5,n),r.lineTo(_-1.5,n),r.lineTo(_-1.5,0),r.clip()),r.beginPath();let he=Math.round(n-2-E.block*Z*(Le-1)+ki);switch(u.vertical_align){case A.VerticalAlign.Top:he=Math.round(E.block*Z)+1;break;case A.VerticalAlign.Middle:he=Math.round((n-De)/2+E.block*Z);break}if((t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7)&&m){let C=Math.floor((s-2*this.cell_edge_buffer)/E.hash),ee="";for(let le=0;le<C;le++)ee+="#";let ae=r.measureText(ee).width;v===A.HorizontalAlign.Center?H=Math.round((s-ae)/2):v===A.HorizontalAlign.Right&&(H=s-this.cell_edge_buffer-ae),r.fillText(ee,H,he)}else{let C=he,ee=0;for(let ae of f.strings){let le=0;for(let V of ae)le+=V.width;v===A.HorizontalAlign.Center?H=Math.round((s-le)/2):v===A.HorizontalAlign.Right&&(H=s-this.cell_edge_buffer-le);let K=Math.floor(C+1.5-E.descender-ki)+.5,Y=Math.floor(C-E.descender-E.ascender/2)+.5,Q=H;for(let V of ae)V.strong&&V.emphasis?r.font=p.strong_emphasis:V.strong?r.font=p.strong:V.emphasis?r.font=p.emphasis:r.font=p.base,V.hidden||(V.text&&r.fillText(V.text,Q,C),u.underline&&(r.moveTo(Q,K),r.lineTo(Q+V.width,K)),(u.strike||V.strike)&&(r.moveTo(Q,Y),r.lineTo(Q+V.width,Y)),h&&(V.left=Q,V.top=C-E.block,V.height=E.block)),Q+=V.width;ee++,C=Math.round(he+ee*E.block*Z)}}if(r.stroke(),g)r.restore();else if(S){let C=this.layout.dpr;R.drawImage(this.buffer_canvas,0,0,(l.width||0)*C,n*C,b,0,l.width||0,n)}return l}};var Bt=class extends Oe{constructor(t,r,i,s,n,a,o){super(r,i,s,n,o);this.container=t;this.options=a;let l=I.CreateDiv("treb-formula-bar-container notranslate",t),d=I.CreateDiv("treb-formula-bar",l);this.address_label_container=I.CreateDiv("address-label",d),this.address_label=I.CreateDiv("",this.address_label_container),this.InitAddressLabel(),this.options.insert_function_button&&(this.button=I.Create("button","formula-button",d),this.button.addEventListener("click",()=>{let h=this.editor_node&&this.editor_node.textContent||"";this.Publish({type:"formula-button",formula:h})})),this.container_node=I.CreateDiv("editor-container",d),this.editor_node=I.CreateDiv("formula-editor",this.container_node),this.editor_node.setAttribute("contenteditable","true");let u=!1;this.editor_node.spellcheck=!1,this.editor_node.addEventListener("focusin",()=>{if(!this.editor_node)return;let h=this.editor_node.textContent||"";h[0]==="{"&&h[h.length-1]==="}"&&(h=h.substr(1,h.length-2),this.editor_node.textContent=h,this.last_reconstructed_text=""),this.editor_node.spellcheck=h[0]!=="=",this.autocomplete.ResetBlock(),ne().then(()=>{this.Reconstruct()});let p=this.ListDependencies();this.Publish([{type:"start-editing",editor:"formula-bar"},{type:"update",text:h,cell:this.active_cell,dependencies:p}]),this.focused_=!0,u=!1}),this.editor_node.addEventListener("focusout",()=>{this.selecting&&console.info("focusout, but selecting..."),this.autocomplete.Hide(),this.Publish([{type:"stop-editing"}]),this.focused_=!1,this.editor_node&&(this.editor_node.spellcheck=!1)}),this.editor_node.addEventListener("keydown",h=>this.FormulaKeyDown(h)),this.editor_node.addEventListener("keyup",h=>this.FormulaKeyUp(h)),this.editor_node.addEventListener("compositionstart",()=>{u=!0}),this.editor_node.addEventListener("compositionsend",()=>{u=!1}),this.editor_node.addEventListener("input",()=>{u||(this.Reconstruct(),this.UpdateSelectState())}),this.options.expand_formula_button&&(this.expand_button=I.Create("button","expand-button",d),this.expand_button.addEventListener("click",h=>{h.stopPropagation(),h.preventDefault(),this.editor_node&&(this.editor_node.scrollTop=0),d.classList.toggle("expanded")}))}focused_=!1;get focused(){return this.focused_}address_label_container;address_label;button;expand_button;drag_corner;lines=1;last_formula="";label_update_timer=0;get formula(){return this.editor_node&&this.editor_node.textContent||""}set formula(t){this.editor_node&&(this.editor_node.textContent=t,this.last_reconstructed_text=""),this.last_formula=t}get label(){return this.address_label?.textContent||""}set label(t){t.trim().length?(this.address_label.textContent=t,this.label_update_timer||(this.label_update_timer=requestAnimationFrame(()=>{this.label_update_timer=0,this.address_label.scrollWidth>this.address_label.offsetWidth?this.address_label.setAttribute("title",t):this.address_label.removeAttribute("title")}))):(this.address_label.innerHTML=" ",this.address_label.removeAttribute("title"))}set editable(t){!this.editor_node||!this.container_node||(this.editor_node.setAttribute("contenteditable",t.toString()),t?this.container_node.classList.remove("locked"):this.container_node.classList.add("locked"))}IsElement(t){return t===this.editor_node}InitAddressLabel(){this.address_label.contentEditable="true",this.address_label.spellcheck=!1,this.address_label.addEventListener("focusin",t=>{requestAnimationFrame(()=>{if(document.body.createTextRange){let r=document.body.createTextRange();r.moveToElementText(this.address_label),r.select()}else{let r=window.getSelection(),i=document.createRange();i.selectNodeContents(this.address_label),r?.removeAllRanges(),r?.addRange(i)}})}),this.address_label.addEventListener("keydown",t=>{switch(t.key){case"Enter":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event",text:this.address_label.textContent||void 0});break;case"Esc":case"Escape":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event"});break}})}FocusEditor(){this.editor_node&&this.editor_node.focus()}GetTextContent(t){let r=t.childNodes,i=[];for(let s=0;s<r.length;s++){let n=r[s];switch(n.nodeType){case Node.ELEMENT_NODE:i.push(...this.GetTextContent(n)),n instanceof Element&&n.tagName==="DIV"&&i.push(`
|
|
6
|
-
`);break;case Node.TEXT_NODE:n.nodeValue&&i.push(n.nodeValue);break}}return i}FormulaKeyDown(t){let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),!r.handled){switch(t.key){case"Enter":case"Tab":{this.selecting_=!1;let i=t.key==="Enter"&&t.ctrlKey&&t.shiftKey,s=(this.editor_node?this.GetTextContent(this.editor_node).join(""):"").trim();this.Publish({type:"commit",selection:this.selection,value:s,event:t,array:i}),this.FlushReference()}break;case"Escape":case"Esc":this.selecting_=!1,this.Publish({type:"discard"}),this.FlushReference();break;default:return}t.stopPropagation(),t.preventDefault()}}FormulaKeyUp(t){this.autocomplete.HandleKey("keyup",t).handled||this.FlushReference()}};var
|
|
5
|
+
`}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],r={},i=[],s={type:"text",text:""};for(let n of e)if(n.type==="newline")s.text.length&&i.push(s),s={...r,text:"",type:"text"},t.push(i),i=[];else switch((!!r.strong!=!!n.strong||!!r.emphasis!=!!n.emphasis||!!r.strike!=!!n.strike)&&(r.strong=!!n.strong,r.emphasis=!!n.emphasis,r.strike=!!n.strike,s.text.length&&i.push(s),s={...r,text:"",type:"text"}),n.type){case"text":case"whitespace":s.text+=n.text;break;case"delimeter":for(let a=0;a<n.length;a++)s.text+=n.char;break}return s.text.length&&i.push(s),i.length&&t.push(i),t}ApplyFormatting(e,t){let r=0,i=e.length;for(r=0;r<i;r++){let s=e[r];if(s.type==="delimeter"){if(t&&s.right_flanking&&t.char===s.char&&s.length>0)return{index:r,token:s};if(s.left_flanking){let n=this.ApplyFormatting(e.slice(r+1),s);if(n.token){let a=Math.min(n.token.length,s.length),o=s.char==="~",l=!o&&!!(a%2),d=!o&&a>=2;for(let u=r+1;u<=r+n.index;u++)e[u].strong=!!e[u].strong||d,e[u].emphasis=!!e[u].emphasis||l,e[u].strike=!!e[u].strike||o;n.token.length-=a,s.length-=a,s.length>0?r--:r+=n.index}}}}return{index:r}}Tokenize(e=""){let t=[],r=e.length,i=0,s=!1,n="";for(i=0;i<r;i++){let a=e[i];if(this.IsWhitespace(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(this.IsWhitespace(l))o+=l,i++;else break}t.push({type:"whitespace",text:o}),s=!1,n=""}else if(this.IsNewline(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(this.IsNewline(l))o+=l,i++;else break}t.push({type:"newline",text:o}),s=!1,n=""}else if(s)n+=a,s=!1;else if(this.IsDelimeter(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(l===a)o+=l,i++;else break}t.push({type:"delimeter",text:o,char:a,length:o.length}),s=!1,n=""}else a==="\\"?s=!0:n+=a}return n&&t.push({type:"text",text:n}),t}},xe=Cr;k(xe,"_instance",new Cr);var ne=()=>Promise.resolve();var Rs=1e3,te=class{constructor(e=!1,t){this.verbose=e;this.log_id=t}queue=[];dispatched=!1;subscribers=[];Publish(e){this.verbose&&console.info(`es publish (${this.log_id})`,e),Array.isArray(e)?this.queue.push(...e):this.queue.push(e),this.dispatched||(this.dispatched=!0,ne().then(()=>{let t=this.queue.slice(0);this.dispatched=!1,this.queue=[];for(let r of t)for(let i of this.subscribers)i.subscriber(r)}))}Subscribe(e){let t=Rs++;return this.subscribers.push({subscriber:e,token:t}),t}Cancel(e){this.subscribers=this.subscribers.filter(t=>t.token!==e)}CancelAll(){this.subscribers=[]}};var B=class{constructor(e,t,r,i=e){B.Create({container:e,node:t,resize_callback:r,layout_reference:i})}static Create(e){let t=document.createElement("div");if(t.classList.add("treb-embed-resize-handle"),(e.layout_reference||e.container).appendChild(t),!B.resize_mask){let l=document.querySelector(".treb-embed-mouse-mask");l||(l=document.createElement("div"),l.classList.add("treb-embed-mouse-mask"),document.body.appendChild(l)),B.resize_mask=l}if(!B.resize_rect){let l=document.querySelector(".treb-embed-resize-rect");l||(l=document.createElement("div"),l.classList.add("treb-embed-resize-rect"),B.resize_mask.appendChild(l)),B.resize_rect=l}let r,i,s={width:0,height:0},n={x:0,y:0},a={x:0,y:0},o=()=>{if(B.resize_mask.removeEventListener("mousemove",i),B.resize_mask.removeEventListener("mouseup",r),B.resize_mask.style.display="none",a.x||a.y){let l=e.container.getBoundingClientRect(),d=l.width+a.x,u=l.height+a.y;e.container.style.width=`${d}px`,e.container.style.height=`${u}px`,e.resize_callback&&e.resize_callback()}};i=l=>{if(!l.buttons){o();return}a.x!==l.clientX-n.x&&(a.x=l.clientX-n.x,B.resize_rect.style.width=`${s.width+a.x+4}px`),a.y!==l.clientY-n.y&&(a.y=l.clientY-n.y,B.resize_rect.style.height=`${s.height+a.y+4}px`)},r=()=>{o()},t.addEventListener("mousedown",l=>{l.stopPropagation(),l.preventDefault();let d=e.node.getBoundingClientRect();s={width:d.width,height:d.height},B.resize_rect&&(B.resize_rect.style.top=`${d.top-2}px`,B.resize_rect.style.left=`${d.left-2}px`,B.resize_rect.style.width=`${d.width+4}px`,B.resize_rect.style.height=`${d.height+4}px`),n={x:l.clientX,y:l.clientY},a={x:0,y:0},B.resize_mask.style.display="block",B.resize_mask.addEventListener("mousemove",i),B.resize_mask.addEventListener("mouseup",r)})}},Xe=B;k(Xe,"resize_mask"),k(Xe,"resize_rect");var re=class{static MeasureColorARGB(e){let t=this.MeasureColor(e),r="FF";for(let i=0;i<3;i++){let s=t[i].toString(16);s.length===0?r+="00":s.length===1?r+=`0${s}`:r+=s}return r.toUpperCase()}static MeasureColor(e){let t=this.color_cache[e];if(t)return t;this.color_measurement_canvas||(this.color_measurement_canvas=document.createElement("canvas"),this.color_measurement_canvas.width=1,this.color_measurement_canvas.height=1);let r=this.color_measurement_canvas.getContext("2d",{willReadFrequently:!0});return r?(r.fillStyle="#fff",r.fillRect(0,0,1,1),r.fillStyle=e,r.fillRect(0,0,1,1),t=new Uint8ClampedArray(r.getImageData(0,0,1,1).data),this.color_cache[e]=t,t):new Uint8ClampedArray(3)}static EnsureMeasurementNode(){if(!this.text_measurement_node){let e=document.querySelector(".treb-chart-measurement-node");e?this.text_measurement_node=e:(this.text_measurement_node=document.createElement("div"),this.text_measurement_node.classList.add("treb-chart-measurement-node"),this.text_measurement_node.style.margin="0px",this.text_measurement_node.style.padding="0px",this.text_measurement_node.style.height="initial",this.text_measurement_node.style.width="initial",this.text_measurement_node.style.whiteSpace="nowrap",this.text_measurement_node.style.position="fixed",this.text_measurement_node.style.border="0px",this.text_measurement_node.style.border="1px solid red",this.text_measurement_node.style.boxSizing="content-box",this.text_measurement_node.style.top=this.text_measurement_node.style.left="-1000px",document.body.appendChild(this.text_measurement_node))}}static FontLoaded(e,t=!1,r=400){let i=`${t?"italic":""} ${r} 20pt ${e}`,s=this.MeasureText(`${i}, sans-serif`,"check font"),n=this.MeasureText(`${i}, serif`,"check font"),a=this.MeasureText(`${i}, monospace`,"check font");return s.width===n.width&&n.width===a.width}static MeasureText(e,t,r=0){this.EnsureMeasurementNode(),this.text_measurement_node.style.font=e,/\n/.test(t)?(t=t.replace(/\n/g,"<BR/>"),this.text_measurement_node.innerHTML=t):this.text_measurement_node.textContent=t,this.text_measurement_node.style.lineHeight="1em",r?this.text_measurement_node.style.transform=`rotate(${r}deg)`:this.text_measurement_node.style.transform="";let i=this.text_measurement_node.getBoundingClientRect();return{width:i.width,height:i.height}}};k(re,"color_measurement_canvas"),k(re,"text_measurement_node"),k(re,"color_cache",{});var Sr,ks=(c,e,t)=>{let r={};return Array.prototype.forEach.call(e,i=>{e[i]!==t[i]&&(r[i]=e[i])}),(Object.keys(r).map(i=>`${i}: ${r[i]}`).join("; ")+"; "+(c.getAttribute("style")||"")).trim().replace(/"/g,"'")},ui=(c,e)=>{let t=c.cloneNode(!1),r=getComputedStyle(c),i=ks(c,r,e);return t.removeAttribute("class"),t.setAttribute("style",i),Array.prototype.forEach.call(c.childNodes,s=>{switch(s.nodeType){case Node.ELEMENT_NODE:t.appendChild(ui(s,r));break;case Node.TEXT_NODE:c.textContent&&t.appendChild(document.createTextNode(c.textContent));break;case Node.COMMENT_NODE:break;default:console.warn("unhandled node type in serialize",s)}}),t},hi=c=>{if(!Sr){let e={},t=document.createElement("iframe");t.style.width="10px",t.style.height="10px",t.style.position="absolute",t.style.left="-100px",document.body.appendChild(t);let r=t.contentDocument;if(r){let i=r.createElement("div");r.body.appendChild(i);let s=getComputedStyle(i);Array.prototype.forEach.call(s,n=>e[n]=s[n])}document.body.removeChild(t),Sr=e}return ui(c,Sr)};var Es={data:!0,same_origin:!0,remote:!1},kt=(c,e={})=>{let t={...Es,...e};try{let r=new URL(c,document.location.href);return r.protocol==="data:"?t.data?r.href:void 0:r.origin===document.location.origin?t.same_origin?r.href:void 0:t.remote?r.hash:void 0}catch(r){console.error(r)}};var fi=(c,e,t=6.5,r=!1,i=!1)=>{if(e===c)e++,c&&c--;else{let u=Math.round(e*1e5)/1e5;Math.abs(u-e)/(e-c)<1e-5&&(e=u)}let s=e-c,n=Math.log(s)/Math.log(10),a=Math.floor(Math.abs(n))*(n<0?-1:1)-1;i&&(a=Math.max(0,a));let o=i?[1,2,5,10,15,20,25,50,100]:[.1,.25,.5,1,2.5,5,10,25,50,100],l=-1,d=0;for(let u of o){let h=u*Math.pow(10,a),f=Math.floor(c/h)*h,m=(Math.ceil(e/h)*h-f)/h,_=Math.abs(m-t);(l<0||_<d)&&(!r||m<=t)&&(d=_,l=h)}return c=Math.floor(c/l)*l,e=Math.ceil(e/l)*l,t=Math.round((e-c)/l),{scale:a,step:l,count:t,min:c,max:e}};var pi=(c,e,t)=>{[].forEach.call(c.children,r=>{r.id&&(t[r.id]=r,r.id=`${e}-${r.id}`),r.children&&r.children.length&&pi(r,e,t)})},Ts=(c,e)=>{let t=Math.random().toString(36).substring(2,15),r=document.createElement("div");r.innerHTML=c;let i={};if(pi(r,t,i),typeof e=="string"&&(e=document.querySelector(e)),e){let s=[].map.call(r.childNodes,n=>n);for(let n of s)e.appendChild(n)}return i},Et=(c,...e)=>{let t=[];for(let r=0;r<c.length;r++)t.push(c[r]),e[r]&&t.push(e[r].toString());return t.join("")},Tt=(c,...e)=>Ts(Et(c,...e));var Ce=class{date_format=!1;string_format=!1;fraction_format=!1;twelve_hour=!1;fraction_denominator=0;fraction_integer=!0;fraction_align=0;fraction_denominator_digits=0;integer_min_digits=0;decimal_min_digits=0;decimal_max_digits=0;grouping=!1;has_number_format=!1;prefix=[{text:""}];suffix=[{text:""}];scaling=0;percent=!1;exponential=!1;has_asterisk=!1};var mi=42,_i=95,Ar=63,Ut=48,bi=46,Rr=44,yi=37,kr=34,dt=35,gi=59,Mt=92,vi=64,Us=91,Ms=93,wi=69,xi=101,Ls=72,Ds=104,Is=77,Vs=109,Fs=83,zs=115,Ps=68,Ns=100,Os=89,Gs=121,Hs=65,$s=97;var de=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new Ce,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new Ce,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case Mt:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case kr:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case Mt:throw new Error("invalid escape character in formatting block");case Ms:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\/([#?0-9]+)(?:$|[^#?0-9])/,r=this.pattern.substr(this.char_index).match(e);if(!r)return!1;let i=(r[1]||"").length+r[2].length+r[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!r[1];let s=Number(r[3]);return isNaN(s)||(this.current_section.fraction_denominator=s),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=r[3].length,this.char_index+=i,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let r=!1;for(let i=this.char_index+1;!r&&i<this.characters.length;i++){let s=this.characters[i];if(s===this.decimal_mark||s===dt||s===Ut)r=!0;else if(s!==Rr)break}if(r){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case dt:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case Ut:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===Ar||e===dt)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case gi:this.char_index++,this.current_section=new Ce,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case vi:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case Ut:case dt:case bi:case Rr:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case Us:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case kr:this.AppendString(this.ConsumeString());break;case Ar:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case _i:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case mi:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case xi:case wi:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case yi:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case Mt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let r=t-1;r;r--){let i=this.sections[0].prefix[r];if(i.flag===3){/h/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let r=t+1;r<this.sections[0].prefix.length;r++){let i=this.sections[0].prefix[r];if(i.flag===3){/s/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),r={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)r.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(r.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)r.text+=this.pattern[this.char_index++];return r}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case gi:this.char_index=this.characters.length;break;case Ut:case dt:case xi:case wi:case yi:case vi:this.date_pattern=!1;break;case Ls:case Ds:case Is:case Vs:case Fs:case zs:case Ps:case Ns:case Os:case Gs:this.AppendTextPart(this.ConsumeDatePart());break;case Hs:case $s:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case kr:this.AppendString(this.ConsumeString());break;case Ar:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case _i:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case mi:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case Mt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};k(de,"date_pattern",!1),k(de,"pattern",""),k(de,"char_index",0),k(de,"characters",[]),k(de,"sections",[]),k(de,"current_section",new Ce),k(de,"preserve_formatting_characters",!1),k(de,"decimal_mark",bi),k(de,"group_separator",Rr);var Ne=c=>(c>=60&&c--,new Date(-22090752e5+864e5*c)),Ke=(c,e=!0)=>{if(e){let t=new Date(c),r=new Date;r.setUTCMilliseconds(t.getUTCMilliseconds()),r.setUTCSeconds(t.getUTCSeconds()),r.setUTCMinutes(t.getUTCMinutes()),r.setUTCHours(t.getHours()),r.setUTCDate(t.getDate()),r.setUTCMonth(t.getMonth()),r.setUTCFullYear(t.getFullYear()),c=r.getTime()}return c=(c+22090752e5)/864e5,c>=60&&c++,c},Se=class{magic_decimal=!1;transform_value;_pattern="";sections;decimal_zero_regexp=[];cloned=[];get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}constructor(e){if(this._pattern=e,this.sections=de.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new Ce),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}static FormatPartsAsText(e,t=0){let r=-1,i=e.map((s,n)=>{switch(s.flag){case 2:return r=n,s.text;case 1:return s.text.replace(/./g," ");case 6:return"";default:return s.text}});if(r>=0&&t){let s=i.reduce((a,o,l)=>l===r?a:a+o.length,0),n="";for(let a=0;a<t-s;a++)n+=i[r];i[r]=n}return i.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",r=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let i="";for(let s=0;s<e.fraction_denominator_digits;s++)i+="#";t+=i,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=i}else if(e.has_number_format){for(r=0;r<e.integer_min_digits;r++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\d#]{1,3}(?=([\d#]{3})+(?![\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",r=0;r<e.decimal_min_digits;r++)t+="0";for(;r<e.decimal_max_digits;r++)t+="#"}if(e.scaling){let i=Math.log10(e.scaling)/3;for(r=0;r<i;r++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.flag===6?"["+i.text+"]":i.text).join("")+t+e.suffix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let r=this.transform_value(e);if(or(r))e=r;else return typeof r=="string"?r:this.FormatParts(r)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],r=[],i=!1,s=!!e.imaginary;s&&(t=this.FormatParts(e.imaginary),s=t.some(o=>/[1-9]/.test(o.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",i=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",i=!0));let n=!!e.real;n&&(r=this.FormatParts(e.real),n=r.some(o=>/[1-9]/.test(o.text)));let a=[];if(n||!n&&!s){if(a.push(...r),s){let o=Math.abs(e.imaginary);a.push({text:e.imaginary<0?` ${Se.minus_character} `:" + "});let l=i?[]:this.FormatParts(Math.abs(e.imaginary));a.push(...l,{text:Se.imaginary_character})}}else s&&a.push(...t,{text:Se.imaginary_character});return a}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:r}=this.BaseFormat(e),i=[];if(r.date_format||r.string_format)for(let s of t)typeof s=="string"?i.push({text:s}):i.push(s);else this.magic_decimal&&t[1]===""&&t.splice(1,1),i=[...r.prefix.map(s=>({...s})),{text:r.has_number_format?t.join(T.decimal_separator):""},...r.suffix.map(s=>({...s}))];for(let s=1;s<i.length;s++)i[s].flag===i[s-1].flag&&(i[s].text=i[s-1].text+i[s].text,i[s-1].text="");return i.filter(s=>s.text)}Format(e,t=0){return Se.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=Ne(e),r=this.sections[0],i=t.getUTCHours();return r.twelve_hour&&(i>12&&(i-=12),i===0&&(i=12)),{parts:r.prefix.map(n=>{if(n.flag===4)return n.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(n.flag===3){switch(n.text.toLowerCase()){case"am/pm":case"a/p":{let o=n.text.split("/");return{text:t.getUTCHours()>12?o[1]:o[0]}}case"mmmmm":return{text:T.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return n.text==="MMMM"?{text:T.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:T.date_components.long_months[t.getUTCMonth()]};case"mmm":return n.text==="MMM"?{text:T.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:T.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return n.text==="DDDDD"||n.text==="DDDD"?{text:T.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:T.date_components.long_days[t.getUTCDay()]};case"ddd":return n.text==="DDD"?{text:T.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:T.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(i.toString(),2)};case"h":return{text:this.ZeroPad(i.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let a=n.text.match(/^(s+)\.(0+)$/);if(a)return{text:this.ZeroPad(t.getUTCSeconds().toString(),a[1].length)+T.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(a[2].length).substr(2)}}return{...n}}),section:r}}StringFormat(e,t){let r=[];for(let i of t.prefix)i.flag===5?r.push({text:e}):r.push({...i});return{parts:r,section:t}}Round2(e,t){let r=Math.pow(10,t);return Math.round(r*e)/r}FormatFraction(e,t){t.percent&&(e*=100);let r={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)r.denominator=t.fraction_denominator,r.numerator=Math.round(e*r.denominator);else if(r.error){let s=Se.fraction_limits[t.fraction_denominator_digits-1]||Se.fraction_limits[0];for(let n=2;n<=s;n++){let a=Math.round(e*n),o=Math.abs(a/n-e);if(o<r.error&&(r={numerator:a,denominator:n,error:o},!o))break}}let i=[];if(t.fraction_integer){let s=Math.floor(r.numerator/r.denominator);r.numerator%=r.denominator,(s||!r.numerator)&&(i.push(s.toString()),r.numerator&&i.push(" "))}else r.numerator||i.push("0");return r.numerator&&(i.push(r.numerator.toString()),i.push("/"),i.push(r.denominator.toString())),i.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],r=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let i=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,s=Math.pow(10,-i)/2,n=Math.abs(e);if(n<s&&(t=this.sections[2],r=this.decimal_zero_regexp[2]),t.scaling&&(n/=t.scaling,n<s&&(t=this.sections[2],r=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let a="";if(t.fraction_format)return{parts:[this.FormatFraction(n,t)],section:t};t.exponential?a=n.toExponential(t.decimal_max_digits):(t.percent&&(n*=100),a=this.Round2(n,t.decimal_max_digits).toFixed(t.decimal_max_digits)),r&&(a=a.replace(r,""));let o=a.split(".");for(;o[0].length<t.integer_min_digits;)o[0]=("0000000000000000"+o[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&o[0]==="0"&&(o[0]=""),t.grouping&&(o[0]=o[0].replace(Se.grouping_regexp,"$&"+T.grouping_separator)),{parts:o,section:t}}},X=Se;k(X,"grouping_regexp",/\d{1,3}(?=(\d{3})+(?!\d))/g),k(X,"fraction_limits",[9,99,999,9999]),k(X,"imaginary_character","\u{1D456}"),k(X,"minus_character","-");var D=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let r=this.symbolc_name_map[e.toLowerCase()],i=this.cache[r||e];return i||(i=new X(e),this.cache[e]=i),i}static Equals(e,t){if(e===t)return!0;let r=this.Get(e),i=this.Get(t);return r.pattern===i.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new X(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new X("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};k(D,"cache",{}),k(D,"complex_general"),k(D,"symbolc_name_map",{}),k(D,"base_formats",{Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"}),k(D,"aliases",{Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"});D.InitCache();var Ci=new Date().getUTCFullYear(),Tr=class{compare_day;compare_month;TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let r=new Date(t),s=e.replace(/[\d\-\\/,.\s]+/g," ").toLocaleLowerCase().split(/\s+/).map(o=>o.trim()).filter(o=>!!o);if(!s.length)return t;if(!this.compare_month){this.compare_month={};for(let o=0;o<12;o++)this.compare_month[T.date_components.long_months[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_month[T.date_components.short_months[o].toLocaleLowerCase().replace(/\./,"")]=o}if(!this.compare_day){this.compare_day={};for(let o=0;o<7;o++)this.compare_day[T.date_components.long_days[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_day[T.date_components.short_days[o].toLocaleLowerCase().replace(/\./,"")]=o}let n=!1,a=!1;for(let o of s){let l=!1;for(let[d,u]of Object.entries(this.compare_month))if(o===d){if(n||r.getUTCMonth()!==u)return!1;l=!0,n=!0}if(!l){for(let[d,u]of Object.entries(this.compare_day))if(o===d){if(a||r.getUTCDay()!==u)return!1;l=!0,a=!0}}if(!l)return!1}return a&&!n?!1:t}TryParse(e=""){let t=0;if(e[0]==="'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let r=e.trim(),i=r.match(/^[$](.*?)$/);i&&(r=i[1],t|=8);let s=r.match(/^\((.*?)\)$/);s&&(r=s[1],t|=32);let n=r.match(/^(.*?)%\s*$/);n&&(r=n[1],t|=4),T.decimal_separator==="."?/,/.test(r)&&(r=r.replace(/,/g,""),t|=16):(r=r.replace(/(\d)\s+/g,"$1"),r=r.replace(/\./g,""),r=r.replace(/,/,"."));let a=Number(r);if(a===null||isNaN(a)){let o=e.toLowerCase();if(o==="false")return{value:!1,type:4};if(o==="true")return{value:!0,type:4};let l=this.TestDate(e);if(l!==!1&&!isNaN(l)){let d=new Date(l),u=d.getUTCFullYear();if(u>=Ci-200&&u<=Ci+200)return t=64,(d.getHours()||d.getMinutes()||d.getSeconds())&&(t|=128),{value:Ke(l),type:3,hints:t}}return{value:e,type:2}}if(s&&(a=-a),n){let o=a<0?-1:1,l=(o*a).toString().split(".");l[0]=("00"+l[0]).replace(/(\d\d)$/,".$1"),a=Number(l.join(""))*o}return/e/.test(e)&&(t|=2),{value:a,type:3,hints:t}}},ye=new Tr;var ut="http://www.w3.org/2000/svg",Lt=class{constructor(e,t,r={x:0,y:0}){this.theme=t;this.offset=r;this.g=document.createElementNS(ut,"g"),this.g.setAttribute("transform",`translate(${r.x}, ${r.y})`),this.outline=document.createElementNS(ut,"rect"),this.outline.setAttribute("class","outline"),e?(this.g.setAttribute("class","selection primary-selection"),this.fill=document.createElementNS(ut,"path"),this.fill.setAttribute("class","fill"),this.nub=document.createElementNS(ut,"rect"),this.nub.setAttribute("class","nub"),this.g.appendChild(this.fill),this.g.appendChild(this.outline),this.g.appendChild(this.nub)):(this.g.setAttribute("class","selection alternate-selection"),this.fill=document.createElementNS(ut,"rect"),this.fill.setAttribute("class","fill"),this.g.appendChild(this.fill),this.g.appendChild(this.outline))}g;outline;fill;nub;Offset(e){this.g.setAttribute("transform",`translate(${e.x}, ${e.y})`)}Show(e=!0){this.g.style.display=e?"block":"none"}SetOutline(e,t=!1){this.outline.setAttribute("x",(e.left-1).toString()),this.outline.setAttribute("y",(e.top-1).toString()),this.outline.setAttribute("width",(e.width+1).toString()),this.outline.setAttribute("height",(e.height+1).toString()),t&&this.fill&&(this.fill.setAttribute("x",e.left.toString()),this.fill.setAttribute("y",e.top.toString()),this.fill.setAttribute("width",e.width.toString()),this.fill.setAttribute("height",e.height.toString()))}SetFill(e,t){if(!this.fill)return;let r=[];r.push("M"+e.left+" "+e.top),r.push("L"+e.left+" "+e.bottom),r.push("L"+e.right+" "+e.bottom),r.push("L"+e.right+" "+e.top),r.push("Z"),r.push("M"+t.left+" "+t.top),r.push("L"+t.right+" "+t.top),r.push("L"+t.right+" "+t.bottom),r.push("L"+t.left+" "+t.bottom),r.push("Z"),this.fill.setAttribute("d",r.join(" "))}SetNub(e){this.nub&&(this.nub.setAttribute("x",(e.left+e.width-4).toString()),this.nub.setAttribute("y",(e.top+e.height-4).toString()),this.nub.setAttribute("width","7"),this.nub.setAttribute("height","7"))}};var Ur="http://www.w3.org/2000/svg";var Oe=class{constructor(e,t,r){this.theme=e;this.container=t;this.orientation=r;this.g=document.createElementNS(Ur,"g"),this.g.setAttribute("class","header-overlay"),this.overlay=document.createElementNS(Ur,"rect"),this.overlay.setAttribute("class","overlay"),this.highlight=document.createElementNS(Ur,"rect"),this.highlight.setAttribute("class","highlight"),this.g.style.display="none",this.g.appendChild(this.highlight),this.g.appendChild(this.overlay),t.appendChild(this.g)}g;overlay;highlight;Remove(){this.container.removeChild(this.g)}Hide(){this.g.style.display="none"}Show(e,t,r,i){this.overlay.setAttribute("x",e.toString()),this.overlay.setAttribute("y",t.toString()),this.overlay.setAttribute("width",r.toString()),this.overlay.setAttribute("height",i.toString()),this.orientation===0?(this.highlight.setAttribute("x",e.toString()),this.highlight.setAttribute("y",(t+i-2).toString()),this.highlight.setAttribute("width",r.toString()),this.highlight.setAttribute("height","2")):(this.highlight.setAttribute("x",(e+r-2).toString()),this.highlight.setAttribute("y",t.toString()),this.highlight.setAttribute("width","2"),this.highlight.setAttribute("height",i.toString())),this.g.style.display="block"}};var Dt=class{constructor(e,t,r,i,s,n){this.theme=e;this.layout=t;this.model=r;this.view=i;this.primary_selection=s;this.additional_selections=n}nub_rectangle=new F(-1,-1,0,0);cached_additional_selections="";grid_selections=[];row_header_selections=[];column_header_selections=[];corner_selections=[];row_overlay;column_overlay;corner_row_overlay;corner_column_overlay;Initialize(){this.row_overlay=new Oe(this.theme,this.layout.row_header_selection,0),this.column_overlay=new Oe(this.theme,this.layout.column_header_selection,1),this.corner_row_overlay=new Oe(this.theme,this.layout.corner_selection,0),this.corner_column_overlay=new Oe(this.theme,this.layout.corner_selection,1)}RenderSelections(e=!0,t=!0){let r=this.primary_selection.empty;e||(this.primary_selection.empty=!0);let i=[this.primary_selection].concat(this.additional_selections);this.RenderSelectionGroup(i,this.layout.grid_selection,void 0,void 0,this.grid_selections,void 0,t);let s=new F(-1,-1,0,0);if(!this.primary_selection.empty){let o=this.view.active_sheet.RealArea(this.primary_selection.area);s=this.layout.CellAddressToRectangle(o.start).Combine(this.layout.CellAddressToRectangle(o.end))}if(!this.primary_selection.empty&&this.layout.header_offset.y>2?(this.row_overlay.Show(s.left,0,s.width,this.layout.header_offset.y),this.corner_row_overlay.Show(s.left+this.layout.header_offset.x,0,s.width,this.layout.header_offset.y)):(this.row_overlay.Hide(),this.corner_row_overlay.Hide()),!this.primary_selection.empty&&this.layout.header_offset.x>2?(this.column_overlay.Show(0,s.top,this.layout.header_offset.x,s.height),this.corner_column_overlay.Show(0,s.top+this.layout.header_offset.y,this.layout.header_offset.x,s.height)):(this.column_overlay.Hide(),this.corner_column_overlay.Hide()),!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows){this.primary_selection.empty=r;return}let n=[],a=[];if(this.primary_selection.empty)n.push(!1),a.push(!1);else{let o=this.primary_selection.area.start;n.push(o.row<=this.view.active_sheet.freeze.rows||o.row===1/0),a.push(o.column<=this.view.active_sheet.freeze.columns||o.column===1/0)}for(let{area:o}of this.additional_selections)n.push(o.start.row<=this.view.active_sheet.freeze.rows||o.start.row===1/0),a.push(o.start.column<=this.view.active_sheet.freeze.columns||o.start.column===1/0);this.view.active_sheet.freeze.rows&&this.RenderSelectionGroup(i,this.layout.row_header_selection,n,void 0,this.row_header_selections,{x:0,y:this.layout.header_offset.y}),this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.column_header_selection,a,void 0,this.column_header_selections,{x:this.layout.header_offset.x,y:0}),this.view.active_sheet.freeze.rows&&this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.corner_selection,a,n,this.corner_selections,{...this.layout.header_offset}),this.primary_selection.empty=r}RenderSelectionGroup(e,t,r,i,s,n,a=!0){for(let o=0;o<e.length;o++)if((!e[o].area.start.sheet_id||e[o].area.start.sheet_id===this.view.active_sheet.id)&&!e[o].empty&&(!r||r[o])&&(!i||i[o])){if(a||!e[o].rendered){let d=this.EnsureGridSelectionBlock(t,s,o,n);this.RenderSVGSelection(e[o],d,o)}}else s[o]&&s[o].Show(!1);for(let o=e.length;o<s.length;o++)s[o]&&s[o].Show(!1)}EnsureGridSelectionBlock(e,t,r,i){let s=t[r];if(!s)if(s=new Lt(!r,this.theme),t[r]=s,r){let n=e.querySelector(".alternate-selections");n||(n=document.createElementNS("http://www.w3.org/2000/svg","g"),n.setAttribute("class","alternate-selections"),e.appendChild(n)),n?.appendChild(s.g)}else e.appendChild(s.g);return i&&s.Offset(i),s}ClampEnd(e){return{row:Math.min(e.row,this.view.active_sheet.rows-1),column:Math.min(e.column,this.view.active_sheet.columns-1)}}RenderSVGSelection(e,t,r=0){let i=this.view.active_sheet.RealArea(e.area,!0),s=this.layout.CellAddressToRectangle(i.start);if(i.count>1)s=s.Combine(this.layout.CellAddressToRectangle(i.end));else if(r){let n=this.view.active_sheet.CellData(e.target);n.merge_area&&(s=this.layout.CellAddressToRectangle(n.merge_area.start),s=s.Combine(this.layout.CellAddressToRectangle(n.merge_area.end)))}if(r||(this.nub_rectangle=new F(s.left+s.width-6,s.top+s.height-6,11,11)),s.top===0&&this.layout.header_offset.y<=1&&(s.top=1,s.height-=1),s.left===0&&this.layout.header_offset.x<=1&&(s.left=1,s.width-=1),s.height<=0||s.height<=0){t.Show(!1);return}if(t.SetOutline(s,!!r),r)e.rendered=!0;else{let n=this.layout.CellAddressToRectangle(e.target),a=this.view.active_sheet.CellData(e.target);a.merge_area&&(n=this.layout.CellAddressToRectangle(a.merge_area.start),n=n.Combine(this.layout.CellAddressToRectangle(a.merge_area.end))),t.SetFill(n,s),t.SetNub(s)}t.Show()}};function be(c,e=[],t,r){typeof e=="string"&&(e=[e]);let i,s=a=>{a.stopPropagation(),a.preventDefault(),i(),r&&r(a)},n=a=>{if(a.stopPropagation(),a.preventDefault(),!a.buttons){i(),r&&r(a);return}t&&t(a)};i=()=>{c.style.display="none",c.removeEventListener("mousemove",n),c.removeEventListener("mouseup",s);for(let a of e)c.classList.remove(a)};for(let a of e)c.classList.add(a);c.style.display="block",t&&c.addEventListener("mousemove",n),r&&c.addEventListener("mouseup",s)}var I=class{static CreateDiv(e="",t,r){return this.Create("div",e,t,r)}static Create(e="",t="",r,i,s){let n=document.createElement(e);if(t&&n.setAttribute("class",t),i&&n.setAttribute(i,""),s){let a=Object.keys(s);for(let o of a)n.setAttribute(o,s[o])}return r&&r.appendChild(n),n}};var It=class extends te{constructor(t){super();this.container=t;this.format=D.Get("0.0");let r=I.CreateDiv("treb-scale-control-2",t);this.input=I.Create("input","treb-scale-input",r);let i=I.CreateDiv("treb-slider-container",r);this.input.addEventListener("keypress",s=>{switch(s.key){case"ArrowUp":case"ArrowDown":s.stopPropagation(),s.preventDefault(),console.info("mark?");break}}),this.input.addEventListener("keydown",s=>{switch(s.key){case"Enter":this.input.blur();break;case"ArrowUp":this.Tick(-1);break;case"ArrowDown":this.Tick(1);break;case"Escape":this.input.value=this.format.Format(this.scale)+"%",this.input.blur();break;default:return}s.stopPropagation(),s.preventDefault()}),this.input.addEventListener("change",()=>{let s=this.input.value;s=s.replace(/%/g,"");let n=ye.TryParse(s);n.type===3?this.UpdateScale(Number(n.value),!0):this.input.value=this.format.Format(this.scale)+"%"}),this.slider=I.Create("input",void 0,i,void 0,{type:"range",min:"50",max:"200",value:"100",step:"2.5"}),this.slider.addEventListener("input",()=>{this.UpdateScale(Number(this.slider.value),!0)}),r.addEventListener("wheel",s=>{s.stopPropagation(),s.preventDefault(),this.Tick(s.deltaY)})}input;slider;scale=0;format;timeout=0;Tick(t){let r=Math.round(this.scale/2.5)*2.5;t>0?this.UpdateScale(r-2.5,!0,!0):t<0&&this.UpdateScale(r+2.5,!0,!0)}UpdateScale(t,r=!1,i=!1){t=Math.max(50,Math.min(200,t)),t!==this.scale&&(this.scale=t,this.input.value=this.format.Format(t)+"%",this.slider.value=t.toFixed(1),r&&(this.timeout||(this.timeout=requestAnimationFrame(()=>{this.timeout=0,this.Publish({type:"scale",value:this.scale/100,keep_focus:i})}))))}};var Vt=class extends te{constructor(t,r,i,s,n,a){super();this.layout=t;this.model=r;this.view=i;this.options=s;this.theme=n;this.grid_container=a;this.Init(a)}node;container;scale_control;stats_panel;dragging=!1;double_click_data={};_visible=!1;get visible(){return this._visible}set stats_data(t){if(this.stats_panel){this.stats_panel.innerText="";for(let r of t){let i=document.createElement("span");i.classList.add("treb-stats-label"),i.textContent=r.label,this.stats_panel.appendChild(i);let s=document.createElement("span");s.classList.add("treb-stats-value"),s.textContent=r.value,this.stats_panel.appendChild(s)}}}IsDoubleClick(t,r=300){return this.double_click_data.index===t?(clearTimeout(this.double_click_data.timeout),this.double_click_data.index=void 0,this.double_click_data.timeout=void 0,!0):(this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.index=t,this.double_click_data.timeout=setTimeout(()=>{this.double_click_data.index=void 0,this.double_click_data.timeout=void 0},r),!1)}Hide(){this.Show(!1)}Show(t=!0){this.container&&(this._visible=t,t?(this.grid_container.classList.add("treb-tab-bar-layout"),this.grid_container.parentElement?.classList.add("has-tab-bar"),this.container.style.display="flex"):(this.grid_container.classList.remove("treb-tab-bar-layout"),this.grid_container.parentElement?.classList.remove("has-tab-bar"),this.container.style.display="none"))}SetActive(t,r){r?t.classList.add("selected"):t.classList.remove("selected")}UpdateScale(t){this.scale_control?.UpdateScale(t*100)}Update(){if(this.dragging||!this.node)return;if(this.options.tab_bar==="auto"){if(this.model.sheets.list.reduce((a,o)=>o.visible?a+1:a,0)<=1){this.Show(!1);return}this.Show(!0)}this.grid_container.classList.add("treb-tab-bar-layout"),this.grid_container.parentElement?.classList.add("has-tab-bar");let t=this.node,r=!1,i=Array.prototype.map.call(t.children,n=>n);for(let n of i)n.dataset.preserve?r=!0:t.removeChild(n);if(!r){let n=document.createElement("div");n.classList.add("tab-bar-spacer"),n.dataset.preserve="true",t.appendChild(n),n=document.createElement("div"),n.classList.add("tab-bar-end"),n.dataset.preserve="true",this.options.stats&&(this.stats_panel=document.createElement("div"),this.stats_panel.classList.add("treb-stats-panel"),n.appendChild(this.stats_panel)),this.options.scale_control&&(this.scale_control=new It(n),this.scale_control.Subscribe(a=>{this.Publish(a)}),this.UpdateScale(this.options.initial_scale||1)),t.appendChild(n)}if(this.options.delete_tab){let n=document.createElement("div");n.classList.add("delete-tab"),n.innerHTML="<svg viewbox='0 0 16 16'><path d='M4,4 L12,12 M12,4 L4,12'/></svg>",n.style.order=(-1).toString(),n.title="Delete current sheet",n.addEventListener("click",()=>{this.Publish({type:"delete-sheet"})}),t.appendChild(n)}let s=[];for(let n of this.model.sheets.list){if(!n.visible)continue;let a=s.length,o=document.createElement("div");o.classList.add("tab"),o.style.order=(a*2).toString(),this.SetActive(o,n===this.view.active_sheet);let l=u=>{if(u.stopPropagation(),u.preventDefault(),this.IsDoubleClick(a))return;this.Publish({type:"activate-sheet",sheet:n});let h=s.map(v=>v.getBoundingClientRect()),f=a*2-1,p=h[0].left,m=h[h.length-1].right,_=h[0].top,b=h[0].bottom,g=-1,x=(h.length-1)*2+1;for(let v of s)this.SetActive(v,v===o);this.dragging=!0,be(this.layout.mask,[],v=>{let[w,S]=[v.clientX,v.clientY];if(S>_&&S<b){let R=f;if(w<p)R=g;else if(w>m)R=x;else for(let E=0;E<h.length;E++){let H=h[E];if(w>=H.left&&w<=H.right){E!==a&&(w>=H.left+H.width/2?R=E*2+1:R=E*2-1);break}}R!==f&&(f=R,o.style.order=f.toString(),h=s.map(E=>E.getBoundingClientRect()))}},()=>{let v=a,w=(f+1)/2;this.dragging=!1;for(let S=0;S<this.model.sheets.length;S++)this.model.sheets.list[S].visible||(v>=S&&v++,w>=S&&w++);v===w||v===0&&w<=0||v===s.length-1&&w>=s.length-1||this.Publish({type:"reorder-sheet",index:v,move_before:w})})},d=()=>{o.removeEventListener("mousedown",l),o.removeEventListener("dblclick",d),o.contentEditable="true";let u=window.getSelection();if(u){u.removeAllRanges();let h=document.createRange();h.selectNodeContents(o),u.addRange(h)}o.addEventListener("keydown",h=>{switch(h.key){case"Enter":this.Publish({type:"rename-sheet",name:o.innerText.trim(),sheet:n});break;case"Escape":o.innerText=n.name,this.Publish({type:"cancel"});break;default:return}h.stopPropagation(),h.preventDefault()}),o.addEventListener("focusout",()=>{let h=o.innerText.trim();h!==n.name&&this.Publish({type:"rename-sheet",name:h,sheet:n})}),o.focus()};o.textContent=n.name,o.addEventListener("dblclick",d),o.addEventListener("mousedown",l),t.appendChild(o),s.push(o)}if(this.options.add_tab){let n=document.createElement("a");n.classList.add("add-tab"),n.style.order=(this.model.sheets.length*2).toString(),n.innerText="+",n.title="Add sheet",n.addEventListener("click",()=>{this.Publish({type:"add-sheet"})}),t.appendChild(n)}}Init(t){this.container=document.createElement("div"),this.container.classList.add("treb-tab-bar-container"),t.appendChild(this.container),this.node=document.createElement("div"),this.node.classList.add("treb-tab-bar"),this.container.appendChild(this.node)}};var Si=()=>({target:{row:0,column:0},area:new y({row:0,column:0}),empty:!0});var Bs=100,Ve=class{get key(){return this.key_}rect;scaled_rect;layout;data={};type="";temp={};resizable=!0;movable=!0;removable=!0;selectable=!0;move_with_cells=!0;resize_with_cells=!0;view=[];dirty;formula="";extent;key_=Bs++;constructor(e={}){for(let t of Object.keys(this))t!=="layout"&&e[t]&&(this[t]=e[t]);e.layout&&(this.layout=JSON.parse(JSON.stringify(e.layout))),e.rect&&(this.rect=F.Create(e.rect))}toJSON(){let e={};return this.data&&(e.data=this.data),this.formula&&(e.formula=this.formula),this.type&&(e.type=this.type),this.resizable||(e.resizable=this.resizable),this.movable||(e.movable=this.movable),this.removable||(e.removable=this.removable),this.selectable||(e.selectable=this.selectable),this.move_with_cells||(e.move_with_cells=this.move_with_cells),this.resize_with_cells||(e.resize_with_cells=this.resize_with_cells),this.layout&&(e.layout=this.layout),this.extent&&(e.extent=this.extent),e}};var js=100,Ai=60,Fe=class{default_style_properties;annotations=[];freeze={rows:0,columns:0};visible=!0;default_column_width=100;default_row_height=25;cells=new xt;selection=Si();scroll_offset={x:0,y:0};name=Fe.default_sheet_name;background_image;_image=void 0;get image(){return this._image}id_;row_height_=[];column_width_=[];row_headers=[];column_headers=[];row_header_width=100;column_header_height=25;style_map=[];style_json_map=[];sheet_style={};row_styles={};column_styles={};row_pattern=[];cell_style=[];get header_offset(){return{x:this.row_header_width,y:this.column_header_height}}get rows(){return this.cells.rows}get columns(){return this.cells.columns}get id(){return this.id_}set id(e){this.id_=e,this.id>=Fe.base_id&&(Fe.base_id=this.id+1)}constructor(e){this.default_style_properties=e,this.default_column_width=js,this.row_header_width=Ai,this.UpdateDefaultRowHeight(),this.id_=Fe.base_id++}static Reset(){this.base_id=100}static Blank(e,t,r=30,i=20){let s=new Fe(e);return t&&(s.name=t),r=Math.max(r,1),i=Math.max(i,1),s.cells.EnsureCell({row:r-1,column:i-1}),s}static UpdateStyle(e){if(typeof e.horizontal_align=="number"){let t=[A.HorizontalAlign.None,A.HorizontalAlign.Left,A.HorizontalAlign.Center,A.HorizontalAlign.Right];e.horizontal_align=t[e.horizontal_align]||void 0}if(typeof e.vertical_align=="number"){let t=[A.VerticalAlign.None,A.VerticalAlign.Top,A.VerticalAlign.Bottom,A.VerticalAlign.Middle];e.vertical_align=t[e.vertical_align]||void 0}}static FromJSON(e,t,r){let i=typeof e=="string"?JSON.parse(e):e,s=(l,d)=>{Object.keys(d).forEach(u=>{let h=Number(u)||0;l[h]=d[u]})};r||(r=new Fe(t)),i.default_column_width&&(r.default_column_width=i.default_column_width),i.default_row_height&&(r.default_row_height=i.default_row_height),i.id&&(r.id=i.id),i.name&&(r.name=i.name),i.background_image&&(r.background_image=i.background_image);let n=l=>{let d=l;this.UpdateStyle(d),(d.font_size_value||d.font_size_unit)&&(d.font_size={unit:d.font_size_unit||"pt",value:d.font_size_value||10},d.font_size_unit=void 0,d.font_size_value=void 0),d.font_bold&&(d.bold=!0,d.font_bold=void 0),d.font_italic&&(d.italic=!0,d.font_italic=void 0),d.font_underline&&(d.underline=!0,d.font_underline=void 0),d.font_strike&&(d.strike=!0,d.font_strike=void 0),d.text_color&&(d.text_color!=="none"&&(d.text={text:d.text_color}),d.text_color=void 0),d.background&&(d.background!=="none"&&(d.fill={text:d.background}),d.background=void 0),d.border_top_color&&(d.border_top_color!=="none"&&(d.border_top_fill={text:d.border_top_color}),d.border_top_color=void 0),d.border_left_color&&(d.border_left_color!=="none"&&(d.border_left_fill={text:d.border_left_color}),d.border_left_color=void 0),d.border_bottom_color&&(d.border_bottom_color!=="none"&&(d.border_bottom_fill={text:d.border_bottom_color}),d.border_bottom_color=void 0),d.border_right_color&&(d.border_right_color!=="none"&&(d.border_right_fill={text:d.border_right_color}),d.border_right_color=void 0)},a=i.styles||i.cell_style_refs||[];for(let l of a)n(l);if(r.cell_style=[],a&&(i.cell_styles||[]).forEach(l=>{typeof l.ref=="number"&&(l.style=JSON.parse(JSON.stringify(a[l.ref])))}),r.cells.FromJSON(i.data),i.rows&&r.cells.EnsureRow(i.rows-1),i.columns&&r.cells.EnsureColumn(i.columns-1),i.data)if(it(i.data))for(let l of i.data)l.style_ref&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=JSON.parse(JSON.stringify(a[l.style_ref])));else if(lr(i.data))for(let l of i.data){let d=l.row;for(let u of l.cells){let h=u.column;u.style_ref&&(r.cell_style[h]||(r.cell_style[h]=[]),r.cell_style[h][d]=JSON.parse(JSON.stringify(a[u.style_ref])))}}else for(let l of i.data){let d=l.column;for(let u of l.cells){let h=u.row;u.style_ref&&(r.cell_style[d]||(r.cell_style[d]=[]),r.cell_style[d][h]=JSON.parse(JSON.stringify(a[u.style_ref])))}}r.freeze.rows=0,r.freeze.columns=0,i.freeze&&(r.freeze.rows=i.freeze.rows||0,r.freeze.columns=i.freeze.columns||0),r.scroll_offset=i.scroll?{...i.scroll}:{x:0,y:0};for(let l of i.cell_styles||[])if(l.style&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=l.style,l.rows))for(let d=1;d<l.rows;d++)r.cell_style[l.column][l.row+d]=JSON.parse(JSON.stringify(l.style));r.sheet_style=i.sheet_style||{},r.column_styles={},r.row_styles={};let o=(l,d)=>{for(let u of Object.keys(l)){let h=Number(u),f=l[h];if(typeof f=="number"){let p=a[f];p&&(d[h]=JSON.parse(JSON.stringify(p)),n(d[h]))}else f&&(d[h]=f,n(d[h]))}};o(i.row_style,r.row_styles),o(i.column_style,r.column_styles),r.row_pattern=i.row_pattern||[],n(r.sheet_style||{});for(let l of r.row_pattern)n(l);return r.row_height_=[],s(r.row_height_,i.row_height||{}),r.row_height_.length&&r.cells.EnsureRow(r.row_height_.length-1),r.column_width_=[],s(r.column_width_,i.column_width||{}),r.column_width_.length&&r.cells.EnsureColumn(r.column_width_.length-1),r.annotations=(i.annotations||[]).map(l=>new Ve(l)),i.selection&&(r.selection=JSON.parse(JSON.stringify(i.selection))),r.visible=!0,typeof i.visible<"u"&&(r.visible=!!i.visible),r}Activate(){if(this.background_image){let e=kt(this.background_image);e&&(this._image=document.createElement("img"),this._image.src=e)}}MergeCells(e){e=e.Clone(),this.cells.Apply(e,(t,r,i)=>{t.merge_area=e,t.render_clean=[],(r!==e.start.column||i!==e.start.row)&&t.Reset()},!0)}UnmergeCells(e){let t=!0;if(this.cells.Apply(e,r=>{t=t&&!!r.merge_area&&e.Equals(r.merge_area)},!1),!t){console.warn("area mismatch");return}this.cells.Apply(e,r=>{r.merge_area=void 0,r.render_clean=[]},!1)}StyleFontSize(e,t={}){let r=e.font_size?.value||0,i=0;switch(e.font_size?.unit){case"px":r*=75/100;break;case"em":i=e.font_size.value||1;break;case"%":i=(e.font_size.value||100)/100;break}return i&&(r=i*(t.font_size?.value||10),t.font_size?.unit==="px"&&(r*=75/100)),r||10}UpdateDefaultRowHeight(){let e=A.Composite([this.default_style_properties,this.sheet_style]);if(typeof window<"u"){let t=re.MeasureText(A.Font(e),"M"),r=Math.round(t.height*1.4);this.default_row_height<r&&(this.default_row_height=r)}}SetRowHeaders(e){this.row_headers=e.map(t=>t===void 0?"":t.toString()),this.row_headers&&this.cells.EnsureRow(this.row_headers.length-1)}SetColumnHeaders(e){this.column_headers=e.map(t=>t===void 0?"":t.toString()),e&&this.cells.EnsureColumn(e.length-1)}RowHeader(e){return this.row_headers?this.row_headers.length>e?this.row_headers[e]:"":e+1}ColumnHeader(e){let t="";if(this.column_headers)return this.column_headers.length>e?this.column_headers[e]:"";for(;;){let r=e%26;if(t=String.fromCharCode(65+r)+t,e=Math.floor(e/26),e)e--;else break}return t}GetRowHeight(e){let t=this.row_height_[e];return typeof t>"u"?this.default_row_height:t}SetRowHeight(e,t){return this.row_height_[e]=t,this.cells.EnsureRow(e),t}GetColumnWidth(e){let t=this.column_width_[e];return typeof t>"u"?this.default_column_width:t}SetColumnWidth(e,t){return this.column_width_[e]=t,this.cells.EnsureColumn(e),t}Delta(e,t){let r={},i=[...Object.keys(e),...Object.keys(t)];for(let s of i){let n=e[s],a=t[s];typeof n=="object"&&typeof a=="object"?JSON.stringify(n)!==JSON.stringify(a)&&(r[s]=a):n!==a&&(r[s]=a)}return r}UpdateCellStyle(e,t,r=!0){let{row:i,column:s}=e;this.cell_style[s]||(this.cell_style[s]=[]);let n=this.CompositeStyleForCell(e,!1,!1),a=A.Composite([this.default_style_properties,n,A.Merge(this.cell_style[s][i]||{},t,r)]),o=this.Delta(n,a);this.cell_style[s][i]=o,this.CellData(e).FlushStyle()}Invalidate(e){this.cells.Apply(this.RealArea(e),t=>t.render_clean=[])}UpdateAreaStyle(e,t={},r=!0){if(e)if(e.entire_sheet)this.UpdateSheetStyle(t,r);else if(e.entire_column)for(let i=e.start.column;i<=e.end.column;i++)this.UpdateColumnStyle(i,t,r);else if(e.entire_row)for(let i=e.start.row;i<=e.end.row;i++)this.UpdateRowStyle(i,t,r);else e.Array().forEach(i=>this.UpdateCellStyle(i,t,r))}HasCellStyle(e){return!!(this.cell_style[e.column]&&this.cell_style[e.column][e.row]||this.row_styles[e.row]||this.column_styles[e.column]||this.row_pattern.length)}NextVisibleColumn(e){for(++e;this.column_width_[e]===0;e++);return e}PreviousVisibleColumn(e){for(--e;e>=0&&this.column_width_[e]===0;e--);return e}NextVisibleRow(e){for(++e;this.row_height_[e]===0;e++);return e}PreviousVisibleRow(e){for(--e;e>=0&&this.row_height_[e]===0;e--);return e}TableRow(e,t){let r={alternate:!1,header:t===e.area.start.row,last:!1,totals:e.totals_row&&t===e.area.end.row};if(r.header||r.totals)return r;if(!(e.totals_row&&this.GetRowHeight(e.area.end.row)>0)){let n=e.area.end.row;for(;n>=e.area.start.row;n--)if(this.GetRowHeight(n)){r.last=n===t;break}}let s=e.area.start.row+1;for(;s<=e.area.end.row&&!(this.GetRowHeight(s)&&(r.alternate=!r.alternate,s===t));s++);return r}SurroundingStyle(e,t){let r=[{},{},{},{},{},{},{},{},{},{}],i=e.column+1,s=e.column-1,n=e.row+1,a=e.row-1;for(;this.column_width_[i]===0;i++);for(;this.row_height_[n]===0;n++);for(;s>=0&&this.column_width_[s]===0;s--);for(;a>=0&&this.row_height_[a]===0;a--);return s>=0&&a>=0&&(r[7]=this.CellStyleData({row:a,column:s},t)||{}),s>=0&&(r[4]=this.CellStyleData({row:e.row,column:s},t)||{},r[1]=this.CellStyleData({row:n,column:s},t)||{}),a>=0&&(r[8]=this.CellStyleData({row:a,column:e.column},t)||{},r[9]=this.CellStyleData({row:a,column:i},t)||{}),r[6]=this.CellStyleData({row:e.row,column:i},t)||{},r[2]=this.CellStyleData({row:n,column:e.column},t)||{},r[3]=this.CellStyleData({row:n,column:i},t)||{},r}CellStyleData(e,t){let r=this.cells.GetCell(e);if(r){if(!r.style){let i=this.GetStyleIndex(this.CompositeStyleForCell(e));r.style=this.style_map[i]}if(r.table){let i=r.table.theme||t;if(i){let s=JSON.parse(JSON.stringify(r.style)),n=this.TableRow(r.table,e.row);return n.header?i.header&&(s=A.Composite([s,i.header])):n.totals?i.total&&(s=A.Composite([s,i.total])):n.alternate?i.odd&&(s=A.Composite([s,i.odd])):i.even&&(s=A.Composite([s,i.even])),s}}return r.style}}GetCopyStyle(e){return this.CompositeStyleForCell(e,!0,!1)}CellData(e){let t=this.cells.EnsureCell(e);if(t.rendered_type)return t;let r,i;if(t.calculated_type?(i=t.calculated,r=t.calculated_type):(i=t.value,r=t.type),!t.style){let s=this.GetStyleIndex(this.CompositeStyleForCell(e));t.style=this.style_map[s]}if(!r||i===null||typeof i>"u")t.formatted="",t.rendered_type=2;else if(r===3)isNaN(i)?t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan:t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=3;else if(r===6)t.formatted="#"+(i||"ERR?"),t.rendered_type=6;else if(r===4)t.formatted=i.toString().toUpperCase(),t.rendered_type=4;else if(r===1&&t.calculated===void 0)t.formatted="",t.rendered_type=2;else if(r===7){let s=i;if(isNaN(s.real)||isNaN(s.imaginary))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan;else{let n=D.Get(t.style.number_format||"",!0);t.formatted=n.FormatComplex(s)}t.rendered_type=7}else if(r===9){if(isNaN(i.value))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan,t.formatted+=" "+i.unit;else{let s=D.Get(t.style.number_format||"",!0);t.formatted=s.FormatDimensionedQuantity(i)}t.rendered_type=9}else t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=2;return t}FormatNumber(e,t=""){let r=D.Get(t).FormatParts(e);return r.length?r.length===1&&!r[0].flag?r[0].text||"":r:""}SetHeaderSize(e=Ai,t=this.default_row_height){this.row_header_width=e,this.column_header_height=t}AutoSizeRow(e,t={},r=!0){let i=this.default_row_height,s=9;for(let n=0;n<this.cells.columns;n++){let a=this.CellData({row:e,column:n}),o=a.style,l=a.formatted||"";if(typeof l!="string"&&(l=l.map(d=>d.text).join("")),o&&l&&l.length){let d=l.split(/\n/),u=Math.round(this.StyleFontSize(o,t)*1.5);i=Math.max(i,((u||10)+s)*d.length)}}!r&&this.GetRowHeight(e)>=i||this.SetRowHeight(e,i)}GetStyle(e){return this.style_map[e]}InsertRows(e=0,t=1){if(e)for(let o=0;o<this.cells.columns;o++){let l=this.cells.GetCell({row:e-1,column:o},!1);if(l&&l.area){let d=this.cells.GetCell({row:e,column:o},!1);if(d&&d.area&&d.area.Equals(l.area))return!1}}t<0?this.cells.DeleteRows(e,-t):this.cells.InsertRows(e,t);let r={},i={};for(let o=e;o<this.cells.rows;o++)for(let l=0;l<this.cells.columns;l++){let d=this.cells.GetCell({row:o,column:l},!1);d&&(d.area&&!i[d.area.spreadsheet_label]&&(i[d.area.spreadsheet_label]=d.area),d.merge_area&&!r[d.merge_area.spreadsheet_label]&&(r[d.merge_area.spreadsheet_label]=d.merge_area))}for(let o of Object.keys(i)){let l=i[o],d=new y({row:l.start.row+t,column:l.start.column},{row:l.end.row+t,column:l.end.column});d.Iterate(u=>{let h=this.cells.GetCell(u,!0);h.area=d})}for(let o of Object.keys(r)){let l=r[o],d={row:l.start.row,column:l.start.column};l.start.row>=e&&(d.row+=t);let u=new y(d,{row:l.end.row+t,column:l.end.column});u.Iterate(h=>{let f=this.cells.GetCell(h,!0);f.merge_area=u})}let s=Object.keys(this.row_styles),n={};s.forEach(o=>{let l=Number(o);l<e?n[l]=this.row_styles[l]:t<0&&l<e-t||(n[l+t]=this.row_styles[l])}),this.row_styles=n;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.forEach(o=>{o&&o.length>=e&&o.splice.apply(o,a)}),this.row_height_.splice.apply(this.row_height_,a),this.FlushCellStyles(),!0}InsertColumns(e=0,t=1){if(e)for(let o=0;o<this.cells.rows;o++){let l=this.cells.GetCell({row:o,column:e-1},!1);if(l&&l.area){let d=this.cells.GetCell({row:o,column:e},!1);if(d&&d.area&&d.area.Equals(l.area))return!1}}t<0?this.cells.DeleteColumns(e,-t):this.cells.InsertColumns(e,t);let r={},i={};for(let o=e;o<this.cells.columns;o++)for(let l=0;l<this.cells.rows;l++){let d=this.cells.GetCell({row:l,column:o},!1);d&&(d.area&&!i[d.area.spreadsheet_label]&&(i[d.area.spreadsheet_label]=d.area),d.merge_area&&!r[d.merge_area.spreadsheet_label]&&(r[d.merge_area.spreadsheet_label]=d.merge_area))}for(let o of Object.keys(i)){let l=i[o],d=new y({row:l.start.row,column:l.start.column+t},{row:l.end.row,column:l.end.column+t});d.Iterate(u=>{let h=this.cells.GetCell(u,!0);h.area=d})}for(let o of Object.keys(r)){let l=r[o],d={row:l.start.row,column:l.start.column};l.start.column>=e&&(d.column+=t);let u=new y(d,{row:l.end.row,column:l.end.column+t});u.Iterate(h=>{let f=this.cells.GetCell(h,!0);f.merge_area=u})}let s=Object.keys(this.column_styles),n={};s.forEach(o=>{let l=Number(o);l<e?n[l]=this.column_styles[l]:t<0&&l<e-t||(n[l+t]=this.column_styles[l])}),this.column_styles=n;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.splice.apply(this.cell_style,a),this.column_width_.splice.apply(this.column_width_,a),this.FlushCellStyles(),!0}ClearArea(e){e=this.RealArea(e),this.cells.Apply(e,t=>t.Reset())}SetAreaValues2(e,t){e=this.RealArea(e),this.cells.SetArea(e,t)}SetArrayValue(e,t){e=this.RealArea(e),this.cells.Apply(e,i=>i.SetArray(e),!0),this.cells.GetCell(e.start,!0).SetArrayHead(e,t)}SetCellValue(e,t){this.cells.GetCell(e,!0).Set(t)}TablesFromArea(e,t=!1){if(z(e)){let i=this.cells.GetCell(e,!1);return i?.table&&(!t||e.row===i.table.area.start.row)?[i.table]:[]}let r=new Set;for(let i=e.start.row;i<=e.end.row;i++)for(let s=e.start.column;s<=e.end.column;s++){let n=this.cells.GetCell({row:i,column:s},!1);n?.table&&!r.has(n.table)&&(!t||i===n.table.area.start.row)&&r.add(n.table)}return Array.from(r.values())}RealArea(e,t=!1){let r=e.start,i=e.end;return e.entire_row&&(r.column=0,r.absolute_column=!1,i.column=this.cells.columns-1,i.absolute_column=!1),e.entire_column&&(r.row=0,r.absolute_row=!1,i.row=this.cells.rows-1,i.absolute_row=!1),t&&(i.row>=this.rows&&(i.row=this.rows-1,i.absolute_row=!1),i.column>=this.columns&&(i.column=this.columns-1,i.absolute_column=!1)),new y(r,i)}GetCellStyle(e,t=!1){if(z(e))return this.CompositeStyleForCell(e,!0,!1,t);if(e.start.row===e.end.row&&e.start.column===e.end.column)return this.CompositeStyleForCell(e.start,!0,!1,t);let r=[];for(let i=e.start.row;i<=e.end.row;i++){let s=[];for(let n=e.start.column;n<=e.end.column;n++)s.push(this.CompositeStyleForCell({row:i,column:n},!0,!1,t));r.push(s)}return r}FormattedCellValue(e){let t=this.CellData(e);if(t)return typeof t.formatted=="string"?t.formatted:t.formatted?t.formatted.map(r=>{switch(r.flag){case 1:return" ";case 2:return" ";default:return r.text}}).join(""):t.value}GetFormattedRange(e,t=e){if(e.row===t.row&&e.column===t.column)return this.FormattedCellValue(e);let r=[];for(let i=e.row;i<=t.row;i++){let s=[];for(let n=e.column;n<=t.column;n++)s.push(this.FormattedCellValue({row:i,column:n}));r.push(s)}return r}NumberFormatsAndColors(e,t){let r=i=>{i.number_format&&(t[i.number_format]=1),i.text?.text&&i.text.text!=="none"&&(e[i.text.text]=1),i.fill?.text&&(e[i.fill.text]=1),i.border_top_fill?.text&&(e[i.border_top_fill.text]=1),i.border_left_fill?.text&&(e[i.border_left_fill.text]=1),i.border_right_fill?.text&&(e[i.border_right_fill.text]=1),i.border_bottom_fill?.text&&(e[i.border_bottom_fill.text]=1)};r(this.sheet_style);for(let i in this.row_styles)r(this.row_styles[i]);for(let i in this.column_styles)r(this.column_styles[i]);for(let i of this.row_pattern)r(i);for(let i of this.cell_style)if(i)for(let s of i)s&&r(s)}CompressCellStyles(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i)for(let s=0;s<i.length;s++){let n=i[s];if(n){let a=s+1;for(;a<i.length&&i[a]===n;a++);a>s+1?t.push({row:s,column:r,ref:n,rows:a-s}):t.push({row:s,column:r,ref:n}),s=a-1}}}return t}toJSON(e={}){let t=(w,S)=>{let R={};for(let E=0;E<w.length;E++)typeof w[E]<"u"&&w[E]!==S&&(R[E]=w[E]);if(Object.keys(R).length)return R},r=[{}],i={},s=[],n=JSON.stringify({});for(let w=0;w<this.cell_style.length;w++){let S=this.cell_style[w];if(S){s[w]=[];for(let R=0;R<S.length;R++)if(S[R]){let E=JSON.stringify(S[R]);if(E!==n){let H=i[E];typeof H!="number"&&(i[E]=H=r.length,r.push(S[R])),s[w][R]=H}}}}let a=w=>{let S=JSON.stringify(w);if(S===n)return 0;let R=i[S];return typeof R!="number"&&(i[S]=R=r.length,r.push(w)),R};r=JSON.parse(JSON.stringify(r));let o=JSON.parse(JSON.stringify(this.sheet_style)),l=JSON.parse(JSON.stringify(this.row_pattern)),d={},u={};for(let w of Object.keys(this.column_styles)){let S=Number(w),R=this.column_styles[S];if(R){let E=a(R);E&&(d[S]=E)}}for(let w of Object.keys(this.row_styles)){let S=Number(w),R=this.row_styles[S];if(R){let E=a(R);E&&(u[S]=E)}}let h=(w,S)=>{if(typeof w<"u"&&w!=="none")return w===S?void 0:re.MeasureColorARGB(w)},f=(w={},S={})=>{let R={...S,...w};if(R.text)return R.text=re.MeasureColorARGB(R.text),R;if(typeof R.theme=="number")return R};if(e.export_colors){let w=[];for(let S of[r,[o],l])if(Array.isArray(S))for(let R of S)w.push(R);else for(let R of Object.keys(S))w.push(S[R]);for(let S of w){let R=f(S.border_top_fill,A.DefaultProperties.border_top_fill);R!==void 0&&(S.border_top_fill=R),R=f(S.border_left_fill,A.DefaultProperties.border_left_fill),R!==void 0&&(S.border_left_fill=R),R=f(S.border_right_fill,A.DefaultProperties.border_right_fill),R!==void 0&&(S.border_right_fill=R),R=f(S.border_bottom_fill,A.DefaultProperties.border_bottom_fill),R!==void 0&&(S.border_bottom_fill=R),S.fill?.text&&(S.fill.text=re.MeasureColorARGB(S.fill.text)),S.text&&S.text.text&&S.text.text!=="none"&&(S.text.text=re.MeasureColorARGB(S.text.text))}}let p={calculated_value:!!e.rendered_values,preserve_type:!!e.preserve_type,expand_arrays:!!e.expand_arrays,decorated_cells:!!e.decorated_cells,nested:!0,cell_style_refs:s,tables:!!e.tables},m=this.cells.toJSON(p),_=m.data,{rows:b,columns:g}=m;e.shrink?(b+=2,g+=1):(b=this.rows,g=this.columns);for(let w of this.annotations)w.extent||this.CalculateAnnotationExtent(w),w.extent&&(b=Math.max(b,w.extent.row+1),g=Math.max(g,w.extent.column+1));let x=this.CompressCellStyles(s),v={id:this.id,name:this.name,data:_,sheet_style:o,rows:b,columns:g,cell_styles:x,styles:r,row_style:u,column_style:d,row_pattern:l.length?l:void 0,default_row_height:this.default_row_height,default_column_width:this.default_column_width,row_height:t(this.row_height_,this.default_row_height),column_width:t(this.column_width_,this.default_column_width),selection:JSON.parse(JSON.stringify(this.selection)),annotations:JSON.parse(JSON.stringify(this.annotations))};return this.visible||(v.visible=this.visible),(this.scroll_offset.x||this.scroll_offset.y)&&(v.scroll=this.scroll_offset),this.background_image&&(v.background_image=this.background_image),(this.freeze.rows||this.freeze.columns)&&(v.freeze=this.freeze),v}FlushCellStyles(){this.style_map=[],this.style_json_map=[],this.cells.FlushCellStyles()}ImportData(e){let t=e.styles,r=e.sheet_style;r&&this.UpdateAreaStyle(new y({row:1/0,column:1/0},{row:1/0,column:1/0}),t[r]);let i=e.column_styles;if(i)for(let n=0;n<i.length;n++)i[n]&&this.UpdateAreaStyle(new y({row:1/0,column:n},{row:1/0,column:n}),t[i[n]]);this.cells.FromJSON(e.cells),e.name&&(this.name=e.name||"");let s=this.cell_style;for(let n of e.cells)n.style_ref&&(s[n.column]||(s[n.column]=[]),s[n.column][n.row]=t[n.style_ref]);for(let n=0;n<e.column_widths.length;n++)typeof e.column_widths[n]<"u"&&this.SetColumnWidth(n,e.column_widths[n]);for(let n=0;n<e.row_heights.length;n++)typeof e.row_heights[n]<"u"&&this.SetRowHeight(n,e.row_heights[n]);for(let n of e.annotations||[])this.annotations.push(new Ve(n));e.hidden&&(this.visible=!1)}CalculateAnnotationExtent(e){if(e.layout){e.extent={...e.layout.br.address};return}let t=1e3;e.extent={row:0,column:0};let r=e.rect?.right;if(r&&this.default_column_width){for(let s=0;r>=0&&s<t;s++)if(r-=this.GetColumnWidth(s),r<0){e.extent.column=s;break}}let i=e.rect?.bottom;if(i&&this.default_row_height){for(let s=0;i>=0&&s<t;s++)if(i-=this.GetRowHeight(s),i<0){e.extent.row=s;break}}}UpdateSheetStyle(e,t=!0){this.sheet_style=A.Merge(this.sheet_style,e,t);let r=Object.keys(e);for(let i of this.cell_style)if(i)for(let s of i)s&&r.forEach(n=>delete s[n]);for(let i of Object.keys(this.row_styles))r.forEach(s=>delete this.row_styles[i][s]);for(let i of Object.keys(this.column_styles))r.forEach(s=>delete this.column_styles[i][s]);this.FlushCellStyles()}UpdateRowStyle(e,t,r=!0){this.row_styles[e]=A.Merge(this.row_styles[e]||{},t,r);let i=Object.keys(t);for(let s of this.cell_style)s&&s[e]&&i.forEach(n=>delete s[e][n]);for(let s=0;s<this.cells.columns;s++)if(this.column_styles[s]){let n=this.column_styles[s],a=this.cell_style[s]?this.cell_style[s][e]||{}:{};for(let o of i)typeof n[o]<"u"&&(a[o]=t[o]);Object.keys(a).length&&(this.cell_style[s]||(this.cell_style[s]=[]),this.cell_style[s][e]=JSON.parse(JSON.stringify(a)))}this.cells.Apply(this.RealArea(y.FromRow(e)),s=>s.FlushStyle())}UpdateColumnStyle(e,t,r=!0){this.column_styles[e]=A.Merge(this.column_styles[e]||{},t,r);let i=Object.keys(t);if(this.cell_style[e])for(let s of this.cell_style[e])s&&i.forEach(n=>delete s[n]);this.cells.Apply(this.RealArea(y.FromColumn(e)),s=>s.FlushStyle())}CompositeStyleForCell(e,t=!0,r=!0,i=!0){let{row:s,column:n}=e,a=[];return i&&a.push(this.default_style_properties),a.push(this.sheet_style),r&&this.row_pattern.length&&a.push(this.row_pattern[s%this.row_pattern.length]),this.row_styles[s]&&a.push(this.row_styles[s]),this.column_styles[n]&&a.push(this.column_styles[n]),t&&this.cell_style[n]&&this.cell_style[n][s]&&a.push(this.cell_style[n][s]),A.Composite(a)}GetStyleIndex(e){let t=JSON.stringify(e);for(let i=0;i<this.style_json_map.length;i++)if(t===this.style_json_map[i])return i;let r=this.style_map.length;return this.style_map.push(JSON.parse(t)),this.style_json_map.push(t),r}},j=Fe;k(j,"base_id",100),k(j,"default_sheet_name","Sheet1");var Ri="http://www.w3.org/2000/svg",Ft=class{constructor(e,t){this.model=e;this.view=t;this.mask=I.CreateDiv("treb-mouse-mask"),this.tooltip=I.CreateDiv("treb-tooltip"),this.dropdown_caret=document.createElementNS(Ri,"svg"),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.setAttribute("viewBox","0 0 24 24"),this.dropdown_caret.tabIndex=-1;let r=document.createElementNS(Ri,"path");r.setAttribute("d","M5,7 L12,17 L19,7"),this.dropdown_caret.appendChild(r),this.dropdown_caret.addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),this.grid_cover.classList.remove("nub-select");let s=this.dropdown_caret.getAttribute("class")||"";/active/i.test(s)?this.dropdown_caret.setAttribute("class","treb-dropdown-caret"):(this.dropdown_caret.setAttribute("class","treb-dropdown-caret active"),this.dropdown_list.focus())}),this.dropdown_list=I.CreateDiv("treb-dropdown-list"),this.dropdown_list.setAttribute("tabindex","-1"),this.dropdown_list.addEventListener("keydown",i=>{let s=0;switch(i.key){case"ArrowDown":s=1;break;case"ArrowUp":s=-1;break;case"Escape":break;case"Enter":break;default:console.info(i.key);return}if(i.stopPropagation(),i.preventDefault(),i.key==="Escape"||i.key==="Enter")this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),i.key==="Enter"&&this.dropdown_callback&&this.dropdown_selected&&this.dropdown_callback.call(0,this.dropdown_selected.dropdown_value);else if(s&&this.dropdown_selected)if(s>0&&this.dropdown_selected.nextSibling){this.dropdown_selected.nextSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.nextSibling;let n=this.dropdown_selected.offsetTop+this.dropdown_selected.offsetHeight;n>this.dropdown_list.offsetHeight+this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=n-this.dropdown_list.offsetHeight)}else s<0&&this.dropdown_selected.previousSibling&&(this.dropdown_selected.previousSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.previousSibling,this.dropdown_selected.offsetTop<this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=this.dropdown_selected.offsetTop))}),this.dropdown_list.addEventListener("mousedown",i=>{let s=i.target;i.target!==this.dropdown_list&&(i.stopPropagation(),i.preventDefault(),this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_callback&&this.dropdown_callback.call(0,s.dropdown_value))}),this.dropdown_list.addEventListener("mousemove",i=>{let s=i.target;s!==this.dropdown_selected&&(this.grid_cover.classList.remove("nub-select"),this.dropdown_selected&&this.dropdown_selected.classList.remove("selected"),s.classList.add("selected"),this.dropdown_selected=s)}),this.mock_selection=I.CreateDiv("mock-selection-node"),this.mock_selection.innerHTML=" ",this.note_node=I.CreateDiv("treb-note"),this.title_node=I.CreateDiv("treb-hover-title"),this.sort_button=I.Create("button","treb-sort-button",void 0,void 0,{title:"Sort table"}),this.HideNote()}column_header;row_header;contents;buffer_canvas;corner;corner_canvas;grid_selection;grid_cover;column_header_cover;row_header_cover;annotation_container;mask;mock_selection;container;grid_tiles=[];column_header_tiles=[];row_header_tiles=[];corner_selection;row_header_selection;column_header_selection;corner_annotations;row_header_annotations;column_header_annotations;frozen_row_tiles=[];frozen_column_tiles=[];header_size={width:0,height:0};last_column=0;total_height=0;total_width=0;default_row_height=0;default_column_width=0;header_offset={x:0,y:0};dpr=Math.max(1,self.devicePixelRatio||1);scale=1;scroll_reference_node;get scroll_offset(){return this.scroll_reference_node?{x:this.scroll_reference_node.scrollLeft,y:this.scroll_reference_node.scrollTop}:{x:0,y:0}}set scroll_offset(e){this.scroll_reference_node&&(this.scroll_reference_node.scrollLeft=e.x,this.scroll_reference_node.scrollTop=e.y)}dropdown_caret;trident=typeof navigator<"u"&&navigator.userAgent&&/trident/i.test(navigator.userAgent);default_tile_size={width:1200,height:800};tooltip_state;tooltip;dropdown_list;dropdown_caret_visible=!1;dropdown_callback;dropdown_selected;note_node;sort_button;title_node;row_cache=[];column_cache=[];initialized=!1;UpdateDPR(){let e=Math.max(1,self.devicePixelRatio||1);return e===this.dpr?!1:(this.dpr=e,!0)}ColumnWidth(e){return Math.round(this.view.active_sheet.GetColumnWidth(e)*this.scale)}RowHeight(e){return Math.round(this.view.active_sheet.GetRowHeight(e)*this.scale)}SetRowHeight(e,t){this.view.active_sheet.SetRowHeight(e,Math.round(t/this.scale))}SetColumnWidth(e,t){this.view.active_sheet.SetColumnWidth(e,Math.round(t/this.scale))}ShowSelections(e=!0){this.grid_selection.style.display=e?"block":"none"}HideTitle(){this.title_node.style.opacity="0"}ShowTitle(e,t){if(this.title_node.textContent=e,!this.title_node.parentElement)return;let r=this.title_node.parentElement.getBoundingClientRect(),i=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.title_node.style.left=r.left+i.left-this.scroll_reference_node.scrollLeft+0+"px",this.title_node.style.top=r.top+i.bottom-this.scroll_reference_node.scrollTop+8+"px",this.title_node.style.opacity="1"}HideNote(){this.note_node.style.opacity="0",this.note_node.style.pointerEvents="none"}HideTableSortButton(){this.sort_button.style.opacity="0",this.sort_button.style.pointerEvents="none"}ShowTableSortButton(e,t,r){if(!this.sort_button.parentElement)return;let i=!0,s=!1;e.sort&&e.sort.column===t&&(i=!e.sort.asc,s=!0),this.sort_button.style.opacity="1",this.sort_button.style.pointerEvents="initial",this.sort_button.classList.remove("asc","desc"),s&&this.sort_button.classList.add(i?"asc":"desc"),this.sort_button.dataset.asc=i.toString(),this.sort_button.dataset.table=e.name,this.sort_button.dataset.column=t.toString();let n=this.OffsetCellAddressToRectangle(r).Shift(this.header_size.width,this.header_size.height),a=this.sort_button.getBoundingClientRect();this.sort_button.style.left=n.right-a.width-a.width/2+"px",this.sort_button.style.top=n.top+(n.height-a.height)/2+"px"}ShowNote(e,t,r,i){if(i?this.note_node.innerHTML=i:this.note_node.textContent=e,!this.note_node.parentElement)return;let s=this.note_node.getBoundingClientRect(),n=this.note_node.parentElement.getBoundingClientRect(),a={x:8,y:2},o=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.note_node.style.left=n.left+o.right-this.scroll_reference_node.scrollLeft+a.x+"px",this.note_node.style.top=n.top+o.top-this.scroll_reference_node.scrollTop-s.height/5-a.y+"px",this.note_node.style.opacity="1",this.note_node.style.pointerEvents="auto"}AnnotationLayoutOrder(e,t){let r=-1;for(let s=0;s<this.view.active_sheet.annotations.length;s++)if(this.view.active_sheet.annotations[s]===e){r=s;break}if(r<0)return!1;let i=Math.min(Math.max(0,r+t),this.view.active_sheet.annotations.length-1);if(i===r)return!1;this.view.active_sheet.annotations.splice(r,1),this.view.active_sheet.annotations.splice(i,0,e);for(let s=0;s<this.view.active_sheet.annotations.length;s++){let n=this.view.active_sheet.annotations[s].key,a=this.container?.querySelectorAll(`.annotation[data-key="${n}"]`);if(a)for(let o=0;o<a?.length;o++)a[o].style.zIndex=(s+1).toString()}return!0}PointToAnnotationCorner(e){let t=this.PointToAddress_Grid(e,void 0,!1),r=this.CellAddressToRectangle(t);return{address:t,offset:{x:(e.x-r.left)/r.width,y:(e.y-r.top)/r.height}}}RectToAnnotationLayout(e){return{tl:this.PointToAnnotationCorner({x:(e.left||0)+1,y:(e.top||0)+1}),br:this.PointToAnnotationCorner({x:e.right||e.left||100,y:e.bottom||e.top||100})}}AddressToAnnotationLayout(e,t){let r={tl:this.CellAddressToRectangle(e),br:this.CellAddressToRectangle(t)};return{tl:this.PointToAnnotationCorner({x:r.tl.left||0,y:r.tl.top||0}),br:this.PointToAnnotationCorner({x:r.br.right||r.tl.left||100,y:r.br.bottom||r.tl.left||100})}}AnnotationLayoutToRect(e){let t=this.CellAddressToRectangle(e.tl.address),r=this.CellAddressToRectangle(e.br.address),i=t.left+t.width*e.tl.offset.x-1,s=t.top+t.height*e.tl.offset.y-1;return new F(i,s,r.left+r.width*e.br.offset.x-i,r.top+r.height*e.br.offset.y-s)}UpdateAnnotation(e){Array.isArray(e)||(e=[e]);for(let t of e){let r=t.view[this.view.view_index]||{};if(r.node){if(r.node.dataset.scale=this.scale.toString(),r.node.style.fontSize=`${10*this.scale}pt`,t.rect&&!t.layout&&(t.scaled_rect=t.rect.Scale(this.scale),t.layout=this.RectToAnnotationLayout(t.scaled_rect)),t.layout){let i=this.AnnotationLayoutToRect(t.layout);i.ApplyStyle(r.node),t.scaled_rect=i}r.node.dataset.key=t.key.toString(),(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.CloneFrozenAnnotation(t)}}}GetFrozenAnnotations(e){return[this.row_header_annotations,this.column_header_annotations,this.corner_annotations].map(r=>r.querySelector(`.annotation[data-key="${e.key}"]`)).filter(r=>r!==null)}CloneFrozenAnnotations(){for(let e of this.view.active_sheet.annotations)e.view[this.view.view_index]?.node&&e.key&&this.CloneFrozenAnnotation(e)}ClearFrozenAnnotations(){for(let e of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let t=e.querySelectorAll(".annotation");for(let r=0;r<t.length;r++)t[r].parentElement?.removeChild(t[r])}}RemoveFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r)}}CloneFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r);let i=e.view[this.view.view_index];if(r=i?.node?.cloneNode(!0),r){let s=r.querySelector(".annotation-move-target"),n=r.querySelector(".annotation-resize-target");r.addEventListener("mousedown",a=>{let o=i.node;requestAnimationFrame(()=>{o?.focus()}),this.AnnotationMouseDown(e,i.node,a,s,n)}),t.appendChild(r)}}}RemoveAnnotation(e){let t=e.view[this.view.view_index]||{};t.node&&t.node.parentElement?.removeChild(t.node),this.RemoveFrozenAnnotation(e)}RemoveAnnotationNodes(){let e=Array.prototype.map.call(this.annotation_container.children,t=>t);for(let t of e)this.annotation_container.removeChild(t);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.ClearFrozenAnnotations()}AddAnnotation(e){let t=e.view[this.view.view_index]||{};if(!t.node)throw new Error("annotation view/node missing");this.annotation_container.appendChild(t.node),this.UpdateAnnotation(e)}AnnotationMouseDown(e,t,r,i,s){let n=e.scaled_rect;return n?new Promise(a=>{let o={left:n.left,top:n.top,width:n.width,height:n.height},l=this.scroll_reference_node,d=l.getBoundingClientRect(),u=t.getBoundingClientRect();if(r.target===i||r.target!==s&&r.altKey){r.stopPropagation(),r.preventDefault(),t.focus();let h={x:u.left+r.offsetX-n.left,y:u.top+r.offsetY-n.top},f=[t,...this.GetFrozenAnnotations(e)],p=25,m=this.CellAddressToRectangle({row:0,column:0}).Combine(this.CellAddressToRectangle({row:this.view.active_sheet.rows-1,column:this.view.active_sheet.columns-1})).Expand(-1,-1);be(this.mask,"move",_=>{if(_.offsetY-d.top<this.header_offset.y){let b=Math.min(p,l.scrollTop);l.scrollTop-=b,h.y+=b}else if(_.offsetY-d.top>=d.height&&l.scrollTop+d.height<m.height){let b=p;l.scrollTop+=b,h.y-=b}if(_.offsetX-d.left<this.header_offset.x){let b=Math.min(p,l.scrollLeft);l.scrollLeft-=b,h.x+=b}else if(_.offsetX-d.left>=d.width&&l.scrollLeft+d.width<m.width){let b=p;l.scrollLeft+=b,h.x-=b}if(n.top=_.offsetY-h.y,n.left=_.offsetX-h.x,_.shiftKey){let b=Math.abs(n.left-o.left),g=Math.abs(n.top-o.top);b<=g?n.left=o.left:n.top=o.top}if(_.ctrlKey){let b=this.ClampToGrid({x:n.left,y:n.top});n.left=b.x,n.top=b.y}for(let b of f)b.style.top=n.top+"px",b.style.left=n.left+"px"},()=>{e.extent=void 0,e.layout=this.RectToAnnotationLayout(n),a({type:"annotation",annotation:e,event:"move"})});return}else if(r.target===s){r.stopPropagation(),r.preventDefault(),t.focus();let h=0;e.data?.original_size&&e.data.original_size.width&&e.data.original_size.height&&(h=e.data.original_size.width/e.data.original_size.height);let f=t.getBoundingClientRect(),p={x:f.left+r.offsetX-n.width+s.offsetLeft,y:f.top+r.offsetY-n.height+s.offsetTop};be(this.mask,"nw-resize",m=>{let _=[t,...this.GetFrozenAnnotations(e)];if(n.height=m.offsetY-p.y,n.width=m.offsetX-p.x,m.shiftKey&&m.ctrlKey){if(h){let b=Math.abs(n.width-o.width),g=Math.abs(n.height-o.height);b<g?n.width=h*n.height:n.height=n.width/h}}else if(m.shiftKey){let b=Math.abs(n.height-o.height),g=Math.abs(n.width-o.width);b>g?n.width=o.width:n.height=o.height}else if(m.ctrlKey){let b=this.ClampToGrid({x:n.right,y:n.bottom});n.width=b.x-n.left+1,n.height=b.y-n.top+1}for(let b of _)b.style.height=n.height+"px",b.style.width=n.width+"px"},()=>{e.extent=void 0,e.layout=this.RectToAnnotationLayout(n),a({type:"annotation",annotation:e,event:"resize"})});return}else a()}):(console.info("missing scaled rect!"),Promise.reject())}Initialize(e,t,r=!0){this.mask.parentElement||e.appendChild(this.mask),this.tooltip.parentElement||e.appendChild(this.tooltip),this.dropdown_caret.parentElement||e.appendChild(this.dropdown_caret),this.dropdown_list.parentElement||e.appendChild(this.dropdown_list),this.note_node.parentElement||e.appendChild(this.note_node),this.sort_button.parentElement||(e.appendChild(this.sort_button),this.sort_button.addEventListener("click",()=>{t.sort(this.sort_button.dataset.table||"",Number(this.sort_button.dataset.column||"0")||0,/true/i.test(this.sort_button.dataset.asc||"")),this.sort_button.classList.remove("asc","desc"),this.sort_button.dataset.asc==="true"?(this.sort_button.dataset.asc="false",this.sort_button.classList.add("desc")):(this.sort_button.dataset.asc="true",this.sort_button.classList.add("asc")),t.focus()})),this.title_node.parentElement||e.appendChild(this.title_node),this.InitializeInternal(e,t.scroll),!r&&this.scroll_reference_node&&(this.scroll_reference_node.style.overflow="hidden"),this.dropdown_callback=t.dropdown,this.initialized=!0}MockSelection(){if(!this.container||this.trident)return;let e=window.getSelection();if(e){let t=document.createRange();t.selectNodeContents(this.mock_selection),e.removeAllRanges(),e.addRange(t)}}CreateTile(e,t,r,i,s,n,a,o=!0){let l=document.createElement("canvas");return l.setAttribute("class",e),l.logical_size=t,l.width=t.width*this.dpr,l.height=t.height*this.dpr,l.style.width=`${t.width}px`,l.style.height=`${t.height}px`,l.tile_position=r,l.first_cell=i,this.UpdateTileGridPosition(l),l.last_cell={row:i.row+s.rows-1,column:i.column+s.columns-1},l.pixel_start=n,l.pixel_end={x:n.x+t.width,y:n.y+t.height},l.dirty=!!o,l.needs_full_repaint=!0,a.appendChild(l),l}ApplyTheme(e){this.row_header.style.backgroundColor=this.column_header.style.backgroundColor=this.corner.style.backgroundColor=e.headers?.fill?_e(e,e.headers.fill):"",this.corner.style.borderColor=e.grid_color||"";for(let t of this.grid_tiles)for(let r of t)r.style.backgroundColor=_e(e,e.grid_cell?.fill)||"#fff";this.dropdown_list.style.font=A.Font(e.grid_cell||{})}UpdateTotalSize(){this.total_height=0;let e=this.view.active_sheet.rows;for(let r=0;r<e;r++)this.total_height+=this.RowHeight(r);this.total_width=0;let t=this.view.active_sheet.columns;for(let r=0;r<t;r++)this.total_width+=this.ColumnWidth(r)}UpdateContentsSize(){let e=this.row_header_tiles.reduce((r,i)=>r+i.logical_size.height,0),t=this.column_header_tiles.reduce((r,i)=>r+i.logical_size.width,0);this.column_header.style.width=this.contents.style.width=`${t}px`,this.row_header.style.height=this.contents.style.height=`${e}px`}HideTooltip(){this.tooltip.style.display="none",this.tooltip_state=void 0,this.tooltip.classList.remove("arrow-up"),this.tooltip.classList.remove("arrow-left")}ShowTooltip(e={}){e.up?(this.tooltip.classList.add("arrow-up"),this.tooltip_state="up"):e.left&&(this.tooltip.classList.add("arrow-left"),this.tooltip_state="left"),this.tooltip.style.display="block",this.UpdateTooltip(e)}ShowDropdownCaret(e,t,r){let i=this.OffsetCellAddressToRectangle(e.start);e.count>1&&(i=i.Combine(this.OffsetCellAddressToRectangle(e.end))),i=i.Shift(this.header_size.width,this.header_size.height);let s=Math.round(this.scale*Math.max(8,Math.min(20,i.height)));this.dropdown_caret.style.height=`${s}px`,this.dropdown_caret.style.width=`${s}px`,this.dropdown_caret.style.left=`${i.right+1}px`,this.dropdown_caret.style.top=`${i.bottom-s}px`,this.dropdown_list.style.top=`${i.bottom+2}px`,this.dropdown_list.style.left=`${i.left+2}px`,this.dropdown_list.style.minWidth=`${i.width}px`,this.dropdown_list.textContent="";for(let n of t){let a=I.CreateDiv(void 0,this.dropdown_list);r===n&&(this.dropdown_selected=a,a.classList.add("selected")),a.dropdown_value=n,a.textContent=n?.toString()||""}this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.style.display="block",this.dropdown_caret_visible=!0}HideDropdownCaret(){this.dropdown_caret_visible&&(this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret_visible=!1,this.dropdown_caret.style.display="none")}GetScrollOffset(){return{x:this.scroll_reference_node.scrollLeft+this.header_offset.x,y:this.scroll_reference_node.scrollTop+this.header_offset.y}}ScrollTo(e,t=!0,r=!0,i=!1){let s=this.CellAddressToRectangle(e);if(i&&this.scroll_reference_node.scrollTo){let n={left:this.scroll_reference_node.scrollLeft,top:this.scroll_reference_node.scrollTop},a={left:t?s.left:n.left,top:r?s.top:n.top,behavior:"smooth"};this.scroll_reference_node.scrollTo(a)}else r&&(this.scroll_reference_node.scrollTop=s.top),t&&(this.scroll_reference_node.scrollLeft=s.left)}ScrollIntoView(e){let t=this.CellAddressToRectangle(e),r=this.scroll_reference_node.clientWidth-this.row_header.offsetWidth,i=this.scroll_reference_node.clientHeight-this.column_header.offsetHeight,s={x:0,y:0},n={x:!1,y:!1},a=new F(this.scroll_reference_node.scrollLeft,this.scroll_reference_node.scrollTop,r,i);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&(this.view.active_sheet.freeze.rows&&e.row>=this.view.active_sheet.freeze.rows?s.y=this.frozen_row_tiles[0].logical_size.height:this.view.active_sheet.freeze.rows&&(n.y=!0),this.view.active_sheet.freeze.columns&&e.column>=this.view.active_sheet.freeze.columns?s.x=this.frozen_column_tiles[0].logical_size.width:this.view.active_sheet.freeze.columns&&(n.x=!0)),e.row!==1/0&&(t.top<a.top+s.y&&!n.y?this.scroll_reference_node.scrollTop=t.top-s.y:t.bottom>a.bottom&&(this.scroll_reference_node.scrollTop=t.bottom-i)),e.column!==1/0&&(t.left<a.left+s.x&&!n.x?this.scroll_reference_node.scrollLeft=t.left-s.x:t.right>a.right&&(this.scroll_reference_node.scrollLeft=t.right-r))}UpdateTooltip(e={}){if(typeof e.text<"u"&&(this.tooltip.textContent=e.text),typeof e.x<"u"){let t=e.x||0;this.tooltip_state==="up"&&(t-=this.tooltip.offsetWidth/2),this.tooltip.style.left=Math.round(t)+"px"}if(typeof e.y<"u"){let t=e.y||0;this.tooltip_state==="left"&&(t-=this.tooltip.offsetHeight/2),this.tooltip.style.top=Math.round(t)+"px"}}CoordinateToRowHeader(e){let t={column:1/0,row:0};if(this.view.active_sheet.freeze.rows&&this.frozen_row_tiles[0].pixel_end.y>=e-this.scroll_reference_node.scrollTop){let r=0;e-=this.scroll_reference_node.scrollTop;for(let i=0;i<this.view.active_sheet.freeze.rows;i++)if(r+=this.RowHeight(i),r>=e)return t.row=i,t}for(let r of this.row_header_tiles)if(r.pixel_end.y>=e){let i=e-r.pixel_start.y,s=0;for(t.row=r.first_cell.row;t.row<=r.last_cell.row;t.row++,i-=s)if(s=this.RowHeight(t.row),s>i)return t;return t}return t}CoordinateToColumnHeader(e){let t={row:1/0,column:0};if(this.view.active_sheet.freeze.columns&&this.frozen_column_tiles[0].pixel_end.x>=e-this.scroll_reference_node.scrollLeft){let r=0;e-=this.scroll_reference_node.scrollLeft;for(let i=0;i<this.view.active_sheet.freeze.columns;i++)if(r+=this.ColumnWidth(i),r>=e)return t.column=i,t}for(let r of this.column_header_tiles)if(r.pixel_end.x>=e){let i=e-r.pixel_start.x,s=0;for(t.column=r.first_cell.column;t.column<=r.last_cell.column;t.column++,i-=s)if(s=this.ColumnWidth(t.column),s>i)return t;return t}return t}PointToAddress_Grid(e,t=!1,r=!0){if(r){if(this.view.active_sheet.freeze.rows){let a=this.frozen_row_tiles[0].logical_size.height;e.y-this.scroll_reference_node.scrollTop<a&&(e.y-=this.scroll_reference_node.scrollTop)}if(this.view.active_sheet.freeze.columns){let a=this.frozen_column_tiles[0].logical_size.width;e.x-this.scroll_reference_node.scrollLeft<a&&(e.x-=this.scroll_reference_node.scrollLeft)}}let i={row:0,column:0},s=this.grid_tiles[this.grid_tiles.length-1],n=s[s.length-1];if(e.y>n.pixel_end.y){let a=e.y-n.pixel_end.y;for(i.row=n.last_cell.row;a>0;)i.row++,a-=this.default_row_height}else for(let a of s)if(a.pixel_start.y<=e.y&&a.pixel_end.y>=e.y){let o=e.y-a.pixel_start.y,l=0;for(i.row=a.first_cell.row;i.row<=a.last_cell.row&&(l=this.RowHeight(i.row),!(l>o));i.row++,o-=l);break}if(e.x>n.pixel_end.x){let a=e.x-n.pixel_end.x;for(i.column=n.last_cell.column;a>0;)i.column++,a-=this.default_column_width}else for(let a of this.grid_tiles)if(a[0].pixel_start.x<=e.x&&a[0].pixel_end.x>=e.x){let o=a[0],l=e.x-o.pixel_start.x,d=0;for(i.column=o.first_cell.column;i.column<=o.last_cell.column&&(d=this.ColumnWidth(i.column),!(d>l));i.column++,l-=d);break}return i}AdjacentTile(e,t=0,r=0){if(!t&&!r)return e;let i=e.tile_position,s=e.tile_position.row+t,n=e.tile_position.column+r;if(!(s<0||n<0)){if(this.grid_tiles[i.column]&&this.grid_tiles[i.column][i.row]===e&&this.grid_tiles[n])return this.grid_tiles[n][s];if(!i.column&&this.frozen_column_tiles[i.row]===e)return this.frozen_column_tiles[s];if(!i.row&&this.frozen_row_tiles[i.column]===e)return this.frozen_row_tiles[n]}}UpdateTiles(){if(!this.container)throw new Error("invalid container");this.grid_tiles.forEach(v=>{v.forEach(w=>{w.parentElement&&w.parentElement.removeChild(w)})});for(let v of[this.column_header_tiles,this.row_header_tiles,this.frozen_row_tiles,this.frozen_column_tiles])for(let w of v)w.parentElement&&w.parentElement.removeChild(w);this.frozen_row_tiles=[],this.frozen_column_tiles=[],this.row_header_tiles=[],this.column_header_tiles=[],this.grid_tiles=[];let e=this.view.active_sheet;this.default_row_height=Math.round(e.default_row_height*this.scale),this.default_column_width=Math.round(e.default_column_width*this.scale),this.header_offset={x:Math.round(e.header_offset.x*this.scale),y:Math.round(e.header_offset.y*this.scale)},this.UpdateContainingGrid();let t=this.view.active_sheet.rows,r=this.view.active_sheet.columns;t||(t=100),r||(r=40);let i=0,s=0;for(let v=0;v<t;v++)i+=this.RowHeight(v);for(let v=0;v<r;v++)s+=this.ColumnWidth(v);if(!s||!i)throw"unexpected missing total size";if(i||(i=this.default_row_height*t),s||(s=this.default_column_width*r),this.container.offsetWidth>s){let v=Math.ceil((this.container.offsetWidth-s)/this.default_column_width);s+=v*this.default_column_width,r+=v}if(this.last_column=r,this.container.offsetHeight>i){let v=Math.ceil((this.container.offsetHeight-i)/this.default_row_height);i+=v*this.default_row_height,t+=v}this.column_header.style.width=this.contents.style.width=`${s}px`,this.row_header.style.height=this.contents.style.height=`${i}px`;let n=[],a=[],o=0,l=0;for(let v=0;v<r;v++){let w=this.ColumnWidth(v);o&&o+w>this.default_tile_size.width&&(n.push(o),a.push(l),l=v,o=0),o+=w}n.push(o),a.push(l);let d=[],u=[],h=0,f=0;for(let v=0;v<t;v++){let w=this.RowHeight(v);h&&h+w>this.default_tile_size.height&&(d.push(h),u.push(f),h=0,f=v),h+=w}d.push(h),u.push(f);let p=n.length,m=d.length,_=0,b=0,g=0,x=0;for(let v=0;v<this.view.active_sheet.freeze.rows;v++)g+=this.RowHeight(v);for(let v=0;v<this.view.active_sheet.freeze.columns;v++)x+=this.ColumnWidth(v);for(let v=0;v<p;v++){let w=[];_=0;let S=v===p-1?r-a[v]:a[v+1]-a[v];this.column_header_tiles.push(this.CreateTile("column-header-tile",{height:this.header_offset.y,width:n[v]},{row:0,column:v},{row:0,column:a[v]},{rows:0,columns:S},{x:b,y:0},this.column_header)),this.view.active_sheet.freeze.rows&&this.frozen_row_tiles.push(this.CreateTile("frozen-row-tile",{height:g,width:n[v]},{row:1,column:v},{row:0,column:a[v]},{rows:0,columns:S},{x:b,y:0},this.column_header));for(let R=0;R<m;R++){let E=R===m-1?t-u[R]:u[R+1]-u[R];v||(this.row_header_tiles.push(this.CreateTile("row-header-tile",{height:d[R],width:this.header_offset.x},{row:R,column:0},{row:u[R],column:0},{rows:E,columns:1},{x:0,y:_},this.row_header)),this.view.active_sheet.freeze.columns&&this.frozen_column_tiles.push(this.CreateTile("frozen-column-tile",{height:d[R],width:x},{row:R,column:1},{row:u[R],column:0},{rows:E,columns:1},{x:0,y:_},this.row_header))),w.push(this.CreateTile("grid-tile",{height:d[R],width:n[v]},{row:R,column:v},{row:u[R],column:a[v]},{rows:E,columns:S},{x:b,y:_},this.contents)),_+=d[R]}this.grid_tiles.push(w),b+=n[v]}this.total_height=i,this.total_width=s,this.ClearLayoutCaches(),this.UpdateGridTemplates(!0,!0)}ClearLayoutCaches(){this.row_cache=[],this.column_cache=[]}TileIndexForColumn(e){for(let t of this.column_header_tiles)if(t.first_cell.column<=e&&t.last_cell.column>=e)return t.tile_position.column;return-1}TileIndexForRow(e){for(let t of this.row_header_tiles)if(t.first_cell.row<=e&&t.last_cell.row>=e)return t.tile_position.row;return-1}DirtyHeaders(e){if(e){for(let t of this.column_header_tiles){if(t.dirty)continue;let r=new y({row:e.start.row,column:t.first_cell.column},{row:e.start.row,column:t.last_cell.column});(e.entire_row||r.Intersects(e))&&(t.dirty=!0)}for(let t of this.row_header_tiles){if(t.dirty)continue;let r=new y({column:e.start.column,row:t.first_cell.row},{column:e.start.column,row:t.last_cell.row});(e.entire_column||r.Intersects(e))&&(t.dirty=!0)}}}DirtyAll(){for(let e of this.grid_tiles)for(let t of e)t.dirty=!0}DirtyArea(e){if(!this.initialized)return;let t={row:0,column:0},r={row:this.grid_tiles[0].length-1,column:this.grid_tiles.length-1};e.start.column!==1/0&&(t.column=r.column=this.TileIndexForColumn(e.start.column),e.end.column!==e.start.column&&(r.column=this.TileIndexForColumn(e.end.column))),e.start.row!==1/0&&(t.row=r.row=this.TileIndexForRow(e.start.row),e.end.row!==e.start.row&&(r.row=this.TileIndexForRow(e.end.row)));for(let i=t.column;i<=r.column;i++)for(let s=t.row;s<=r.row;s++)this.grid_tiles[i][s].dirty=!0}VisibleTiles(){let e=[{row:0,column:0},{row:0,column:0}];if(!this.container||!this.grid_tiles.length||!this.grid_tiles[0].length)return new y(e[0],e[1]);let t=this.scroll_reference_node.scrollLeft,r=t+this.scroll_reference_node.offsetWidth,i=this.scroll_reference_node.scrollTop,s=i+this.scroll_reference_node.offsetHeight;for(let n of this.grid_tiles){let a=n[0];if(a.pixel_start.x<=t&&a.pixel_end.x>=t){for(a of n)if(a.pixel_start.y<=i&&a.pixel_end.y>=i){e[0]=a.tile_position;break}}if(n===this.grid_tiles[this.grid_tiles.length-1]||a.pixel_start.x<=r&&a.pixel_end.x>=r){for(a of n)if(a===n[n.length-1]||a.pixel_start.y<=s&&a.pixel_end.y>=s)return e[1]=a.tile_position,new y(e[0],e[1])}}return new y(e[0],e[1])}UpdateTileHeights(e=!0,t=-1){let r=0;for(let i=0;i<this.row_header_tiles.length;i++){let s=this.row_header_tiles[i];if(t>s.last_cell.row){r+=s.logical_size.height;continue}let n=0;for(let o=s.first_cell.row;o<=s.last_cell.row;o++)n+=this.RowHeight(o);let a=s.logical_size.height===n;if(s.pixel_start.y=r,r+=n,s.pixel_end.y=r,!a){if(s.logical_size.height=n,s.style.height=`${n}px`,s.height=this.dpr*n,this.view.active_sheet.freeze.columns){let o=this.frozen_column_tiles[i];o.logical_size.height=n,o.style.height=`${n}px`,o.height=this.dpr*n}e&&(s.dirty=!0,s.needs_full_repaint=!0)}for(let o of this.grid_tiles){let l=o[i];l.pixel_start.y=s.pixel_start.y,l.pixel_end.y=s.pixel_end.y,a||(l.logical_size.height=n,l.style.height=`${n}px`,l.height=this.dpr*n,e&&(l.dirty=!0,l.needs_full_repaint=!0))}}if(this.view.active_sheet.freeze.rows){let i=0;for(let s=0;s<this.view.active_sheet.freeze.rows;s++)i+=this.RowHeight(s);for(let s of this.frozen_row_tiles)s.style.height=`${i}px`,s.height=i*this.dpr;i+=this.header_offset.y,this.corner_canvas.style.height=`${i}px`,this.corner_canvas.height=i*this.dpr;for(let s of this.grid_tiles)s[0].dirty=!0}this.UpdateGridTemplates(!1,!0),this.row_header.style.height=this.contents.style.height=`${r}px`,this.ClearLayoutCaches()}UpdateTileWidths(e=!0,t=-1){let r=0;for(let i=0;i<this.column_header_tiles.length;i++){let s=this.column_header_tiles[i],n=this.grid_tiles[i];if(t>s.last_cell.column){r+=s.logical_size.width;continue}let a=0;for(let l=s.first_cell.column;l<=s.last_cell.column;l++)a+=this.ColumnWidth(l);let o=s.logical_size.width===a;if(s.pixel_start.x=r,r+=a,s.pixel_end.x=r,!o){if(s.logical_size.width=a,s.style.width=`${a}px`,s.width=this.dpr*a,this.view.active_sheet.freeze.rows){let l=this.frozen_row_tiles[i];l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a}e&&(s.dirty=!0,s.needs_full_repaint=!0)}for(let l of n)l.pixel_start.x=s.pixel_start.x,l.pixel_end.x=s.pixel_end.x,o||(l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a,e&&(l.dirty=!0,l.needs_full_repaint=!0))}if(this.view.active_sheet.freeze.columns){let i=0;for(let s=0;s<this.view.active_sheet.freeze.columns;s++)i+=this.ColumnWidth(s);for(let s of this.frozen_column_tiles)s.style.width=`${i}px`,s.width=i*this.dpr;i+=this.header_offset.x,this.corner_canvas.style.width=`${i}px`,this.corner_canvas.width=i*this.dpr;for(let s of this.grid_tiles[0])s.dirty=!0}this.UpdateGridTemplates(!0,!1),this.column_header.style.width=this.contents.style.width=`${r}px`,this.ClearLayoutCaches()}ClampToGrid(e){let t=this.PointToAddress_Grid(e),r=this.OffsetCellAddressToRectangle(t);return e.x>r.left+r.width/2?e.x=r.left+r.width-1:e.x=r.left-1,e.y>r.top+r.height/2?e.y=r.top+r.height-1:e.y=r.top-1,e}OffsetCellAddressToRectangle(e){let t=this.CellAddressToRectangle(e);return e.column>=0&&e.column<this.view.active_sheet.freeze.columns&&(t=t.Shift(this.scroll_reference_node.scrollLeft,0)),e.row>=0&&e.row<this.view.active_sheet.freeze.rows&&(t=t.Shift(0,this.scroll_reference_node.scrollTop)),t}CellAddressToRectangle(e){let t=e.row===1/0||e.row<0?0:e.row,r=e.column===1/0||e.column<0?0:e.column;if(this.column_cache.length<=r+1){this.column_cache.length||(this.column_cache[0]=0);for(let n=this.column_cache.length-1;n<=r;n++)this.column_cache[n+1]=this.column_cache[n]+this.ColumnWidth(n)}if(this.row_cache.length<=t+1){this.row_cache.length||(this.row_cache[0]=0);for(let n=this.row_cache.length-1;n<=t;n++)this.row_cache[n+1]=this.row_cache[n]+this.RowHeight(n)}let i=this.column_cache[r],s=this.row_cache[t];return new F(i,s,this.column_cache[r+1]-i,this.row_cache[t+1]-s)}ResizeTileWidth(e,t,r=!0){let i=this.column_header_tiles[e],s=t-i.logical_size.width;i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<this.column_header_tiles.length;a++){this.column_header_tiles[a].pixel_start.x+=s,this.column_header_tiles[a].pixel_end.x+=s;for(let o of this.grid_tiles[a])o.pixel_start.x+=s,o.pixel_end.x+=s}let n=this.grid_tiles[e];for(i of n)i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);this.UpdateTotalSize(),this.UpdateGridTemplates(!0,!1),this.UpdateContentsSize()}ResizeTileHeight(e,t,r=!0){let i=this.row_header_tiles[e],s=t-i.logical_size.height;i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let n=e+1;n<this.row_header_tiles.length;n++)i=this.row_header_tiles[n],i.pixel_start.y+=s,i.pixel_end.y+=s;for(let n of this.grid_tiles){i=n[e],i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<n.length;a++)n[a].pixel_start.y+=s,n[a].pixel_end.y+=s}this.UpdateTotalSize(),this.UpdateGridTemplates(!1,!0),this.UpdateContentsSize()}};var zt="http://www.w3.org/2000/svg",Pt=class extends Ft{constructor(e,t){super(e,t),this.column_header=I.CreateDiv("top-header"),this.row_header=I.CreateDiv("left-header"),this.corner=I.CreateDiv("corner"),this.corner_canvas=document.createElement("canvas"),this.corner.appendChild(this.corner_canvas),this.contents=I.CreateDiv("contents"),this.buffer_canvas=I.Create("canvas","treb-buffer-canvas",this.contents),this.grid_selection=document.createElementNS(zt,"svg"),this.grid_selection.classList.add("grid-selection"),this.contents.appendChild(this.grid_selection),this.row_header_selection=document.createElementNS(zt,"svg"),this.row_header_selection.classList.add("frozen-selection"),this.row_header_selection.classList.add("frozen-selection-rows"),this.column_header.appendChild(this.row_header_selection),this.row_header_annotations=I.CreateDiv("frozen-annotation-container frozen-annotation-container-rows",this.column_header),this.column_header_selection=document.createElementNS(zt,"svg"),this.column_header_selection.classList.add("frozen-selection"),this.column_header_selection.classList.add("frozen-selection-columns"),this.row_header.appendChild(this.column_header_selection),this.column_header_annotations=I.CreateDiv("frozen-annotation-container frozen-annotation-container-columns",this.row_header),this.corner_selection=document.createElementNS(zt,"svg"),this.corner_selection.classList.add("frozen-selection"),this.corner.appendChild(this.corner_selection),this.corner_annotations=I.CreateDiv("frozen-annotation-container frozen-annotation-container-corner",this.corner),this.annotation_container=I.CreateDiv("annotation-container"),this.grid_cover=I.CreateDiv("tile-cover grid-cover"),this.column_header_cover=I.CreateDiv("tile-cover column-header-cover"),this.row_header_cover=I.CreateDiv("tile-cover row-header-cover")}InitializeInternal(e,t){this.container=e,this.container.classList.add("grid-layout"),this.scroll_reference_node=this.container,e.appendChild(this.column_header),e.appendChild(this.row_header),e.appendChild(this.corner),e.appendChild(this.contents),e.appendChild(this.annotation_container),e.appendChild(this.grid_cover),e.appendChild(this.column_header_cover),e.appendChild(this.row_header_cover),e.appendChild(this.mock_selection),this.container.addEventListener("scroll",()=>t())}ResizeCursor(e){switch(e){case"row":this.row_header_cover.classList.add("resize");break;case"column":this.column_header_cover.classList.add("resize");break;default:this.row_header_cover.classList.remove("resize"),this.column_header_cover.classList.remove("resize");break}}UpdateTileGridPosition(e){e.style.gridColumn=`${e.tile_position.column+1} / ${e.tile_position.column+2}`,e.style.gridRow=`${e.tile_position.row+1} / ${e.tile_position.row+2}`}UpdateContainingGrid(){if(!this.container)throw new Error("missing container");this.header_size.width=this.header_offset.x,this.header_size.height=this.header_offset.y;let e=this.header_offset.x,t=this.header_offset.y;if(this.view.active_sheet.freeze.columns)for(let r=0;r<this.view.active_sheet.freeze.columns;r++)e+=this.ColumnWidth(r);if(this.view.active_sheet.freeze.rows)for(let r=0;r<this.view.active_sheet.freeze.rows;r++)t+=this.RowHeight(r);this.container.style.gridTemplateColumns=`${this.header_offset.x}px auto`,this.container.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.corner_canvas.setAttribute("width",`${this.dpr*e}`),this.corner_canvas.setAttribute("height",`${this.dpr*t}`),this.column_header.style.height=`${t}px`,this.corner_canvas.style.width=`${e}px`,this.corner_canvas.style.height=`${t}px`}UpdateGridTemplates(e=!0,t=!0){let r=0,i=0;this.column_header.style.gridTemplateColumns=this.contents.style.gridTemplateColumns=this.column_header_tiles.map(l=>(r+=l.logical_size.width,`${l.logical_size.width}px`)).join(" "),this.column_header.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.row_header.style.gridTemplateRows=this.contents.style.gridTemplateRows=this.row_header_tiles.map(l=>(i+=l.logical_size.height,`${l.logical_size.height}px`)).join(" ");let s=this.header_offset.y;if(this.view.active_sheet.freeze.rows)for(let l=0;l<this.view.active_sheet.freeze.rows;l++)s+=this.RowHeight(l);this.column_header.style.height=`${s}px`,this.row_header_selection.style.display="block",this.row_header_selection.style.width=`${r}px`,this.corner_selection.style.height=this.row_header_selection.style.height=`${s}px`,this.corner_selection.style.top=this.row_header_selection.style.top="0px",this.row_header_selection.style.left="0px";let n=this.header_offset.x;if(this.view.active_sheet.freeze.columns)for(let l=0;l<this.view.active_sheet.freeze.columns;l++)n+=this.ColumnWidth(l);this.column_header_selection.style.display="block",this.corner_selection.style.width=this.column_header_selection.style.width=`${n}px`,this.column_header_selection.style.height=`${i}px`,this.column_header_selection.style.top="0px",this.corner_selection.style.left=this.column_header_selection.style.left="0px";let a={x:this.view.active_sheet.header_offset.x*this.scale,y:this.view.active_sheet.header_offset.y*this.scale},o=this.view.active_sheet.freeze;o.rows&&o.columns?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="block"):o.rows?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"):o.columns?(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="none"):(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"),this.row_header_annotations.style.width=`${r}px`,this.corner_annotations.style.height=this.row_header_annotations.style.height=`${s-a.y}px`,this.corner_annotations.style.top=this.row_header_annotations.style.top=`${a.y}px`,this.column_header_annotations.style.width=this.corner_annotations.style.width=`${n-a.x}px`,this.column_header_annotations.style.height=`${i}px`,this.corner_annotations.style.left=this.column_header_annotations.style.left=`${a.x}px`,this.corner_selection.style.display="block",this.grid_selection.style.width=`${r}px`,this.grid_selection.style.height=`${i}px`,this.grid_selection.style.top=`${this.header_offset.y}px`,this.grid_selection.style.left=`${this.header_offset.x}px`,this.annotation_container.style.width=`${r}px`,this.annotation_container.style.height=`${i}px`,this.annotation_container.style.top=`${this.header_offset.y}px`,this.annotation_container.style.left=`${this.header_offset.x}px`}};var Nt=class{function_names=[];argument_separator=T.argument_separator.charCodeAt(0);function_map={};RemoveFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]);for(let r of e)t=t.filter(i=>i.name!==r.name);this.SetFunctions(t)}AddFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]).concat(...e);this.SetFunctions(t)}SetFunctions(e){this.function_map={},this.function_names=e.map(t=>(this.function_map[t.name.toLowerCase()]=t,t.name)).sort((t,r)=>t.toLowerCase().localeCompare(r.toLowerCase()))}NormalizeIdentifier(e){let t=this.function_map[e.toLowerCase()];return t?t.name:void 0}Exec(e){if(e.text[0]!=="=")return{};let t,r={};if(e.cursor===e.text.length&&(t=e.text.match(/(?:^|[^A-Za-z_\d])([A-Za-z_][\w\d_.]*)\s*$/),t)){let s=t[1],n=new RegExp("^"+s.replace(".","\\."),"i");r={completions:this.function_names.filter(o=>n.test(o)).map(o=>this.function_map[o.toLowerCase()]),token:s,position:e.cursor-s.length}}let i=this.ParseTooltip(e.text.substr(0,e.cursor));if(i.function){let s=this.function_map[i.function.toLowerCase()];s&&(r.tooltip='<span class="notranslate">'+s.name+"</span>",r.arguments="("+(s.arguments||[]).map((n,a)=>{let o=n.name||"argument";return a===i.argument?`<span class="active-argument">${o}</span>`:o}).join(T.argument_separator+" ")+")",r.description=s.description?`<span class="function-description">${s.description}</span>`:"",r.function_position=i.position||0)}return r}ParseTooltip(e){let t=[],r=0,i="",s=!1,n=0;for(let o of e){let l=o.charCodeAt(0);if(s)l===34&&(s=!1);else switch(l){case 40:t.push({buffer:i.trim(),argument:r,position:n-i.length}),i="",r=0;break;case this.argument_separator:r++;break;case 41:r=t.pop()?.argument||0;break;case 34:i="",s=!0;break;default:l>=97&&l<=122||l>=65&&l<=90||l>=48&&l<=57||l===95||l===46?i+=o:i=""}n++}let a=t.pop();return{function:a?.buffer||void 0,position:a?.position||0,argument:r}}};var Js=typeof navigator>"u"?"":navigator.appVersion,Ae=typeof navigator>"u"?"":navigator.userAgent,Mr=class{is_edge=/Edge/.test(Js);is_ipad=/iPad|iPhone/.test(Ae);is_android=/android|samsung/i.test(Ae);is_mobile=this.is_ipad||this.is_android;is_firefox=/firefox/i.test(Ae);is_safari=/safari/i.test(Ae)&&!/edg/i.test(Ae);is_mac=/macintosh/i.test(Ae);is_chrome=/Chrome/i.test(Ae);is_windows=/win64|win32|windows\s+nt/i.test(Ae);is_modern=!this.is_edge&&!(this.is_firefox&&this.is_android)&&/webkit|firefox/i.test(Ae)},Ws={is_edge:!1,is_ipad:!1,is_android:!1,is_firefox:!1,is_safari:!1,is_mac:!1,is_chrome:!1,trident:!1,is_windows:!1,is_modern:!0,is_node:!0,is_mobile:!1},ie=typeof navigator>"u"?Ws:new Mr;var Lr=class extends te{constructor(t,r,i,s,n){super();this.parser=t;this.theme=r;this.model=i;this.view=s;this.autocomplete=n;this.measurement_node=document.createElement("div")}active_cell;target_address;autocomplete_matcher;measurement_node;selecting_=!1;editor_insert_node;editor_node;container_node;last_parse_string="";last_parse_result;reference_list;dependency_list=[];reference_index_map=[];last_reconstructed_text="";enable_reconstruct=!0;get selecting(){return this.selecting_}selection_={target:{row:0,column:0},area:new y({row:0,column:0})};get selection(){return this.selection_}set selection(t){if(t){let r=t.target||t.area.start;this.selection_={target:{row:r.row,column:r.column},area:new y(t.area.start,t.area.end)}}else{let r={row:0,column:0};this.selection_={target:r,area:new y(r)}}}UpdateTheme(t){}InsertReference(t,r){if(!this.editor_node)return;if(!this.editor_insert_node){let s=window.getSelection();if(s){let n=s.getRangeAt(0);this.editor_insert_node=document.createElement("span"),n.insertNode(this.editor_insert_node),s.collapseToEnd()}}if(this.editor_insert_node&&(this.editor_insert_node.innerText=t,t.length)){let s=window.getSelection();if(s){let n=document.createRange();n.selectNodeContents(this.editor_insert_node),s.removeAllRanges(),s.addRange(n),s.collapseToEnd()}}let i=this.ListDependencies();this.Publish({type:"update",text:this.editor_node.textContent||void 0,dependencies:i})}Autocomplete(t,r){if(!this.container_node)return;let i;r?.nodeType===Node.ELEMENT_NODE?i=r.getBoundingClientRect():i=this.container_node.getBoundingClientRect();let s=new F(Math.round(i.left),Math.round(i.top),i.width,i.height);this.autocomplete.Show(this.AcceptAutocomplete.bind(this),t,s)}FlushReference(){this.editor_insert_node=void 0}SubstringToCaret(t){let r=window.getSelection();if(!r)throw new Error("error getting selection");if(r.rangeCount===0)return console.warn("range count is 0"),"";let i=r.getRangeAt(0),s=i.cloneRange();return s.selectNodeContents(t),s.setEnd(i.endContainer,i.endOffset),this.measurement_node.textContent="",this.measurement_node.appendChild(s.cloneContents()),this.measurement_node.textContent}UpdateSelectState(t=!1){let r=!1,i=!1;if(!this.editor_node)return;let s=this.editor_node.textContent||"";if(s.trim()[0]==="="){i=!0;let a=this.SubstringToCaret(this.editor_node).trim();if(a.length){let o=a[a.length-1];Lr.FormulaChars.some(d=>o===d)&&(r=!0);let l=this.autocomplete_matcher;l&&ne().then(()=>{let d=l.Exec({text:s,cursor:a.length}),u=this.NodeAtIndex(d.completions?d.position||0:d.function_position||0);this.Autocomplete(d,u)})}}r!==this.selecting_?(this.selecting_=r,r||this.Reconstruct(),(t||!r)&&this.Publish({type:"end-selection"})):r&&t&&this.Publish({type:"end-selection"});let n=i?this.ListDependencies():void 0;this.Publish({type:"update",text:s,dependencies:n})}NodeAtIndex(t){let r=this.editor_node?.childNodes||[];for(let i=0;i<r.length;i++){let s=r[i].textContent?.length||0;if(s>t)return r[i];t-=s}}Reconstruct(){if(!this.enable_reconstruct||!this.editor_node||(this.ParseDependencies(),!this.reference_list))return;let t=this.editor_node.textContent||"";if(t.trim()[0]!=="="||(this.editor_node.spellcheck=!1,this.selecting)||t.trim()===this.last_reconstructed_text.trim())return;this.last_reconstructed_text=t;let i=this.SubstringToCaret(this.editor_node).length,s=document.createDocumentFragment(),n,a=0,o,l="";if(this.last_parse_result){let d=0,u="",h=0,f=(p,m,_,b)=>{let g=document.createTextNode(m);if(_==="text")s.appendChild(g);else{let x=document.createElement("span");x.appendChild(g),x.dataset.position=p.toString(),x.dataset.type=_,_==="address"||_==="range"?x.classList.add(`highlight-${this.reference_index_map[h++]%5+1}`):_==="structured-reference"?this.target_address&&b?.type==="structured-reference"&&this.model.ResolveStructuredReference(b,this.target_address)&&x.classList.add(`highlight-${this.reference_index_map[h++]%5+1}`):_==="identifier"&&this.model.named_ranges.Get(m)&&x.classList.add(`highlight-${this.reference_index_map[h++]%5+1}`),s.appendChild(x)}return i>=p&&i<p+m.length&&(n=g,a=i-p),g};this.last_parse_result.expression&&this.parser.Walk(this.last_parse_result.expression,p=>{switch(p.type){case"address":case"range":case"call":case"identifier":case"structured-reference":p.position!==d-1&&f(d,t.substring(d,p.position+1),"text"),p.type==="call"||p.type==="identifier"?u=p.name:u=this.last_parse_string.substring(p.position+1,p.position+p.label.length+1),f(p.position+1,u,p.type,p),d=p.position+u.length+1;break}return p.type!=="range"}),l=t.substring(d)||"",o=f(d,l,"text")}if(!n)if(t.length===i){let d=document.createElement("span");s.appendChild(d),n=d,a=0}else n=o,a=Math.max(0,l.length-(t.length-i));if(this.editor_node.textContent="",this.editor_node.appendChild(s),n){let d=document.createRange(),u=window.getSelection();u&&(d.setStart(n,a),d.setEnd(n,a),d.collapse(!0),u.removeAllRanges(),u.addRange(d))}}ParseDependencies(){if(!this.editor_node)return;let t=this.editor_node.textContent||"";if(t!==this.last_parse_string||!this.reference_list){let r={};for(let i of this.model.sheets.list)r[i.name.toLowerCase()]=i.id;if(this.dependency_list=[],this.reference_index_map=[],t){let i=this.parser.Parse(t);if(this.last_parse_string=t,this.last_parse_result=i,this.reference_list=[],i.full_reference_list)for(let s of i.full_reference_list)if(s.type==="address"||s.type==="range"){let n=s.type==="address"?s:s.start;n.sheet_id||(n.sheet?n.sheet_id=r[n.sheet.toLowerCase()]||0:n.sheet_id=this.view.active_sheet.id),this.reference_list.push(s)}else if(s.type==="structured-reference")if(this.target_address){let n=this.model.ResolveStructuredReference(s,this.target_address);n&&this.reference_list.push(n)}else console.info("target address not set");else{let n=this.model.named_ranges.Get(s.name);n&&(n.count===1?this.reference_list.push({type:"address",...n.start,label:s.name,position:s.position,id:s.id}):this.reference_list.push({type:"range",start:{type:"address",position:s.position,id:s.id,label:s.name,...n.start},end:{type:"address",position:s.position,label:s.name,id:s.id,...n.end},label:s.name,position:s.position,id:s.id}))}if(this.reference_list){this.reference_list.sort((s,n)=>s.position-n.position);for(let s of this.reference_list){let n;s.type==="address"?n=new y({row:s.row,column:s.column,sheet_id:s.sheet_id}):n=new y({row:s.start.row,column:s.start.column,sheet_id:s.start.sheet_id},{row:s.end.row,column:s.end.column});let a=n.spreadsheet_label;this.dependency_list.some((o,l)=>o.spreadsheet_label===a&&o.start.sheet_id===n.start.sheet_id?(this.reference_index_map.push(l),!0):!1)||(this.reference_index_map.push(this.dependency_list.length),this.dependency_list.push(n))}}}else this.reference_list=void 0}}ListDependencies(){return this.ParseDependencies(),this.dependency_list||[]}AcceptAutocomplete(t){if(!this.editor_node)return;let r=window.getSelection(),i=0;if(t.data&&t.data.completions){for(let d of t.data.completions)if(d.name.toLowerCase()===t.value?.toLowerCase()){i=d.type||0;break}}if(!r)throw new Error("error getting selection");let s=r.getRangeAt(0),n=s.cloneRange(),a=document.createElement("div");n.selectNodeContents(this.editor_node),n.setEnd(s.endContainer,s.endOffset),a.appendChild(n.cloneContents());let o=(a.textContent||"").substr(0,t.data?t.data.position:0)+t.value,l=i===1?o:o+"(";this.editor_node.textContent=l,this.autocomplete.Hide(),ie.is_firefox||this.Reconstruct(),r=window.getSelection(),s=document.createRange(),this.editor_node?.lastChild&&s.setStartAfter(this.editor_node.lastChild),s.collapse(!0),r?.removeAllRanges(),r?.addRange(s),this.selecting_=!0,t.click&&this.UpdateSelectState()}},Ge=Lr;k(Ge,"FormulaChars",("$^&*(-+={[<>/~%"+T.argument_separator).split(""));var Ot=class extends Ge{constructor(t,r,i,s,n,a){super(r,i,s,n,a);this.container=t;this.edit_container=document.createElement("div"),this.edit_container.classList.add("overlay-container"),this.edit_container.classList.add("notranslate"),this.edit_container.translate=!1,this.edit_node=document.createElement("div"),this.edit_node.classList.add("overlay-editor"),this.edit_node.contentEditable="true",this.edit_node.tabIndex=-1,this.edit_node.spellcheck=!0,this.edit_node.setAttribute("role","gridcell"),ie.is_firefox&&this.edit_node.classList.add("firefox"),this.edit_node.inputMode="none";let o=!1;this.edit_node.addEventListener("compositionstart",()=>o=!0),this.edit_node.addEventListener("compositionend",()=>o=!1),this.edit_node.addEventListener("input",l=>{if(o)return;let d=this.edit_node.firstChild;d&&d.tagName==="BR"&&this.edit_node.removeChild(d),this.editing&&(this.Reconstruct(),this.UpdateSelectState())}),this.edit_node.addEventListener("keyup",l=>{if(!(o||!this.editing||this.autocomplete.HandleKey("keyup",l).handled)){if(this.selecting_)switch(l.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Shift":case"Control":return}this.FlushReference(),this.UpdateSelectState(!0)}}),this.edit_inset=document.createElement("div"),this.edit_inset.classList.add("overlay-inset"),this.edit_container.appendChild(this.edit_node),this.edit_container.appendChild(this.edit_inset),this.edit_inset.appendChild(this.edit_node),t.appendChild(this.edit_container),this.edit_container.style.opacity="0",this.editor_node=this.edit_node,this.container_node=this.edit_container,this.ClearContents()}edit_node;edit_container;edit_inset;scale=1;_editing=!1;get editing(){return this._editing}set editing(t){this._editing!==t&&(this._editing=t,t?(this.edit_container.style.opacity="1",this.edit_container.style.pointerEvents="initial"):(this.edit_container.style.opacity="0",this.edit_container.style.pointerEvents="none"))}UpdateCaption(t=""){this.edit_node.setAttribute("aria-label",t)}Focus(t=""){this.edit_node!==document.activeElement&&(this.edit_container.style.top=`${this.container.scrollTop+this.view.active_sheet.header_offset.y}px`,this.edit_container.style.left=`${this.container.scrollLeft+this.view.active_sheet.header_offset.x}px`),this.edit_node.focus(),this.UpdateCaption(t)}CloseEditor(){this.editing=!1,this.ClearContents(),this.edit_node.spellcheck=!0,this.autocomplete.Hide(),this.active_cell=void 0}ClearContents(){ie.is_firefox?this.edit_node.innerHTML="<span></span>":this.edit_node.textContent=""}Edit(t,r,i,s,n){this.Publish({type:"start-editing",editor:"ice"}),this.active_cell=i,this.target_address={...t.target};let a=i.style||{};switch(this.edit_node.style.font=A.Font(a,this.scale),this.edit_node.style.color=U(this.theme,a.text,1),this.edit_inset.style.backgroundColor=U(this.theme,a.fill,0),a.horizontal_align){case A.HorizontalAlign.Right:this.edit_container.classList.add("align-right"),this.edit_container.classList.remove("align-center"),this.edit_container.classList.remove("align-left");break;case A.HorizontalAlign.Center:this.edit_container.classList.remove("align-right"),this.edit_container.classList.add("align-center"),this.edit_container.classList.remove("align-left");break;default:this.edit_container.classList.remove("align-right"),this.edit_container.classList.remove("align-center"),this.edit_container.classList.add("align-left");break}this.edit_node.style.paddingBottom=`${Math.max(0,(self.devicePixelRatio||1)-1)}px`;let o=s?.toString()||"";if(o&&o[0]==="="&&(this.edit_node.spellcheck=!1),this.autocomplete.ResetBlock(),this.FlushReference(),this.selection=t,typeof s<"u"){let l=o[0]!=="="&&o[o.length-1]==="%",d=o.length;this.edit_node.textContent=o;{let u=document.createRange(),h=window.getSelection();if(!h)throw new Error("invalid selection object");this.edit_node.lastChild&&(l?(u.setStart(this.edit_node.lastChild,d-1),u.setEnd(this.edit_node.lastChild,d-1)):u.setStartAfter(this.edit_node.lastChild)),u.collapse(!0),h.removeAllRanges(),h.addRange(u)}if(!n){let u=this.ListDependencies();this.Publish({type:"update",text:s.toString(),dependencies:u})}}r.ApplyStyle(this.edit_container),this.editing=!0,ne().then(()=>{this.last_reconstructed_text="",this.Reconstruct()})}HandleKeyDown(t){if(!this.editing)return 0;let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),r.handled)return 1;switch(t.key){case"Enter":case"Tab":return this.selecting_=!1,2;case"Escape":case"Esc":return this.selecting_=!1,3;case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Up":case"Down":case"Left":case"Right":return this.selecting_?0:1}return 1}UpdateTheme(t){this.scale=t}};var Dr=class{canvas;cache={};constructor(){typeof document<"u"&&(this.canvas=document.createElement("canvas"))}Flush(){this.cache={}}Get(e,t=10){let r=e+";"+t,i=this.cache[r];return i||(i=this.Measure(e,t),this.cache[r]=i,i)}Measure(e,t){let r=e.match(/([\d.]+)((?:%|em))/);if(r){let h=r[1]+r[2],f=Number(r[1])*t;r[2]==="%"&&(f/=100),e=e.replace(h,f+"px")}let i=this.canvas.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("invalid context");i.font=e;let s=i.measureText("MMM"),n=Math.ceil(s.width);if(this.canvas.setAttribute("width",n.toString()),this.canvas.setAttribute("height",n.toString()),i=this.canvas.getContext("2d",{willReadFrequently:!0}),!i)throw new Error("invalid context");i.font=e,i.textAlign="center",i.textBaseline="alphabetic",i.fillStyle="#000";let a=Math.round(n*2/3),o=Math.round(n/2);i.clearRect(0,0,n,n);for(let h=32;h<=126;h++){let f=String.fromCharCode(h);i.fillText(f,o,a)}let l=i.getImageData(0,0,this.canvas.width,this.canvas.height).data,d=Math.floor(this.GetFirstIndex(l)/n),u=Math.floor(this.GetLastIndex(l)/n);return{ascender:a-d,descender:u-a,block:u-d+1,paren:i.measureText("(").width,hash:i.measureText("##").width-i.measureText("#").width}}GetFirstIndex(e){for(let t=3,r=e.length;t<r;t+=4)if(e[t]>0)return(t-3)/4;return e.length}GetLastIndex(e){for(let t=e.length-1;t>=3;t-=4)if(e[t]>0)return t/4;return 0}},Gt=new Dr;var Ir="bottom",ki=/webkit/i.test(typeof navigator>"u"?"":navigator?.userAgent||"")?1:0,Ht=class{constructor(e,t,r,i,s){this.theme=e;this.layout=t;this.model=r;this.view=i;this.options=s;this.buffer_canvas=t.buffer_canvas,this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let n=this.buffer_canvas.getContext("2d",{alpha:!1});if(n){let a=this.layout.dpr;this.buffer_context=n,this.buffer_context.setTransform(a,0,0,a,0,0),this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Ir}}cell_edge_buffer=4;overflow_areas=[];buffer_canvas;buffer_context;buffer_canvas_size={width:256,height:256};FlushOverflows(){this.view.active_sheet.cells.IterateAll(t=>{t.renderer_data?.overflowed&&(t.renderer_data=void 0,t.render_clean[this.view.view_index]=!1)});for(let t of this.overflow_areas)t.tile.dirty=!0;this.overflow_areas=[]}MeasureText(e,t){let r=this.layout.grid_tiles[0][0].getContext("2d",{alpha:!1});if(!r)throw new Error("invalid context");return t&&(r.font=t),r.measureText(e)}EnsureBuffer(e=0,t=0,r=0){let i=this.layout.dpr;if(e=e*i,t=t*i,r=r*i,e>this.buffer_canvas_size.width||t>this.buffer_canvas_size.height){this.buffer_canvas_size.width=Math.max(Math.ceil(e/256)*256,this.buffer_canvas_size.width),this.buffer_canvas_size.height=Math.max(Math.ceil(t/256)*256,this.buffer_canvas_size.height),this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let s=this.buffer_canvas.getContext("2d",{alpha:!1});s&&(this.buffer_context=s,this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Ir)}this.buffer_context.setTransform(i,0,0,i,r,0)}OverflowDirty(e=!1){let t=[];for(let r of this.overflow_areas){let i=r.area.start.row,s=e;if(!s)for(let n=r.area.start.column;!s&&n<=r.area.end.column;n++){let a=this.view.active_sheet.cells.GetCell({row:i,column:n},!1);s=!!(a&&!a.render_clean[this.view.view_index])}if(s){for(let n=r.area.start.column;n<=r.area.end.column;n++){let a=this.view.active_sheet.cells.GetCell({row:i,column:n},!1);a&&(a.render_clean[this.view.view_index]=!1,a.renderer_data&&a.renderer_data.overflowed&&(a.renderer_data=void 0))}r.tile.dirty=!0}else t.push(r)}this.overflow_areas=t}RenderCorner(){let t=this.layout.corner_canvas.getContext("2d",{alpha:!1});if(!t)throw new Error("invalid context");let r=Gt.Get(A.Font(this.theme.headers||{},this.layout.scale)),i=this.layout.dpr,s=this.layout.header_offset,n=s.x;for(let o=0;o<this.view.active_sheet.freeze.columns;o++)n+=this.layout.ColumnWidth(o);let a=s.y;for(let o=0;o<this.view.active_sheet.freeze.rows;o++)a+=this.layout.RowHeight(o);t.setTransform(i,0,0,i,0,0),t.fillStyle=this.theme.headers?.fill?U(this.theme,this.theme.headers.fill):"",t.fillRect(0,0,n,s.y),t.fillRect(0,0,s.x,a),t.strokeStyle=this.theme.headers_grid_color||"",t.beginPath(),t.moveTo(s.x-.5,0),t.lineTo(s.x-.5,s.y),t.moveTo(0,s.y-.5),t.lineTo(s.x,s.y-.5),t.stroke(),!(!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows)&&(t.strokeStyle=this.theme.grid_color||"",t.beginPath(),a!==s.y&&(t.moveTo(s.x-.5,s.y),t.lineTo(s.x-.5,a)),n!==s.x&&(t.moveTo(s.x,s.y-.5),t.lineTo(n,s.y-.5)),t.stroke(),t.strokeStyle=this.theme.headers_grid_color||"",t.textAlign="center",t.textBaseline="middle",t.font=A.Font(this.theme.headers||{},this.layout.scale),t.fillStyle=U(this.theme,this.theme.headers?.text),this.view.active_sheet.freeze.rows&&this.layout.header_offset.x>1&&(t.setTransform(i,0,0,i,0,0),t.translate(0,s.y),t.beginPath(),t.moveTo(0,0-.5),t.lineTo(s.x,0-.5),t.stroke(),this.RenderRowLabels(t,0,this.view.active_sheet.freeze.rows-1,r.block)),this.view.active_sheet.freeze.columns&&this.layout.header_offset.y>1&&(t.setTransform(i,0,0,i,0,0),t.translate(s.x,0),t.beginPath(),t.moveTo(0-.5,0),t.lineTo(0-.5,s.y),t.stroke(),this.RenderColumnLabels(t,0,this.view.active_sheet.freeze.columns-1)))}RenderColumnLabels(e,t,r){let i=this.layout.header_offset.y;for(e.fillStyle=U(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let s=this.layout.ColumnWidth(t),n=y.ColumnToLabel(t),a=e.measureText(n);s>a.width&&e.fillText(n,s/2,i/2+1),e.moveTo(s-.5,0),e.lineTo(s-.5,i),e.translate(s,0)}e.stroke()}RenderRowLabels(e,t,r,i){let s=this.layout.header_offset.x;for(e.fillStyle=U(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let n=this.layout.RowHeight(t);n>=i*1.2&&e.fillText(`${t+1}`,s/2,n/2+1),e.moveTo(0,n-.5),e.lineTo(s,n-.5),e.translate(0,n)}e.stroke()}RenderHeaders(e,t=!1){let r=this.layout.dpr,i=this.layout.header_offset,s=Gt.Get(A.Font(this.theme.headers||{},this.layout.scale));for(let n=e.start.column;n<=e.end.column;n++){let a=this.layout.column_header_tiles[n];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=A.Font(this.theme.headers||{},this.layout.scale),o.fillStyle=this.theme.headers?.fill?U(this.theme,this.theme.headers.fill):"",o.fillRect(0,0,a.logical_size.width,this.layout.header_offset.y),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(0,i.y-.5),o.lineTo(a.logical_size.width,i.y-.5),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderColumnLabels(o,a.first_cell.column,a.last_cell.column),a.dirty=!1}}for(let n=e.start.row;n<=e.end.row;n++){let a=this.layout.row_header_tiles[n];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.fillStyle=this.theme.headers?.fill?U(this.theme,this.theme.headers.fill):"",o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=A.Font(this.theme.headers||{},this.layout.scale),o.fillRect(0,0,this.layout.header_offset.x,a.logical_size.height),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(i.x-.5,0),o.lineTo(i.x-.5,a.logical_size.height),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderRowLabels(o,a.first_cell.row,a.last_cell.row,s.block),a.dirty=!1}}(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.RenderCorner()}CopyToAdjacent(e,t,r,i,s,n,a){let o=this.layout.AdjacentTile(e,i,r);if(!o)return;let l=s,d=n;r>0?l=s-(e.pixel_end.x-e.pixel_start.x)*t:r<0&&(l=s+(o.pixel_end.x-o.pixel_start.x)*t),i>0&&(d=n-(e.pixel_end.y-e.pixel_start.y)*t);let u=o.getContext("2d",{alpha:!1});u&&(u.setTransform(t,0,0,t,l,d),u.drawImage(this.buffer_canvas,0,0,(a.width||0)*t,(a.height||0)*t,a.left||0,0,a.width||0,a.height||0))}Render(e){let t=e.getContext("2d",{alpha:!1});if(!t)return;t.textBaseline=Ir;let r=this.layout.dpr;t.setTransform(r,0,0,r,0,0);let i=0,s=0;for(let o=e.first_cell.column;o<=e.last_cell.column;o++){let l=this.layout.ColumnWidth(o);if(l){s=0;for(let d=e.first_cell.row;d<=e.last_cell.row;d++){let u=this.layout.RowHeight(d);if(u){t.setTransform(r,0,0,r,i,s);let h=this.view.active_sheet.CellData({row:d,column:o});if(e.needs_full_repaint||!h.render_clean[this.view.view_index]){let f=this.RenderCell(e,h,t,{row:d,column:o},l,u,e.pixel_start.x+i,e.pixel_start.y+s);f.tile_overflow_right&&this.CopyToAdjacent(e,r,1,0,i,s,f),f.tile_overflow_left&&this.CopyToAdjacent(e,r,-1,0,i,s,f),f.tile_overflow_bottom&&this.CopyToAdjacent(e,r,0,1,i,s,f)}}s+=u*r}i+=l*r}}if(!this.view.active_sheet.freeze.rows&&!this.view.active_sheet.freeze.columns)return;let n=0,a=0;if(e.first_cell.row<=this.view.active_sheet.freeze.rows-1)for(let o=e.first_cell.row;o<this.view.active_sheet.freeze.rows&&o<=e.last_cell.row;o++)n+=this.layout.RowHeight(o);if(e.first_cell.column<=this.view.active_sheet.freeze.columns-1)for(let o=e.first_cell.column;o<this.view.active_sheet.freeze.columns&&o<=e.last_cell.column;o++)a+=this.layout.ColumnWidth(o);if(n){let o=this.layout.frozen_row_tiles[e.tile_position.column];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,e.logical_size.width*r,n*r,0,0,e.logical_size.width,n)}if(a){let o=this.layout.frozen_column_tiles[e.tile_position.row];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,a*r,e.logical_size.height*r,0,0,a,e.logical_size.height)}if(a&&n){let o=this.layout.corner_canvas.getContext("2d",{alpha:"false"});if(!o)throw new Error("corner context failed");o.setTransform(r,0,0,r,this.layout.header_offset.x*r,this.layout.header_offset.y*r),o.drawImage(e,0,0,a*r,n*r,0,0,a,n)}}PrepText(e,t,r,i){let s=[],n=r.style||{},a,o=0,l,d=r.editing?"":r.formatted;if(Array.isArray(d)){for(let u of d){if(u.flag===6){l=u.text;continue}let h=e.measureText(u.text).width,f={width:h,text:u.text,hidden:u.flag===1};s.push(f),u.flag===2?a=f:o+=h}if(a){let u=a.text,h=a.width,f=i-o-2*this.cell_edge_buffer;if(a.width=Math.max(0,f),f>0){let p=Math.floor(f/h);for(let m=1;m<p;m++)a.text+=u;o=i-2*this.cell_edge_buffer}else a.text=""}return{strings:[s],format:l,width:o}}else if(d){r.type===2&&d[0]==="'"&&(d=d.slice(1));let u;this.options.markdown?u=xe.instance.Parse(d):(u=xe.instance.Dummy(d),e.font=t.base);let h=0,f=i-2*this.cell_edge_buffer,p=[];if(n.wrap)for(let m of u){for(let b=1;b<m.length;b++){let g=m[b].text.match(/^(\s+)/);g&&(m[b-1].text+=g[1],m[b].text=m[b].text.replace(/^\s+/,""))}let _=[];for(let b of m){this.options.markdown&&(b.strong&&b.emphasis?e.font=t.strong_emphasis:b.strong?e.font=t.strong:b.emphasis?e.font=t.emphasis:e.font=t.base);let g=b.text.match(/\S+\s*/g);if(g&&g.length)for(let x of g){let v=e.measureText(x.trim()).width,w=e.measureText(x).width;_.push({part:b,text:x,trimmed:v,width:w})}}for(;_.length;){let b=_.shift(),g=[b],x=b.trimmed;for(;x<f&&_.length;){let v=_[0],w=x-b.trimmed+b.width+v.trimmed;if(w>=f)break;b=v,g.push(v),x=w,_.shift()}b.text=b.text.trim(),b.width=b.trimmed,p.push(g.map(v=>({...v.part,hidden:!1,width:v.width,text:v.text})))}}else for(let m of u){let _=[],b=0;for(let g of m){this.options.markdown&&(g.strong&&g.emphasis?e.font=t.strong_emphasis:g.strong?e.font=t.strong:g.emphasis?e.font=t.emphasis:e.font=t.base);let x=e.measureText(g.text).width;b+=x,_.push({...g,hidden:!1,width:x})}h=Math.max(h,b),p.push(_)}return{strings:p,width:h}}return{strings:[[{text:"",hidden:!1,width:0}]],width:0}}ResolveColors(e){let t={...e};return t.text={text:U(this.theme,e.text,1)},t}RenderCellBorders(e,t,r,i=0,s=0,n=0,a=0){let o=this.view.active_sheet.SurroundingStyle(e,this.theme.table),l=U(this.theme,o[8].fill);l&&(t.fillStyle=l,t.fillRect(i+0,s-1,n,1)),l=U(this.theme,o[4].fill),l&&(t.fillStyle=l,t.fillRect(i-1,s,1,a)),l=U(this.theme,r.fill),l&&(t.fillStyle=l,t.fillRect(i-1,s-1,n+1,a+1)),l=U(this.theme,o[6].fill),l&&(t.fillStyle=l,t.fillRect(i+n-1,s-1,1,a+1)),l=U(this.theme,o[2].fill),l&&(t.fillStyle=l,t.fillRect(i-1,s+a-1,n+1,1)),o[6].border_top&&!o[6].border_left&&(t.fillStyle=U(this.theme,o[6].border_top_fill,1),t.fillRect(i+n-1,s-2+o[6].border_top,1,1)),o[9].border_left&&(t.fillStyle=U(this.theme,o[9].border_left_fill,1),t.fillRect(i+n-1,s-1,1,1)),o[9].border_bottom&&(t.fillStyle=U(this.theme,o[9].border_bottom_fill,1),t.fillRect(i+n-1,s-2+o[9].border_bottom,1,1)),o[4].border_top&&!o[4].border_right&&(t.fillStyle=U(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,s-2+o[4].border_top,1,1)),o[7].border_right&&(t.fillStyle=U(this.theme,o[7].border_right_fill,1),t.fillRect(i-1,s-1,1,1)),o[7].border_bottom&&(t.fillStyle=U(this.theme,o[7].border_bottom_fill,1),t.fillRect(i-1,s-2+o[7].border_bottom,1,1)),o[6].border_bottom&&!o[6].border_left&&(t.fillStyle=U(this.theme,o[6].border_bottom_fill,1),t.fillRect(i+n-1,s+a-o[6].border_bottom,1,1)),o[3].border_left&&(t.fillStyle=U(this.theme,o[3].border_left_fill,1),t.fillRect(i+n-1,s+a-1,1,1)),o[3].border_top&&(t.fillStyle=U(this.theme,o[3].border_top_fill,1),t.fillRect(i+n-1,s+a-o[3].border_top,1,1)),o[4].border_bottom&&!o[4].border_right&&(t.fillStyle=U(this.theme,o[4].border_bottom_fill,1),t.fillRect(i-1,s+a-o[4].border_bottom,1,1)),o[1].border_right&&(t.fillStyle=U(this.theme,o[1].border_right_fill,1),t.fillRect(i-1,s+a-1,1,1)),o[1].border_top&&(t.fillStyle=U(this.theme,o[1].border_top_fill,1),t.fillRect(i-1,s+a-o[1].border_top,1,1)),o[8].border_bottom&&(t.fillStyle=U(this.theme,o[8].border_bottom_fill,1),o[8].border_bottom===2&&(t.fillRect(i-1,s-2,n+1,1),t.fillRect(i-1,s-0,n+1,1),t.fillStyle=U(this.theme,o[8].fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s-1,n+1,1)),o[4].border_right&&(t.fillStyle=U(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,s-1,1,a+1)),o[6].border_left&&(t.fillStyle=U(this.theme,o[4].border_left_fill,1),t.fillRect(i+n-1,s-1,1,a+1)),o[2].border_top&&(t.fillStyle=U(this.theme,o[2].border_top_fill,1),o[2].border_top===2&&(t.fillRect(i-1,s+a-2,n+1,1),t.fillRect(i-1,s+a-0,n+1,1),t.fillStyle=U(this.theme,o[2].fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s+a-1,n+1,1)),r.border_top&&(t.fillStyle=U(this.theme,r.border_top_fill,1),r.border_top===2&&(t.fillRect(i-1,s-2,n+1,1),t.fillRect(i-1,s+0,n+1,1),t.fillStyle=U(this.theme,r.fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s-1,n+1,1)),r.border_left&&(t.fillStyle=U(this.theme,r.border_left_fill,1),t.fillRect(i-1,s-1,1,a+1)),r.border_right&&(t.fillStyle=U(this.theme,r.border_right_fill,1),t.fillRect(i+n-1,s-1,1,a+1)),r.border_bottom&&(t.fillStyle=U(this.theme,r.border_bottom_fill,1),r.border_bottom===2&&(t.fillRect(i-1,s+a-2,n+1,1),t.fillRect(i-1,s+a+0,n+1,1),t.fillStyle=U(this.theme,r.fill)||_e(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s+a-1,n+1,1))}PaintBackgroundImage(e,t,r,i,s,n,a=0,o=0,l=0){let d=(this.layout.scale||1)*this.layout.dpr,u=r/d%t.width,h=i/d%t.height,f=s/d,p=n/d,m=u+f>t.width,_=h+p>t.height;m&&e.drawImage(t,u-t.width,h,f,p,a,o,s-l,n-l),_&&e.drawImage(t,u,h-t.height,f,p,a,o,s-l,n-l),m&&_&&e.drawImage(t,u-t.width,h-t.height,f,p,a,o,s-l,n-l),e.drawImage(t,u,h,f,p,a,o,s-l,n-l)}RenderCellBackground(e,t,r,i,s,n,a=0,o=0){if(r.fillStyle=this.theme.grid_color,r.fillRect(0,0,s,n),this.view.active_sheet.image)this.PaintBackgroundImage(r,this.view.active_sheet.image,a,o,s,n,0,0,1);else{let l=U(this.theme,i.fill);l?(r.fillStyle=l,r.fillRect(0,0,s-1,n-1)):(r.fillStyle=_e(this.theme,this.theme.grid_cell?.fill)||"#fff",r.fillRect(0,0,s-1,n-1))}e&&(r.fillStyle=this.theme.note_marker_color,r.beginPath(),r.moveTo(s-2,1),r.lineTo(s-2-8,1),r.lineTo(s-2,1+8),r.lineTo(s-2,1),r.fill()),this.RenderCellBorders(t,r,i,0,0,s,n)}RenderCell(e,t,r,i,s,n,a=0,o=0){let l={},d=!t.render_clean[this.view.view_index];if(t.render_clean[this.view.view_index]=!0,e.needs_full_repaint&&t.renderer_data?.overflowed)return{};let u=t.style?{...t.style}:{};if(t.table&&(u=this.view.active_sheet.CellStyleData(i,t.table.theme||this.theme.table)||{}),t.merge_area)if(i.row===t.merge_area.start.row&&i.column===t.merge_area.start.column){for(let C=t.merge_area.start.column+1;C<=t.merge_area.end.column;C++)s+=this.layout.ColumnWidth(C);for(let C=t.merge_area.start.row+1;C<=t.merge_area.end.row;C++)n+=this.layout.RowHeight(C);if(t.merge_area.count>1){let C=this.view.active_sheet.CellStyleData(t.merge_area.end);C&&(u.border_bottom=C.border_bottom,u.border_right=C.border_right,u.border_bottom_fill=C.border_bottom_fill,u.border_right_fill=C.border_right_fill)}t.merge_area.end.column>e.last_cell.column&&(l.tile_overflow_right=!0),t.merge_area.end.row>e.last_cell.row&&(l.tile_overflow_bottom=!0),(l.tile_overflow_bottom||l.tile_overflow_right)&&this.overflow_areas.push({tile:e,head:{...i},area:new y(t.merge_area.start,t.merge_area.end)})}else return{};let h=!!t.hyperlink;if(t.render_function){this.RenderCellBackground(!!t.note,i,r,u,s,n),r.strokeStyle=r.fillStyle=U(this.theme,u.text,1);let C=this.ResolveColors(u);if(t.render_function.call(void 0,{width:s,height:n,context:r,cell:t,style:C,scale:this.layout.scale||1}).handled)return l}let f={base:A.Font(u,this.layout.scale),strong:A.Font({...u,bold:!0},this.layout.scale),emphasis:A.Font({...u,italic:!0},this.layout.scale),strong_emphasis:A.Font({...u,bold:!0,italic:!0},this.layout.scale)};if(r.font=f.base,d||!t.renderer_data||t.renderer_data.width!==s||t.renderer_data.height!==n){let C=this.PrepText(r,f,t,s);t.renderer_data={text_data:C,width:s,height:n}}let p=t.renderer_data.text_data,m=p.width>s-2*this.cell_edge_buffer,_=s,b=0,g=!1,x=t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7||t.type===9||t.calculated_type===9,v=u.horizontal_align;v||(v=x?A.HorizontalAlign.Right:A.HorizontalAlign.Left);let w=[];if(m)if(t.type!==3&&t.calculated_type!==3&&!u.wrap&&!t.merge_area){let ee=p.width-s+this.cell_edge_buffer,ae=0,le=0;v===A.HorizontalAlign.Center?ae=le=ee/2:v===A.HorizontalAlign.Right?ae=ee:le=ee;let K=i.column,Y=i.column;for(;le>0&&K<this.layout.last_column;){K++;let Q={row:i.row,column:K},V=this.view.active_sheet.CellData(Q),$=this.layout.ColumnWidth(K);if(le-=$,V&&!V.type&&!V.calculated_type)w.push({address:Q,cell:V,grid:new F(_,0,$,n),background:new F(_-1,0,$,n-1),border:new F(_,0,$,n)}),_+=$,V.render_clean[this.view.view_index]=!0,V.renderer_data={overflowed:!0};else{g=!0;break}}for(K>e.last_cell.column&&(l.tile_overflow_right=!0);ae>0&&Y>=1;){Y--;let Q={row:i.row,column:Y},V=this.view.active_sheet.CellData(Q),$=this.layout.ColumnWidth(Y);if(ae-=$,V&&!V.type&&!V.calculated_type)b-=$,w.push({address:Q,cell:V,grid:new F(b,0,$,n),background:new F(b,0,$,n-1),border:new F(b,0,$,n)});else{g=!0;break}}Y<e.first_cell.column&&(l.tile_overflow_left=!0),this.overflow_areas.push({head:{...i},tile:e,area:new y({row:i.row,column:Y},{row:i.row,column:K})})}else g=!x;let S=!1,R=r;(l.tile_overflow_bottom||l.tile_overflow_left||l.tile_overflow_right)&&(S=!0,l.width=_-b,l.height=n,l.left=b,this.EnsureBuffer(l.width+1,n+1,-b),r=this.buffer_context,r.font=f.base),this.RenderCellBackground(!!t.note,i,r,u,s,n,a,o);for(let C of w)C.cell.style?.fill&&(C.cell.style.fill.text||C.cell.style.fill.theme||C.cell.style.fill.theme===0)&&!this.options.grid_over_background?(r.fillStyle=_e(this.theme,C.cell.style.fill),r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height)):(r.fillStyle=this.theme.grid_color||"",r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height),this.view.active_sheet.image?this.PaintBackgroundImage(r,this.view.active_sheet.image,a+C.background.left,o+C.background.top,C.background.width,C.background.height,C.background.left,C.background.top,0):(r.fillStyle=this.theme.grid_cell?.fill?_e(this.theme,this.theme.grid_cell.fill):"",r.fillRect(C.background.left,C.background.top,C.background.width,C.background.height))),C.cell.style&&this.RenderCellBorders(C.address,r,C.cell.style,C.border.left,C.border.top,C.border.width,C.border.height);let E=Gt.Get(f.base,this.theme.grid_cell?.font_size?.value);r.lineWidth=1,r.strokeStyle=r.fillStyle=p.format?p.format:U(this.theme,u.text,1),r.beginPath();let H=this.cell_edge_buffer,Z=1.25,Le=p.strings.length,De=Le*E.block*Z;g=(g||De>=n)&&!S,g&&(r.save(),r.beginPath(),r.moveTo(b+1.5,0),r.lineTo(b+1.5,n),r.lineTo(_-1.5,n),r.lineTo(_-1.5,0),r.clip()),r.beginPath();let he=Math.round(n-2-E.block*Z*(Le-1)+ki);switch(u.vertical_align){case A.VerticalAlign.Top:he=Math.round(E.block*Z)+1;break;case A.VerticalAlign.Middle:he=Math.round((n-De)/2+E.block*Z);break}if((t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7)&&m){let C=Math.floor((s-2*this.cell_edge_buffer)/E.hash),ee="";for(let le=0;le<C;le++)ee+="#";let ae=r.measureText(ee).width;v===A.HorizontalAlign.Center?H=Math.round((s-ae)/2):v===A.HorizontalAlign.Right&&(H=s-this.cell_edge_buffer-ae),r.fillText(ee,H,he)}else{let C=he,ee=0;for(let ae of p.strings){let le=0;for(let V of ae)le+=V.width;v===A.HorizontalAlign.Center?H=Math.round((s-le)/2):v===A.HorizontalAlign.Right&&(H=s-this.cell_edge_buffer-le);let K=Math.floor(C+1.5-E.descender-ki)+.5,Y=Math.floor(C-E.descender-E.ascender/2)+.5,Q=H;for(let V of ae)V.strong&&V.emphasis?r.font=f.strong_emphasis:V.strong?r.font=f.strong:V.emphasis?r.font=f.emphasis:r.font=f.base,V.hidden||(V.text&&r.fillText(V.text,Q,C),u.underline&&(r.moveTo(Q,K),r.lineTo(Q+V.width,K)),(u.strike||V.strike)&&(r.moveTo(Q,Y),r.lineTo(Q+V.width,Y)),h&&(V.left=Q,V.top=C-E.block,V.height=E.block)),Q+=V.width;ee++,C=Math.round(he+ee*E.block*Z)}}if(r.stroke(),g)r.restore();else if(S){let C=this.layout.dpr;R.drawImage(this.buffer_canvas,0,0,(l.width||0)*C,n*C,b,0,l.width||0,n)}return l}};var $t=class extends Ge{constructor(t,r,i,s,n,a,o){super(r,i,s,n,o);this.container=t;this.options=a;let l=I.CreateDiv("treb-formula-bar-container notranslate",t),d=I.CreateDiv("treb-formula-bar",l);this.address_label_container=I.CreateDiv("address-label",d),this.address_label=I.CreateDiv("",this.address_label_container),this.InitAddressLabel(),this.options.insert_function_button&&(this.button=I.Create("button","formula-button",d),this.button.addEventListener("click",()=>{let h=this.editor_node&&this.editor_node.textContent||"";this.Publish({type:"formula-button",formula:h})})),this.container_node=I.CreateDiv("editor-container",d),this.editor_node=I.CreateDiv("formula-editor",this.container_node),this.editor_node.setAttribute("contenteditable","true");let u=!1;this.editor_node.spellcheck=!1,this.editor_node.addEventListener("focusin",()=>{if(!this.editor_node)return;let h=this.editor_node.textContent||"";h[0]==="{"&&h[h.length-1]==="}"&&(h=h.substr(1,h.length-2),this.editor_node.textContent=h,this.last_reconstructed_text=""),this.editor_node.spellcheck=h[0]!=="=",this.autocomplete.ResetBlock(),ne().then(()=>{this.Reconstruct()});let f=this.ListDependencies();this.Publish([{type:"start-editing",editor:"formula-bar"},{type:"update",text:h,cell:this.active_cell,dependencies:f}]),this.focused_=!0,u=!1}),this.editor_node.addEventListener("focusout",()=>{this.selecting&&console.info("focusout, but selecting..."),this.autocomplete.Hide(),this.Publish([{type:"stop-editing"}]),this.focused_=!1,this.editor_node&&(this.editor_node.spellcheck=!1)}),this.editor_node.addEventListener("keydown",h=>this.FormulaKeyDown(h)),this.editor_node.addEventListener("keyup",h=>this.FormulaKeyUp(h)),this.editor_node.addEventListener("compositionstart",()=>{u=!0}),this.editor_node.addEventListener("compositionsend",()=>{u=!1}),this.editor_node.addEventListener("input",()=>{u||(this.Reconstruct(),this.UpdateSelectState())}),this.options.expand_formula_button&&(this.expand_button=I.Create("button","expand-button",d),this.expand_button.addEventListener("click",h=>{h.stopPropagation(),h.preventDefault(),this.editor_node&&(this.editor_node.scrollTop=0),d.classList.toggle("expanded")}))}focused_=!1;get focused(){return this.focused_}address_label_container;address_label;button;expand_button;drag_corner;lines=1;last_formula="";label_update_timer=0;get formula(){return this.editor_node&&this.editor_node.textContent||""}set formula(t){this.editor_node&&(this.editor_node.textContent=t,this.last_reconstructed_text=""),this.last_formula=t}get label(){return this.address_label?.textContent||""}set label(t){t.trim().length?(this.address_label.textContent=t,this.label_update_timer||(this.label_update_timer=requestAnimationFrame(()=>{this.label_update_timer=0,this.address_label.scrollWidth>this.address_label.offsetWidth?this.address_label.setAttribute("title",t):this.address_label.removeAttribute("title")}))):(this.address_label.innerHTML=" ",this.address_label.removeAttribute("title"))}set editable(t){!this.editor_node||!this.container_node||(this.editor_node.setAttribute("contenteditable",t.toString()),t?this.container_node.classList.remove("locked"):this.container_node.classList.add("locked"))}IsElement(t){return t===this.editor_node}InitAddressLabel(){this.address_label.contentEditable="true",this.address_label.spellcheck=!1,this.address_label.addEventListener("focusin",t=>{requestAnimationFrame(()=>{if(document.body.createTextRange){let r=document.body.createTextRange();r.moveToElementText(this.address_label),r.select()}else{let r=window.getSelection(),i=document.createRange();i.selectNodeContents(this.address_label),r?.removeAllRanges(),r?.addRange(i)}})}),this.address_label.addEventListener("keydown",t=>{switch(t.key){case"Enter":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event",text:this.address_label.textContent||void 0});break;case"Esc":case"Escape":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event"});break}})}FocusEditor(){this.editor_node&&this.editor_node.focus()}GetTextContent(t){let r=t.childNodes,i=[];for(let s=0;s<r.length;s++){let n=r[s];switch(n.nodeType){case Node.ELEMENT_NODE:i.push(...this.GetTextContent(n)),n instanceof Element&&n.tagName==="DIV"&&i.push(`
|
|
6
|
+
`);break;case Node.TEXT_NODE:n.nodeValue&&i.push(n.nodeValue);break}}return i}FormulaKeyDown(t){let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),!r.handled){switch(t.key){case"Enter":case"Tab":{this.selecting_=!1;let i=t.key==="Enter"&&t.ctrlKey&&t.shiftKey,s=(this.editor_node?this.GetTextContent(this.editor_node).join(""):"").trim();this.Publish({type:"commit",selection:this.selection,value:s,event:t,array:i}),this.FlushReference()}break;case"Escape":case"Esc":this.selecting_=!1,this.Publish({type:"discard"}),this.FlushReference();break;default:return}t.stopPropagation(),t.preventDefault()}}FormulaKeyUp(t){this.autocomplete.HandleKey("keyup",t).handled||this.FlushReference()}};var ht=class{constructor(e={}){this.options=e;this.completion_list=I.CreateDiv("treb-cell-editor-ac-list treb-autocomplete",e.container||document.body),this.completion_list.addEventListener("mousedown",t=>this.ListMouseDown(t)),this.completion_list.addEventListener("mousemove",t=>this.ListMouseMove(t)),this.tooltip=I.CreateDiv("treb-cell-editor-ac-tooltip treb-autocomplete-tooltip",e.container||document.body)}completion_list_visible=!1;tooltip_visible=!1;last_completion;completion_list;tooltip;selected_index=0;block=!1;autocomplete_data={};callback;active_element;Hide(){this.tooltip.style.top="-1000px",this.completion_list.style.top="-1000px",this.completion_list_visible=!1,this.tooltip_visible=!1,this.active_element=void 0}ResetBlock(){this.block=!1}ListMouseMove(e){let t=e.target;t.tagName==="A"&&t!==this.active_element&&this.active_element&&(this.active_element.classList.remove("selected"),this.active_element=t,this.active_element.classList.add("selected"),this.selected_index=Number(t.dataset.index||"0"),this.last_completion=t.textContent||"")}ListMouseDown(e){e.stopPropagation(),e.preventDefault();let t=e.target;for(;t;){if(t===this.completion_list)return;if(t.tagName==="A")break;t=t.parentElement}t&&(console.info(t),this.callback&&this.callback({handled:!0,accept:!0,value:t.textContent?t.textContent:void 0,data:this.autocomplete_data,click:!0}))}HandleKey(e,t){if(!this.completion_list_visible)return{handled:!1};let r=0,i=!1,s=!1;switch(t.key){case"Up":case"ArrowUp":r=-1;break;case"Down":case"ArrowDown":r=1;break;case"Tab":s=!0;break;case"Escape":case"Esc":i=!0;break;default:return{handled:!1}}if(t.stopPropagation(),t.preventDefault(),e==="keyup")return{handled:!0};if(r){let n=this.completion_list.getBoundingClientRect();this.selected_index+=r,this.selected_index=Math.max(0,this.selected_index);let a=this.completion_list.querySelectorAll("a");this.selected_index=Math.min(this.selected_index,a.length-1);for(let o=0;o<a.length;o++){let l=a[o];if(o===this.selected_index){l.classList.add("selected"),this.active_element=l;let d=l.getBoundingClientRect();d.top<n.top?this.completion_list.scrollBy(0,-d.height):d.bottom>n.bottom&&this.completion_list.scrollBy(0,d.height),this.last_completion=l.textContent||void 0}else l.classList.remove("selected")}return{handled:!0}}else{if(i)return this.block=!0,this.Hide(),{handled:!0};if(s)return{handled:!0,accept:!0,value:this.last_completion,data:this.autocomplete_data}}return{handled:!1}}Show(e,t={},r){if(this.completion_list_visible=!1,this.tooltip_visible=!1,this.autocomplete_data=t,this.callback=e,!this.block)if(t.tooltip?(this.tooltip.innerHTML=t.tooltip+t.arguments+(t.description?`
|
|
7
7
|
`+t.description:""),this.tooltip.style.left=r.left+"px",this.options.tooltip_prefer_top?this.tooltip.style.top=r.top-this.tooltip.offsetHeight-5+"px":this.tooltip.style.top=r.bottom+5+"px",this.tooltip_visible=!0):this.tooltip.style.top="-1000px",t.completions&&t.completions.length){this.tooltip.style.top="-1000px",this.selected_index=0,this.completion_list.innerHTML='<ul class="notranslate">'+t.completions.map((a,o)=>(a.name===this.last_completion&&(this.selected_index=o),`<li><a data-index="${o}">${a.name}</a></li>`)).join(`
|
|
8
|
-
`)+"<ul>";let i=this.completion_list.offsetHeight,s=!1;this.options.autocomplete_prefer_top?s=r.top>=200:document.documentElement&&Math.max(document.documentElement.clientHeight,window.innerHeight||0)-r.bottom<200&&(s=!0),s?this.completion_list.style.top=r.top-i-5+"px":this.completion_list.style.top=r.bottom+5+"px",this.completion_list.style.left=r.left+"px";let n=this.completion_list.querySelectorAll("a");this.active_element=n[this.selected_index],n[this.selected_index].classList.add("selected"),this.last_completion=n[this.selected_index].textContent||void 0,this.completion_list.scrollTop=this.active_element.offsetTop,this.completion_list_visible=!0}else this.completion_list.style.top="-1000px"}};var ft=(C=>(C[C.Null=0]="Null",C[C.InsertRows=1]="InsertRows",C[C.InsertColumns=2]="InsertColumns",C[C.ResizeRows=3]="ResizeRows",C[C.ResizeColumns=4]="ResizeColumns",C[C.Select=5]="Select",C[C.SetRange=6]="SetRange",C[C.UpdateStyle=7]="UpdateStyle",C[C.UpdateBorders=8]="UpdateBorders",C[C.MergeCells=9]="MergeCells",C[C.UnmergeCells=10]="UnmergeCells",C[C.Clear=11]="Clear",C[C.UpdateTheme=12]="UpdateTheme",C[C.SetNote=13]="SetNote",C[C.SetLink=14]="SetLink",C[C.Freeze=15]="Freeze",C[C.SetName=16]="SetName",C[C.ShowHeaders=17]="ShowHeaders",C[C.AddSheet=18]="AddSheet",C[C.DuplicateSheet=19]="DuplicateSheet",C[C.DeleteSheet=20]="DeleteSheet",C[C.ActivateSheet=21]="ActivateSheet",C[C.RenameSheet=22]="RenameSheet",C[C.ReorderSheet=23]="ReorderSheet",C[C.ShowSheet=24]="ShowSheet",C[C.DataValidation=25]="DataValidation",C[C.Reset=26]="Reset",C[C.SortTable=27]="SortTable",C[C.InsertTable=28]="InsertTable",C[C.RemoveTable=29]="RemoveTable",C))(ft||{});var Ei={scrollbars:!0,in_cell_editor:!0,formula_bar:!0,add_tab:!1,tab_bar:"auto",insert_function_button:!1,expand_formula_button:!1,expand:!0,repaint_on_cell_change:!0,grid_over_background:!1};var mt=class{grid_events=new te;command_log=new te;model;view;get active_sheet(){return this.view.active_sheet}set active_sheet(e){this.view.active_sheet=e}get view_index(){return this.view.view_index}batch=!1;batch_events=[];autocomplete_matcher=new Ot;flags={};options;parser;constructor(e={},t,r){this.model=r,this.view={active_sheet:this.model.sheets.list[0],view_index:this.model.view_count++},this.parser=t,this.options={...Ei,...e}}RemoveTable(e){this.ExecCommand({key:29,table:e})}InsertTable(e,t=!1){e.start.sheet_id||(e.start.sheet_id=this.active_sheet.id);let r=this.FindSheet(e);for(let i=e.start.row;i<=e.end.row;i++)for(let s=e.start.column;s<=e.end.column;s++){let n=r.cells.GetCell({row:i,column:s},!1);if(n&&(n.area||n.merge_area||n.table))throw new Error("invalid area for table")}this.ExecCommand({key:28,area:JSON.parse(JSON.stringify(e)),totals:t})}SortTable(e,t={}){this.ExecCommand({key:27,table:JSON.parse(JSON.stringify(e)),...si,...t})}FilterTable(e,t,r){let i=[];if(!e.area.start.sheet_id)throw new Error("invalid table area");let s=this.model.sheets.Find(e.area.start.sheet_id);if(!s)throw new Error("invalid table sheet");let n=[],a=[],o=e.totals_row?e.area.end.row-1:e.area.end.row;t+=e.area.start.column;for(let l=e.area.start.row+1;l<=o;l++){let d=s.CellData({row:l,column:t}),u=r(d),h=s.GetRowHeight(l);u&&!h?n.push(l):!u&&h&&a.push(l)}n&&i.push({key:3,sheet_id:s.id,row:n,height:s.default_row_height}),a&&i.push({key:3,sheet_id:s.id,row:a,height:0}),i.length&&this.ExecCommand(i)}UpdateSheets(e,t=!1,r){j.Reset();let i=e.map(s=>j.FromJSON(s,this.model.theme_style_properties));if(i.length===0&&i.push(j.Blank(this.model.theme_style_properties)),this.model.sheets.Assign(i),this.ResetMetadata(),this.active_sheet=i[0],r){let s=this.model.sheets.Find(r);s&&(this.active_sheet=s)}}SetAutocompleteFunctions(e){let t=[];for(let i of this.model.named_expressions.keys())t.push({name:i,type:0});let r=e.slice(0).concat(this.model.named_ranges.List().map(i=>({name:i.name,type:1})),t);this.autocomplete_matcher.SetFunctions(r)}ResetMetadata(){this.model.document_name=void 0,this.model.user_data=void 0}Serialize(e={}){let t=this.model.sheets.list.map(n=>n.toJSON(e)),r;this.model.tables.size>0&&(r=Array.from(this.model.tables.values()));let i;if(this.model.macro_functions.size){i=[];for(let n of this.model.macro_functions.values())i.push({...n,expression:void 0})}let s=[];if(this.model.named_expressions)for(let[n,a]of this.model.named_expressions){this.parser.Walk(a,l=>{if(l.type==="address"||l.type==="range"){let d=l.type==="range"?l.start:l;if(d.absolute_column=d.absolute_row=!0,!d.sheet){if(d.sheet_id){let u=this.model.sheets.Find(d.sheet_id);u&&(d.sheet=u.name)}d.sheet||(d.sheet=this.active_sheet.name)}return l.type==="range"&&(l.end.absolute_column=l.end.absolute_row=!0),!1}return!0});let o=this.parser.Render(a,{missing:""});s.push({name:n,expression:o})}return{sheet_data:t,active_sheet:this.active_sheet.id,named_ranges:this.model.named_ranges.Count()?this.model.named_ranges.Serialize():void 0,macro_functions:i,tables:r,named_expressions:s.length?s:void 0}}ResizeColumnsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.column;if(typeof r>"u"){r=[];for(let i=0;i<t.columns;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.width)for(let i of r)t.SetColumnWidth(i,e.width);else console.error("auto size not supported")}ResizeRowsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.row;if(typeof r>"u"){r=[];for(let i=0;i<t.rows;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.height)for(let i of r)t.SetRowHeight(i,e.height);else console.error("auto size not supported")}ResetInternal(){j.Reset(),this.UpdateSheets([],!0),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),this.model.macro_functions.clear(),this.model.tables.clear()}SetValidationInternal(e){let t,r=this.FindSheet(e.area);if(r&&(t=r.cells.GetCell(e.area,!0)),!t)throw new Error("invalid cell in set validation");e.range?t.validation={type:2,area:e.range,error:!!e.error}:e.list?t.validation={type:0,list:JSON.parse(JSON.stringify(e.list)),error:!!e.error}:t.validation=void 0}GetValidationRange(e){let t,r=this.FindSheet(e);if(r){t=[],e=r.RealArea(new y(e.start,e.end),!0);for(let i=e.start.row;i<=e.end.row;i++)for(let s=e.start.column;s<=e.end.column;s++){let n=r.CellData({row:i,column:s});n&&n.formatted&&(typeof n.formatted=="string"?t.push(n.formatted):t.push(X.FormatPartsAsText(n.formatted)))}}return t}DeleteSheetInternal(e){let t=!1,r=-1,i="",s=!1,n=e.name?e.name.toLowerCase():"",a=this.model.sheets.list.filter((o,l)=>l===e.index||o.id===e.id||o.name.toLowerCase()===n?(t=o===this.active_sheet,this.model.named_ranges.RemoveRangesForSheet(o.id),i=o.name,r=l,!1):!0);if(i&&this.RenameSheetReferences(a,i,"#REF")>0&&(s=!0),!a.length)a.push(j.Blank(this.model.theme_style_properties)),r=0;else if(a.every(o=>!o.visible))a.unshift(j.Blank(this.model.theme_style_properties)),r=0;else for(r>=a.length&&(r=0);!a[r].visible;)r++;return this.model.sheets.Assign(a),t&&this.ActivateSheetInternal({key:21,index:r}),s}RenameSheetInternal(e,t){if(!t||ci.test(t))throw new Error("invalid sheet name");let r=t.toLowerCase();for(let s of this.model.sheets.list)if(s!==e&&s.name.toLowerCase()===r)throw new Error("sheet name already exists");let i=e.name;e.name=t,this.model.sheets.Assign(this.model.sheets.list),this.RenameSheetReferences(this.model.sheets.list,i,t)}SortTableInternal(e){if(!e.table.area.start.sheet_id)throw new Error("table has invalid area");let t=this.model.sheets.Find(e.table.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table area");let r=[],i=[],s=e.table.area.end.row;e.table.totals_row&&s--;let n=0,a=0;for(let h=e.table.area.start.row+1;h<=s;h++){if(t.GetRowHeight(h))i.push(h);else continue;let f={row:h,number:0,text:"",data:[]};for(let m=e.table.area.start.column;m<=e.table.area.end.column;m++){let _=t.CellData({row:h,column:m});if(m===e.column+e.table.area.start.column){let b=_.calculated_type||_.type;b===2?n++:b===3&&a++;let g=_.calculated_type?_.calculated:_.value;f.text=g?.toString()||"",f.number=Number(g)||0}f.data.push({address:{row:h,column:m},data:_.value,type:_.type,style:_.style})}r.push(f)}let o=e.type;o==="auto"&&(a>n?o="numeric":o="text");let l=e.asc?1:-1;switch(o){case"numeric":r.sort((h,p)=>(h.number-p.number)*l);break;case"text":default:r.sort((h,p)=>h.text.localeCompare(p.text)*l);break}let d={row:e.table.area.start.row+1,column:e.table.area.start.column};for(let h=0;h<i.length;h++){d.row=i[h];let p=r[h];d.column=e.table.area.start.column;for(let f of p.data){if(f.type===1){let m=f.data,_={columns:0,rows:d.row-p.row},b=this.parser.Parse(m);b.expression&&(m="="+this.parser.Render(b.expression,{offset:_,missing:""})),t.SetCellValue(d,m)}else t.SetCellValue(d,f.data);t.UpdateCellStyle(d,f.style||{},!1),d.column++}}let u=this.model.tables.get(e.table.name.toLowerCase());u&&(u.sort={type:e.type,asc:!!e.asc,column:e.column});{let h=e.table.area.start.row;for(let p=e.table.area.start.column;p<=e.table.area.end.column;p++)t.cells.data[h][p]?.FlushStyle();if(e.table.totals_row){h=e.table.area.end.row;for(let p=e.table.area.start.column;p<=e.table.area.end.column;p++)t.cells.data[h][p]?.FlushStyle()}}return new y(e.table.area.start,e.table.area.end)}UpdateTableColumns(e){if(!e.area.start.sheet_id)throw new Error("invalid area in table");let t=this.model.sheets.Find(e.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table");let r=e.columns?.slice(0)||void 0,i=[],s=e.area.start.row,n=e.area.end.column-e.area.start.column+1,a=e.area.start.column;for(let o=0;o<n;o++,a++){let l=t.CellData({row:s,column:a}),d="";l.type!==2?(typeof l.calculated<"u"?d=l.calculated.toString():typeof l.value<"u"&&(d=l.value.toString()),l.Set(d,2)):d=l.value||"",d||(d=`Column${o+1}`);let u=d,h=!1,p=1;for(;!h;){h=!0;e:for(let f of i)if(f.toLowerCase()===u.toLowerCase()){h=!1,u=`${d}${++p}`;break e}}l.Set(u,2),i.push(u.toLowerCase())}if(r&&r.length===i.length){let o=new Map;for(let l=0;l<r.length;l++){let d=r[l].toLowerCase();d!==i[l]&&o.set(d,i[l])}if(o.size){let l=e.name.toLowerCase();for(let d of this.model.sheets.list)d.cells.IterateAll(u=>{if(u.ValueIsFormula()){let h=!1,p=this.parser.Parse(u.value);p.expression&&(this.parser.Walk(p.expression,f=>{if(f.type==="structured-reference"&&(f.table.toLowerCase()===l||!f.table&&u.table===e))for(let[m,_]of o.entries())f.column.toLowerCase()===m&&(f.column=_,h=!0);return!0}),h&&(console.info("updating value"),u.value="="+this.parser.Render(p.expression,{missing:""})))}})}}return e.columns=i,{start:{...e.area.start},end:{row:e.area.start.row,column:e.area.end.column}}}SetRangeInternal(e,t={}){let r=z(e.area)?new y(e.area):new y(e.area.start,e.area.end),i=this.FindSheet(r);if(r.start.sheet_id||(r.start.sheet_id=i.id),!r.entire_row&&!r.entire_column&&(r.end.row>=i.rows||r.end.column>=i.columns)&&(i.cells.EnsureCell(r.end),i===this.active_sheet&&(t.layout=!0)),z(e.area)){let s=i.CellData(e.area);if(s.area&&(s.area.rows>1||s.area.columns>1)){this.Error(2);return}let n=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;return e.r1c1&&(n=this.TranslateR1C1(e.area,n)),e.array?i.SetArrayValue(r,n):i.SetCellValue(e.area,n),r}else{if(e.array){let s=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;e.r1c1&&(s=this.TranslateR1C1(r.start,s)),i.SetArrayValue(r,s)}else{if(e.r1c1){if(Array.isArray(e.value))for(let s=0;s<e.value.length&&s<r.rows;s++){e.value[s]||(e.value[s]=[]);let n=e.value[s];for(let a=0;a<n.length&&a<r.columns;a++){let o={...r.start,row:r.start.row+s,column:r.start.column+a};n[a]=this.TranslateR1C1(o,n[a])}}else if(typeof e.value=="string"&&e.value[0]==="="){let s=[];for(let n=0;n<r.rows;n++){let a=[];for(let o=0;o<r.columns;o++){let l={...r.start,row:r.start.row+n,column:r.start.column+o};a.push(this.TranslateR1C1(l,e.value))}s.push(a)}e.value=s}}i.SetAreaValues2(r,e.value)}return r}}ActivateSheetInternal(e){let t=this.ResolveSheet(e)||this.model.sheets.list[0];if(this.active_sheet===t&&!e.force)return;if(!t.visible)throw new Error("cannot activate hidden sheet");let r=this.active_sheet;this.active_sheet=t,this.grid_events.Publish({type:"sheet-change",deactivate:r,activate:this.active_sheet})}ShowSheetInternal(e){let t=this.ResolveSheet(e);if(t&&t.visible!==e.show){if(!e.show){let r=0;for(let i of this.model.sheets.list)(!t.visible||i===t)&&r++;if(r>=this.model.sheets.length)throw new Error("can't hide all sheets")}if(t.visible=e.show,t===this.active_sheet){let r=this.model.sheets.list;for(let i=0;i<r.length;i++)if(r[i]===this.active_sheet){for(let s=i+1;s<r.length;s++)if(r[s].visible){this.ActivateSheetInternal({key:21,index:s});return}for(let s=0;s<r.length;s++)if(r[s].visible){this.ActivateSheetInternal({key:21,index:s});return}throw new Error("no visible sheet")}}}}NormalizeCommands(e){Array.isArray(e)||(e=[e]);let t=this.active_sheet.id;for(let r of e)switch(r.key){case 0:case 17:case 24:case 18:case 19:case 20:case 21:case 22:case 23:case 26:break;case 27:case 29:r.table.area.start.sheet_id||(r.table.area.start.sheet_id=t);break;case 3:case 4:case 2:case 1:case 15:r.sheet_id||(r.sheet_id=t);break;case 11:case 13:case 14:case 8:case 9:case 10:case 25:case 6:case 7:case 16:case 5:case 28:r.area&&(z(r.area)?r.area.sheet_id||(r.area.sheet_id=t):r.area.start.sheet_id||(r.area.start.sheet_id=t));break}return e}AddSheetInternal(e=j.default_sheet_name,t=-1){if(!this.options.add_tab){console.warn("add tab option not set or false");return}for(;this.model.sheets.list.some(i=>i.name===e);){let i=e.match(/^(.*?)(\d+)$/);i?e=i[1]+(Number(i[2])+1):e=e+"2"}let r=j.Blank(this.model.theme_style_properties,e);return t>=0?this.model.sheets.Splice(t,0,r):this.model.sheets.Add(r),r.id}ResolveSheet(e){if(typeof e.index<"u")return this.model.sheets.list[e.index];if(typeof e.name<"u")return this.model.sheets.Find(e.name);if(e.id)return this.model.sheets.Find(e.id)}FindSheet(e){if(e===void 0)return this.active_sheet;let t=typeof e=="number"?e:z(e)?e.sheet_id:e.start.sheet_id;if(!t||t===this.active_sheet.id)return this.active_sheet;let r=this.model.sheets.Find(t);return r||this.active_sheet}PatchFormulasInternal(e,t,r,i,s,n,a){let o=this.parser.Parse(e||""),l=!1;if(o.expression&&(this.parser.Walk(o.expression,d=>{if(d.type==="range"||d.type==="address"){let u=[];d.type==="range"?(d.start.sheet&&d.start.sheet.toLowerCase()===n||!d.start.sheet&&a)&&u.push(d.start,d.end):d.type==="address"&&(d.sheet&&d.sheet.toLowerCase()===n||!d.sheet&&a)&&u.push(d);for(let h of u)r&&h.row>=t&&(r<0&&h.row+r<t?h.column=h.row=-1:h.row+=r,l=!0),s&&h.column>=i&&(s<0&&h.column+s<i?h.column=h.row=-1:h.column+=s,l=!0);return!1}return!0}),l))return"="+this.parser.Render(o.expression,{missing:""})}RenameSheetReferences(e,t,r){let i=0;t=t.toLowerCase();for(let s of e){s.cells.IterateAll(n=>{if(n.ValueIsFormula()){let a=!1,o=this.parser.Parse(n.value||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(n.value="="+this.parser.Render(o.expression,{missing:""}),i++))}});for(let n of s.annotations)if(n.formula){let a=!1,o=this.parser.Parse(n.formula||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(n.formula="="+this.parser.Render(o.expression,{missing:""}),i++))}}return i}ApplyBordersInternal(e){let t=e.borders,r=e.borders==="none"?0:e.width,i=new y(e.area.start,e.area.end),s=this.FindSheet(i);i.start.sheet_id=s.id;let n={border_top:r},a={border_bottom:r},o={border_left:r},l={border_right:r},d={border_top:0},u={border_bottom:0},h={border_left:0},p={border_right:0};return e.color&&(n.border_top_fill={...e.color},a.border_bottom_fill={...e.color},o.border_left_fill={...e.color},l.border_right_fill={...e.color}),(t==="none"||t==="all")&&s.UpdateAreaStyle(i,{...n,...a,...o,...l},!0),(t==="top"||t==="outside")&&(i.entire_column||s.UpdateAreaStyle(i.top,{...n},!0)),(t==="none"||t==="all"||t==="outside"||t==="top")&&(i.entire_column||i.start.row&&s.UpdateAreaStyle(new y({row:i.start.row-1,column:i.start.column},{row:i.start.row-1,column:i.end.column}),{...u},!0)),(t==="bottom"||t==="outside")&&(i.entire_column||s.UpdateAreaStyle(i.bottom,{...a},!0)),(t==="none"||t==="all"||t==="outside"||t==="bottom")&&(i.entire_column||s.UpdateAreaStyle(new y({row:i.end.row+1,column:i.start.column},{row:i.end.row+1,column:i.end.column}),{...d},!0)),(t==="left"||t==="outside")&&(i.entire_row||s.UpdateAreaStyle(i.left,{...o},!0)),(t==="none"||t==="all"||t==="outside"||t==="left")&&(i.entire_row||i.start.column&&s.UpdateAreaStyle(new y({row:i.start.row,column:i.start.column-1},{row:i.end.row,column:i.start.column-1}),{...p},!0)),(t==="right"||t==="outside")&&(i.entire_row||s.UpdateAreaStyle(i.right,{...l},!0)),(t==="none"||t==="all"||t==="outside"||t==="right")&&(i.entire_row||s.UpdateAreaStyle(new y({row:i.start.row,column:i.end.column+1},{row:i.end.row,column:i.end.column+1}),{...h},!0)),y.Bleed(i)}TranslateR1C1(e,t){let r=!1,i=this.parser.flags.r1c1;if(this.parser.flags.r1c1=!0,typeof t=="string"&&t[0]==="="){let s=this.parser.Parse(t);s.expression&&(this.parser.Walk(s.expression,n=>(n.type==="address"&&n.r1c1&&(r=!0,n.offset_column&&(n.column=n.column+e.column),n.offset_row&&(n.row=n.row+e.row)),!0)),r&&(this.flags.warned_r1c1||(this.flags.warned_r1c1=!0,console.warn("NOTE: R1C1 support is experimental. the semantics may change in the future.")),t="="+this.parser.Render(s.expression,{missing:""})))}return this.parser.flags.r1c1=i,t}ClearAreaInternal(e){let t=!1;e=this.active_sheet.RealArea(e),this.active_sheet.cells.Apply(e,r=>{r.area&&!e.ContainsArea(r.area)&&(t=!0)}),t?this.Error(2):this.active_sheet.ClearArea(e)}Error(e){this.grid_events.Publish({type:"error",code:e})}DuplicateSheetInternal(e){if(!this.options.add_tab){console.warn("add tab option not set or false");return}let t=this.ResolveSheet(e),r=this.model.sheets.list.reduce((o,l)=>Math.max(o,l.id),0)+1,i=-1;for(let o=0;o<this.model.sheets.length;o++)this.model.sheets.list[o]===t&&(i=o+1);if(!t||i<0)throw new Error("source sheet not found");if(typeof e.insert_before=="number")i=e.insert_before;else if(typeof e.insert_before=="string"){let o=e.insert_before.toLowerCase();for(let l=0;l<this.model.sheets.length;l++)if(this.model.sheets.list[l].name.toLowerCase()===o){i=l;break}}let s={rendered_values:!0},n=j.FromJSON(t.toJSON(s),this.model.theme_style_properties),a=e.new_name||t.name;for(;this.model.sheets.list.some(o=>o.name===a);){let o=a.match(/^(.*?)(\d+)$/);o?a=o[1]+(Number(o[2])+1):a=a+"2"}return n.name=a,n.id=r,this.model.sheets.Splice(i,0,n),n.id}SelectInternal(e){}FreezeInternal(e){let t=this.FindSheet(e.sheet_id||this.active_sheet.id);t.freeze.rows=e.rows,t.freeze.columns=e.columns}InsertRowsInternal(e){let t=this.FindSheet(e.sheet_id);if(!t.InsertRows(e.before_row,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_row<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row<=o.area.end.row){o.area.end.row+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let d=o.area.start.column;d<=o.area.end.column;d++){let u=t.CellData({row:l,column:d});u.table=o}}}else if(e.before_row<=o.area.start.row)if(e.before_row-e.count<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row-e.count>=o.area.end.row)this.model.tables.delete(o.name.toLowerCase());else{this.model.tables.delete(o.name.toLowerCase());for(let l=e.before_row;l<=o.area.end.row;l++)for(let d=o.area.start.column;d<=o.area.end.column;d++){let u=t.CellData({row:l,column:d});u.table===o&&(u.table=void 0)}}else e.before_row<=o.area.end.row&&(e.before_row-e.count>o.area.end.row&&(o.totals_row=!1),o.area.end.row=Math.max(0,o.area.end.row+e.count,e.before_row-1));this.model.named_ranges.PatchNamedRanges(t.id,0,0,e.before_row,e.count);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(d=>{if(d.ValueIsFormula()){let u=this.PatchFormulasInternal(d.value||"",e.before_row,e.count,0,0,i,l);u&&(d.value=u)}});for(let d of o.annotations)if(d.formula){let u=this.PatchFormulasInternal(d.formula||"",e.before_row,e.count,0,0,i,l);u&&(d.formula=u)}}let s=[],n=[],a=[];if(e.count>0){let o=e.before_row;for(let l of t.annotations)if(l.layout){let[d,u,h]=[l.layout.tl.address.row,l.layout.br.address.row,l.layout.br.offset.y];if(o<=d)l.layout.tl.address.row+=e.count,l.layout.br.address.row+=e.count;else if(o<u||o===u&&h>0)l.layout.br.address.row+=e.count,n.push(l);else continue;s.push(l)}}else if(e.count<0){let o=e.before_row,l=e.before_row-e.count-1;for(let d of t.annotations)if(d.layout){let[u,h,p]=[d.layout.tl.address.row,d.layout.br.address.row,d.layout.br.offset.y];if(o<=u)if(l<u)d.layout.tl.address.row+=e.count,d.layout.br.address.row+=e.count;else if(l<h-1||l===h-1&&p>0)d.layout.tl.address.row=o,d.layout.tl.offset.y=0,d.layout.br.address.row+=e.count,n.push(d);else{a.push(d);continue}else if(o<h||o===h&&p>0)l<h-1||l===h-1&&p>0?(d.layout.br.address.row+=e.count,n.push(d)):(d.layout.br.address.row=o,d.layout.br.offset.y=0,n.push(d));else continue;s.push(d)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:s,resize_annotations_list:n,delete_annotations_list:a}}InsertColumnsInternal(e){let t=this.FindSheet(e.sheet_id);if(!t.InsertColumns(e.before_column,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_column<=o.area.start.column)o.area.start.column+=e.count,o.area.end.column+=e.count;else if(e.before_column<=o.area.end.column){o.area.end.column+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let d=o.area.start.column;d<=o.area.end.column;d++){let u=t.CellData({row:l,column:d});u.table=o}this.UpdateTableColumns(o)}}else e.before_column<=o.area.start.column?e.before_column-e.count<=o.area.start.column?(o.area.start.column+=e.count,o.area.end.column+=e.count):e.before_column-e.count>=o.area.end.column?this.model.tables.delete(o.name.toLowerCase()):(o.area.start.column=e.before_column,o.area.end.column+=e.count,this.UpdateTableColumns(o)):e.before_column<=o.area.end.column&&(o.area.end.column=Math.max(0,o.area.end.column+e.count,e.before_column-1),this.UpdateTableColumns(o));this.model.named_ranges.PatchNamedRanges(t.id,e.before_column,e.count,0,0);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(d=>{if(d.ValueIsFormula()){let u=this.PatchFormulasInternal(d.value||"",0,0,e.before_column,e.count,i,l);u&&(d.value=u)}});for(let d of o.annotations)if(d.formula){let u=this.PatchFormulasInternal(d.formula,0,0,e.before_column,e.count,i,l);u&&(d.formula=u)}}let s=[],n=[],a=[];if(e.count>0){let o=e.before_column;for(let l of t.annotations)if(l.layout){let[d,u,h]=[l.layout.tl.address.column,l.layout.br.address.column,l.layout.br.offset.x];if(o<=d)l.layout.tl.address.column+=e.count,l.layout.br.address.column+=e.count;else if(o<u||o===u&&h>0)l.layout.br.address.column+=e.count,n.push(l);else continue;s.push(l)}}else if(e.count<0){let o=e.before_column,l=e.before_column-e.count-1;for(let d of t.annotations)if(d.layout){let[u,h,p]=[d.layout.tl.address.column,d.layout.br.address.column,d.layout.br.offset.x];if(o<=u)if(l<u)d.layout.tl.address.column+=e.count,d.layout.br.address.column+=e.count;else if(l<h-1||l===h-1&&p>0)d.layout.tl.address.column=o,d.layout.tl.offset.x=0,d.layout.br.address.column+=e.count,n.push(d);else{a.push(d);continue}else if(o<h||o===h&&p>0)l<h-1||l===h-1&&p>0?(d.layout.br.address.column+=e.count,n.push(d)):(d.layout.br.address.column=o,d.layout.br.offset.x=0,n.push(d));else continue;s.push(d)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:s,resize_annotations_list:n,delete_annotations_list:a}}ExecCommand(e,t=!0){let r={pending:[]},i=[];e=this.NormalizeCommands(e),t&&this.command_log.Publish({command:e,timestamp:new Date().getTime()});for(let s of e)switch(s.key){case 26:this.ResetInternal();break;case 11:if(s.area){let n=new y(s.area.start,s.area.end);this.ClearAreaInternal(n),r.data_area=y.Join(n,r.data_area),r.formula=!0}break;case 5:this.SelectInternal(s);break;case 15:this.FreezeInternal(s),r.structure_event=!0;break;case 28:{let n=this.FindSheet(s.area),a=new y(s.area.start,s.area.end),o=!0;e:for(let l=a.start.row;l<=a.end.row;l++)for(let d=a.start.column;d<=a.end.column;d++){let u=n.cells.GetCell({row:l,column:d},!1);if(u&&(u.area||u.merge_area||u.table)){o=!1;break e}}if(o){let l=this.model.tables.size+1,d="";for(;d=`Table${l++}`,!!this.model.tables.has(d.toLowerCase()););let u={area:s.area,name:d};s.totals&&(u.totals_row=!0),this.model.tables.set(d.toLowerCase(),u);for(let h=a.start.row;h<=a.end.row;h++)for(let p=a.start.column;p<=a.end.column;p++){let f=n.cells.GetCell({row:h,column:p},!0);f.table=u}this.UpdateTableColumns(u),n.Invalidate(new y(u.area.start,u.area.end)),n===this.active_sheet?(r.style_area=y.Join(a,r.style_area),r.render_area=y.Join(a,r.render_area)):r.style_event=!0}}break;case 29:{let n=this.FindSheet(s.table.area),a=new y(s.table.area.start,s.table.area.end);for(let l=a.start.row;l<=a.end.row;l++)for(let d=a.start.column;d<=a.end.column;d++){let u=n.cells.GetCell({row:l,column:d},!1);u&&(u.table=void 0)}console.info("deleting...",s.table.name),this.model.tables.delete(s.table.name.toLowerCase());let o=n.RealArea(a.Clone().Shift(-1,-1).Resize(a.rows+2,a.columns+2));n.Invalidate(o),n===this.active_sheet?(r.style_area=y.Join(a,r.style_area),r.render_area=y.Join(a,r.render_area)):r.style_event=!0}break;case 9:{let n=this.FindSheet(s.area);n.MergeCells(new y(s.area.start,s.area.end)),r.structure_event=!0,r.structure_rebuild_required=!0,n===this.active_sheet?(r.data_area=y.Join(s.area,r.data_area),r.render_area=y.Join(s.area,r.render_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(n.id))}break;case 10:{let n=this.FindSheet(s.area),a={},o=new y(s.area.start,s.area.end);n.cells.Apply(o,d=>{if(d.merge_area){let u=y.CellAddressToLabel(d.merge_area.start)+":"+y.CellAddressToLabel(d.merge_area.end);a[u]=d.merge_area}},!1);let l=Object.keys(a);for(let d=0;d<l.length;d++)n.UnmergeCells(a[l[d]]);n===this.active_sheet?(r.render_area=y.Join(s.area,r.render_area),r.data_area=y.Join(s.area,r.data_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(n.id)),r.structure_event=!0,r.structure_rebuild_required=!0}break;case 7:{let n,a=this.FindSheet(s.area);z(s.area)?(n=new y(s.area),a.UpdateCellStyle(s.area,s.style,!!s.delta)):(n=new y(s.area.start,s.area.end),a.UpdateAreaStyle(n,s.style,!!s.delta)),a===this.active_sheet?(r.style_area=y.Join(n,r.style_area),(!s.delta||s.style.fill||s.style.border_top||s.style.border_left||s.style.border_right||s.style.border_bottom)&&(n=y.Bleed(n),this.active_sheet.Invalidate(n)),r.render_area=y.Join(n,r.render_area)):r.style_event=!0}break;case 25:this.SetValidationInternal(s),(!s.area.sheet_id||s.area.sheet_id===this.active_sheet.id)&&(r.render_area=y.Join(new y(s.area),r.render_area));break;case 16:s.area?(this.model.named_expressions.delete(s.name),this.model.named_ranges.SetName(s.name,new y(s.area.start,s.area.end)),this.autocomplete_matcher.AddFunctions({type:1,name:s.name})):s.expression?(this.model.named_ranges.ClearName(s.name),this.model.named_expressions.set(s.name,s.expression),this.autocomplete_matcher.AddFunctions({type:1,name:s.name})):(this.model.named_ranges.ClearName(s.name),this.model.named_expressions.delete(s.name),this.autocomplete_matcher.RemoveFunctions({type:1,name:s.name})),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 8:{let n=this.ApplyBordersInternal(s);n.start.sheet_id===this.active_sheet.id?(r.render_area=y.Join(n,r.render_area),r.style_area=y.Join(n,r.style_area)):r.style_event=!0}break;case 24:this.ShowSheetInternal(s),r.sheets=!0,r.structure_event=!0;break;case 23:{let n=[],a=this.model.sheets.list[s.index];for(let o=0;o<this.model.sheets.length;o++)o!==s.index&&(o===s.move_before&&n.push(a),n.push(this.model.sheets.list[o]));s.move_before>=this.model.sheets.length&&n.push(a),this.model.sheets.Assign(n),r.sheets=!0,r.structure_event=!0}break;case 22:{let n=this.ResolveSheet(s);n&&(this.RenameSheetInternal(n,s.new_name),r.sheets=!0,r.structure_event=!0)}break;case 3:{let n=this.ResizeRowsInternal(s);if(n)if(n.start.sheet_id===this.active_sheet.id){let a=this.active_sheet.RealArea(new y(n.start,n.end));r.render_area=y.Join(a,r.render_area),r.data_area=y.Join(a,r.data_area),r.data_event=!0}else r.data_event=!0,r.pending||(r.pending=[]),n.start.sheet_id&&r.pending.push(n.start.sheet_id);r.structure_event=!0}break;case 4:this.ResizeColumnsInternal(s),r.structure_event=!0;break;case 17:this.active_sheet.SetHeaderSize(s.show?void 0:1,s.show?void 0:1),this.flags.layout=!0,this.flags.repaint=!0;break;case 1:this.InsertRowsInternal(s),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 2:this.InsertColumnsInternal(s),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 14:case 13:{let n=this.FindSheet(s.area),a=n.cells.GetCell(s.area,!0);if(a){let o;a.merge_area?(o=new y(a.merge_area.start),a=n.cells.GetCell(a.merge_area.start,!0)):o=new y(s.area),s.key===13?a.SetNote(s.note):(a.hyperlink=s.reference||void 0,a.render_clean=[]),n===this.active_sheet?(r.style_area=y.Join(o,r.style_area),r.render_area=y.Join(o,r.render_area)):r.style_event=!0}}break;case 27:{let n=this.SortTableInternal(s);n&&n.start.sheet_id===this.active_sheet.id?(r.data_area=y.Join(n,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=y.Join(n,r.render_area))):r.data_event=!0}break;case 6:{let n=this.SetRangeInternal(s,r);if(n){let o=this.model.sheets.Find(n.start.sheet_id||this.active_sheet.id)?.TablesFromArea(n,!0)||[];for(let l of o)this.UpdateTableColumns(l)}n&&n.start.sheet_id===this.active_sheet.id?(r.data_area=y.Join(n,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=y.Join(n,r.render_area))):r.data_event=!0}break;case 20:this.DeleteSheetInternal(s),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 19:this.DuplicateSheetInternal(s),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 18:{let n=this.AddSheetInternal(s.name,s.insert_index);typeof n=="number"&&s.show&&this.ActivateSheetInternal({key:21,id:n}),r.structure_event=!0,r.sheets=!0,r.structure=!0}break;case 21:this.ActivateSheetInternal(s);break;default:console.warn(`unhandled command: ${ft[s.key]} (${s.key})`)}return r.data_area?(r.data_area.start.sheet_id||r.data_area.SetSheetID(this.active_sheet.id),i.push({type:"data",area:r.data_area})):r.data_event&&i.push({type:"data"}),r.style_area?(r.style_area.start.sheet_id||r.style_area.SetSheetID(this.active_sheet.id),i.push({type:"style",area:r.style_area})):r.style_event&&i.push({type:"style"}),r.structure_event&&i.push({type:"structure",rebuild_required:r.structure_rebuild_required}),this.batch?this.batch_events.push(...i):this.grid_events.Publish(i),r}};var _t=class extends mt{hide_selection=!1;headless=!1;get scale(){return this.layout.scale}set scale(e){this.layout.scale=e,this.UpdateLayout(),this.UpdateAnnotationLayout(),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.layout.ApplyTheme(this.theme),this.overlay_editor?.UpdateTheme(e),this.tab_bar?.UpdateScale(e),this.grid_events.Publish({type:"scale",scale:e});for(let t of this.model.sheets.list)for(let r of t.annotations)r.dirty=!0}theme;language_map;reverse_language_map;hover_data={};editing_state=0;editing_cell={row:-1,column:-1,sheet_id:0};selected_annotation;editing_annotation;grid_container;container;layout;tile_update_pending=!1;scroll_offset_pending;pending_layout_update=new Set;decimal_separator_code=46;overlay_editor;formula_bar;RESIZE_PIXEL_BUFFER=5;select_argument=!1;cell_resize={row:-1,column:-1};render_tiles=new y({row:0,column:0});primary_selection={target:{row:0,column:0},area:new y({row:0,column:0}),empty:!0};active_selection={target:{row:0,column:0},area:new y({row:0,column:0}),empty:!0};nub_select_flag=!1;additional_selections=[];double_click_data={};layout_token=0;render_token=0;tile_renderer;selection_renderer;tab_bar;constructor(e={},t,r,i=St){super(e,t,r),this.decimal_separator_code=T.decimal_separator.charCodeAt(0),this.theme=JSON.parse(JSON.stringify(i)),this.layout=new Nt(this.model,this.view),e.initial_scale&&(typeof e.initial_scale=="string"&&(e.initial_scale=Number(e.initial_scale)),this.layout.scale=e.initial_scale),this.tile_renderer=new $t(this.theme,this.layout,this.model,this.view,this.options),this.selection_renderer=new It(this.theme,this.layout,this.model,this.view,this.primary_selection,this.additional_selections)}SetLanguageMap(e){if(!e)this.language_map=this.reverse_language_map=void 0;else{let t=Object.keys(e);this.language_map={};for(let r of t)this.language_map[r.toUpperCase()]=e[r];this.reverse_language_map={};for(let r of t){let i=e[r];this.reverse_language_map[i.toUpperCase()]=r}}this.primary_selection.empty||this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target)}SetNote(e,t){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.target}this.ExecCommand({key:13,area:e,note:t})}SetLink(e,t){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.target}this.ExecCommand({key:14,area:e,reference:t})}FindAnnotation(e){for(let t of this.active_sheet.annotations)if((t.view[this.view_index]||{}).node===e)return t}CreateAnnotation(e={},t=!0,r=!1,i){let s=new Ie(e);if(r)if(!s.layout&&s.scaled_rect&&(s.layout=this.layout.RectToAnnotationLayout(s.scaled_rect)),!s.layout)console.warn("can't offset annotation without layout");else{let n=this.layout.AnnotationLayoutToRect(s.layout).Shift(20,20),a=!0;for(;a;){a=!1;for(let o of this.active_sheet.annotations)if(o!==s&&o.scaled_rect&&o.scaled_rect.top===n.top&&o.scaled_rect.left===n.left){n=n.Shift(20,20),a=!0;break}}s.layout=this.layout.RectToAnnotationLayout(n)}return i&&(F.IsRectangle(i)?(s.layout=void 0,s.rect=F.Create(i)):i.start&&(s.rect=void 0,s.layout=this.layout.AddressToAnnotationLayout(i.start,i.end||i.start))),t&&(this.active_sheet.annotations.some(n=>n===s)||this.active_sheet.annotations.push(s),this.AddAnnotation(s)),s}UpdateAnnotationLayout(){}AddAnnotation(e,t=!1,r=!0){let i=e.view[this.view_index];if(i||(i={},e.view[this.view_index]=i),!i.node){i.node=document.createElement("div"),i.node.dataset.scale=this.layout.scale.toString(),i.node.style.fontSize=`${10*this.layout.scale}pt`,i.content_node=I.CreateDiv("annotation-content",i.node);let s=I.CreateDiv("annotation-move-target",i.node),n=I.CreateDiv("annotation-resize-target",i.node);if(i.node){let a=i.node;a.setAttribute("tabindex","-1"),a.addEventListener("mousedown",o=>{o.button===0&&this.layout.AnnotationMouseDown(e,a,o,s,n).then(l=>{l&&this.grid_events.Publish(l),e.layout&&this.EnsureAddress(e.layout.br.address,1)})}),a.addEventListener("focusin",()=>{for(let o of this.layout.GetFrozenAnnotations(e))o.classList.add("clone-focus");this.selected_annotation=e,this.primary_selection.empty=!0,this.primary_selection.target={row:-1,column:-1,sheet_id:this.active_sheet.id},this.HideGridSelection()}),a.addEventListener("focusout",o=>{for(let l of this.layout.GetFrozenAnnotations(e))l.classList.remove("clone-focus");this.formula_bar&&this.formula_bar.IsElement(o.relatedTarget)?(this.primary_selection.empty=!0,this.RenderSelections(),this.editing_annotation=e,this.layout.ShowSelections(!0)):(this.selected_annotation===e&&(this.selected_annotation=void 0),this.ShowGridSelection())}),a.addEventListener("keydown",o=>{let l=e.scaled_rect;if(!l){console.info("missing scaled rect!");return}let d=[a,...this.layout.GetFrozenAnnotations(e)],u={x:l.left,y:l.top};switch(o.key){case"ArrowUp":case"Up":o.ctrlKey?(this.layout.AnnotationLayoutOrder(e,1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:e}),a.focus()):u.y--;break;case"ArrowLeft":case"Left":if(o.ctrlKey)return;u.x--;break;case"ArrowRight":case"Right":if(o.ctrlKey)return;u.x++;break;case"ArrowDown":case"Down":o.ctrlKey?(this.layout.AnnotationLayoutOrder(e,-1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:e}),a.focus()):u.y++;break;case"Escape":case"Esc":this.Focus();break;case"Delete":case"Del":this.Focus(),this.RemoveAnnotation(e);break;default:return}if(o.stopPropagation(),o.preventDefault(),u.x=Math.max(u.x,0),u.y=Math.max(u.y,0),l.left!==u.x||l.top!==u.y){l.left=Math.round(u.x),l.top=Math.round(u.y);for(let h of d)h.style.top=l.top+"px",h.style.left=l.left+"px";e.extent=void 0,this.grid_events.Publish({type:"annotation",event:"move",annotation:e}),e.layout=this.layout.RectToAnnotationLayout(l)}})}}i.node.classList.add("annotation"),r&&(this.layout.AddAnnotation(e),e.layout&&this.EnsureAddress(e.layout.br.address,1)),t||this.grid_events.Publish({type:"annotation",annotation:e,event:"create"})}AnnotationUpdated(e){this.layout.CloneFrozenAnnotation(e)}RemoveAnnotation(e){for(let t=0;t<this.active_sheet.annotations.length;t++)if(e===this.active_sheet.annotations[t]){this.active_sheet.annotations.splice(t,1),this.layout.RemoveAnnotation(e),this.grid_events.Publish({type:"annotation",annotation:e,event:"delete"});return}}RemoveAnnotationNodes(){this.layout.RemoveAnnotationNodes()}Serialize(e={}){return this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset,super.Serialize(e)}Reset(){this.ExecCommand({key:26})}FromCSV(e){let t=this.parser.decimal_mark===",";t&&(this.parser.argument_separator=",",this.parser.decimal_mark=".");let i=di(e).map(n=>n.map(a=>{if(a){let o=this.parser.Parse(a);if(o.expression?.type==="complex")return o.expression}return ye.TryParse(a).value}));t&&(this.parser.argument_separator=";",this.parser.decimal_mark=",");let s={row:Math.max(0,i.length-1),column:i.reduce((n,a)=>Math.max(n,Math.max(0,a.length-1)),0)};this.ExecCommand([{key:26},{key:6,area:{start:{row:0,column:0},end:s},value:i}])}ShowHeaders(e=!0){this.ExecCommand({key:17,show:e})}FromImportData(e,t=!1){this.RemoveAnnotationNodes();let r=e.sheets,i=r.map(()=>j.Blank(this.model.theme_style_properties).toJSON()),s;if(typeof e.active_tab=="number")s=i[e.active_tab]?.id;else for(let a=0;a<e.sheets.length;a++)if(!e.sheets[a].hidden){s=i[a].id;break}this.UpdateSheets(i,!0,s);let n={};this.model.macro_functions.clear(),this.ClearSelection(this.primary_selection),this.model.tables.clear();for(let a=0;a<r.length;a++){let o=this.model.sheets.list[a];o.ImportData(r[a]),n[o.name]=o.id;for(let l of r[a].cells)l.table&&(l.table.area.start.sheet_id=o.id,this.model.tables.set(l.table.name.toLowerCase(),l.table));for(let l of this.model.tables.values())this.UpdateTableColumns(l)}if(this.model.sheets.UpdateIndexes(),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),e.names){for(let a of Object.keys(e.names)){let o=this.model.named_ranges.ValidateNamed(a);if(!o){console.warn(`invalid name: ${a}`);continue}let l=e.names[a];if(typeof l!="number"){let d=this.parser.Parse(l);if(d.expression)if(d.expression.type==="range"){let u=n[d.expression.start.sheet||""];u&&(d.expression.start.sheet_id=u,this.model.named_ranges.SetName(o,new y(d.expression.start,d.expression.end),!1))}else if(d.expression.type==="address"){let u=n[d.expression.sheet||""];u&&(d.expression.sheet_id=u,this.model.named_ranges.SetName(o,new y(d.expression),!1))}else{let u=d.expression;this.parser.Walk(u,h=>h.type==="address"||h.type==="range"?(h.type==="range"&&(h=h.start),h.sheet_id||(h.sheet_id=n[h.sheet||""]||0),!1):!0),this.model.named_expressions.set(o,u)}}}this.model.named_ranges.RebuildList()}for(let a of this.active_sheet.annotations)this.AddAnnotation(a,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.StyleDefaultFromTheme(),t&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}NextSheet(e=1){if(this.model.sheets.length===1)return;let t=this.model.sheets.list.map((r,i)=>({sheet:r,index:i})).filter(r=>r.sheet.visible);if(t.length!==1){for(let r=0;r<t.length;r++)if(t[r].sheet===this.active_sheet){let i=(r+e)%t.length;for(;i<0;)i+=t.length;this.ActivateSheet(t[i].index);return}}}InsertSheet(e,t){if(typeof e>"u"&&!this.model.sheets.list.some((r,i)=>r===this.active_sheet?(e=i+1,!0):!1))throw new Error("invalid index");this.ExecCommand({key:18,insert_index:e,name:t,show:!0})}DeleteSheetID(e){this.ExecCommand({key:20,id:e})}DeleteSheet(e){if(typeof e>"u"&&!this.model.sheets.list.some((t,r)=>t===this.active_sheet?(e=r,!0):!1))throw new Error("invalid index");this.ExecCommand({key:20,index:e})}DuplicateSheet(e,t,r){let i={key:19,new_name:t,insert_before:r};typeof e>"u"?i.id=this.active_sheet.id:i.index=e,this.ExecCommand(i)}AddSheet(e){this.ExecCommand({key:18,name:e,show:!0})}ActivateSheet(e){let t=typeof e=="number"?e:void 0,r=typeof e=="string"?e:void 0;this.ExecCommand({key:21,index:t,name:r})}ActivateSheetID(e){this.ExecCommand({key:21,id:e})}ShowAll(){let e=[];for(let t=0;t<this.model.sheets.length;t++)e.push({key:24,index:t,show:!0});this.ExecCommand(e)}ShowSheet(e=0,t=!0){let r={key:24,show:t};typeof e=="string"?r.name=e:r.index=e,this.ExecCommand(r)}UpdateSheets(e,t=!1,r){if(super.UpdateSheets(e,t,r),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),e[0]&&e[0].primary_selection){let i=e[0].primary_selection;i.empty||this.Select(this.primary_selection,new y(i.area.start,i.area.end),i.target)}else if(!this.active_sheet.selection.empty){let i=this.active_sheet.selection;this.Select(this.primary_selection,new y(i.area.start,i.area.end),i.target)}this.layout.ClearLayoutCaches();for(let i of this.model.sheets.list)for(let s of i.annotations)this.AddAnnotation(s,!0,i===this.active_sheet);this.ActivateSheetTasks(),this.QueueLayoutUpdate(JSON.parse(JSON.stringify(this.active_sheet.scroll_offset))),this.StyleDefaultFromTheme(),t&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}UpdateLayout(){this.layout.UpdateTiles(),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!0)}UpdateTheme(e=!1,t){if(!e)for(let i of Object.keys(this.theme))delete this.theme[i];let r=JSON.parse(JSON.stringify(St));this.grid_container&&(r={...ii(this.grid_container)}),r={...this.theme,...r,...t},Object.assign(this.theme,r),this.StyleDefaultFromTheme(),this.active_sheet.UpdateDefaultRowHeight(),this.active_sheet.FlushCellStyles(),this.layout.ApplyTheme(this.theme),e||(this.UpdateLayout(),this.overlay_editor?.UpdateTheme(this.layout.scale),this.Repaint(!0,!0,!0))}Initialize(e,t=!1){this.grid_container=e,e.classList.add("treb-main"),ie.is_windows?e.classList.add("treb-ua-windows"):ie.is_mac&&e.classList.add("treb-ua-osx"),e.classList.add("treb-theme"),this.UpdateTheme(!0);let r=document.createElement("div"),i=document.createElement("div");i.classList.add("treb-layout-master"),i.setAttribute("role","grid"),i.appendChild(r),e.appendChild(i);let s;this.options.formula_bar&&(s||(s=new pt({theme:this.theme,container:r})),this.InitFormulaBar(e,s)),this.options.tab_bar&&(this.tab_bar=new Ft(this.layout,this.model,this.view,this.options,this.theme,e),this.tab_bar.Subscribe(n=>{switch(n.type){case"cancel":break;case"scale":{let a=this.layout.scale;if(a=Math.round(n.value*1e3)/1e3,a=Math.min(2,Math.max(a,.5)),this.options.persist_scale_key&&localStorage.setItem(this.options.persist_scale_key,JSON.stringify({scale:a})),this.scale=a,n.keep_focus)return}break;case"reorder-sheet":this.ReorderSheet(n.index,n.move_before);break;case"delete-sheet":this.DeleteSheet();break;case"add-sheet":this.AddSheet();break;case"rename-sheet":this.RenameSheet(n.sheet,n.name);break;case"activate-sheet":this.ActivateSheetID(n.sheet.id);break}this.SelectingArgument()||this.Focus()})),this.container=r,this.container.classList.add("treb-grid"),ie.is_mac&&ie.is_safari&&this.container.classList.add("safari"),this.container.setAttribute("tabindex","-1"),this.layout.Initialize(r,()=>this.OnScroll(),n=>this.OnDropdownSelect(n),(n,a,o)=>{let l=this.model.tables.get(n.toLowerCase());l&&this.SortTable(l,{column:a,asc:o})},this.options.scrollbars),this.selection_renderer.Initialize(),this.layout.UpdateTiles(),s||(s=new pt({theme:this.theme,container:r})),this.InitOverlayEditor(s),this.AttachListeners(),this.render_tiles=this.layout.VisibleTiles(),t||(this.tab_bar?.Update(),this.Repaint(!0))}MergeCells(e){!e&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:9,area:e||this.primary_selection.area}))}UnmergeCells(e){!e&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:10,area:e||this.primary_selection.area}))}Focus(e=""){ie.is_mobile?this.container?.focus():this.overlay_editor?.Focus(e)}SetValidation(e,t,r){if(!e){if(this.primary_selection.empty)throw new Error("invalid target in set validation");e=this.primary_selection.target}let i={key:25,area:e,error:r};t&&(Array.isArray(t)?i.list=t:typeof t=="object"&&t.start&&t.end&&z(t.start)&&z(t.end)&&(i.range=t)),this.ExecCommand(i),!this.primary_selection.empty&&(!e.sheet_id||e.sheet_id===this.active_sheet.id)&&this.primary_selection.target.row===e.row&&this.primary_selection.target.column===e.column&&requestAnimationFrame(()=>this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target))}SetName(e,t,r){let i=this.model.named_ranges.ValidateNamed(e);if(!i)throw new Error("invalid name");let s=e.trim().toUpperCase();if(this.autocomplete_matcher){for(let a of Object.keys(this.autocomplete_matcher.function_map))if(s===a.toUpperCase()){if(t||r)throw new Error("name already defined");break}}e=i;let n={key:16,name:e};if(t)z(t)&&(t=new y(t)),t.start.sheet_id||(t=new y({...t.start,sheet_id:this.active_sheet.id},t.end)),n.area=new y(t.start,t.end);else if(r){let a=this.parser.Parse(r);if(a.valid&&a.expression)this.parser.Walk(a.expression,o=>{if(o.type==="address"||o.type==="range"){if(o.type==="range"&&(o=o.start),!o.sheet_id&&o.sheet){let l=this.model.sheets.Find(o.sheet);l&&(o.sheet_id=l.id)}return o.sheet_id||(o.sheet_id=this.active_sheet.id),!1}return!0}),n.expression=a.expression;else throw new Error("invalid expression")}this.ExecCommand(n)}SelectAll(){this.Select(this.primary_selection,new y({row:1/0,column:1/0}),void 0,!0),this.RenderSelections()}SelectRange(e){this.Select(this.primary_selection,e),this.RenderSelections()}GetNumberFormat(e){let t=this.active_sheet.CellStyleData(e);if(t&&t.number_format)return D.Get(t.number_format).toString()}GetRangeStyle(e,t=!1){let r=0;if(z(e)?r=e.sheet_id||this.active_sheet.id:r=e.start.sheet_id||this.active_sheet.id,r)return this.model.sheets.Find(r)?.GetCellStyle(e,t)||void 0}GetRange(e,t){if(z(e)){let i=this.model.sheets.Find(e.sheet_id||this.active_sheet.id);return i?t==="formula"?i.cells.RawValue(e):t==="formatted"?i.GetFormattedRange(e):i.cells.GetRange(e):void 0}let r=this.model.sheets.Find(e.start.sheet_id||this.active_sheet.id);if(r)return t==="formula"?r.cells.RawValue(e.start,e.end):t==="formatted"?r.GetFormattedRange(e.start,e.end):r.cells.GetRange(e.start,e.end)}SetRange(e,t,r={}){let{recycle:i,transpose:s,array:n,r1c1:a}=r;if(r.argument_separator){let o={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark},l=!1;if(r.argument_separator===","&&this.parser.argument_separator!==","&&(this.parser.argument_separator=",",this.parser.decimal_mark=".",l=!0),r.argument_separator===";"&&this.parser.argument_separator!==";"&&(this.parser.argument_separator=";",this.parser.decimal_mark=",",l=!0),l){let d=u=>{if(typeof u=="string"&&u[0]==="="){let h=this.parser.Parse(u);h.expression&&(u="="+this.parser.Render(h.expression,{missing:"",convert_decimal:o.decimal_mark,convert_argument_separator:o.argument_separator}))}return u};Array.isArray(t)?t=t.map(u=>Array.isArray(u)?u.map(h=>d(h)):d(u)):t=d(t)}this.parser.argument_separator=o.argument_separator,this.parser.decimal_mark=o.decimal_mark}if(t=this.UntranslateData(t),!Array.isArray(t))i||n?this.ExecCommand({key:6,area:e,value:t,array:n,r1c1:a}):this.ExecCommand({key:6,area:e.start,value:t,array:n,r1c1:a});else{if(!dr(t))if(i){let o=e.entire_column?this.active_sheet.rows:e.rows,l=e.entire_row?this.active_sheet.columns:e.columns,d=o*l;if(d>t.length){let h=t.slice(0),p=Math.ceil(d/h.length);for(let f=1;f<p;f++)h=h.concat(t.slice(0));t=h}let u=[];for(let h=0,p=0;h<l;h++,p+=o)u[h]=t.slice(p,p+o);t=u}else t=[t];s&&(t=this.Transpose(t)),this.ExecCommand({key:6,area:e,value:t,array:n,r1c1:a})}!this.primary_selection.empty&&e.Contains(this.primary_selection.target)&&this.UpdateFormulaBarFormula()}SetRowHeight(e,t,r=!0){this.ExecCommand({key:3,row:e,height:t,shrink:r})}SetColumnWidth(e,t=0){this.ExecCommand({key:4,column:e,width:t})}ApplyStyle(e,t={},r=!0){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.area}j.UpdateStyle(t),this.ExecCommand({key:7,area:e,style:t,delta:r}),this.UpdateFormulaBarFormula()}GetSelection(){return this.primary_selection}Update(e=!1,t){this.DelayedRender(e,t)}ApplyBorders(e,t="none",r,i=1){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.area}t==="none"&&(i=0),this.ExecCommand({key:8,color:{text:r},area:e,borders:t,width:i})}ApplyBorders2(e,t="none",r,i=1){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.area}t==="none"&&(i=0),this.ExecCommand({key:8,color:r,area:e,borders:t,width:i})}GetFreeze(){return{...this.active_sheet.freeze}}Freeze(e=0,t=0,r=!0){this.ExecCommand({key:15,rows:e,columns:t,highlight_transition:r})}Batch(e,t=!0){this.batch=!0,e(),this.batch=!1;let r=this.batch_events.slice(0);return this.batch_events=[],t&&this.DelayedRender(!1),r}InsertColumns(e=0,t=1){this.ExecCommand({key:2,before_column:e,count:t})}ReorderSheet(e,t){this.ExecCommand({key:23,index:e,move_before:t})}RenameSheet(e,t){this.ExecCommand({key:22,new_name:t,id:e.id})}InsertRows(e=0,t=1){this.ExecCommand({key:1,before_row:e,count:t})}GetTableReference(e){return this.model.sheets.Find(e.sheet_id||this.active_sheet.id)?.CellData(e).table||void 0}ScrollTo(e,t=!0,r=!0,i=!1){this.layout.ScrollTo(e,t,r,i)}ScrollIntoView(e){this.options.scrollbars&&this.layout.ScrollIntoView(e)}GetScrollOffset(){return this.layout.GetScrollOffset()}ScrollOffset(e){if(e)this.layout.scroll_offset=e;else return this.layout.scroll_offset}TranslateInternal(e,t){let r=this.parser.Parse(e);if(r.expression){let i=!1;if(this.parser.Walk(r.expression,s=>{if(s.type==="call"){let n=t[s.name.toUpperCase()];n&&(i=!0,s.name=n)}return!0}),i)return"="+this.parser.Render(r.expression,{missing:""})}return e}TranslateFunction(e){return this.language_map?this.TranslateInternal(e,this.language_map):e}UntranslateFunction(e){return this.reverse_language_map?this.TranslateInternal(e,this.reverse_language_map):e}UntranslateData(e){return Array.isArray(e)?dr(e)?e.map(t=>t.map(r=>r&&typeof r=="string"&&r[0]==="="?this.UntranslateFunction(r):r)):e.map(t=>t&&typeof t=="string"&&t[0]==="="?this.UntranslateFunction(t):t):(e&&typeof e=="string"&&e[0]==="="&&(e=this.UntranslateFunction(e)),e)}StyleDefaultFromTheme(){this.model.theme_style_properties.font_face=this.theme.grid_cell?.font_face||"",this.model.theme_style_properties.font_size=this.theme.grid_cell?.font_size||{unit:"pt",value:10}}AutoSizeColumn(e,t,r=!0){let i=12,s=4*2;r||(i=e.GetColumnWidth(t));for(let n=0;n<e.cells.rows;n++){let a=e.CellData({row:n,column:t}),o=a.formatted||"";if(typeof o!="string"&&(o=o.map(l=>l.text).join("")),o&&o.length){let l=this.tile_renderer.MeasureText(o,A.Font(a.style||{}));i=Math.max(i,Math.ceil(l.width)+s)}}e.SetColumnWidth(t,i)}EnsureActiveSheet(e=!1){for(let t of this.model.sheets.list)if(t===this.active_sheet){e&&this.ActivateSheetInternal({key:21,id:t.id,force:!0});return}this.ActivateSheetInternal({key:21,index:0})}ActivateSheetInternal(e){let t=this.SelectingArgument(),r=this.ResolveSheet(e)||this.model.sheets.list[0];if(this.active_sheet===r&&!e.force)return;if(!r.visible)throw new Error("cannot activate hidden sheet");this.HideHoverInfo(),this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset;let i=this.active_sheet;this.RemoveAnnotationNodes(),this.active_sheet=r,t?this.RenderSelections():(this.ClearSelection(this.primary_selection),r.selection&&!r.selection.empty&&this.Select(this.primary_selection,new y(r.selection.area.start,r.selection.area.end),r.selection.target));let s=this.active_sheet.annotations;for(let n of s)this.AddAnnotation(n,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.pending_layout_update.has(this.active_sheet.id)?(this.Repaint(!0,!0),this.pending_layout_update.delete(this.active_sheet.id)):this.Repaint(!1,!1),this.grid_events.Publish({type:"sheet-change",deactivate:i,activate:this.active_sheet}),this.tab_bar&&this.tab_bar.Update(),this.layout.scroll_offset=this.active_sheet.scroll_offset,this.formula_bar?.selecting&&requestAnimationFrame(()=>this.formula_bar?.FocusEditor())}ActivateSheetTasks(){if(this.active_sheet.Activate(),this.active_sheet.image&&!this.active_sheet.image.complete){let e=this.active_sheet.image,t=0,r=()=>{e.complete?this.UpdateLayout():t++<5&&setTimeout(()=>r(),10)};r()}}HighlightFreezeArea(){for(let e of[this.layout.corner_selection,this.layout.row_header_selection,this.layout.column_header_selection])e.classList.add("highlight-area"),setTimeout(()=>{e.classList.remove("highlight-area")},400)}QueueLayoutUpdate(e){this.tile_update_pending=!0,e&&(this.scroll_offset_pending=e)}HandleAddressLabelEvent(e){if(e){let t=(n="")=>{let a=n.toLowerCase();for(let o of this.model.sheets.list)if(o.name.toLowerCase()===a)return o.id;return this.active_sheet.id},r=n=>{for(let a of this.model.sheets.list)if(a.id===n)return a;return this.active_sheet},i,s=this.parser.Parse(e);if(s.expression)switch(s.expression.type){case"address":s.expression.sheet_id=t(s.expression.sheet),i=new y(s.expression);break;case"range":s.expression.start.sheet_id=t(s.expression.start.sheet),i=new y(s.expression.start,s.expression.end);break;case"identifier":i=this.model.named_ranges.Get(s.expression.name),i||this.primary_selection.empty||this.SetName(s.expression.name.toUpperCase(),this.primary_selection.area);break;default:break}if(i){let n=r(i.start.sheet_id);if(n.columns>=i.end.column&&n.rows>=i.end.row){this.ExecCommand({key:5,area:i});return}else console.warn("address out of range")}}this.UpdateAddressLabel(),this.Focus()}InitFormulaBar(e,t){this.formula_bar=new Bt(e,this.parser,this.theme,this.model,this.view,this.options,t),this.formula_bar.autocomplete_matcher=this.autocomplete_matcher,this.formula_bar.Subscribe(r=>{switch(r.type){case"address-label-event":this.HandleAddressLabelEvent(r.text);break;case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=2,this.editing_cell={...this.primary_selection.target};break;case"discard":if(this.editing_state=0,this.editing_annotation){this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection);let i=this.editing_annotation.view[this.view_index]?.node;i&&i.focus(),this.editing_annotation=void 0,this.UpdateFormulaBarFormula(),this.DelayedRender();return}this.container&&this.Focus(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.UpdateFormulaBarFormula(),this.DelayedRender();break;case"commit":if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.editing_annotation){let i=this.editing_annotation;this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),i.formula=r.value?this.FixFormula(r.value):"";let s=this.editing_annotation.view[this.view_index]?.node;s&&s.focus(),this.grid_events.Publish({type:"annotation",event:"update",annotation:i}),this.editing_annotation=void 0,this.DelayedRender();return}this.container&&this.Focus(),this.SetInferredType(this.primary_selection,r.value,r.array),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.primary_selection.area),r.event&&this.OverlayKeyDown(r.event);break;case"update":r.dependencies&&this.HighlightDependencies(r.dependencies);break}})}InitOverlayEditor(e){this.container&&(this.overlay_editor=new Gt(this.container,this.parser,this.theme,this.model,this.view,e),this.overlay_editor.UpdateTheme(this.layout.scale),this.overlay_editor.autocomplete_matcher=this.autocomplete_matcher,this.overlay_editor.Subscribe(t=>{switch(t.type){case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=1,this.editing_cell={...this.primary_selection.target};break;case"update":t.dependencies&&this.HighlightDependencies(t.dependencies);break;case"end-selection":this.ClearSelection(this.active_selection),this.DelayedRender();break}}))}DelayedRender(e=!1,t,r=!1){!this.tile_update_pending&&t?this.layout.DirtyArea(t):!this.tile_update_pending&&e&&this.layout.DirtyAll(),this.render_token||(this.render_token=1,ne().then(()=>{this.render_token=0,this.Repaint(e,r)}))}Repaint(e=!1,t=!1,r=!1){if(this.headless)return;if(this.tile_update_pending&&(this.tile_update_pending=!1,this.layout.UpdateTiles(),this.scroll_offset_pending&&(this.layout.scroll_offset=this.scroll_offset_pending,this.scroll_offset_pending=void 0),this.render_tiles=this.layout.VisibleTiles(),this.layout.UpdateAnnotation(this.active_sheet.annotations)),this.layout_token=0,this.tile_renderer.OverflowDirty(t),e)for(let o of this.layout.grid_tiles)for(let l of o)l.dirty=!0;let i=this.render_tiles.start,s=this.render_tiles.end,n=[];for(let o=i.row;o<=s.row;o++)n.push(o);let a=[];for(let o=i.column;o<=s.column;o++)a.push(o);i.row>0&&this.active_sheet.freeze.rows&&n.push(0),i.column>0&&this.active_sheet.freeze.columns&&a.push(0);for(let o of a)for(let l of n){let d=this.layout.grid_tiles[o][l];(e||d.dirty||d.needs_full_repaint)&&(this.tile_renderer.Render(d),d.dirty=d.needs_full_repaint=!1)}this.tile_renderer.RenderHeaders(this.render_tiles,r),this.tile_renderer.RenderCorner(),this.RenderSelections()}MouseMove_RowHeader(e){let t=this.layout.CoordinateToRowHeader(e.offsetY),r=this.layout.OffsetCellAddressToRectangle({row:t.row,column:0});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let i=-1;e.offsetY-r.top<=this.RESIZE_PIXEL_BUFFER&&t.row>0?i=t.row-1:r.bottom-e.offsetY<=this.RESIZE_PIXEL_BUFFER&&(i=t.row),i>=0?this.layout.ResizeCursor("row"):this.cell_resize.row&&(this.cell_resize.row=-1,this.layout.ResizeCursor()),this.cell_resize.row=i}MouseMove_ColumnHeader(e){let t=this.layout.CoordinateToColumnHeader(e.offsetX),r=this.layout.OffsetCellAddressToRectangle({row:0,column:t.column});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let i=-1;e.offsetX-r.left<=this.RESIZE_PIXEL_BUFFER&&t.column>0?i=t.column-1:r.right-e.offsetX<=this.RESIZE_PIXEL_BUFFER&&(i=t.column),i>=0?this.layout.ResizeCursor("column"):this.cell_resize.column&&(this.cell_resize.column=-1,this.layout.ResizeCursor()),this.cell_resize.column=i}MouseDown_RowHeader(e){if(e.button!==0)return;e.stopPropagation(),e.preventDefault();let t=this.layout.CoordinateToRowHeader(e.offsetY),r=this.layout.row_header_cover.getBoundingClientRect(),i={x:r.left,y:r.top};if(this.cell_resize.row>=0){let s=this.cell_resize.row,n=i.y+e.offsetY;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:s,column:-1})){let p=[s];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(s)){let f=this.active_sheet.RealArea(this.primary_selection.area);p=[];for(let m=f.start.row;m<=f.end.row;m++)p.push(m)}this.ExecCommand({key:3,row:p});return}let a=this.layout.RowHeight(s),o=a,l=this.layout.OffsetCellAddressToRectangle({row:s,column:0}),d=i.y+l.bottom;this.layout.ShowTooltip({left:!0,text:`${o}px`,x:Math.round(r.right+10),y:d});let u=[],h=[];for(let p of this.active_sheet.annotations){let f=l.bottom-1;if(!p.scaled_rect||p.scaled_rect.bottom<f)continue;let m=[...this.layout.GetFrozenAnnotations(p)],_=p.view[this.view_index]?.node;_&&m.push(_),f<=p.scaled_rect.top&&p.move_with_cells?u.push({annotation:p,y:p.scaled_rect.top,nodes:m}):f>p.scaled_rect.top&&p.resize_with_cells&&h.push({annotation:p,height:p.scaled_rect.height,nodes:m})}be(this.layout.mask,"row-resize",p=>{let f=Math.max(-a,Math.round(p.offsetY-n));if(f+a!==o){o=f+a,this.layout.SetRowHeight(s,o),this.layout.UpdateTooltip({text:`${o}px`,y:d+f});for(let{annotation:m,y:_}of u)m.scaled_rect&&(m.scaled_rect.top=_+f);for(let{annotation:m,height:_}of h)m.scaled_rect&&(m.scaled_rect.height=_+f);requestAnimationFrame(()=>{for(let{annotation:m,nodes:_}of h)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);for(let{annotation:m,nodes:_}of u)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);this.layout.UpdateTileHeights(!0,s),this.Repaint(!1,!0),this.layout.UpdateAnnotation(this.active_sheet.annotations)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let p=[s];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(s)){let f=this.active_sheet.RealArea(this.primary_selection.area);p=[];for(let m=f.start.row;m<=f.end.row;m++)p.push(m)}this.layout.SetRowHeight(s,a),this.ExecCommand({key:3,row:p,height:o/this.scale});for(let{annotation:f}of u)f.scaled_rect&&(f.layout=this.layout.RectToAnnotationLayout(f.scaled_rect));for(let{annotation:f}of h){f.scaled_rect&&(f.layout=this.layout.RectToAnnotationLayout(f.scaled_rect));let m=f.view[this.view_index];m&&m.resize_callback&&m.resize_callback.call(void 0)}})})}else{let s=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),e.shiftKey&&!s.empty){let n=s.target;this.Select(s,new y(s.target,t,!0),void 0,!0),t=n}else this.Select(s,new y(t),{column:0,row:t.row});this.RenderSelections(),be(this.layout.mask,[],n=>{let a=this.layout.CoordinateToRowHeader(n.offsetY-i.y),o=new y(a,t,!0);(s.empty||!o.Equals(s.area))&&(this.Select(s,o,void 0,!0),this.RenderSelections())},()=>{})}}MouseDown_ColumnHeader(e){if(e.button!==0)return;e.stopPropagation(),e.preventDefault();let t=this.layout.CoordinateToColumnHeader(e.offsetX),r=this.layout.column_header_cover.getBoundingClientRect(),i={x:r.left,y:r.top};if(this.cell_resize.column>=0){let s=this.cell_resize.column,n=i.x+e.offsetX;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:-1,column:s})){let p=[s];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(s)){let f=this.active_sheet.RealArea(this.primary_selection.area);p=[];for(let m=f.start.column;m<=f.end.column;m++)p.push(m)}this.ExecCommand({key:4,column:p});return}let a=this.layout.ColumnWidth(s),o=a,l=this.layout.OffsetCellAddressToRectangle({row:0,column:s}),d=i.x+l.right;this.layout.ShowTooltip({up:!0,text:`${o}px`,x:d,y:Math.round(r.bottom+10)});let u=[],h=[];for(let p of this.active_sheet.annotations){let f=l.right-1;if(!p.scaled_rect||p.scaled_rect.right<f)continue;let m=[...this.layout.GetFrozenAnnotations(p)],_=p.view[this.view_index]?.node;_&&m.push(_),f<=p.scaled_rect.left&&p.move_with_cells?u.push({annotation:p,x:p.scaled_rect.left,nodes:m}):f>p.scaled_rect.left&&p.resize_with_cells&&h.push({annotation:p,width:p.scaled_rect.width,nodes:m})}be(this.layout.mask,"column-resize",p=>{let f=Math.max(-a,Math.round(p.offsetX-n));if(f+a!==o){o=f+a,this.layout.UpdateTooltip({text:`${o}px`,x:d+f}),this.layout.SetColumnWidth(s,o);for(let{annotation:m,x:_}of u)m.scaled_rect&&(m.scaled_rect.left=_+f);for(let{annotation:m,width:_}of h)m.scaled_rect&&(m.scaled_rect.width=_+f);requestAnimationFrame(()=>{for(let{annotation:m,nodes:_}of h)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);for(let{annotation:m,nodes:_}of u)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);this.layout.UpdateTileWidths(!0,s),this.Repaint(!1,!0)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let p=[s];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(s)){let f=this.active_sheet.RealArea(this.primary_selection.area);for(let m=f.start.column;m<=f.end.column;m++)p.push(m)}this.ExecCommand({key:4,column:p,width:o/this.scale});for(let{annotation:f}of u)f.scaled_rect&&(f.layout=this.layout.RectToAnnotationLayout(f.scaled_rect));for(let{annotation:f}of h){f.scaled_rect&&(f.layout=this.layout.RectToAnnotationLayout(f.scaled_rect));let m=f.view[this.view_index];m&&m.resize_callback&&m.resize_callback.call(void 0)}})})}else{let s=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),e.shiftKey&&!s.empty){let n=s.target;this.Select(s,new y(s.target,t,!0),void 0,!0),t=n}else this.Select(s,new y(t),{row:0,column:t.column});this.RenderSelections(),be(this.layout.mask,[],n=>{let a=this.layout.CoordinateToColumnHeader(n.offsetX-i.x),o=new y(a,t,!0);(s.empty||!o.Equals(s.area))&&(this.Select(s,o,void 0,!0),this.RenderSelections())})}}HoverCell(e,t){let r=this.active_sheet.cells.GetCell(e,!1);if(r?.table&&r.table.area.start.row===e.row?(this.hover_data.table_header=!0,this.layout.ShowTableSortButton(r.table,e.column-r.table.area.start.column,e)):(this.hover_data.table_header&&this.layout.HideTableSortButton(),this.hover_data.table_header=!1),r?.merge_area){let i=r.merge_area;e=i.start,r=this.active_sheet.cells.GetCell(e,!1),e={row:i.start.row,column:i.end.column}}if(r?.note){let i=this.options.markdown?xe.instance.HTML(xe.instance.Parse(r.note)):void 0;this.layout.ShowNote(r.note,e,t,i),this.hover_data.note=!0}else this.hover_data.note&&(this.layout.HideNote(),this.hover_data.note=!1);r?.hyperlink?(this.layout.ShowTitle("Link: "+r.hyperlink,e),this.hover_data.link=!0,this.hover_data.cell=r):this.hover_data.link&&(this.layout.HideTitle(),this.hover_data.cell=void 0),this.hover_data.address={...e}}HideHoverInfo(){this.layout.HideTitle(),this.layout.HideTooltip(),this.hover_data.note=this.hover_data.link=!1,this.hover_data.cell=void 0,this.hover_data.pointer&&this.layout.grid_cover.classList.remove("link-pointer"),this.hover_data.pointer=!1}MouseMove_Grid(e){e.stopPropagation(),e.preventDefault(),(this.cell_resize.row>=0||this.cell_resize.column>=0)&&this.layout.ResizeCursor();let t={x:e.offsetX,y:e.offsetY},r;if(this.overlay_editor?.editing||(r=this.layout.PointToAddress_Grid(t),(!this.hover_data.address||this.hover_data.address.row!==r.row||this.hover_data.address.column!==r.column)&&this.HoverCell(r,e)),this.hover_data.link&&r&&(this.hover_data.point=t,this.hover_data.handler||(this.hover_data.handler=requestAnimationFrame(()=>{let s=this.hover_data.address&&this.hover_data.point&&this.hover_data.cell&&this.PointInTextPart(this.hover_data.address,this.hover_data.point,this.hover_data.cell);s!==!!this.hover_data.pointer&&(this.hover_data.pointer=s,s?this.layout.grid_cover.classList.add("link-pointer"):this.layout.grid_cover.classList.remove("link-pointer")),this.hover_data.handler=void 0}))),this.primary_selection.empty||!this.selection_renderer.nub_rectangle){this.nub_select_flag&&(this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=!1);return}let i=this.selection_renderer.nub_rectangle.Contains(e.offsetX,e.offsetY);i!==this.nub_select_flag&&(i?this.layout.grid_cover.classList.add("nub-select"):this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=i)}ClearDoubleClick(){this.double_click_data.address=void 0}IsDoubleClick(e,t=300){if(this.double_click_data.address&&this.double_click_data.address.row===e.row&&this.double_click_data.address.column===e.column)return clearTimeout(this.double_click_data.timeout),this.double_click_data.address=void 0,this.double_click_data.timeout=void 0,!0;this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.address={...e},this.double_click_data.timeout=window.setTimeout(()=>{this.double_click_data.address=void 0,this.double_click_data.timeout=void 0},t)}PointInTextPart(e,t,r){let i=this.layout.CellAddressToRectangle(e);r.merge_area&&(i=i.Combine(this.layout.CellAddressToRectangle(r.merge_area.end)));let s=t.x-i.left,n=t.y-i.top,a=r.renderer_data?.text_data?.strings||[];for(let o of a)for(let l of o)if(typeof l.left=="number"&&typeof l.top=="number"&&typeof l.width=="number"&&typeof l.height=="number"&&s>=l.left&&n>=l.top&&s<=l.left+l.width&&n<=l.top+l.height)return!0;return!1}MouseDown_Grid(e){if(e.button!==0)return;e.stopPropagation(),e.preventDefault();let t=this.SelectingArgument();!t&&this.additional_selections.length&&this.ClearAdditionalSelections(),(!t||!this.formula_bar?.selecting)&&this.Focus(),this.overlay_editor?.editing&&!this.overlay_editor?.selecting&&this.DismissEditor();let r={x:e.offsetX,y:e.offsetY},i=this.layout.PointToAddress_Grid(r),s=t?this.active_selection:this.primary_selection;if(!t&&this.IsDoubleClick(i)){ie.is_mobile&&this.overlay_editor?.edit_node?.focus(),this.OverlayEditCell({target:i,area:new y(i)},!1);return}let n=this.layout.grid_cover.getBoundingClientRect(),a={x:n.left,y:n.top},o=[],l;if(e.shiftKey&&!s.empty){let u=s.target;this.Select(s,new y(i,s.target,!0),void 0,!0),i=u}else if(this.nub_select_flag)i=s.area.TopLeft(),o.push("nub-select"),l=this.active_sheet.RealArea(s.area);else{let u=i,h=this.active_sheet.CellData(u);if(h.merge_area&&(u=h.merge_area.start,h=this.active_sheet.CellData(h.merge_area.start)),h.hyperlink&&this.PointInTextPart(u,r,h)){let p=h.hyperlink;ne().then(()=>{this.grid_events.Publish({type:"cell-event",data:{type:"hyperlink",data:p}})}),this.ClearDoubleClick();return}if(h.click_function){let p=this.layout.CellAddressToRectangle(u);h.merge_area&&(p=p.Combine(this.layout.CellAddressToRectangle(h.merge_area.end)));let f=h.click_function.call(this,{cell:h,x:r.x-p.left,y:r.y-p.top,width:p.width,height:p.height,scale:this.layout.scale});if(f.value&&this.ExecCommand({key:6,value:f.value,area:u}),f.block_selection){this.ClearDoubleClick(),!this.primary_selection.empty&&this.primary_selection.target.row===u.row&&this.primary_selection.target.column===u.column&&this.UpdateFormulaBarFormula();return}}this.Select(s,new y(i),i)}this.RenderSelections(),t&&this.UpdateSelectedArgument(s);let d=this.layout.CellAddressToRectangle({row:0,column:0}).Combine(this.layout.CellAddressToRectangle({row:this.active_sheet.rows-1,column:this.active_sheet.columns-1})).Expand(-1,-1);be(this.layout.mask,o,u=>{let h={x:u.offsetX-a.x,y:u.offsetY-a.y},p=d.Clamp(h.x,h.y),f=this.layout.PointToAddress_Grid(p,!0),m=this.layout.scroll_reference_node,_=!1;this.container&&this.options.scrollbars&&(h.x<m.scrollLeft?(m.scrollLeft-=25,_=!0):h.x>m.scrollLeft+this.container.clientWidth&&(m.scrollLeft+=25,_=!0),h.y<m.scrollTop?(m.scrollTop-=25,_=!0):h.y>m.scrollTop+this.container.clientHeight&&(m.scrollTop+=25,_=!0),_&&(n=this.layout.grid_cover.getBoundingClientRect(),a.x=n.left+document.body.scrollLeft,a.y=n.top+document.body.scrollTop));let b=new y(f,i,!0);if(l&&(b=l.Clone(),b.ConsumeAddress(f),b.rows!==l.rows&&b.columns!==l.columns)){let g={rows:f.row>l.end.row?f.row-l.end.row:l.start.row-f.row,columns:f.column>l.end.column?f.column-l.end.column:l.start.column-f.column};g.rows>=g.columns?b=new y({row:b.start.row,column:l.start.column},{row:b.end.row,column:l.end.column}):b=new y({row:l.start.row,column:b.start.column},{row:l.end.row,column:b.end.column})}(s.empty||!b.Equals(s.area))&&(this.Select(s,b,void 0,!0),this.RenderSelections(),t?this.UpdateSelectedArgument(s):!s.empty&&!s.area.entire_sheet&&(s.area.entire_column?this.UpdateAddressLabel(void 0,s.area.columns+"C"):s.area.entire_row?this.UpdateAddressLabel(void 0,s.area.rows+"R"):s.area.count>1?this.UpdateAddressLabel(void 0,s.area.rows+"R x "+s.area.columns+"C"):this.UpdateAddressLabel(s)))},()=>{this.UpdateAddressLabel(),t?this.overlay_editor?.editing||this.select_argument||this.formula_bar&&this.formula_bar.FocusEditor():l&&this.RecycleNubArea(s.area,l)})}Transpose(e){let t=[],r=e.length,i=e[0].length;for(let s=0;s<i;s++){t[s]=[];for(let n=0;n<r;n++)t[s][n]=e[n][s]}return t}RecycleNubArea(e,t){if(e.Equals(t))return;let r=[];for(let u=0;u<t.rows;u++){r[u]=[];for(let h=0;h<t.columns;h++){let p={row:t.start.row+u,column:t.start.column+h};r[u][h]=this.active_sheet.CellData(p)}}if(r[0][0].area&&r[0][0].area.Equals(t)){this.ExecCommand({key:6,value:r[0][0].value,array:!0,area:e});return}let i=[],s=[],n=t.columns,a=e.rows,o=!1,l=!1;e.columns===t.columns?o=e.start.row<t.start.row:(n=t.rows,a=e.columns,o=e.start.column<t.start.column,r=this.Transpose(r),l=!0);for(let u=0;u<a;u++)i[u]=[],s[u]=[];for(let u=0;u<n;u++){let h=0;if(r.length>1){h=1;let p=[],f=[];for(let m=0;m<r.length;m++){let _=r[m][u];_.ValueIsNumber()&&(f.push(m),p.push(_.value))}if(p.length>1){let m=p.slice(1).map((_,b)=>_-p[b]);m.every(_=>_===m[0])&&(h=m[0])}p.length&&(h+=p[p.length-1]-p[0])}for(let p=0;p<r.length;p++){let f,m=r[p][u];if(m.ValueIsFormula()){let w=this.parser.Parse(m.value);w.expression&&w.full_reference_list?.length&&(f=w.expression)}let _=0,b=p,g=r.length,x=0,v=h;o&&(b=a-r.length+p,g=-r.length,v=-h);for(let w=b;w>=0&&w<a;w+=g,_+=g,x+=v){if(f)i[w][u]="="+this.parser.Render(f,{offset:{rows:_,columns:0}});else{let S=r[p][u];S.ValueIsNumber()?i[w][u]=S.value+x:i[w][u]=S.value}s[w][u]=r[p][u].style||{}}}}let d=[{key:6,value:l?this.Transpose(i):i,array:!1,area:e}];l&&(s=this.Transpose(s));for(let u=0;u<s.length;u++)for(let h=0;h<s[u].length;h++)d.push({key:7,area:{row:u+e.start.row,column:h+e.start.column},style:s[u][h],delta:!1});this.ExecCommand(d)}UpdateSelectedArgument(e){let t=this.active_sheet.CellData(e.area.start),r=new y(t.merge_area?t.merge_area.start:e.target),i=this.model.named_ranges.MatchSelection(e.area,r);if(!i&&(i=e.area.spreadsheet_label,t.merge_area&&t.merge_area.Equals(e.area)&&(i=y.CellAddressToLabel(t.merge_area.start)),this.active_sheet.id!==this.editing_cell.sheet_id)){let s=this.active_sheet.name;dt.test(s)?i=`'${s}'!${i}`:i=`${s}!${i}`}this.overlay_editor?.editing&&this.overlay_editor.selecting?this.overlay_editor.InsertReference(i,0):this.formula_bar&&this.formula_bar.selecting?this.formula_bar.InsertReference(i,0):this.select_argument&&this.grid_events.Publish({type:"alternate-selection",selection:this.active_selection})}SelectingArgument(){return this.overlay_editor?.editing&&this.overlay_editor?.selecting||this.formula_bar&&this.formula_bar.selecting||this.select_argument}OverlayKeyDown(e){let t=!1;if(this.overlay_editor&&this.overlay_editor.editing)switch(t=!0,this.overlay_editor.HandleKeyDown(e)){case 1:return;case 3:this.editing_state=0,this.DismissEditor(),this.DelayedRender();return;case 2:if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.overlay_editor?.selection){let l=this.overlay_editor?.edit_node.textContent||void 0,d=e.key==="Enter"&&e.ctrlKey&&e.shiftKey;this.SetInferredType(this.overlay_editor.selection,l,d)}this.DismissEditor(),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.overlay_editor?.selection.area||void 0);break}let r=this.SelectingArgument();if(this.formula_bar&&this.formula_bar.focused&&!r||this.selected_annotation&&!r)return;let i=r?this.active_selection:this.primary_selection,s={rows:0,columns:0},n=!1,a=!1;if(e.ctrlKey||ie.is_mac&&e.metaKey){switch(e.key){case"ArrowDown":case"Down":s.rows++;break;case"ArrowUp":case"Up":s.rows--;break;case"ArrowLeft":case"Left":s.columns--;break;case"ArrowRight":case"Right":s.columns++;break;case"Delete":case"Del":{e.stopPropagation(),e.preventDefault();for(let o=0;o<this.model.sheets.length;o++)if(this.model.sheets.list[o]===this.active_sheet){this.DeleteSheet(o);break}return}break;case"/":e.stopPropagation(),e.preventDefault(),this.SelectArray();break;default:if(e.shiftKey)return}if(s.columns||s.rows)if(e.stopPropagation(),e.preventDefault(),!i.empty&&(s.columns||s.rows)){if(this.BlockSelection(i,!!e.shiftKey,s.columns,s.rows))return}else return;else{let o={},l=this.primary_selection.empty?{}:this.active_sheet.CellData(this.primary_selection.target).style||{};switch(e.key.toLowerCase()){case"b":o.bold=!l.bold;break;case"i":o.italic=!l.italic;break;case"u":o.underline=!l.underline;break;case"a":this.SelectAll();break;case"0":if(!e.altKey)return;this.ClearSelection(this.primary_selection),this.RenderSelections();break;default:e.key;return}Object.keys(o).length&&this.ApplyStyle(void 0,o)}}else switch(e.key){case"Tab":e.shiftKey?s.columns--:s.columns++,n=!0;break;case"Enter":e.shiftKey?s.rows--:s.rows++,n=!0;break;case"ArrowDown":case"Down":s.rows++,a=e.shiftKey;break;case"ArrowUp":case"Up":s.rows--,a=e.shiftKey;break;case"ArrowLeft":case"Left":s.columns--,a=e.shiftKey;break;case"ArrowRight":case"Right":s.columns++,a=e.shiftKey;break;case"Delete":case"Del":i.empty||this.DeleteSelection(i);break;case"PageUp":case"PageDown":if(e.shiftKey){this.NextSheet(e.key==="PageUp"?-1:1);break}return;case"Control":case"Shift":case"Alt":return;default:i.empty||this.OverlayEditCell(i,!0,e);return}e.stopPropagation(),e.preventDefault(),(s.rows||s.columns)&&this.AdvanceSelection(s,i,n,a,!t)}SelectArray(){if(this.primary_selection.empty)return;let e=this.active_sheet.CellData(this.primary_selection.target);!e||!e.area||(this.Select(this.primary_selection,e.area,e.area.start),this.RenderSelections())}RenderSelections(e=!0){let t=this.hide_selection?!1:!this.editing_state||this.editing_cell.sheet_id===this.active_sheet.id;this.selection_renderer.RenderSelections(t,e)}BlockSelection(e,t,r,i,s=!0){if(e.empty)return!1;let n={...e.target};i>0?n.row=Math.max(n.row,e.area.end.row):i<0&&(n.row=Math.min(n.row,e.area.start.row)),r>0?n.column=Math.max(n.column,e.area.end.column):r<0&&(n.column=Math.min(n.column,e.area.start.column));let a=this.active_sheet.cells,o=a.GetCell(e.target,!1);if(!o||o.type===0&&!o.area)return!1;let l={...n};for(;;){let d={row:l.row+i,column:l.column+r};if(d.column<0||d.row<0||d.column>=this.active_sheet.columns||d.row>=this.active_sheet.rows)break;let u=!1;if(i)for(let h=e.area.start.column;!u&&h<=e.area.end.column;h++)o=a.GetCell({row:d.row,column:h},!1),u=u||!!o&&(o.type!==0||!!o.area),!u&&o&&o.merge_area&&(o=a.GetCell(o.merge_area.start,!1),u=u||!!o&&(o.type!==0||!!o.area));else for(let h=e.area.start.row;!u&&h<=e.area.end.row;h++)o=a.GetCell({row:h,column:d.column},!1),u=u||!!o&&(o.type!==0||!!o.area),!u&&o&&o.merge_area&&(o=a.GetCell(o.merge_area.start,!1),u=u||!!o&&(o.type!==0||!!o.area));if(!u)break;l=d}if(t){i?(n.row=e.target.row,n.column=e.area.start.column,l.column=e.area.end.column):(n.column=e.target.column,n.row=e.area.start.row,l.row=e.area.end.row);let d=new y(n,l,!0);this.Select(e,d,e.target,!0)}else this.Select(e,new y(l));return this.ScrollIntoView(l),this.SelectingArgument()&&this.UpdateSelectedArgument(e),s&&this.DelayedRender(),!0}DeleteSelection(e){if(e.empty)return;let t=this.active_sheet.RealArea(e.area);this.ExecCommand({key:11,area:t})}SetInferredType(e,t,r=!1,i=!0){let s=e.target||e.area.start,n=this.active_sheet.CellData(s);if(n.area){if(!r&&n.area.count>1||!e.area||!e.area.Equals(n.area)){this.Error(2);return}}else if(r){let u=!1;if(this.active_sheet.cells.Apply(e.area,h=>{h.area&&(u=!0)},!1),u){this.Error(2);return}}if(n.validation&&n.validation.error){let u;if(n.validation.type===0?u=n.validation.list:n.validation.type===2&&(u=this.GetValidationRange(n.validation.area)),u&&u.length){let h=!1;if(t){let p=t.toUpperCase();for(let f of u)if(f&&f.toString().toUpperCase()===p){t=f.toString(),h=!0;break}}if(!h){this.Error(3);return}}}n.merge_area&&(s=n.merge_area.start);let a=typeof t=="string"&&t.trim()[0]==="=",o=[];if(a&&(t=this.FixFormula(t||""),!this.active_sheet.HasCellStyle(s))){let u=this.parser.Parse(t);if(u){if(u.expression?.type==="call"&&(!n.style||!n.style.number_format||D.Equals(n.style.number_format,"General"))){let h=u.expression.name.toLowerCase(),p;switch(h){case"today":p="Short Date";break;case"now":p="Timestamp";break}p&&o.push({key:7,area:r?e.area:s,style:{number_format:p},delta:!0})}if(u.dependencies){let h=u.dependencies;for(let p of Object.keys(h.addresses)){let f=h.addresses[p];if(this.active_sheet.HasCellStyle({...f})){let m=this.active_sheet.CellData({...f});if(m.style&&m.style.number_format){let _={number_format:m.style.number_format};o.push({key:7,area:r?e.area:s,style:_,delta:!0})}break}}}}}let l=this.parser.Parse(t||"").expression;l?.type==="group"&&l.elements.length===1&&l.elements[0].type==="complex"&&(l=l.elements[0]);let d=l&&l.type==="complex"?{type:7,value:{real:l.real,imaginary:l.imaginary}}:ye.TryParse(t);if(!a&&d.type===3){let u="",h=d.hints||0;(!n.style||!n.style.number_format||D.Equals(n.style.number_format,"General"))&&(h&64?u="Short Date":h&2?u="Exponential":h&4?u="Percent":h&8?u="Currency":(h&16||h&32)&&(u="Accounting")),u&&o.push({key:7,area:r?e.area:s,style:{number_format:u},delta:!0})}if(o.push({key:6,area:r?e.area:s,array:r,value:a?this.UntranslateFunction(t||""):d.value}),i)this.ExecCommand(o);else return o}FixFormula(e){if(e.trim()[0]!=="=")return e;e=e.replace(/^\s+/,"");let t=!1,r=!1,i=0,s=!1,n=e.length;for(let a=0;a<n;a++){let o=e[a];if(!s)switch(o){case'"':t?e[a+1]==='"'?a++:t=!1:r||(t=!0);break;case"'":r?r=!1:t||(r=!0);break;case"\\":s=!0;break;case"(":!t&&!r&&i++;break;case")":!t&&!r&&i--;break}}for(t?e+='"':r&&(e+="'");i>0;)e+=")",i--;return e=this.NormalizeFormula(e),e}NormalizeFormula(e){let t=this.parser.Parse(e);return t.error&&console.warn(t.error),t&&t.expression&&(this.parser.Walk(t.expression,r=>{switch(r.type){case"call":r.name=this.autocomplete_matcher.NormalizeIdentifier(r.name)||r.name;break;case"identifier":this.model.named_ranges.Get(r.name)&&(r.name=r.name.toUpperCase());break}return!0}),e="="+this.parser.Render(t.expression,{missing:""})),e}DismissEditor(){this.overlay_editor?.active_cell&&(this.overlay_editor.active_cell.editing=!1,this.overlay_editor.active_cell.render_clean=[],this.DelayedRender(void 0,this.overlay_editor.selection.area)),this.editing_state=0,this.Focus(),this.overlay_editor?.CloseEditor(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection)}NormalizeCellValue(e){let t=e.value;if(e.ValueIsNumber()&&e.style&&e.style.number_format)if(D.Get(e.style.number_format).date_format){let i=Pe(e.value),s=i.getUTCHours()||i.getUTCMinutes()||i.getUTCSeconds()?"Timestamp":"Short Date";t=D.Get(s).Format(t)}else if(/(?:%|percent)/i.test(e.style.number_format)){let i=0,s=e.value.toString().match(/\.(.*?)$/);s&&s[1]&&(i=Math.max(0,s[1].length-2)),t=(e.value*100).toFixed(i)+"%",T.decimal_separator===","&&(t=t.replace(/\./,","))}else t&&T.decimal_separator===","&&(t=e.value.toString().replace(/\./,","));else{if(e.ValueIsBoolean())return e.value.toString().toUpperCase();e.ValueIsNumber()?t&&T.decimal_separator===","&&(t=e.value.toString().replace(/\./,",")):e.ValueIsComplex()?(e.value.imaginary?e.value.real?t=`${e.value.real.toString()}${e.value.imaginary<0?" - ":" + "}${e.value.imaginary===1||e.value.imaginary===-1?"":Math.abs(e.value.imaginary).toString()}i`:e.value.imaginary===1?t="i":e.value.imaginary===-1?t="-i":t=e.value.imaginary.toString()+"i":t=e.value.real.toString(),T.decimal_separator===","&&(t=t.replace(/\./,","))):e.ValueIsFormula()&&(t=this.TranslateFunction(e.value))}return t}IsNumeric(e){return e>=48&&e<=57||e===this.decimal_separator_code||e===45||e===43}OverlayEditCell(e,t=!0,r){if(!this.options.in_cell_editor)return;let i=e.target||e.area.start,s=this.active_sheet.CellData(i),n;if(this.HideHoverInfo(),s.merge_area?(n=this.layout.OffsetCellAddressToRectangle(s.merge_area.start).Combine(this.layout.OffsetCellAddressToRectangle(s.merge_area.end)),i=s.merge_area.start,s=this.active_sheet.CellData(i)):n=this.layout.OffsetCellAddressToRectangle(i),s.style?.locked){console.info("cell is locked for editing");return}n=n.Shift(this.layout.header_size.width,this.layout.header_size.height);let a=s.value;t?(s.type===3||s.rendered_type===3)&&s.style&&s.style.number_format&&/(?:%|percent)/i.test(s.style.number_format)&&(!r||this.IsNumeric(r.key.charCodeAt(0)))?a="%":a=void 0:a=this.NormalizeCellValue(s),this.overlay_editor?.Edit(e,n.Expand(-1,-1),s,a,r),s.editing=!0,s.render_clean=[],this.DelayedRender(!1,e.area)}BoundAddressArea(e,t){e.column>t.end.column?(e.row=this.StepVisibleRows(e.row,1),e.row>t.end.row&&(e.row=t.start.row),e.column=t.start.column):e.column<t.start.column?(e.row=this.StepVisibleRows(e.row,-1),e.row<t.start.row&&(e.row=t.end.row),e.column=t.end.column):e.row>t.end.row?(e.column=this.StepVisibleColumns(e.column,1),e.column>t.end.column&&(e.column=t.start.column),e.row=t.start.row):e.row<t.start.row&&(e.column=this.StepVisibleColumns(e.column,-1),e.column<t.start.column&&(e.column=t.end.column),e.row=t.end.row)}StepVisibleRows(e,t){if(t>0)for(let r=0;r<t;r++)this.layout.RowHeight(++e)||r--;else if(t<0)for(let r=0;r>t;r--)--e>=0&&!this.layout.RowHeight(e)&&r++;return e}StepVisibleColumns(e,t){if(t>0)for(let r=0;r<t;r++)this.layout.ColumnWidth(++e)||r--;else if(t<0)for(let r=0;r>t;r--)--e>=0&&!this.layout.ColumnWidth(e)&&r++;return e}EnsureAddress(e,t=8){let r=!1;if(this.options.expand){if(e.row!==1/0&&e.row>=this.active_sheet.rows){let i=this.active_sheet.rows;for(;e.row>=i;)i+=t;this.active_sheet.cells.EnsureRow(i),r=!0}if(e.column!==1/0&&e.column>=this.active_sheet.columns){let i=this.active_sheet.columns;for(;e.column>=i;)i+=t;this.active_sheet.cells.EnsureColumn(i),r=!0}r&&(this.layout.UpdateTiles(),this.layout.UpdateContentsSize(),this.Repaint(!0,!0))}return r}AdvanceSelection(e,t,r=!1,i=!1,s=!0){let n=this.SelectingArgument();if(t.empty)if(n){let a={row:Math.max(0,this.StepVisibleRows(this.primary_selection.target.row,e.rows)),column:Math.max(0,this.StepVisibleColumns(this.primary_selection.target.column,e.columns))};this.Select(t,new y(a))}else this.Select(t,new y({row:0,column:0}));else{let a=this.active_sheet.CellData(t.target);if(a.merge_area&&r&&(r=!a.merge_area.Equals(t.area)),r&&t.area.count>1){let o=this.active_sheet.RealArea(t.area),l=t.target;for(;;){l.row=this.StepVisibleRows(l.row,e.rows),l.column=this.StepVisibleColumns(l.column,e.columns),this.BoundAddressArea(l,o);let d=this.active_sheet.CellData(l);if(!d.merge_area||d.merge_area.start.row===l.row&&d.merge_area.start.column===l.column)break}this.Select(t,o,l)}else if(i&&t&&t.target){let o=t.area,l=t.target,d=o.start,u=o.end,h={row:1/0,column:1/0};if(e.columns&&(o.columns===1?e.columns>0?(u.column=this.StepVisibleColumns(u.column,1),h.column=u.column):(d.column=this.StepVisibleColumns(d.column,-1),h.column=d.column):o.end.column>l.column?(u.column=this.StepVisibleColumns(u.column,e.columns),h.column=u.column):o.start.column<l.column&&(d.column=this.StepVisibleColumns(d.column,e.columns),h.column=d.column),u.column=Math.max(0,u.column),d.column=Math.max(0,d.column)),e.rows&&(o.rows===1?e.rows>0?(u.row=this.StepVisibleRows(u.row,1),h.row=u.row):(d.row=this.StepVisibleRows(d.row,-1),h.row=d.row):o.end.row>l.row?(u.row=this.StepVisibleRows(u.row,e.rows),h.row=u.row):o.start.row<l.row&&(d.row=this.StepVisibleRows(d.row,e.rows),h.row=d.row),u.row=Math.max(0,u.row),d.row=Math.max(0,d.row)),this.options.expand){for(let p of[d,u,h])p.row!==1/0&&(p.row=Math.max(0,p.row)),p.column!==1/0&&(p.column=Math.max(0,p.column));this.EnsureAddress(u)&&(s=!0),this.ScrollIntoView(h),this.Select(t,new y(d,u),void 0,!0)}else{for(let p of[d,u,h])p.row!==1/0&&(p.row=Math.max(0,Math.min(p.row,this.active_sheet.rows-1))),p.column!==1/0&&(p.column=Math.max(0,Math.min(p.column,this.active_sheet.columns-1)));this.ScrollIntoView(h),this.Select(t,new y(d,u),void 0,!0)}}else{let o=t.target;a.merge_area?(e.columns<0?o.column=this.StepVisibleColumns(a.merge_area.start.column,-1):e.columns>0&&(o.column=this.StepVisibleColumns(a.merge_area.end.column,1)),e.rows<0?o.row=this.StepVisibleRows(a.merge_area.start.row,-1):e.rows>0&&(o.row=this.StepVisibleRows(a.merge_area.end.row,1))):(o.row=this.StepVisibleRows(o.row,e.rows),o.column=this.StepVisibleColumns(o.column,e.columns)),this.EnsureAddress(o)&&(s=!0),this.Select(t,new y({row:Math.min(Math.max(0,o.row),this.active_sheet.rows-1),column:Math.min(Math.max(0,o.column),this.active_sheet.columns-1)})),this.RenderSelections(),this.ScrollIntoView(t.target)}}this.SelectingArgument()&&this.UpdateSelectedArgument(t),s&&this.DelayedRender()}HighlightDependencies(e,t=!0){let r=0;e:for(let i of e)if((i.start.row===1/0||i.start.row<this.active_sheet.rows)&&(i.start.column===1/0||i.start.column<this.active_sheet.columns)){i=this.active_sheet.RealArea(i);let s=i.spreadsheet_label;if(this.additional_selections[r]&&this.additional_selections[r].area.spreadsheet_label===s)r++;else{for(let n=0;n<r;n++)if(this.additional_selections[n].area.spreadsheet_label===s&&this.additional_selections[n].area.start.sheet_id===i.start.sheet_id)continue e;this.additional_selections[r++]={target:i.start,area:i}}}this.additional_selections.splice(r),t&&this.RenderSelections(!1)}AddAdditionalSelection(e,t){let r=t.spreadsheet_label;return this.additional_selections.some(i=>i.area.spreadsheet_label===r)?!1:(this.additional_selections.push({target:e,area:t}),!0)}ClearAdditionalSelections(){this.additional_selections.splice(0,this.additional_selections.length)}ClearSelection(e){this.Select(e)}HideGridSelection(){this.UpdateAddressLabel(void 0,"");let e=this.selected_annotation&&this.selected_annotation.formula?this.selected_annotation.formula:"";this.UpdateFormulaBarFormula(e),this.layout.ShowSelections(!1)}ShowGridSelection(){this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.layout.ShowSelections(!0)}Select(e,t,r,i=!1){if(e.empty||i&&(r=e.target),t){let s=this.active_sheet.RealArea(t);r||(r=s.start);let n=!0;for(;n;)n=!1,this.active_sheet.cells.Apply(s,l=>{l.merge_area&&!s.ContainsArea(l.merge_area)&&(t.ConsumeArea(l.merge_area),s=this.active_sheet.RealArea(t),n=!0)});e.area=new y({...t.start,sheet_id:this.active_sheet.id},t.end),r&&(e.target={...r,sheet_id:this.active_sheet.id}),e.empty=!1;let a=this.active_sheet.CellData(e.target),o="";a.formatted&&(typeof a.formatted=="string"?o=a.formatted:o=a.formatted.map(l=>l.flag===1||l.flag===6?"":l.text).join("")),this.overlay_editor?.UpdateCaption(o)}else e.empty=!0;e===this.primary_selection&&(ie.is_edge&&this.Focus(),this.grid_events.Publish({type:"selection",selection:this.primary_selection}),this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.formula_bar&&(this.formula_bar.target_address={...this.primary_selection.target}),this.options.stats&&this.UpdateStats())}UpdateFormulaBarFormula(e){if(this.formula_bar){if(e){this.formula_bar.formula=e;return}if(this.primary_selection.empty)this.formula_bar.formula="";else{let t=this.active_sheet.CellData(this.primary_selection.target),r=t.merge_area||t.area;r&&(r.start.column!==this.primary_selection.target.column||r.start.row!==this.primary_selection.target.row)&&(t=this.active_sheet.CellData(r.start)),this.formula_bar.editable=!t.style?.locked;let i=this.NormalizeCellValue(t);if(t.validation&&!t.style?.locked){let s;t.validation.type===0?s=t.validation.list:t.validation.type===2&&(s=this.GetValidationRange(t.validation.area)),s&&s.length&&this.layout.ShowDropdownCaret(t.merge_area||new y(this.primary_selection.target),s,t.value)}else this.layout.HideDropdownCaret();t.area?this.formula_bar.formula="{"+(i||"")+"}":this.formula_bar.formula=typeof i<"u"?i.toString():""}}}RenderStats(e){if(!Array.isArray(e))return[];let t=0,r=0,i={real:0,imaginary:0};for(let s of e)for(let n of s)typeof n=="number"?(i.real+=n,r++):ve(n)&&(i.real+=n.real,i.imaginary+=n.imaginary,r++),typeof n<"u"&&t++;if(t>1)if(r>0){let s=D.Get("General");if(i.imaginary){let n={real:i.real/r,imaginary:i.imaginary/r};return[{label:"Count",value:t.toString()},{label:"Sum",value:X.FormatPartsAsText(s.FormatComplex(i))},{label:"Average",value:X.FormatPartsAsText(s.FormatComplex(n))}]}else return[{label:"Count",value:t.toString()},{label:"Sum",value:s.Format(i.real)},{label:"Average",value:s.Format(i.real/r)}]}else return[{label:"Count",value:t.toString()}];return[]}UpdateStats(){if(this.tab_bar){let e=[];typeof this.options.stats=="function"?this.primary_selection.empty||(e=this.options.stats.call(void 0,this.GetRange(this.primary_selection.area))):!this.primary_selection.empty&&this.primary_selection.area.count>1&&(e=this.RenderStats(this.GetRange(this.primary_selection.area))),this.tab_bar.stats_data=e}}UpdateAddressLabel(e=this.primary_selection,t){if(this.formula_bar)if(typeof t<"u")this.formula_bar.label=t;else if(e.empty)this.formula_bar.label="";else{let r=this.active_sheet.CellData(this.primary_selection.target),i=new y(r.merge_area?r.merge_area.start:e.target);this.formula_bar.label=this.model.named_ranges.MatchSelection(e.area,i)||y.CellAddressToLabel(i.start)}}OnDropdownSelect(e){if(typeof e<"u"){let i=ye.TryParse(e.toString());i.type===3&&(e=i.value)}let t=this.active_sheet.CellData(this.primary_selection.target),r=t.merge_area?t.merge_area.start:this.primary_selection.target;this.ExecCommand({key:6,area:r,value:e}),this.UpdateFormulaBarFormula()}OnScroll(){let e=this.layout.VisibleTiles();e.Equals(this.render_tiles)||(this.render_tiles=e,this.layout_token||(this.layout_token=requestAnimationFrame(()=>this.Repaint())))}AttachListeners(){if(!this.container)throw new Error("invalid container");this.container.addEventListener("copy",this.HandleCopy.bind(this)),this.container.addEventListener("cut",this.HandleCut.bind(this)),this.container.addEventListener("paste",this.HandlePaste.bind(this)),this.layout.grid_cover.addEventListener("mousedown",e=>this.MouseDown_Grid(e)),this.layout.column_header_cover.addEventListener("mousedown",e=>this.MouseDown_ColumnHeader(e)),this.layout.row_header_cover.addEventListener("mousedown",e=>this.MouseDown_RowHeader(e)),this.layout.column_header_cover.addEventListener("mousemove",e=>this.MouseMove_ColumnHeader(e)),this.layout.row_header_cover.addEventListener("mousemove",e=>this.MouseMove_RowHeader(e)),this.layout.grid_cover.addEventListener("mousemove",e=>this.MouseMove_Grid(e)),this.overlay_editor?.edit_node.addEventListener("keydown",e=>this.OverlayKeyDown(e)),this.layout.corner.addEventListener("dblclick",()=>{this.SelectAll()}),window.addEventListener("resize",()=>{this.layout.UpdateDPR()&&(this.QueueLayoutUpdate(),this.Repaint(!0,!0,!0))})}HandleCopy(e){if(e.stopPropagation(),e.preventDefault(),this.primary_selection.empty){if(e.clipboardData&&e.clipboardData.clearData(),this.selected_annotation&&e.clipboardData){let t=JSON.stringify({data:this.selected_annotation,source:this.active_sheet.id});e.clipboardData.setData("text/x-treb-annotation",t);let r=this.selected_annotation.view[this.view_index];if(r&&r.node){let i=r.node.firstChild;if(i){let s=hi(i).outerHTML,n="text/plain";e.clipboardData.setData(n,s)}}}}else{let t=this.active_sheet.RealArea(this.primary_selection.area),r=t.columns,i=t.rows,s=[],n=[];for(let o=0;o<i;o++){let l=[];for(let d=0;d<r;d++){let u={row:t.start.row+o,column:t.start.column+d},h=this.active_sheet.CellData(u),p="";h.calculated?h.calculated_type===7?p=je(h.calculated):p=h.calculated.toString():h.type===7?p=je(h.value):p=h.value?.toString()||"",l.push(p);let f={address:u,data:h.value,type:h.type,style:this.active_sheet.GetCopyStyle(u)};h.area&&h.area.start.row===u.row&&h.area.start.column===u.column&&(f.array={rows:h.area.rows,columns:h.area.columns}),n.push(JSON.parse(JSON.stringify(f)))}s.push(l)}let a=s.map(o=>o.join(" ")).join(`
|
|
9
|
-
`);e.clipboardData&&(e.clipboardData.clearData(),e.clipboardData.setData("text/plain",a),e.clipboardData.setData("text/x-treb",JSON.stringify({source:t,data:n})))}}HandleCut(e){if(e.stopPropagation(),e.preventDefault(),this.HandleCopy(e),this.primary_selection.empty)this.selected_annotation&&this.RemoveAnnotation(this.selected_annotation);else{let t=this.active_sheet.RealArea(this.primary_selection.area);this.ExecCommand({key:11,area:t})}}RecyclePasteAreas(e,t){let r=[];if(e.count===1)for(let i=t.start.row;i<=t.end.row;i++)for(let s=t.start.column;s<=t.end.column;s++)r.push(new y({row:i,column:s}));else if(e.columns===t.columns&&t.rows>=e.rows&&t.rows%e.rows===0)for(let i=t.start.row;i<=t.end.row;i+=e.rows)r.push(new y({row:i,column:t.start.column},{row:i+e.rows-1,column:t.end.column}));else if(e.rows===t.rows&&t.columns>=e.columns&&t.columns%e.columns===0)for(let i=t.start.column;i<=t.end.column;i+=e.columns)r.push(new y({column:i,row:t.start.row},{column:i+e.columns-1,row:t.end.row}));else r.push(t.Clone().Resize(e.rows,e.columns));return r}HandlePaste(e){if(this.overlay_editor?.editing||(e.stopPropagation(),e.preventDefault(),!e.clipboardData))return;let t=e.clipboardData.getData("text/x-treb-annotation");if(t){try{let n=JSON.parse(t);if(n.source&&n.source!==this.active_sheet.id&&n.data&&n.data.formula){let l="",d=this.model.sheets.Find(n.source);if(d&&(l=d.name),l){let u=this.parser.Parse(n.data.formula);u.expression&&(this.parser.Walk(u.expression,h=>h.type==="range"?(!h.start.sheet_id&&!h.start.sheet&&(h.start.sheet=l),!1):(h.type==="address"&&!h.sheet_id&&!h.sheet&&(h.sheet=l),!0)),n.data.formula="="+this.parser.Render(u.expression,{missing:""}))}}let o=this.CreateAnnotation(n.data,!0,!0).view[this.view_index];if(o&&o.node){let l=o.node;setTimeout(()=>{l.focus()},1)}}catch(n){console.error(n)}return}if(this.primary_selection.empty)return;let r=this.active_sheet.RealArea(this.primary_selection.area),i=[],s=e.clipboardData.getData("text/x-treb");if(s)try{let n=JSON.parse(s),a=new y(n.source.start,n.source.end),o=this.RecyclePasteAreas(a,r);o.length===1&&r.Resize(o[0].rows,o[0].columns);let l=[];for(let d of o){this.active_sheet.cells.EnsureCell(d.end),i.push({key:11,area:d});let u={rows:d.start.row-a.start.row,columns:d.start.column-a.start.column};n.data.forEach(h=>{let
|
|
10
|
-
`).map(d=>d.split(" ").map(u=>u.trim())),l=this.RecyclePasteAreas(new y({row:0,column:0},{row:o.length-1,column:o[0].length-1}),r);l.length===1&&(r.Resize(o.length,o[0].length),r.Resize(l[0].rows,l[0].columns));for(let d of l)for(let u=0;u<o.length;u++)for(let h=0;h<o[0].length;h++){let p=new y({row:u+d.start.row,column:h+d.start.column});if(this.active_sheet.cells.EnsureCell(p.end),o[u][h]){let f=this.SetInferredType({area:p,target:p.start,empty:!1},o[u][h],!1,!1);if(f)for(let m of f)i.push(m)}else{let f=this.active_sheet.cells.GetCell(p.start,!1);f&&f.type!==0&&i.push({key:11,area:p.Clone()})}}}this.ExecCommand(i),this.Select(this.primary_selection,r)}AllSelections(e=!1){let t=[this.primary_selection,this.active_selection].concat(this.additional_selections);return e?t:t.filter(r=>!r.empty)}InsertRowsInternal(e){let t=super.InsertRowsInternal(e);if(t.error)return t;let r=this.FindSheet(e.sheet_id);if(r===this.active_sheet){if(e.count<0)for(let i of this.AllSelections())i.empty=!0;else for(let i of this.AllSelections())i.target.row>=e.before_row&&(i.target.row+=e.count),i.area.entire_column||(i.area.start.row>=e.before_row?i.area.Shift(e.count,0):i.area.end.row>=e.before_row&&i.area.ConsumeAddress({row:i.area.end.row+e.count,column:i.area.end.column}));for(let i of t.delete_annotations_list||[])this.layout.RemoveAnnotation(i);if(this.QueueLayoutUpdate(),this.Repaint(),t.update_annotations_list?.length){this.layout.UpdateAnnotation(t.update_annotations_list);for(let i of t.resize_annotations_list||[]){let s=i.view[this.view_index];s?.resize_callback&&s.resize_callback.call(void 0)}}}else this.pending_layout_update.add(r.id);return t}InsertColumnsInternal(e){let t=super.InsertColumnsInternal(e);if(t.error)return t;let r=this.FindSheet(e.sheet_id);if(r===this.active_sheet){if(e.count<0)for(let i of this.AllSelections())i.empty=!0;else for(let i of this.AllSelections())i.target.column>=e.before_column&&(i.target.column+=e.count),i.area.entire_row||(i.area.start.column>=e.before_column?i.area.Shift(0,e.count):i.area.end.column>=e.before_column&&i.area.ConsumeAddress({row:i.area.end.row,column:i.area.end.column+e.count}));for(let i of t.delete_annotations_list||[])this.layout.RemoveAnnotation(i);if(this.tile_renderer.FlushOverflows(),this.QueueLayoutUpdate(),this.DelayedRender(!0,void 0,!0),t.update_annotations_list?.length){this.layout.UpdateAnnotation(t.update_annotations_list);for(let i of t.resize_annotations_list||[]){let s=i.view[this.view_index];s?.resize_callback&&s.resize_callback.call(void 0)}}}else this.pending_layout_update.add(r.id);return t}ResetInternal(){super.ResetInternal(),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),this.ScrollIntoView({row:0,column:0}),this.QueueLayoutUpdate(),this.layout.HideNote()}ResizeColumnsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.column;if(typeof r>"u"){r=[];for(let n=0;n<t.columns;n++)r.push(n)}typeof r=="number"&&(r=[r]);let i=typeof e.width!="number",s=Math.round(e.width||0/this.scale);if(i)for(let n of r)this.AutoSizeColumn(t,n,!1);else for(let n of r)t.SetColumnWidth(n,s);t===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetWidth&&this.layout.container.offsetWidth>this.layout.total_width?this.UpdateLayout():(this.layout.UpdateTileWidths(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(t.id)}ResizeRowsInternal(e){let t,r=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,i=e.row;if(typeof i>"u"){i=[];for(let o=0;o<r.rows;o++)i.push(o)}typeof i=="number"&&(i=[i]);let s=typeof e.shrink=="boolean"?e.shrink:!0,n=typeof e.height!="number",a=Math.round(e.height||0/this.scale);if(n)for(let o of i)r.GetRowHeight(o)||(t?t.ConsumeAddress({row:o,column:1}):t=new y({row:o,column:1/0,sheet_id:r.id})),r.AutoSizeRow(o,this.theme.grid_cell,s);else for(let o of i){let l=r.GetRowHeight(o);(!l&&a||l&&!a)&&(t?t.ConsumeAddress({row:o,column:1}):t=new y({row:o,column:1/0,sheet_id:r.id})),r.SetRowHeight(o,a)}return r===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetHeight&&this.layout.container.offsetHeight>this.layout.total_height?this.UpdateLayout():(this.layout.UpdateTileHeights(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(r.id),t?{start:t.start,end:t.end}:void 0}SelectInternal(e){e.area?(e.area.start.sheet_id&&e.area.start.sheet_id!==this.active_sheet.id&&this.ActivateSheetInternal({key:21,id:e.area.start.sheet_id}),this.Select(this.primary_selection,new y(e.area.start,e.area.end)),this.RenderSelections()):this.ClearSelection(this.primary_selection)}FreezeInternal(e){let t=this.FindSheet(e.sheet_id||this.active_sheet.id),r=(typeof e.highlight_transition=="boolean"?e.highlight_transition:!0)&&t===this.active_sheet;if(e.rows===t.freeze.rows&&e.columns===t.freeze.columns){r&&this.HighlightFreezeArea();return}t.freeze.rows=e.rows,t.freeze.columns=e.columns,t===this.active_sheet?(this.QueueLayoutUpdate(),this.Repaint(),r&&this.HighlightFreezeArea(),e.rows||e.columns?this.layout.CloneFrozenAnnotations():this.layout.ClearFrozenAnnotations()):this.pending_layout_update.add(t.id)}ExecCommand(e,t=!0){let r=super.ExecCommand(e,t);this.batch||r.render_area&&this.DelayedRender(!1,r.render_area),r.repaint&&this.Repaint();for(let i of r.pending||[])this.pending_layout_update.add(i);return r.layout&&this.QueueLayoutUpdate(),r.sheets&&this.tab_bar&&this.tab_bar.Update(),r.formula&&this.UpdateFormulaBarFormula(),r}};var bt=class{forward={};backward=[];Count(){return this.backward.length}Serialize(){return JSON.parse(JSON.stringify(this.Map()))}Deserialize(e){if(this.Reset(),e){for(let t of Object.keys(e))this.SetName(t,new y(e[t].start,e[t].end),!1);this.RebuildList()}}MatchSelection(e,t){if(!e.start.sheet_id)throw new Error("match selection without sheet id");let r;for(let i of this.List())if(i.range.start.sheet_id===e.start.sheet_id&&(i.range.Equals(e)&&(r=i.name),t?.Equals(i.range)))return i.name;return r}SetName(e,t,r=!0){let i=this.ValidateNamed(e);return i?t.entire_column||t.entire_row?(console.warn("invalid range"),!1):(this.forward[i]=t,r&&this.RebuildList(),!0):(console.warn("invalid name"),!1)}SetNames(e){for(let t of Object.keys(e)){let r=e[t];this.SetName(t,new y(r.start,r.end),!1)}this.RebuildList()}ClearName(e,t=!0){delete this.forward[e],t&&this.RebuildList()}RemoveRangesForSheet(e,t=!0){let r={},i=this.List();for(let s of i)s.range.start.sheet_id!==e&&(r[s.name]=s.range);this.forward=r,t&&this.RebuildList()}Reset(){this.forward={},this.backward=[]}Get(e){return this.forward[e.toUpperCase()]}Map(){return this.forward}List(){return this.backward}ValidateNamed(e){return e=e.trim(),!e.length||/^[A-Za-z]{1,3}\d+$/.test(e)||/[^A-Za-z\d_.]/.test(e)||/^[^A-Za-z_]/.test(e)?!1:e.toUpperCase()}PatchNamedRanges(e,t,r,i,s){let n=this.List().slice(0);for(let a of n){let o=a.name,l=a.range;if(l.start.sheet_id!==e){console.info("skipping name",o);continue}if(r&&t<=l.end.column){if(r>0)t<=l.start.column?l.Shift(0,r):t>l.start.column&&t<=l.end.column?l.ConsumeAddress({row:l.end.row,column:l.end.column+r}):console.warn("PNR X case 1",t,r,JSON.stringify(l));else if(r<0)if(t-r<=l.start.column)l.Shift(0,r);else if(t<=l.start.column&&t-r>l.end.column)this.ClearName(o,!1);else if(t<=l.start.column){let d=t-r-1;this.SetName(o,new y({row:l.start.row,column:d+1+r,sheet_id:e},{row:l.end.row,column:l.end.column+r}),!1)}else t<=l.end.column?t-r-1>=l.end.column?this.SetName(o,new y({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:t-1}),!1):this.SetName(o,new y({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:l.start.column+l.columns+r-1}),!1):console.warn("PNR X case 2",t,r,JSON.stringify(l))}if(s&&i<=l.end.row){if(s>0)i<=l.start.row?l.Shift(s,0):i>l.start.row&&i<=l.end.row?l.ConsumeAddress({row:l.end.row+s,column:l.end.column}):console.warn("PNR X case 3",i,s,JSON.stringify(l));else if(s<0)if(i-s<=l.start.row)l.Shift(s,0);else if(i<=l.start.row&&i-s>l.end.row)this.ClearName(o,!1);else if(i<=l.start.row){let d=i-s-1;this.SetName(o,new y({column:l.start.column,row:d+1+s,sheet_id:e},{column:l.end.column,row:l.end.row+s}),!1)}else i<=l.end.row?i-s-1>=l.end.row?this.SetName(o,new y({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:i-1}),!1):this.SetName(o,new y({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:l.start.row+l.rows+s-1}),!1):console.warn("PNR X case 4",i,s,JSON.stringify(l))}}this.RebuildList()}RebuildList(){this.backward=[];for(let e of Object.keys(this.forward))this.backward.push({name:e,range:this.forward[e]})}};var Vr=class{get list(){return this.sheets_.slice(0)}get length(){return this.sheets_.length}names=new Map;ids=new Map;sheets_=[];Assign(e){this.sheets_=[...e],this.UpdateIndexes()}Add(e){this.sheets_.push(e),this.UpdateIndexes()}Splice(e,t,...r){this.sheets_.splice(e,t,...r),this.UpdateIndexes()}Find(e){return typeof e=="string"?this.names.get(e.toLocaleUpperCase()):this.ids.get(e)}Name(e){return this.ids.get(e)?.name||void 0}ID(e){return this.names.get(e.toLocaleUpperCase())?.id||void 0}UpdateIndexes(){this.names.clear(),this.ids.clear();for(let e of this.sheets_){let t=e.name.toLocaleUpperCase();this.names.set(t,e),this.ids.set(e.id,e)}}},yt=class{document_name;user_data;sheets=new Vr;named_ranges=new bt;macro_functions=new Map;named_expressions=new Map;view_count=0;theme_style_properties=JSON.parse(JSON.stringify(A.DefaultProperties));tables=new Map;ResolveStructuredReference(e,t){let r;if(e.table?r=this.tables.get(e.table.toLowerCase()):t.sheet_id&&(r=this.sheets.Find(t.sheet_id)?.CellData(t)?.table),!r)return;let i=e.column.toLowerCase(),s=-1;if(r.columns){for(let n=0;n<r.columns.length;n++)if(i===r.columns[n]){s=r.area.start.column+n;break}}if(!(s<0))if(e.scope==="row"){let n=t.row;return n<r.area.start.row||n>r.area.end.row?void 0:{label:e.label,type:"address",row:n,column:s,sheet_id:r.area.start.sheet_id,id:e.id,position:e.position}}else{let n=r.area.start.row,a=r.area.end.row;return e.scope==="column"&&(n++,r.totals_row&&a--),{label:e.label,type:"range",position:e.position,id:e.id,start:{type:"address",row:n,column:s,sheet_id:r.area.start.sheet_id,label:e.label,position:e.position,id:0},end:{type:"address",row:a,column:s,label:e.label,position:e.position,id:0}}}}};var Fr=class{type=Fr.type;color=0;edges_in=new Set;edges_out=new Set;get has_inbound_edges(){return this.edges_in.size>0}get has_outbound_edges(){return this.edges_out.size>0}Reset(){for(let e of this.edges_out)e.RemoveDependency(this);for(let e of this.edges_in)e.RemoveDependent(this);this.edges_out.clear(),this.edges_in.clear()}ClearDependencies(){for(let e of this.edges_in)e.RemoveDependent(this);this.edges_in.clear()}AddDependent(e){e!==this&&(this.edges_out.has(e)||this.edges_out.add(e))}RemoveDependent(e){this.edges_out.delete(e)}AddDependency(e){e!==this&&(this.edges_in.has(e)||this.edges_in.add(e))}RemoveDependency(e){this.edges_in.delete(e)}LinkTo(e){this.AddDependent(e),e.AddDependency(this)}DependsOn(e){this.AddDependency(e),e.AddDependent(this)}LoopCheck(){let e=[this];for(;e.length;){let t=e[e.length-1],r=!0;if(t.color!==2){t.color=1;for(let i of t.edges_out){if(i.color===1)return this.color=0,!0;i.color===0&&i.edges_out.size&&(e.push(i),r=!1)}}r&&(t.color=2,e.pop())}return this.color=2,!1}},gt=Fr;k(gt,"type","vertex");var Ke=class extends gt{dirty=!1};var Mi={error:"NOTIMPL"},Re=()=>({type:6,value:"N/A"}),ke=()=>({type:6,value:"EXPR"});var fe=()=>({type:6,value:"DIV/0"}),W=()=>({type:6,value:"ARG"}),L=()=>({type:6,value:"VALUE"}),J=()=>({type:6,value:"REF"}),zr=()=>({type:6,value:"NAME"}),jt=()=>({type:6,value:"UNK"});var Nr=class extends Ke{reference;error=0;address;result={type:0};expression={type:"missing",id:-1};expression_error=!1;short_circuit=!1;type=Nr.type;get array_head(){return this.address?!!this.reference&&!!this.reference.area&&this.reference.area.start.column===this.address.column&&this.reference.area.start.row===this.address.row:!1}TakeReferenceValue(){this.reference&&(this.result=q(this.reference.GetValue()))}Calculate(e){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){this.reference&&(this.array_head||this.reference.type===1)&&this.reference.SetCalculationError("LOOP");for(let t of this.edges_out)t.Calculate(e);return}for(let t of this.edges_in)if(t.dirty)return;if(this.reference){if(this.reference.type===1){this.short_circuit=!1;let t=e.CalculationCallback.call(e,this);if(this.result=t.value,this.short_circuit)return;t.volatile&&e.volatile_list.push(this)}else this.result=this.reference.GetValue4();if(this.array_head)e.SpreadCallback.call(e,this,this.result);else if(this.reference.type===1){let t=this.result.type===8?this.result.value[0][0]:this.result;this.reference.SetCalculatedValue(t.value,t.type)}}else console.info("skip dirty constant? [or dangling...]");this.dirty=!1;for(let t of this.edges_out)t.dirty&&e.calculation_list.push(t)}}},Fe=Nr;k(Fe,"type","spreadsheet-vertex");var Ge=class extends Ke{type=Ge.type;area;static GetVertex(e){for(let t of this.list)if(t.area.start.sheet_id===e.start.sheet_id&&t.area.Equals(e))return[t,!1];return[new Ge(e),!0]}static Clear(){this.list=[]}static GetContainingArrays(e){let t=[];for(let r of this.list)r.area.start.sheet_id===e.sheet_id&&r.area.Contains(e)&&t.push(r);return t}static CreateImplicitEdges(e,t){for(let r of this.list)r.area.start.sheet_id===t.sheet_id&&r.area.Contains(t)&&r.DependsOn(e)}constructor(e){super(),this.area=e.Clone(),Ge.list.push(this)}RemoveDependent(e){super.RemoveDependent(e),this.edges_out.size||(this.Reset(),Ge.list=Ge.list.filter(t=>t!==this))}Calculate(e){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){for(let t of this.edges_out)t.Calculate(e);return}for(let t of this.edges_in)if(t.dirty)return;this.dirty=!1;for(let t of this.edges_out)t.Calculate(e)}}},Ee=Ge;k(Ee,"type","array-vertex"),k(Ee,"list",[]);var Jt=class{vertices=[[]];volatile_list=[];calculation_list=[];loop_hint;leaf_vertices=[];dirty_list=[];loop_check_required=!1;IsSpreadsheetVertex(e){return e.type===Fe.type}FlushTree(){this.dirty_list=[],this.volatile_list=[],this.vertices=[[]],this.leaf_vertices=[],Ee.Clear()}ResolveArrayHead(e){if(!e.sheet_id)throw new Error("resolve array head with no sheet id");let t=this.model.sheets.Find(e.sheet_id)?.cells;if(!t)throw new Error("no cells? sheet id "+e.sheet_id);let r=t.data[e.row];if(r){let i=r[e.column];if(i&&i.area){let s={row:i.area.start.row,column:i.area.start.column,sheet_id:e.sheet_id};return console.info("array head",e,s),s}}return e}GetVertex(e,t){if(!e.sheet_id)throw console.info({address:e,create:t}),new Error("getvertex with no sheet id");let r=this.model.sheets.Find(e.sheet_id)?.cells;if(!r)throw new Error("no cells? sheet id "+e.sheet_id);if(!this.vertices[e.sheet_id]){if(!t)return;this.vertices[e.sheet_id]=[]}if(this.vertices[e.sheet_id][e.column]){let s=this.vertices[e.sheet_id][e.column][e.row];if(s)return s;if(!t)return}else{if(!t)return;this.vertices[e.sheet_id][e.column]=[]}let i=new Fe;return i.address={row:e.row,column:e.column,absolute_row:e.absolute_row,absolute_column:e.absolute_column,sheet_id:e.sheet_id},i.reference=r.EnsureCell(e),this.vertices[e.sheet_id][e.column][e.row]=i,Ee.CreateImplicitEdges(i,e),i}RemoveVertex(e){if(!e.sheet_id)throw new Error("removevertex with no sheet id");let t=this.GetVertex(e,!1);t&&(t.Reset(),this.vertices[e.sheet_id][e.column][e.row]=void 0)}ResetVertex(e){let t=this.GetVertex(e,!1);t&&t.Reset()}RIBcount=0;ResetInbound(e,t=!1,r=!0,i=!1){this.RIBcount++;let s=this.GetVertex(e,r);if(!s){if(t){let a=Ee.GetContainingArrays(e);for(let o of a)this.SetVertexDirty(o)}return}let n=[];if(i&&(n=Array.from(s.edges_in)),s.ClearDependencies(),t&&this.SetVertexDirty(s),i){s.has_outbound_edges||this.RemoveVertex(e);for(let a of n)if(!a.has_inbound_edges&&!a.has_outbound_edges){let o=a;o.address&&this.RemoveVertex(o.address)}}}ResetLoopState(){for(let e of this.vertices)if(e){for(let t of e)if(t)for(let r of t)r&&(r.color=r.edges_out.size?0:2)}for(let e of this.leaf_vertices)e.color=2}LoopCheck(e=!1){if(!this.loop_check_required&&!e)return!1;let t=[];for(let i of this.vertices)if(i){for(let s of i)if(s)for(let n of s)n&&(n.color=n.edges_out.size?0:2,t.push(n))}let r=[];for(let i of t)if(i.color===0){for(i.color=1,r.push(i);r.length;){let s=r[r.length-1],n=!0;if(s.color!==2)for(let a of s.edges_out){if(a.color===1)return this.loop_hint=this.RenderAddress(i.address),console.info("loop detected @",this.loop_hint),!0;a.color===0&&(r.push(a),n=!1)}n&&(r.pop(),s.color=2)}i.color=2}return this.loop_check_required=!1,this.loop_hint=void 0,!1}RenderAddress(e){if(!e)return"undefined";let t="";if(e.sheet_id){let i=this.model.sheets.Find(e.sheet_id);i&&(t=i.name+"!")}let r=new y(e);return t+r.spreadsheet_label}AddArrayEdge(e,t){if(!e.start.sheet_id)throw new Error("AddArrayEdge called without sheet ID");let r=this.GetVertex(t,!0),[i,s]=Ee.GetVertex(e);if(r.DependsOn(i),this.loop_check_required=!0,!s)return;let n=this.vertices[e.start.sheet_id];if(n)if(e.entire_row){for(let a=0;a<n.length;a++)if(n[a])for(let o=e.start.row;o<=e.end.row;o++){let l=n[a][o];l&&i.DependsOn(l)}}else if(e.entire_column){for(let a=e.start.column;a<=e.end.column;a++)if(n[a])for(let o of n[a])o?.address&&i.DependsOn(o)}else for(let a=e.start.row;a<=e.end.row;a++)for(let o=e.start.column;o<=e.end.column;o++){let l=n[o][a];l&&i.DependsOn(l)}}AddEdge(e,t,r){let i=this.GetVertex(e,!0);this.GetVertex(t,!0).DependsOn(i),i.reference&&i.reference.area&&!i.array_head&&this.AddEdge({...e,row:i.reference.area.start.row,column:i.reference.area.start.column},t,"implicit"),this.loop_check_required=!0}RemoveEdge(e,t){let r=this.GetVertex(e,!1),i=this.GetVertex(t,!1);!r||!i||(r.RemoveDependent(i),i.RemoveDependency(r))}SetAreaDirty(e){if(e.start.column===1/0||e.end.column===1/0||e.start.row===1/0||e.end.row===1/0)throw new Error("don't iterate over infinite area");let t=e.start.sheet_id;if(!t)throw new Error("invalid area, missing sheet id");for(let r=e.start.column;r<=e.end.column;r++)for(let i=e.start.row;i<=e.end.row;i++){let s={row:i,column:r,sheet_id:t};this.GetVertex(s,!1)&&this.SetDirty(s)}}SetVertexDirty(e){if(!e.dirty){this.dirty_list.push(e),e.dirty=!0;for(let t of e.edges_out)this.SetVertexDirty(t)}}SetDirty(e){let t=this.GetVertex(e,!0);this.SetVertexDirty(t)}AddLeafVertex(e){for(let t of this.leaf_vertices)if(t===e)return;this.leaf_vertices.push(e)}RemoveLeafVertex(e){this.leaf_vertices=this.leaf_vertices.filter(t=>t!==e)}AddLeafVertexEdge(e,t){let r=this.GetVertex(e,!0);return t.DependsOn(r),0}RemoveLeafVertexEdge(e,t){let r=this.GetVertex(e,!1);r&&(r.RemoveDependent(t),t.RemoveDependency(r))}InitializeGraph(){for(let e of this.dirty_list)this.IsSpreadsheetVertex(e)&&(e.TakeReferenceValue(),this.CheckVolatile(e)&&this.volatile_list.push(e)),e.dirty=!1;this.dirty_list=[]}Recalculate(){for(let e of this.volatile_list)this.SetVertexDirty(e);this.calculation_list=this.dirty_list.slice(0),this.volatile_list=[],this.dirty_list=[],this.loop_check_required&&(this.ResetLoopState(),this.loop_check_required=!1);for(let e=0;e<this.calculation_list.length;e++)this.calculation_list[e].Calculate(this);this.calculation_list=[]}};var Xs=c=>{let e={m:c,n:c,array:[]};for(let t=0;t<c;t++){let r=[];for(let i=0;i<c;i++)r.push({real:0,imaginary:0});e.array.push(r)}return e};var Ks=c=>{let{r:e,theta:t}=c,r=e*Math.cos(t),i=e*Math.sin(t);return{real:r,imaginary:i}},Wt=c=>{let e=Math.sqrt(c.real*c.real+c.imaginary*c.imaginary),t=Math.atan2(c.imaginary,c.real);return{r:e,theta:t}},ue=(c,e)=>({real:c.real*e.real-c.imaginary*e.imaginary,imaginary:c.real*e.imaginary+c.imaginary*e.real}),Ys=(c,e)=>{let t=[];for(let r=0;r<c.m;r++){let i=[];for(let s=0;s<c.n;s++)i.push(c.array[r][s]+e.array[r][s]);t.push(i)}return{m:c.m,n:c.n,array:t}},Or=(c,e)=>{let t=[];for(let r=0;r<c.m;r++){let i=[];for(let s=0;s<e.n;s++){let n=0;for(let a=0;a<c.n;a++)n+=c.array[r][a]*e.array[a][s];i.push(n)}t.push(i)}return{array:t,m:c.m,n:e.n}},Di=(c,e)=>{let t=[];for(let r=0;r<c.m;r++){let i=[];for(let s=0;s<e.n;s++){let n={real:0,imaginary:0};for(let a=0;a<c.n;a++)n.real+=c.array[r][a].real*e.array[a][s].real-c.array[r][a].imaginary*e.array[a][s].imaginary,n.imaginary+=c.array[r][a].real*e.array[a][s].imaginary+c.array[r][a].imaginary*e.array[a][s].real;i.push(n)}t.push(i)}return t},qt=c=>{let e={real:0,imaginary:0},t=c.n;if(t==2){let i=ue(c.array[0][0],c.array[1][1]),s=ue(c.array[1][0],c.array[0][1]);return{real:i.real-s.real,imaginary:i.imaginary-s.imaginary}}let r=Xs(c.n);for(let i=0;i<t;i++){let s=0;for(let o=1;o<t;o++){let l=0;for(let d=0;d<t;d++)d!=i&&(r.array[s][l]={...c.array[o][d]},l++);s++}r.m=r.n=t-1;let n=Math.pow(-1,i),a=ue({real:c.array[0][i].real*n,imaginary:c.array[0][i].imaginary*n},qt(r));e.real+=a.real,e.imaginary+=a.imaginary}return e};var Zs=c=>{let e={real_values:!1,imaginary_values:!1,square:c.m===c.n,unit_diagonal:!0},t={m:c.m,n:c.n,array:[]},r={m:c.m,n:c.n,array:[]};for(let i=0;i<c.m;i++){let s=c.array[i],n=[],a=[];for(let o=0;o<c.n;o++)s[o].real&&(e.real_values=!0),s[o].imaginary&&(e.imaginary_values=!0),o===i&&e.unit_diagonal&&(s[o].real!==1||s[o].imaginary!==0)&&(e.unit_diagonal=!1),n.push(s[o].real),a.push(s[o].imaginary);t.array.push(n),r.array.push(a)}return{real:t,imaginary:r,flags:e}},Qs=c=>{let e=c.array.map(t=>t.slice(0));return{m:c.m,n:c.n,array:e}},Li=c=>{if(c.m!==c.n)return;let e=Qs(c),t=e.array,r=0,i=0,s=0,n=0,a=c.m;for(i=1;i<a;i++)t[0][i]/=t[0][0];for(i=1;i<a;i++){for(s=i;s<a;s++){for(r=0,n=0;n<i;n++)r+=t[s][n]*t[n][i];t[s][i]-=r}if(i!=a-1)for(s=i+1;s<a;s++){for(r=0,n=0;n<i;n++)r+=t[i][n]*t[n][s];t[i][s]=(t[i][s]-r)/t[i][i]}}for(i=0;i<a;i++)for(s=i;s<a;s++){let o=1;if(i!=s)for(o=0,n=i;n<s;n++)o-=t[s][n]*t[n][i];t[s][i]=o/t[s][s]}for(i=0;i<a;i++)for(s=i;s<a;s++)if(i!=s){for(r=0,n=i;n<s;n++)r+=t[n][s]*(i==n?1:t[i][n]);t[i][s]=-r}for(i=0;i<a;i++)for(s=0;s<a;s++){for(r=0,n=i>s?i:s;n<a;n++)r+=(s==n?1:t[s][n])*t[n][i];t[s][i]=r}return e},Ii=c=>{let e=[];if(c.m!==c.n)return;let{real:t,imaginary:r,flags:i}=Zs(c),s=Li(t);if(!s)return;if(!i.imaginary_values){for(let u=0;u<c.m;u++){let h=[];for(let p=0;p<c.n;p++)h.push({real:s.array[u][p],imaginary:0});e.push(h)}return e}let n=Or(s,r),a=Or(r,n),o=Ys(t,a),l=Li(o);if(!l)return;let d=Or(n,l);for(let u=0;u<c.m;u++){let h=[];for(let p=0;p<c.n;p++)h.push({real:l.array[u][p],imaginary:-d.array[u][p]});e.push(h)}return e},Vi=(c,e)=>{let t={real:e.real,imaginary:-e.imaginary},r=ue(c,t),i=ue(e,t);return{real:r.real/i.real,imaginary:r.imaginary/i.real}},Gr=c=>{let e=c.real||0,t=c.imaginary||0;return ue({real:Math.exp(e),imaginary:0},{real:Math.cos(t),imaginary:Math.sin(t)})},en=c=>{let e=Wt(c);return{real:Math.log(e.r),imaginary:e.theta}},me=(c,e)=>{if(e.imaginary)return Gr(ue(e,en(c)));{let t=Wt(c);return Ks({r:Math.pow(t.r,e.real),theta:t.theta*e.real})}};var Fi=(c,e=0)=>c&&c.type===7?c:{type:7,value:{real:e,imaginary:0}},He=c=>c.imaginary?{type:7,value:c}:{type:3,value:c.real},$e=(c,e)=>{if(c.type===6)return[0,0,c];if(e.type===6)return[0,0,e];let t=[0,0];switch(c.type){case 3:t[0]=c.value;break;case 4:t[0]=c.value?1:0;break;case 0:break;case 7:t[3]=c;break;default:return[0,0,L()]}switch(e.type){case 3:t[1]=e.value;break;case 4:t[1]=e.value?1:0;break;case 0:break;case 7:t[4]=e;break;default:return[0,0,L()]}return(t[3]||t[4])&&(t[3]=Fi(t[3],t[0]),t[4]=Fi(t[4],t[1])),t},tn=(c,e)=>{let[t,r,i,s,n]=$e(c,e);return i||(s&&n?He({real:s.value.real+n.value.real,imaginary:s.value.imaginary+n.value.imaginary}):{value:t+r,type:3})},jr=(c,e)=>{let[t,r,i,s,n]=$e(c,e);return i||(s&&n?He({real:s.value.real-n.value.real,imaginary:s.value.imaginary-n.value.imaginary}):{value:t-r,type:3})},rn=(c,e)=>{let[t,r,i,s,n]=$e(c,e);if(i)return i;if(s&&n)return He(me(s.value,n.value));let a=Math.pow(t,r);return isNaN(a)?L():{type:3,value:a}},sn=(c,e)=>{let[t,r,i,s,n]=$e(c,e);if(i)return i;if(s&&n)return He(me(s.value,n.value));if(t<0&&r!==0&&Math.abs(r)<1)return He(me({real:t,imaginary:0},{real:r,imaginary:0}));let a=Math.pow(t,r);return isNaN(a)?L():{type:3,value:a}},$r=rn,nn=(c,e)=>{let[t,r,i,s,n]=$e(c,e);return i||(s&&n?He(ue(s.value,n.value)):{value:t*r,type:3})},on=(c,e)=>{let[t,r,i,s,n]=$e(c,e);return i||(s&&n?n.value.real===0&&n.value.imaginary===0?fe():He(Vi(s.value,n.value)):r===0?fe():{value:t/r,type:3})},an=(c,e)=>{let[t,r,i]=$e(c,e);return i||(r===0?fe():{value:t%r,type:3})},ln=(c,e)=>c.type===6?c:e.type===6?e:{type:2,value:`${c.type===0?"":c.value}${e.type===0?"":e.value}`},Br=(c,e)=>{if(c.type===6)return c;if(e.type===6)return e;if(c.type===0&&(e.value===""||e.value===0||e.type===7&&e.value.real===0&&e.value.imaginary===0)||e.type===0&&(c.value===""||c.value===0||c.type===7&&c.value.real===0&&c.value.imaginary===0))return{type:4,value:!0};if(c.type===7||e.type===7){let t=!1;return c.type===e.type?t=c.value.real==e.value.real&&c.value.imaginary==e.value.imaginary:c.type===3?t=e.value.real==c.value&&!e.value.imaginary:e.type===3&&(t=c.value.real==e.value&&!c.value.imaginary),{type:4,value:t}}return{type:4,value:c.value==e.value}},zi=(c,e)=>{let t=Br(c,e);return t.type===6?t:{type:4,value:!t.value}},cn=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:(c.value||0)>(e.value||0)},dn=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:c.value>=e.value},un=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:c.value<e.value},hn=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:c.value<=e.value},Pi=()=>{$r=sn},Ni=c=>{switch(c){case"&":return ln;case"+":return tn;case"-":return jr;case"*":return nn;case"/":return on;case"^":return $r;case"**":return $r;case"%":return an;case"=":return Br;case"==":return Br;case"!=":return zi;case"<>":return zi;case">":return cn;case">=":return dn;case"<":return un;case"<=":return hn}};var Gi=c=>!Array.isArray(c)&&c.type===5&&!!c.value.type,Kt=c=>c.type===5&&c.key==="metadata",Xt=class{constructor(e,t){this.library=e;this.parser=t}context={address:{row:-1,column:-1},volatile:!1,call_index:0};call_index=0;named_range_map={};data_model;SetModel(e){this.data_model=e,this.named_range_map=e.named_ranges.Map(),this.context.model=e}Calculate(e,t,r=!1){return r||(this.context.address=t,this.context.volatile=!1,this.context.call_index=0,this.call_index=0),{value:this.CalculateExpression(e),volatile:this.context.volatile}}CellFunction2(e){if(!e.sheet_id)if(e.sheet)e.sheet_id=this.data_model.sheets.ID(e.sheet)||0;else return()=>J();let t=this.data_model.sheets.Find(e.sheet_id)?.cells;if(!t)return console.warn("missing cells reference @ "+e.sheet_id),()=>J();let r=t.GetCell(e);return r?()=>r.GetValue4():()=>({type:3,value:0})}CellFunction4(e,t){return e.sheet_id?this.data_model.sheets.Find(e.sheet_id)?.cells?.GetRange4(e,t,!0)||J():J()}GetMetadata(e,t){let r,i;switch(e.type){case"address":r=e;break;case"range":i=e;break;case"structured-reference":{let s=this.data_model.ResolveStructuredReference(e,this.context.address);s&&(s.type==="address"?r=s:s.type==="range"&&(i=s))}break;case"identifier":{let s=this.named_range_map[e.name.toUpperCase()];s&&(s.count===1?r=s.start:i=s)}break;case"call":{let s=this.CalculateExpression(e,!0);if(Gi(s))if(s.value.type==="address")r=s.value;else if(s.value.type==="range")i=s.value;else return s;else return s}break;default:return this.CalculateExpression(e)}if(r){let s;if(r.sheet_id&&(s=this.data_model.sheets.Find(r.sheet_id)),!s)return console.error("missing sheet [ac8]"),J();let n=s.CellData(r),a=n.calculated_type?n.calculated:n.value,o={type:"metadata",address:{...r},value:a,format:n.style?n.style.number_format:void 0,...t(n,r)};return{type:5,value:o,key:"metadata"}}else if(i){if(i.start.row===1/0||i.start.column===1/0)return J();let s;if(i.start.sheet_id&&(s=this.data_model.sheets.Find(i.start.sheet_id)),!s)throw new Error("missing sheet [ac9]");let n=[];for(let a=i.start.column;a<=i.end.column;a++){let o=[];for(let l=i.start.row;l<=i.end.row;l++){let d=s.CellData({row:l,column:a});r={...i.start,row:l,column:a};let u=d.calculated_type?d.calculated:d.value,h={type:"metadata",address:r,value:u,format:d.style?d.style.number_format:void 0,...t(d,r)};o.push({type:5,value:h,key:"metadata"})}n.push(o)}return{type:8,value:n}}return this.CalculateExpression(e)}RewriteMacro(e,t){let r;switch(e.type){case"identifier":if(r=t[e.name.toUpperCase()],r)return JSON.parse(JSON.stringify(r));break;case"binary":e.left=this.RewriteMacro(e.left,t),e.right=this.RewriteMacro(e.right,t);break;case"unary":e.operand=this.RewriteMacro(e.operand,t);break;case"group":e.elements=e.elements.map(i=>this.RewriteMacro(i,t));break;case"call":e.args=e.args.map(i=>this.RewriteMacro(i,t));break}return e}CallMacro(e,t){if(!t.expression)return()=>ke();let r=JSON.stringify(t.expression),i={},s=t.argument_names?.map(n=>n.toUpperCase())||[];return n=>{let a=JSON.parse(r);for(let o=0;o<s.length;o++)i[s[o]]=n.args[o]||{type:"missing",id:0};return this.CalculateExpression(this.RewriteMacro(a,i))}}CallExpression(e,t=!1){let r=this.library.Get(e.name);return r?i=>{let s=this.call_index++;this.context.volatile=this.context.volatile||!!r.volatile;let n=e.name.toLowerCase()==="if",a=-1,o,l=r.arguments||[],d=i.args.map((u,h)=>{if(o)return;let p=l[Math.min(h,l.length-1)]||{};if(h===a)return p.boxed?{type:0}:void 0;if(typeof u>"u")return n&&h===0&&(a=1),p.boxed?{type:0}:void 0;if(p.address)return p.boxed?{type:2,value:this.parser.Render(u).replace(/\$/g,"")}:this.parser.Render(u).replace(/\$/g,"");if(p.metadata)return this.GetMetadata(u,()=>({}));{let f=this.CalculateExpression(u);if(f.type===6){if(p.allow_error)return f;o=f;return}if(n&&h===0&&f.type!==8){let m=!1;if(f.type===2){let _=f.value.toLowerCase().trim();m=_!=="false"&&_!=="f"}else m=!!f.value;a=m?2:1}return p.boxed?f:f.type===8?f.value.map(m=>m.map(_=>_.value)):f.value}});if(o)return o;if(this.context.call_index=s,r.return_type===1){let u=r.fn.apply(null,d);if(t)return u;if(Gi(u)){if(u.value.type==="address")return this.CellFunction2(u.value)();if(u.value.type==="range")return this.CellFunction4(u.value.start,u.value.end)}return u}return r.fn.apply(null,d)}:()=>zr()}ResolveStructuredReference(e){let t=this.data_model.ResolveStructuredReference(e,this.context.address);if(t){if(t.type==="address")return this.CellFunction2(t);if(t.type==="range")return()=>this.CellFunction4(t.start,t.end)}return()=>J()}ResolveDimensionedQuantity(){return e=>{let t=this.CalculateExpression(e.expression);return{type:9,value:{value:t.value,unit:e.unit.name}}}}UnaryExpression(e){switch(e.operator){case"+":return t=>this.CalculateExpression(t.operand);case"-":{let t=jr,r={type:3,value:0};return i=>{let s=this.CalculateExpression(i.operand);return s.type===8?{type:8,value:s.value.map(n=>n.map(a=>t(r,a)))}:t(r,s)}}default:return()=>(console.warn("unexpected unary operator:",e.operator),ke())}}RecycleArray(e,t,r){if(e[0].length<r){let i=e[0].length;for(let s of e)for(let n=i;n<r;n++)s[n]=s[n%i]}if(e.length<t){let i=e.length;for(let s=i;s<t;s++)e[s]=e[s%i].slice(0)}return e}ElementwiseBinaryExpression(e,t,r){let i=Math.max(t.value.length,r.value.length),s=Math.max(t.value[0].length,r.value[0].length),n=this.RecycleArray(t.value,i,s),a=this.RecycleArray(r.value,i,s),o=[];for(let l=0;l<i;l++){let d=[];for(let u=0;u<s;u++)d[u]=e(n[l][u],a[l][u]);o.push(d)}return{type:8,value:o}}BinaryExpression(e){let t=Ni(e.operator);return t?r=>{let i=this.CalculateExpression(r.left),s=this.CalculateExpression(r.right);return i.type===8?s.type===8?this.ElementwiseBinaryExpression(t,i,s):this.ElementwiseBinaryExpression(t,i,{type:8,value:[[s]]}):s.type===8?this.ElementwiseBinaryExpression(t,{type:8,value:[[i]]},s):t(i,s)}:()=>(console.info(`(unexpected binary operator: ${e.operator})`),ke())}Identifier(e){let t=e.name;if(t[0]==="#")return()=>J();let r=t.toUpperCase();switch(r){case"FALSE":case"F":return()=>({value:!1,type:4});case"TRUE":case"T":return()=>({value:!0,type:4});case"UNDEFINED":return()=>({value:void 0,type:0})}return()=>{let i=this.named_range_map[r];if(i)return i.count===1?this.CellFunction4(i.start,i.start):this.CellFunction4(i.start,i.end);let s=this.data_model.named_expressions.get(r);return s?this.CalculateExpression(s):zr()}}GroupExpression(e){return!e.elements||e.elements.length!==1?(console.warn("Can't handle group !== 1"),()=>ke()):t=>this.CalculateExpression(t.elements[0])}CalculateExpression(e,t=!1){if(e.user_data)return e.user_data(e);switch(e.type){case"call":{let r=this.data_model.macro_functions.get(e.name.toUpperCase());return r?(e.user_data=this.CallMacro(e,r))(e):(e.user_data=this.CallExpression(e,t))(e)}case"address":return(e.user_data=this.CellFunction2(e))();case"range":return(e.user_data=r=>this.CellFunction4(r.start,r.end))(e);case"binary":return(e.user_data=this.BinaryExpression(e))(e);case"unary":return(e.user_data=this.UnaryExpression(e))(e);case"identifier":return(e.user_data=this.Identifier(e))();case"missing":return(e.user_data=()=>({value:void 0,type:0}))();case"dimensioned":return(e.user_data=this.ResolveDimensionedQuantity())(e);case"literal":{let r={value:e.value,type:ce(e.value)};return(e.user_data=()=>r)()}case"group":return(e.user_data=this.GroupExpression(e))(e);case"complex":{let r={value:{real:e.real,imaginary:e.imaginary},type:7};return(e.user_data=()=>r)()}case"structured-reference":return(e.user_data=this.ResolveStructuredReference(e))();case"array":return(e.user_data=()=>({type:8,value:e.values.map(r=>(Array.isArray(r)?r:[r]).map(i=>({type:ce(i),value:i})))}))();default:return console.warn("Unhandled parse expr:",e),jt()}}};var Dh=1e3*60*60*24;var Yt=c=>{let e=[],t=c.length,r=c[0].length;for(let i=0;i<r;i++){e[i]=[];for(let s=0;s<t;s++)e[i][s]=c[s][i]}return e};var ge=c=>{let e=[];for(let t of c)if(t.type===8)for(let r of t.value)e=e.concat(ge(r));else e.push(t);return e},O=c=>Array.isArray(c)?c.reduce((e,t)=>typeof t>"u"?e:Array.isArray(t)?e.concat(O(t)):t instanceof Float32Array||t instanceof Float64Array?e.concat(Array.from(t)):e.concat([t]),[]):[c];var N=c=>(e,...t)=>Array.isArray(e)?(console.info("AAA 71823"),{type:8,value:e.map(r=>r.map(i=>c(i,...t)))}):typeof e=="object"&&e&&e.type===8?{type:8,value:e.value.map(r=>r.map(i=>c(i,...t)))}:c(e,...t),Te=c=>(e,t,...r)=>{let i=!1,s=!1;return e&&typeof e=="object"&&e.type===8?(e=e.value,i=!0):i=Array.isArray(e),t&&typeof t=="object"&&t.type===8?(t=t.value,s=!0):s=Array.isArray(t),i?s?{type:8,value:e.map((n,a)=>n.map((o,l)=>c(o,t[a][l],...r)))}:{type:8,value:e.map(n=>n.map(a=>c(a,t,...r)))}:s?{type:8,value:t.map(n=>n.map(a=>c(e,a,...r)))}:c(e,t,...r)};var Zt=class{functions={};Register(...e){for(let t of e)for(let r of Object.keys(t)){if(/[^a-zA-Z0-9._]/.test(r))throw new Error("invalid function name (invalid character)");if(r.length>255)throw new Error("invalid function name (too long, > 255)");if(/^[^a-zA-Z]/.test(r))throw new Error("invalid function name (start with an ascii letter)");let i=r.toLowerCase();if(this.functions[i])throw new Error(`function name (${i}) is already in use`);let s=t[r];s.canonical_name=r,this.functions[i]=s}}Get(e){let t=e.toLowerCase();return this.functions[t]}List(){let e={};for(let t of Object.keys(this.functions))e[t]=this.functions[t];return e}Alias(e,t){let r=this.Get(t);if(!r)throw new Error(`referenced function ${t} does not exist`);this.Register({[e]:{...r}})}};var Ze=class{static UnpackValues(e){if(Array.isArray(e)){let t=e[0];return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?e.reduce((r,i)=>r.concat(this.UnpackValues(i)),[]):e.map(r=>isNaN(r)?void 0:r)}else{if(e instanceof Float32Array||e instanceof Float64Array)return Array.prototype.slice.call(e);if(e&&typeof e=="object"){let r=Object.keys(e).length;if(typeof e[0]<"u"&&typeof e[(r-1).toString()]<"u"){let i=[];for(let s=0;s<r;s++)i[s]=e[s.toString()];return i}}}return[]}static SparklineCommon(e,t){let r=[],i=t.text?.text||this.default_color,s=[i,i];return Array.isArray(e.calculated)&&(r=this.UnpackValues(e.calculated[0]),typeof e.calculated[1]=="string"&&(s[0]=e.calculated[1]),typeof e.calculated[2]=="string"&&(s[1]=e.calculated[2])),{values:r,colors:s}}static RenderLine(e,t,r,i,s){let{values:n,colors:a}=this.SparklineCommon(i,s),o=.05,l=.1,d=1;Array.isArray(i.calculated)&&typeof i.calculated[2]=="number"&&(d=i.calculated[2]);let u=0,h=0,p=-1;for(let f=0;f<n.length;f++){let m=n[f];typeof m=="number"&&(p>=0?(u=Math.min(u,m),h=Math.max(h,m)):(p=f,u=h=m))}if(u!==h){let f=e*(1-2*o)/(n.length-1),m=h-u,_=t*(1-2*l),b=t*l;r.strokeStyle=a[0],r.lineWidth=d,r.lineCap="round",r.lineJoin="round",r.beginPath();let g=0;for(let x=p;x<n.length;x++){let v=n[x];if(typeof v=="number"){let w=e*o+f*x,S=t-(v-u)*_/m-b;g===0?(r.moveTo(w,S),g=1):r.lineTo(w,S)}else g=0}r.stroke()}}static RenderColumn(e,t,r,i,s){let{values:n,colors:a}=this.SparklineCommon(i,s),o=3,l=2.5,d=0,u=0,h=!1;for(let p of n)typeof p=="number"&&(h?(d=Math.min(d,p),u=Math.max(u,p)):(h=!0,d=u=p));if(n.length){let p=(e-2*o-2)/(n.length-0),f=t-2*l,m=l;if(d!==u)if(d<0&&u>0){let _=u-d,b=m+u/_*f;for(let g=0;g<n.length;g++){let x=n[g];if(typeof x=="number"){let v=o+g*p,w=Math.abs(x)/_*f;if(x>=0){r.fillStyle=a[0];let S=b-w;r.fillRect(v+2,S,p-2,w)}else{r.fillStyle=a[1];let S=b;r.fillRect(v+2,S,p-2,w)}}}}else if(u>0){r.fillStyle=a[0];let _=u-d;for(let b=0;b<n.length;b++){let g=n[b];if(typeof g=="number"){let x=o+b*p,v=Math.max(1,(g-d)/_*f),w=t-m-v;r.fillRect(x+2,w,p-2,v)}}}else{r.fillStyle=a[1];let _=u-d;for(let b=0;b<n.length;b++){let g=n[b];if(typeof g=="number"){let x=o+b*p,v=Math.max(1,Math.abs(u-g)/_*f),w=m;r.fillRect(x+2,w,p-2,v)}}}}}};k(Ze,"default_color","#888");var Hi=c=>{let{x:e,y:t,width:r,height:i,cell:s}=c,n={},a=3,o=Math.round(16*(c.scale||1));if(s&&r&&i&&e&&t){let l={x:a,y:i-a-o};if(s.style){switch(s.style.vertical_align){case A.VerticalAlign.Top:l.y=a;break;case A.VerticalAlign.Middle:l.y=Math.round((i-o)/2);break}switch(s.style.horizontal_align){case A.HorizontalAlign.Right:l.x=Math.round(r-a-o);break;case A.HorizontalAlign.Center:l.x=Math.round((r-o)/2);break}}e>=l.x&&e<=l.x+o&&t>=l.y&&t<=l.y+o&&(n.value=`=Checkbox(${s.calculated?"FALSE":"TRUE"})`,n.block_selection=!0)}return n},$i=c=>{let{context:e,width:t,height:r,cell:i}=c,s=c.scale||1;e.lineJoin="round",e.lineCap="round";let n=3*s,a=16*s,o=n,l=r-n-a;if(i.style){switch(i.style.vertical_align){case A.VerticalAlign.Top:l=n;break;case A.VerticalAlign.Middle:l=(r-a)/2;break}switch(i.style.horizontal_align){case A.HorizontalAlign.Right:o=t-n-a;break;case A.HorizontalAlign.Center:o=(t-a)/2;break}}o=Math.floor(o)+.5,l=Math.floor(l)+.5;let d=Math.floor(o+a)+.5,u=Math.floor(l+a)+.5;if(i&&i.calculated){e.lineWidth=.5,e.fillStyle=e.strokeStyle,e.beginPath(),e.moveTo(o,l),e.lineTo(o+16*s,l),e.lineTo(o+16*s,l+16*s),e.lineTo(o,l+16*s),e.closePath(),e.moveTo(o+15*s,l+4*s);for(let h of[[13.59,2.58],[6,10.17],[2.41,6.59],[1,8],[6,13]])e.lineTo(o+h[0]*s,l+h[1]*s);e.closePath(),e.fill()}else e.lineWidth=1,e.lineJoin="round",e.beginPath(),e.moveTo(o,l),e.lineTo(d,l),e.lineTo(d,u),e.lineTo(o,u),e.closePath(),e.stroke();return{handled:!0}};var Bi=c=>{let e=.254829592,t=-.284496736,r=1.421413741,i=-1.453152027,s=1.061405429,n=.3275911;c=Math.abs(c);let a=1/(1+n*c);return 1-((((s*a+i)*a+r)*a+t)*a+e)*a*Math.exp(-1*c*c)},fn=Math.sqrt(2*Math.PI),ji=c=>{if(c===.5)return 0;let e=c<1&&c>.5?1-c:c,t=Math.sqrt(Math.log(1/Math.pow(e,2))),r=t-(2.515517+.802853*t+.010328*Math.pow(t,2))/(1+1.432788*t+.189269*Math.pow(t,2)+.001308*Math.pow(t,3));return c>.5?r:-r},Jr={Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:N(c=>{if(c.type===7){let e=me(c.value,{real:.5,imaginary:0});return pe(e)}else{if(c.type===0||!c.value)return{type:3,value:0};if(c.type===3&&c.value<0){let e=me({real:c.value,imaginary:0},{real:.5,imaginary:0});return{type:7,value:e}}else{let e=Math.sqrt(c.value);return isNaN(e)?L():{type:3,value:e}}}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Te((c,e)=>{if(c.type===3&&e.type===3&&(c.value>=0||e.value===0||Math.abs(e.value)>=1)){let s=Math.pow(c.value,e.value);return isNaN(s)?L():{type:3,value:s}}let t=c.type===7?c.value:{real:c.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=me(t,r);return pe(i)})}},Qe={Int:{fn:c=>({type:3,value:Math.floor(c)})},Rand:{volatile:!0,fn:()=>({type:3,value:Math.random()})},RandBetween:{arguments:[{name:"min"},{name:"max"}],volatile:!0,fn:(c=0,e=1)=>{if(c>e){let t=c;c=e,e=t}return{type:3,value:Math.floor(Math.random()*(e+1-c)+c)}}},Sum:{description:"Adds arguments and ranges",arguments:[{boxed:!0,name:"values or ranges"}],fn:(...c)=>{let e={real:0,imaginary:0},t=ge(c);for(let r of t)switch(r.type){case 3:e.real+=r.value;break;case 4:e.real+=r.value?1:0;break;case 7:e.real+=r.value.real,e.imaginary+=r.value.imaginary;break;case 6:return r}return pe(e)}},Now:{description:"Returns current time",volatile:!0,fn:()=>({type:3,value:Xe(new Date().getTime())})},Date:{description:"Constructs a Lotus date from parts",arguments:[{name:"year"},{name:"month"},{name:"day"}],fn:(c,e,t)=>{let r=new Date;return r.setMilliseconds(0),r.setSeconds(0),r.setMinutes(0),r.setHours(0),c<0||c>1e4?W():(c<1899&&(c+=1900),r.setFullYear(c),e<1||e>12?W():(r.setMonth(e-1),t<1||t>31?W():(r.setDate(t),{type:3,value:Xe(r.getTime())})))}},Today:{description:"Returns current day",volatile:!0,fn:()=>{let c=new Date;return c.setMilliseconds(0),c.setSeconds(0),c.setMinutes(0),c.setHours(12),{type:3,value:Xe(c.getTime())}}},IfError:{description:"Returns the original value, or the alternate value if the original value contains an error",arguments:[{name:"original value",allow_error:!0,boxed:!0},{name:"alternate value"}],fn:(c,e=0)=>c&&c.type===6?{value:e,type:ce(e)}:c},IsError:{description:"Checks if another cell contains an error",arguments:[{name:"reference",allow_error:!0,boxed:!0}],fn:(...c)=>{let e=ge(c);for(let t of e)if(t.type===6)return{type:4,value:!0};return{type:4,value:!1}}},Cell:{description:"Returns data about a cell",arguments:[{name:"type",description:"Type of data to return"},{name:"reference",description:"Cell reference",metadata:!0}],fn:Te((c,e)=>{if(!Kt(e))return J();if(c)switch(c.toString().toLowerCase()){case"format":return e.value.format?{type:2,value:e.value.format}:J();case"address":return{type:2,value:e.value.address.label.replace(/\$/g,"")}}return{type:6,value:Mi.error}})},Year:{description:"Returns year from date",arguments:[{name:"date"}],fn:c=>q(new Date(Pe(c)).getUTCFullYear())},Month:{description:"Returns month from date",arguments:[{name:"date"}],fn:c=>q(new Date(Pe(c)).getUTCMonth()+1)},Day:{description:"Returns day of month from date",arguments:[{name:"date"}],fn:c=>q(new Date(Pe(c)).getUTCDate())},Radians:{description:"Converts degrees to radians",arguments:[{name:"Degrees",description:"Angle in degrees"}],fn:N(c=>q(c*Math.PI/180))},Degrees:{description:"Converts radians to degrees",arguments:[{name:"Radians",description:"Angle in radians"}],fn:N(c=>q(c/Math.PI*180))},CountA:{description:"Counts cells that are not empty",fn:(...c)=>q(O(c).reduce((e,t)=>typeof t>"u"?e:e+1,0))},Count:{description:"Counts cells that contain numbers",fn:(...c)=>q(O(c).reduce((e,t)=>typeof t=="number"?e+1:e,0))},Or:{fn:(...c)=>{let e=!1;c=O(c);for(let t of c)e=e||!!t;return q(e)}},And:{fn:(...c)=>{let e=!0;c=O(c);for(let t of c)e=e&&!!t;return q(e)}},Not:{fn:(...c)=>c.length===0?W():c.length===1?q(!c[0]):q(!0)},If:{arguments:[{name:"test value",boxed:!0},{name:"value if true",boxed:!0,allow_error:!0},{name:"value if false",boxed:!0,allow_error:!0}],fn:(c,e={type:4,value:!0},t={type:4,value:!1})=>{let r=e.type===8,i=t.type===8;return c.type===8?{type:8,value:c.value.map((n,a)=>n.map((o,l)=>(o.type===2?o.value.toLowerCase()!=="false"&&o.value.toLowerCase()!=="f":!!o.value)?r?e.value[a][l]:e:i?t.value[a][l]:t))}:(c.type===2?c.value.toLowerCase()!=="false"&&c.value.toLowerCase()!=="f":!!c.value)?e:t}},Fact:{description:"Returns the factorial of a number",arguments:[{name:"number"}],fn:N(c=>{c=Math.floor(c);let e=1;for(;c>1;)e*=c,c--;return{type:3,value:e}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Te((c,e)=>{if(c.type===7||e.type===7){let t=c.type===7?c.value:{real:c.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=me(t,r);return pe(i)}else{let t=Math.pow(c.value,e.value);return isNaN(t)?L():{type:3,value:t}}})},Mod:{fn:Te((c,e)=>e?q(c%e):fe())},Sort:{arguments:[{name:"values"}],fn:(...c)=>(c=O(c),c.every(e=>typeof e=="number")?c.sort((e,t)=>e-t):c.sort(),{type:8,value:[c.map(e=>q(e))]})},Transpose:{description:"Returns transpose of input matrix",arguments:[{name:"matrix",boxed:!0}],fn:c=>c.type===8?{type:8,value:Yt(c.value)}:c},Max:{fn:(...c)=>({type:3,value:Math.max.apply(0,O(c).filter(e=>typeof e=="number"))})},Min:{fn:(...c)=>({type:3,value:Math.min.apply(0,O(c).filter(e=>typeof e=="number"))})},SumProduct:{description:"Returns the sum of pairwise products of two or more ranges",fn:(...c)=>{let e=c.map(i=>O(i)),t=Math.max.apply(0,e.map(i=>i.length)),r=0;for(let i=0;i<t;i++)r+=e.reduce((s,n)=>s*(n[i]||0),1);return{type:3,value:r}}},VLookup:{fn:(c,e,t,r=!0)=>{if(t=Math.max(0,t-1),r){let i=Math.abs(c-e[0][0]),s=e[t][0];for(let n=1;n<e[0].length;n++){let a=Math.abs(e[0][n]-c);a<i&&(i=a,s=e[t][n])}return q(s)}else{for(let i=1;i<e[0].length;i++)if(e[0][i]==c)return e[t][i];return Re()}}},Product:{arguments:[{boxed:!0}],fn:(...c)=>{let e={real:1,imaginary:0};c=ge(c);for(let t of c)t.type===7?e=ue(e,t.value):t.type===3&&(e.real*=t.value,e.imaginary*=t.value);return pe(e)}},Log:{fn:Te((c,e=10)=>({type:3,value:Math.log(c)/Math.log(e)}))},Log10:{fn:N(c=>({type:3,value:Math.log(c)/Math.log(10)}))},Ln:{fn:N(c=>({type:3,value:Math.log(c)}))},Round:{fn:Te((c,e=0)=>{let t=Math.pow(10,e);return{type:3,value:Math.round(t*c)/t}})},RoundDown:{fn:Te((c,e=0)=>{let t=Math.pow(10,e),r=c>=0;return{type:3,value:r?Math.floor(t*c)/t:Math.ceil(t*c)/t}})},Reverse:{arguments:[{boxed:!0}],fn:c=>c.type===8?(c.value.length===1?c.value[0].reverse():c.value.reverse(),c):{type:2,value:c.value.toString().split("").reverse().join("")}},Exp:{arguments:[{boxed:!0}],fn:N(c=>{if(c.type===7){let e=Gr(c.value);return pe(e)}return{type:3,value:Math.exp(c.value||0)}})},Abs:{arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:3,value:Math.sqrt(c.value.real*c.value.real+c.value.imaginary*c.value.imaginary)}:{type:3,value:Math.abs(c.value||0)})},Simplify:{arguments:[{name:"value"},{name:"significant digits"}],fn:Te((c,e=2)=>{if(e=e||2,c===0)return{type:3,value:c};let t=c<0?-1:1;c*=t;let r=Math.pow(10,Math.floor(Math.log10(c))+1-e);return{type:3,value:Math.round(c/r)*r*t}})},Erf:{fn:c=>({type:3,value:Bi(c)})},NormsInv:{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"}],fn:c=>({type:3,value:ji(c)})},"Norm.Inv":{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"},{name:"mean",default:0},{name:"standard deviation",default:1}],xlfn:!0,fn:(c,e=0,t=1)=>({type:3,value:ji(c)*t+e})},"Norm.Dist":{description:"Cumulative normal distribution",arguments:[{name:"value"},{name:"mean",default:0},{name:"standard deviation",default:1},{name:"cumulative",default:!0}],xlfn:!0,fn:(c,e=0,t=1,r=!0)=>{let i=0;return r?i=.5*(1+(c<e?-1:1)*Bi(Math.abs(c-e)/(t*Math.sqrt(2)))):i=Math.exp(-1/2*Math.pow((c-e)/t,2))/(t*fn),{type:3,value:i}}},Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:N(c=>{if(c.type===7){let e=me(c.value,{real:.5,imaginary:0});return pe(e)}else{if(c.type===0||!c.value)return{type:3,value:0};{let e=Math.sqrt(c.value);return isNaN(e)?L():{type:3,value:e}}}})},HexToDec:{arguments:[{description:"hexadecimal string"}],fn:c=>({type:3,value:parseInt(c,16)})},DecToHex:{arguments:[{description:"number"}],fn:c=>({type:2,value:c.toString(16)})},Checkbox:{arguments:[{name:"checked"}],click:Hi,render:$i,fn:c=>({value:!!c,type:4})},"Sparkline.Column":{arguments:[{name:"data"},{name:"color"},{name:"negative color"}],render:c=>(Ze.RenderColumn(c.width,c.height,c.context,c.cell,c.style),{handled:!0}),fn:(...c)=>({type:5,value:c,key:"sparkline-data"})},"Sparkline.Line":{arguments:[{name:"data"},{name:"color"},{name:"line width"}],render:c=>(Ze.RenderLine(c.width,c.height,c.context,c.cell,c.style),{handled:!0}),fn:(...c)=>({type:5,value:c,key:"sparkline-data"})}},Ji={};for(let c of Object.keys(Qe))Ji[c.toLowerCase()]=c;var mn=["pow"],Wi={};for(let c of mn)Wi[c.toLowerCase()]=c;for(let c of Object.getOwnPropertyNames(Math)){let e=c.toLowerCase();if(Ji[e]||Wi[e])continue;let t=Object.getOwnPropertyDescriptor(Math,c);if(!t)continue;let r=t.value,i=typeof r;switch(i){case"number":Qe[c]={fn:()=>({type:3,value:r}),category:["Math Functions"]};break;case"function":Qe[c]={fn:(...s)=>q(r(...s)),category:["Math Functions"]};break;default:console.info("unexpected type:",i,c);break}}Math.log10||(Math.log10=c=>Math.log(c)/Math.log(10));var vt=(c,e,t=0,r=0,i=0)=>i?-(t*(c/(1-Math.pow(1+c,-e))))/(1+c)-r*(1/((1+c)*((Math.pow(1+c,e)-1)/c))):-(t*c*Math.pow(1+c,e)+r*c)/(Math.pow(1+c,e)-1),Xi=(c,e,t,r=0,i=0)=>i?(1+c)*-t/c*(Math.pow(1+c,e)-1)-r*Math.pow(1+c,e):-t/c*(Math.pow(1+c,e)-1)-r*Math.pow(1+c,e),Wr=(c,e,t,r=0,i=0,s=0)=>{if(e<1)return NaN;if(e===1&&s)return 0;let n=vt(c,t,r,i,s),a=Xi(c,e-1,n,r,s)*c;return s?a/(1+c):a},qi=(c,e,t,r=0,i=0,s=0)=>vt(c,t,r,i,s)-Wr(c,e,t,r,i,s),Ki={NPV:{description:"Returns the present value of a series of future cashflows",arguments:[{name:"Rate"},{name:"Cashflow"}],fn:(c=0,...e)=>{let t=0,r=O(e);for(let i=0;i<r.length;i++){let s=r[i];typeof s=="number"&&(t+=Math.pow(1+c,-(i+1))*s)}return{type:3,value:t}}},IRR:{description:"Calculates the internal rate of return of a series of cashflows",arguments:[{name:"Cashflows"},{name:"Guess",default:.1}],fn:(c,e=.1)=>{let t=O(c).map(s=>typeof s=="number"?s:0),r=.1,i=[{found:!1,value:0},{found:!1,value:0}];for(let s=0;s<50;s++){let n=0;for(let a=0;a<t.length;a++)n+=Math.pow(1+e,-(a+1))*t[a];if(Math.abs(n)<=.00125)return{type:3,value:e};if(n>0){if(i[0].value=i[0].found?Math.max(i[0].value,e):e,i[0].found=!0,!i[1].found){e+=r;continue}}else if(i[1].value=i[1].found?Math.min(i[1].value,e):e,i[1].found=!0,!i[0].found){e-=r;continue}e=i[0].value+(i[1].value-i[0].value)/2}return{type:6,value:"NUM"}}},CUMPRINC:{description:"Returns cumulative principal paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(c,e,t,r,i,s=0)=>{let n=0;for(let a=r;a<=i;a++)n+=qi(c,a,e,t,0,s);return{type:3,value:n}}},CUMIPMT:{description:"Returns cumulative interest paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(c,e,t,r,i,s=0)=>{let n=0;for(let a=r;a<=i;a++)n+=Wr(c,a,e,t,0,s);return{type:3,value:n}}},IPMT:{description:"Returns the interest portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0,s=0)=>({type:3,value:Wr(c,e,t,r,i,s)})},PPMT:{description:"Returns the principal portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0,s=0)=>({type:3,value:qi(c,e,t,r,i,s)})},Rate:{description:"Returns the interest rate of a loan",arguments:[{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t=0,r=0,i=0)=>{let s=.25,n=[-1,1],a=32,o=1e-6;for(let l=0;l<a;l++){let d=vt(s,c,t,r,i);if(Math.abs(d-e)<=o)return{type:3,value:s};let u=vt(n[1],c,t,r,i);e>=d&&e<=u||e>=u&&e<=d?n[0]=s:n[1]=s,s=n[0]+(n[1]-n[0])/2}return{type:3,value:s}}},FV:{description:"Returns the future value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0)=>({type:3,value:Xi(c,e,t,r,i)})},PV:{description:"Returns the present value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0)=>i?(t+=r*(1/((1+c)*((Math.pow(1+c,e)-1)/c))),{type:3,value:-(t+t/c*(1-Math.pow(1+c,-(e-1))))}):{type:3,value:-(r+t/c*(Math.pow(1+c,e)-1))/Math.pow(1+c,e)}},NPER:{description:"Returns the number of periods of an investment",arguments:[{name:"Rate"},{name:"Payment"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t=0,r=0,i=0)=>i?{type:3,value:1+(-Math.log(1+c*(1-t/-e))+Math.log(1+r*c/(-e*(1+c))))/Math.log(1+c)}:{type:3,value:(Math.log(Math.pow(1-t*c/-e,-1))+Math.log(1+r*c/-e))/Math.log(1+c)}},PMT:{description:"Returns the periodic payment of a loan",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0)=>({type:3,value:vt(c,e,t,r,i)})}};var _n=c=>{let e=[],t=c.length,r="[\\^$.|?*+()";for(let i=0;i<t;i++){let s=c[i];switch(s){case"*":e.push(".","*");break;case"?":e.push(".");break;case"~":s=c[++i]||"";default:for(let n=0;n<r.length;n++)if(s===r[n]){e.push("\\");break}e.push(s);break}}return e.join("")},Yi={Char:{arguments:[{name:"number"}],fn:c=>({type:2,value:String.fromCodePoint(c||32)}),category:["text"]},Code:{arguments:[{name:"string"}],fn:c=>({type:3,value:c.codePointAt(0)||0}),category:["text"]},Value:{arguments:[{name:"text"}],fn:c=>{let e=ye.TryParse(c);return e.type===3?{type:3,value:e.value}:W()},category:["text"]},Text:{arguments:[{name:"value"},{name:"number format"}],fn:(c,e="0.00####")=>({type:2,value:D.Get(e).Format(c||0)}),category:["text"]},Left:{arguments:[{name:"string"},{name:"count"}],fn:(c,e=1)=>({type:2,value:c.substr(0,e)}),category:["text"]},Right:{arguments:[{name:"string"},{name:"count"}],fn:(c,e=1)=>({type:2,value:c.slice(-e)}),category:["text"]},Mid:{arguments:[{name:"string"},{name:"left"},{name:"count"}],fn:(c,e=0,t=1)=>({type:2,value:c.substr(Math.max(0,e-1),t)}),category:["text"]},Search:{description:"Find a string (needle) in another string (haystack). Case-insensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(c,e,t=1)=>{if(t>=1){if(!c)return{type:3,value:t};let r=_n(c),i=new RegExp(r,"i").exec(e.substr(t-1));if(i)return{type:3,value:i.index+t}}return L()}},Find:{description:"Find a string (needle) in another string (haystack). Case-sensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(c,e,t=1)=>{if(t>=1){if(!c)return{type:3,value:t};let r=new RegExp(c).exec(e.substr(t-1));if(r)return{type:3,value:r.index+t}}return L()}},Concat:{description:"Pastes strings together",fn:(...c)=>{let t=O(c).map(r=>{let i=r?.toString()||"";return typeof r=="number"&&T.decimal_separator===","?i.replace(/\./,","):i}).join("");return{type:2,value:t}}}},qr={Concatenate:"Concat"};var Zi={IsBlank:{description:"Returns true if the reference is blank",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:!c?.value||typeof c.value.value>"u"}))},IsNumber:{description:"Returns true if the reference is a number",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&typeof c.value.value=="number"}))},IsLogical:{description:"Returns true if the reference is a logical TRUE or FALSE",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&typeof c.value.value=="boolean"}))},IsText:{description:"Returns true if the reference is text",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&typeof c.value.value=="string"}))}};var Ue=(c,e=!1)=>{let t=c.length,r=0,i=0;for(let s=0;s<t;s++)r+=c[s];r/=t;for(let s=0;s<t;s++){let n=c[s]-r;i+=n*n}return e?i/(t-1):i/t},Qi={"StDev.P":{description:"Returns the standard deviation of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Math.sqrt(Ue(O(c),!1))})},"StDev.S":{description:"Returns the standard deviation of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Math.sqrt(Ue(O(c),!0))})},"Var.P":{description:"Returns the variance of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Ue(O(c),!1)})},"Var.S":{description:"Returns the variance of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Ue(O(c),!0)})},Covar:{description:"Returns the covariance between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(c,e)=>{if(!Array.isArray(c)||!Array.isArray(e))return L();if(!Array.isArray(c[0])||!Array.isArray(e[0]))return L();if(c.length!==e.length)return W();let t=0,r=0,i={x:0,y:0},s={x:[],y:[]};for(let n=0;n<c.length;n++){if(!c[n]||!e[n])continue;if(c[n].length!==e[n].length)return W();let a=c[n].length;r+=a;for(let o=0;o<a;o++)i.x+=c[n][o]||0,i.y+=e[n][o]||0,s.x.push(c[n][o]||0),s.y.push(e[n][o]||0)}if(r===0)return Re();i.x/=r,i.y/=r;for(let n=0;n<r;n++)t+=(s.x[n]-i.x)*(s.y[n]-i.y);return{type:3,value:t/r}}},Correl:{description:"Returns the correlation between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(c,e)=>{if(!Array.isArray(c)||!Array.isArray(e))return L();if(!Array.isArray(c[0])||!Array.isArray(e[0]))return L();let t=0,r=0,i=0,s=0,n=0,a=0,o=0;for(let l=0;l<c.length;l++){if(!c[l]||!e[l])continue;let d=c[l].length;for(let u=0;u<d;u++){let h=Number(c[l][u]),p=Number(e[l][u]);isNaN(h)||isNaN(p)||(r+=h*p,i+=h,s+=p,n+=h*h,a+=p*p,o++)}}return t=o*r-i*s,t&&(t/=Math.sqrt((o*n-i*i)*(o*a-s*s))),{type:3,value:t}}},GeoMean:{description:"Returns the geometric mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...c)=>{c=ge(c);let e=0,t={real:1,imaginary:0},r=!1,i=!1;for(let s of c)s.type===7?(r=!0,t=ue(t,s.value),e++):s.type===3&&(s.value<0&&(i=!0),e++,t.real*=s.value,t.imaginary*=s.value);if(r){let s=me(t,{real:1/e,imaginary:0});return s.imaginary?{type:7,value:s}:{type:3,value:s.real}}else return i?L():{type:3,value:Math.pow(t.real,1/e)}}},Average:{description:"Returns the arithmetic mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...c)=>{c=ge(c);let e={real:0,imaginary:0},t=0;for(let r of c){if(r.type===6)return r;r.type===3&&(e.real+=r.value,t++),r.type===7&&(e.real+=r.value.real,e.imaginary+=r.value.imaginary,t++)}return e.real/=t,e.imaginary/=t,e.imaginary?{type:7,value:e}:{type:3,value:e.real}}},Percentile:{description:"Returns the kth percentile value from the range of data",arguments:[{name:"range"},{name:"percentile"}],fn:(c,e)=>{let t=O(c).filter(o=>typeof o=="number");t.sort((o,l)=>o-l);let r=t.length,i=Math.pow(10,8),s=Math.round((1+(r-1)*e)*i)/i,n=Math.floor(s),a=Math.ceil(s);return{type:3,value:(t[n-1]+t[a-1])/2}}},Median:{description:"Returns the median value of the range of data",arguments:[{name:"range"}],fn:(...c)=>{let e=O(c).filter(n=>typeof n=="number");e.sort((n,a)=>n-a);let r=1+(e.length-1)*.5,i=Math.floor(r),s=Math.ceil(r);return{type:3,value:(e[i-1]+e[s-1])/2}}}},Xr={Mean:"Average",StDev:"StDev.S",Var:"Var.S"};var es={IsComplex:{description:"Returns true if the reference is a complex number",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&ve(c.value.value)}))},Real:{description:"Returns the real part of a complex number",arguments:[{boxed:!0}],fn:N(c=>c.type===3?{...c}:c.type===7?{type:3,value:c.value.real||0}:c.type===0||c.type===2&&c.value===""?{type:3,value:0}:L())},Imaginary:{description:"Returns the imaginary part of a complex number (as real)",arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:3,value:c.value.imaginary||0}:c.type===3||c.type===0||c.type===2&&c.value===""?{type:3,value:0}:L())},Conjugate:{description:"Returns the conjugate of a complex number",arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:7,value:{real:c.value.real,imaginary:-c.value.imaginary}}:c.type===3||c.type===0||!c.value?{type:3,value:c.value||0}:L())},Arg:{description:"Returns the principal argument of a complex number (in radians)",arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:3,value:Math.atan2(c.value.imaginary,c.value.real)}:c.type===3||c.type===0||c.type===2&&c.value===""?{type:3,value:Math.atan2(0,c.value||0)}:L())},Rectangular:{description:"Converts a complex number in polar form to rectangular form",arguments:[{name:"r"},{name:"\u03B8 in radians"}],fn:(c=0,e=0)=>({type:7,value:{real:c*Math.cos(e),imaginary:c*Math.sin(e)}})},Complex:{description:"Ensures that the given value will be treated as a complex number",arguments:[{boxed:!0}],fn:N(c=>c.type===7?c:c.type===3||c.type===0||!c.value?{type:7,value:{imaginary:0,real:c.value||0}}:L())},ComplexLog:{description:"Returns the principal value Log(z) of a complex number z",arguments:[{boxed:!0}],fn:N(c=>{if(c.type===3){if(!c.value)return L();c={type:7,value:{real:c.value,imaginary:0}}}else if(c.type===0||c.type===2&&c.value==="")return L();if(c.type===7){let e=Wt(c.value),t={real:Math.log(e.r),imaginary:e.theta};return t.imaginary?{type:7,value:t}:{type:3,value:t.real}}return L()})}};var Qt=c=>{let e=[];c.type===8?e=c.value:e=[[c.value]];let t=e.length,r=t?e[0].length:0,i=[];if(!t||!r)return{m:t,n:r,array:i};for(let s=0;s<t;s++){let n=[];for(let a=0;a<r;a++){let o=e[s][a];if(o.type===7)n.push({...o.value});else if(o.type===3)n.push({real:o.value,imaginary:0});else if(o.type===0||o.value==="")n.push({real:0,imaginary:0});else return{m:t,n:r,error:!0,array:[]}}i.push(n)}return{m:t,n:r,array:i}},ts={MDeterm:{description:"Returns the determinant of a matrix",arguments:[{name:"matrix",boxed:!0}],fn:c=>{let e=Qt(c);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return L();let t=qt(e);return t?pe(t):L()}},MInverse:{description:"Returns the inverse matrix",arguments:[{name:"matrix",boxed:!0}],fn:c=>{let e=Qt(c);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return L();let t=qt(e);if(t&&t.real===0&&t?.imaginary===0)return L();let r=Ii(e);return r?{type:8,value:r.map(i=>i.map(s=>pe(s)))}:L()}},MMult:{description:"Returns the dot product of A and B",arguments:[{name:"A",boxed:!0},{name:"B",boxed:!0}],fn:(c,e)=>{let t=Qt(c),r=Qt(e);if(!t.array||t.error||!r.array||r.error)return L();if(t.m!==r.n)return L();let i=Di(r,t);return{type:8,value:i.map(s=>s.map(n=>pe(n)))}}}};var Kr=class extends Fe{state_id=0;type=Kr.type;color=2;state_representation="";UpdateState(){let e=JSON.stringify(Array.from(this.edges_in).map(t=>t.result));e!==this.state_representation&&(this.state_representation=e,this.state_id++)}Calculate(e){if(this.dirty){for(let t of this.edges_in)if(t.dirty)return;this.UpdateState(),this.dirty=!1}}AddDependent(e){throw new Error("leaf vertex cannot have dependents")}},et=Kr;k(et,"type","leaf-vertex");var bn={complex_numbers:"off"},er=class extends Jt{constructor(t,r={}){super();this.model=t;if({...bn,...r}.complex_numbers==="on"){for(let s of Object.keys(Jr))Qe[s]=Jr[s];Pi()}this.UpdateLocale(),this.library.Register(Qe,Yi,Qi,Ki,Zi,es,ts);for(let s of Object.keys(Xr))this.library.Alias(s,Xr[s]);for(let s of Object.keys(qr))this.library.Alias(s,qr[s]);this.library.Register({Subtotal:{arguments:[{name:"type"},{name:"range",metadata:!0}],fn:(s,...n)=>{if(s>100&&(s-=100),s<1||s>11)return W();let a=ge(n),o=[],l=0,d=0,u;for(let p of a){let f=p.value?.address;if(!f)return J();if(!u||u.id!==f.sheet_id){if(!f.sheet_id)return console.warn("invalid reference in metadata"),J();if(u=this.model.sheets.Find(f.sheet_id),!u)return console.warn("invalid sheet in metadata"),J()}if(!u.GetRowHeight(f.row))continue;let _=p.value?.value;typeof _>"u"||(l++,typeof _=="number"&&(d+=_,o.push(_)))}let h=0;switch(s){case 1:if(o.length===0)return fe();h=d/o.length;break;case 2:h=o.length;break;case 3:h=l;break;case 4:if(o.length===0)return L();h=Math.max.apply(0,o);break;case 5:if(o.length===0)return L();h=Math.min.apply(0,o);break;case 6:if(o.length===0)return L();h=1;for(let p of o)h*=p;break;case 7:if(o.length<2)return fe();h=Math.sqrt(Ue(o,!0));break;case 8:if(o.length===0)return fe();h=Math.sqrt(Ue(o,!1));break;case 9:h=d;break;case 10:if(o.length<2)return fe();h=Ue(o,!0);break;case 11:if(o.length===0)return fe();h=Ue(o,!1);break}return{type:3,value:h}}},CountIf:{arguments:[{name:"range"},{name:"criteria"}],fn:(s,n)=>{let a=O(s);typeof n!="string"?n="="+(n||0).toString():(n=n.trim(),/^[=<>]/.test(n)||(n="="+n));let o=this.parser.Parse("{}"+n),l=o.expression;if(o.error||!l)return ke();if(l.type!=="binary")return ke();if(l.left.type!=="array")return ke();l.left.values=[a];let d=this.CalculateExpression(l);if(d.type===8){let u=0;for(let h of d.value)for(let p of h)p.value&&u++;return{type:3,value:u}}return d}},Offset:{arguments:[{name:"reference",description:"Base reference",metadata:!0},{name:"rows",description:"number of rows to offset"},{name:"columns",description:"number of columns to offset"},{name:"height"},{name:"width"}],return_type:1,volatile:!0,fn:((s,n=0,a=0,o,l)=>{if(!s)return W();if(s.type===8){let u=typeof o=="number"?n+o:void 0,h=typeof l=="number"?a+l:void 0;return{type:8,value:s.value.slice(n,u).map(f=>f.slice(a,h))}}if(!Kt(s))return console.info("e2",{reference:s}),J();let d=this.DynamicDependencies(s.value.address,this.expression_calculator.context.address,!0,n,a,l,o);if(!d)return console.info("e1",{check_result:d}),J();if(d.dirty){let u=this.GetVertex(this.expression_calculator.context.address,!0);return u.short_circuit=!0,{type:0,value:void 0}}if(d.area){let u={type:"address",...d.area.start,label:"",position:0,id:0},h={type:"address",...d.area.end,label:"",position:0,id:0},p=d.area.count===1?u:{type:"range",start:u,end:h,label:"",position:0,id:0};return{type:5,value:p}}return L()}).bind(this)},Indirect:{arguments:[{name:"reference",description:"Cell reference (string)"}],return_type:1,volatile:!0,fn:(s=>{if(!s||typeof s!="string")return W();let n=this.parser.Parse(s);if(n.error||!n.expression||n.expression.type!=="address"&&n.expression.type!=="range")return J();let a=this.DynamicDependencies(n.expression,this.expression_calculator.context.address);if(!a)return J();if(a.dirty){let o=this.GetVertex(this.expression_calculator.context.address,!0);return o.short_circuit=!0,{type:0,value:void 0}}return{type:5,value:n.expression}}).bind(this)},Match:{arguments:[{name:"value",boxed:!0},{name:"range",boxed:!0},{name:"type"}],fn:(s,n,a=0)=>{if(a)return console.warn("inexact match not supported",{value:s,range:n,type:a}),Re();if(n.type===8){if(n.value.length===1){let o=n.value[0];for(let l=0;l<o.length;l++)if(s.type==o[l].type&&s.value===o[l].value)return{type:3,value:l+1}}else for(let o=0;o<n.value.length;o++){let l=n.value[o];if(l.length!==1)return Re();if(s.type==l[0].type&&s.value===l[0].value)return{type:3,value:o+1}}return Re()}else return s.type===n.type&&s.value===n.value?{type:3,value:1}:Re();return W()}},Index:{arguments:[{name:"range",boxed:!0},{name:"row"},{name:"column"}],volatile:!1,fn:(s,n,a)=>{if(s&&s.type!==8&&(s={type:8,value:[[s]]}),n&&a){let o=s.value[a-1];if(o){let l=o[n-1];if(l)return l}}else if(n){let o=[];for(let l of s.value){if(!l[n-1])return W();o.push([l[n-1]])}return{type:8,value:o}}else if(a){let o=s.value[a-1];if(o)return{type:8,value:[o]}}return W()}},Rows:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:s=>{if(!s)return W();if(Array.isArray(s)){let n=s[0];return Array.isArray(n)?{type:3,value:n.length}:L()}return{type:3,value:1}}},Columns:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:s=>s?Array.isArray(s)?{type:3,value:s.length}:{type:3,value:1}:W()},IsFormula:{description:"Returns true if the reference is a formula",arguments:[{name:"Reference",metadata:!0}],fn:N(s=>{let n=this.model.sheets.Find(s?.value?.address?.sheet_id||0);if(n){let a=n.cells.GetCell(s.value.address,!1);return{type:4,value:a?.type===1}}return{type:4,value:!1}})}})}parser=new We;library=new Zt;registered_libraries={};expression_calculator=new Xt(this.library,this.parser);full_rebuild_required=!1;ExportCalculatedValues(){let t={};for(let r of this.model.sheets.list){let i=r.cells.toJSON({calculated_value:!0}).data;t[r.id]=i.filter(s=>s.calculated!==void 0)}return t}ApplyCalculatedValues(t){for(let r of this.model.sheets.list){let i=t[r.id];if(!i)console.info("mismatch",r.id);else for(let s of i)r.cells.data[s.row][s.column].SetCalculatedValue(s.calculated)}}SpreadCallback(t,r){if(!t.address||!t.address.sheet_id)throw new Error("spread callback called without sheet id");let i=this.model.sheets.Find(t.address.sheet_id)?.cells;if(!i)throw new Error("spread callback called without cells");if(!t||!t.reference)return;let s=t.reference.area;if(s){let n=s.rows,a=s.columns;if(r.type===8){let o=Yt(r.value);for(let l=0;l<n;l++)if(o[l]){let d=0;for(;d<a&&d<o[l].length;d++)i.data[l+s.start.row][d+s.start.column].SetCalculatedValue(o[l][d].value,o[l][d].type);for(;d<a;d++)i.data[l+s.start.row][d+s.start.column].SetCalculatedValue(void 0,0)}else for(let d=0;d<a;d++)i.data[l+s.start.row][d+s.start.column].SetCalculatedValue(void 0,0)}else for(let o=0;o<n;o++)for(let l=0;l<a;l++)i.data[o+s.start.row][l+s.start.column].SetCalculatedValue(r.value,r.type)}}CalculationCallback(t){if(!t.address)throw new Error("vertex missing address");return t.expression_error?{value:jt()}:this.expression_calculator.Calculate(t.expression,t.address)}DynamicDependencies(t,r,i=!1,s=0,n=0,a=1,o=1){let l=this.ResolveExpressionAddress(t,r);if(!l)return;let d=!1,u;if(t.type==="address"||t.type==="range"){let p=t.type==="range"?t.start:t;p.sheet_id?u=this.model.sheets.Find(p.sheet_id):p.sheet&&(u=this.model.sheets.Find(p.sheet))}if(!u&&r?.sheet_id&&(u=this.model.sheets.Find(r.sheet_id)),!u)throw new Error("missing sheet in dynamic dependencies [b21]");l=u.RealArea(l);let h=l.start.sheet_id;i&&(l=new y({column:l.start.column+n,row:l.start.row+s,sheet_id:l.start.sheet_id},{column:l.start.column+n+a-1,row:l.start.row+s+o-1,sheet_id:l.end.sheet_id}));for(let p=l.start.row;p<=l.end.row;p++)for(let f=l.start.column;f<=l.end.column;f++){let m=this.GetVertex({row:p,column:f,sheet_id:h},!1);m&&m.dirty&&(this.AddEdge({row:p,column:f,sheet_id:h},this.expression_calculator.context.address),d=!0)}return{dirty:d,area:l}}UpdateLocale(){T.decimal_separator===","?(this.parser.decimal_mark=",",this.parser.argument_separator=";"):(this.parser.decimal_mark=".",this.parser.argument_separator=",")}SupportedFunctions(){let t=this.library.List(),r=Object.keys(t).map(i=>{let s=t[i].canonical_name;return s||(s=i.replace(/_/g,".")),{name:s,description:t[i].description,arguments:(t[i].arguments||[]).map(n=>({name:n.name||""}))}});for(let i of this.model.macro_functions.values())r.push({name:i.name,description:i.description,arguments:(i.argument_names||[]).map(s=>({name:s}))});return r}RegisterLibrary(t,r){return this.registered_libraries[t]?!1:(this.RegisterFunction(r),this.registered_libraries[t]=!0,!0)}RegisterFunction(t){for(let r of Object.keys(t)){let i=t[r],s=i.fn;i.fn=(...n)=>s.apply({address:{...this.expression_calculator.context.address}},n),this.library.Register({[r]:i})}}AttachModel(){this.expression_calculator.SetModel(this.model)}Calculate(t){if(this.AttachModel(),t&&!t.start.sheet_id)throw new Error("CalculateInternal called with subset w/out sheet ID");this.full_rebuild_required&&(t=void 0,this.UpdateAnnotations(),this.full_rebuild_required=!1),this.RebuildGraph(t);try{this.Recalculate()}catch(r){console.error(r),console.info("calculation error trapped")}}Reset(){this.FlushTree(),this.AttachModel(),this.full_rebuild_required=!0}DecoratedFunctionList(){let t={},r=this.library.List();for(let i of Object.keys(r)){let s=r[i];s.xlfn?t[i]="_xlfn":s.extension&&(t[i]="_xll")}return t}ResolveArea(t,r){let i=this.ResolveAddress(t,r);return z(i)?new y(i):new y(i.start,i.end)}ResolveAddress(t,r){if(typeof t=="string"){let i=this.parser.Parse(t);if(i.expression&&i.expression.type==="address")return this.ResolveSheetID(i.expression,void 0,r),{row:i.expression.row,column:i.expression.column,sheet_id:i.expression.sheet_id};if(i.expression&&i.expression.type==="range")return this.ResolveSheetID(i.expression,void 0,r),{start:{row:i.expression.start.row,column:i.expression.start.column,sheet_id:i.expression.start.sheet_id},end:{row:i.expression.end.row,column:i.expression.end.column}};if(i.expression&&i.expression.type==="identifier"){let s=this.model.named_ranges.Get(i.expression.name);if(s)return s}return{row:0,column:0}}return t}Evaluate(t,r,i={}){let s=this.parser.argument_separator,n=this.parser.flags.r1c1;i.argument_separator&&(i.argument_separator===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",")),i.r1c1&&(this.parser.flags.r1c1=i.r1c1);let a=this.parser.Parse(t);if(this.parser.argument_separator=s,this.parser.decimal_mark=s===","?".":",",this.parser.flags.r1c1=n,a&&a.expression){this.parser.Walk(a.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="address"){if(l.offset_column||l.offset_row)throw new Error("Evaluate does not support offset references")}else if(l.start.offset_column||l.start.offset_row||l.end.offset_column||l.end.offset_row)throw new Error("Evaluate does not support offset references");this.ResolveSheetID(l,void 0,r)}return!0});let o=this.CalculateExpression(a.expression);return o.type===8?o.value.map(l=>l.map(d=>d.value)):o.value}throw a.error?new Error(a.error):new Error("invalid expression")}CalculateExpression(t,r={row:-1,column:-1},i=!1){return this.expression_calculator.Calculate(t,r,i).value}RebuildClean(t=!1){this.full_rebuild_required=!1,this.AttachModel(),this.RebuildGraph(),this.UpdateAnnotations(),this.InitializeGraph(),t&&this.volatile_list.length&&this.Recalculate()}FlattenCellList(t){let r={},i=[];for(let s of t){let n={column:s.column,row:s.row,sheet_id:s.sheet_id},a=y.CellAddressToLabel(n,!0);r[a]||(r[a]=a,i.push(n))}return i}RemoveAnnotation(t){let r=t.temp.vertex;r&&(r.Reset(),this.RemoveLeafVertex(r))}UpdateAnnotations(t,r){if(!t){for(let i of this.model.sheets.list)this.UpdateAnnotations(i.annotations,i);return}if(!r)throw new Error("invalid call to UpdateAnnotations with list but no sheet");typeof t<"u"&&!Array.isArray(t)&&(t=[t]);for(let i of t)if(i.formula){i.temp.vertex||(i.temp.vertex=new et);let s=i.temp.vertex;this.AddLeafVertex(s),this.UpdateLeafVertex(s,i.formula,r)}}ResolveSheetID(t,r,i){let s=t.type==="address"?t:t.start;if(s.sheet_id)return!0;if(s.sheet){let n=this.model.sheets.Find(s.sheet);if(n)return s.sheet_id=n.id,!0}else{if(r?.sheet_id)return s.sheet_id=r.sheet_id,!0;if(i?.id)return s.sheet_id=i.id,!0}return!1}ResolveExpressionAddress(t,r){switch(t.type){case"address":if(this.ResolveSheetID(t,r))return new y(t);break;case"range":if(this.ResolveSheetID(t,r))return new y(t.start,t.end);break;case"identifier":{let i=this.model.named_ranges.Get(t.name.toUpperCase());if(i)return new y(i.start,i.end)}break}}NamedRangeToAddressUnit(t){let r=t.name.toUpperCase(),i=this.model.named_ranges.Get(r);if(i)return i.count===1?this.ConstructAddressUnit(i.start,r,t.id,t.position):{type:"range",start:this.ConstructAddressUnit(i.start,r,t.id,t.position),end:this.ConstructAddressUnit(i.end,r,t.id,t.position),label:r,id:t.id,position:t.position}}ConstructAddressUnit(t,r,i,s){return{type:"address",row:t.row,column:t.column,sheet_id:t.sheet_id,label:r,id:i,position:s}}RebuildDependencies(t,r,i,s={addresses:{},ranges:{}},n){if(!i){let a=this.model.sheets.Find(r);a&&(i=a.name)}switch(t.type){case"literal":case"missing":case"operator":break;case"identifier":{let a=t.name.toUpperCase();if(this.model.named_expressions.has(a)){let o=this.model.named_expressions.get(a);o&&this.RebuildDependencies(o,r,i,s,n)}else{let o=this.NamedRangeToAddressUnit(t);o&&(o.type==="address"?s.addresses[o.label]=o:s.ranges[o.label]=o)}}break;case"structured-reference":{let a=this.model.ResolveStructuredReference(t,n);a&&(a.type==="address"?s.addresses[a.sheet_id+"!"+a.label]=a:s.ranges[a.label]=a);let o=this.model.tables.get(t.table.toLowerCase());if(o){let l=n.row;if(l<o.area.start.row||l>o.area.end.row)break;let d=t.column.toLowerCase(),u=-1;if(o.columns){for(let h=0;h<o.columns.length;h++)if(d===o.columns[h]){u=o.area.start.column+h;break}}if(u>=0){let h={label:t.label,type:"address",row:l,column:u,sheet_id:o.area.start.sheet_id,id:t.id,position:t.position};s.addresses[h.sheet_id+"!"+h.label]=h}}}break;case"address":if(!t.sheet_id)if(t.sheet){let a=this.model.sheets.Find(t.sheet);a&&(t.sheet_id=a.id)}else t.sheet_id=r,t.sheet=i;t.sheet_id?s.addresses[t.sheet_id+"!"+t.label]=t:console.warn("invalid address in range [9d]");break;case"range":if(!t.start.sheet_id)if(t.start.sheet){let a=this.model.sheets.Find(t.start.sheet);a&&(t.start.sheet_id=a.id)}else t.start.sheet_id=r,t.start.sheet=i;t.start.sheet_id?s.ranges[t.start.sheet_id+"!"+t.start.label+":"+t.end.label]=t:console.warn("invalid sheet in range",t);break;case"unary":this.RebuildDependencies(t.operand,r,i,s,n);break;case"binary":this.RebuildDependencies(t.left,r,i,s,n),this.RebuildDependencies(t.right,r,i,s,n);break;case"group":t.elements.forEach(a=>this.RebuildDependencies(a,r,i,s,n));break;case"call":{let a=t.args.slice(0),o=this.library.Get(t.name);o&&o.arguments&&o.arguments.forEach((l,d)=>{l&&l.address&&(this.RebuildDependencies(a[d],r,i,void 0,n),a[d]={type:"missing",id:-1})}),a.forEach(l=>this.RebuildDependencies(l,r,i,s,n))}break}return s}UpdateLeafVertex(t,r,i){t.Reset();let s=this.parser.Parse(r);if(s.expression){let n=this.RebuildDependencies(s.expression,i.id,i.name,void 0,{row:0,column:0});for(let a of Object.keys(n.ranges)){let o=n.ranges[a];new y(o.start,o.end).Iterate(d=>{this.AddLeafVertexEdge(d,t)})}for(let a of Object.keys(n.addresses)){let o=n.addresses[a];this.AddLeafVertexEdge(o,t)}}t.expression=s.expression||{type:"missing",id:-1},t.expression_error=!s.valid}RebuildGraphCell(t,r){if(t.area&&t.area.start.column===r.column&&t.area.start.row===r.row){let{start:i,end:s}=t.area,n=i.sheet_id||r.sheet_id;i.sheet_id||(i.sheet_id=n);for(let a=i.column;a<=s.column;a++)for(let o=i.row;o<=s.row;o++)this.ResetInbound({column:a,row:o,sheet_id:n},!0,!1);this.SetDirty(r);for(let a=i.column;a<=s.column;a++)for(let o=i.row;o<=s.row;o++)o===i.row&&a===i.column||this.AddEdge(i,{...i,row:o,column:a})}if(t.type===1){this.ResetInbound(r,!0);let i=this.parser.Parse(t.value);if(i.expression){if(i.expression.type==="call"){let a=this.library.Get(i.expression.name);a&&(a.render||a.click)&&(t.render_function=a.render,t.click_function=a.click)}let n=this.RebuildDependencies(i.expression,r.sheet_id,"",void 0,r);for(let a of Object.keys(n.ranges)){let o=n.ranges[a],l=new y(o.start,o.end);l.entire_row||l.entire_column?this.AddArrayEdge(l,r):l.Iterate(d=>this.AddEdge(d,r))}for(let a of Object.keys(n.addresses)){let o=n.addresses[a];this.AddEdge(o,r)}}let s=this.GetVertex(r,!0);s&&(s.expression=i.expression||{type:"missing",id:-1},s.expression_error=!i.valid)}else t.value!==t.calculated?this.ResetInbound(r,!0,!1):t.type===0&&this.ResetInbound(r,!0,!1,!0)}RebuildGraph(t){if(t){if(!t.start.sheet_id)throw new Error("subset missing sheet id");let r=this.model.sheets.Find(t.start.sheet_id)?.cells;if(r)for(let i=t.start.row;i<=t.end.row;i++){let s=r.data[i];if(s)for(let n=t.start.column;n<=t.end.column;n++){let a=s[n];a&&this.RebuildGraphCell(a,{row:i,column:n,sheet_id:t.start.sheet_id})}}}else for(let r of this.model.sheets.list||[]){let i=r.cells.data.length;for(let s=0;s<i;s++){let n=r.cells.data[s];if(n){let a=n.length;for(let o=0;o<a;o++){let l=n[o];l&&this.RebuildGraphCell(l,{row:s,column:o,sheet_id:r.id})}}}}}IsNativeOrTypedArray(t){return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array}CheckVolatile(t){if(!t.expression||t.expression_error)return!1;let r=!1;return this.parser.Walk(t.expression,i=>{if(i.type==="call"){let s=this.library.Get(i.name);s&&s.volatile&&(r=!0)}return!r}),r}};var tr=class{constructor(e){this.parent_node=e;this.model=Ut`<div id='mask' class='treb-embed-mask'><div id='dialog' class='treb-embed-dialog'><div id='left'><a href='https://treb.app' target='_blank'><div class='treb-icon-64'></div></a></div><div id='middle'><div id='title' class='treb-embed-dialog-title'></div><div id='message' class='treb-embed-dialog-message'></div><div id='about' class='treb-embed-dialog-body'>TREB version ${"23.3.3"}${""}<div class='smaller'><a target=_blank href='https://treb.app'>http://treb.app</a></div></div></div><button type='button' title='Close dialog' id='close' class='close-box'><svg viewBox='0 0 16 16'><path d='M11.854 4.146a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708-.708l7-7a.5.5 0 0 1 .708 0z'/><path d='M4.146 4.146a.5.5 0 0 0 0 .708l7 7a.5.5 0 0 0 .708-.708l-7-7a.5.5 0 0 0-.708 0z'/></svg></button></div></div>`,this.model.close.addEventListener("click",t=>{t.stopPropagation(),t.preventDefault(),this.HideDialog()}),e.appendChild(this.model.mask)}model;visible_=!1;timeout=0;pending_dialog_resoltion=[];options_={type:"initial"};set options(e){if(e.type==="about"&&(e.close_box=!0,e.icon=!0),this.options_.icon!==e.icon&&(this.model.left.style.display=e.icon?"block":"none"),this.options_.close_box!==e.close_box&&(this.model.close.style.display=e.close_box?"block":"none"),this.options_.message!==e.message&&(this.model.message.textContent=e.message||"",this.model.message.style.display=e.message?"block":"none"),this.options_.title!==e.title&&(this.model.title.textContent=e.title||"",this.model.title.style.display=e.title?"block":"none"),this.options_.type!==e.type){let t=this.model.dialog.className.replace(/dialog-type-\S+/g,"").trim();e.type&&(t+=` dialog-type-${e.type}`),this.model.dialog.className=t,e.type==="about"?this.model.about.style.display="block":this.model.about.style.display="none"}this.options_=e}event_handler=e=>{(e.key==="Escape"||e.key==="Esc")&&(e.stopPropagation(),e.preventDefault(),this.visible=!1)};get visible(){return this.visible_}set visible(e){if(e!==this.visible_)if(this.visible_=e,e)this.parent_node.classList.add("masked"),this.model.mask.classList.add("visible"),window.addEventListener("keydown",this.event_handler);else{this.parent_node.classList.remove("masked"),this.model.mask.classList.remove("visible"),window.removeEventListener("keydown",this.event_handler);let t=this.pending_dialog_resoltion.slice(0);this.pending_dialog_resoltion=[],Promise.resolve().then(()=>{for(let r of t)r()})}}Div(e,t){let r=document.createElement("div");return e&&r.setAttribute("class",e),t&&t.appendChild(r),r}Update(e,t=!0){t&&(e={...this.options_,...e}),this.options=e}HideDialog(){this.visible=!1}ShowDialog(e){return new Promise(t=>{this.pending_dialog_resoltion.push(t),this.options=e,this.visible=!0,this.timeout&&(window.clearTimeout(this.timeout),this.timeout=0),e.timeout&&(this.timeout=window.setTimeout(()=>this.HideDialog(),e.timeout))})}};var rr=class{constructor(e){this.container=e;this.node=document.createElement("div"),this.node.classList.add("treb-spinner"),this.node.innerHTML="<div><div></div><div></div><div></div><div></div></div>",e.appendChild(this.node)}node;visible=!1;Show(){this.node.classList.add("visible")}Hide(){this.node.classList.remove("visible")}};var ir={formula_bar:!0,in_cell_editor:!0,undo:!0,scrollbars:!0,headers:!0,export:!0,popout:!1,tab_bar:"auto",resizable:!0,hyperlinks:"_blank",max_file_size:94208,dnd:!1,add_tab:!1,expand_formula_button:!1,delete_tab:!1,expand:!1,markdown:!1,spinner:!1,complex:"off"};var sr=class extends te{constructor(t,r,i){super();this.container=t;this.options=r;this.theme=i;this.outer_container=t.parentElement;let s=T.decimal_separator;for(let h of[0,128,192,212,256])this.colors.push(`rgb(${h}, ${h}, ${h})`);for(let h of["red","orange","yellow","green","blue","indigo","violet"])this.colors.push(h);this.model=Ut`<div id='root' class='treb-toolbar'><div class='group narrow'><button id='text-align' data-command='align-left' title='Align left'><div class='treb-toolbar-icon treb-icon-text-align-left'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button id='align-left-drop' data-command='align-left' title='Align left', data-replace='text-align'><div class='treb-toolbar-icon treb-icon-text-align-left'/></button></li><li><button id='align-center-drop' data-command='align-center' title='Align center', data-replace='text-align'><div class='treb-toolbar-icon treb-icon-text-align-center'/></button></li><li><button id='align-right-drop' data-command='align-right' title='Align right', data-replace='text-align'><div class='treb-toolbar-icon treb-icon-text-align-right'/></button></li></ul></div></div><div class='group narrow'><button id='vertical-align' data-command='align-top' title='Align top'><div class='treb-toolbar-icon treb-icon-text-align-top'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button id='align-top-drop' data-command='align-top' title='Align top', data-replace='vertical-align'><div class='treb-toolbar-icon treb-icon-text-align-top'/></button></li><li><button id='align-middle-drop' data-command='align-middle' title='Align middle', data-replace='vertical-align'><div class='treb-toolbar-icon treb-icon-text-align-middle'/></button></li><li><button id='align-bottom-drop' data-command='align-bottom' title='Align bottom', data-replace='vertical-align'><div class='treb-toolbar-icon treb-icon-text-align-bottom'/></button></li></ul></div></div>${r.file_menu?"<div class='group wide'><button title='File options' class='drop-button'><div class='treb-toolbar-icon treb-icon-file-menu'/></button><div class='drop-menu' tabindex='-1'><ul><li><button class='text' data-command='reset'>New Document</button></li><hr/><li><button class='text' data-command='import-desktop'>Open File</button></li><li><button class='text' data-command='save-json'>Save JSON</button></li><hr/><li><button class='text' data-command='export-xlsx'>Export XLSX</button></li></ul></div></div>":""}<div class='group wide'><button id='align-left' title='Align left' data-command='align-left'><div class='treb-toolbar-icon treb-icon-text-align-left'/></button><button id='align-center' title='Align center' data-command='align-center'><div class='treb-toolbar-icon treb-icon-text-align-center'/></button><button id='align-right' title='Align right' data-command='align-right'><div class='treb-toolbar-icon treb-icon-text-align-right'/></button></div><div class='group wide'><button id='align-top' data-command='align-top' title='Align top'><div class='treb-toolbar-icon treb-icon-text-align-top'/></button><button id='align-middle' data-command='align-middle' title='Align middle'><div class='treb-toolbar-icon treb-icon-text-align-middle'/></button><button id='align-bottom' data-command='align-bottom' title='Align bottom'><div class='treb-toolbar-icon treb-icon-text-align-bottom'/></button></div><div class='group'><button id='wrap' data-command='wrap' title='Wrap text'><div class='treb-toolbar-icon treb-icon-wrap-text'/></button><button id='merge' data-command='merge' title='Merge cells'><div class='active-icon treb-toolbar-icon treb-icon-unmerge-cells'></div><div class='inactive-icon treb-toolbar-icon treb-icon-merge-cells'></div></button><button id='lock' data-command='lock'><div class='treb-toolbar-icon treb-icon-lock'/></button><button id='comment' class='drop-button' title='Comment'><div class='treb-toolbar-icon treb-icon-comment'/></button><div class='drop-menu' tabindex='-1'><div class='comment-editor'><div class='label' id='comment-label'></div><textarea id='comment-text' class='comment-textarea'></textarea><div class='comment-buttons'><button data-command='clear-comment'>Clear</button><button id='update-comment' data-command='update-comment'>Save</button></div></div></div></div><div class='group'><button class='color-button' data-command='background-color' title='Background color'><div class='treb-toolbar-icon treb-icon-fill-color'></div><div id='background-color-bar' class='color-bar' ></div></button><button class='drop'></button><div class='drop-menu color-chooser' data-target='background' tabindex='-1'></div></div><div class='group'><button class='color-button' data-command='foreground-color' title='Text color'><div class='treb-toolbar-icon treb-icon-text-color'></div><div id='foreground-color-bar' class='color-bar' ></div></button><button class='drop'></button><div class='drop-menu color-chooser' data-target='foreground' tabindex='-1'></div></div>${r.font_scale?`<div class='group wide'><div class='container font-size'><input value='' id='font-size-input' title='Font scale'></div><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button class='text' data-command='font-scale' data-scale='0.80'>0${s}80</button></li><li><button class='text' data-command='font-scale' data-scale='0.90'>0${s}90</button></li><li><button class='text' data-command='font-scale' data-scale='1.00'>1${s}00</button></li><li><button class='text' data-command='font-scale' data-scale='1.10'>1${s}10</button></li><li><button class='text' data-command='font-scale' data-scale='1.20'>1${s}20</button></li><li><button class='text' data-command='font-scale' data-scale='1.50'>1${s}50</button></li><li><button class='text' data-command='font-scale' data-scale='2.00'>2${s}00</button></li></ul></div></div>`:""}<div class='group'><button id='update-border' data-command='border-bottom' title='Bottom border'><div class='treb-toolbar-icon treb-icon-border-bottom'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button id='border-top' data-command='border-top' title='Top border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-top'/></button></li><li><button id='border-left' data-command='border-left' title='Left border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-left'/></button></li><li><button id='border-right' data-command='border-right' title='Right border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-right'/></button></li><li><button id='border-bottom' data-command='border-bottom' title='Bottom border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-bottom'/></button></li><li><button id='border-double-bottom' data-command='border-double-bottom' title='Double bottom border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-double-bottom'/></button></li><li><button id='border-all' data-command='border-all' title='All borders' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-all'/></button></li><li><button id='border-outside' data-command='border-outside' title='Outside borders' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-outer'/></button></li><li><button id='border-none' data-command='border-none' title='Remove borders' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-none'/></button></li><hr/><li><button id='border-color' class='color-button drop-button' data-position='horizontal' title='Border color'><div class='treb-toolbar-icon treb-icon-palette'></div><div id='border-color-bar' class='color-bar'></div></button><div class='drop-menu color-chooser' data-target='border' tabindex='-1'></div></li></ul></div></div><div class='group'><button id='layout' class='drop-button' title='Rows/columns'><div class='treb-toolbar-icon treb-icon-layout'/></button><div class='drop-menu' tabindex='-1'><ul><li><button class='text' data-command='insert-row'>Insert row</button></li><li><button class='text' data-command='insert-column'>Insert column</button></li><li><button class='text' data-command='delete-row'>Delete row</button></li><li><button class='text' data-command='delete-column'>Delete column</button></li></ul>${r.add_tab?"<ul><hr/><li><button class='text' data-command='insert-sheet'>Insert sheet</button></li><li><button class='text' data-command='delete-sheet'>Delete sheet</button></li></ul>":""}</div></div><div class='group'><button id='freeze' data-command='freeze'><div class='treb-toolbar-icon treb-icon-freeze'/></button></div><div class='group'><div class='container'><input value='General' id='number-format-input' title='Number format'></div><button class='drop'></button><div class='drop-menu scroll' tabindex='-1' data-number-formats></div></div><div class='split-button'><button data-command='decrease-decimal' title='Decrease precision'><div>0${s}0</div></button><button data-command='increase-decimal' title='Increase precision'><div>0${s}00</div></button></div><div class='group'><button id='insert-annotation' data-command='column-chart' title='Insert column chart'><div class='treb-toolbar-icon treb-icon-column-chart'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button title='Insert column chart' id='column-chart' data-command='column-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-column-chart'/></button></li><li><button title='Insert donut chart' id='donut-chart' data-command='donut-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-donut-chart'/></button></li><li><button title='Insert bar chart' id='bar-chart' data-command='bar-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-bar-chart'/></button></li><li><button title='Insert line chart' id='line-chart' data-command='line-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-line-chart'/></button></li><hr/><li><button id='insert-image' data-command='insert-image' title='Insert image' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-image'/></button></li></ul></div></div>${r.toolbar_recalculate_button?"<div class='group end-group'><button data-command='recalculate' title='Recalculate'><div class='treb-toolbar-icon treb-icon-recalculate'></div></button></div>":""}<div class='staging'><div id='color-chooser' class='color-chooser-main'><div class='color-header'>Theme colors</div><div id='theme-color-list' class='color-list'></div><div class='color-header other-colors'>Other colors</div><div id='color-list' class='color-list'></div><div class='new-color'><input id='color-input' placeholder='New Color'><button id='color-button'><div class='treb-toolbar-icon treb-icon-check'></div></button></div></div></div></div>`,this.model["background-color-bar"].style.color="yellow",this.model["foreground-color-bar"].style.color="blue",this.model["border-color-bar"].style.color="#333";let n=this.model["color-button"],a=this.model["color-input"];this.UpdateTheme(i),n.addEventListener("click",()=>{this.CommitColor({text:a.value||""})}),a.addEventListener("keydown",h=>{h.key==="Enter"&&this.CommitColor({text:a.value||""})}),a.addEventListener("input",()=>{n.style.backgroundColor="";let h=a.value||"";n.style.backgroundColor=h;let p=re.MeasureColor(h),f=it.RGBToHSL(p[0],p[1],p[2]);n.style.color=f.l>.5?"":"#fff"}),this.model["comment-text"].addEventListener("keydown",h=>{if(h.key==="Enter"&&h.ctrlKey){h.stopPropagation(),h.preventDefault(),this.model["update-comment"].click();return}});let o="",l=this.model["font-size-input"];l&&(l.addEventListener("focus",()=>o=l.value||""),l.addEventListener("keydown",h=>{switch(h.key){case"Enter":if(l.value){let p=l.value;T.decimal_separator!=="."&&(p=p.replace(new RegExp(T.decimal_separator,"g"),".")),this.Publish({type:"font-size",style:A.ParseFontSize(p)})}else this.Publish({type:"font-size",style:{font_size:void 0}});break;case"Escape":u.value=d,this.Publish({type:"cancel"});break;default:return}h.stopPropagation(),h.preventDefault()}));let d="",u=this.model["number-format-input"];u.addEventListener("focus",()=>d=u.value||""),u.addEventListener("keydown",h=>{switch(h.key){case"Enter":this.Publish({type:"format",format:u.value||""});break;case"Escape":u.value=d,this.Publish({type:"cancel"});break;default:return}h.stopPropagation(),h.preventDefault()}),this.model.root.addEventListener("click",h=>{this.HandleClick(h)}),/narrow/i.test((r.toolbar||"").toString())&&this.model.root.classList.add("narrow"),t.appendChild(this.model.root)}model;number_formats=[];date_formats=[];colors=[];color_target;state;background_color={text:"yellow"};foreground_color={text:"blue"};border_color=void 0;outer_container;menu_map={};menu_index=1;HandleClick(t){let r=this.model["color-button"],i=this.model["color-input"],s=t.target,n=s?.dataset?.command;if(n){let a={};if(/^border-/.test(n))a.border=n,a.color=this.border_color,n="border";else switch(n){case"font-scale":a.scale=s?.dataset?.scale||1;break;case"clear-comment":case"update-comment":this.state?.selection&&!this.state.selection.empty&&(a.address={...this.state.selection.target}),a.comment=this.model["comment-text"].value||"";break;case"background-color":a.target="background",a.color=this.background_color;break;case"foreground-color":a.target="foreground",a.color=this.foreground_color;break;case"border-color":a.target="border",a.color=this.border_color;break}this.Publish({type:"button",command:n,data:a});return}if(s?.classList?.contains("drop")||s?.classList?.contains("drop-button")){let a=s.parentElement;for(;a&&!a.classList.contains("group");){if(a===this.model.root)return;a=a.parentElement}if(a||s.dataset.position==="horizontal"){let o,l;if(s.dataset.menu_target)l=this.menu_map[s.dataset.menu_target];else{l=s.nextSibling;let d=(this.menu_index++).toString();this.menu_map[d]=l,s.dataset.menu_target=d,l.style.position="absolute",l.classList.add("treb-toolbar-drop-menu"),s.dataset.position!=="horizontal"&&this.outer_container?.appendChild(l)}if(l?.classList?.contains("drop-menu"))if(s===this.model.comment&&(this.model["comment-label"].textContent=this.state?.selection?.target?y.CellAddressToLabel(this.state?.selection.target):"",this.model["comment-text"].value=this.state?.comment||"",o=this.model["comment-text"]),l.dataset.numberFormats!==void 0&&this.RenderNumberFormats(l),l.classList.contains("color-chooser")&&(this.color_target=l.dataset?.target||"",this.RenderColors(this.model["color-list"]),i.value="",r.style.backgroundColor="",r.style.color="",l.appendChild(this.model["color-chooser"])),s.dataset?.position==="horizontal")this.Focus(l,s.offsetWidth+12,s.offsetTop-8,o);else{let d=(s.classList.contains("drop-button")?s:a)?.getBoundingClientRect()||{x:0},u=this.outer_container?.getBoundingClientRect()||{x:0,right:0},h=d.x-u.x,p=l.offsetWidth;p>0&&h+p>u.right&&(h=Math.max(0,u.right-p-10)),this.Focus(l,h,s.offsetHeight+4,o)}}return}}ResolveColor(t,r){return M(this.theme,t||r)||""}CommitColor(t){switch(this.color_target){case"background":this.model["background-color-bar"].style.color=this.ResolveColor(t,{theme:0}),this.background_color=t?{...t}:void 0;break;case"border":this.model["border-color-bar"].style.color=this.ResolveColor(t,{theme:1}),this.border_color=t?{...t}:void 0;break;case"foreground":t||(t={theme:1}),this.model["foreground-color-bar"].style.color=this.ResolveColor(t,{theme:1}),this.foreground_color=t?{...t}:void 0;break}this.Publish({type:"button",command:"color",data:{color:t?{...t}:void 0,target:this.color_target||""}})}Focus(t,r,i,s){t.style.left=r+"px",t.style.top=i+"px",t.classList.add("enabled"),requestAnimationFrame(()=>t.classList.add("visible"));let n=d=>{d.key==="Escape"&&(d.stopPropagation(),d.preventDefault(),this.Publish({type:"cancel"}))};window.addEventListener("keydown",n);let a=d=>{let u=d.target;if(u.dataset?.replace){let h=this.model[u.dataset.replace];h.innerHTML=u.innerHTML,h.setAttribute("title",u.getAttribute("title")||""),h.dataset.command=u.dataset.command||void 0}if(u.dataset?.command==="number-format"){let h=u.textContent||"General";this.model["number-format-input"].value=u.textContent||"",this.Publish({type:"format",format:h})}else if(u.dataset?.command||u.classList?.contains("drop-button")){this.HandleClick(d);return}else if(u.classList?.contains("color-swatch"))if(typeof u?.dataset?.theme<"u"){let h=Number(u?.dataset?.theme);isNaN(h)&&(h=0);let p={theme:h||0};if(u?.dataset?.tint){let f=Number(u.dataset.tint);f&&!isNaN(f)&&(p.tint=f)}this.CommitColor(p)}else{let h=u?.dataset?.color||"";this.CommitColor(h?{text:h}:void 0)}d.stopPropagation()};t.addEventListener("click",a);let o=()=>{t.classList.contains("visible")||(t.style.left="",t.style.top=""),t.removeEventListener("transitionend",o)},l=d=>{let u=d.relatedTarget;u&&t.contains(u)||(t.classList.remove("visible"),t.removeEventListener("focusout",l),t.removeEventListener("click",a),window.removeEventListener("keydown",n),t.addEventListener("transitionend",o))};t.addEventListener("focusout",l),requestAnimationFrame(()=>(s||t).focus())}UpdateState(t){this.state=t;let r={"align-center":t.style&&t.style?.horizontal_align===A.HorizontalAlign.Center,"align-left":t.style&&t.style?.horizontal_align===A.HorizontalAlign.Left,"align-right":t.style&&t.style?.horizontal_align===A.HorizontalAlign.Right,"align-top":t.style&&t.style?.vertical_align===A.VerticalAlign.Top,"align-middle":t.style&&t.style?.vertical_align===A.VerticalAlign.Middle,"align-bottom":t.style&&t.style?.vertical_align===A.VerticalAlign.Bottom,wrap:t.style&&!!t.style.wrap,comment:!!t.comment},i=this.model.freeze;t.frozen?(i.classList.add("active"),i.setAttribute("title","Unfreeze panes")):(i.classList.remove("active"),i.setAttribute("title","Freeze panes")),t.style?.locked?(this.model.lock.classList.add("active"),this.model.lock.setAttribute("title","Unlock cells")):(this.model.lock.classList.remove("active"),this.model.lock.setAttribute("title","Lock cells"));let s=this.model.merge;t.merge?(s.classList.add("active"),s.dataset.command="unmerge",s.setAttribute("title","Unmerge cells")):(s.classList.remove("active"),s.dataset.command="merge",s.setAttribute("title","Merge cells"));let n=this.model["font-size-input"];if(n){let o=A.RelativeFontSize(t.style||{},this.theme.grid_cell||{}).toFixed(2);o=o.replace(/\./g,T.decimal_separator),n.value=o}let a=t.style?.number_format||"";this.model["number-format-input"].value=D.SymbolicName(a)||a,Object.keys(r).forEach(o=>{r[o]?this.model[o]?.classList.add("active"):this.model[o]?.classList.remove("active")})}UpdateTheme(t){let r=this.model["theme-color-list"],i=[],s=["Background","Text","Background","Text","Accent","Accent","Accent","Accent","Accent","Accent"],n=0;if(t.theme_colors)if(this.options.tint_theme_colors)for(let o of[.5,.25,0,-.25,-.5]){for(i.push("<div class='color-list-row'>"),n=0;n<10;n++){let l=t.theme_colors[n]||"#000";if(o){let u=Math.round(Math.abs(o)*100),h=o>0?"lighter":"darker";l+=` (${u}% ${h})`}let d=this.ResolveColor({theme:n,tint:o},{});i.push(`<button data-color='${d}' class='color-swatch' data-tint=${o} data-theme=${n} title='${s[n]}: ${l}' ></button>`)}i.push("</div>")}else{for(i.push("<div class='color-list-row'>"),n=0;n<10;n++){let o=t.theme_colors[n]||"#000";i.push(`<button data-color='${o}' class='color-swatch' data-theme=${n} title='${s[n]}: ${o}' ></button>`)}i.push("</div>")}r.innerHTML=i.join("");let a=r.querySelectorAll("button[data-color]");for(let o=0;o<a.length;o++)a[o].style.backgroundColor=a[o].dataset.color||""}RenderColors(t){let r=["<div class='color-list-row'>","<button class='color-swatch default-color' data-color='' title='Default color'></button>"],i=0;for(;i<9&&i<this.colors.length;i++){let n=this.colors[i];r.push(`<button class='color-swatch' data-color='${n}' title='${n}' ></button>`)}for(r.push("</div>");i<this.colors.length;){r.push("<div class='color-list-row'>");let n=i+10;for(;i<this.colors.length&&i<n;i++){let a=this.colors[i];r.push(`<button class='color-swatch' data-color='${a}' title='${a}' ></button>`)}r.push("</div>")}t.innerHTML=r.join("");let s=t.querySelectorAll("button.color-swatch");for(let n=0;n<s.length;n++){let a=s[n];a.style.background=a.dataset.color||""}}RenderNumberFormats(t){t.innerHTML=`<ul>${this.number_formats.map(r=>Tt`<li><button data-command='number-format' class='text'>${r}</button></li>`).join(`
|
|
11
|
-
`)}</ul><hr/><ul>${this.date_formats.map(r=>
|
|
12
|
-
`)}</ul>`}UpdateDocumentStyles(t,r,i){let s=["General","Number","Integer","Percent","Fraction","Accounting","Currency","Scientific"],n=["Timestamp","Long Date","Short Date"];for(let o of t){if(D.SymbolicName(D.Translate(o)))continue;D.Get(o).date_format?n.push(o):s.push(o)}this.number_formats=s,this.date_formats=n;let a=this.colors.map(o=>re.MeasureColor(o));for(let o of r){let l=re.MeasureColor(o);a.some(d=>d[0]===l[0]&&d[1]===l[1]&&d[2]===l[2])||(this.colors.push(o),a.push(l))}}};var Me=class{constructor(e=0,t=0,r=100,i=100){this.left=e;this.top=t;this.right=r;this.bottom=i}get width(){return this.right-this.left}get height(){return this.bottom-this.top}get center(){return{x:this.left+this.width/2,y:this.top+this.height/2}}};var wt="http://www.w3.org/2000/svg",U=(c,e={},t)=>{let r=document.createElementNS(wt,c);for(let i of Object.keys(e))if(e[i]!==void 0){let s=e[i];r.setAttribute(i,Array.isArray(s)?s.join(" "):s.toString())}return t&&(r.textContent=t),r},nr=class{parent;svg_node;text_measurement_node;container_group;group;axis_group;label_group;size={width:0,height:0};bounds=new Me;constructor(){this.container_group=U("g"),this.group=U("g"),this.axis_group=U("g",{class:"axis-group"}),this.label_group=U("g",{class:"label-group"}),this.container_group.appendChild(this.axis_group),this.container_group.appendChild(this.group),this.container_group.appendChild(this.label_group)}Initialize(e){this.parent=e,this.svg_node=U("svg",{class:"treb-chart"}),this.svg_node.style.overflow="hidden",this.svg_node.style.position="relative",this.svg_node.style.width="100%",this.svg_node.style.height="100%",this.svg_node.appendChild(this.container_group),this.parent.appendChild(this.svg_node),this.Resize()}Legend(e){let t=U("g");this.group.appendChild(t);let r=U("text");t.appendChild(r),t.setAttribute("class","legend");let i=[[]],s=10,n=e.area.width,a=0,o=0,l=e.area.width,d=e.style===1?14:26,u=e.labels.map((_,b)=>{r.textContent=_.label;let g=r.getBoundingClientRect(),x={width:g.width,height:g.height},v=x.width+d+s;return o=Math.max(o,x.height),e.layout===1?i[b]=[b]:v>n?i[a].length===0?(i[a].push(b),a++,i[a]=[],n=l):(a++,i[a]=[b],n=l-v):(i[a].push(b),n-=v),x});t.removeChild(r);let h=o,p=e.layout||0;p===0&&i.every(_=>_.length<=1)&&(p=0);for(let _=0;_<i.length;_++){let b=i[_].reduce((v,w)=>v+u[w].width+d,(i[_].length-1)*s),g=0,x=p===0?Math.round((l-b)/2):Math.round(s/2);for(let v=0;v<i[_].length;v++){let w=i[_][v],S=u[w],R=e.labels[w],E=h-1,H=!1;typeof navigator<"u"&&(H=/trident/i.test(navigator?.userAgent||""));let Z=typeof R.index=="number"?R.index:w+1;t.appendChild(U("text",{"dominant-baseline":"middle",x:x+d,y:h,dy:H?".3em":void 0},R.label)),e.style===1?t.appendChild(U("rect",{class:`series-${Z}`,x,y:E-4,width:8,height:8})):t.appendChild(U("rect",{class:`series-${Z}`,x,y:E-1,width:d-3,height:2})),g=Math.max(g,S.height),x+=S.width+d+s}h=Math.round(h+g*1.1)}let f=t.getBoundingClientRect(),m={width:f.width,height:f.height+o};switch(e.position){case 1:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.bottom-m.height})`);break;case 2:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`);break;case 3:t.setAttribute("transform",`translate(${e.area.right-m.width}, ${e.area.top})`);break;case 0:default:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`)}e.position===0?e.area.top+=m.height||0:e.position===3?e.area.right-=(m.width||0)+8:e.position===2?e.area.left+=(m.width||0)+8:e.area.bottom-=m.height||0}Clear(e){this.group.textContent="",this.axis_group.textContent="",this.label_group.textContent="",e="treb-chart"+(e?" "+e:""),this.svg_node.setAttribute("class",e)}Resize(){let e=this.parent.getBoundingClientRect();this.svg_node.setAttribute("width",e.width.toString()),this.svg_node.setAttribute("height",e.height.toString()),this.size={width:e.width,height:e.height}}Prerender(){let e=this.svg_node.getBoundingClientRect();this.bounds.top=e.top,this.bounds.left=e.left,this.bounds.right=e.right,this.bounds.bottom=e.bottom}RenderTitle(e,t,r,i){let s=U("text",{class:"chart-title",x:Math.round(t.width/2)},e);s.style.textAnchor="middle",this.group.appendChild(s);let n=s.getBoundingClientRect();switch(i){case"bottom":s.setAttribute("y",Math.round(t.bottom-n.height).toString()),t.bottom-=n.height+r;break;default:s.setAttribute("y",Math.round(t.top+r+n.height).toString()),t.top+=n.height+r;break}}MeasureText(e,t,r=!1){this.text_measurement_node||(this.text_measurement_node=U("text",{x:"-100px",y:"-100px"}),this.svg_node.appendChild(this.text_measurement_node)),typeof t<"u"?(typeof t=="string"&&(t=[t]),this.text_measurement_node.setAttribute("class",t.join(" "))):this.text_measurement_node.setAttribute("class",""),this.text_measurement_node.textContent=e;let i=this.text_measurement_node.getBoundingClientRect(),s={width:i.width,height:i.height,y_offset:i.height-(this.bounds.top-i.top-100)};return r&&(s.width=Math.ceil(s.width),s.height=Math.ceil(s.height),s.y_offset=Math.ceil(s.y_offset)),s}RenderTicks(e,t,r,i,s){let n=[],a=e.width/i;for(let o=0;o<i;o++){let l=Math.round(e.left+a/2+a*o)-.5;n.push(`M${l} ${t} L${l} ${r}`)}this.group.appendChild(U("path",{d:n,class:s}))}RenderXAxisBar(e,t,r,i,s){let n=r.length;if(!n)return;let a=4,o=t?e.width/n:e.width/(n-1),l=t?o/2:0,d=1,u=!0;for(;u;){u=!1;let h=0;for(let p=0;p<n;p+=d){let f=Math.round(e.left+l+o*p),m=f-i[p].width/2;if(h&&m<=h){d++,u=!0;break}h=f+i[p].width/2+a}}for(let h=0;h<n;h+=d){let p=Math.round(e.left+l+o*h);this.RenderText(this.axis_group,r[h],"center",{x:p,y:e.bottom},s)}}RenderXAxisTicks(e,t,r){let i=t?e.width/r:e.width/(r-1),s=t?i/2:0,n=[];for(let a=0;a<r;a++){let o=Math.round(e.left+s+i*a)+.5;n.push(`M${o},${e.bottom+.5} v${6}`)}this.axis_group.appendChild(U("path",{d:n.join(" "),class:"x-axis-tick axis-tick"}))}RenderXAxis(e,t,r,i,s){let n=r.length;if(!n)return;let a=4,o=t?e.width/n:e.width/(n-1),l=t?o/2:0,d=1,u=!0,h=(r.length-1)%2===0,p=(r.length-1)%3===0;for(;u;){u=!1;let f=0;for(let m=0;m<n;m+=d){let _=Math.round(e.left+l+o*m),b=_-i[m].width/2;if(f&&b<=f){d++,u=!0;break}f=_+i[m].width/2+a}}d===3&&!p&&h&&d++;for(let f=0;f<n;f+=d){let m=Math.round(e.left+l+o*f);this.RenderText(this.axis_group,r[f],"center",{x:m,y:e.bottom},s)}}RenderYAxisBar(e,t,r,i){r=r.slice(0),r.reverse();let s=r.length;if(!s)return;let n=e.height/s,a=1,o=!0;for(;o;){o=!1;let l=0;for(let d=0;d<s;d+=a){let u=r[d],h=Math.round(e.bottom-n*(d+.5)+u.metrics.height/4);if(l&&h>=l){a++,o=!0;break}l=h-u.metrics.height}}for(let l=0;l<s;l+=a){let d=r[l],u=Math.round(e.bottom-n*(l+.5)+d.metrics.height/4);this.RenderText(this.axis_group,d.label,"right",{x:t,y:u},i)}}RenderYAxis(e,t,r,i){let s=r.length;if(!s)return;let n=e.height/(s-1),a=1,o=!0;for(;o;){o=!1;let l=0;for(let d=0;d<s;d+=a){let u=r[d],h=Math.round(e.bottom-n*d+u.metrics.height/4);if(l&&h>=l){a++,o=!0;break}l=h-u.metrics.height}}for(let l=0;l<s;l+=a){let d=r[l],u=Math.round(e.bottom-n*l+d.metrics.height/4);this.RenderText(this.axis_group,d.label,"right",{x:t,y:u},i)}}LineProperties(e,t){let r=t.x-e.x,i=t.y-e.y;return{length:Math.sqrt(r*r+i*i),angle:Math.atan2(i,r)}}RenderSmoothLine(e,t,r=!1,i,s){let n=U("g"),a=[],o=[],l=t.length,d=l-1,u=e.width/l/2,h=[],p=t.map((_,b)=>{if(!(typeof _>"u"))return{x:Math.round(e.left+e.width/d*b),y:e.bottom-_}}),f=[],m=()=>{if(f.length<2)return;let _="",b=f[0],g=f[f.length-1];f.length===2?_=`${f[0].x},${f[0].y} L${f[1].x},${f[1].y}`:f.length>2&&(_=""+this.CatmullRomChain(f).map(v=>`${v.x},${v.y}`).join(" L")),_&&(a.push("M"+_),r&&(o.push(`M ${b.x},${e.bottom} L ${b.x},${b.y}`),o.push("L"+_),o.push(`L ${g.x},${e.bottom}`)))};for(let _ of p)_?f.push(_):(m(),f=[]);if(f.length&&m(),r&&n.appendChild(U("path",{class:"fill",d:o})),n.appendChild(U("path",{class:"line",d:a})),typeof s<"u"&&(typeof s=="string"&&(s=[s]),n.setAttribute("class",s.join(" "))),this.group.appendChild(n),i&&h.length){let _=document.createElementNS(wt,"g");for(let b of h){let g=U("circle",{cx:b.x,cy:b.y,r:u});g.addEventListener("mouseenter",x=>{this.parent.setAttribute("title",i[b.i]||"")}),g.addEventListener("mouseleave",x=>{this.parent.setAttribute("title","")}),_.appendChild(g)}_.setAttribute("class","mouse-layer"),this.group.appendChild(_)}}RenderLine(e,t,r=!1,i,s){let n=document.createElementNS(wt,"g"),a=[],o=[],l=t.length,d=l-1,u=e.width/l/2,h=[],p=0,f=!0,m;for(;p<l;p++){let _=t[p];if(typeof _>"u"){f=!0,r&&typeof m<"u"&&o.push(`L${m} ${e.bottom}Z`),m=void 0;continue}let b=Math.round(+e.left+e.width/d*p);f?(r&&o.push(`M${b} ${e.bottom} L${b} ${e.bottom-_}`),a.push(`M${b} ${e.bottom-_}`)):(a.push(`L${b} ${e.bottom-_}`),o.push(`L${b} ${e.bottom-_}`)),h.push({x:b,y:e.bottom-_,i:p}),m=b,f=!1}if(r&&typeof m<"u"&&o.push(`L${m} ${e.bottom}Z`),r&&n.appendChild(U("path",{class:"fill",d:o})),n.appendChild(U("path",{class:"line",d:a})),typeof s<"u"&&(typeof s=="string"&&(s=[s]),n.setAttribute("class",s.join(" "))),this.group.appendChild(n),i&&h.length){let _=document.createElementNS(wt,"g");for(let b of h){let g=U("circle",{cx:b.x,cy:b.y,r:u});g.addEventListener("mouseenter",x=>{this.parent.setAttribute("title",i[b.i]||"")}),g.addEventListener("mouseleave",x=>{this.parent.setAttribute("title","")}),_.appendChild(g)}_.setAttribute("class","mouse-layer"),this.group.appendChild(_)}}RenderBarGrid(e,t,r){let i=[],s=e.width/t;for(let n=0;n<=t;n++){let a=Math.round(e.left+s*n)-.5;i.push(`M${a} ${e.top} L${a} ${e.bottom}`)}this.group.appendChild(U("path",{d:i,class:r}))}RenderGrid(e,t,r=0,i){let s=[],n=e.height/t;for(let a=0;a<=t;a++){let o=Math.round(e.top+n*a)-.5;s.push(`M${e.left} ${o} L${e.right} ${o}`)}n=e.width/(r-1);for(let a=0;a<r;a++){let o=Math.round(e.left+n*a)-.5;s.push(`M${o} ${e.top} L${o} ${e.bottom}`)}this.group.appendChild(U("path",{d:s,class:i}))}MultiplyPoint(e,t){return{x:e.x*t,y:e.y*t}}AddPoints(e,t){return{x:e.x+t.x,y:e.y+t.y}}CatmullRomSpline(e,t){let r=.5;r=r/2;let i=(u,h,p)=>{let{x:f,y:m}=h,{x:_,y:b}=p;return((_-f)**2+(b-m)**2)**r+u},s=0,n=i(s,e[0],e[1]),a=i(n,e[1],e[2]),o=i(a,e[2],e[3]),l=(a-n)/t,d=[];for(let u=0;u<t;u++){let h=n+l*u,p=this.AddPoints(this.MultiplyPoint(e[0],(n-h)/(n-s)),this.MultiplyPoint(e[1],(h-s)/(n-s))),f=this.AddPoints(this.MultiplyPoint(e[1],(a-h)/(a-n)),this.MultiplyPoint(e[2],(h-n)/(a-n))),m=this.AddPoints(this.MultiplyPoint(e[2],(o-h)/(o-a)),this.MultiplyPoint(e[3],(h-a)/(o-a))),_=this.AddPoints(this.MultiplyPoint(p,(a-h)/(a-s)),this.MultiplyPoint(f,(h-s)/(a-s))),b=this.AddPoints(this.MultiplyPoint(f,(o-h)/(o-n)),this.MultiplyPoint(m,(h-n)/(o-n))),g=this.AddPoints(this.MultiplyPoint(_,(a-h)/(a-n)),this.MultiplyPoint(b,(h-n)/(a-n)));d.push(g)}return d}CatmullRomChain(e,t=30){let r=e.slice(0),i=[],s=r.length;if(s){let n=r[s-1].x-r[s-2].x,a=r[s-1].y-r[s-2].y;r.push({x:r[s-1].x+n,y:r[s-1].y+a}),r.push({x:r[s-1].x+n,y:r[s-1].y+a}),n=r[1].x-r[0].x,a=r[1].y-r[0].y,r.unshift({x:r[0].x-n,y:r[0].y-a});for(let o=0;o<r.length-4;o++){let l=r.slice(o,o+4),d=this.CatmullRomSpline(l,t);i.push(...d)}}return i}RenderDataLabels(e,t,r,i,s,n,a){let o=Math.max(t.length,r.length),l=i.max-i.min||1,d=s.max-s.min||1;for(let u=0;u<o;u++){let h=t[u],p=r[u];if(h!==void 0&&p!==void 0){let f={x:e.left+(h-i.min)/l*e.width,y:e.bottom-(p-s.min)/d*e.height},m=n[u];if(m){this.label_group.appendChild(U("circle",{class:"label-target",cx:f.x,cy:f.y,r:10}));let _=U("g",{class:"data-label",transform:`translate(${f.x+10},${f.y})`});this.label_group.appendChild(_);let b=U("circle",{cx:-10,y:0,r:5,class:`marker-highlight series-${a}`});_.appendChild(b);let g=U("text",{x:4,y:0},m);_.appendChild(g);let x=g.getBoundingClientRect(),v=x.height,w=x.width+8;w+15+f.x>=e.right&&(_.setAttribute("transform",`translate(${f.x-w-15},${f.y})`),b.setAttribute("cx",(w+15).toString()));let S=U("path",{d:`M0,5 h${w} v-${v} h-${w} Z`});_.insertBefore(S,g)}}}}RenderScatterSeries(e,t,r,i,s,n=!0,a=!1,o=!1,l=!1,d=!1,u){let h=Math.max(t.length,r.length),p=i.max-i.min||1,f=s.max-s.min||1,m=[],_=[],b=[],g=U("g",{class:u});this.group.appendChild(g);for(let x=0;x<h;x++){let v=t[x],w=r[x];typeof v>"u"||typeof w>"u"?m.push(void 0):m.push({x:e.left+(v-i.min)/p*e.width,y:e.bottom-(w-s.min)/f*e.height})}if(n){let x=[],v=d?()=>x.length===2?`${x[0].x},${x[0].y} L${x[1].x},${x[1].y}`:x.length>2?this.CatmullRomChain(x).map(S=>`${S.x},${S.y}`).join(" L"):"":()=>x.map(w=>`${w.x},${w.y}`).join(" L");for(let w of m)if(w)x.push(w);else{if(x.length>=2){let S=v();_.push("M"+S),b.push(`M${x[0].x},${e.bottom}L`+S+`L${x[x.length-1].x},${e.bottom}Z`)}x=[]}if(x.length>=2){let w=v();_.push("M"+w),b.push(`M${x[0].x},${e.bottom}L`+w+`L${x[x.length-1].x},${e.bottom}Z`)}}if(o&&g.appendChild(U("path",{d:b,class:"fill"})),n&&g.appendChild(U("path",{d:_,class:"line"})),a)for(let x of m)x&&g.appendChild(U("circle",{cx:x.x,cy:x.y,r:1,class:"point"}));if(l)for(let x of m)x&&g.appendChild(U("circle",{cx:x.x,cy:x.y,r:3,class:"marker"}))}RenderPoints(e,t,r,i){let s=[];for(let n=0;n<t.length;n++){let a=t[n]*e.width+e.left,o=e.bottom-r[n]*e.height;s.push(`M${a-1},${o-1} L${a+1},${o+1}`),s.push(`M${a-1},${o+1} L${a+1},${o-1}`)}this.group.appendChild(U("path",{d:s,class:i}))}RenderPoint(e,t,r){this.group.appendChild(U("circle",{cx:e,cy:t,r:1,class:r}))}RenderCalloutLines(e){let t=U("g",{class:"callouts"});this.label_group.appendChild(t);for(let r of e)t.appendChild(U("path",{d:`M${r.x1},${r.y1} L${r.x2},${r.y2}`,class:"callout "+(r.classes||"").trim()}))}RenderRectangle(e,t,r,i,s,n){let a="";if(t)if(t[0]&&t[0]===t[1]&&t[0]>=e.height){let l=t[0],d=t[0]-e.height,u=Math.sqrt(l*l-d*d);a=`M${e.left+e.width/2-u},${e.bottom} a${l},${l} 0 0 1 ${u*2},0 z`}else if(t[1]&&t[1]===t[2]&&t[1]>=e.width){let l=t[1],d=t[1]-e.width,u=Math.sqrt(l*l-d*d);a=`M${e.left},${e.top+e.height/2-u} a${l},${l} 0 0 1 0,${u*2} z`}else a=`M${e.left},${e.top+t[0]} a${t[0]},${t[0]} 0 0 1 ${t[0]},${-t[0]} h${e.width-t[0]-t[1]} a${t[1]},${t[1]} 0 0 1 ${t[1]},${t[1]} v${e.height-t[1]-t[2]} a${t[2]},${t[2]} 0 0 1 ${-t[2]},${t[2]} h${-e.width+t[2]+t[3]} a${t[3]},${t[3]} 0 0 1 ${-t[3]},${-t[3]} v${-e.height+t[3]+t[0]} `;else a=`M${e.left},${e.top} h${e.width} v${e.height} h${-e.width} v${-e.height} `;let o=U("path",{d:a,class:r});if(i&&(o.addEventListener("mouseenter",l=>{this.parent.setAttribute("title",i)}),o.addEventListener("mouseleave",l=>{this.parent.setAttribute("title","")})),this.group.appendChild(o),s){this.label_group.appendChild(U("path",{class:"label-target",d:a}));let l=n||{x:Math.round(e.left+e.width/2),y:Math.round(e.top-10)},d=U("g",{class:"data-label",transform:`translate(${l.x},${l.y})`});this.label_group.appendChild(d);let u=U("text",{x:0,y:0},s);d.appendChild(u);let h=u.getBoundingClientRect(),p=h.height,f=h.width+8;l.y-h.height<4&&(l.y-=l.y-h.height-4,d.setAttribute("transform",`translate(${l.x},${l.y})`)),u.setAttribute("x",Math.floor(-h.width/2).toString());let m=Math.ceil(p*.125),_=U("rect",{rx:3,x:-f/2,y:Math.round(-p+m*2/3),width:f,height:p+m});d.insertBefore(_,u)}}RenderText(e,t,r,i,s){let n=U("text",{x:i.x,y:i.y,class:s},t);switch(r){case"right":n.style.textAnchor="end";break;case"center":n.style.textAnchor="middle";break;default:n.style.textAnchor="start";break}(e||this.group).appendChild(n)}RenderDonut(e,t,r,i,s,n,a){let o=-Math.PI/2,l=0;n&&(r*=.8,i*=.7);let d=(u,h,p)=>[Math.cos(p)*h+u.x,Math.sin(p)*h+u.y];for(let u of e){let h=u.title||"",p=u.percent,f=u.index,m=[],_=0,b=d.bind(0,t,r),g=d.bind(0,t,i);if(p>.5){_=o+p/2*Math.PI*2,l=o+p*Math.PI*2;let w=_-o,S=l-_;m.push(`M${b(o)}`,`A${r},${r},${w},0,1,${b(_)}`,`A${r},${r},${S},0,1,${b(l)}`,`L${g(l)}`,`A${i},${i},${S},0,0,${g(_)}`,`A${i},${i},${w},0,0,${g(o)}`,"Z")}else{l=o+p*Math.PI*2,_=(l-o)/2+o;let w=l-o;m.push(`M${b(o)}`,`A${r},${r},${w},0,1,${b(l)}`,`L${g(l)}`,`A${i},${i},${w},0,0,${g(o)}`,"Z")}let x=U("path",{d:m,class:typeof f>"u"?void 0:`series-${f}`});typeof f<"u"&&x.setAttribute("data-index",f.toString());let v=U("g",{class:a});if(v.appendChild(x),this.group.appendChild(v),p>=.05&&h){let w=r-i;m=[];let S=d(t,i+(r-i)/2+w,_);m.push(`M${d(t,i+(r-i)/2,_)}`),m.push(`L${S}`),v.appendChild(U("path",{d:m,class:"callout"}));let R=[],E=U("text",{class:"callout-label"});v.appendChild(E);let H=_+Math.PI/2,Z=h;E.textContent=Z;let Le=E.getBoundingClientRect(),De={width:Le.width,height:Le.height},[he,C]=S;he+=De.height/2*Math.cos(_),C+=De.height/4+De.height/2*Math.sin(_);let ee=!1;H>Math.PI?he-De.width<=s.left&&(ee=!0):he+De.width>s.right&&(ee=!0);let ae=/[\s-]/;if(ee&&ae.test(Z)){let K=-1,Y=1,Q=[];for(let V=0;V<Z.length;V++)if(ae.test(Z[V])){let $=Math.abs(.5-V/Z.length);$<Y&&(Y=$,K=V)}K>0&&(R.push(Z.substr(0,K+1).trim()),R.push(Z.substr(K+1).trim()))}if(R.length){let K=0,Y=0,Q=R.map(V=>{E.textContent=V,Le=E.getBoundingClientRect();let $={width:Le.width,height:Le.height};return Y=Math.max(Y,$.width),{text:V,metrics:$}});E.textContent="";for(let V of Q){let $=document.createElementNS(wt,"tspan");$.textContent=V.text;let ss=H>Math.PI?he-(Y-V.metrics.width)/2:he+(Y-V.metrics.width)/2;$.setAttribute("x",ss.toString()),$.setAttribute("dy",K.toString()),E.appendChild($),K=V.metrics.height}}let le=H>Math.PI?"end":"start";E.setAttribute("text-anchor",le),E.setAttribute("x",he.toString()),E.setAttribute("y",C.toString()),typeof f<"u"&&E.setAttribute("data-index",f.toString())}o=l}}};var P=class{static Scale(e,t,r=6.5){return pi(e,t,r)}static Range(e){let t,r;for(let s of e)typeof s>"u"||((typeof t>"u"||t>s)&&(t=s),(typeof r>"u"||r<s)&&(r=s));let i=typeof t>"u"||typeof r>"u"?0:r-t;return{min:t,max:r,range:i}}static ApplyScale(e,t,r){return t*(e-r.min)/(r.max-r.min)}static Flatten(e){let t=[];if(Array.isArray(e))for(let r of e)Array.isArray(r)?t=t.concat(this.Flatten(r)):t.push(r);else typeof e<"u"&&t.push(e);return t}};rs();var Yr="#,##0.00",tt=class{constructor(e=new nr){this.renderer=e}chart_data={type:"null"};margin={top:.025,left:.05,bottom:.025,right:.075};Initialize(e){this.renderer.Initialize(e)}Exec(e,t){let r=t?.value||[];switch(e.toLowerCase()){case"column.chart":this.CreateColumnChart(r,"column");break;case"bar.chart":this.CreateColumnChart(r,"bar");break;case"line.chart":this.CreateLineChart(r,"line");break;case"area.chart":this.CreateLineChart(r,"area");break;case"donut.chart":case"pie.chart":this.CreateDonut(r,e.toLowerCase()==="pie.chart");break;case"scatter.plot":this.CreateScatterChart(r,"plot");break;case"scatter.line":this.CreateScatterChart(r,"line");break;default:this.Clear();break}}Clear(){this.chart_data={type:"null"}}CreateColumnChart(e,t){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),s;if(e[1]){s=(e[1].type===8?P.Flatten(e[1].value):P.Flatten(e[1])).map(d=>d?d.type===5&&d.value.type==="metadata"?typeof d.value.value=="number"?D.Get(d.value.format||Yr).Format(d.value.value):d.value.value:typeof d.value=="number"?D.Get(d.format||Yr).Format(d.value):d.value:"");let l=r.reduce((d,u)=>Math.max(d,u.y.data.length),0);for(l<s.length&&(s=s.slice(0,l));l>s.length;)s.push("")}let n=e[2]?.toString()||void 0,a=e[3]?.toString()||void 0;if(this.chart_data={type:t,legend:i.legend,legend_style:1,series2:r,scale:i.y.scale,title:n,y_labels:t==="bar"?s:i.y.labels,x_labels:t==="bar"?i.y.labels:s},a){this.chart_data.round=/round/i.test(a),this.chart_data.data_labels=/labels/i.test(a);let o=a.match(/labels="(.*?)"/);o&&r?this.ApplyLabels(r,o[1],s):(o=a.match(/labels=([^\s\r\n,]+)(?:\W|$)/),o&&r&&this.ApplyLabels(r,o[1],s)),o=a.match(/class=([\w_-]+)(?:\W|$)/),o&&(this.chart_data.class_name=o[1])}}ReadSeries(e){let t={x:{data:[]},y:{data:[]}};if(e[3]&&typeof e[3]=="number"&&(t.index=e[3]),e[4]&&(t.subtype=e[4].toString()),e[0]){let r=P.Flatten(e[0]);typeof r[0]=="object"?t.label=r[0]?.value?.toString()||"":t.label=r[0].toString()}if(e[2]&&typeof e[2]=="object"&&e[2].type===8){let r=P.Flatten(e[2].value);if(t.y.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value?.format){t.y.format=r[0].value?.format;let i=D.Get(t.y.format);t.y.labels=t.y.data.map(s=>s===void 0?void 0:i.Format(s))}}if(e[1]&&typeof e[1]=="object"&&e[1].type===8){let r=P.Flatten(e[1].value);t.x.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value.format&&(t.x.format=r[0].value.format)}for(let r of[t.x,t.y])if(r.data.length){let i=r.data.filter(s=>s||s===0);r.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)}}return t}ArrayToSeries(e){let t={x:{data:[]},y:{data:[]}},r=P.Flatten(e.value);if(t.y.data=r.map((s,n)=>typeof s.value=="number"?s.value:typeof s.value.value?.real=="number"?(t.x.data[n]=s.value.value.real,s.value.value.imaginary):typeof s.value.value=="number"?s.value.value:void 0),r[0].value.format){t.y.format=r[0].value.format||"";let s=D.Get(t.y.format||"");t.y.labels=t.y.data.map(n=>n===void 0?void 0:s.Format(n))}let i=t.y.data.filter(s=>s||s===0);if(t.y.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)},t.x.data.length){let s=t.x.data.filter(n=>typeof n=="number");if(t.x.range={min:Math.min.apply(0,s),max:Math.max.apply(0,s)},r[0].value.format){t.x.format=r[0].value.format||"";let n=D.Get(t.x.format||"");t.x.labels=t.x.data.map(a=>a===void 0?void 0:n.Format(a))}}return t}TransformSeriesData(e,t){if(!e)return[];let r=[];if(e.type===5){if(e.key==="group"){if(Array.isArray(e.value)){for(let n of e.value)if(n&&typeof n=="object")if(n.key==="series"){let a=this.ReadSeries(n.value);r.push(a)}else n.type===8&&r.push(this.ArrayToSeries(n))}}else if(e.key==="series"){let n=this.ReadSeries(e.value);r.push(n)}}else e.type===8&&r.push(this.ArrayToSeries(e));let i,s=0;if(t?.type===8){let n=P.Flatten(t.value),a="0.00###";n[0]&&n[0].type===5&&(a=n[0].value.format);let o=n.map(d=>{if(d.type===3)return d.value;if(d.type===5)return d.value.value}),l=o.filter(d=>typeof d=="number");i={data:o,format:a,range:{min:Math.min.apply(0,l),max:Math.max.apply(0,l)}}}for(let n of r)s=Math.max(s,n.y.data.length),n.x.data.length&&(i||(i=n.x));if(!i){i={data:[],range:{min:0,max:Math.max(0,s-1)}};for(let n=0;n<s;n++)i.data.push(n)}for(let n of r)n.x.data.length||(n.x=i);return r}CommonData(e,t,r){let i="",s="";for(let b of e)b.y.format&&!s&&(s=b.y.format),b.x.format&&!i&&(i=b.x.format);let n;e.some(b=>b.label&&b.label.length>0)&&(n=e.map((b,g)=>({label:b.label||`Series ${g+1}`,index:typeof b.index=="number"?b.index:g+1})));let a=e.filter(b=>b.x.range),o=Math.min.apply(0,a.map(b=>b.x.range?.min||0)),l=Math.max.apply(0,a.map(b=>b.x.range?.max||0)),d=e.filter(b=>b.y.range),u=Math.min.apply(0,a.map(b=>b.y.range?.min||0)),h=Math.max.apply(0,a.map(b=>b.y.range?.max||0));typeof t<"u"&&(u=Math.min(u,t)),typeof r<"u"&&(h=Math.max(h,r));let p=P.Scale(o,l,7),f=P.Scale(u,h,7),m,_;if(i){m=[];let b=D.Get(i);for(let g=0;g<=p.count;g++)m.push(b.Format(p.min+g*p.step))}if(s){_=[];let b=D.Get(s);for(let g=0;g<=f.count;g++)_.push(b.Format(f.min+g*f.step))}return{x:{format:i,scale:p,labels:m},y:{format:s,scale:f,labels:_},legend:n}}CreateScatterChart(e,t="plot"){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),s=e[1]?.toString()||void 0,n=e[2]?.toString()||void 0;if(this.chart_data={legend:i.legend,style:t,type:"scatter2",series:r,title:s,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:t==="line",points:t==="plot"},n){this.chart_data.markers=/marker/i.test(n),this.chart_data.smooth=/smooth/i.test(n),this.chart_data.data_labels=/labels/i.test(n);let a=n.match(/labels="(.*?)"/);a&&this.chart_data.series?this.ApplyLabels(this.chart_data.series,a[1]):(a=n.match(/labels=([^\s\r\n,]+)(?:\W|$)/),a&&this.chart_data.series&&this.ApplyLabels(this.chart_data.series,a[1])),a=n.match(/class=([\w_-]+)(?:\W|$)/),a&&(this.chart_data.class_name=a[1])}}ApplyLabels(e,t,r){for(let i of e){let s={x:D.Get(i.x.format||""),y:D.Get(i.y.format||"")};i.y.labels=[];for(let n=0;n<i.y.data.length;n++){let a=r?r[n]:typeof i.x.data[n]=="number"?s.x.Format(i.x.data[n]):"",o=typeof i.y.data[n]=="number"?s.y.Format(i.y.data[n]):"";i.y.labels[n]=t.replace(/\bx\b/g,a).replace(/\by\b/g,o)}}}CreateLineChart(e,t){let r=this.TransformSeriesData(e[0],e[1]),i=this.CommonData(r,0,0),s=e[2]?.toString()||void 0,n=e[3]?.toString()||void 0;if(this.chart_data={legend:i.legend,type:"scatter2",series:r,title:s,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:!0,filled:t==="area"},n){this.chart_data.smooth=/smooth/i.test(n);let a=n.match(/class=([\w_-]+)(?:\W|$)/);a&&(this.chart_data.class_name=a[1])}}CreateDonut(e,t=!1){let r=e[0]?.type===8?e[0].value:e[0],i=P.Flatten(r),s=i.map(b=>typeof b.value.value=="number"?b.value.value:void 0),n=e[1]?.type===8?e[1].value:e[1],a=P.Flatten(n).map(b=>{if(b&&typeof b=="object"){let g=b.value?.value;return typeof g=="number"&&b.value?.format?D.Get(b.value?.format).Format(g):g?g.toString():""}else return b?b.toString():""});s=s.map(b=>b<0?(console.warn("pie/donut chart does not support negative values (omitted)"),0):b);let o=e[2]||"",l=0,d=s.map((b,g)=>(typeof b<"u"&&(l+=b),{value:b,label:a[g]||"",index:g+1,percent:0}));if(l)for(let b of d)b.percent=(b.value||0)/l;let u=i.length&&i[0].value?.format?i[0].value.format:"",h=D.Get(u||Yr),p=D.Get("percent");typeof e[4]>"u"&&e[1]&&(e[4]="label");let f=e[4]||"";if(f)for(let b of d){let g=h.Format(b.value||0),x=p.Format(b.percent);b.title=f.replace(/value%/ig,p.Format(b.value||0)).replace(/value/ig,g).replace(/percent/ig,x).replace(/label/ig,b.label||"").trim()}let m=(e[3]||"").toString().trim(),_=m.toUpperCase();if(_==="ASC"||_==="ASCENDING"||_==="INC")d.sort((b,g)=>(b.value||0)-(g.value||0));else if(_==="DESC"||_==="DESCENDING"||_==="DEC")d.sort((b,g)=>(g.value||0)-(b.value||0));else{let b=m.match(/sort=([\w]+)(?:\W|$)/i);b&&(_=b[1],/^(asc|inc)/i.test(_)?d.sort((g,x)=>(g.value||0)-(x.value||0)):/^(desc|dec)/i.test(_)&&d.sort((g,x)=>(x.value||0)-(g.value||0)))}if(this.chart_data={type:t?"pie":"donut",slices:d,title:o},m){let b=m.match(/class=([_-\w]+)(?:\W|$)/);b&&(this.chart_data.class_name=b[1])}}Resize(){this.renderer.Resize()}Update(){this.renderer.Resize(),this.renderer.Prerender(),this.renderer.Clear(this.chart_data.class_name);let e=new Me(0,0,this.renderer.size.width,this.renderer.size.height),t={top:Math.round(e.height)*this.margin.top,bottom:Math.round(e.height)*this.margin.bottom,left:Math.round(e.width)*this.margin.left,right:Math.round(e.width)*this.margin.right},r=this.chart_data.title;if(r&&this.renderer.RenderTitle(r,e,t.top,this.chart_data.title_layout||"top"),e.top+=t.top,e.left+=t.left,e.bottom-=t.bottom,e.right-=t.right,this.chart_data.legend&&this.chart_data.legend.length){let i=0;this.chart_data.title&&(!this.chart_data.title_layout||this.chart_data.title_layout==="top")&&(i=1);let s=this.chart_data.legend_position||i;this.renderer.Legend({labels:this.chart_data.legend,position:s,style:this.chart_data.legend_style,layout:s===0||s===1?0:1,area:e})}if(this.chart_data.type==="histogram"||this.chart_data.type==="line"||this.chart_data.type==="area"||this.chart_data.type==="column"||this.chart_data.type==="histogram2"||this.chart_data.type==="bar"||this.chart_data.type==="scatter2"){let i=[],s=0;if(this.chart_data.x_labels&&this.chart_data.x_labels.length&&(i=this.chart_data.x_labels.map(n=>{let a=this.renderer.MeasureText(n,["axis-label","x-axis-label"],!0);return s=Math.max(s,a.height),a})),this.chart_data.y_labels&&this.chart_data.y_labels.length){let n=[],a=0,o=0,l=this.chart_data.type==="scatter2"?this.chart_data.y_scale:this.chart_data.scale,d=this.chart_data.type==="bar"?this.chart_data.y_labels.length:l.count+1;for(let u=0;u<d;u++){let h=this.renderer.MeasureText(this.chart_data.y_labels[u],["axis-label","y-axis-label"]);n.push({label:this.chart_data.y_labels[u],metrics:h}),a=Math.max(a,h.width),o=Math.max(o,h.height)}e.bottom=Math.round(e.bottom-o/2),e.top=Math.round(e.top+o/2),i.length&&(e.bottom-=s+t.bottom),this.chart_data.type==="bar"?this.renderer.RenderYAxisBar(e,e.left+a,n,["axis-label","y-axis-label"]):this.renderer.RenderYAxis(e,e.left+a,n,["axis-label","y-axis-label"]),e.left+=a+t.left}if(i.length&&this.chart_data.x_labels&&this.chart_data.x_labels.length){let n=this.chart_data.type==="histogram2",a=this.chart_data.type!=="line"&&this.chart_data.type!=="area"&&this.chart_data.type!=="bar"&&this.chart_data.type!=="scatter2"&&this.chart_data.type!=="histogram2";n&&this.renderer.RenderXAxisTicks(e,a,this.chart_data.x_labels.length),this.chart_data.y_labels&&(e.bottom+=s+t.bottom),this.renderer.RenderXAxis(e,a,this.chart_data.x_labels,i,["axis-label","x-axis-label"]),e.bottom-=s+t.bottom}}switch(this.chart_data.type){case"scatter":this.renderer.RenderPoints(e,this.chart_data.x,this.chart_data.y,"mc mc-correlation series-1");break;case"scatter2":if(this.renderer.RenderGrid(e,this.chart_data.y_scale.count,this.chart_data.x_scale.count+1,"chart-grid"),this.chart_data.series){for(let i=0;i<this.chart_data.series.length;i++){let s=this.chart_data.series[i],n=!!this.chart_data.lines,a=!!this.chart_data.points;s.subtype==="plot"?(a=!0,n=!1):s.subtype==="line"&&(a=!1,n=!0);let o=typeof s.index=="number"?s.index:i+1;this.renderer.RenderScatterSeries(e,s.x.data,s.y.data,this.chart_data.x_scale,this.chart_data.y_scale,n,a,!!this.chart_data.filled,!!this.chart_data.markers,!!this.chart_data.smooth,`scatter-plot series-${o}`)}if(this.chart_data.data_labels)for(let i=0;i<this.chart_data.series.length;i++){let s=this.chart_data.series[i];s.y.labels&&this.renderer.RenderDataLabels(e,s.x.data,s.y.data,this.chart_data.x_scale,this.chart_data.y_scale,s.y.labels,i+1)}}break;case"pie":case"donut":{let i=Math.min(e.height,e.width)/2*.9,s=this.chart_data.type==="pie"?0:i*.8;this.renderer.RenderDonut(this.chart_data.slices,e.center,i,s,e,!0,"donut")}break;case"line":case"area":{let i=this.chart_data.scale;if(this.chart_data.series){let s=this.chart_data.x_scale?this.chart_data.x_scale.max:Math.max.apply(0,this.chart_data.series.map(o=>o.length)),n=this.chart_data.smooth?this.renderer.RenderSmoothLine:this.renderer.RenderLine;this.renderer.RenderGrid(e,this.chart_data.scale.count,this.chart_data.x_scale?this.chart_data.x_scale.count+1:s,"chart-grid");let a=0;for(let o of this.chart_data.series){let l=o.map(u=>{if(!(typeof u>"u"))return P.ApplyScale(u,e.height,i)});if(l.length<s)for(let u=l.length;u<s;u++)l.push(void 0);let d=[this.chart_data.type==="area"?"chart-area":"chart-line",`series-${a+1}`];n.call(this.renderer,e,l,this.chart_data.type==="area",this.chart_data.titles,d),a++}}}break;case"bar":{let i;if(this.renderer.RenderBarGrid(e,this.chart_data.scale.count,"chart-grid"),this.chart_data.series2){let s=0,n=this.chart_data.series2.length;for(let h of this.chart_data.series2)s=Math.max(s,h.y.data.length);let a=e.height/s,o=.7;typeof this.chart_data.space=="number"&&(o=Math.max(0,Math.min(1,1-this.chart_data.space)));let l=a*(1-o)/2,d=(a-l*2)/n,u=0;if(this.chart_data.scale.min<0&&(u=P.ApplyScale(0,e.width,this.chart_data.scale)),this.chart_data.round){let h=Math.floor(d/2);i=[0,h,h,0]}for(let h=0;h<n;h++){let p=this.chart_data.series2[h],f=typeof p.index=="number"?p.index:h+1;for(let m=0;m<p.y.data.length;m++){let _=p.y.data[m];if(typeof _=="number"){let b=Math.round(e.top+m*a+l)+h*d,g=0,x=0,v=!1;u?_>0?(x=P.ApplyScale(_+this.chart_data.scale.min,e.width,this.chart_data.scale),g=e.left+u):(x=P.ApplyScale(this.chart_data.scale.min-_,e.width,this.chart_data.scale),g=e.left+u-x,v=!0):(x=P.ApplyScale(_,e.width,this.chart_data.scale),g=e.left);let w=void 0;x&&this.renderer.RenderRectangle(new Me(g,b,g+x,b+d),i,["chart-column",`series-${f}`],w||void 0)}}}}}break;case"column":case"histogram2":if(this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid"),this.chart_data.series2){let i=0,s=this.chart_data.series2.length;for(let h of this.chart_data.series2)i=Math.max(i,h.y.data.length);let n=e.width/i,a=.7;typeof this.chart_data.space=="number"&&(a=Math.max(0,Math.min(1,1-this.chart_data.space)));let o=n*(1-a)/2,l=(n-o*2)/s,d=0;if(this.chart_data.scale.min<0&&(d=P.ApplyScale(0,e.height,this.chart_data.scale)),this.chart_data.callouts&&this.chart_data.x_scale){let h=this.chart_data.x_scale,p=this.chart_data.callouts.map((f,m)=>{let _=Math.round(e.left+P.ApplyScale(f.value,e.width,h))+.5;return{x1:_,y1:e.bottom-e.height,x2:_,y2:e.bottom,classes:`callout-${m+1}`}});this.renderer.RenderCalloutLines(p)}let u;if(this.chart_data.round){let h=Math.floor(l/2);u=[h,h,0,0]}for(let h=0;h<s;h++){let p=this.chart_data.series2[h],f=typeof p.index=="number"?p.index:h+1;for(let m=0;m<p.y.data.length;m++){let _=p.y.data[m];if(typeof _=="number"){let b=e.left+m*n+o+h*l,g=0,x=0,v=!1;d?_>0?(g=P.ApplyScale(_+this.chart_data.scale.min,e.height,this.chart_data.scale),x=e.bottom-g-d):(g=P.ApplyScale(this.chart_data.scale.min-_,e.height,this.chart_data.scale),x=e.bottom-d,v=!0):(g=P.ApplyScale(_,e.height,this.chart_data.scale),x=e.bottom-g);let w=void 0;if(g){let S=this.chart_data.data_labels&&p.y.labels?p.y.labels[m]:"",R={x:Math.round(b+l/2),y:Math.round(x-10)};this.renderer.RenderRectangle(new Me(b,x,b+l,x+g),u,["chart-column",`series-${f}`],w||void 0,S,R)}}}}}break;case"histogram":{this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid");let i=e.width/this.chart_data.count,s=this.chart_data.column_width,n=i*(1-s)/2;for(let a=0;a<this.chart_data.count;a++){let o=Math.round(e.left+a*i+n),l=i-n*2,d=P.ApplyScale(this.chart_data.bins[a],e.height,this.chart_data.scale),u=e.bottom-d,h=this.chart_data.titles?this.chart_data.titles[a]:void 0;this.renderer.RenderRectangle(new Me(o,u,o+l,u+d),void 0,"chart-column series-1",h||void 0)}}break}}IsCellData(e){return typeof e=="object"&&typeof e.address=="object"&&typeof e.address.row=="number"&&typeof e.address.column=="number"}};k(tt,"functions_registered",!1);var ze=(...c)=>({type:5,value:c,key:"arguments"}),Zr={Group:{arguments:[{name:"Array...",metadata:!0}],fn:(...c)=>({type:5,value:c,key:"group"})},Series:{arguments:[{name:"Label"},{name:"X",metadata:!0},{name:"Y",metadata:!0},{name:"index"},{name:"subtype"}],fn:(...c)=>({type:5,value:c,key:"series"})},"Bar.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"ChartTitle"}],fn:ze},"Line.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:ze},"Area.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:ze},"Pie.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels"},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:ze},"Donut.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels",metadata:!0},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:ze},"Scatter.Line":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:ze},"Scatter.Plot":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:ze},"Column.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"Chart Title"}],fn:ze}};var Be=class{loaded=!1;toolbar_ctl;get Localization(){return T}language_model;events=new te;calculation=0;file_version=0;last_save_version=0;calculator;grid;model;options;dialog;spinner;file_chooser;file_chooser_operation=0;toolbar;selection_state;get parser(){return this.calculator.parser}view;key_listener;node;views=[];focus_target=this;parent_view;export_worker;undo_pointer=0;undo_stack=[];last_selection;get modified(){return this.undo_stack.length!==1}get document_name(){return this.grid.model.document_name}set document_name(e){this.grid.model.document_name=e,this.DocumentChange()}get user_data(){return this.grid.model.user_data}set user_data(e){this.grid.model.user_data=e,this.DocumentChange()}get scale(){return this.grid.scale}set scale(e){this.grid.scale=e}get headless(){return this.grid.headless}set headless(e){this.grid.headless!==e&&(this.grid.headless=e,e||(this.grid.Update(!0),this.RebuildAllAnnotations()))}get state(){return this.file_version}get dirty(){return this.file_version!==this.last_save_version}constructor(e){this.options={...ir,...e},typeof this.options.imaginary_value=="string"&&(X.imaginary_character=this.options.imaginary_value);let t=this.options.network_document,r,i;this.options.storage_key&&!this.options.toll_initial_load&&!e.model&&(r=localStorage.getItem(this.options.storage_key)||void 0,r&&(i="local-storage"),!r&&this.options.alternate_document&&(t=this.options.alternate_document)),this.options.storage_key&&!e.model&&window.addEventListener("beforeunload",()=>{this.options.storage_key&&this.SaveLocalStorage(this.options.storage_key)});let s;typeof this.options.container=="string"?s=document.getElementById(this.options.container):this.options.container&&(s=this.options.container);let n={insert_function_button:!1,in_cell_editor:!0,repaint_on_cell_change:!1,scrollbars:this.options.scrollbars,markdown:!!this.options.markdown,formula_bar:this.options.formula_bar,expand_formula_button:this.options.expand_formula_button,tab_bar:this.options.tab_bar,add_tab:this.options.add_tab,delete_tab:this.options.delete_tab,expand:this.options.expand};if(this.options.scale&&(n.initial_scale=this.options.scale),this.options.stats&&(n.stats=this.options.stats,n.tab_bar=!0),this.options.scale_control&&(n.scale_control=!0,n.tab_bar=!0,this.options.persist_scale)){this.options.persist_scale===!0?n.persist_scale_key="spreadsheet-scale":n.persist_scale_key="spreadsheet-scale-"+this.options.persist_scale;let a=localStorage.getItem(n.persist_scale_key);if(a)try{let o=JSON.parse(a);n.initial_scale=o.scale||1}catch{console.warn("parsing persisted scale failed")}}if(e.model?(this.model=e.model.model,this.calculator=e.model.calculator):(this.model=new yt,this.model.sheets.Add(j.Blank(this.model.theme_style_properties)),this.calculator=this.CreateCalculator(this.model,e)),this.grid=new _t(n,this.parser,this.model),this.options.headless&&(this.grid.headless=!0),s){this.view=document.createElement("div"),this.view.classList.add("treb-view"),this.node=document.createElement("div"),this.view.appendChild(this.node),s.appendChild(this.view),this.node.addEventListener("focusin",()=>{this.focus_target=this}),this.key_listener=this.HandleKeyDown.bind(this),s.addEventListener("keydown",this.key_listener);let a=!!(r||this.options.network_document);this.grid.Initialize(this.node,a),this.options.dnd&&(this.node.addEventListener("dragenter",o=>this.HandleDrag(o)),this.node.addEventListener("dragover",o=>this.HandleDrag(o)),this.node.addEventListener("drop",o=>this.HandleDrop(o))),this.grid.grid_events.Subscribe(o=>{switch(o.type){case"error":this.dialog?.ShowDialog({type:"error",...this.TranslateGridError(o.code),timeout:3e3,close_box:!0});break;case"selection":this.UpdateSelection(o.selection),this.UpdateSelectionStyle(o.selection);break;case"sheet-change":this.OnSheetChange(o),this.UpdateSelectionStyle();break;case"data":{let l=this.last_selection;(this.calculation===0?this.Recalculate(o):Promise.resolve()).then(()=>{this.DocumentChange(l)})}break;case"style":this.DocumentChange(),this.UpdateDocumentStyles(!1),this.UpdateSelectionStyle();break;case"scale":this.RebuildAllAnnotations();break;case"annotation":if(o.annotation){let l=o.annotation.view[this.grid.view_index]||{};switch(this.DocumentChange(),o.event){case"create":this.InflateAnnotation(o.annotation),this.calculator.UpdateAnnotations(o.annotation,this.grid.active_sheet),this.grid.AnnotationUpdated(o.annotation);break;case"delete":this.calculator.RemoveAnnotation(o.annotation);break;case"update":l.update_callback?(l.update_callback(),this.grid.AnnotationUpdated(o.annotation)):console.info("annotation update event without update callback"),this.calculator.UpdateAnnotations(o.annotation,this.grid.active_sheet);break;case"resize":l.resize_callback&&(l.resize_callback(),this.grid.AnnotationUpdated(o.annotation));break}}else console.info("annotation event without annotation");break;case"structure":{let l=this.last_selection;o.rebuild_required?(this.calculator.Reset(),(this.calculation===0?this.Recalculate(o):Promise.resolve()).then(()=>{this.DocumentChange(l)})):this.DocumentChange(l)}this.UpdateSelectionStyle();break;case"cell-event":this.HandleCellEvent(o);break}}),this.options.prompt_save&&window.addEventListener("beforeunload",o=>{this.last_save_version!==this.file_version&&(o.preventDefault(),o.returnValue="")})}else console.info("not initializing grid; don't call UI functions"),this.grid.headless=!0;if(r?this.LoadDocument(JSON.parse(r),{recalculate:!!this.options.recalculate,source:i}):t||this.calculator.RebuildClean(!0),this.FlushUndo(),this.grid.ShowHeaders(this.options.headers),this.options.scroll&&!this.options.network_document){let a=this.options.scroll;requestAnimationFrame(()=>{this.ScrollTo(a)})}this.UpdateAC(),this.options.global_name&&(self[this.options.global_name]=this),s&&this.options.spinner&&(this.spinner=new rr(s)),t&&!e.model&&!r&&this.LoadNetworkDocument(t,this.options),s&&(this.dialog=new tr(s))}static BuildPath(){let e=typeof document>"u"?[]:document.querySelectorAll("script"),t="treb-bundle",r=new RegExp(t);for(let i=0;i<e.length;i++){let n=e[i].src;if(n&&r.test(n)){n&&/\?.*?engine/i.test(n)&&(this.enable_engine=!0),n&&/\?.*?format/i.test(n)&&(this.enable_formatter=!0),this.treb_embedded_script_path=n,this.treb_base_path=n.replace(new RegExp(t+".*$"),"");return}}r=new RegExp(`import.*?from.*?['"](.*?${t}.*?)['"]`);for(let i=0;i<e.length;i++){let s=e[i];if(!s.src){let a=(s.textContent||"").match(r);if(a){let o=a[1];this.treb_embedded_script_path=o,this.treb_base_path=o.replace(new RegExp(t+".*$"),"");return}}}}UpdateAC(){let e=this.calculator.SupportedFunctions();if(this.language_model){let t={};for(let r of this.language_model.functions||[])t[r.base.toUpperCase()]=r;e=e.map(r=>t[r.name.toUpperCase()]||r)}this.grid.SetAutocompleteFunctions(e)}CreateCalculator(e,t){return new er(e,{complex_numbers:t.complex})}TranslateGridError(e){switch(e){case 0:return{message:"No error"};case 2:return{message:"You can't change part of an array"};case 3:return{message:"Invalid value (data validation)"};default:return{message:`Unknown error (${e})`}}}CreateView(){let e=new Be({...this.options,global_name:void 0,model:this});return e.parent_view=this,e}Unsplit(){let e=this.views.pop();if(e){let t=e.view;t.grid.grid_events.CancelAll(),t.events.CancelAll(),t.view?.parentElement&&(t.key_listener&&t.view.parentElement.removeEventListener("keydown",t.key_listener),t.view.parentElement.removeChild(t.view)),this.node?.focus()}}Split(){let e=this.CreateView();e.grid.EnsureActiveSheet(!0),e.node?.addEventListener("focusin",()=>{this.focus_target=e}),e.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(this.grid.EnsureActiveSheet(),this.grid.UpdateLayout(),this.grid.tab_bar?.Update())}),e.Subscribe(r=>{switch(r.type){case"selection":break;default:e.UpdateAnnotations(),this.grid.Update(!0)}}),this.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(e.grid.EnsureActiveSheet(),e.grid.UpdateLayout(),e.grid.tab_bar?.Update())});let t=this.Subscribe(r=>{switch(r.type){case"selection":break;case"load":case"reset":e.grid.EnsureActiveSheet(!0),e.UpdateAnnotations(),e.grid.Update(!0);break;default:e.UpdateAnnotations(),e.grid.Update(!0)}});this.views.push({view:e,subscription:t})}HandleToolbarEvent(e){let t={},r=i=>{let s=this.grid.GetSelection();if(s&&!s.empty){let n=s.area.spreadsheet_label;this.InsertAnnotation(`=${i}(${n},,"${n}")`,void 0,void 0,",")}};if(e.type==="format")t.number_format=e.format||"General";else if(e.type==="font-size"){let i=this.grid.GetSelection(),s=this.grid.active_sheet.RealArea(i.area);this.grid.ApplyStyle(void 0,e.style,!0);let n=[];for(let a=s.start.row;a<=s.end.row;a++)n.push(a);this.grid.SetRowHeight(n,void 0,!1)}else if(e.type==="button")switch(e.command){case"font-scale":{let i=this.grid.GetSelection(),s=this.grid.active_sheet.RealArea(i.area),n=Number(e.data?.scale||1);if(n&&!isNaN(n)){this.grid.ApplyStyle(void 0,{font_size:{unit:"em",value:n}},!0);let a=[];for(let o=s.start.row;o<=s.end.row;o++)a.push(o);this.selection_state?.merge||this.grid.SetRowHeight(a,void 0,!1)}}break;case"update-comment":this.SetNote(void 0,e.data?.comment||"");break;case"clear-comment":this.SetNote(void 0,"");break;case"border":{let i=1,s=(e.data?.border||"").replace(/^border-/,"");s==="double-bottom"&&(s="bottom",i=2),s&&this.grid.ApplyBorders2(void 0,s,e.data?.color||void 0,i)}break;case"color":case"background-color":case"foreground-color":case"border-color":switch(e.data?.target){case"border":t.border_top_fill=t.border_bottom_fill=t.border_left_fill=t.border_right_fill=e.data?.color||{};break;case"foreground":t.text=e.data?.color||{theme:1};break;case"background":t.fill=e.data?.color||{};break}break;case"insert-row":this.InsertRows();break;case"insert-column":this.InsertColumns();break;case"delete-row":this.DeleteRows();break;case"delete-column":this.DeleteColumns();break;case"insert-sheet":this.grid.InsertSheet();break;case"delete-sheet":this.grid.DeleteSheet();break;case"freeze":{let i=this.grid.GetFreeze();i.rows||i.columns?this.Freeze(0,0):this.FreezeSelection()}break;case"insert-image":this.InsertImage();break;case"donut-chart":r("Donut.Chart");break;case"column-chart":r("Column.Chart");break;case"bar-chart":r("Bar.Chart");break;case"line-chart":r("Line.Chart");break;case"increase-decimal":case"decrease-decimal":if(this.selection_state?.style){let i=D.Get(this.selection_state.style.number_format||"General");if(i.date_format)break;let s=new X(i.pattern);if(i.magic_decimal){let n=0,a=this.GetRange();Array.isArray(a)||(a=[[a]]);e:for(let o=0;o<a.length;o++)for(let l=0;l<a[o].length;l++){let d=a[o][l];if(typeof d<"u"&&ve(d)){let u=D.Get(this.selection_state.style.number_format||"General",!0),h=u.BaseFormat(d.real),p=u.BaseFormat(d.imaginary);h.parts&&typeof h.parts[1]=="string"&&(n=h.parts[1].length),p.parts&&typeof p.parts[1]=="string"&&(n=Math.max(n,p.parts[1].length));break e}else if(typeof d=="number"){let u=i.BaseFormat(d);u.parts&&typeof u.parts[1]=="string"&&(n=u.parts[1].length);break e}}e.command==="increase-decimal"?s.SetDecimal(n+1):s.SetDecimal(Math.max(0,n-1))}else e.command==="increase-decimal"?s.IncreaseDecimal():s.DecreaseDecimal();t.number_format=s.toString()}break;case"merge":this.grid.MergeCells();break;case"unmerge":this.grid.UnmergeCells();break;case"lock":t={locked:this.selection_state?.style?!this.selection_state.style.locked:!0};break;case"wrap":t={wrap:this.selection_state?.style?!this.selection_state?.style.wrap:!0};break;case"align-left":t={horizontal_align:A.HorizontalAlign.Left};break;case"align-center":t={horizontal_align:A.HorizontalAlign.Center};break;case"align-right":t={horizontal_align:A.HorizontalAlign.Right};break;case"align-top":t={vertical_align:A.VerticalAlign.Top};break;case"align-middle":t={vertical_align:A.VerticalAlign.Middle};break;case"align-bottom":t={vertical_align:A.VerticalAlign.Bottom};break;case"reset":this.Reset();break;case"import-desktop":this.LoadLocalFile();break;case"save-json":this.SaveLocalFile();break;case"save-csv":this.SaveLocalFile("csv");break;case"export-xlsx":this.Export();break;case"recalculate":this.Recalculate();break;default:console.info("unhandled",e.command);break}Object.keys(t).length&&this.grid.ApplyStyle(void 0,t,!0),this.Focus()}CreateToolbar(e){return this.toolbar=new sr(e,this.options,this.grid.theme),this.toolbar.Subscribe(t=>this.focus_target.HandleToolbarEvent(t)),this.UpdateDocumentStyles(!1),this.UpdateSelectionStyle(void 0),this.toolbar}CreateChart(){return this.calculator.RegisterLibrary("treb-charts",Zr)&&this.UpdateAC(),new tt}SetLanguage(e){if(this.language_model=e,!e)this.grid.SetLanguageMap();else{let t={};for(let r of e.functions||[])t[r.base]=r.name;this.grid.SetLanguageMap(t)}this.UpdateAC()}async Batch(e,t=!1){let r=this.last_selection,i=this.grid.Batch(e,t),s=!1,n=!1;for(let a of i)a.type==="data"?s=!0:a.type==="structure"&&a.rebuild_required&&(n=!0);n&&this.calculator.Reset(),(s||n)&&(await this.Recalculate(),this.DocumentChange(r))}Freeze(e=0,t=0){this.grid.Freeze(e,t,!0)}FreezeSelection(){let e=this.grid.GetSelection();if(e.empty)this.grid.Freeze(0,0);else{let t=e.area;t.entire_sheet||(t.entire_row?this.grid.Freeze(t.end.row+1,0):t.entire_column?this.grid.Freeze(0,t.end.column+1):this.grid.Freeze(t.end.row+1,t.end.column+1))}}GetFreeze(){return this.grid.GetFreeze()}UpdateTheme(){this.grid.UpdateTheme(void 0),this.toolbar&&this.toolbar.UpdateTheme(this.grid.theme)}GetSheetID(e){if(typeof e=="number"){let t=this.grid.model.sheets.list[e];if(t)return t.id}else{let t=this.model.sheets.Find(e);if(t)return t.id}}AddSheet(e){this.grid.AddSheet(e);let t=this.model.sheets.list[this.model.sheets.list.length-1];return this.calculator.Reset(),t.id}InsertAnnotation(e,t="treb-chart",r,i){let s;if(r&&(s=F.IsRectangle(r)?r:this.calculator.ResolveArea(r,this.grid.active_sheet)),i&&i!==this.parser.argument_separator){let l={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark};i===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",");let d=this.parser.Parse(e);this.parser.argument_separator=l.argument_separator,this.parser.decimal_mark=l.decimal_mark,d.expression&&(e="="+this.parser.Render(d.expression,{missing:""}))}let{x:n,y:a}=this.grid.GetScrollOffset(),o=this.grid.scale||1;this.grid.CreateAnnotation({type:t,formula:e},void 0,void 0,s||{top:a/o+30,left:n/o+30,width:300,height:300})}InsertImage(){this.SelectFile2(".png, .jpg, .jpeg, .gif, .svg",2)}RenameSheet(e,t){let r;typeof e=="number"?r=this.grid.model.sheets.list[e]:typeof e=="string"?r=this.model.sheets.Find(e):r=this.grid.active_sheet,r&&this.grid.RenameSheet(r,t)}DeleteSheet(e){if(typeof e=="string"){let t=this.model.sheets.Find(e);t&&this.grid.DeleteSheetID(t.id)}else this.grid.DeleteSheet(e);this.calculator.Reset()}HideSheet(e=0,t=!0){this.grid.ShowSheet(e,!t)}ShowSheet(e=0,t=!0){this.grid.ShowSheet(e,t)}ActivateSheet(e){this.grid.ActivateSheet(e)}SetColumnWidth(e,t){this.grid.SetColumnWidth(e,t)}SetRowHeight(e,t){this.grid.SetRowHeight(e,t)}InsertRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row}this.grid.InsertRows(e,t)}InsertColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column}this.grid.InsertColumns(e,t)}DeleteRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row,t=i.rows}this.grid.InsertRows(e,-t)}DeleteColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column,t=i.columns}this.grid.InsertColumns(e,-t)}FilterTable(e,t=0,r){let i=this.ResolveTable(e);if(!i)throw new Error("invalid table reference");r?this.grid.FilterTable(i,t,s=>r.call(0,s.value,s.calculated||void 0,JSON.parse(JSON.stringify(s.style||{})))):this.grid.FilterTable(i,0,()=>!0)}SortTable(e,t={}){let r=this.ResolveTable(e);if(!r)throw new Error("invalid table reference");this.grid.SortTable(r,t)}MergeCells(e){this.grid.MergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}UnmergeCells(e){this.grid.UnmergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}async ExportBlob(){if(!this.export_worker){let e="treb-export-worker";this.export_worker=await this.LoadWorker(e)}return new Promise((e,t)=>{if(this.export_worker){this.export_worker.onmessage=i=>{e(i.data?i.data.blob:void 0)},this.export_worker.onerror=i=>{console.error("export worker error"),console.info(i),t(i)};let r=this.grid.Serialize({rendered_values:!0,expand_arrays:!0,export_colors:!0,decorated_cells:!0,tables:!0,share_resources:!1});r.decimal_mark=T.decimal_separator,this.export_worker.postMessage({command:"export",sheet:r,decorated:this.calculator.DecoratedFunctionList()})}else t("worker failed")})}Revert(){let e=this.options.alternate_document||this.options.network_document;if(e){this.LoadNetworkDocument(e),this.options.storage_key&&(this.SaveLocalStorage("reverted_backup"),localStorage.removeItem(this.options.storage_key));return}console.warn("to revert, there must be a document set in options"),this.dialog?.ShowDialog({title:"Can't revert -- no document is set in options",close_box:!0,timeout:3e3,type:"error"})}Export(){this.ExportBlob().then(e=>{let t="export";this.grid.model.document_name&&(t=this.grid.model.document_name.toLowerCase().replace(/\s+/g,"-")),e&&(this.SaveAs(e,t+".xlsx"),this.last_save_version=this.file_version)}).catch(e=>{throw/invalid uri/i.test(e.message)&&this.dialog?.ShowDialog({title:"Error exporting file",close_box:!0,message:"The worker cannot run from the filesystem, please use a web server.",timeout:3e3,type:"error"}),e})}GetSelectionReference(){return this.grid.GetSelection()}Focus(){this.grid.Focus()}Resize(){this.grid.UpdateLayout(),this.Publish({type:"resize"})}Reset(){if(this.parent_view)return this.parent_view.Reset();this.grid.Reset(),this.ResetInternal(),this.calculator.AttachModel(),this.UpdateAC(),this.Publish({type:"reset"})}LoadFromLocalStorage(e){this.options.storage_key=e;let t=localStorage.getItem(e);if(t)try{let r=JSON.parse(t);return this.LoadDocument(r,{source:"local-storage"}),!0}catch(r){console.error(r)}return!1}async LoadNetworkDocument(e,t){let r=t?t.scroll:void 0,i=t?!!t.recalculate:!1,s=t?t.sheet:void 0,n=/csv(?:$|\?|&)/i.test(e),a=/tsv(?:$|\?|&)/i.test(e);try{this.spinner?.Show();let o=await fetch(e);if(this.spinner?.Hide(),!o.ok)throw new Error("network error");let l=await o.text();if(typeof l=="string")if(n)this.LoadCSV(l,"network-file");else{if(a)throw new Error("tsv not supported (TODO)");{l.substr(0,11)==="&&&START&&&"?l=l.substr(11):l.substr(0,8)==="for(;;);"&&(l=l.substr(8));let d=JSON.parse(l);this.LoadDocument(d,{scroll:r,recalculate:i,override_sheet:s,source:"network-file"})}}}catch(o){console.info("error loading network document",e),console.error(o),this.dialog?.ShowDialog({title:"Error loading file",close_box:!0,message:"The network document returned an error",type:"error",timeout:3e3}),this.Reset()}}async LoadLocalFile(){this.SelectFile2(".treb, .csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/json",1)}ExportDelimited(e={}){if(e={delimiter:",",...e},!e.delimiter||e.delimiter!==","&&e.delimiter!==" ")throw new Error("invalid delimiter");let t=this.grid.active_sheet;switch(typeof e.sheet){case"undefined":break;case"string":t=this.model.sheets.Find(e.sheet);break;case"number":t=this.grid.model.sheets.list[e.sheet];break;default:t=void 0;break}if(!t)throw new Error("invalid sheet identifier");let r=t.cells.toJSON({nested:!1,expand_arrays:!0,calculated_value:!0}),i=[];for(let a=0;a<r.columns;a++)i.push("");let s=[];for(let a=0;a<r.rows;a++)s.push(i.slice(0));let n=new RegExp(`[
|
|
13
|
-
\r"${e.delimiter}]`);if(
|
|
14
|
-
`)}SaveLocalFile(e="treb.json",t={}){let r=this.grid.model.document_name||"document",i,s,n=e.split(/\./).filter(o=>o.trim().length),a=n.length?n[n.length-1].toLowerCase():"treb";if(n.length<=1||e==="treb.json")if(e==="treb.json"&&(a=e),(a==="csv"||a==="tsv")&&this.grid.model.sheets.length>1){let o=this.grid.active_sheet.name;e=(r+"-"+o).toLowerCase().replace(/\W+/g,"-")+"."+a}else e=r.toLowerCase().replace(/\W+/g,"-")+"."+a;switch(a){case"csv":s=this.ExportDelimited({delimiter:","});break;case"tsv":s=this.ExportDelimited({delimiter:" "});break;case"treb":case"json":case"treb.json":i=this.SerializeDocument({...t}),s=JSON.stringify(i,void 0,t.pretty?2:void 0),this.last_save_version=this.file_version;break;default:throw new Error("invalid file type")}if(s&&e){let o=new Blob([s],{type:"text/plain;charset=utf-8"});this.SaveAs(o,e)}}LoadCSV(e,t){if(this.parent_view)return this.parent_view.LoadCSV(e,t);this.grid.FromCSV(e),this.ResetInternal(),this.grid.Update(!0),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles()}ScrollOffset(e){return this.grid.ScrollOffset(e)}LoadDocument(e,t={}){if(this.parent_view)return this.parent_view.LoadDocument(e,t);if(t={flush:!0,recalculate:!1,...t},t.override_selection&&e.sheet_data){let r=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let i of r)if(i.id===t.override_selection.target.sheet_id){i.selection=t.override_selection;break}}if(this.ImportDocumentData(e,t.override_sheet),this.calculator.Reset(),e.rendered_values&&!t.recalculate?(this.grid.Update(),this.calculator.RebuildClean(!0)):this.Recalculate(),this.InflateAnnotations(),t.flush&&this.FlushUndo(),this.Publish({type:"load",source:t.source}),this.UpdateDocumentStyles(),this.loaded=!0,t.scroll){let r=t.scroll;ne().then(()=>this.ScrollTo(r))}}SetNote(e,t){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(r)?r:r.start}this.grid.SetNote(e,t)}SetValidation(e,t,r){if(typeof e=="string"){let i=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(i)?i:i.start}if(typeof t>"u"||Array.isArray(t))this.grid.SetValidation(e,t,r);else{let i=this.calculator.ResolveArea(t,this.grid.active_sheet);this.grid.SetValidation(e,i,r)}}RemoveFunction(e){let t=e.toUpperCase();this.model.macro_functions.delete(t),this.UpdateAC()}DefineFunction(e,t="",r="0"){if(!e.length||/^[^A-Za-z]/.test(e)||/[^\w_.]/.test(e))throw new Error("invalid function name");typeof t=="string"&&(t=t?t.split(this.parser.argument_separator).map(i=>i.trim()):[]);for(let i of t)if(!i.length||/^[^A-Za-z]/.test(i)||/[^\w_.]/.test(i))throw new Error("invalid argument name");this.RemoveFunction(e),this.grid.model.macro_functions.set(e.toUpperCase(),{name:e,function_def:r,argument_names:t,expression:this.parser.Parse(r).expression}),this.UpdateAC()}SerializeDocument(e={}){e={share_resources:!0,shrink:!0,...e};let t=this.grid.Serialize(e),r={app:"treb",version:"23.3.3",revision:this.file_version,name:this.grid.model.document_name,user_data:this.grid.model.user_data,decimal_mark:T.decimal_separator,...t};if(e.share_resources){let i=1,s=new Map,n=Array.isArray(r.sheet_data)?r.sheet_data:[r.sheet_data],a=l=>{let d=s.get(l);return d||(d=(i++).toString(),s.set(l,d)),`resource:${d}`};for(let l of n)if(l){l.background_image&&(l.background_image=a(l.background_image));for(let d of l.annotations||[])d.type==="image"&&d.data.src&&(d.data.src=a(d.data.src))}let o={};for(let[l,d]of s.entries())o[d]=l;r.shared_resources=o}return e.rendered_values&&(r.rendered_values=!0),r}async Recalculate(e){let t;e&&e.type==="data"&&e.area&&(t=e.area),this.calculator.Calculate(t),this.grid.Update(!0),this.UpdateAnnotations(),this.Publish({type:"data"})}SaveLocalStorage(e=this.options.storage_key){if(!e){console.warn("not saving, no key");return}let t=JSON.stringify(this.SerializeDocument({rendered_values:!0,expand_arrays:!0}));localStorage.setItem(e,t)}Undo(){if(this.parent_view)return this.parent_view.Undo();if(this.undo_pointer<=1){console.warn("nothing to undo");return}let e=this.undo_stack[--this.undo_pointer-1],t=e.selection?JSON.parse(e.selection):void 0;this.LoadDocument(JSON.parse(e.data),{flush:!1,override_selection:t,source:"undo"})}About(){this.dialog?.ShowDialog({type:"about"})}ScrollTo(e,t={}){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(r)?r:r.start}t={x:!0,y:!0,smooth:!1,...t},this.grid.ScrollTo(e,t.x,t.y,t.smooth)}Resolve(e){let t=this.calculator.ResolveAddress(e,this.grid.active_sheet);return z(t)?t.sheet_id?t:void 0:t.start.sheet_id?t:void 0}Evaluate(e,t={}){return this.calculator.Evaluate(e,this.grid.active_sheet,t)}GetSelection(e=!0){let t=this.grid.GetSelection();if(t.empty)return"";let r="";if(t.area.count>1?r=y.CellAddressToLabel(t.area.start)+":"+y.CellAddressToLabel(t.area.end):r=y.CellAddressToLabel(t.area.start),!e)return r;let i=t.area.start.sheet_id||this.grid.active_sheet.id,s=this.ResolveSheetName(i,!0);return s?s+"!"+r:r}ParseNumber(e){return ye.TryParse(e).value}FormatNumber(e,t="General"){return D.Get(t).Format(e)}ApplyBorders(e,t,r=1){this.grid.ApplyBorders(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,void 0,r)}ApplyStyle(e,t={},r=!0){this.grid.ApplyStyle(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,r)}ClearName(e){this.grid.SetName(e)}DefineName(e,t){if(typeof t>"u"||t===null)throw new Error("invalid value (null or undefined)");if(typeof t=="object"&&(z(t)||ti(t))){this.grid.SetName(e,this.calculator.ResolveArea(t,this.grid.active_sheet));return}if(typeof t=="string"){let r=this.parser.Parse(t);if(!r.expression)throw new Error("invalid expression");switch(r.expression.type){case"address":case"range":this.grid.SetName(e,this.calculator.ResolveArea(r.expression,this.grid.active_sheet));return}this.grid.SetName(e,void 0,t)}else this.grid.SetName(e,void 0,t.toString())}SetLink(e,t=""){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(r)?r:r.start}if(!e){let r=this.GetSelectionReference();if(r.empty)return;e=r.target}this.grid.SetLink(e,t)}Select(e){let t=this.calculator.ResolveArea(e,this.grid.active_sheet);t.start.sheet_id&&t.start.sheet_id!==this.grid.active_sheet.id&&this.grid.ActivateSheetID(t.start.sheet_id),this.grid.SelectRange(t)}GetRange(e,t={}){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return t.type||(t.formatted&&(t.type="formatted"),t.formula&&(t.type="formula")),this.grid.GetRange(this.calculator.ResolveAddress(e,this.grid.active_sheet),t.type)}GetStyle(e,t=!1){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return this.grid.GetRangeStyle(this.calculator.ResolveAddress(e,this.grid.active_sheet),t)}SetRange(e,t=void 0,r={}){if(!e){let i=this.GetSelectionReference();i.empty||(e=i.area)}if(e){let i=this.calculator.ResolveArea(e,this.grid.active_sheet);if(r.spill&&Array.isArray(t)){let s=t.length,n=Math.max(0,...t.map(o=>o.length)),a={row:i.start.row+s+1,column:i.start.column+n+1};i.ConsumeAddress(a)}return this.grid.SetRange(i,t,r)}}Subscribe(e){return this.events.Subscribe(e)}Cancel(e){this.events.Cancel(e)}ResolveTable(e){let t;if(typeof e=="string"){let r=e.toLowerCase();this.model.tables.has(r)&&(t=this.model.tables.get(r))}if(!t){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);z(r)||(r=r.start),t=this.grid.GetTableReference(r)}return t}Unresolve(e,t=!0,r=!0){let i="",s=z(e)?new y(e):new y(e.start,e.end);if(r){let o=this.model.named_ranges.MatchSelection(s);if(o)return o}if(s.count>1?i=y.CellAddressToLabel(s.start)+":"+y.CellAddressToLabel(s.end):i=y.CellAddressToLabel(s.start),!t)return i;let n=s.start.sheet_id||this.grid.active_sheet.id,a=this.ResolveSheetName(n,!0);return a?a+"!"+i:i}SaveAs(e,t){let r=document.createElement("a");r.href=URL.createObjectURL(e),r.download=t,r.click(),URL.revokeObjectURL(r.href)}Publish(e){this.events.Publish(e)}async ImportXLSX(e,t){if(this.parent_view)return this.parent_view.ImportXLSX(e,t);if(!this.export_worker){let r="treb-export-worker";this.export_worker=await this.LoadWorker(r)}return new Promise((r,i)=>{this.export_worker?(this.dialog?.ShowDialog({message:"Importing XLSX..."}),this.export_worker.onmessage=s=>{if(s.data){if(s.data.status==="error")return i(s.data.error||"unknown error");this.grid.FromImportData(s.data.results),this.ResetInternal(),this.grid.Update(),this.UpdateAC(),this.calculator.AttachModel(),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles(),this.InflateAnnotations()}else return i("unknown error (missing data)");this.dialog?.HideDialog(),r()},this.export_worker.onerror=s=>{console.error("import worker error"),console.info(s),i(s)},this.export_worker.postMessage({command:"import",data:e})):i("worker failed")})}ResetInternal(){this.calculator.Reset(),this.FlushUndo(),this.file_version=this.last_save_version=0}HandleCellEvent(e){if(e.data?.type==="hyperlink"){let r="hyperlink invalid target",i=e.data.data||"";if(typeof i=="string"){if(/^https{0,1}:\/\//i.test(i)){if(!this.options.hyperlinks){console.warn("hyperlinks are disabled");return}let s=document.createElement("a");s.setAttribute("target",this.options.hyperlinks),s.setAttribute("href",i),s.setAttribute("noreferrer","true"),s.setAttribute("nofollow","true"),s.click();return}else{let s=this.parser.Parse(i);if(s.expression){if(s.expression.type==="address"){(s.expression.sheet||s.expression.sheet_id)&&this.ActivateSheet(s.expression.sheet||s.expression.sheet_id),this.Select(i);return}else if(s.expression.type==="range"){(s.expression.start.sheet||s.expression.start.sheet_id)&&this.ActivateSheet(s.expression.start.sheet||s.expression.start.sheet_id),this.Select(i);return}}}console.warn(r,2);return}}}OnSheetChange(e){for(let t of e.activate.annotations)this.InflateAnnotation(t),this.calculator.UpdateAnnotations(t,e.activate);this.UpdateAnnotations()}HandleDrag(e){if(e.dataTransfer&&e.dataTransfer.types){if(e.dataTransfer.types.some&&e.dataTransfer.types.some(t=>t==="Files"))e.preventDefault();else for(let t=0;t<e.dataTransfer.types.length;t++)if(e.dataTransfer.types[t]==="files"){e.preventDefault();return}}}HandleDrop(e){if(e.dataTransfer&&e.dataTransfer.files&&e.dataTransfer.files.length){e.preventDefault();let t=e.dataTransfer.files[0];/^image/.test(t.type)?this.InsertImageInternal(t):this.LoadFileInternal(t,"drag-and-drop").catch(()=>{})}}SelectFile2(e,t){if(!this.file_chooser){this.file_chooser=document.createElement("input"),this.file_chooser.type="file";let r=this.file_chooser;r.addEventListener("change",()=>{if(r.files&&r.files[0]){let i=r.files[0];switch(r.value="",this.file_chooser_operation){case 2:this.InsertImageInternal(i);break;case 1:this.LoadFileInternal(i,"local-file",!0);break;default:console.warn("file chooser: no operation");break}}})}if(!this.file_chooser)throw new Error("could not create file chooser");this.file_chooser_operation=t,this.file_chooser.accept=e||"",this.file_chooser.click()}async InsertImageInternal(e){if(this.options.max_file_size&&e.size>this.options.max_file_size){this.dialog?.ShowDialog({type:"error",message:"This file exceeds the allowed image size. Please try a smaller image.",title:"Error adding image",timeout:3e3,close_box:!0});return}let t=e;await new Promise((r,i)=>{let s=new FileReader;s.onload=async()=>{try{if(s.result){let n;if(typeof s.result=="string")n=s.result;else{n="";let l=new Uint8Array(s.result);for(let d=0;d<l.byteLength;d++)n+=String.fromCharCode(l[d])}let a=document.createElement("img");a.src=n,await Promise.resolve();let o=this.grid.CreateAnnotation({type:"image",formula:""},void 0,void 0,{top:30,left:30,width:a.width||300,height:a.height||300});o.data.src=n,o.data.original_size={width:a.width||300,height:a.height||300}}r()}catch(n){i(n)}},s.onabort=()=>{i("Aborted")},s.onerror=()=>{i("File error")},setTimeout(()=>{s.readAsDataURL(t)},100)})}LoadFileInternal(e,t,r=!0){if(!e)return Promise.resolve();let i=new FileReader;return new Promise((s,n)=>{let a=o=>{i.onload=null,i.onabort=null,i.onerror=null,o?(r&&(this.dialog?.ShowDialog({title:"Error reading file",close_box:!0,message:"Please make sure your file is a valid XLSX, CSV or TREB file.",type:"error",timeout:3e3}),console.error(o)),n(o)):s()};i.onload=()=>{try{if(i.result)if(/\.csv$/i.test(e.name))this.LoadCSV(i.result,t);else if(/\.xls[xm]$/i.test(e.name)){let o;if(typeof i.result=="string")o=i.result;else{o="";let l=new Uint8Array(i.result);for(let d=0;d<l.byteLength;d++)o+=String.fromCharCode(l[d])}this.ImportXLSX(o,t).then(()=>a()).catch(l=>a(l));return}else{let o=JSON.parse(i.result);this.LoadDocument(o,{source:t})}a()}catch(o){a(o?.toString())}},i.onabort=()=>{a("Aborted")},i.onerror=()=>{a("File error")},setTimeout(()=>{/\.xlsx$/i.test(e.name)?i.readAsBinaryString?i.readAsBinaryString(e):i.readAsArrayBuffer(e):i.readAsText(e)},100)})}UpdateAnnotations(){for(let e of this.grid.active_sheet.annotations){if(e.temp.vertex){let r=e.temp.vertex;if(r.state_id!==e.temp.state){e.temp.state=r.state_id;for(let i of e.view)i.dirty=!0}}let t=e.view[this.grid.view_index]||{};t.dirty&&(t.update_callback&&t.update_callback(),this.grid.AnnotationUpdated(e))}}RebuildAllAnnotations(){for(let e of this.grid.active_sheet.annotations){this.InflateAnnotation(e);let t=e.view[this.grid.view_index]||{};t.resize_callback&&t.resize_callback(),t.update_callback&&t.update_callback()}}InflateAnnotations(){for(let e of this.grid.active_sheet.annotations)this.InflateAnnotation(e)}InflateAnnotation(e){if(this.grid.headless)return;let t=e.view[this.grid.view_index]||{};if(t.inflated){e.dirty&&(t.resize_callback&&t.resize_callback(),e.dirty=!1);return}if(t.inflated=!0,e.dirty&&(e.dirty=!1),t.content_node&&e.data){if(e.type==="treb-chart"){let r=this.CreateChart();r.Initialize(t.content_node);let i=()=>{if(e.formula){let s=this.parser.Parse(e.formula);if(s&&s.expression&&s.expression.type==="call"){this.parser.Walk(s.expression,o=>((o.type==="address"||o.type==="range")&&this.calculator.ResolveSheetID(o,void 0,this.grid.active_sheet),!0));let n=s.expression.name.toLowerCase(),a=this.calculator.CalculateExpression(s.expression);r.Exec(n,a)}}r.Update()};t.resize_callback=()=>{this.grid.headless||(r.Resize(),r.Update())},t.update_callback=()=>{this.grid.headless||i()},t.node?.parentElement&&(this.grid.headless||i())}else if(e.type==="image"&&typeof e.data.src=="string"){let r=Et(e.data.src);if(r){let i=document.createElement("img");i.src=r,e.data.scale==="fixed"?(i.style.position="relative",i.style.left="50%",i.style.top="50%",i.style.transform="translate(-50%, -50%)"):(i.style.width="100%",i.style.height="100%"),t.content_node.appendChild(i)}}}}DocumentChange(e){ne().then(()=>{this.file_version++,this.file_version>=65536&&(this.file_version=1);let t=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}));this.options.storage_key&&localStorage.setItem(this.options.storage_key,t),this.options.undo&&this.PushUndo(t,e,!1),this.Publish({type:"document-change"})})}PushUndo(e,t,r=!0){let i=t||this.last_selection;this.undo_stack[this.undo_pointer-1]&&(this.undo_stack[this.undo_pointer-1].selection=i),r&&(this.file_version++,this.file_version>=65536&&(this.file_version=1)),e||(e=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}))),this.undo_stack[this.undo_pointer++]={data:e,selection:void 0};let s=this.undo_stack.length;if(s>16){let n=s-16;this.undo_stack=this.undo_stack.slice(n),this.undo_pointer-=n}}FlushUndo(e=!0){this.undo_stack=[],this.undo_pointer=0,this.last_save_version=this.file_version,e&&this.PushUndo(void 0,void 0,!1)}UpdateSelection(e){this.last_selection=JSON.stringify(e),this.Publish({type:"selection"})}UpdateSelectionStyle(e){let t=this.grid.GetFreeze(),r={frozen:!!t.rows||!!t.columns};if(e||(e=this.grid.GetSelection()),e&&!e.empty){r.selection=e,r.merge=!1;let i=this.grid.active_sheet.CellData(e.target);r.merge=!!i.merge_area,r.merge&&i.merge_area&&(i.merge_area.start.row!==e.target.row||i.merge_area.start.column!==e.target.column)&&(i=this.grid.active_sheet.CellData(i.merge_area.start)),r.comment=i.note,r.style=i.style?{...i.style}:void 0}this.selection_state=r,this.toolbar?.UpdateState(r)}UpdateDocumentStyles(e=!0){if(!this.toolbar)return;let t={},r={};for(let i of this.grid.model.sheets.list)i.NumberFormatsAndColors(r,t);this.toolbar.UpdateDocumentStyles(Object.keys(t),Object.keys(r),e)}ConvertLocale(e){let t=new We;t.flags={...this.parser.flags};let r,i;e.decimal_mark==="."?(t.decimal_mark=".",t.argument_separator=",",r=",",i=";"):(t.decimal_mark=",",t.argument_separator=";",r=".",i=",");let s=n=>{let a=t.Parse(n);if(a.expression)return"="+t.Render(a.expression,{missing:"",convert_decimal:r,convert_argument_separator:i})};if(e.macro_functions)for(let n of e.macro_functions){let a=s(n.function_def);a&&(n.function_def=a)}if(e.sheet_data){let n=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let a of n){if(a.annotations){for(let o of a.annotations)if(o.formula){let l=s(o.formula);l&&(o.formula=l)}}if(a.data?.length)for(let o of a.data){let l=lr(o)?[o]:o.cells;for(let d of l)if(d.value&&typeof d.value=="string"&&d.value[0]==="="){let u=s(d.value.slice(1));u&&(d.value=u)}}}}}CompareVersions(e="",t=""){let r=e.split(".").map(a=>Number(a)||0).concat([0,0,0]),i=t.split(".").map(a=>Number(a)||0).concat([0,0,0]),s=[0,1,2],n={match:0};for(let a=0;a<3;a++)if(r[a]!==i[a]){n.match=r[a]>i[a]?1:-1,n.level=s[a];break}return n}ImportDocumentData(e,t){this.file_version=e.revision||0;let r=[],i=this.CompareVersions(e.version,"23.3.3");if(i.match>0&&(i.level===0||i.level===1)&&console.warn(`The file you are opening was created with a newer version of TREB (${e.version} vs 23.3.3).
|
|
15
|
-
You may encounter compatibility errors.`),e.sheet_data&&(Array.isArray(e.sheet_data)?r=e.sheet_data:r.push(e.sheet_data)),e.shared_resources){let a=e.shared_resources,o=l=>/^resource:/.test(l)?a[l.substring(9)]||"":l;for(let l of r){l.background_image&&(l.background_image=o(l.background_image));for(let d of l.annotations||[])d.type==="image"&&d.data.src&&(d.data.src=o(d.data.src))}}e.decimal_mark&&e.decimal_mark!==T.decimal_separator&&this.ConvertLocale(e);let s=this.grid.model;if(s.tables.clear(),e.tables)for(let a of e.tables)s.tables.set(a.name.toLowerCase(),a);this.grid.UpdateSheets(r,void 0,t||e.active_sheet);for(let[a,o]of this.model.tables.entries())if(o.area.start.sheet_id){let l=s.sheets.Find(o.area.start.sheet_id);if(l)for(let d=o.area.start.row;d<=o.area.end.row;d++)for(let u=o.area.start.column;u<=o.area.end.column;u++){let h=l.cells.GetCell({row:d,column:u},!0);h.table=o}}s.document_name=e.name,s.user_data=e.user_data,s.named_ranges.Reset();let n=e.named_ranges;if(!n&&r[0]&&r[0].named_ranges&&(n=r[0].named_ranges),n&&s.named_ranges.Deserialize(n),s.named_expressions.clear(),e.named_expressions)for(let a of e.named_expressions){let o=this.parser.Parse(a.expression);o.valid&&o.expression&&(this.parser.Walk(o.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="range"&&(l=l.start),!l.sheet_id&&l.sheet){let d=this.model.sheets.Find(l.sheet);d&&(l.sheet_id=d.id)}return l.sheet_id||(l.sheet_id=this.grid.active_sheet.id),!1}return!0}),s.named_expressions.set(a.name.toUpperCase(),o.expression))}if(s.macro_functions.clear(),e.macro_functions)for(let a of e.macro_functions)s.macro_functions.set(a.name.toUpperCase(),{...a,expression:this.parser.Parse(a.function_def||"").expression});this.UpdateAC()}async LoadWorker(e){if(Be.export_worker_text)try{return new Worker(URL.createObjectURL(new Blob([Be.export_worker_text],{type:"application/javascript"})))}catch(i){console.info("embedded worker failed"),console.error(i)}if(!Be.treb_base_path)throw console.warn("worker path is not set. it you are loading TREB in an ESM module, please either include the script in a document <script/> tag, or call the method TREB.SetScriptPath() to set the load path for workers (this should be the path to TREB script files)."),new Error("worker path not set");/\.js$/.test(e)||(e+="-23.3.3.js");let t,r=Be.treb_base_path;if(r&&(/\/$/.test(r)||(r+="/"),e=r+e),/^(http:|https:|\/\/)/.test(e)){let i=await fetch(e);if(!i.ok)throw new Error("Error loading worker script");let s=await i.text();t=new Worker(URL.createObjectURL(new Blob([s],{type:"application/javascript"})))}else{if(/^file:/.test(e))throw new Error("invalid URI");t=new Worker(e)}return t}HandleKeyDown(e){e.ctrlKey&&(e.code==="KeyZ"||e.key==="z")&&(e.stopPropagation(),e.preventDefault(),this.Undo())}ResolveSheetName(e,t=!1){let r=this.model.sheets.Find(e);if(r)return t&&dt.test(r.name)?`'${r.name}'`:r.name}},oe=Be;k(oe,"treb_base_path",""),k(oe,"export_worker_text",""),k(oe,"treb_embedded_script_path",""),k(oe,"enable_engine",!1),k(oe,"enable_formatter",!1);var Qr="sidebar-open",or="toolbar-open";var ei=class{constructor(e,t){this.base_type=e;let r=typeof t.container=="string"?document.querySelector(t.container):t.container;if(!r)throw new Error("missing container");r.classList.add("treb-container"),this.options={...ir,...t},window.getComputedStyle(r).position==="static"&&(r.style.position="relative");let s=r.getBoundingClientRect();!this.options.headless&&(!s.width||!s.height)&&r.classList.add("default-spreadsheet-size"),this.inner_container=document.createElement("div"),this.inner_container.classList.add("treb-views"),this.options.collapsed||r.classList.add("sidebar-open"),(this.options.toolbar==="show"||this.options.toolbar==="show-narrow")&&r.classList.add(or),r.appendChild(this.inner_container),this.sheet=new e({...this.options,container:this.inner_container,resizable:!1}),this.sidebar=document.createElement("div"),this.sidebar.classList.add("embedded-spreadsheet-sidebar"),this.AddSidebarButton({icon:"treb-icon-reset",title:"Recalculate",click:()=>this.sheet.Recalculate()}),this.options.toolbar&&(this.toolbar_container=document.createElement("div"),this.toolbar_container.classList.add("toolbar-container"),this.toolbar_button=this.AddSidebarButton({icon:"treb-icon-toolbar",title:"Show Toolbar",click:()=>this.ToggleToolbar()}),r.appendChild(this.toolbar_container),this.sheet.toolbar_ctl={Show:o=>this.ShowToolbar(o)}),this.options.export&&this.AddSidebarButton({icon:"treb-icon-export",title:"Download as XLSX",click:()=>this.sheet.Export()}),this.options.revert&&this.AddSidebarButton({icon:"treb-icon-revert",title:"Revert to original version",click:()=>this.sheet.Revert()}),this.options.popout&&this.AddSidebarButton({icon:"treb-icon-popout",title:"Open in New Tab",click:()=>this.Popout()}),this.AddSidebarButton({icon:"treb-icon-about",title:"What's This?",click:()=>this.sheet.About()});let n=document.createElement("div");n.classList.add("sidebar-spacer"),this.sidebar.appendChild(n),this.AddSidebarButton({icon:"treb-icon-chevron-right",classes:"smaller",title:"Hide Sidebar",click:()=>this.HideSidebar()}),r.appendChild(this.sidebar);let a=this.AddSidebarButton({icon:"treb-icon-chevron-left",classes:["smaller","show-sidebar-button"],title:"Show Sidebar",click:()=>this.ShowSidebar()},void 0);if(r.appendChild(a),this.options.resizable){let o=r.querySelector(".treb-grid"),l=r.querySelector(".treb-layout-master");o&&qe.Create({container:r,node:o,resize_callback:()=>this.sheet.Resize(),layout_reference:l||void 0})}(this.options.toolbar==="show"||this.options.toolbar==="show-narrow")&&this.ShowToolbar(!0),t.container._spreadsheet=this.sheet}inner_container;sidebar;toolbar_container;toolbar_button;sheet;options;toolbar;static Create(e,t){return new ei(e,t)}Popout(){let e=window.open("","_blank");if(!e)return;e.document.head.innerHTML=`<title>${this.sheet.document_name?`TREB: ${this.sheet.document_name}`:"TREB: Untitled Document"}</title><meta charset='utf-8'><meta http-equiv='X-UA-Compatible' content='IE=edge'><meta name='viewport' content='width=device-width,initial-scale=1'><link rel='icon' type='image/svg+xml' href='https://treb.app/leaf.svg'>`;let t="treb-bundle";/\.js$/.test(t)||(t+=".js");let r=oe.treb_base_path;r&&(/\/$/.test(r)||(r+="/"),t=r+t);let i=e.document.createElement("script");i.src=t,i.setAttribute("type","text/javascript"),e.document.body.appendChild(i);let s=JSON.stringify(this.sheet.SerializeDocument({rendered_values:!0})),n=e.document.createElement("style");n.setAttribute("type","text/css"),n.textContent="*{box-sizing:border-box;padding:0;margin:0;}body,html{height:100%;width:100%;position:relative;}.treb{top:0;left:0;right:0;bottom:0;position:absolute;background:#fff;}",e.document.head.appendChild(n);let a=e.document.createElement("div");a.setAttribute("class","treb treb-fullscreen-padding"),e.document.body.appendChild(a);let o=window.screen.availWidth>=1200,l=e.document.createElement("script"),d={...this.options,container:void 0,network_document:void 0,storage_key:void 0,resizable:!1,export:!0,scroll:void 0,toolbar:o?"show":!0,file_menu:!0,prompt_save:!0,expand_formula_button:o,popout:!1,add_tab:!0,tab_bar:"auto",headless:!1,dnd:!0,collapsed:!o},u=(h,p)=>{let f=0,m=()=>{h.container=document.querySelector(".treb"),h.container&&window.TREB?(window.sheet=window.TREB.CreateSpreadsheet(h),window.sheet.LoadDocument(p)):++f<32&&setTimeout(()=>m(),100)};m()};l.textContent=`(${u.toString()})(${JSON.stringify(d)},${s})`,e.document.body.appendChild(l),e.document.close()}AddSidebarButton(e={},t=this.sidebar){let r=document.createElement("button");if(r.setAttribute("type","button"),r.classList.add("sidebar-button"),e.classes){let i=typeof e.classes=="string"?[e.classes]:e.classes;for(let s of i)r.classList.add(s)}if(e.title&&r.setAttribute("title",e.title),e.text&&(r.textContent=e.text),e.click){let i=e.click;r.addEventListener("click",()=>i())}if(e.icon&&r.classList.add("treb-icon",e.icon),t)if(typeof e.position=="number"){let s=t.children[e.position];s?t.insertBefore(r,s):t.appendChild(r)}else t.appendChild(r);return r}ToggleSidebar(){this.sidebar.parentElement.classList.toggle(Qr)}ShowSidebar(e=!0){let t=this.sidebar.parentElement;e?t.classList.add(Qr):t.classList.remove(Qr)}HideSidebar(){this.ShowSidebar(!1)}ToggleToolbar(){let e=this.toolbar_container?.parentElement;this.ShowToolbar(!e.classList.contains(or))}ShowToolbar(e=!0){let t=this.toolbar_container?.parentElement,r="Hide Toolbar";e?(this.toolbar_container&&!this.toolbar&&(this.toolbar=this.sheet.CreateToolbar(this.toolbar_container)),t.classList.add(or)):(t.classList.remove(or),r="Show Toolbar"),this.toolbar_button&&this.toolbar_button.setAttribute("title",r)}HideToolbar(){this.ShowToolbar(!1)}},xt=ei;k(xt,"symbols_injected",!1);var is='/*! TREB v23.3.3. Copyright 2018-2023 trebco, llc. All rights reserved. LGPL: https://treb.app/license */\n"use strict";(()=>{var ki=Object.create;var It=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var Ni=Object.getOwnPropertyNames;var Fi=Object.getPrototypeOf,Ti=Object.prototype.hasOwnProperty;var Pi=(s,e,t)=>e in s?It(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var Ye=(s=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(s,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):s)(function(s){if(typeof require<"u")return require.apply(this,arguments);throw new Error(\'Dynamic require of "\'+s+\'" is not supported\')});var ge=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var Ri=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ni(e))!Ti.call(s,n)&&n!==t&&It(s,n,{get:()=>e[n],enumerable:!(i=Si(e,n))||i.enumerable});return s};var Fe=(s,e,t)=>(t=s!=null?ki(Fi(s)):{},Ri(e||!s||!s.__esModule?It(t,"default",{value:s,enumerable:!0}):t,s));var ie=(s,e,t)=>(Pi(s,typeof e!="symbol"?e+"":e,t),t);var ut=ge((ot,$e)=>{(function(s){var e=typeof ot=="object"&&ot,t=typeof $e=="object"&&$e&&$e.exports==e&&$e,i=typeof global=="object"&&global;(i.global===i||i.window===i)&&(s=i);var n=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,r=/[\\x01-\\x7F]/g,a=/[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g,o=/<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g,u={"\\xAD":"shy","\\u200C":"zwnj","\\u200D":"zwj","\\u200E":"lrm","\\u2063":"ic","\\u2062":"it","\\u2061":"af","\\u200F":"rlm","\\u200B":"ZeroWidthSpace","\\u2060":"NoBreak","\\u0311":"DownBreve","\\u20DB":"tdot","\\u20DC":"DotDot"," ":"Tab","\\n":"NewLine","\\u2008":"puncsp","\\u205F":"MediumSpace","\\u2009":"thinsp","\\u200A":"hairsp","\\u2004":"emsp13","\\u2002":"ensp","\\u2005":"emsp14","\\u2003":"emsp","\\u2007":"numsp","\\xA0":"nbsp","\\u205F\\u200A":"ThickSpace","\\u203E":"oline",_:"lowbar","\\u2010":"dash","\\u2013":"ndash","\\u2014":"mdash","\\u2015":"horbar",",":"comma",";":"semi","\\u204F":"bsemi",":":"colon","\\u2A74":"Colone","!":"excl","\\xA1":"iexcl","?":"quest","\\xBF":"iquest",".":"period","\\u2025":"nldr","\\u2026":"mldr","\\xB7":"middot","\'":"apos","\\u2018":"lsquo","\\u2019":"rsquo","\\u201A":"sbquo","\\u2039":"lsaquo","\\u203A":"rsaquo",\'"\':"quot","\\u201C":"ldquo","\\u201D":"rdquo","\\u201E":"bdquo","\\xAB":"laquo","\\xBB":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","\\u2308":"lceil","\\u2309":"rceil","\\u230A":"lfloor","\\u230B":"rfloor","\\u2985":"lopar","\\u2986":"ropar","\\u298B":"lbrke","\\u298C":"rbrke","\\u298D":"lbrkslu","\\u298E":"rbrksld","\\u298F":"lbrksld","\\u2990":"rbrkslu","\\u2991":"langd","\\u2992":"rangd","\\u2993":"lparlt","\\u2994":"rpargt","\\u2995":"gtlPar","\\u2996":"ltrPar","\\u27E6":"lobrk","\\u27E7":"robrk","\\u27E8":"lang","\\u27E9":"rang","\\u27EA":"Lang","\\u27EB":"Rang","\\u27EC":"loang","\\u27ED":"roang","\\u2772":"lbbrk","\\u2773":"rbbrk","\\u2016":"Vert","\\xA7":"sect","\\xB6":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","\\u2030":"permil","\\u2031":"pertenk","\\u2020":"dagger","\\u2021":"Dagger","\\u2022":"bull","\\u2043":"hybull","\\u2032":"prime","\\u2033":"Prime","\\u2034":"tprime","\\u2057":"qprime","\\u2035":"bprime","\\u2041":"caret","`":"grave","\\xB4":"acute","\\u02DC":"tilde","^":"Hat","\\xAF":"macr","\\u02D8":"breve","\\u02D9":"dot","\\xA8":"die","\\u02DA":"ring","\\u02DD":"dblac","\\xB8":"cedil","\\u02DB":"ogon","\\u02C6":"circ","\\u02C7":"caron","\\xB0":"deg","\\xA9":"copy","\\xAE":"reg","\\u2117":"copysr","\\u2118":"wp","\\u211E":"rx","\\u2127":"mho","\\u2129":"iiota","\\u2190":"larr","\\u219A":"nlarr","\\u2192":"rarr","\\u219B":"nrarr","\\u2191":"uarr","\\u2193":"darr","\\u2194":"harr","\\u21AE":"nharr","\\u2195":"varr","\\u2196":"nwarr","\\u2197":"nearr","\\u2198":"searr","\\u2199":"swarr","\\u219D":"rarrw","\\u219D\\u0338":"nrarrw","\\u219E":"Larr","\\u219F":"Uarr","\\u21A0":"Rarr","\\u21A1":"Darr","\\u21A2":"larrtl","\\u21A3":"rarrtl","\\u21A4":"mapstoleft","\\u21A5":"mapstoup","\\u21A6":"map","\\u21A7":"mapstodown","\\u21A9":"larrhk","\\u21AA":"rarrhk","\\u21AB":"larrlp","\\u21AC":"rarrlp","\\u21AD":"harrw","\\u21B0":"lsh","\\u21B1":"rsh","\\u21B2":"ldsh","\\u21B3":"rdsh","\\u21B5":"crarr","\\u21B6":"cularr","\\u21B7":"curarr","\\u21BA":"olarr","\\u21BB":"orarr","\\u21BC":"lharu","\\u21BD":"lhard","\\u21BE":"uharr","\\u21BF":"uharl","\\u21C0":"rharu","\\u21C1":"rhard","\\u21C2":"dharr","\\u21C3":"dharl","\\u21C4":"rlarr","\\u21C5":"udarr","\\u21C6":"lrarr","\\u21C7":"llarr","\\u21C8":"uuarr","\\u21C9":"rrarr","\\u21CA":"ddarr","\\u21CB":"lrhar","\\u21CC":"rlhar","\\u21D0":"lArr","\\u21CD":"nlArr","\\u21D1":"uArr","\\u21D2":"rArr","\\u21CF":"nrArr","\\u21D3":"dArr","\\u21D4":"iff","\\u21CE":"nhArr","\\u21D5":"vArr","\\u21D6":"nwArr","\\u21D7":"neArr","\\u21D8":"seArr","\\u21D9":"swArr","\\u21DA":"lAarr","\\u21DB":"rAarr","\\u21DD":"zigrarr","\\u21E4":"larrb","\\u21E5":"rarrb","\\u21F5":"duarr","\\u21FD":"loarr","\\u21FE":"roarr","\\u21FF":"hoarr","\\u2200":"forall","\\u2201":"comp","\\u2202":"part","\\u2202\\u0338":"npart","\\u2203":"exist","\\u2204":"nexist","\\u2205":"empty","\\u2207":"Del","\\u2208":"in","\\u2209":"notin","\\u220B":"ni","\\u220C":"notni","\\u03F6":"bepsi","\\u220F":"prod","\\u2210":"coprod","\\u2211":"sum","+":"plus","\\xB1":"pm","\\xF7":"div","\\xD7":"times","<":"lt","\\u226E":"nlt","<\\u20D2":"nvlt","=":"equals","\\u2260":"ne","=\\u20E5":"bne","\\u2A75":"Equal",">":"gt","\\u226F":"ngt",">\\u20D2":"nvgt","\\xAC":"not","|":"vert","\\xA6":"brvbar","\\u2212":"minus","\\u2213":"mp","\\u2214":"plusdo","\\u2044":"frasl","\\u2216":"setmn","\\u2217":"lowast","\\u2218":"compfn","\\u221A":"Sqrt","\\u221D":"prop","\\u221E":"infin","\\u221F":"angrt","\\u2220":"ang","\\u2220\\u20D2":"nang","\\u2221":"angmsd","\\u2222":"angsph","\\u2223":"mid","\\u2224":"nmid","\\u2225":"par","\\u2226":"npar","\\u2227":"and","\\u2228":"or","\\u2229":"cap","\\u2229\\uFE00":"caps","\\u222A":"cup","\\u222A\\uFE00":"cups","\\u222B":"int","\\u222C":"Int","\\u222D":"tint","\\u2A0C":"qint","\\u222E":"oint","\\u222F":"Conint","\\u2230":"Cconint","\\u2231":"cwint","\\u2232":"cwconint","\\u2233":"awconint","\\u2234":"there4","\\u2235":"becaus","\\u2236":"ratio","\\u2237":"Colon","\\u2238":"minusd","\\u223A":"mDDot","\\u223B":"homtht","\\u223C":"sim","\\u2241":"nsim","\\u223C\\u20D2":"nvsim","\\u223D":"bsim","\\u223D\\u0331":"race","\\u223E":"ac","\\u223E\\u0333":"acE","\\u223F":"acd","\\u2240":"wr","\\u2242":"esim","\\u2242\\u0338":"nesim","\\u2243":"sime","\\u2244":"nsime","\\u2245":"cong","\\u2247":"ncong","\\u2246":"simne","\\u2248":"ap","\\u2249":"nap","\\u224A":"ape","\\u224B":"apid","\\u224B\\u0338":"napid","\\u224C":"bcong","\\u224D":"CupCap","\\u226D":"NotCupCap","\\u224D\\u20D2":"nvap","\\u224E":"bump","\\u224E\\u0338":"nbump","\\u224F":"bumpe","\\u224F\\u0338":"nbumpe","\\u2250":"doteq","\\u2250\\u0338":"nedot","\\u2251":"eDot","\\u2252":"efDot","\\u2253":"erDot","\\u2254":"colone","\\u2255":"ecolon","\\u2256":"ecir","\\u2257":"cire","\\u2259":"wedgeq","\\u225A":"veeeq","\\u225C":"trie","\\u225F":"equest","\\u2261":"equiv","\\u2262":"nequiv","\\u2261\\u20E5":"bnequiv","\\u2264":"le","\\u2270":"nle","\\u2264\\u20D2":"nvle","\\u2265":"ge","\\u2271":"nge","\\u2265\\u20D2":"nvge","\\u2266":"lE","\\u2266\\u0338":"nlE","\\u2267":"gE","\\u2267\\u0338":"ngE","\\u2268\\uFE00":"lvnE","\\u2268":"lnE","\\u2269":"gnE","\\u2269\\uFE00":"gvnE","\\u226A":"ll","\\u226A\\u0338":"nLtv","\\u226A\\u20D2":"nLt","\\u226B":"gg","\\u226B\\u0338":"nGtv","\\u226B\\u20D2":"nGt","\\u226C":"twixt","\\u2272":"lsim","\\u2274":"nlsim","\\u2273":"gsim","\\u2275":"ngsim","\\u2276":"lg","\\u2278":"ntlg","\\u2277":"gl","\\u2279":"ntgl","\\u227A":"pr","\\u2280":"npr","\\u227B":"sc","\\u2281":"nsc","\\u227C":"prcue","\\u22E0":"nprcue","\\u227D":"sccue","\\u22E1":"nsccue","\\u227E":"prsim","\\u227F":"scsim","\\u227F\\u0338":"NotSucceedsTilde","\\u2282":"sub","\\u2284":"nsub","\\u2282\\u20D2":"vnsub","\\u2283":"sup","\\u2285":"nsup","\\u2283\\u20D2":"vnsup","\\u2286":"sube","\\u2288":"nsube","\\u2287":"supe","\\u2289":"nsupe","\\u228A\\uFE00":"vsubne","\\u228A":"subne","\\u228B\\uFE00":"vsupne","\\u228B":"supne","\\u228D":"cupdot","\\u228E":"uplus","\\u228F":"sqsub","\\u228F\\u0338":"NotSquareSubset","\\u2290":"sqsup","\\u2290\\u0338":"NotSquareSuperset","\\u2291":"sqsube","\\u22E2":"nsqsube","\\u2292":"sqsupe","\\u22E3":"nsqsupe","\\u2293":"sqcap","\\u2293\\uFE00":"sqcaps","\\u2294":"sqcup","\\u2294\\uFE00":"sqcups","\\u2295":"oplus","\\u2296":"ominus","\\u2297":"otimes","\\u2298":"osol","\\u2299":"odot","\\u229A":"ocir","\\u229B":"oast","\\u229D":"odash","\\u229E":"plusb","\\u229F":"minusb","\\u22A0":"timesb","\\u22A1":"sdotb","\\u22A2":"vdash","\\u22AC":"nvdash","\\u22A3":"dashv","\\u22A4":"top","\\u22A5":"bot","\\u22A7":"models","\\u22A8":"vDash","\\u22AD":"nvDash","\\u22A9":"Vdash","\\u22AE":"nVdash","\\u22AA":"Vvdash","\\u22AB":"VDash","\\u22AF":"nVDash","\\u22B0":"prurel","\\u22B2":"vltri","\\u22EA":"nltri","\\u22B3":"vrtri","\\u22EB":"nrtri","\\u22B4":"ltrie","\\u22EC":"nltrie","\\u22B4\\u20D2":"nvltrie","\\u22B5":"rtrie","\\u22ED":"nrtrie","\\u22B5\\u20D2":"nvrtrie","\\u22B6":"origof","\\u22B7":"imof","\\u22B8":"mumap","\\u22B9":"hercon","\\u22BA":"intcal","\\u22BB":"veebar","\\u22BD":"barvee","\\u22BE":"angrtvb","\\u22BF":"lrtri","\\u22C0":"Wedge","\\u22C1":"Vee","\\u22C2":"xcap","\\u22C3":"xcup","\\u22C4":"diam","\\u22C5":"sdot","\\u22C6":"Star","\\u22C7":"divonx","\\u22C8":"bowtie","\\u22C9":"ltimes","\\u22CA":"rtimes","\\u22CB":"lthree","\\u22CC":"rthree","\\u22CD":"bsime","\\u22CE":"cuvee","\\u22CF":"cuwed","\\u22D0":"Sub","\\u22D1":"Sup","\\u22D2":"Cap","\\u22D3":"Cup","\\u22D4":"fork","\\u22D5":"epar","\\u22D6":"ltdot","\\u22D7":"gtdot","\\u22D8":"Ll","\\u22D8\\u0338":"nLl","\\u22D9":"Gg","\\u22D9\\u0338":"nGg","\\u22DA\\uFE00":"lesg","\\u22DA":"leg","\\u22DB":"gel","\\u22DB\\uFE00":"gesl","\\u22DE":"cuepr","\\u22DF":"cuesc","\\u22E6":"lnsim","\\u22E7":"gnsim","\\u22E8":"prnsim","\\u22E9":"scnsim","\\u22EE":"vellip","\\u22EF":"ctdot","\\u22F0":"utdot","\\u22F1":"dtdot","\\u22F2":"disin","\\u22F3":"isinsv","\\u22F4":"isins","\\u22F5":"isindot","\\u22F5\\u0338":"notindot","\\u22F6":"notinvc","\\u22F7":"notinvb","\\u22F9":"isinE","\\u22F9\\u0338":"notinE","\\u22FA":"nisd","\\u22FB":"xnis","\\u22FC":"nis","\\u22FD":"notnivc","\\u22FE":"notnivb","\\u2305":"barwed","\\u2306":"Barwed","\\u230C":"drcrop","\\u230D":"dlcrop","\\u230E":"urcrop","\\u230F":"ulcrop","\\u2310":"bnot","\\u2312":"profline","\\u2313":"profsurf","\\u2315":"telrec","\\u2316":"target","\\u231C":"ulcorn","\\u231D":"urcorn","\\u231E":"dlcorn","\\u231F":"drcorn","\\u2322":"frown","\\u2323":"smile","\\u232D":"cylcty","\\u232E":"profalar","\\u2336":"topbot","\\u233D":"ovbar","\\u233F":"solbar","\\u237C":"angzarr","\\u23B0":"lmoust","\\u23B1":"rmoust","\\u23B4":"tbrk","\\u23B5":"bbrk","\\u23B6":"bbrktbrk","\\u23DC":"OverParenthesis","\\u23DD":"UnderParenthesis","\\u23DE":"OverBrace","\\u23DF":"UnderBrace","\\u23E2":"trpezium","\\u23E7":"elinters","\\u2423":"blank","\\u2500":"boxh","\\u2502":"boxv","\\u250C":"boxdr","\\u2510":"boxdl","\\u2514":"boxur","\\u2518":"boxul","\\u251C":"boxvr","\\u2524":"boxvl","\\u252C":"boxhd","\\u2534":"boxhu","\\u253C":"boxvh","\\u2550":"boxH","\\u2551":"boxV","\\u2552":"boxdR","\\u2553":"boxDr","\\u2554":"boxDR","\\u2555":"boxdL","\\u2556":"boxDl","\\u2557":"boxDL","\\u2558":"boxuR","\\u2559":"boxUr","\\u255A":"boxUR","\\u255B":"boxuL","\\u255C":"boxUl","\\u255D":"boxUL","\\u255E":"boxvR","\\u255F":"boxVr","\\u2560":"boxVR","\\u2561":"boxvL","\\u2562":"boxVl","\\u2563":"boxVL","\\u2564":"boxHd","\\u2565":"boxhD","\\u2566":"boxHD","\\u2567":"boxHu","\\u2568":"boxhU","\\u2569":"boxHU","\\u256A":"boxvH","\\u256B":"boxVh","\\u256C":"boxVH","\\u2580":"uhblk","\\u2584":"lhblk","\\u2588":"block","\\u2591":"blk14","\\u2592":"blk12","\\u2593":"blk34","\\u25A1":"squ","\\u25AA":"squf","\\u25AB":"EmptyVerySmallSquare","\\u25AD":"rect","\\u25AE":"marker","\\u25B1":"fltns","\\u25B3":"xutri","\\u25B4":"utrif","\\u25B5":"utri","\\u25B8":"rtrif","\\u25B9":"rtri","\\u25BD":"xdtri","\\u25BE":"dtrif","\\u25BF":"dtri","\\u25C2":"ltrif","\\u25C3":"ltri","\\u25CA":"loz","\\u25CB":"cir","\\u25EC":"tridot","\\u25EF":"xcirc","\\u25F8":"ultri","\\u25F9":"urtri","\\u25FA":"lltri","\\u25FB":"EmptySmallSquare","\\u25FC":"FilledSmallSquare","\\u2605":"starf","\\u2606":"star","\\u260E":"phone","\\u2640":"female","\\u2642":"male","\\u2660":"spades","\\u2663":"clubs","\\u2665":"hearts","\\u2666":"diams","\\u266A":"sung","\\u2713":"check","\\u2717":"cross","\\u2720":"malt","\\u2736":"sext","\\u2758":"VerticalSeparator","\\u27C8":"bsolhsub","\\u27C9":"suphsol","\\u27F5":"xlarr","\\u27F6":"xrarr","\\u27F7":"xharr","\\u27F8":"xlArr","\\u27F9":"xrArr","\\u27FA":"xhArr","\\u27FC":"xmap","\\u27FF":"dzigrarr","\\u2902":"nvlArr","\\u2903":"nvrArr","\\u2904":"nvHarr","\\u2905":"Map","\\u290C":"lbarr","\\u290D":"rbarr","\\u290E":"lBarr","\\u290F":"rBarr","\\u2910":"RBarr","\\u2911":"DDotrahd","\\u2912":"UpArrowBar","\\u2913":"DownArrowBar","\\u2916":"Rarrtl","\\u2919":"latail","\\u291A":"ratail","\\u291B":"lAtail","\\u291C":"rAtail","\\u291D":"larrfs","\\u291E":"rarrfs","\\u291F":"larrbfs","\\u2920":"rarrbfs","\\u2923":"nwarhk","\\u2924":"nearhk","\\u2925":"searhk","\\u2926":"swarhk","\\u2927":"nwnear","\\u2928":"toea","\\u2929":"tosa","\\u292A":"swnwar","\\u2933":"rarrc","\\u2933\\u0338":"nrarrc","\\u2935":"cudarrr","\\u2936":"ldca","\\u2937":"rdca","\\u2938":"cudarrl","\\u2939":"larrpl","\\u293C":"curarrm","\\u293D":"cularrp","\\u2945":"rarrpl","\\u2948":"harrcir","\\u2949":"Uarrocir","\\u294A":"lurdshar","\\u294B":"ldrushar","\\u294E":"LeftRightVector","\\u294F":"RightUpDownVector","\\u2950":"DownLeftRightVector","\\u2951":"LeftUpDownVector","\\u2952":"LeftVectorBar","\\u2953":"RightVectorBar","\\u2954":"RightUpVectorBar","\\u2955":"RightDownVectorBar","\\u2956":"DownLeftVectorBar","\\u2957":"DownRightVectorBar","\\u2958":"LeftUpVectorBar","\\u2959":"LeftDownVectorBar","\\u295A":"LeftTeeVector","\\u295B":"RightTeeVector","\\u295C":"RightUpTeeVector","\\u295D":"RightDownTeeVector","\\u295E":"DownLeftTeeVector","\\u295F":"DownRightTeeVector","\\u2960":"LeftUpTeeVector","\\u2961":"LeftDownTeeVector","\\u2962":"lHar","\\u2963":"uHar","\\u2964":"rHar","\\u2965":"dHar","\\u2966":"luruhar","\\u2967":"ldrdhar","\\u2968":"ruluhar","\\u2969":"rdldhar","\\u296A":"lharul","\\u296B":"llhard","\\u296C":"rharul","\\u296D":"lrhard","\\u296E":"udhar","\\u296F":"duhar","\\u2970":"RoundImplies","\\u2971":"erarr","\\u2972":"simrarr","\\u2973":"larrsim","\\u2974":"rarrsim","\\u2975":"rarrap","\\u2976":"ltlarr","\\u2978":"gtrarr","\\u2979":"subrarr","\\u297B":"suplarr","\\u297C":"lfisht","\\u297D":"rfisht","\\u297E":"ufisht","\\u297F":"dfisht","\\u299A":"vzigzag","\\u299C":"vangrt","\\u299D":"angrtvbd","\\u29A4":"ange","\\u29A5":"range","\\u29A6":"dwangle","\\u29A7":"uwangle","\\u29A8":"angmsdaa","\\u29A9":"angmsdab","\\u29AA":"angmsdac","\\u29AB":"angmsdad","\\u29AC":"angmsdae","\\u29AD":"angmsdaf","\\u29AE":"angmsdag","\\u29AF":"angmsdah","\\u29B0":"bemptyv","\\u29B1":"demptyv","\\u29B2":"cemptyv","\\u29B3":"raemptyv","\\u29B4":"laemptyv","\\u29B5":"ohbar","\\u29B6":"omid","\\u29B7":"opar","\\u29B9":"operp","\\u29BB":"olcross","\\u29BC":"odsold","\\u29BE":"olcir","\\u29BF":"ofcir","\\u29C0":"olt","\\u29C1":"ogt","\\u29C2":"cirscir","\\u29C3":"cirE","\\u29C4":"solb","\\u29C5":"bsolb","\\u29C9":"boxbox","\\u29CD":"trisb","\\u29CE":"rtriltri","\\u29CF":"LeftTriangleBar","\\u29CF\\u0338":"NotLeftTriangleBar","\\u29D0":"RightTriangleBar","\\u29D0\\u0338":"NotRightTriangleBar","\\u29DC":"iinfin","\\u29DD":"infintie","\\u29DE":"nvinfin","\\u29E3":"eparsl","\\u29E4":"smeparsl","\\u29E5":"eqvparsl","\\u29EB":"lozf","\\u29F4":"RuleDelayed","\\u29F6":"dsol","\\u2A00":"xodot","\\u2A01":"xoplus","\\u2A02":"xotime","\\u2A04":"xuplus","\\u2A06":"xsqcup","\\u2A0D":"fpartint","\\u2A10":"cirfnint","\\u2A11":"awint","\\u2A12":"rppolint","\\u2A13":"scpolint","\\u2A14":"npolint","\\u2A15":"pointint","\\u2A16":"quatint","\\u2A17":"intlarhk","\\u2A22":"pluscir","\\u2A23":"plusacir","\\u2A24":"simplus","\\u2A25":"plusdu","\\u2A26":"plussim","\\u2A27":"plustwo","\\u2A29":"mcomma","\\u2A2A":"minusdu","\\u2A2D":"loplus","\\u2A2E":"roplus","\\u2A2F":"Cross","\\u2A30":"timesd","\\u2A31":"timesbar","\\u2A33":"smashp","\\u2A34":"lotimes","\\u2A35":"rotimes","\\u2A36":"otimesas","\\u2A37":"Otimes","\\u2A38":"odiv","\\u2A39":"triplus","\\u2A3A":"triminus","\\u2A3B":"tritime","\\u2A3C":"iprod","\\u2A3F":"amalg","\\u2A40":"capdot","\\u2A42":"ncup","\\u2A43":"ncap","\\u2A44":"capand","\\u2A45":"cupor","\\u2A46":"cupcap","\\u2A47":"capcup","\\u2A48":"cupbrcap","\\u2A49":"capbrcup","\\u2A4A":"cupcup","\\u2A4B":"capcap","\\u2A4C":"ccups","\\u2A4D":"ccaps","\\u2A50":"ccupssm","\\u2A53":"And","\\u2A54":"Or","\\u2A55":"andand","\\u2A56":"oror","\\u2A57":"orslope","\\u2A58":"andslope","\\u2A5A":"andv","\\u2A5B":"orv","\\u2A5C":"andd","\\u2A5D":"ord","\\u2A5F":"wedbar","\\u2A66":"sdote","\\u2A6A":"simdot","\\u2A6D":"congdot","\\u2A6D\\u0338":"ncongdot","\\u2A6E":"easter","\\u2A6F":"apacir","\\u2A70":"apE","\\u2A70\\u0338":"napE","\\u2A71":"eplus","\\u2A72":"pluse","\\u2A73":"Esim","\\u2A77":"eDDot","\\u2A78":"equivDD","\\u2A79":"ltcir","\\u2A7A":"gtcir","\\u2A7B":"ltquest","\\u2A7C":"gtquest","\\u2A7D":"les","\\u2A7D\\u0338":"nles","\\u2A7E":"ges","\\u2A7E\\u0338":"nges","\\u2A7F":"lesdot","\\u2A80":"gesdot","\\u2A81":"lesdoto","\\u2A82":"gesdoto","\\u2A83":"lesdotor","\\u2A84":"gesdotol","\\u2A85":"lap","\\u2A86":"gap","\\u2A87":"lne","\\u2A88":"gne","\\u2A89":"lnap","\\u2A8A":"gnap","\\u2A8B":"lEg","\\u2A8C":"gEl","\\u2A8D":"lsime","\\u2A8E":"gsime","\\u2A8F":"lsimg","\\u2A90":"gsiml","\\u2A91":"lgE","\\u2A92":"glE","\\u2A93":"lesges","\\u2A94":"gesles","\\u2A95":"els","\\u2A96":"egs","\\u2A97":"elsdot","\\u2A98":"egsdot","\\u2A99":"el","\\u2A9A":"eg","\\u2A9D":"siml","\\u2A9E":"simg","\\u2A9F":"simlE","\\u2AA0":"simgE","\\u2AA1":"LessLess","\\u2AA1\\u0338":"NotNestedLessLess","\\u2AA2":"GreaterGreater","\\u2AA2\\u0338":"NotNestedGreaterGreater","\\u2AA4":"glj","\\u2AA5":"gla","\\u2AA6":"ltcc","\\u2AA7":"gtcc","\\u2AA8":"lescc","\\u2AA9":"gescc","\\u2AAA":"smt","\\u2AAB":"lat","\\u2AAC":"smte","\\u2AAC\\uFE00":"smtes","\\u2AAD":"late","\\u2AAD\\uFE00":"lates","\\u2AAE":"bumpE","\\u2AAF":"pre","\\u2AAF\\u0338":"npre","\\u2AB0":"sce","\\u2AB0\\u0338":"nsce","\\u2AB3":"prE","\\u2AB4":"scE","\\u2AB5":"prnE","\\u2AB6":"scnE","\\u2AB7":"prap","\\u2AB8":"scap","\\u2AB9":"prnap","\\u2ABA":"scnap","\\u2ABB":"Pr","\\u2ABC":"Sc","\\u2ABD":"subdot","\\u2ABE":"supdot","\\u2ABF":"subplus","\\u2AC0":"supplus","\\u2AC1":"submult","\\u2AC2":"supmult","\\u2AC3":"subedot","\\u2AC4":"supedot","\\u2AC5":"subE","\\u2AC5\\u0338":"nsubE","\\u2AC6":"supE","\\u2AC6\\u0338":"nsupE","\\u2AC7":"subsim","\\u2AC8":"supsim","\\u2ACB\\uFE00":"vsubnE","\\u2ACB":"subnE","\\u2ACC\\uFE00":"vsupnE","\\u2ACC":"supnE","\\u2ACF":"csub","\\u2AD0":"csup","\\u2AD1":"csube","\\u2AD2":"csupe","\\u2AD3":"subsup","\\u2AD4":"supsub","\\u2AD5":"subsub","\\u2AD6":"supsup","\\u2AD7":"suphsub","\\u2AD8":"supdsub","\\u2AD9":"forkv","\\u2ADA":"topfork","\\u2ADB":"mlcp","\\u2AE4":"Dashv","\\u2AE6":"Vdashl","\\u2AE7":"Barv","\\u2AE8":"vBar","\\u2AE9":"vBarv","\\u2AEB":"Vbar","\\u2AEC":"Not","\\u2AED":"bNot","\\u2AEE":"rnmid","\\u2AEF":"cirmid","\\u2AF0":"midcir","\\u2AF1":"topcir","\\u2AF2":"nhpar","\\u2AF3":"parsim","\\u2AFD":"parsl","\\u2AFD\\u20E5":"nparsl","\\u266D":"flat","\\u266E":"natur","\\u266F":"sharp","\\xA4":"curren","\\xA2":"cent",$:"dollar","\\xA3":"pound","\\xA5":"yen","\\u20AC":"euro","\\xB9":"sup1","\\xBD":"half","\\u2153":"frac13","\\xBC":"frac14","\\u2155":"frac15","\\u2159":"frac16","\\u215B":"frac18","\\xB2":"sup2","\\u2154":"frac23","\\u2156":"frac25","\\xB3":"sup3","\\xBE":"frac34","\\u2157":"frac35","\\u215C":"frac38","\\u2158":"frac45","\\u215A":"frac56","\\u215D":"frac58","\\u215E":"frac78","\\u{1D4B6}":"ascr","\\u{1D552}":"aopf","\\u{1D51E}":"afr","\\u{1D538}":"Aopf","\\u{1D504}":"Afr","\\u{1D49C}":"Ascr",\\u00AA:"ordf",\\u00E1:"aacute",\\u00C1:"Aacute",\\u00E0:"agrave",\\u00C0:"Agrave",\\u0103:"abreve",\\u0102:"Abreve",\\u00E2:"acirc",\\u00C2:"Acirc",\\u00E5:"aring",\\u00C5:"angst",\\u00E4:"auml",\\u00C4:"Auml",\\u00E3:"atilde",\\u00C3:"Atilde",\\u0105:"aogon",\\u0104:"Aogon",\\u0101:"amacr",\\u0100:"Amacr",\\u00E6:"aelig",\\u00C6:"AElig","\\u{1D4B7}":"bscr","\\u{1D553}":"bopf","\\u{1D51F}":"bfr","\\u{1D539}":"Bopf",\\u212C:"Bscr","\\u{1D505}":"Bfr","\\u{1D520}":"cfr","\\u{1D4B8}":"cscr","\\u{1D554}":"copf",\\u212D:"Cfr","\\u{1D49E}":"Cscr",\\u2102:"Copf",\\u0107:"cacute",\\u0106:"Cacute",\\u0109:"ccirc",\\u0108:"Ccirc",\\u010D:"ccaron",\\u010C:"Ccaron",\\u010B:"cdot",\\u010A:"Cdot",\\u00E7:"ccedil",\\u00C7:"Ccedil","\\u2105":"incare","\\u{1D521}":"dfr","\\u2146":"dd","\\u{1D555}":"dopf","\\u{1D4B9}":"dscr","\\u{1D49F}":"Dscr","\\u{1D507}":"Dfr","\\u2145":"DD","\\u{1D53B}":"Dopf",\\u010F:"dcaron",\\u010E:"Dcaron",\\u0111:"dstrok",\\u0110:"Dstrok",\\u00F0:"eth",\\u00D0:"ETH","\\u2147":"ee",\\u212F:"escr","\\u{1D522}":"efr","\\u{1D556}":"eopf",\\u2130:"Escr","\\u{1D508}":"Efr","\\u{1D53C}":"Eopf",\\u00E9:"eacute",\\u00C9:"Eacute",\\u00E8:"egrave",\\u00C8:"Egrave",\\u00EA:"ecirc",\\u00CA:"Ecirc",\\u011B:"ecaron",\\u011A:"Ecaron",\\u00EB:"euml",\\u00CB:"Euml",\\u0117:"edot",\\u0116:"Edot",\\u0119:"eogon",\\u0118:"Eogon",\\u0113:"emacr",\\u0112:"Emacr","\\u{1D523}":"ffr","\\u{1D557}":"fopf","\\u{1D4BB}":"fscr","\\u{1D509}":"Ffr","\\u{1D53D}":"Fopf",\\u2131:"Fscr",\\uFB00:"fflig",\\uFB03:"ffilig",\\uFB04:"ffllig",\\uFB01:"filig",fj:"fjlig",\\uFB02:"fllig",\\u0192:"fnof",\\u210A:"gscr","\\u{1D558}":"gopf","\\u{1D524}":"gfr","\\u{1D4A2}":"Gscr","\\u{1D53E}":"Gopf","\\u{1D50A}":"Gfr",\\u01F5:"gacute",\\u011F:"gbreve",\\u011E:"Gbreve",\\u011D:"gcirc",\\u011C:"Gcirc",\\u0121:"gdot",\\u0120:"Gdot",\\u0122:"Gcedil","\\u{1D525}":"hfr",\\u210E:"planckh","\\u{1D4BD}":"hscr","\\u{1D559}":"hopf",\\u210B:"Hscr",\\u210C:"Hfr",\\u210D:"Hopf",\\u0125:"hcirc",\\u0124:"Hcirc",\\u210F:"hbar",\\u0127:"hstrok",\\u0126:"Hstrok","\\u{1D55A}":"iopf","\\u{1D526}":"ifr","\\u{1D4BE}":"iscr","\\u2148":"ii","\\u{1D540}":"Iopf",\\u2110:"Iscr",\\u2111:"Im",\\u00ED:"iacute",\\u00CD:"Iacute",\\u00EC:"igrave",\\u00CC:"Igrave",\\u00EE:"icirc",\\u00CE:"Icirc",\\u00EF:"iuml",\\u00CF:"Iuml",\\u0129:"itilde",\\u0128:"Itilde",\\u0130:"Idot",\\u012F:"iogon",\\u012E:"Iogon",\\u012B:"imacr",\\u012A:"Imacr",\\u0133:"ijlig",\\u0132:"IJlig",\\u0131:"imath","\\u{1D4BF}":"jscr","\\u{1D55B}":"jopf","\\u{1D527}":"jfr","\\u{1D4A5}":"Jscr","\\u{1D50D}":"Jfr","\\u{1D541}":"Jopf",\\u0135:"jcirc",\\u0134:"Jcirc","\\u0237":"jmath","\\u{1D55C}":"kopf","\\u{1D4C0}":"kscr","\\u{1D528}":"kfr","\\u{1D4A6}":"Kscr","\\u{1D542}":"Kopf","\\u{1D50E}":"Kfr",\\u0137:"kcedil",\\u0136:"Kcedil","\\u{1D529}":"lfr","\\u{1D4C1}":"lscr",\\u2113:"ell","\\u{1D55D}":"lopf",\\u2112:"Lscr","\\u{1D50F}":"Lfr","\\u{1D543}":"Lopf",\\u013A:"lacute",\\u0139:"Lacute",\\u013E:"lcaron",\\u013D:"Lcaron",\\u013C:"lcedil",\\u013B:"Lcedil",\\u0142:"lstrok",\\u0141:"Lstrok",\\u0140:"lmidot",\\u013F:"Lmidot","\\u{1D52A}":"mfr","\\u{1D55E}":"mopf","\\u{1D4C2}":"mscr","\\u{1D510}":"Mfr","\\u{1D544}":"Mopf",\\u2133:"Mscr","\\u{1D52B}":"nfr","\\u{1D55F}":"nopf","\\u{1D4C3}":"nscr",\\u2115:"Nopf","\\u{1D4A9}":"Nscr","\\u{1D511}":"Nfr",\\u0144:"nacute",\\u0143:"Nacute",\\u0148:"ncaron",\\u0147:"Ncaron",\\u00F1:"ntilde",\\u00D1:"Ntilde",\\u0146:"ncedil",\\u0145:"Ncedil","\\u2116":"numero",\\u014B:"eng",\\u014A:"ENG","\\u{1D560}":"oopf","\\u{1D52C}":"ofr",\\u2134:"oscr","\\u{1D4AA}":"Oscr","\\u{1D512}":"Ofr","\\u{1D546}":"Oopf",\\u00BA:"ordm",\\u00F3:"oacute",\\u00D3:"Oacute",\\u00F2:"ograve",\\u00D2:"Ograve",\\u00F4:"ocirc",\\u00D4:"Ocirc",\\u00F6:"ouml",\\u00D6:"Ouml",\\u0151:"odblac",\\u0150:"Odblac",\\u00F5:"otilde",\\u00D5:"Otilde",\\u00F8:"oslash",\\u00D8:"Oslash",\\u014D:"omacr",\\u014C:"Omacr",\\u0153:"oelig",\\u0152:"OElig","\\u{1D52D}":"pfr","\\u{1D4C5}":"pscr","\\u{1D561}":"popf",\\u2119:"Popf","\\u{1D513}":"Pfr","\\u{1D4AB}":"Pscr","\\u{1D562}":"qopf","\\u{1D52E}":"qfr","\\u{1D4C6}":"qscr","\\u{1D4AC}":"Qscr","\\u{1D514}":"Qfr",\\u211A:"Qopf",\\u0138:"kgreen","\\u{1D52F}":"rfr","\\u{1D563}":"ropf","\\u{1D4C7}":"rscr",\\u211B:"Rscr",\\u211C:"Re",\\u211D:"Ropf",\\u0155:"racute",\\u0154:"Racute",\\u0159:"rcaron",\\u0158:"Rcaron",\\u0157:"rcedil",\\u0156:"Rcedil","\\u{1D564}":"sopf","\\u{1D4C8}":"sscr","\\u{1D530}":"sfr","\\u{1D54A}":"Sopf","\\u{1D516}":"Sfr","\\u{1D4AE}":"Sscr","\\u24C8":"oS",\\u015B:"sacute",\\u015A:"Sacute",\\u015D:"scirc",\\u015C:"Scirc",\\u0161:"scaron",\\u0160:"Scaron",\\u015F:"scedil",\\u015E:"Scedil",\\u00DF:"szlig","\\u{1D531}":"tfr","\\u{1D4C9}":"tscr","\\u{1D565}":"topf","\\u{1D4AF}":"Tscr","\\u{1D517}":"Tfr","\\u{1D54B}":"Topf",\\u0165:"tcaron",\\u0164:"Tcaron",\\u0163:"tcedil",\\u0162:"Tcedil","\\u2122":"trade",\\u0167:"tstrok",\\u0166:"Tstrok","\\u{1D4CA}":"uscr","\\u{1D566}":"uopf","\\u{1D532}":"ufr","\\u{1D54C}":"Uopf","\\u{1D518}":"Ufr","\\u{1D4B0}":"Uscr",\\u00FA:"uacute",\\u00DA:"Uacute",\\u00F9:"ugrave",\\u00D9:"Ugrave",\\u016D:"ubreve",\\u016C:"Ubreve",\\u00FB:"ucirc",\\u00DB:"Ucirc",\\u016F:"uring",\\u016E:"Uring",\\u00FC:"uuml",\\u00DC:"Uuml",\\u0171:"udblac",\\u0170:"Udblac",\\u0169:"utilde",\\u0168:"Utilde",\\u0173:"uogon",\\u0172:"Uogon",\\u016B:"umacr",\\u016A:"Umacr","\\u{1D533}":"vfr","\\u{1D567}":"vopf","\\u{1D4CB}":"vscr","\\u{1D519}":"Vfr","\\u{1D54D}":"Vopf","\\u{1D4B1}":"Vscr","\\u{1D568}":"wopf","\\u{1D4CC}":"wscr","\\u{1D534}":"wfr","\\u{1D4B2}":"Wscr","\\u{1D54E}":"Wopf","\\u{1D51A}":"Wfr",\\u0175:"wcirc",\\u0174:"Wcirc","\\u{1D535}":"xfr","\\u{1D4CD}":"xscr","\\u{1D569}":"xopf","\\u{1D54F}":"Xopf","\\u{1D51B}":"Xfr","\\u{1D4B3}":"Xscr","\\u{1D536}":"yfr","\\u{1D4CE}":"yscr","\\u{1D56A}":"yopf","\\u{1D4B4}":"Yscr","\\u{1D51C}":"Yfr","\\u{1D550}":"Yopf",\\u00FD:"yacute",\\u00DD:"Yacute",\\u0177:"ycirc",\\u0176:"Ycirc",\\u00FF:"yuml",\\u0178:"Yuml","\\u{1D4CF}":"zscr","\\u{1D537}":"zfr","\\u{1D56B}":"zopf",\\u2128:"Zfr",\\u2124:"Zopf","\\u{1D4B5}":"Zscr",\\u017A:"zacute",\\u0179:"Zacute",\\u017E:"zcaron",\\u017D:"Zcaron",\\u017C:"zdot",\\u017B:"Zdot",\\u01B5:"imped",\\u00FE:"thorn",\\u00DE:"THORN",\\u0149:"napos",\\u03B1:"alpha",\\u0391:"Alpha",\\u03B2:"beta",\\u0392:"Beta",\\u03B3:"gamma",\\u0393:"Gamma",\\u03B4:"delta",\\u0394:"Delta",\\u03B5:"epsi","\\u03F5":"epsiv",\\u0395:"Epsilon",\\u03DD:"gammad",\\u03DC:"Gammad",\\u03B6:"zeta",\\u0396:"Zeta",\\u03B7:"eta",\\u0397:"Eta",\\u03B8:"theta",\\u03D1:"thetav",\\u0398:"Theta",\\u03B9:"iota",\\u0399:"Iota",\\u03BA:"kappa",\\u03F0:"kappav",\\u039A:"Kappa",\\u03BB:"lambda",\\u039B:"Lambda",\\u03BC:"mu",\\u00B5:"micro",\\u039C:"Mu",\\u03BD:"nu",\\u039D:"Nu",\\u03BE:"xi",\\u039E:"Xi",\\u03BF:"omicron",\\u039F:"Omicron",\\u03C0:"pi",\\u03D6:"piv",\\u03A0:"Pi",\\u03C1:"rho",\\u03F1:"rhov",\\u03A1:"Rho",\\u03C3:"sigma",\\u03A3:"Sigma",\\u03C2:"sigmaf",\\u03C4:"tau",\\u03A4:"Tau",\\u03C5:"upsi",\\u03A5:"Upsilon",\\u03D2:"Upsi",\\u03C6:"phi",\\u03D5:"phiv",\\u03A6:"Phi",\\u03C7:"chi",\\u03A7:"Chi",\\u03C8:"psi",\\u03A8:"Psi",\\u03C9:"omega",\\u03A9:"ohm",\\u0430:"acy",\\u0410:"Acy",\\u0431:"bcy",\\u0411:"Bcy",\\u0432:"vcy",\\u0412:"Vcy",\\u0433:"gcy",\\u0413:"Gcy",\\u0453:"gjcy",\\u0403:"GJcy",\\u0434:"dcy",\\u0414:"Dcy",\\u0452:"djcy",\\u0402:"DJcy",\\u0435:"iecy",\\u0415:"IEcy",\\u0451:"iocy",\\u0401:"IOcy",\\u0454:"jukcy",\\u0404:"Jukcy",\\u0436:"zhcy",\\u0416:"ZHcy",\\u0437:"zcy",\\u0417:"Zcy",\\u0455:"dscy",\\u0405:"DScy",\\u0438:"icy",\\u0418:"Icy",\\u0456:"iukcy",\\u0406:"Iukcy",\\u0457:"yicy",\\u0407:"YIcy",\\u0439:"jcy",\\u0419:"Jcy",\\u0458:"jsercy",\\u0408:"Jsercy",\\u043A:"kcy",\\u041A:"Kcy",\\u045C:"kjcy",\\u040C:"KJcy",\\u043B:"lcy",\\u041B:"Lcy",\\u0459:"ljcy",\\u0409:"LJcy",\\u043C:"mcy",\\u041C:"Mcy",\\u043D:"ncy",\\u041D:"Ncy",\\u045A:"njcy",\\u040A:"NJcy",\\u043E:"ocy",\\u041E:"Ocy",\\u043F:"pcy",\\u041F:"Pcy",\\u0440:"rcy",\\u0420:"Rcy",\\u0441:"scy",\\u0421:"Scy",\\u0442:"tcy",\\u0422:"Tcy",\\u045B:"tshcy",\\u040B:"TSHcy",\\u0443:"ucy",\\u0423:"Ucy",\\u045E:"ubrcy",\\u040E:"Ubrcy",\\u0444:"fcy",\\u0424:"Fcy",\\u0445:"khcy",\\u0425:"KHcy",\\u0446:"tscy",\\u0426:"TScy",\\u0447:"chcy",\\u0427:"CHcy",\\u045F:"dzcy",\\u040F:"DZcy",\\u0448:"shcy",\\u0428:"SHcy",\\u0449:"shchcy",\\u0429:"SHCHcy",\\u044A:"hardcy",\\u042A:"HARDcy",\\u044B:"ycy",\\u042B:"Ycy",\\u044C:"softcy",\\u042C:"SOFTcy",\\u044D:"ecy",\\u042D:"Ecy",\\u044E:"yucy",\\u042E:"YUcy",\\u044F:"yacy",\\u042F:"YAcy",\\u2135:"aleph",\\u2136:"beth",\\u2137:"gimel",\\u2138:"daleth"},h=/["&\'<>`]/g,l={\'"\':""","&":"&","\'":"'","<":"<",">":">","`":"`"},c=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,A=/[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,p=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,m={aacute:"\\xE1",Aacute:"\\xC1",abreve:"\\u0103",Abreve:"\\u0102",ac:"\\u223E",acd:"\\u223F",acE:"\\u223E\\u0333",acirc:"\\xE2",Acirc:"\\xC2",acute:"\\xB4",acy:"\\u0430",Acy:"\\u0410",aelig:"\\xE6",AElig:"\\xC6",af:"\\u2061",afr:"\\u{1D51E}",Afr:"\\u{1D504}",agrave:"\\xE0",Agrave:"\\xC0",alefsym:"\\u2135",aleph:"\\u2135",alpha:"\\u03B1",Alpha:"\\u0391",amacr:"\\u0101",Amacr:"\\u0100",amalg:"\\u2A3F",amp:"&",AMP:"&",and:"\\u2227",And:"\\u2A53",andand:"\\u2A55",andd:"\\u2A5C",andslope:"\\u2A58",andv:"\\u2A5A",ang:"\\u2220",ange:"\\u29A4",angle:"\\u2220",angmsd:"\\u2221",angmsdaa:"\\u29A8",angmsdab:"\\u29A9",angmsdac:"\\u29AA",angmsdad:"\\u29AB",angmsdae:"\\u29AC",angmsdaf:"\\u29AD",angmsdag:"\\u29AE",angmsdah:"\\u29AF",angrt:"\\u221F",angrtvb:"\\u22BE",angrtvbd:"\\u299D",angsph:"\\u2222",angst:"\\xC5",angzarr:"\\u237C",aogon:"\\u0105",Aogon:"\\u0104",aopf:"\\u{1D552}",Aopf:"\\u{1D538}",ap:"\\u2248",apacir:"\\u2A6F",ape:"\\u224A",apE:"\\u2A70",apid:"\\u224B",apos:"\'",ApplyFunction:"\\u2061",approx:"\\u2248",approxeq:"\\u224A",aring:"\\xE5",Aring:"\\xC5",ascr:"\\u{1D4B6}",Ascr:"\\u{1D49C}",Assign:"\\u2254",ast:"*",asymp:"\\u2248",asympeq:"\\u224D",atilde:"\\xE3",Atilde:"\\xC3",auml:"\\xE4",Auml:"\\xC4",awconint:"\\u2233",awint:"\\u2A11",backcong:"\\u224C",backepsilon:"\\u03F6",backprime:"\\u2035",backsim:"\\u223D",backsimeq:"\\u22CD",Backslash:"\\u2216",Barv:"\\u2AE7",barvee:"\\u22BD",barwed:"\\u2305",Barwed:"\\u2306",barwedge:"\\u2305",bbrk:"\\u23B5",bbrktbrk:"\\u23B6",bcong:"\\u224C",bcy:"\\u0431",Bcy:"\\u0411",bdquo:"\\u201E",becaus:"\\u2235",because:"\\u2235",Because:"\\u2235",bemptyv:"\\u29B0",bepsi:"\\u03F6",bernou:"\\u212C",Bernoullis:"\\u212C",beta:"\\u03B2",Beta:"\\u0392",beth:"\\u2136",between:"\\u226C",bfr:"\\u{1D51F}",Bfr:"\\u{1D505}",bigcap:"\\u22C2",bigcirc:"\\u25EF",bigcup:"\\u22C3",bigodot:"\\u2A00",bigoplus:"\\u2A01",bigotimes:"\\u2A02",bigsqcup:"\\u2A06",bigstar:"\\u2605",bigtriangledown:"\\u25BD",bigtriangleup:"\\u25B3",biguplus:"\\u2A04",bigvee:"\\u22C1",bigwedge:"\\u22C0",bkarow:"\\u290D",blacklozenge:"\\u29EB",blacksquare:"\\u25AA",blacktriangle:"\\u25B4",blacktriangledown:"\\u25BE",blacktriangleleft:"\\u25C2",blacktriangleright:"\\u25B8",blank:"\\u2423",blk12:"\\u2592",blk14:"\\u2591",blk34:"\\u2593",block:"\\u2588",bne:"=\\u20E5",bnequiv:"\\u2261\\u20E5",bnot:"\\u2310",bNot:"\\u2AED",bopf:"\\u{1D553}",Bopf:"\\u{1D539}",bot:"\\u22A5",bottom:"\\u22A5",bowtie:"\\u22C8",boxbox:"\\u29C9",boxdl:"\\u2510",boxdL:"\\u2555",boxDl:"\\u2556",boxDL:"\\u2557",boxdr:"\\u250C",boxdR:"\\u2552",boxDr:"\\u2553",boxDR:"\\u2554",boxh:"\\u2500",boxH:"\\u2550",boxhd:"\\u252C",boxhD:"\\u2565",boxHd:"\\u2564",boxHD:"\\u2566",boxhu:"\\u2534",boxhU:"\\u2568",boxHu:"\\u2567",boxHU:"\\u2569",boxminus:"\\u229F",boxplus:"\\u229E",boxtimes:"\\u22A0",boxul:"\\u2518",boxuL:"\\u255B",boxUl:"\\u255C",boxUL:"\\u255D",boxur:"\\u2514",boxuR:"\\u2558",boxUr:"\\u2559",boxUR:"\\u255A",boxv:"\\u2502",boxV:"\\u2551",boxvh:"\\u253C",boxvH:"\\u256A",boxVh:"\\u256B",boxVH:"\\u256C",boxvl:"\\u2524",boxvL:"\\u2561",boxVl:"\\u2562",boxVL:"\\u2563",boxvr:"\\u251C",boxvR:"\\u255E",boxVr:"\\u255F",boxVR:"\\u2560",bprime:"\\u2035",breve:"\\u02D8",Breve:"\\u02D8",brvbar:"\\xA6",bscr:"\\u{1D4B7}",Bscr:"\\u212C",bsemi:"\\u204F",bsim:"\\u223D",bsime:"\\u22CD",bsol:"\\\\",bsolb:"\\u29C5",bsolhsub:"\\u27C8",bull:"\\u2022",bullet:"\\u2022",bump:"\\u224E",bumpe:"\\u224F",bumpE:"\\u2AAE",bumpeq:"\\u224F",Bumpeq:"\\u224E",cacute:"\\u0107",Cacute:"\\u0106",cap:"\\u2229",Cap:"\\u22D2",capand:"\\u2A44",capbrcup:"\\u2A49",capcap:"\\u2A4B",capcup:"\\u2A47",capdot:"\\u2A40",CapitalDifferentialD:"\\u2145",caps:"\\u2229\\uFE00",caret:"\\u2041",caron:"\\u02C7",Cayleys:"\\u212D",ccaps:"\\u2A4D",ccaron:"\\u010D",Ccaron:"\\u010C",ccedil:"\\xE7",Ccedil:"\\xC7",ccirc:"\\u0109",Ccirc:"\\u0108",Cconint:"\\u2230",ccups:"\\u2A4C",ccupssm:"\\u2A50",cdot:"\\u010B",Cdot:"\\u010A",cedil:"\\xB8",Cedilla:"\\xB8",cemptyv:"\\u29B2",cent:"\\xA2",centerdot:"\\xB7",CenterDot:"\\xB7",cfr:"\\u{1D520}",Cfr:"\\u212D",chcy:"\\u0447",CHcy:"\\u0427",check:"\\u2713",checkmark:"\\u2713",chi:"\\u03C7",Chi:"\\u03A7",cir:"\\u25CB",circ:"\\u02C6",circeq:"\\u2257",circlearrowleft:"\\u21BA",circlearrowright:"\\u21BB",circledast:"\\u229B",circledcirc:"\\u229A",circleddash:"\\u229D",CircleDot:"\\u2299",circledR:"\\xAE",circledS:"\\u24C8",CircleMinus:"\\u2296",CirclePlus:"\\u2295",CircleTimes:"\\u2297",cire:"\\u2257",cirE:"\\u29C3",cirfnint:"\\u2A10",cirmid:"\\u2AEF",cirscir:"\\u29C2",ClockwiseContourIntegral:"\\u2232",CloseCurlyDoubleQuote:"\\u201D",CloseCurlyQuote:"\\u2019",clubs:"\\u2663",clubsuit:"\\u2663",colon:":",Colon:"\\u2237",colone:"\\u2254",Colone:"\\u2A74",coloneq:"\\u2254",comma:",",commat:"@",comp:"\\u2201",compfn:"\\u2218",complement:"\\u2201",complexes:"\\u2102",cong:"\\u2245",congdot:"\\u2A6D",Congruent:"\\u2261",conint:"\\u222E",Conint:"\\u222F",ContourIntegral:"\\u222E",copf:"\\u{1D554}",Copf:"\\u2102",coprod:"\\u2210",Coproduct:"\\u2210",copy:"\\xA9",COPY:"\\xA9",copysr:"\\u2117",CounterClockwiseContourIntegral:"\\u2233",crarr:"\\u21B5",cross:"\\u2717",Cross:"\\u2A2F",cscr:"\\u{1D4B8}",Cscr:"\\u{1D49E}",csub:"\\u2ACF",csube:"\\u2AD1",csup:"\\u2AD0",csupe:"\\u2AD2",ctdot:"\\u22EF",cudarrl:"\\u2938",cudarrr:"\\u2935",cuepr:"\\u22DE",cuesc:"\\u22DF",cularr:"\\u21B6",cularrp:"\\u293D",cup:"\\u222A",Cup:"\\u22D3",cupbrcap:"\\u2A48",cupcap:"\\u2A46",CupCap:"\\u224D",cupcup:"\\u2A4A",cupdot:"\\u228D",cupor:"\\u2A45",cups:"\\u222A\\uFE00",curarr:"\\u21B7",curarrm:"\\u293C",curlyeqprec:"\\u22DE",curlyeqsucc:"\\u22DF",curlyvee:"\\u22CE",curlywedge:"\\u22CF",curren:"\\xA4",curvearrowleft:"\\u21B6",curvearrowright:"\\u21B7",cuvee:"\\u22CE",cuwed:"\\u22CF",cwconint:"\\u2232",cwint:"\\u2231",cylcty:"\\u232D",dagger:"\\u2020",Dagger:"\\u2021",daleth:"\\u2138",darr:"\\u2193",dArr:"\\u21D3",Darr:"\\u21A1",dash:"\\u2010",dashv:"\\u22A3",Dashv:"\\u2AE4",dbkarow:"\\u290F",dblac:"\\u02DD",dcaron:"\\u010F",Dcaron:"\\u010E",dcy:"\\u0434",Dcy:"\\u0414",dd:"\\u2146",DD:"\\u2145",ddagger:"\\u2021",ddarr:"\\u21CA",DDotrahd:"\\u2911",ddotseq:"\\u2A77",deg:"\\xB0",Del:"\\u2207",delta:"\\u03B4",Delta:"\\u0394",demptyv:"\\u29B1",dfisht:"\\u297F",dfr:"\\u{1D521}",Dfr:"\\u{1D507}",dHar:"\\u2965",dharl:"\\u21C3",dharr:"\\u21C2",DiacriticalAcute:"\\xB4",DiacriticalDot:"\\u02D9",DiacriticalDoubleAcute:"\\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\\u02DC",diam:"\\u22C4",diamond:"\\u22C4",Diamond:"\\u22C4",diamondsuit:"\\u2666",diams:"\\u2666",die:"\\xA8",DifferentialD:"\\u2146",digamma:"\\u03DD",disin:"\\u22F2",div:"\\xF7",divide:"\\xF7",divideontimes:"\\u22C7",divonx:"\\u22C7",djcy:"\\u0452",DJcy:"\\u0402",dlcorn:"\\u231E",dlcrop:"\\u230D",dollar:"$",dopf:"\\u{1D555}",Dopf:"\\u{1D53B}",dot:"\\u02D9",Dot:"\\xA8",DotDot:"\\u20DC",doteq:"\\u2250",doteqdot:"\\u2251",DotEqual:"\\u2250",dotminus:"\\u2238",dotplus:"\\u2214",dotsquare:"\\u22A1",doublebarwedge:"\\u2306",DoubleContourIntegral:"\\u222F",DoubleDot:"\\xA8",DoubleDownArrow:"\\u21D3",DoubleLeftArrow:"\\u21D0",DoubleLeftRightArrow:"\\u21D4",DoubleLeftTee:"\\u2AE4",DoubleLongLeftArrow:"\\u27F8",DoubleLongLeftRightArrow:"\\u27FA",DoubleLongRightArrow:"\\u27F9",DoubleRightArrow:"\\u21D2",DoubleRightTee:"\\u22A8",DoubleUpArrow:"\\u21D1",DoubleUpDownArrow:"\\u21D5",DoubleVerticalBar:"\\u2225",downarrow:"\\u2193",Downarrow:"\\u21D3",DownArrow:"\\u2193",DownArrowBar:"\\u2913",DownArrowUpArrow:"\\u21F5",DownBreve:"\\u0311",downdownarrows:"\\u21CA",downharpoonleft:"\\u21C3",downharpoonright:"\\u21C2",DownLeftRightVector:"\\u2950",DownLeftTeeVector:"\\u295E",DownLeftVector:"\\u21BD",DownLeftVectorBar:"\\u2956",DownRightTeeVector:"\\u295F",DownRightVector:"\\u21C1",DownRightVectorBar:"\\u2957",DownTee:"\\u22A4",DownTeeArrow:"\\u21A7",drbkarow:"\\u2910",drcorn:"\\u231F",drcrop:"\\u230C",dscr:"\\u{1D4B9}",Dscr:"\\u{1D49F}",dscy:"\\u0455",DScy:"\\u0405",dsol:"\\u29F6",dstrok:"\\u0111",Dstrok:"\\u0110",dtdot:"\\u22F1",dtri:"\\u25BF",dtrif:"\\u25BE",duarr:"\\u21F5",duhar:"\\u296F",dwangle:"\\u29A6",dzcy:"\\u045F",DZcy:"\\u040F",dzigrarr:"\\u27FF",eacute:"\\xE9",Eacute:"\\xC9",easter:"\\u2A6E",ecaron:"\\u011B",Ecaron:"\\u011A",ecir:"\\u2256",ecirc:"\\xEA",Ecirc:"\\xCA",ecolon:"\\u2255",ecy:"\\u044D",Ecy:"\\u042D",eDDot:"\\u2A77",edot:"\\u0117",eDot:"\\u2251",Edot:"\\u0116",ee:"\\u2147",efDot:"\\u2252",efr:"\\u{1D522}",Efr:"\\u{1D508}",eg:"\\u2A9A",egrave:"\\xE8",Egrave:"\\xC8",egs:"\\u2A96",egsdot:"\\u2A98",el:"\\u2A99",Element:"\\u2208",elinters:"\\u23E7",ell:"\\u2113",els:"\\u2A95",elsdot:"\\u2A97",emacr:"\\u0113",Emacr:"\\u0112",empty:"\\u2205",emptyset:"\\u2205",EmptySmallSquare:"\\u25FB",emptyv:"\\u2205",EmptyVerySmallSquare:"\\u25AB",emsp:"\\u2003",emsp13:"\\u2004",emsp14:"\\u2005",eng:"\\u014B",ENG:"\\u014A",ensp:"\\u2002",eogon:"\\u0119",Eogon:"\\u0118",eopf:"\\u{1D556}",Eopf:"\\u{1D53C}",epar:"\\u22D5",eparsl:"\\u29E3",eplus:"\\u2A71",epsi:"\\u03B5",epsilon:"\\u03B5",Epsilon:"\\u0395",epsiv:"\\u03F5",eqcirc:"\\u2256",eqcolon:"\\u2255",eqsim:"\\u2242",eqslantgtr:"\\u2A96",eqslantless:"\\u2A95",Equal:"\\u2A75",equals:"=",EqualTilde:"\\u2242",equest:"\\u225F",Equilibrium:"\\u21CC",equiv:"\\u2261",equivDD:"\\u2A78",eqvparsl:"\\u29E5",erarr:"\\u2971",erDot:"\\u2253",escr:"\\u212F",Escr:"\\u2130",esdot:"\\u2250",esim:"\\u2242",Esim:"\\u2A73",eta:"\\u03B7",Eta:"\\u0397",eth:"\\xF0",ETH:"\\xD0",euml:"\\xEB",Euml:"\\xCB",euro:"\\u20AC",excl:"!",exist:"\\u2203",Exists:"\\u2203",expectation:"\\u2130",exponentiale:"\\u2147",ExponentialE:"\\u2147",fallingdotseq:"\\u2252",fcy:"\\u0444",Fcy:"\\u0424",female:"\\u2640",ffilig:"\\uFB03",fflig:"\\uFB00",ffllig:"\\uFB04",ffr:"\\u{1D523}",Ffr:"\\u{1D509}",filig:"\\uFB01",FilledSmallSquare:"\\u25FC",FilledVerySmallSquare:"\\u25AA",fjlig:"fj",flat:"\\u266D",fllig:"\\uFB02",fltns:"\\u25B1",fnof:"\\u0192",fopf:"\\u{1D557}",Fopf:"\\u{1D53D}",forall:"\\u2200",ForAll:"\\u2200",fork:"\\u22D4",forkv:"\\u2AD9",Fouriertrf:"\\u2131",fpartint:"\\u2A0D",frac12:"\\xBD",frac13:"\\u2153",frac14:"\\xBC",frac15:"\\u2155",frac16:"\\u2159",frac18:"\\u215B",frac23:"\\u2154",frac25:"\\u2156",frac34:"\\xBE",frac35:"\\u2157",frac38:"\\u215C",frac45:"\\u2158",frac56:"\\u215A",frac58:"\\u215D",frac78:"\\u215E",frasl:"\\u2044",frown:"\\u2322",fscr:"\\u{1D4BB}",Fscr:"\\u2131",gacute:"\\u01F5",gamma:"\\u03B3",Gamma:"\\u0393",gammad:"\\u03DD",Gammad:"\\u03DC",gap:"\\u2A86",gbreve:"\\u011F",Gbreve:"\\u011E",Gcedil:"\\u0122",gcirc:"\\u011D",Gcirc:"\\u011C",gcy:"\\u0433",Gcy:"\\u0413",gdot:"\\u0121",Gdot:"\\u0120",ge:"\\u2265",gE:"\\u2267",gel:"\\u22DB",gEl:"\\u2A8C",geq:"\\u2265",geqq:"\\u2267",geqslant:"\\u2A7E",ges:"\\u2A7E",gescc:"\\u2AA9",gesdot:"\\u2A80",gesdoto:"\\u2A82",gesdotol:"\\u2A84",gesl:"\\u22DB\\uFE00",gesles:"\\u2A94",gfr:"\\u{1D524}",Gfr:"\\u{1D50A}",gg:"\\u226B",Gg:"\\u22D9",ggg:"\\u22D9",gimel:"\\u2137",gjcy:"\\u0453",GJcy:"\\u0403",gl:"\\u2277",gla:"\\u2AA5",glE:"\\u2A92",glj:"\\u2AA4",gnap:"\\u2A8A",gnapprox:"\\u2A8A",gne:"\\u2A88",gnE:"\\u2269",gneq:"\\u2A88",gneqq:"\\u2269",gnsim:"\\u22E7",gopf:"\\u{1D558}",Gopf:"\\u{1D53E}",grave:"`",GreaterEqual:"\\u2265",GreaterEqualLess:"\\u22DB",GreaterFullEqual:"\\u2267",GreaterGreater:"\\u2AA2",GreaterLess:"\\u2277",GreaterSlantEqual:"\\u2A7E",GreaterTilde:"\\u2273",gscr:"\\u210A",Gscr:"\\u{1D4A2}",gsim:"\\u2273",gsime:"\\u2A8E",gsiml:"\\u2A90",gt:">",Gt:"\\u226B",GT:">",gtcc:"\\u2AA7",gtcir:"\\u2A7A",gtdot:"\\u22D7",gtlPar:"\\u2995",gtquest:"\\u2A7C",gtrapprox:"\\u2A86",gtrarr:"\\u2978",gtrdot:"\\u22D7",gtreqless:"\\u22DB",gtreqqless:"\\u2A8C",gtrless:"\\u2277",gtrsim:"\\u2273",gvertneqq:"\\u2269\\uFE00",gvnE:"\\u2269\\uFE00",Hacek:"\\u02C7",hairsp:"\\u200A",half:"\\xBD",hamilt:"\\u210B",hardcy:"\\u044A",HARDcy:"\\u042A",harr:"\\u2194",hArr:"\\u21D4",harrcir:"\\u2948",harrw:"\\u21AD",Hat:"^",hbar:"\\u210F",hcirc:"\\u0125",Hcirc:"\\u0124",hearts:"\\u2665",heartsuit:"\\u2665",hellip:"\\u2026",hercon:"\\u22B9",hfr:"\\u{1D525}",Hfr:"\\u210C",HilbertSpace:"\\u210B",hksearow:"\\u2925",hkswarow:"\\u2926",hoarr:"\\u21FF",homtht:"\\u223B",hookleftarrow:"\\u21A9",hookrightarrow:"\\u21AA",hopf:"\\u{1D559}",Hopf:"\\u210D",horbar:"\\u2015",HorizontalLine:"\\u2500",hscr:"\\u{1D4BD}",Hscr:"\\u210B",hslash:"\\u210F",hstrok:"\\u0127",Hstrok:"\\u0126",HumpDownHump:"\\u224E",HumpEqual:"\\u224F",hybull:"\\u2043",hyphen:"\\u2010",iacute:"\\xED",Iacute:"\\xCD",ic:"\\u2063",icirc:"\\xEE",Icirc:"\\xCE",icy:"\\u0438",Icy:"\\u0418",Idot:"\\u0130",iecy:"\\u0435",IEcy:"\\u0415",iexcl:"\\xA1",iff:"\\u21D4",ifr:"\\u{1D526}",Ifr:"\\u2111",igrave:"\\xEC",Igrave:"\\xCC",ii:"\\u2148",iiiint:"\\u2A0C",iiint:"\\u222D",iinfin:"\\u29DC",iiota:"\\u2129",ijlig:"\\u0133",IJlig:"\\u0132",Im:"\\u2111",imacr:"\\u012B",Imacr:"\\u012A",image:"\\u2111",ImaginaryI:"\\u2148",imagline:"\\u2110",imagpart:"\\u2111",imath:"\\u0131",imof:"\\u22B7",imped:"\\u01B5",Implies:"\\u21D2",in:"\\u2208",incare:"\\u2105",infin:"\\u221E",infintie:"\\u29DD",inodot:"\\u0131",int:"\\u222B",Int:"\\u222C",intcal:"\\u22BA",integers:"\\u2124",Integral:"\\u222B",intercal:"\\u22BA",Intersection:"\\u22C2",intlarhk:"\\u2A17",intprod:"\\u2A3C",InvisibleComma:"\\u2063",InvisibleTimes:"\\u2062",iocy:"\\u0451",IOcy:"\\u0401",iogon:"\\u012F",Iogon:"\\u012E",iopf:"\\u{1D55A}",Iopf:"\\u{1D540}",iota:"\\u03B9",Iota:"\\u0399",iprod:"\\u2A3C",iquest:"\\xBF",iscr:"\\u{1D4BE}",Iscr:"\\u2110",isin:"\\u2208",isindot:"\\u22F5",isinE:"\\u22F9",isins:"\\u22F4",isinsv:"\\u22F3",isinv:"\\u2208",it:"\\u2062",itilde:"\\u0129",Itilde:"\\u0128",iukcy:"\\u0456",Iukcy:"\\u0406",iuml:"\\xEF",Iuml:"\\xCF",jcirc:"\\u0135",Jcirc:"\\u0134",jcy:"\\u0439",Jcy:"\\u0419",jfr:"\\u{1D527}",Jfr:"\\u{1D50D}",jmath:"\\u0237",jopf:"\\u{1D55B}",Jopf:"\\u{1D541}",jscr:"\\u{1D4BF}",Jscr:"\\u{1D4A5}",jsercy:"\\u0458",Jsercy:"\\u0408",jukcy:"\\u0454",Jukcy:"\\u0404",kappa:"\\u03BA",Kappa:"\\u039A",kappav:"\\u03F0",kcedil:"\\u0137",Kcedil:"\\u0136",kcy:"\\u043A",Kcy:"\\u041A",kfr:"\\u{1D528}",Kfr:"\\u{1D50E}",kgreen:"\\u0138",khcy:"\\u0445",KHcy:"\\u0425",kjcy:"\\u045C",KJcy:"\\u040C",kopf:"\\u{1D55C}",Kopf:"\\u{1D542}",kscr:"\\u{1D4C0}",Kscr:"\\u{1D4A6}",lAarr:"\\u21DA",lacute:"\\u013A",Lacute:"\\u0139",laemptyv:"\\u29B4",lagran:"\\u2112",lambda:"\\u03BB",Lambda:"\\u039B",lang:"\\u27E8",Lang:"\\u27EA",langd:"\\u2991",langle:"\\u27E8",lap:"\\u2A85",Laplacetrf:"\\u2112",laquo:"\\xAB",larr:"\\u2190",lArr:"\\u21D0",Larr:"\\u219E",larrb:"\\u21E4",larrbfs:"\\u291F",larrfs:"\\u291D",larrhk:"\\u21A9",larrlp:"\\u21AB",larrpl:"\\u2939",larrsim:"\\u2973",larrtl:"\\u21A2",lat:"\\u2AAB",latail:"\\u2919",lAtail:"\\u291B",late:"\\u2AAD",lates:"\\u2AAD\\uFE00",lbarr:"\\u290C",lBarr:"\\u290E",lbbrk:"\\u2772",lbrace:"{",lbrack:"[",lbrke:"\\u298B",lbrksld:"\\u298F",lbrkslu:"\\u298D",lcaron:"\\u013E",Lcaron:"\\u013D",lcedil:"\\u013C",Lcedil:"\\u013B",lceil:"\\u2308",lcub:"{",lcy:"\\u043B",Lcy:"\\u041B",ldca:"\\u2936",ldquo:"\\u201C",ldquor:"\\u201E",ldrdhar:"\\u2967",ldrushar:"\\u294B",ldsh:"\\u21B2",le:"\\u2264",lE:"\\u2266",LeftAngleBracket:"\\u27E8",leftarrow:"\\u2190",Leftarrow:"\\u21D0",LeftArrow:"\\u2190",LeftArrowBar:"\\u21E4",LeftArrowRightArrow:"\\u21C6",leftarrowtail:"\\u21A2",LeftCeiling:"\\u2308",LeftDoubleBracket:"\\u27E6",LeftDownTeeVector:"\\u2961",LeftDownVector:"\\u21C3",LeftDownVectorBar:"\\u2959",LeftFloor:"\\u230A",leftharpoondown:"\\u21BD",leftharpoonup:"\\u21BC",leftleftarrows:"\\u21C7",leftrightarrow:"\\u2194",Leftrightarrow:"\\u21D4",LeftRightArrow:"\\u2194",leftrightarrows:"\\u21C6",leftrightharpoons:"\\u21CB",leftrightsquigarrow:"\\u21AD",LeftRightVector:"\\u294E",LeftTee:"\\u22A3",LeftTeeArrow:"\\u21A4",LeftTeeVector:"\\u295A",leftthreetimes:"\\u22CB",LeftTriangle:"\\u22B2",LeftTriangleBar:"\\u29CF",LeftTriangleEqual:"\\u22B4",LeftUpDownVector:"\\u2951",LeftUpTeeVector:"\\u2960",LeftUpVector:"\\u21BF",LeftUpVectorBar:"\\u2958",LeftVector:"\\u21BC",LeftVectorBar:"\\u2952",leg:"\\u22DA",lEg:"\\u2A8B",leq:"\\u2264",leqq:"\\u2266",leqslant:"\\u2A7D",les:"\\u2A7D",lescc:"\\u2AA8",lesdot:"\\u2A7F",lesdoto:"\\u2A81",lesdotor:"\\u2A83",lesg:"\\u22DA\\uFE00",lesges:"\\u2A93",lessapprox:"\\u2A85",lessdot:"\\u22D6",lesseqgtr:"\\u22DA",lesseqqgtr:"\\u2A8B",LessEqualGreater:"\\u22DA",LessFullEqual:"\\u2266",LessGreater:"\\u2276",lessgtr:"\\u2276",LessLess:"\\u2AA1",lesssim:"\\u2272",LessSlantEqual:"\\u2A7D",LessTilde:"\\u2272",lfisht:"\\u297C",lfloor:"\\u230A",lfr:"\\u{1D529}",Lfr:"\\u{1D50F}",lg:"\\u2276",lgE:"\\u2A91",lHar:"\\u2962",lhard:"\\u21BD",lharu:"\\u21BC",lharul:"\\u296A",lhblk:"\\u2584",ljcy:"\\u0459",LJcy:"\\u0409",ll:"\\u226A",Ll:"\\u22D8",llarr:"\\u21C7",llcorner:"\\u231E",Lleftarrow:"\\u21DA",llhard:"\\u296B",lltri:"\\u25FA",lmidot:"\\u0140",Lmidot:"\\u013F",lmoust:"\\u23B0",lmoustache:"\\u23B0",lnap:"\\u2A89",lnapprox:"\\u2A89",lne:"\\u2A87",lnE:"\\u2268",lneq:"\\u2A87",lneqq:"\\u2268",lnsim:"\\u22E6",loang:"\\u27EC",loarr:"\\u21FD",lobrk:"\\u27E6",longleftarrow:"\\u27F5",Longleftarrow:"\\u27F8",LongLeftArrow:"\\u27F5",longleftrightarrow:"\\u27F7",Longleftrightarrow:"\\u27FA",LongLeftRightArrow:"\\u27F7",longmapsto:"\\u27FC",longrightarrow:"\\u27F6",Longrightarrow:"\\u27F9",LongRightArrow:"\\u27F6",looparrowleft:"\\u21AB",looparrowright:"\\u21AC",lopar:"\\u2985",lopf:"\\u{1D55D}",Lopf:"\\u{1D543}",loplus:"\\u2A2D",lotimes:"\\u2A34",lowast:"\\u2217",lowbar:"_",LowerLeftArrow:"\\u2199",LowerRightArrow:"\\u2198",loz:"\\u25CA",lozenge:"\\u25CA",lozf:"\\u29EB",lpar:"(",lparlt:"\\u2993",lrarr:"\\u21C6",lrcorner:"\\u231F",lrhar:"\\u21CB",lrhard:"\\u296D",lrm:"\\u200E",lrtri:"\\u22BF",lsaquo:"\\u2039",lscr:"\\u{1D4C1}",Lscr:"\\u2112",lsh:"\\u21B0",Lsh:"\\u21B0",lsim:"\\u2272",lsime:"\\u2A8D",lsimg:"\\u2A8F",lsqb:"[",lsquo:"\\u2018",lsquor:"\\u201A",lstrok:"\\u0142",Lstrok:"\\u0141",lt:"<",Lt:"\\u226A",LT:"<",ltcc:"\\u2AA6",ltcir:"\\u2A79",ltdot:"\\u22D6",lthree:"\\u22CB",ltimes:"\\u22C9",ltlarr:"\\u2976",ltquest:"\\u2A7B",ltri:"\\u25C3",ltrie:"\\u22B4",ltrif:"\\u25C2",ltrPar:"\\u2996",lurdshar:"\\u294A",luruhar:"\\u2966",lvertneqq:"\\u2268\\uFE00",lvnE:"\\u2268\\uFE00",macr:"\\xAF",male:"\\u2642",malt:"\\u2720",maltese:"\\u2720",map:"\\u21A6",Map:"\\u2905",mapsto:"\\u21A6",mapstodown:"\\u21A7",mapstoleft:"\\u21A4",mapstoup:"\\u21A5",marker:"\\u25AE",mcomma:"\\u2A29",mcy:"\\u043C",Mcy:"\\u041C",mdash:"\\u2014",mDDot:"\\u223A",measuredangle:"\\u2221",MediumSpace:"\\u205F",Mellintrf:"\\u2133",mfr:"\\u{1D52A}",Mfr:"\\u{1D510}",mho:"\\u2127",micro:"\\xB5",mid:"\\u2223",midast:"*",midcir:"\\u2AF0",middot:"\\xB7",minus:"\\u2212",minusb:"\\u229F",minusd:"\\u2238",minusdu:"\\u2A2A",MinusPlus:"\\u2213",mlcp:"\\u2ADB",mldr:"\\u2026",mnplus:"\\u2213",models:"\\u22A7",mopf:"\\u{1D55E}",Mopf:"\\u{1D544}",mp:"\\u2213",mscr:"\\u{1D4C2}",Mscr:"\\u2133",mstpos:"\\u223E",mu:"\\u03BC",Mu:"\\u039C",multimap:"\\u22B8",mumap:"\\u22B8",nabla:"\\u2207",nacute:"\\u0144",Nacute:"\\u0143",nang:"\\u2220\\u20D2",nap:"\\u2249",napE:"\\u2A70\\u0338",napid:"\\u224B\\u0338",napos:"\\u0149",napprox:"\\u2249",natur:"\\u266E",natural:"\\u266E",naturals:"\\u2115",nbsp:"\\xA0",nbump:"\\u224E\\u0338",nbumpe:"\\u224F\\u0338",ncap:"\\u2A43",ncaron:"\\u0148",Ncaron:"\\u0147",ncedil:"\\u0146",Ncedil:"\\u0145",ncong:"\\u2247",ncongdot:"\\u2A6D\\u0338",ncup:"\\u2A42",ncy:"\\u043D",Ncy:"\\u041D",ndash:"\\u2013",ne:"\\u2260",nearhk:"\\u2924",nearr:"\\u2197",neArr:"\\u21D7",nearrow:"\\u2197",nedot:"\\u2250\\u0338",NegativeMediumSpace:"\\u200B",NegativeThickSpace:"\\u200B",NegativeThinSpace:"\\u200B",NegativeVeryThinSpace:"\\u200B",nequiv:"\\u2262",nesear:"\\u2928",nesim:"\\u2242\\u0338",NestedGreaterGreater:"\\u226B",NestedLessLess:"\\u226A",NewLine:`\n`,nexist:"\\u2204",nexists:"\\u2204",nfr:"\\u{1D52B}",Nfr:"\\u{1D511}",nge:"\\u2271",ngE:"\\u2267\\u0338",ngeq:"\\u2271",ngeqq:"\\u2267\\u0338",ngeqslant:"\\u2A7E\\u0338",nges:"\\u2A7E\\u0338",nGg:"\\u22D9\\u0338",ngsim:"\\u2275",ngt:"\\u226F",nGt:"\\u226B\\u20D2",ngtr:"\\u226F",nGtv:"\\u226B\\u0338",nharr:"\\u21AE",nhArr:"\\u21CE",nhpar:"\\u2AF2",ni:"\\u220B",nis:"\\u22FC",nisd:"\\u22FA",niv:"\\u220B",njcy:"\\u045A",NJcy:"\\u040A",nlarr:"\\u219A",nlArr:"\\u21CD",nldr:"\\u2025",nle:"\\u2270",nlE:"\\u2266\\u0338",nleftarrow:"\\u219A",nLeftarrow:"\\u21CD",nleftrightarrow:"\\u21AE",nLeftrightarrow:"\\u21CE",nleq:"\\u2270",nleqq:"\\u2266\\u0338",nleqslant:"\\u2A7D\\u0338",nles:"\\u2A7D\\u0338",nless:"\\u226E",nLl:"\\u22D8\\u0338",nlsim:"\\u2274",nlt:"\\u226E",nLt:"\\u226A\\u20D2",nltri:"\\u22EA",nltrie:"\\u22EC",nLtv:"\\u226A\\u0338",nmid:"\\u2224",NoBreak:"\\u2060",NonBreakingSpace:"\\xA0",nopf:"\\u{1D55F}",Nopf:"\\u2115",not:"\\xAC",Not:"\\u2AEC",NotCongruent:"\\u2262",NotCupCap:"\\u226D",NotDoubleVerticalBar:"\\u2226",NotElement:"\\u2209",NotEqual:"\\u2260",NotEqualTilde:"\\u2242\\u0338",NotExists:"\\u2204",NotGreater:"\\u226F",NotGreaterEqual:"\\u2271",NotGreaterFullEqual:"\\u2267\\u0338",NotGreaterGreater:"\\u226B\\u0338",NotGreaterLess:"\\u2279",NotGreaterSlantEqual:"\\u2A7E\\u0338",NotGreaterTilde:"\\u2275",NotHumpDownHump:"\\u224E\\u0338",NotHumpEqual:"\\u224F\\u0338",notin:"\\u2209",notindot:"\\u22F5\\u0338",notinE:"\\u22F9\\u0338",notinva:"\\u2209",notinvb:"\\u22F7",notinvc:"\\u22F6",NotLeftTriangle:"\\u22EA",NotLeftTriangleBar:"\\u29CF\\u0338",NotLeftTriangleEqual:"\\u22EC",NotLess:"\\u226E",NotLessEqual:"\\u2270",NotLessGreater:"\\u2278",NotLessLess:"\\u226A\\u0338",NotLessSlantEqual:"\\u2A7D\\u0338",NotLessTilde:"\\u2274",NotNestedGreaterGreater:"\\u2AA2\\u0338",NotNestedLessLess:"\\u2AA1\\u0338",notni:"\\u220C",notniva:"\\u220C",notnivb:"\\u22FE",notnivc:"\\u22FD",NotPrecedes:"\\u2280",NotPrecedesEqual:"\\u2AAF\\u0338",NotPrecedesSlantEqual:"\\u22E0",NotReverseElement:"\\u220C",NotRightTriangle:"\\u22EB",NotRightTriangleBar:"\\u29D0\\u0338",NotRightTriangleEqual:"\\u22ED",NotSquareSubset:"\\u228F\\u0338",NotSquareSubsetEqual:"\\u22E2",NotSquareSuperset:"\\u2290\\u0338",NotSquareSupersetEqual:"\\u22E3",NotSubset:"\\u2282\\u20D2",NotSubsetEqual:"\\u2288",NotSucceeds:"\\u2281",NotSucceedsEqual:"\\u2AB0\\u0338",NotSucceedsSlantEqual:"\\u22E1",NotSucceedsTilde:"\\u227F\\u0338",NotSuperset:"\\u2283\\u20D2",NotSupersetEqual:"\\u2289",NotTilde:"\\u2241",NotTildeEqual:"\\u2244",NotTildeFullEqual:"\\u2247",NotTildeTilde:"\\u2249",NotVerticalBar:"\\u2224",npar:"\\u2226",nparallel:"\\u2226",nparsl:"\\u2AFD\\u20E5",npart:"\\u2202\\u0338",npolint:"\\u2A14",npr:"\\u2280",nprcue:"\\u22E0",npre:"\\u2AAF\\u0338",nprec:"\\u2280",npreceq:"\\u2AAF\\u0338",nrarr:"\\u219B",nrArr:"\\u21CF",nrarrc:"\\u2933\\u0338",nrarrw:"\\u219D\\u0338",nrightarrow:"\\u219B",nRightarrow:"\\u21CF",nrtri:"\\u22EB",nrtrie:"\\u22ED",nsc:"\\u2281",nsccue:"\\u22E1",nsce:"\\u2AB0\\u0338",nscr:"\\u{1D4C3}",Nscr:"\\u{1D4A9}",nshortmid:"\\u2224",nshortparallel:"\\u2226",nsim:"\\u2241",nsime:"\\u2244",nsimeq:"\\u2244",nsmid:"\\u2224",nspar:"\\u2226",nsqsube:"\\u22E2",nsqsupe:"\\u22E3",nsub:"\\u2284",nsube:"\\u2288",nsubE:"\\u2AC5\\u0338",nsubset:"\\u2282\\u20D2",nsubseteq:"\\u2288",nsubseteqq:"\\u2AC5\\u0338",nsucc:"\\u2281",nsucceq:"\\u2AB0\\u0338",nsup:"\\u2285",nsupe:"\\u2289",nsupE:"\\u2AC6\\u0338",nsupset:"\\u2283\\u20D2",nsupseteq:"\\u2289",nsupseteqq:"\\u2AC6\\u0338",ntgl:"\\u2279",ntilde:"\\xF1",Ntilde:"\\xD1",ntlg:"\\u2278",ntriangleleft:"\\u22EA",ntrianglelefteq:"\\u22EC",ntriangleright:"\\u22EB",ntrianglerighteq:"\\u22ED",nu:"\\u03BD",Nu:"\\u039D",num:"#",numero:"\\u2116",numsp:"\\u2007",nvap:"\\u224D\\u20D2",nvdash:"\\u22AC",nvDash:"\\u22AD",nVdash:"\\u22AE",nVDash:"\\u22AF",nvge:"\\u2265\\u20D2",nvgt:">\\u20D2",nvHarr:"\\u2904",nvinfin:"\\u29DE",nvlArr:"\\u2902",nvle:"\\u2264\\u20D2",nvlt:"<\\u20D2",nvltrie:"\\u22B4\\u20D2",nvrArr:"\\u2903",nvrtrie:"\\u22B5\\u20D2",nvsim:"\\u223C\\u20D2",nwarhk:"\\u2923",nwarr:"\\u2196",nwArr:"\\u21D6",nwarrow:"\\u2196",nwnear:"\\u2927",oacute:"\\xF3",Oacute:"\\xD3",oast:"\\u229B",ocir:"\\u229A",ocirc:"\\xF4",Ocirc:"\\xD4",ocy:"\\u043E",Ocy:"\\u041E",odash:"\\u229D",odblac:"\\u0151",Odblac:"\\u0150",odiv:"\\u2A38",odot:"\\u2299",odsold:"\\u29BC",oelig:"\\u0153",OElig:"\\u0152",ofcir:"\\u29BF",ofr:"\\u{1D52C}",Ofr:"\\u{1D512}",ogon:"\\u02DB",ograve:"\\xF2",Ograve:"\\xD2",ogt:"\\u29C1",ohbar:"\\u29B5",ohm:"\\u03A9",oint:"\\u222E",olarr:"\\u21BA",olcir:"\\u29BE",olcross:"\\u29BB",oline:"\\u203E",olt:"\\u29C0",omacr:"\\u014D",Omacr:"\\u014C",omega:"\\u03C9",Omega:"\\u03A9",omicron:"\\u03BF",Omicron:"\\u039F",omid:"\\u29B6",ominus:"\\u2296",oopf:"\\u{1D560}",Oopf:"\\u{1D546}",opar:"\\u29B7",OpenCurlyDoubleQuote:"\\u201C",OpenCurlyQuote:"\\u2018",operp:"\\u29B9",oplus:"\\u2295",or:"\\u2228",Or:"\\u2A54",orarr:"\\u21BB",ord:"\\u2A5D",order:"\\u2134",orderof:"\\u2134",ordf:"\\xAA",ordm:"\\xBA",origof:"\\u22B6",oror:"\\u2A56",orslope:"\\u2A57",orv:"\\u2A5B",oS:"\\u24C8",oscr:"\\u2134",Oscr:"\\u{1D4AA}",oslash:"\\xF8",Oslash:"\\xD8",osol:"\\u2298",otilde:"\\xF5",Otilde:"\\xD5",otimes:"\\u2297",Otimes:"\\u2A37",otimesas:"\\u2A36",ouml:"\\xF6",Ouml:"\\xD6",ovbar:"\\u233D",OverBar:"\\u203E",OverBrace:"\\u23DE",OverBracket:"\\u23B4",OverParenthesis:"\\u23DC",par:"\\u2225",para:"\\xB6",parallel:"\\u2225",parsim:"\\u2AF3",parsl:"\\u2AFD",part:"\\u2202",PartialD:"\\u2202",pcy:"\\u043F",Pcy:"\\u041F",percnt:"%",period:".",permil:"\\u2030",perp:"\\u22A5",pertenk:"\\u2031",pfr:"\\u{1D52D}",Pfr:"\\u{1D513}",phi:"\\u03C6",Phi:"\\u03A6",phiv:"\\u03D5",phmmat:"\\u2133",phone:"\\u260E",pi:"\\u03C0",Pi:"\\u03A0",pitchfork:"\\u22D4",piv:"\\u03D6",planck:"\\u210F",planckh:"\\u210E",plankv:"\\u210F",plus:"+",plusacir:"\\u2A23",plusb:"\\u229E",pluscir:"\\u2A22",plusdo:"\\u2214",plusdu:"\\u2A25",pluse:"\\u2A72",PlusMinus:"\\xB1",plusmn:"\\xB1",plussim:"\\u2A26",plustwo:"\\u2A27",pm:"\\xB1",Poincareplane:"\\u210C",pointint:"\\u2A15",popf:"\\u{1D561}",Popf:"\\u2119",pound:"\\xA3",pr:"\\u227A",Pr:"\\u2ABB",prap:"\\u2AB7",prcue:"\\u227C",pre:"\\u2AAF",prE:"\\u2AB3",prec:"\\u227A",precapprox:"\\u2AB7",preccurlyeq:"\\u227C",Precedes:"\\u227A",PrecedesEqual:"\\u2AAF",PrecedesSlantEqual:"\\u227C",PrecedesTilde:"\\u227E",preceq:"\\u2AAF",precnapprox:"\\u2AB9",precneqq:"\\u2AB5",precnsim:"\\u22E8",precsim:"\\u227E",prime:"\\u2032",Prime:"\\u2033",primes:"\\u2119",prnap:"\\u2AB9",prnE:"\\u2AB5",prnsim:"\\u22E8",prod:"\\u220F",Product:"\\u220F",profalar:"\\u232E",profline:"\\u2312",profsurf:"\\u2313",prop:"\\u221D",Proportion:"\\u2237",Proportional:"\\u221D",propto:"\\u221D",prsim:"\\u227E",prurel:"\\u22B0",pscr:"\\u{1D4C5}",Pscr:"\\u{1D4AB}",psi:"\\u03C8",Psi:"\\u03A8",puncsp:"\\u2008",qfr:"\\u{1D52E}",Qfr:"\\u{1D514}",qint:"\\u2A0C",qopf:"\\u{1D562}",Qopf:"\\u211A",qprime:"\\u2057",qscr:"\\u{1D4C6}",Qscr:"\\u{1D4AC}",quaternions:"\\u210D",quatint:"\\u2A16",quest:"?",questeq:"\\u225F",quot:\'"\',QUOT:\'"\',rAarr:"\\u21DB",race:"\\u223D\\u0331",racute:"\\u0155",Racute:"\\u0154",radic:"\\u221A",raemptyv:"\\u29B3",rang:"\\u27E9",Rang:"\\u27EB",rangd:"\\u2992",range:"\\u29A5",rangle:"\\u27E9",raquo:"\\xBB",rarr:"\\u2192",rArr:"\\u21D2",Rarr:"\\u21A0",rarrap:"\\u2975",rarrb:"\\u21E5",rarrbfs:"\\u2920",rarrc:"\\u2933",rarrfs:"\\u291E",rarrhk:"\\u21AA",rarrlp:"\\u21AC",rarrpl:"\\u2945",rarrsim:"\\u2974",rarrtl:"\\u21A3",Rarrtl:"\\u2916",rarrw:"\\u219D",ratail:"\\u291A",rAtail:"\\u291C",ratio:"\\u2236",rationals:"\\u211A",rbarr:"\\u290D",rBarr:"\\u290F",RBarr:"\\u2910",rbbrk:"\\u2773",rbrace:"}",rbrack:"]",rbrke:"\\u298C",rbrksld:"\\u298E",rbrkslu:"\\u2990",rcaron:"\\u0159",Rcaron:"\\u0158",rcedil:"\\u0157",Rcedil:"\\u0156",rceil:"\\u2309",rcub:"}",rcy:"\\u0440",Rcy:"\\u0420",rdca:"\\u2937",rdldhar:"\\u2969",rdquo:"\\u201D",rdquor:"\\u201D",rdsh:"\\u21B3",Re:"\\u211C",real:"\\u211C",realine:"\\u211B",realpart:"\\u211C",reals:"\\u211D",rect:"\\u25AD",reg:"\\xAE",REG:"\\xAE",ReverseElement:"\\u220B",ReverseEquilibrium:"\\u21CB",ReverseUpEquilibrium:"\\u296F",rfisht:"\\u297D",rfloor:"\\u230B",rfr:"\\u{1D52F}",Rfr:"\\u211C",rHar:"\\u2964",rhard:"\\u21C1",rharu:"\\u21C0",rharul:"\\u296C",rho:"\\u03C1",Rho:"\\u03A1",rhov:"\\u03F1",RightAngleBracket:"\\u27E9",rightarrow:"\\u2192",Rightarrow:"\\u21D2",RightArrow:"\\u2192",RightArrowBar:"\\u21E5",RightArrowLeftArrow:"\\u21C4",rightarrowtail:"\\u21A3",RightCeiling:"\\u2309",RightDoubleBracket:"\\u27E7",RightDownTeeVector:"\\u295D",RightDownVector:"\\u21C2",RightDownVectorBar:"\\u2955",RightFloor:"\\u230B",rightharpoondown:"\\u21C1",rightharpoonup:"\\u21C0",rightleftarrows:"\\u21C4",rightleftharpoons:"\\u21CC",rightrightarrows:"\\u21C9",rightsquigarrow:"\\u219D",RightTee:"\\u22A2",RightTeeArrow:"\\u21A6",RightTeeVector:"\\u295B",rightthreetimes:"\\u22CC",RightTriangle:"\\u22B3",RightTriangleBar:"\\u29D0",RightTriangleEqual:"\\u22B5",RightUpDownVector:"\\u294F",RightUpTeeVector:"\\u295C",RightUpVector:"\\u21BE",RightUpVectorBar:"\\u2954",RightVector:"\\u21C0",RightVectorBar:"\\u2953",ring:"\\u02DA",risingdotseq:"\\u2253",rlarr:"\\u21C4",rlhar:"\\u21CC",rlm:"\\u200F",rmoust:"\\u23B1",rmoustache:"\\u23B1",rnmid:"\\u2AEE",roang:"\\u27ED",roarr:"\\u21FE",robrk:"\\u27E7",ropar:"\\u2986",ropf:"\\u{1D563}",Ropf:"\\u211D",roplus:"\\u2A2E",rotimes:"\\u2A35",RoundImplies:"\\u2970",rpar:")",rpargt:"\\u2994",rppolint:"\\u2A12",rrarr:"\\u21C9",Rrightarrow:"\\u21DB",rsaquo:"\\u203A",rscr:"\\u{1D4C7}",Rscr:"\\u211B",rsh:"\\u21B1",Rsh:"\\u21B1",rsqb:"]",rsquo:"\\u2019",rsquor:"\\u2019",rthree:"\\u22CC",rtimes:"\\u22CA",rtri:"\\u25B9",rtrie:"\\u22B5",rtrif:"\\u25B8",rtriltri:"\\u29CE",RuleDelayed:"\\u29F4",ruluhar:"\\u2968",rx:"\\u211E",sacute:"\\u015B",Sacute:"\\u015A",sbquo:"\\u201A",sc:"\\u227B",Sc:"\\u2ABC",scap:"\\u2AB8",scaron:"\\u0161",Scaron:"\\u0160",sccue:"\\u227D",sce:"\\u2AB0",scE:"\\u2AB4",scedil:"\\u015F",Scedil:"\\u015E",scirc:"\\u015D",Scirc:"\\u015C",scnap:"\\u2ABA",scnE:"\\u2AB6",scnsim:"\\u22E9",scpolint:"\\u2A13",scsim:"\\u227F",scy:"\\u0441",Scy:"\\u0421",sdot:"\\u22C5",sdotb:"\\u22A1",sdote:"\\u2A66",searhk:"\\u2925",searr:"\\u2198",seArr:"\\u21D8",searrow:"\\u2198",sect:"\\xA7",semi:";",seswar:"\\u2929",setminus:"\\u2216",setmn:"\\u2216",sext:"\\u2736",sfr:"\\u{1D530}",Sfr:"\\u{1D516}",sfrown:"\\u2322",sharp:"\\u266F",shchcy:"\\u0449",SHCHcy:"\\u0429",shcy:"\\u0448",SHcy:"\\u0428",ShortDownArrow:"\\u2193",ShortLeftArrow:"\\u2190",shortmid:"\\u2223",shortparallel:"\\u2225",ShortRightArrow:"\\u2192",ShortUpArrow:"\\u2191",shy:"\\xAD",sigma:"\\u03C3",Sigma:"\\u03A3",sigmaf:"\\u03C2",sigmav:"\\u03C2",sim:"\\u223C",simdot:"\\u2A6A",sime:"\\u2243",simeq:"\\u2243",simg:"\\u2A9E",simgE:"\\u2AA0",siml:"\\u2A9D",simlE:"\\u2A9F",simne:"\\u2246",simplus:"\\u2A24",simrarr:"\\u2972",slarr:"\\u2190",SmallCircle:"\\u2218",smallsetminus:"\\u2216",smashp:"\\u2A33",smeparsl:"\\u29E4",smid:"\\u2223",smile:"\\u2323",smt:"\\u2AAA",smte:"\\u2AAC",smtes:"\\u2AAC\\uFE00",softcy:"\\u044C",SOFTcy:"\\u042C",sol:"/",solb:"\\u29C4",solbar:"\\u233F",sopf:"\\u{1D564}",Sopf:"\\u{1D54A}",spades:"\\u2660",spadesuit:"\\u2660",spar:"\\u2225",sqcap:"\\u2293",sqcaps:"\\u2293\\uFE00",sqcup:"\\u2294",sqcups:"\\u2294\\uFE00",Sqrt:"\\u221A",sqsub:"\\u228F",sqsube:"\\u2291",sqsubset:"\\u228F",sqsubseteq:"\\u2291",sqsup:"\\u2290",sqsupe:"\\u2292",sqsupset:"\\u2290",sqsupseteq:"\\u2292",squ:"\\u25A1",square:"\\u25A1",Square:"\\u25A1",SquareIntersection:"\\u2293",SquareSubset:"\\u228F",SquareSubsetEqual:"\\u2291",SquareSuperset:"\\u2290",SquareSupersetEqual:"\\u2292",SquareUnion:"\\u2294",squarf:"\\u25AA",squf:"\\u25AA",srarr:"\\u2192",sscr:"\\u{1D4C8}",Sscr:"\\u{1D4AE}",ssetmn:"\\u2216",ssmile:"\\u2323",sstarf:"\\u22C6",star:"\\u2606",Star:"\\u22C6",starf:"\\u2605",straightepsilon:"\\u03F5",straightphi:"\\u03D5",strns:"\\xAF",sub:"\\u2282",Sub:"\\u22D0",subdot:"\\u2ABD",sube:"\\u2286",subE:"\\u2AC5",subedot:"\\u2AC3",submult:"\\u2AC1",subne:"\\u228A",subnE:"\\u2ACB",subplus:"\\u2ABF",subrarr:"\\u2979",subset:"\\u2282",Subset:"\\u22D0",subseteq:"\\u2286",subseteqq:"\\u2AC5",SubsetEqual:"\\u2286",subsetneq:"\\u228A",subsetneqq:"\\u2ACB",subsim:"\\u2AC7",subsub:"\\u2AD5",subsup:"\\u2AD3",succ:"\\u227B",succapprox:"\\u2AB8",succcurlyeq:"\\u227D",Succeeds:"\\u227B",SucceedsEqual:"\\u2AB0",SucceedsSlantEqual:"\\u227D",SucceedsTilde:"\\u227F",succeq:"\\u2AB0",succnapprox:"\\u2ABA",succneqq:"\\u2AB6",succnsim:"\\u22E9",succsim:"\\u227F",SuchThat:"\\u220B",sum:"\\u2211",Sum:"\\u2211",sung:"\\u266A",sup:"\\u2283",Sup:"\\u22D1",sup1:"\\xB9",sup2:"\\xB2",sup3:"\\xB3",supdot:"\\u2ABE",supdsub:"\\u2AD8",supe:"\\u2287",supE:"\\u2AC6",supedot:"\\u2AC4",Superset:"\\u2283",SupersetEqual:"\\u2287",suphsol:"\\u27C9",suphsub:"\\u2AD7",suplarr:"\\u297B",supmult:"\\u2AC2",supne:"\\u228B",supnE:"\\u2ACC",supplus:"\\u2AC0",supset:"\\u2283",Supset:"\\u22D1",supseteq:"\\u2287",supseteqq:"\\u2AC6",supsetneq:"\\u228B",supsetneqq:"\\u2ACC",supsim:"\\u2AC8",supsub:"\\u2AD4",supsup:"\\u2AD6",swarhk:"\\u2926",swarr:"\\u2199",swArr:"\\u21D9",swarrow:"\\u2199",swnwar:"\\u292A",szlig:"\\xDF",Tab:" ",target:"\\u2316",tau:"\\u03C4",Tau:"\\u03A4",tbrk:"\\u23B4",tcaron:"\\u0165",Tcaron:"\\u0164",tcedil:"\\u0163",Tcedil:"\\u0162",tcy:"\\u0442",Tcy:"\\u0422",tdot:"\\u20DB",telrec:"\\u2315",tfr:"\\u{1D531}",Tfr:"\\u{1D517}",there4:"\\u2234",therefore:"\\u2234",Therefore:"\\u2234",theta:"\\u03B8",Theta:"\\u0398",thetasym:"\\u03D1",thetav:"\\u03D1",thickapprox:"\\u2248",thicksim:"\\u223C",ThickSpace:"\\u205F\\u200A",thinsp:"\\u2009",ThinSpace:"\\u2009",thkap:"\\u2248",thksim:"\\u223C",thorn:"\\xFE",THORN:"\\xDE",tilde:"\\u02DC",Tilde:"\\u223C",TildeEqual:"\\u2243",TildeFullEqual:"\\u2245",TildeTilde:"\\u2248",times:"\\xD7",timesb:"\\u22A0",timesbar:"\\u2A31",timesd:"\\u2A30",tint:"\\u222D",toea:"\\u2928",top:"\\u22A4",topbot:"\\u2336",topcir:"\\u2AF1",topf:"\\u{1D565}",Topf:"\\u{1D54B}",topfork:"\\u2ADA",tosa:"\\u2929",tprime:"\\u2034",trade:"\\u2122",TRADE:"\\u2122",triangle:"\\u25B5",triangledown:"\\u25BF",triangleleft:"\\u25C3",trianglelefteq:"\\u22B4",triangleq:"\\u225C",triangleright:"\\u25B9",trianglerighteq:"\\u22B5",tridot:"\\u25EC",trie:"\\u225C",triminus:"\\u2A3A",TripleDot:"\\u20DB",triplus:"\\u2A39",trisb:"\\u29CD",tritime:"\\u2A3B",trpezium:"\\u23E2",tscr:"\\u{1D4C9}",Tscr:"\\u{1D4AF}",tscy:"\\u0446",TScy:"\\u0426",tshcy:"\\u045B",TSHcy:"\\u040B",tstrok:"\\u0167",Tstrok:"\\u0166",twixt:"\\u226C",twoheadleftarrow:"\\u219E",twoheadrightarrow:"\\u21A0",uacute:"\\xFA",Uacute:"\\xDA",uarr:"\\u2191",uArr:"\\u21D1",Uarr:"\\u219F",Uarrocir:"\\u2949",ubrcy:"\\u045E",Ubrcy:"\\u040E",ubreve:"\\u016D",Ubreve:"\\u016C",ucirc:"\\xFB",Ucirc:"\\xDB",ucy:"\\u0443",Ucy:"\\u0423",udarr:"\\u21C5",udblac:"\\u0171",Udblac:"\\u0170",udhar:"\\u296E",ufisht:"\\u297E",ufr:"\\u{1D532}",Ufr:"\\u{1D518}",ugrave:"\\xF9",Ugrave:"\\xD9",uHar:"\\u2963",uharl:"\\u21BF",uharr:"\\u21BE",uhblk:"\\u2580",ulcorn:"\\u231C",ulcorner:"\\u231C",ulcrop:"\\u230F",ultri:"\\u25F8",umacr:"\\u016B",Umacr:"\\u016A",uml:"\\xA8",UnderBar:"_",UnderBrace:"\\u23DF",UnderBracket:"\\u23B5",UnderParenthesis:"\\u23DD",Union:"\\u22C3",UnionPlus:"\\u228E",uogon:"\\u0173",Uogon:"\\u0172",uopf:"\\u{1D566}",Uopf:"\\u{1D54C}",uparrow:"\\u2191",Uparrow:"\\u21D1",UpArrow:"\\u2191",UpArrowBar:"\\u2912",UpArrowDownArrow:"\\u21C5",updownarrow:"\\u2195",Updownarrow:"\\u21D5",UpDownArrow:"\\u2195",UpEquilibrium:"\\u296E",upharpoonleft:"\\u21BF",upharpoonright:"\\u21BE",uplus:"\\u228E",UpperLeftArrow:"\\u2196",UpperRightArrow:"\\u2197",upsi:"\\u03C5",Upsi:"\\u03D2",upsih:"\\u03D2",upsilon:"\\u03C5",Upsilon:"\\u03A5",UpTee:"\\u22A5",UpTeeArrow:"\\u21A5",upuparrows:"\\u21C8",urcorn:"\\u231D",urcorner:"\\u231D",urcrop:"\\u230E",uring:"\\u016F",Uring:"\\u016E",urtri:"\\u25F9",uscr:"\\u{1D4CA}",Uscr:"\\u{1D4B0}",utdot:"\\u22F0",utilde:"\\u0169",Utilde:"\\u0168",utri:"\\u25B5",utrif:"\\u25B4",uuarr:"\\u21C8",uuml:"\\xFC",Uuml:"\\xDC",uwangle:"\\u29A7",vangrt:"\\u299C",varepsilon:"\\u03F5",varkappa:"\\u03F0",varnothing:"\\u2205",varphi:"\\u03D5",varpi:"\\u03D6",varpropto:"\\u221D",varr:"\\u2195",vArr:"\\u21D5",varrho:"\\u03F1",varsigma:"\\u03C2",varsubsetneq:"\\u228A\\uFE00",varsubsetneqq:"\\u2ACB\\uFE00",varsupsetneq:"\\u228B\\uFE00",varsupsetneqq:"\\u2ACC\\uFE00",vartheta:"\\u03D1",vartriangleleft:"\\u22B2",vartriangleright:"\\u22B3",vBar:"\\u2AE8",Vbar:"\\u2AEB",vBarv:"\\u2AE9",vcy:"\\u0432",Vcy:"\\u0412",vdash:"\\u22A2",vDash:"\\u22A8",Vdash:"\\u22A9",VDash:"\\u22AB",Vdashl:"\\u2AE6",vee:"\\u2228",Vee:"\\u22C1",veebar:"\\u22BB",veeeq:"\\u225A",vellip:"\\u22EE",verbar:"|",Verbar:"\\u2016",vert:"|",Vert:"\\u2016",VerticalBar:"\\u2223",VerticalLine:"|",VerticalSeparator:"\\u2758",VerticalTilde:"\\u2240",VeryThinSpace:"\\u200A",vfr:"\\u{1D533}",Vfr:"\\u{1D519}",vltri:"\\u22B2",vnsub:"\\u2282\\u20D2",vnsup:"\\u2283\\u20D2",vopf:"\\u{1D567}",Vopf:"\\u{1D54D}",vprop:"\\u221D",vrtri:"\\u22B3",vscr:"\\u{1D4CB}",Vscr:"\\u{1D4B1}",vsubne:"\\u228A\\uFE00",vsubnE:"\\u2ACB\\uFE00",vsupne:"\\u228B\\uFE00",vsupnE:"\\u2ACC\\uFE00",Vvdash:"\\u22AA",vzigzag:"\\u299A",wcirc:"\\u0175",Wcirc:"\\u0174",wedbar:"\\u2A5F",wedge:"\\u2227",Wedge:"\\u22C0",wedgeq:"\\u2259",weierp:"\\u2118",wfr:"\\u{1D534}",Wfr:"\\u{1D51A}",wopf:"\\u{1D568}",Wopf:"\\u{1D54E}",wp:"\\u2118",wr:"\\u2240",wreath:"\\u2240",wscr:"\\u{1D4CC}",Wscr:"\\u{1D4B2}",xcap:"\\u22C2",xcirc:"\\u25EF",xcup:"\\u22C3",xdtri:"\\u25BD",xfr:"\\u{1D535}",Xfr:"\\u{1D51B}",xharr:"\\u27F7",xhArr:"\\u27FA",xi:"\\u03BE",Xi:"\\u039E",xlarr:"\\u27F5",xlArr:"\\u27F8",xmap:"\\u27FC",xnis:"\\u22FB",xodot:"\\u2A00",xopf:"\\u{1D569}",Xopf:"\\u{1D54F}",xoplus:"\\u2A01",xotime:"\\u2A02",xrarr:"\\u27F6",xrArr:"\\u27F9",xscr:"\\u{1D4CD}",Xscr:"\\u{1D4B3}",xsqcup:"\\u2A06",xuplus:"\\u2A04",xutri:"\\u25B3",xvee:"\\u22C1",xwedge:"\\u22C0",yacute:"\\xFD",Yacute:"\\xDD",yacy:"\\u044F",YAcy:"\\u042F",ycirc:"\\u0177",Ycirc:"\\u0176",ycy:"\\u044B",Ycy:"\\u042B",yen:"\\xA5",yfr:"\\u{1D536}",Yfr:"\\u{1D51C}",yicy:"\\u0457",YIcy:"\\u0407",yopf:"\\u{1D56A}",Yopf:"\\u{1D550}",yscr:"\\u{1D4CE}",Yscr:"\\u{1D4B4}",yucy:"\\u044E",YUcy:"\\u042E",yuml:"\\xFF",Yuml:"\\u0178",zacute:"\\u017A",Zacute:"\\u0179",zcaron:"\\u017E",Zcaron:"\\u017D",zcy:"\\u0437",Zcy:"\\u0417",zdot:"\\u017C",Zdot:"\\u017B",zeetrf:"\\u2128",ZeroWidthSpace:"\\u200B",zeta:"\\u03B6",Zeta:"\\u0396",zfr:"\\u{1D537}",Zfr:"\\u2128",zhcy:"\\u0436",ZHcy:"\\u0416",zigrarr:"\\u21DD",zopf:"\\u{1D56B}",Zopf:"\\u2124",zscr:"\\u{1D4CF}",Zscr:"\\u{1D4B5}",zwj:"\\u200D",zwnj:"\\u200C"},g={aacute:"\\xE1",Aacute:"\\xC1",acirc:"\\xE2",Acirc:"\\xC2",acute:"\\xB4",aelig:"\\xE6",AElig:"\\xC6",agrave:"\\xE0",Agrave:"\\xC0",amp:"&",AMP:"&",aring:"\\xE5",Aring:"\\xC5",atilde:"\\xE3",Atilde:"\\xC3",auml:"\\xE4",Auml:"\\xC4",brvbar:"\\xA6",ccedil:"\\xE7",Ccedil:"\\xC7",cedil:"\\xB8",cent:"\\xA2",copy:"\\xA9",COPY:"\\xA9",curren:"\\xA4",deg:"\\xB0",divide:"\\xF7",eacute:"\\xE9",Eacute:"\\xC9",ecirc:"\\xEA",Ecirc:"\\xCA",egrave:"\\xE8",Egrave:"\\xC8",eth:"\\xF0",ETH:"\\xD0",euml:"\\xEB",Euml:"\\xCB",frac12:"\\xBD",frac14:"\\xBC",frac34:"\\xBE",gt:">",GT:">",iacute:"\\xED",Iacute:"\\xCD",icirc:"\\xEE",Icirc:"\\xCE",iexcl:"\\xA1",igrave:"\\xEC",Igrave:"\\xCC",iquest:"\\xBF",iuml:"\\xEF",Iuml:"\\xCF",laquo:"\\xAB",lt:"<",LT:"<",macr:"\\xAF",micro:"\\xB5",middot:"\\xB7",nbsp:"\\xA0",not:"\\xAC",ntilde:"\\xF1",Ntilde:"\\xD1",oacute:"\\xF3",Oacute:"\\xD3",ocirc:"\\xF4",Ocirc:"\\xD4",ograve:"\\xF2",Ograve:"\\xD2",ordf:"\\xAA",ordm:"\\xBA",oslash:"\\xF8",Oslash:"\\xD8",otilde:"\\xF5",Otilde:"\\xD5",ouml:"\\xF6",Ouml:"\\xD6",para:"\\xB6",plusmn:"\\xB1",pound:"\\xA3",quot:\'"\',QUOT:\'"\',raquo:"\\xBB",reg:"\\xAE",REG:"\\xAE",sect:"\\xA7",shy:"\\xAD",sup1:"\\xB9",sup2:"\\xB2",sup3:"\\xB3",szlig:"\\xDF",thorn:"\\xFE",THORN:"\\xDE",times:"\\xD7",uacute:"\\xFA",Uacute:"\\xDA",ucirc:"\\xFB",Ucirc:"\\xDB",ugrave:"\\xF9",Ugrave:"\\xD9",uml:"\\xA8",uuml:"\\xFC",Uuml:"\\xDC",yacute:"\\xFD",Yacute:"\\xDD",yen:"\\xA5",yuml:"\\xFF"},b={0:"\\uFFFD",128:"\\u20AC",130:"\\u201A",131:"\\u0192",132:"\\u201E",133:"\\u2026",134:"\\u2020",135:"\\u2021",136:"\\u02C6",137:"\\u2030",138:"\\u0160",139:"\\u2039",140:"\\u0152",142:"\\u017D",145:"\\u2018",146:"\\u2019",147:"\\u201C",148:"\\u201D",149:"\\u2022",150:"\\u2013",151:"\\u2014",152:"\\u02DC",153:"\\u2122",154:"\\u0161",155:"\\u203A",156:"\\u0153",158:"\\u017E",159:"\\u0178"},w=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],D=String.fromCharCode,_={},Z=_.hasOwnProperty,R=function(E,G){return Z.call(E,G)},O=function(E,G){for(var B=-1,k=E.length;++B<k;)if(E[B]==G)return!0;return!1},F=function(E,G){if(!E)return G;var B={},k;for(k in G)B[k]=R(E,k)?E[k]:G[k];return B},j=function(E,G){var B="";return E>=55296&&E<=57343||E>1114111?(G&&z("character reference outside the permissible Unicode range"),"\\uFFFD"):R(b,E)?(G&&z("disallowed character reference"),b[E]):(G&&O(w,E)&&z("disallowed character reference"),E>65535&&(E-=65536,B+=D(E>>>10&1023|55296),E=56320|E&1023),B+=D(E),B)},Q=function(E){return"&#x"+E.toString(16).toUpperCase()+";"},v=function(E){return"&#"+E+";"},z=function(E){throw Error("Parse error: "+E)},f=function(E,G){G=F(G,f.options);var B=G.strict;B&&A.test(E)&&z("forbidden code point");var k=G.encodeEverything,N=G.useNamedReferences,W=G.allowUnsafeSymbols,V=G.decimal?v:Q,X=function($){return V($.charCodeAt(0))};return k?(E=E.replace(r,function($){return N&&R(u,$)?"&"+u[$]+";":X($)}),N&&(E=E.replace(/>\\u20D2/g,">⃒").replace(/<\\u20D2/g,"<⃒").replace(/fj/g,"fj")),N&&(E=E.replace(o,function($){return"&"+u[$]+";"}))):N?(W||(E=E.replace(h,function($){return"&"+u[$]+";"})),E=E.replace(/>\\u20D2/g,">⃒").replace(/<\\u20D2/g,"<⃒"),E=E.replace(o,function($){return"&"+u[$]+";"})):W||(E=E.replace(h,X)),E.replace(n,function($){var ee=$.charCodeAt(0),re=$.charCodeAt(1),se=(ee-55296)*1024+re-56320+65536;return V(se)}).replace(a,X)};f.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var I=function(E,G){G=F(G,I.options);var B=G.strict;return B&&c.test(E)&&z("malformed character reference"),E.replace(p,function(k,N,W,V,X,$,ee,re,se){var ne,he,de,d,U,P;return N?(U=N,m[U]):W?(U=W,P=V,P&&G.isAttributeValue?(B&&P=="="&&z("`&` did not start a character reference"),k):(B&&z("named character reference was not terminated by a semicolon"),g[U]+(P||""))):X?(de=X,he=$,B&&!he&&z("character reference was not terminated by a semicolon"),ne=parseInt(de,10),j(ne,B)):ee?(d=ee,he=re,B&&!he&&z("character reference was not terminated by a semicolon"),ne=parseInt(d,16),j(ne,B)):(B&&z("named character reference was not terminated by a semicolon"),k)})};I.options={isAttributeValue:!1,strict:!1};var q=function(E){return E.replace(h,function(G){return l[G]})},T={version:"1.2.0",encode:f,decode:I,escape:q,unescape:I};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd)define(function(){return T});else if(e&&!e.nodeType)if(t)t.exports=T;else for(var Y in T)R(T,Y)&&(e[Y]=T[Y]);else s.he=T})(ot)});var St=ge((br,kt)=>{(function(s){typeof br=="object"&&typeof kt<"u"?kt.exports=s():typeof define=="function"&&define.amd?define([],s):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=s()})(function(){return function s(e,t,i){function n(o,u){if(!t[o]){if(!e[o]){var h=typeof Ye=="function"&&Ye;if(!u&&h)return h(o,!0);if(r)return r(o,!0);var l=new Error("Cannot find module \'"+o+"\'");throw l.code="MODULE_NOT_FOUND",l}var c=t[o]={exports:{}};e[o][0].call(c.exports,function(A){var p=e[o][1][A];return n(p||A)},c,c.exports,s,e,t,i)}return t[o].exports}for(var r=typeof Ye=="function"&&Ye,a=0;a<i.length;a++)n(i[a]);return n}({1:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./support"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.encode=function(a){for(var o,u,h,l,c,A,p,m=[],g=0,b=a.length,w=b,D=i.getTypeOf(a)!=="string";g<a.length;)w=b-g,h=D?(o=a[g++],u=g<b?a[g++]:0,g<b?a[g++]:0):(o=a.charCodeAt(g++),u=g<b?a.charCodeAt(g++):0,g<b?a.charCodeAt(g++):0),l=o>>2,c=(3&o)<<4|u>>4,A=1<w?(15&u)<<2|h>>6:64,p=2<w?63&h:64,m.push(r.charAt(l)+r.charAt(c)+r.charAt(A)+r.charAt(p));return m.join("")},t.decode=function(a){var o,u,h,l,c,A,p=0,m=0,g="data:";if(a.substr(0,g.length)===g)throw new Error("Invalid base64 input, it looks like a data url.");var b,w=3*(a=a.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(a.charAt(a.length-1)===r.charAt(64)&&w--,a.charAt(a.length-2)===r.charAt(64)&&w--,w%1!=0)throw new Error("Invalid base64 input, bad content length.");for(b=n.uint8array?new Uint8Array(0|w):new Array(0|w);p<a.length;)o=r.indexOf(a.charAt(p++))<<2|(l=r.indexOf(a.charAt(p++)))>>4,u=(15&l)<<4|(c=r.indexOf(a.charAt(p++)))>>2,h=(3&c)<<6|(A=r.indexOf(a.charAt(p++))),b[m++]=o,c!==64&&(b[m++]=u),A!==64&&(b[m++]=h);return b}},{"./support":30,"./utils":32}],2:[function(s,e,t){"use strict";var i=s("./external"),n=s("./stream/DataWorker"),r=s("./stream/Crc32Probe"),a=s("./stream/DataLengthProbe");function o(u,h,l,c,A){this.compressedSize=u,this.uncompressedSize=h,this.crc32=l,this.compression=c,this.compressedContent=A}o.prototype={getContentWorker:function(){var u=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),h=this;return u.on("end",function(){if(this.streamInfo.data_length!==h.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),u},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(u,h,l){return u.pipe(new r).pipe(new a("uncompressedSize")).pipe(h.compressWorker(l)).pipe(new a("compressedSize")).withStreamInfo("compression",h)},e.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(s,e,t){"use strict";var i=s("./stream/GenericWorker");t.STORE={magic:"\\0\\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},t.DEFLATE=s("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(s,e,t){"use strict";var i=s("./utils"),n=function(){for(var r,a=[],o=0;o<256;o++){r=o;for(var u=0;u<8;u++)r=1&r?3988292384^r>>>1:r>>>1;a[o]=r}return a}();e.exports=function(r,a){return r!==void 0&&r.length?i.getTypeOf(r)!=="string"?function(o,u,h,l){var c=n,A=l+h;o^=-1;for(var p=l;p<A;p++)o=o>>>8^c[255&(o^u[p])];return-1^o}(0|a,r,r.length,0):function(o,u,h,l){var c=n,A=l+h;o^=-1;for(var p=l;p<A;p++)o=o>>>8^c[255&(o^u.charCodeAt(p))];return-1^o}(0|a,r,r.length,0):0}},{"./utils":32}],5:[function(s,e,t){"use strict";t.base64=!1,t.binary=!1,t.dir=!1,t.createFolders=!0,t.date=null,t.compression=null,t.compressionOptions=null,t.comment=null,t.unixPermissions=null,t.dosPermissions=null},{}],6:[function(s,e,t){"use strict";var i=null;i=typeof Promise<"u"?Promise:s("lie"),e.exports={Promise:i}},{lie:37}],7:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",n=s("pako"),r=s("./utils"),a=s("./stream/GenericWorker"),o=i?"uint8array":"array";function u(h,l){a.call(this,"FlateWorker/"+h),this._pako=null,this._pakoAction=h,this._pakoOptions=l,this.meta={}}t.magic="\\b\\0",r.inherits(u,a),u.prototype.processChunk=function(h){this.meta=h.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(o,h.data),!1)},u.prototype.flush=function(){a.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var h=this;this._pako.onData=function(l){h.push({data:l,meta:h.meta})}},t.compressWorker=function(h){return new u("Deflate",h)},t.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(s,e,t){"use strict";function i(c,A){var p,m="";for(p=0;p<A;p++)m+=String.fromCharCode(255&c),c>>>=8;return m}function n(c,A,p,m,g,b){var w,D,_=c.file,Z=c.compression,R=b!==o.utf8encode,O=r.transformTo("string",b(_.name)),F=r.transformTo("string",o.utf8encode(_.name)),j=_.comment,Q=r.transformTo("string",b(j)),v=r.transformTo("string",o.utf8encode(j)),z=F.length!==_.name.length,f=v.length!==j.length,I="",q="",T="",Y=_.dir,E=_.date,G={crc32:0,compressedSize:0,uncompressedSize:0};A&&!p||(G.crc32=c.crc32,G.compressedSize=c.compressedSize,G.uncompressedSize=c.uncompressedSize);var B=0;A&&(B|=8),R||!z&&!f||(B|=2048);var k=0,N=0;Y&&(k|=16),g==="UNIX"?(N=798,k|=function(V,X){var $=V;return V||($=X?16893:33204),(65535&$)<<16}(_.unixPermissions,Y)):(N=20,k|=function(V){return 63&(V||0)}(_.dosPermissions)),w=E.getUTCHours(),w<<=6,w|=E.getUTCMinutes(),w<<=5,w|=E.getUTCSeconds()/2,D=E.getUTCFullYear()-1980,D<<=4,D|=E.getUTCMonth()+1,D<<=5,D|=E.getUTCDate(),z&&(q=i(1,1)+i(u(O),4)+F,I+="up"+i(q.length,2)+q),f&&(T=i(1,1)+i(u(Q),4)+v,I+="uc"+i(T.length,2)+T);var W="";return W+=`\n\\0`,W+=i(B,2),W+=Z.magic,W+=i(w,2),W+=i(D,2),W+=i(G.crc32,4),W+=i(G.compressedSize,4),W+=i(G.uncompressedSize,4),W+=i(O.length,2),W+=i(I.length,2),{fileRecord:h.LOCAL_FILE_HEADER+W+O+I,dirRecord:h.CENTRAL_FILE_HEADER+i(N,2)+W+i(Q.length,2)+"\\0\\0\\0\\0"+i(k,4)+i(m,4)+O+I+Q}}var r=s("../utils"),a=s("../stream/GenericWorker"),o=s("../utf8"),u=s("../crc32"),h=s("../signature");function l(c,A,p,m){a.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=A,this.zipPlatform=p,this.encodeFileName=m,this.streamFiles=c,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(l,a),l.prototype.push=function(c){var A=c.meta.percent||0,p=this.entriesCount,m=this._sources.length;this.accumulate?this.contentBuffer.push(c):(this.bytesWritten+=c.data.length,a.prototype.push.call(this,{data:c.data,meta:{currentFile:this.currentFile,percent:p?(A+100*(p-m-1))/p:100}}))},l.prototype.openedSource=function(c){this.currentSourceOffset=this.bytesWritten,this.currentFile=c.file.name;var A=this.streamFiles&&!c.file.dir;if(A){var p=n(c,A,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:p.fileRecord,meta:{percent:0}})}else this.accumulate=!0},l.prototype.closedSource=function(c){this.accumulate=!1;var A=this.streamFiles&&!c.file.dir,p=n(c,A,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(p.dirRecord),A)this.push({data:function(m){return h.DATA_DESCRIPTOR+i(m.crc32,4)+i(m.compressedSize,4)+i(m.uncompressedSize,4)}(c),meta:{percent:100}});else for(this.push({data:p.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},l.prototype.flush=function(){for(var c=this.bytesWritten,A=0;A<this.dirRecords.length;A++)this.push({data:this.dirRecords[A],meta:{percent:100}});var p=this.bytesWritten-c,m=function(g,b,w,D,_){var Z=r.transformTo("string",_(D));return h.CENTRAL_DIRECTORY_END+"\\0\\0\\0\\0"+i(g,2)+i(g,2)+i(b,4)+i(w,4)+i(Z.length,2)+Z}(this.dirRecords.length,p,c,this.zipComment,this.encodeFileName);this.push({data:m,meta:{percent:100}})},l.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},l.prototype.registerPrevious=function(c){this._sources.push(c);var A=this;return c.on("data",function(p){A.processChunk(p)}),c.on("end",function(){A.closedSource(A.previous.streamInfo),A._sources.length?A.prepareNextSource():A.end()}),c.on("error",function(p){A.error(p)}),this},l.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},l.prototype.error=function(c){var A=this._sources;if(!a.prototype.error.call(this,c))return!1;for(var p=0;p<A.length;p++)try{A[p].error(c)}catch{}return!0},l.prototype.lock=function(){a.prototype.lock.call(this);for(var c=this._sources,A=0;A<c.length;A++)c[A].lock()},e.exports=l},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(s,e,t){"use strict";var i=s("../compressions"),n=s("./ZipFileWorker");t.generateWorker=function(r,a,o){var u=new n(a.streamFiles,o,a.platform,a.encodeFileName),h=0;try{r.forEach(function(l,c){h++;var A=function(b,w){var D=b||w,_=i[D];if(!_)throw new Error(D+" is not a valid compression method !");return _}(c.options.compression,a.compression),p=c.options.compressionOptions||a.compressionOptions||{},m=c.dir,g=c.date;c._compressWorker(A,p).withStreamInfo("file",{name:l,dir:m,date:g,comment:c.comment||"",unixPermissions:c.unixPermissions,dosPermissions:c.dosPermissions}).pipe(u)}),u.entriesCount=h}catch(l){u.error(l)}return u}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(s,e,t){"use strict";function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var n=new i;for(var r in this)typeof this[r]!="function"&&(n[r]=this[r]);return n}}(i.prototype=s("./object")).loadAsync=s("./load"),i.support=s("./support"),i.defaults=s("./defaults"),i.version="3.10.1",i.loadAsync=function(n,r){return new i().loadAsync(n,r)},i.external=s("./external"),e.exports=i},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./external"),r=s("./utf8"),a=s("./zipEntries"),o=s("./stream/Crc32Probe"),u=s("./nodejsUtils");function h(l){return new n.Promise(function(c,A){var p=l.decompressed.getContentWorker().pipe(new o);p.on("error",function(m){A(m)}).on("end",function(){p.streamInfo.crc32!==l.decompressed.crc32?A(new Error("Corrupted zip : CRC32 mismatch")):c()}).resume()})}e.exports=function(l,c){var A=this;return c=i.extend(c||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:r.utf8decode}),u.isNode&&u.isStream(l)?n.Promise.reject(new Error("JSZip can\'t accept a stream when loading a zip file.")):i.prepareContent("the loaded zip file",l,!0,c.optimizedBinaryString,c.base64).then(function(p){var m=new a(c);return m.load(p),m}).then(function(p){var m=[n.Promise.resolve(p)],g=p.files;if(c.checkCRC32)for(var b=0;b<g.length;b++)m.push(h(g[b]));return n.Promise.all(m)}).then(function(p){for(var m=p.shift(),g=m.files,b=0;b<g.length;b++){var w=g[b],D=w.fileNameStr,_=i.resolve(w.fileNameStr);A.file(_,w.decompressed,{binary:!0,optimizedBinaryString:!0,date:w.date,dir:w.dir,comment:w.fileCommentStr.length?w.fileCommentStr:null,unixPermissions:w.unixPermissions,dosPermissions:w.dosPermissions,createFolders:c.createFolders}),w.dir||(A.file(_).unsafeOriginalName=D)}return m.zipComment.length&&(A.comment=m.zipComment),A})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../stream/GenericWorker");function r(a,o){n.call(this,"Nodejs stream input adapter for "+a),this._upstreamEnded=!1,this._bindStream(o)}i.inherits(r,n),r.prototype._bindStream=function(a){var o=this;(this._stream=a).pause(),a.on("data",function(u){o.push({data:u,meta:{percent:0}})}).on("error",function(u){o.isPaused?this.generatedError=u:o.error(u)}).on("end",function(){o.isPaused?o._upstreamEnded=!0:o.end()})},r.prototype.pause=function(){return!!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=r},{"../stream/GenericWorker":28,"../utils":32}],13:[function(s,e,t){"use strict";var i=s("readable-stream").Readable;function n(r,a,o){i.call(this,a),this._helper=r;var u=this;r.on("data",function(h,l){u.push(h)||u._helper.pause(),o&&o(l)}).on("error",function(h){u.emit("error",h)}).on("end",function(){u.push(null)})}s("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume()},e.exports=n},{"../utils":32,"readable-stream":16}],14:[function(s,e,t){"use strict";e.exports={isNode:typeof Buffer<"u",newBufferFrom:function(i,n){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(i,n);if(typeof i=="number")throw new Error(\'The "data" argument must not be a number\');return new Buffer(i,n)},allocBuffer:function(i){if(Buffer.alloc)return Buffer.alloc(i);var n=new Buffer(i);return n.fill(0),n},isBuffer:function(i){return Buffer.isBuffer(i)},isStream:function(i){return i&&typeof i.on=="function"&&typeof i.pause=="function"&&typeof i.resume=="function"}}},{}],15:[function(s,e,t){"use strict";function i(_,Z,R){var O,F=r.getTypeOf(Z),j=r.extend(R||{},u);j.date=j.date||new Date,j.compression!==null&&(j.compression=j.compression.toUpperCase()),typeof j.unixPermissions=="string"&&(j.unixPermissions=parseInt(j.unixPermissions,8)),j.unixPermissions&&16384&j.unixPermissions&&(j.dir=!0),j.dosPermissions&&16&j.dosPermissions&&(j.dir=!0),j.dir&&(_=g(_)),j.createFolders&&(O=m(_))&&b.call(this,O,!0);var Q=F==="string"&&j.binary===!1&&j.base64===!1;R&&R.binary!==void 0||(j.binary=!Q),(Z instanceof h&&Z.uncompressedSize===0||j.dir||!Z||Z.length===0)&&(j.base64=!1,j.binary=!0,Z="",j.compression="STORE",F="string");var v=null;v=Z instanceof h||Z instanceof a?Z:A.isNode&&A.isStream(Z)?new p(_,Z):r.prepareContent(_,Z,j.binary,j.optimizedBinaryString,j.base64);var z=new l(_,v,j);this.files[_]=z}var n=s("./utf8"),r=s("./utils"),a=s("./stream/GenericWorker"),o=s("./stream/StreamHelper"),u=s("./defaults"),h=s("./compressedObject"),l=s("./zipObject"),c=s("./generate"),A=s("./nodejsUtils"),p=s("./nodejs/NodejsStreamInputAdapter"),m=function(_){_.slice(-1)==="/"&&(_=_.substring(0,_.length-1));var Z=_.lastIndexOf("/");return 0<Z?_.substring(0,Z):""},g=function(_){return _.slice(-1)!=="/"&&(_+="/"),_},b=function(_,Z){return Z=Z!==void 0?Z:u.createFolders,_=g(_),this.files[_]||i.call(this,_,null,{dir:!0,createFolders:Z}),this.files[_]};function w(_){return Object.prototype.toString.call(_)==="[object RegExp]"}var D={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(_){var Z,R,O;for(Z in this.files)O=this.files[Z],(R=Z.slice(this.root.length,Z.length))&&Z.slice(0,this.root.length)===this.root&&_(R,O)},filter:function(_){var Z=[];return this.forEach(function(R,O){_(R,O)&&Z.push(O)}),Z},file:function(_,Z,R){if(arguments.length!==1)return _=this.root+_,i.call(this,_,Z,R),this;if(w(_)){var O=_;return this.filter(function(j,Q){return!Q.dir&&O.test(j)})}var F=this.files[this.root+_];return F&&!F.dir?F:null},folder:function(_){if(!_)return this;if(w(_))return this.filter(function(F,j){return j.dir&&_.test(F)});var Z=this.root+_,R=b.call(this,Z),O=this.clone();return O.root=R.name,O},remove:function(_){_=this.root+_;var Z=this.files[_];if(Z||(_.slice(-1)!=="/"&&(_+="/"),Z=this.files[_]),Z&&!Z.dir)delete this.files[_];else for(var R=this.filter(function(F,j){return j.name.slice(0,_.length)===_}),O=0;O<R.length;O++)delete this.files[R[O].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(_){var Z,R={};try{if((R=r.extend(_||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:n.utf8encode})).type=R.type.toLowerCase(),R.compression=R.compression.toUpperCase(),R.type==="binarystring"&&(R.type="string"),!R.type)throw new Error("No output type specified.");r.checkSupport(R.type),R.platform!=="darwin"&&R.platform!=="freebsd"&&R.platform!=="linux"&&R.platform!=="sunos"||(R.platform="UNIX"),R.platform==="win32"&&(R.platform="DOS");var O=R.comment||this.comment||"";Z=c.generateWorker(this,R,O)}catch(F){(Z=new a("error")).error(F)}return new o(Z,R.type||"string",R.mimeType)},generateAsync:function(_,Z){return this.generateInternalStream(_).accumulate(Z)},generateNodeStream:function(_,Z){return(_=_||{}).type||(_.type="nodebuffer"),this.generateInternalStream(_).toNodejsStream(Z)}};e.exports=D},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(s,e,t){"use strict";e.exports=s("stream")},{stream:void 0}],17:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r);for(var a=0;a<this.data.length;a++)r[a]=255&r[a]}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data[this.zero+r]},n.prototype.lastIndexOfSignature=function(r){for(var a=r.charCodeAt(0),o=r.charCodeAt(1),u=r.charCodeAt(2),h=r.charCodeAt(3),l=this.length-4;0<=l;--l)if(this.data[l]===a&&this.data[l+1]===o&&this.data[l+2]===u&&this.data[l+3]===h)return l-this.zero;return-1},n.prototype.readAndCheckSignature=function(r){var a=r.charCodeAt(0),o=r.charCodeAt(1),u=r.charCodeAt(2),h=r.charCodeAt(3),l=this.readData(4);return a===l[0]&&o===l[1]&&u===l[2]&&h===l[3]},n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return[];var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],18:[function(s,e,t){"use strict";var i=s("../utils");function n(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}n.prototype={checkOffset:function(r){this.checkIndex(this.index+r)},checkIndex:function(r){if(this.length<this.zero+r||r<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+r+"). Corrupted zip ?")},setIndex:function(r){this.checkIndex(r),this.index=r},skip:function(r){this.setIndex(this.index+r)},byteAt:function(){},readInt:function(r){var a,o=0;for(this.checkOffset(r),a=this.index+r-1;a>=this.index;a--)o=(o<<8)+this.byteAt(a);return this.index+=r,o},readString:function(r){return i.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},e.exports=n},{"../utils":32}],19:[function(s,e,t){"use strict";var i=s("./Uint8ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},n.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},n.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],21:[function(s,e,t){"use strict";var i=s("./ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var a=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../support"),r=s("./ArrayReader"),a=s("./StringReader"),o=s("./NodeBufferReader"),u=s("./Uint8ArrayReader");e.exports=function(h){var l=i.getTypeOf(h);return i.checkSupport(l),l!=="string"||n.uint8array?l==="nodebuffer"?new o(h):n.uint8array?new u(i.transformTo("uint8array",h)):new r(i.transformTo("array",h)):new a(h)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(s,e,t){"use strict";t.LOCAL_FILE_HEADER="PK",t.CENTRAL_FILE_HEADER="PK",t.CENTRAL_DIRECTORY_END="PK",t.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\\x07",t.ZIP64_CENTRAL_DIRECTORY_END="PK",t.DATA_DESCRIPTOR="PK\\x07\\b"},{}],24:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../utils");function r(a){i.call(this,"ConvertWorker to "+a),this.destType=a}n.inherits(r,i),r.prototype.processChunk=function(a){this.push({data:n.transformTo(this.destType,a.data),meta:a.meta})},e.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../crc32");function r(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}s("../utils").inherits(r,i),r.prototype.processChunk=function(a){this.streamInfo.crc32=n(a.data,this.streamInfo.crc32||0),this.push(a)},e.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataLengthProbe for "+a),this.propName=a,this.withStreamInfo(a,0)}i.inherits(r,n),r.prototype.processChunk=function(a){if(a){var o=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=o+a.data.length}n.prototype.processChunk.call(this,a)},e.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataWorker");var o=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,a.then(function(u){o.dataIsReady=!0,o.data=u,o.max=u&&u.length||0,o.type=i.getTypeOf(u),o.isPaused||o._tickAndRepeat()},function(u){o.error(u)})}i.inherits(r,n),r.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var a=null,o=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":a=this.data.substring(this.index,o);break;case"uint8array":a=this.data.subarray(this.index,o);break;case"array":case"nodebuffer":a=this.data.slice(this.index,o)}return this.index=o,this.push({data:a,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(s,e,t){"use strict";function i(n){this.name=n||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(n){this.emit("data",n)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(n){this.emit("error",n)}return!0},error:function(n){return!this.isFinished&&(this.isPaused?this.generatedError=n:(this.isFinished=!0,this.emit("error",n),this.previous&&this.previous.error(n),this.cleanUp()),!0)},on:function(n,r){return this._listeners[n].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(n,r){if(this._listeners[n])for(var a=0;a<this._listeners[n].length;a++)this._listeners[n][a].call(this,r)},pipe:function(n){return n.registerPrevious(this)},registerPrevious:function(n){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.streamInfo=n.streamInfo,this.mergeStreamInfo(),this.previous=n;var r=this;return n.on("data",function(a){r.processChunk(a)}),n.on("end",function(){r.end()}),n.on("error",function(a){r.error(a)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var n=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),n=!0),this.previous&&this.previous.resume(),!n},flush:function(){},processChunk:function(n){this.push(n)},withStreamInfo:function(n,r){return this.extraStreamInfo[n]=r,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var n in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,n)&&(this.streamInfo[n]=this.extraStreamInfo[n])},lock:function(){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var n="Worker "+this.name;return this.previous?this.previous+" -> "+n:n}},e.exports=i},{}],29:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./ConvertWorker"),r=s("./GenericWorker"),a=s("../base64"),o=s("../support"),u=s("../external"),h=null;if(o.nodestream)try{h=s("../nodejs/NodejsStreamOutputAdapter")}catch{}function l(A,p){return new u.Promise(function(m,g){var b=[],w=A._internalType,D=A._outputType,_=A._mimeType;A.on("data",function(Z,R){b.push(Z),p&&p(R)}).on("error",function(Z){b=[],g(Z)}).on("end",function(){try{var Z=function(R,O,F){switch(R){case"blob":return i.newBlob(i.transformTo("arraybuffer",O),F);case"base64":return a.encode(O);default:return i.transformTo(R,O)}}(D,function(R,O){var F,j=0,Q=null,v=0;for(F=0;F<O.length;F++)v+=O[F].length;switch(R){case"string":return O.join("");case"array":return Array.prototype.concat.apply([],O);case"uint8array":for(Q=new Uint8Array(v),F=0;F<O.length;F++)Q.set(O[F],j),j+=O[F].length;return Q;case"nodebuffer":return Buffer.concat(O);default:throw new Error("concat : unsupported type \'"+R+"\'")}}(w,b),_);m(Z)}catch(R){g(R)}b=[]}).resume()})}function c(A,p,m){var g=p;switch(p){case"blob":case"arraybuffer":g="uint8array";break;case"base64":g="string"}try{this._internalType=g,this._outputType=p,this._mimeType=m,i.checkSupport(g),this._worker=A.pipe(new n(g)),A.lock()}catch(b){this._worker=new r("error"),this._worker.error(b)}}c.prototype={accumulate:function(A){return l(this,A)},on:function(A,p){var m=this;return A==="data"?this._worker.on(A,function(g){p.call(m,g.data,g.meta)}):this._worker.on(A,function(){i.delay(p,arguments,m)}),this},resume:function(){return i.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(A){if(i.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new h(this,{objectMode:this._outputType!=="nodebuffer"},A)}},e.exports=c},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(s,e,t){"use strict";if(t.base64=!0,t.array=!0,t.string=!0,t.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",t.nodebuffer=typeof Buffer<"u",t.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")t.blob=!1;else{var i=new ArrayBuffer(0);try{t.blob=new Blob([i],{type:"application/zip"}).size===0}catch{try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);n.append(i),t.blob=n.getBlob("application/zip").size===0}catch{t.blob=!1}}}try{t.nodestream=!!s("readable-stream").Readable}catch{t.nodestream=!1}},{"readable-stream":16}],31:[function(s,e,t){"use strict";for(var i=s("./utils"),n=s("./support"),r=s("./nodejsUtils"),a=s("./stream/GenericWorker"),o=new Array(256),u=0;u<256;u++)o[u]=252<=u?6:248<=u?5:240<=u?4:224<=u?3:192<=u?2:1;o[254]=o[254]=1;function h(){a.call(this,"utf-8 decode"),this.leftOver=null}function l(){a.call(this,"utf-8 encode")}t.utf8encode=function(c){return n.nodebuffer?r.newBufferFrom(c,"utf-8"):function(A){var p,m,g,b,w,D=A.length,_=0;for(b=0;b<D;b++)(64512&(m=A.charCodeAt(b)))==55296&&b+1<D&&(64512&(g=A.charCodeAt(b+1)))==56320&&(m=65536+(m-55296<<10)+(g-56320),b++),_+=m<128?1:m<2048?2:m<65536?3:4;for(p=n.uint8array?new Uint8Array(_):new Array(_),b=w=0;w<_;b++)(64512&(m=A.charCodeAt(b)))==55296&&b+1<D&&(64512&(g=A.charCodeAt(b+1)))==56320&&(m=65536+(m-55296<<10)+(g-56320),b++),m<128?p[w++]=m:(m<2048?p[w++]=192|m>>>6:(m<65536?p[w++]=224|m>>>12:(p[w++]=240|m>>>18,p[w++]=128|m>>>12&63),p[w++]=128|m>>>6&63),p[w++]=128|63&m);return p}(c)},t.utf8decode=function(c){return n.nodebuffer?i.transformTo("nodebuffer",c).toString("utf-8"):function(A){var p,m,g,b,w=A.length,D=new Array(2*w);for(p=m=0;p<w;)if((g=A[p++])<128)D[m++]=g;else if(4<(b=o[g]))D[m++]=65533,p+=b-1;else{for(g&=b===2?31:b===3?15:7;1<b&&p<w;)g=g<<6|63&A[p++],b--;1<b?D[m++]=65533:g<65536?D[m++]=g:(g-=65536,D[m++]=55296|g>>10&1023,D[m++]=56320|1023&g)}return D.length!==m&&(D.subarray?D=D.subarray(0,m):D.length=m),i.applyFromCharCode(D)}(c=i.transformTo(n.uint8array?"uint8array":"array",c))},i.inherits(h,a),h.prototype.processChunk=function(c){var A=i.transformTo(n.uint8array?"uint8array":"array",c.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var p=A;(A=new Uint8Array(p.length+this.leftOver.length)).set(this.leftOver,0),A.set(p,this.leftOver.length)}else A=this.leftOver.concat(A);this.leftOver=null}var m=function(b,w){var D;for((w=w||b.length)>b.length&&(w=b.length),D=w-1;0<=D&&(192&b[D])==128;)D--;return D<0||D===0?w:D+o[b[D]]>w?D:w}(A),g=A;m!==A.length&&(n.uint8array?(g=A.subarray(0,m),this.leftOver=A.subarray(m,A.length)):(g=A.slice(0,m),this.leftOver=A.slice(m,A.length))),this.push({data:t.utf8decode(g),meta:c.meta})},h.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:t.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},t.Utf8DecodeWorker=h,i.inherits(l,a),l.prototype.processChunk=function(c){this.push({data:t.utf8encode(c.data),meta:c.meta})},t.Utf8EncodeWorker=l},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(s,e,t){"use strict";var i=s("./support"),n=s("./base64"),r=s("./nodejsUtils"),a=s("./external");function o(p){return p}function u(p,m){for(var g=0;g<p.length;++g)m[g]=255&p.charCodeAt(g);return m}s("setimmediate"),t.newBlob=function(p,m){t.checkSupport("blob");try{return new Blob([p],{type:m})}catch{try{var g=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return g.append(p),g.getBlob(m)}catch{throw new Error("Bug : can\'t construct the Blob.")}}};var h={stringifyByChunk:function(p,m,g){var b=[],w=0,D=p.length;if(D<=g)return String.fromCharCode.apply(null,p);for(;w<D;)m==="array"||m==="nodebuffer"?b.push(String.fromCharCode.apply(null,p.slice(w,Math.min(w+g,D)))):b.push(String.fromCharCode.apply(null,p.subarray(w,Math.min(w+g,D)))),w+=g;return b.join("")},stringifyByChar:function(p){for(var m="",g=0;g<p.length;g++)m+=String.fromCharCode(p[g]);return m},applyCanBeUsed:{uint8array:function(){try{return i.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}}(),nodebuffer:function(){try{return i.nodebuffer&&String.fromCharCode.apply(null,r.allocBuffer(1)).length===1}catch{return!1}}()}};function l(p){var m=65536,g=t.getTypeOf(p),b=!0;if(g==="uint8array"?b=h.applyCanBeUsed.uint8array:g==="nodebuffer"&&(b=h.applyCanBeUsed.nodebuffer),b)for(;1<m;)try{return h.stringifyByChunk(p,g,m)}catch{m=Math.floor(m/2)}return h.stringifyByChar(p)}function c(p,m){for(var g=0;g<p.length;g++)m[g]=p[g];return m}t.applyFromCharCode=l;var A={};A.string={string:o,array:function(p){return u(p,new Array(p.length))},arraybuffer:function(p){return A.string.uint8array(p).buffer},uint8array:function(p){return u(p,new Uint8Array(p.length))},nodebuffer:function(p){return u(p,r.allocBuffer(p.length))}},A.array={string:l,array:o,arraybuffer:function(p){return new Uint8Array(p).buffer},uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return r.newBufferFrom(p)}},A.arraybuffer={string:function(p){return l(new Uint8Array(p))},array:function(p){return c(new Uint8Array(p),new Array(p.byteLength))},arraybuffer:o,uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return r.newBufferFrom(new Uint8Array(p))}},A.uint8array={string:l,array:function(p){return c(p,new Array(p.length))},arraybuffer:function(p){return p.buffer},uint8array:o,nodebuffer:function(p){return r.newBufferFrom(p)}},A.nodebuffer={string:l,array:function(p){return c(p,new Array(p.length))},arraybuffer:function(p){return A.nodebuffer.uint8array(p).buffer},uint8array:function(p){return c(p,new Uint8Array(p.length))},nodebuffer:o},t.transformTo=function(p,m){if(m=m||"",!p)return m;t.checkSupport(p);var g=t.getTypeOf(m);return A[g][p](m)},t.resolve=function(p){for(var m=p.split("/"),g=[],b=0;b<m.length;b++){var w=m[b];w==="."||w===""&&b!==0&&b!==m.length-1||(w===".."?g.pop():g.push(w))}return g.join("/")},t.getTypeOf=function(p){return typeof p=="string"?"string":Object.prototype.toString.call(p)==="[object Array]"?"array":i.nodebuffer&&r.isBuffer(p)?"nodebuffer":i.uint8array&&p instanceof Uint8Array?"uint8array":i.arraybuffer&&p instanceof ArrayBuffer?"arraybuffer":void 0},t.checkSupport=function(p){if(!i[p.toLowerCase()])throw new Error(p+" is not supported by this platform")},t.MAX_VALUE_16BITS=65535,t.MAX_VALUE_32BITS=-1,t.pretty=function(p){var m,g,b="";for(g=0;g<(p||"").length;g++)b+="\\\\x"+((m=p.charCodeAt(g))<16?"0":"")+m.toString(16).toUpperCase();return b},t.delay=function(p,m,g){setImmediate(function(){p.apply(g||null,m||[])})},t.inherits=function(p,m){function g(){}g.prototype=m.prototype,p.prototype=new g},t.extend=function(){var p,m,g={};for(p=0;p<arguments.length;p++)for(m in arguments[p])Object.prototype.hasOwnProperty.call(arguments[p],m)&&g[m]===void 0&&(g[m]=arguments[p][m]);return g},t.prepareContent=function(p,m,g,b,w){return a.Promise.resolve(m).then(function(D){return i.blob&&(D instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(D))!==-1)&&typeof FileReader<"u"?new a.Promise(function(_,Z){var R=new FileReader;R.onload=function(O){_(O.target.result)},R.onerror=function(O){Z(O.target.error)},R.readAsArrayBuffer(D)}):D}).then(function(D){var _=t.getTypeOf(D);return _?(_==="arraybuffer"?D=t.transformTo("uint8array",D):_==="string"&&(w?D=n.decode(D):g&&b!==!0&&(D=function(Z){return u(Z,i.uint8array?new Uint8Array(Z.length):new Array(Z.length))}(D))),D):a.Promise.reject(new Error("Can\'t read the data of \'"+p+"\'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./signature"),a=s("./zipEntry"),o=s("./support");function u(h){this.files=[],this.loadOptions=h}u.prototype={checkSignature:function(h){if(!this.reader.readAndCheckSignature(h)){this.reader.index-=4;var l=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+n.pretty(l)+", expected "+n.pretty(h)+")")}},isSignature:function(h,l){var c=this.reader.index;this.reader.setIndex(h);var A=this.reader.readString(4)===l;return this.reader.setIndex(c),A},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var h=this.reader.readData(this.zipCommentLength),l=o.uint8array?"uint8array":"array",c=n.transformTo(l,h);this.zipComment=this.loadOptions.decodeFileName(c)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var h,l,c,A=this.zip64EndOfCentralSize-44;0<A;)h=this.reader.readInt(2),l=this.reader.readInt(4),c=this.reader.readData(l),this.zip64ExtensibleData[h]={id:h,length:l,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var h,l;for(h=0;h<this.files.length;h++)l=this.files[h],this.reader.setIndex(l.localHeaderOffset),this.checkSignature(r.LOCAL_FILE_HEADER),l.readLocalPart(this.reader),l.handleUTF8(),l.processAttributes()},readCentralDir:function(){var h;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(r.CENTRAL_FILE_HEADER);)(h=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(h);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var h=this.reader.lastIndexOfSignature(r.CENTRAL_DIRECTORY_END);if(h<0)throw this.isSignature(0,r.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can\'t find end of central directory"):new Error("Can\'t find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(h);var l=h;if(this.checkSignature(r.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,(h=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory locator");if(this.reader.setIndex(h),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,r.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var c=this.centralDirOffset+this.centralDirSize;this.zip64&&(c+=20,c+=12+this.zip64EndOfCentralSize);var A=l-c;if(0<A)this.isSignature(l,r.CENTRAL_FILE_HEADER)||(this.reader.zero=A);else if(A<0)throw new Error("Corrupted zip: missing "+Math.abs(A)+" bytes.")},prepareReader:function(h){this.reader=i(h)},load:function(h){this.prepareReader(h),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=u},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./compressedObject"),a=s("./crc32"),o=s("./utf8"),u=s("./compressions"),h=s("./support");function l(c,A){this.options=c,this.loadOptions=A}l.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(c){var A,p;if(c.skip(22),this.fileNameLength=c.readInt(2),p=c.readInt(2),this.fileName=c.readData(this.fileNameLength),c.skip(p),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn\'t get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((A=function(m){for(var g in u)if(Object.prototype.hasOwnProperty.call(u,g)&&u[g].magic===m)return u[g];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,A,c.readData(this.compressedSize))},readCentralPart:function(c){this.versionMadeBy=c.readInt(2),c.skip(2),this.bitFlag=c.readInt(2),this.compressionMethod=c.readString(2),this.date=c.readDate(),this.crc32=c.readInt(4),this.compressedSize=c.readInt(4),this.uncompressedSize=c.readInt(4);var A=c.readInt(2);if(this.extraFieldsLength=c.readInt(2),this.fileCommentLength=c.readInt(2),this.diskNumberStart=c.readInt(2),this.internalFileAttributes=c.readInt(2),this.externalFileAttributes=c.readInt(4),this.localHeaderOffset=c.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");c.skip(A),this.readExtraFields(c),this.parseZIP64ExtraField(c),this.fileComment=c.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var c=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),c==0&&(this.dosPermissions=63&this.externalFileAttributes),c==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var c=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=c.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=c.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=c.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=c.readInt(4))}},readExtraFields:function(c){var A,p,m,g=c.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});c.index+4<g;)A=c.readInt(2),p=c.readInt(2),m=c.readData(p),this.extraFields[A]={id:A,length:p,value:m};c.setIndex(g)},handleUTF8:function(){var c=h.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var A=this.findExtraFieldUnicodePath();if(A!==null)this.fileNameStr=A;else{var p=n.transformTo(c,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(p)}var m=this.findExtraFieldUnicodeComment();if(m!==null)this.fileCommentStr=m;else{var g=n.transformTo(c,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(g)}}},findExtraFieldUnicodePath:function(){var c=this.extraFields[28789];if(c){var A=i(c.value);return A.readInt(1)!==1||a(this.fileName)!==A.readInt(4)?null:o.utf8decode(A.readData(c.length-5))}return null},findExtraFieldUnicodeComment:function(){var c=this.extraFields[25461];if(c){var A=i(c.value);return A.readInt(1)!==1||a(this.fileComment)!==A.readInt(4)?null:o.utf8decode(A.readData(c.length-5))}return null}},e.exports=l},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(s,e,t){"use strict";function i(A,p,m){this.name=A,this.dir=m.dir,this.date=m.date,this.comment=m.comment,this.unixPermissions=m.unixPermissions,this.dosPermissions=m.dosPermissions,this._data=p,this._dataBinary=m.binary,this.options={compression:m.compression,compressionOptions:m.compressionOptions}}var n=s("./stream/StreamHelper"),r=s("./stream/DataWorker"),a=s("./utf8"),o=s("./compressedObject"),u=s("./stream/GenericWorker");i.prototype={internalStream:function(A){var p=null,m="string";try{if(!A)throw new Error("No output type specified.");var g=(m=A.toLowerCase())==="string"||m==="text";m!=="binarystring"&&m!=="text"||(m="string"),p=this._decompressWorker();var b=!this._dataBinary;b&&!g&&(p=p.pipe(new a.Utf8EncodeWorker)),!b&&g&&(p=p.pipe(new a.Utf8DecodeWorker))}catch(w){(p=new u("error")).error(w)}return new n(p,m,"")},async:function(A,p){return this.internalStream(A).accumulate(p)},nodeStream:function(A,p){return this.internalStream(A||"nodebuffer").toNodejsStream(p)},_compressWorker:function(A,p){if(this._data instanceof o&&this._data.compression.magic===A.magic)return this._data.getCompressedWorker();var m=this._decompressWorker();return this._dataBinary||(m=m.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(m,A,p)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof u?this._data:new r(this._data)}};for(var h=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],l=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},c=0;c<h.length;c++)i.prototype[h[c]]=l;e.exports=i},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(s,e,t){(function(i){"use strict";var n,r,a=i.MutationObserver||i.WebKitMutationObserver;if(a){var o=0,u=new a(A),h=i.document.createTextNode("");u.observe(h,{characterData:!0}),n=function(){h.data=o=++o%2}}else if(i.setImmediate||i.MessageChannel===void 0)n="document"in i&&"onreadystatechange"in i.document.createElement("script")?function(){var p=i.document.createElement("script");p.onreadystatechange=function(){A(),p.onreadystatechange=null,p.parentNode.removeChild(p),p=null},i.document.documentElement.appendChild(p)}:function(){setTimeout(A,0)};else{var l=new i.MessageChannel;l.port1.onmessage=A,n=function(){l.port2.postMessage(0)}}var c=[];function A(){var p,m;r=!0;for(var g=c.length;g;){for(m=c,c=[],p=-1;++p<g;)m[p]();g=c.length}r=!1}e.exports=function(p){c.push(p)!==1||r||n()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(s,e,t){"use strict";var i=s("immediate");function n(){}var r={},a=["REJECTED"],o=["FULFILLED"],u=["PENDING"];function h(g){if(typeof g!="function")throw new TypeError("resolver must be a function");this.state=u,this.queue=[],this.outcome=void 0,g!==n&&p(this,g)}function l(g,b,w){this.promise=g,typeof b=="function"&&(this.onFulfilled=b,this.callFulfilled=this.otherCallFulfilled),typeof w=="function"&&(this.onRejected=w,this.callRejected=this.otherCallRejected)}function c(g,b,w){i(function(){var D;try{D=b(w)}catch(_){return r.reject(g,_)}D===g?r.reject(g,new TypeError("Cannot resolve promise with itself")):r.resolve(g,D)})}function A(g){var b=g&&g.then;if(g&&(typeof g=="object"||typeof g=="function")&&typeof b=="function")return function(){b.apply(g,arguments)}}function p(g,b){var w=!1;function D(R){w||(w=!0,r.reject(g,R))}function _(R){w||(w=!0,r.resolve(g,R))}var Z=m(function(){b(_,D)});Z.status==="error"&&D(Z.value)}function m(g,b){var w={};try{w.value=g(b),w.status="success"}catch(D){w.status="error",w.value=D}return w}(e.exports=h).prototype.finally=function(g){if(typeof g!="function")return this;var b=this.constructor;return this.then(function(w){return b.resolve(g()).then(function(){return w})},function(w){return b.resolve(g()).then(function(){throw w})})},h.prototype.catch=function(g){return this.then(null,g)},h.prototype.then=function(g,b){if(typeof g!="function"&&this.state===o||typeof b!="function"&&this.state===a)return this;var w=new this.constructor(n);return this.state!==u?c(w,this.state===o?g:b,this.outcome):this.queue.push(new l(w,g,b)),w},l.prototype.callFulfilled=function(g){r.resolve(this.promise,g)},l.prototype.otherCallFulfilled=function(g){c(this.promise,this.onFulfilled,g)},l.prototype.callRejected=function(g){r.reject(this.promise,g)},l.prototype.otherCallRejected=function(g){c(this.promise,this.onRejected,g)},r.resolve=function(g,b){var w=m(A,b);if(w.status==="error")return r.reject(g,w.value);var D=w.value;if(D)p(g,D);else{g.state=o,g.outcome=b;for(var _=-1,Z=g.queue.length;++_<Z;)g.queue[_].callFulfilled(b)}return g},r.reject=function(g,b){g.state=a,g.outcome=b;for(var w=-1,D=g.queue.length;++w<D;)g.queue[w].callRejected(b);return g},h.resolve=function(g){return g instanceof this?g:r.resolve(new this(n),g)},h.reject=function(g){var b=new this(n);return r.reject(b,g)},h.all=function(g){var b=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,D=!1;if(!w)return this.resolve([]);for(var _=new Array(w),Z=0,R=-1,O=new this(n);++R<w;)F(g[R],R);return O;function F(j,Q){b.resolve(j).then(function(v){_[Q]=v,++Z!==w||D||(D=!0,r.resolve(O,_))},function(v){D||(D=!0,r.reject(O,v))})}},h.race=function(g){var b=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,D=!1;if(!w)return this.resolve([]);for(var _=-1,Z=new this(n);++_<w;)R=g[_],b.resolve(R).then(function(O){D||(D=!0,r.resolve(Z,O))},function(O){D||(D=!0,r.reject(Z,O))});var R;return Z}},{immediate:36}],38:[function(s,e,t){"use strict";var i={};(0,s("./lib/utils/common").assign)(i,s("./lib/deflate"),s("./lib/inflate"),s("./lib/zlib/constants")),e.exports=i},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(s,e,t){"use strict";var i=s("./zlib/deflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/messages"),o=s("./zlib/zstream"),u=Object.prototype.toString,h=0,l=-1,c=0,A=8;function p(g){if(!(this instanceof p))return new p(g);this.options=n.assign({level:l,method:A,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:""},g||{});var b=this.options;b.raw&&0<b.windowBits?b.windowBits=-b.windowBits:b.gzip&&0<b.windowBits&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var w=i.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(w!==h)throw new Error(a[w]);if(b.header&&i.deflateSetHeader(this.strm,b.header),b.dictionary){var D;if(D=typeof b.dictionary=="string"?r.string2buf(b.dictionary):u.call(b.dictionary)==="[object ArrayBuffer]"?new Uint8Array(b.dictionary):b.dictionary,(w=i.deflateSetDictionary(this.strm,D))!==h)throw new Error(a[w]);this._dict_set=!0}}function m(g,b){var w=new p(b);if(w.push(g,!0),w.err)throw w.msg||a[w.err];return w.result}p.prototype.push=function(g,b){var w,D,_=this.strm,Z=this.options.chunkSize;if(this.ended)return!1;D=b===~~b?b:b===!0?4:0,typeof g=="string"?_.input=r.string2buf(g):u.call(g)==="[object ArrayBuffer]"?_.input=new Uint8Array(g):_.input=g,_.next_in=0,_.avail_in=_.input.length;do{if(_.avail_out===0&&(_.output=new n.Buf8(Z),_.next_out=0,_.avail_out=Z),(w=i.deflate(_,D))!==1&&w!==h)return this.onEnd(w),!(this.ended=!0);_.avail_out!==0&&(_.avail_in!==0||D!==4&&D!==2)||(this.options.to==="string"?this.onData(r.buf2binstring(n.shrinkBuf(_.output,_.next_out))):this.onData(n.shrinkBuf(_.output,_.next_out)))}while((0<_.avail_in||_.avail_out===0)&&w!==1);return D===4?(w=i.deflateEnd(this.strm),this.onEnd(w),this.ended=!0,w===h):D!==2||(this.onEnd(h),!(_.avail_out=0))},p.prototype.onData=function(g){this.chunks.push(g)},p.prototype.onEnd=function(g){g===h&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=g,this.msg=this.strm.msg},t.Deflate=p,t.deflate=m,t.deflateRaw=function(g,b){return(b=b||{}).raw=!0,m(g,b)},t.gzip=function(g,b){return(b=b||{}).gzip=!0,m(g,b)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(s,e,t){"use strict";var i=s("./zlib/inflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/constants"),o=s("./zlib/messages"),u=s("./zlib/zstream"),h=s("./zlib/gzheader"),l=Object.prototype.toString;function c(p){if(!(this instanceof c))return new c(p);this.options=n.assign({chunkSize:16384,windowBits:0,to:""},p||{});var m=this.options;m.raw&&0<=m.windowBits&&m.windowBits<16&&(m.windowBits=-m.windowBits,m.windowBits===0&&(m.windowBits=-15)),!(0<=m.windowBits&&m.windowBits<16)||p&&p.windowBits||(m.windowBits+=32),15<m.windowBits&&m.windowBits<48&&!(15&m.windowBits)&&(m.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new u,this.strm.avail_out=0;var g=i.inflateInit2(this.strm,m.windowBits);if(g!==a.Z_OK)throw new Error(o[g]);this.header=new h,i.inflateGetHeader(this.strm,this.header)}function A(p,m){var g=new c(m);if(g.push(p,!0),g.err)throw g.msg||o[g.err];return g.result}c.prototype.push=function(p,m){var g,b,w,D,_,Z,R=this.strm,O=this.options.chunkSize,F=this.options.dictionary,j=!1;if(this.ended)return!1;b=m===~~m?m:m===!0?a.Z_FINISH:a.Z_NO_FLUSH,typeof p=="string"?R.input=r.binstring2buf(p):l.call(p)==="[object ArrayBuffer]"?R.input=new Uint8Array(p):R.input=p,R.next_in=0,R.avail_in=R.input.length;do{if(R.avail_out===0&&(R.output=new n.Buf8(O),R.next_out=0,R.avail_out=O),(g=i.inflate(R,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&F&&(Z=typeof F=="string"?r.string2buf(F):l.call(F)==="[object ArrayBuffer]"?new Uint8Array(F):F,g=i.inflateSetDictionary(this.strm,Z)),g===a.Z_BUF_ERROR&&j===!0&&(g=a.Z_OK,j=!1),g!==a.Z_STREAM_END&&g!==a.Z_OK)return this.onEnd(g),!(this.ended=!0);R.next_out&&(R.avail_out!==0&&g!==a.Z_STREAM_END&&(R.avail_in!==0||b!==a.Z_FINISH&&b!==a.Z_SYNC_FLUSH)||(this.options.to==="string"?(w=r.utf8border(R.output,R.next_out),D=R.next_out-w,_=r.buf2string(R.output,w),R.next_out=D,R.avail_out=O-D,D&&n.arraySet(R.output,R.output,w,D,0),this.onData(_)):this.onData(n.shrinkBuf(R.output,R.next_out)))),R.avail_in===0&&R.avail_out===0&&(j=!0)}while((0<R.avail_in||R.avail_out===0)&&g!==a.Z_STREAM_END);return g===a.Z_STREAM_END&&(b=a.Z_FINISH),b===a.Z_FINISH?(g=i.inflateEnd(this.strm),this.onEnd(g),this.ended=!0,g===a.Z_OK):b!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),!(R.avail_out=0))},c.prototype.onData=function(p){this.chunks.push(p)},c.prototype.onEnd=function(p){p===a.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=p,this.msg=this.strm.msg},t.Inflate=c,t.inflate=A,t.inflateRaw=function(p,m){return(m=m||{}).raw=!0,A(p,m)},t.ungzip=A},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";t.assign=function(a){for(var o=Array.prototype.slice.call(arguments,1);o.length;){var u=o.shift();if(u){if(typeof u!="object")throw new TypeError(u+"must be non-object");for(var h in u)u.hasOwnProperty(h)&&(a[h]=u[h])}}return a},t.shrinkBuf=function(a,o){return a.length===o?a:a.subarray?a.subarray(0,o):(a.length=o,a)};var n={arraySet:function(a,o,u,h,l){if(o.subarray&&a.subarray)a.set(o.subarray(u,u+h),l);else for(var c=0;c<h;c++)a[l+c]=o[u+c]},flattenChunks:function(a){var o,u,h,l,c,A;for(o=h=0,u=a.length;o<u;o++)h+=a[o].length;for(A=new Uint8Array(h),o=l=0,u=a.length;o<u;o++)c=a[o],A.set(c,l),l+=c.length;return A}},r={arraySet:function(a,o,u,h,l){for(var c=0;c<h;c++)a[l+c]=o[u+c]},flattenChunks:function(a){return[].concat.apply([],a)}};t.setTyped=function(a){a?(t.Buf8=Uint8Array,t.Buf16=Uint16Array,t.Buf32=Int32Array,t.assign(t,n)):(t.Buf8=Array,t.Buf16=Array,t.Buf32=Array,t.assign(t,r))},t.setTyped(i)},{}],42:[function(s,e,t){"use strict";var i=s("./common"),n=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{r=!1}for(var a=new i.Buf8(256),o=0;o<256;o++)a[o]=252<=o?6:248<=o?5:240<=o?4:224<=o?3:192<=o?2:1;function u(h,l){if(l<65537&&(h.subarray&&r||!h.subarray&&n))return String.fromCharCode.apply(null,i.shrinkBuf(h,l));for(var c="",A=0;A<l;A++)c+=String.fromCharCode(h[A]);return c}a[254]=a[254]=1,t.string2buf=function(h){var l,c,A,p,m,g=h.length,b=0;for(p=0;p<g;p++)(64512&(c=h.charCodeAt(p)))==55296&&p+1<g&&(64512&(A=h.charCodeAt(p+1)))==56320&&(c=65536+(c-55296<<10)+(A-56320),p++),b+=c<128?1:c<2048?2:c<65536?3:4;for(l=new i.Buf8(b),p=m=0;m<b;p++)(64512&(c=h.charCodeAt(p)))==55296&&p+1<g&&(64512&(A=h.charCodeAt(p+1)))==56320&&(c=65536+(c-55296<<10)+(A-56320),p++),c<128?l[m++]=c:(c<2048?l[m++]=192|c>>>6:(c<65536?l[m++]=224|c>>>12:(l[m++]=240|c>>>18,l[m++]=128|c>>>12&63),l[m++]=128|c>>>6&63),l[m++]=128|63&c);return l},t.buf2binstring=function(h){return u(h,h.length)},t.binstring2buf=function(h){for(var l=new i.Buf8(h.length),c=0,A=l.length;c<A;c++)l[c]=h.charCodeAt(c);return l},t.buf2string=function(h,l){var c,A,p,m,g=l||h.length,b=new Array(2*g);for(c=A=0;c<g;)if((p=h[c++])<128)b[A++]=p;else if(4<(m=a[p]))b[A++]=65533,c+=m-1;else{for(p&=m===2?31:m===3?15:7;1<m&&c<g;)p=p<<6|63&h[c++],m--;1<m?b[A++]=65533:p<65536?b[A++]=p:(p-=65536,b[A++]=55296|p>>10&1023,b[A++]=56320|1023&p)}return u(b,A)},t.utf8border=function(h,l){var c;for((l=l||h.length)>h.length&&(l=h.length),c=l-1;0<=c&&(192&h[c])==128;)c--;return c<0||c===0?l:c+a[h[c]]>l?c:l}},{"./common":41}],43:[function(s,e,t){"use strict";e.exports=function(i,n,r,a){for(var o=65535&i|0,u=i>>>16&65535|0,h=0;r!==0;){for(r-=h=2e3<r?2e3:r;u=u+(o=o+n[a++]|0)|0,--h;);o%=65521,u%=65521}return o|u<<16|0}},{}],44:[function(s,e,t){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(s,e,t){"use strict";var i=function(){for(var n,r=[],a=0;a<256;a++){n=a;for(var o=0;o<8;o++)n=1&n?3988292384^n>>>1:n>>>1;r[a]=n}return r}();e.exports=function(n,r,a,o){var u=i,h=o+a;n^=-1;for(var l=o;l<h;l++)n=n>>>8^u[255&(n^r[l])];return-1^n}},{}],46:[function(s,e,t){"use strict";var i,n=s("../utils/common"),r=s("./trees"),a=s("./adler32"),o=s("./crc32"),u=s("./messages"),h=0,l=4,c=0,A=-2,p=-1,m=4,g=2,b=8,w=9,D=286,_=30,Z=19,R=2*D+1,O=15,F=3,j=258,Q=j+F+1,v=42,z=113,f=1,I=2,q=3,T=4;function Y(d,U){return d.msg=u[U],U}function E(d){return(d<<1)-(4<d?9:0)}function G(d){for(var U=d.length;0<=--U;)d[U]=0}function B(d){var U=d.state,P=U.pending;P>d.avail_out&&(P=d.avail_out),P!==0&&(n.arraySet(d.output,U.pending_buf,U.pending_out,P,d.next_out),d.next_out+=P,U.pending_out+=P,d.total_out+=P,d.avail_out-=P,U.pending-=P,U.pending===0&&(U.pending_out=0))}function k(d,U){r._tr_flush_block(d,0<=d.block_start?d.block_start:-1,d.strstart-d.block_start,U),d.block_start=d.strstart,B(d.strm)}function N(d,U){d.pending_buf[d.pending++]=U}function W(d,U){d.pending_buf[d.pending++]=U>>>8&255,d.pending_buf[d.pending++]=255&U}function V(d,U){var P,y,x=d.max_chain_length,C=d.strstart,L=d.prev_length,M=d.nice_match,S=d.strstart>d.w_size-Q?d.strstart-(d.w_size-Q):0,H=d.window,K=d.w_mask,J=d.prev,te=d.strstart+j,ce=H[C+L-1],ae=H[C+L];d.prev_length>=d.good_match&&(x>>=2),M>d.lookahead&&(M=d.lookahead);do if(H[(P=U)+L]===ae&&H[P+L-1]===ce&&H[P]===H[C]&&H[++P]===H[C+1]){C+=2,P++;do;while(H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&C<te);if(y=j-(te-C),C=te-j,L<y){if(d.match_start=U,M<=(L=y))break;ce=H[C+L-1],ae=H[C+L]}}while((U=J[U&K])>S&&--x!=0);return L<=d.lookahead?L:d.lookahead}function X(d){var U,P,y,x,C,L,M,S,H,K,J=d.w_size;do{if(x=d.window_size-d.lookahead-d.strstart,d.strstart>=J+(J-Q)){for(n.arraySet(d.window,d.window,J,J,0),d.match_start-=J,d.strstart-=J,d.block_start-=J,U=P=d.hash_size;y=d.head[--U],d.head[U]=J<=y?y-J:0,--P;);for(U=P=J;y=d.prev[--U],d.prev[U]=J<=y?y-J:0,--P;);x+=J}if(d.strm.avail_in===0)break;if(L=d.strm,M=d.window,S=d.strstart+d.lookahead,H=x,K=void 0,K=L.avail_in,H<K&&(K=H),P=K===0?0:(L.avail_in-=K,n.arraySet(M,L.input,L.next_in,K,S),L.state.wrap===1?L.adler=a(L.adler,M,K,S):L.state.wrap===2&&(L.adler=o(L.adler,M,K,S)),L.next_in+=K,L.total_in+=K,K),d.lookahead+=P,d.lookahead+d.insert>=F)for(C=d.strstart-d.insert,d.ins_h=d.window[C],d.ins_h=(d.ins_h<<d.hash_shift^d.window[C+1])&d.hash_mask;d.insert&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[C+F-1])&d.hash_mask,d.prev[C&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=C,C++,d.insert--,!(d.lookahead+d.insert<F)););}while(d.lookahead<Q&&d.strm.avail_in!==0)}function $(d,U){for(var P,y;;){if(d.lookahead<Q){if(X(d),d.lookahead<Q&&U===h)return f;if(d.lookahead===0)break}if(P=0,d.lookahead>=F&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),P!==0&&d.strstart-P<=d.w_size-Q&&(d.match_length=V(d,P)),d.match_length>=F)if(y=r._tr_tally(d,d.strstart-d.match_start,d.match_length-F),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=F){for(d.match_length--;d.strstart++,d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart,--d.match_length!=0;);d.strstart++}else d.strstart+=d.match_length,d.match_length=0,d.ins_h=d.window[d.strstart],d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+1])&d.hash_mask;else y=r._tr_tally(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++;if(y&&(k(d,!1),d.strm.avail_out===0))return f}return d.insert=d.strstart<F-1?d.strstart:F-1,U===l?(k(d,!0),d.strm.avail_out===0?q:T):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?f:I}function ee(d,U){for(var P,y,x;;){if(d.lookahead<Q){if(X(d),d.lookahead<Q&&U===h)return f;if(d.lookahead===0)break}if(P=0,d.lookahead>=F&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),d.prev_length=d.match_length,d.prev_match=d.match_start,d.match_length=F-1,P!==0&&d.prev_length<d.max_lazy_match&&d.strstart-P<=d.w_size-Q&&(d.match_length=V(d,P),d.match_length<=5&&(d.strategy===1||d.match_length===F&&4096<d.strstart-d.match_start)&&(d.match_length=F-1)),d.prev_length>=F&&d.match_length<=d.prev_length){for(x=d.strstart+d.lookahead-F,y=r._tr_tally(d,d.strstart-1-d.prev_match,d.prev_length-F),d.lookahead-=d.prev_length-1,d.prev_length-=2;++d.strstart<=x&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),--d.prev_length!=0;);if(d.match_available=0,d.match_length=F-1,d.strstart++,y&&(k(d,!1),d.strm.avail_out===0))return f}else if(d.match_available){if((y=r._tr_tally(d,0,d.window[d.strstart-1]))&&k(d,!1),d.strstart++,d.lookahead--,d.strm.avail_out===0)return f}else d.match_available=1,d.strstart++,d.lookahead--}return d.match_available&&(y=r._tr_tally(d,0,d.window[d.strstart-1]),d.match_available=0),d.insert=d.strstart<F-1?d.strstart:F-1,U===l?(k(d,!0),d.strm.avail_out===0?q:T):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?f:I}function re(d,U,P,y,x){this.good_length=d,this.max_lazy=U,this.nice_length=P,this.max_chain=y,this.func=x}function se(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=b,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(2*R),this.dyn_dtree=new n.Buf16(2*(2*_+1)),this.bl_tree=new n.Buf16(2*(2*Z+1)),G(this.dyn_ltree),G(this.dyn_dtree),G(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(O+1),this.heap=new n.Buf16(2*D+1),G(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(2*D+1),G(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function ne(d){var U;return d&&d.state?(d.total_in=d.total_out=0,d.data_type=g,(U=d.state).pending=0,U.pending_out=0,U.wrap<0&&(U.wrap=-U.wrap),U.status=U.wrap?v:z,d.adler=U.wrap===2?0:1,U.last_flush=h,r._tr_init(U),c):Y(d,A)}function he(d){var U=ne(d);return U===c&&function(P){P.window_size=2*P.w_size,G(P.head),P.max_lazy_match=i[P.level].max_lazy,P.good_match=i[P.level].good_length,P.nice_match=i[P.level].nice_length,P.max_chain_length=i[P.level].max_chain,P.strstart=0,P.block_start=0,P.lookahead=0,P.insert=0,P.match_length=P.prev_length=F-1,P.match_available=0,P.ins_h=0}(d.state),U}function de(d,U,P,y,x,C){if(!d)return A;var L=1;if(U===p&&(U=6),y<0?(L=0,y=-y):15<y&&(L=2,y-=16),x<1||w<x||P!==b||y<8||15<y||U<0||9<U||C<0||m<C)return Y(d,A);y===8&&(y=9);var M=new se;return(d.state=M).strm=d,M.wrap=L,M.gzhead=null,M.w_bits=y,M.w_size=1<<M.w_bits,M.w_mask=M.w_size-1,M.hash_bits=x+7,M.hash_size=1<<M.hash_bits,M.hash_mask=M.hash_size-1,M.hash_shift=~~((M.hash_bits+F-1)/F),M.window=new n.Buf8(2*M.w_size),M.head=new n.Buf16(M.hash_size),M.prev=new n.Buf16(M.w_size),M.lit_bufsize=1<<x+6,M.pending_buf_size=4*M.lit_bufsize,M.pending_buf=new n.Buf8(M.pending_buf_size),M.d_buf=1*M.lit_bufsize,M.l_buf=3*M.lit_bufsize,M.level=U,M.strategy=C,M.method=P,he(d)}i=[new re(0,0,0,0,function(d,U){var P=65535;for(P>d.pending_buf_size-5&&(P=d.pending_buf_size-5);;){if(d.lookahead<=1){if(X(d),d.lookahead===0&&U===h)return f;if(d.lookahead===0)break}d.strstart+=d.lookahead,d.lookahead=0;var y=d.block_start+P;if((d.strstart===0||d.strstart>=y)&&(d.lookahead=d.strstart-y,d.strstart=y,k(d,!1),d.strm.avail_out===0)||d.strstart-d.block_start>=d.w_size-Q&&(k(d,!1),d.strm.avail_out===0))return f}return d.insert=0,U===l?(k(d,!0),d.strm.avail_out===0?q:T):(d.strstart>d.block_start&&(k(d,!1),d.strm.avail_out),f)}),new re(4,4,8,4,$),new re(4,5,16,8,$),new re(4,6,32,32,$),new re(4,4,16,16,ee),new re(8,16,32,32,ee),new re(8,16,128,128,ee),new re(8,32,128,256,ee),new re(32,128,258,1024,ee),new re(32,258,258,4096,ee)],t.deflateInit=function(d,U){return de(d,U,b,15,8,0)},t.deflateInit2=de,t.deflateReset=he,t.deflateResetKeep=ne,t.deflateSetHeader=function(d,U){return d&&d.state?d.state.wrap!==2?A:(d.state.gzhead=U,c):A},t.deflate=function(d,U){var P,y,x,C;if(!d||!d.state||5<U||U<0)return d?Y(d,A):A;if(y=d.state,!d.output||!d.input&&d.avail_in!==0||y.status===666&&U!==l)return Y(d,d.avail_out===0?-5:A);if(y.strm=d,P=y.last_flush,y.last_flush=U,y.status===v)if(y.wrap===2)d.adler=0,N(y,31),N(y,139),N(y,8),y.gzhead?(N(y,(y.gzhead.text?1:0)+(y.gzhead.hcrc?2:0)+(y.gzhead.extra?4:0)+(y.gzhead.name?8:0)+(y.gzhead.comment?16:0)),N(y,255&y.gzhead.time),N(y,y.gzhead.time>>8&255),N(y,y.gzhead.time>>16&255),N(y,y.gzhead.time>>24&255),N(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),N(y,255&y.gzhead.os),y.gzhead.extra&&y.gzhead.extra.length&&(N(y,255&y.gzhead.extra.length),N(y,y.gzhead.extra.length>>8&255)),y.gzhead.hcrc&&(d.adler=o(d.adler,y.pending_buf,y.pending,0)),y.gzindex=0,y.status=69):(N(y,0),N(y,0),N(y,0),N(y,0),N(y,0),N(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),N(y,3),y.status=z);else{var L=b+(y.w_bits-8<<4)<<8;L|=(2<=y.strategy||y.level<2?0:y.level<6?1:y.level===6?2:3)<<6,y.strstart!==0&&(L|=32),L+=31-L%31,y.status=z,W(y,L),y.strstart!==0&&(W(y,d.adler>>>16),W(y,65535&d.adler)),d.adler=1}if(y.status===69)if(y.gzhead.extra){for(x=y.pending;y.gzindex<(65535&y.gzhead.extra.length)&&(y.pending!==y.pending_buf_size||(y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),B(d),x=y.pending,y.pending!==y.pending_buf_size));)N(y,255&y.gzhead.extra[y.gzindex]),y.gzindex++;y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),y.gzindex===y.gzhead.extra.length&&(y.gzindex=0,y.status=73)}else y.status=73;if(y.status===73)if(y.gzhead.name){x=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),B(d),x=y.pending,y.pending===y.pending_buf_size)){C=1;break}C=y.gzindex<y.gzhead.name.length?255&y.gzhead.name.charCodeAt(y.gzindex++):0,N(y,C)}while(C!==0);y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),C===0&&(y.gzindex=0,y.status=91)}else y.status=91;if(y.status===91)if(y.gzhead.comment){x=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),B(d),x=y.pending,y.pending===y.pending_buf_size)){C=1;break}C=y.gzindex<y.gzhead.comment.length?255&y.gzhead.comment.charCodeAt(y.gzindex++):0,N(y,C)}while(C!==0);y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),C===0&&(y.status=103)}else y.status=103;if(y.status===103&&(y.gzhead.hcrc?(y.pending+2>y.pending_buf_size&&B(d),y.pending+2<=y.pending_buf_size&&(N(y,255&d.adler),N(y,d.adler>>8&255),d.adler=0,y.status=z)):y.status=z),y.pending!==0){if(B(d),d.avail_out===0)return y.last_flush=-1,c}else if(d.avail_in===0&&E(U)<=E(P)&&U!==l)return Y(d,-5);if(y.status===666&&d.avail_in!==0)return Y(d,-5);if(d.avail_in!==0||y.lookahead!==0||U!==h&&y.status!==666){var M=y.strategy===2?function(S,H){for(var K;;){if(S.lookahead===0&&(X(S),S.lookahead===0)){if(H===h)return f;break}if(S.match_length=0,K=r._tr_tally(S,0,S.window[S.strstart]),S.lookahead--,S.strstart++,K&&(k(S,!1),S.strm.avail_out===0))return f}return S.insert=0,H===l?(k(S,!0),S.strm.avail_out===0?q:T):S.last_lit&&(k(S,!1),S.strm.avail_out===0)?f:I}(y,U):y.strategy===3?function(S,H){for(var K,J,te,ce,ae=S.window;;){if(S.lookahead<=j){if(X(S),S.lookahead<=j&&H===h)return f;if(S.lookahead===0)break}if(S.match_length=0,S.lookahead>=F&&0<S.strstart&&(J=ae[te=S.strstart-1])===ae[++te]&&J===ae[++te]&&J===ae[++te]){ce=S.strstart+j;do;while(J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&te<ce);S.match_length=j-(ce-te),S.match_length>S.lookahead&&(S.match_length=S.lookahead)}if(S.match_length>=F?(K=r._tr_tally(S,1,S.match_length-F),S.lookahead-=S.match_length,S.strstart+=S.match_length,S.match_length=0):(K=r._tr_tally(S,0,S.window[S.strstart]),S.lookahead--,S.strstart++),K&&(k(S,!1),S.strm.avail_out===0))return f}return S.insert=0,H===l?(k(S,!0),S.strm.avail_out===0?q:T):S.last_lit&&(k(S,!1),S.strm.avail_out===0)?f:I}(y,U):i[y.level].func(y,U);if(M!==q&&M!==T||(y.status=666),M===f||M===q)return d.avail_out===0&&(y.last_flush=-1),c;if(M===I&&(U===1?r._tr_align(y):U!==5&&(r._tr_stored_block(y,0,0,!1),U===3&&(G(y.head),y.lookahead===0&&(y.strstart=0,y.block_start=0,y.insert=0))),B(d),d.avail_out===0))return y.last_flush=-1,c}return U!==l?c:y.wrap<=0?1:(y.wrap===2?(N(y,255&d.adler),N(y,d.adler>>8&255),N(y,d.adler>>16&255),N(y,d.adler>>24&255),N(y,255&d.total_in),N(y,d.total_in>>8&255),N(y,d.total_in>>16&255),N(y,d.total_in>>24&255)):(W(y,d.adler>>>16),W(y,65535&d.adler)),B(d),0<y.wrap&&(y.wrap=-y.wrap),y.pending!==0?c:1)},t.deflateEnd=function(d){var U;return d&&d.state?(U=d.state.status)!==v&&U!==69&&U!==73&&U!==91&&U!==103&&U!==z&&U!==666?Y(d,A):(d.state=null,U===z?Y(d,-3):c):A},t.deflateSetDictionary=function(d,U){var P,y,x,C,L,M,S,H,K=U.length;if(!d||!d.state||(C=(P=d.state).wrap)===2||C===1&&P.status!==v||P.lookahead)return A;for(C===1&&(d.adler=a(d.adler,U,K,0)),P.wrap=0,K>=P.w_size&&(C===0&&(G(P.head),P.strstart=0,P.block_start=0,P.insert=0),H=new n.Buf8(P.w_size),n.arraySet(H,U,K-P.w_size,P.w_size,0),U=H,K=P.w_size),L=d.avail_in,M=d.next_in,S=d.input,d.avail_in=K,d.next_in=0,d.input=U,X(P);P.lookahead>=F;){for(y=P.strstart,x=P.lookahead-(F-1);P.ins_h=(P.ins_h<<P.hash_shift^P.window[y+F-1])&P.hash_mask,P.prev[y&P.w_mask]=P.head[P.ins_h],P.head[P.ins_h]=y,y++,--x;);P.strstart=y,P.lookahead=F-1,X(P)}return P.strstart+=P.lookahead,P.block_start=P.strstart,P.insert=P.lookahead,P.lookahead=0,P.match_length=P.prev_length=F-1,P.match_available=0,d.next_in=M,d.input=S,d.avail_in=L,P.wrap=C,c},t.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(s,e,t){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(s,e,t){"use strict";e.exports=function(i,n){var r,a,o,u,h,l,c,A,p,m,g,b,w,D,_,Z,R,O,F,j,Q,v,z,f,I;r=i.state,a=i.next_in,f=i.input,o=a+(i.avail_in-5),u=i.next_out,I=i.output,h=u-(n-i.avail_out),l=u+(i.avail_out-257),c=r.dmax,A=r.wsize,p=r.whave,m=r.wnext,g=r.window,b=r.hold,w=r.bits,D=r.lencode,_=r.distcode,Z=(1<<r.lenbits)-1,R=(1<<r.distbits)-1;e:do{w<15&&(b+=f[a++]<<w,w+=8,b+=f[a++]<<w,w+=8),O=D[b&Z];t:for(;;){if(b>>>=F=O>>>24,w-=F,(F=O>>>16&255)===0)I[u++]=65535&O;else{if(!(16&F)){if(!(64&F)){O=D[(65535&O)+(b&(1<<F)-1)];continue t}if(32&F){r.mode=12;break e}i.msg="invalid literal/length code",r.mode=30;break e}j=65535&O,(F&=15)&&(w<F&&(b+=f[a++]<<w,w+=8),j+=b&(1<<F)-1,b>>>=F,w-=F),w<15&&(b+=f[a++]<<w,w+=8,b+=f[a++]<<w,w+=8),O=_[b&R];r:for(;;){if(b>>>=F=O>>>24,w-=F,!(16&(F=O>>>16&255))){if(!(64&F)){O=_[(65535&O)+(b&(1<<F)-1)];continue r}i.msg="invalid distance code",r.mode=30;break e}if(Q=65535&O,w<(F&=15)&&(b+=f[a++]<<w,(w+=8)<F&&(b+=f[a++]<<w,w+=8)),c<(Q+=b&(1<<F)-1)){i.msg="invalid distance too far back",r.mode=30;break e}if(b>>>=F,w-=F,(F=u-h)<Q){if(p<(F=Q-F)&&r.sane){i.msg="invalid distance too far back",r.mode=30;break e}if(z=g,(v=0)===m){if(v+=A-F,F<j){for(j-=F;I[u++]=g[v++],--F;);v=u-Q,z=I}}else if(m<F){if(v+=A+m-F,(F-=m)<j){for(j-=F;I[u++]=g[v++],--F;);if(v=0,m<j){for(j-=F=m;I[u++]=g[v++],--F;);v=u-Q,z=I}}}else if(v+=m-F,F<j){for(j-=F;I[u++]=g[v++],--F;);v=u-Q,z=I}for(;2<j;)I[u++]=z[v++],I[u++]=z[v++],I[u++]=z[v++],j-=3;j&&(I[u++]=z[v++],1<j&&(I[u++]=z[v++]))}else{for(v=u-Q;I[u++]=I[v++],I[u++]=I[v++],I[u++]=I[v++],2<(j-=3););j&&(I[u++]=I[v++],1<j&&(I[u++]=I[v++]))}break}}break}}while(a<o&&u<l);a-=j=w>>3,b&=(1<<(w-=j<<3))-1,i.next_in=a,i.next_out=u,i.avail_in=a<o?o-a+5:5-(a-o),i.avail_out=u<l?l-u+257:257-(u-l),r.hold=b,r.bits=w}},{}],49:[function(s,e,t){"use strict";var i=s("../utils/common"),n=s("./adler32"),r=s("./crc32"),a=s("./inffast"),o=s("./inftrees"),u=1,h=2,l=0,c=-2,A=1,p=852,m=592;function g(v){return(v>>>24&255)+(v>>>8&65280)+((65280&v)<<8)+((255&v)<<24)}function b(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function w(v){var z;return v&&v.state?(z=v.state,v.total_in=v.total_out=z.total=0,v.msg="",z.wrap&&(v.adler=1&z.wrap),z.mode=A,z.last=0,z.havedict=0,z.dmax=32768,z.head=null,z.hold=0,z.bits=0,z.lencode=z.lendyn=new i.Buf32(p),z.distcode=z.distdyn=new i.Buf32(m),z.sane=1,z.back=-1,l):c}function D(v){var z;return v&&v.state?((z=v.state).wsize=0,z.whave=0,z.wnext=0,w(v)):c}function _(v,z){var f,I;return v&&v.state?(I=v.state,z<0?(f=0,z=-z):(f=1+(z>>4),z<48&&(z&=15)),z&&(z<8||15<z)?c:(I.window!==null&&I.wbits!==z&&(I.window=null),I.wrap=f,I.wbits=z,D(v))):c}function Z(v,z){var f,I;return v?(I=new b,(v.state=I).window=null,(f=_(v,z))!==l&&(v.state=null),f):c}var R,O,F=!0;function j(v){if(F){var z;for(R=new i.Buf32(512),O=new i.Buf32(32),z=0;z<144;)v.lens[z++]=8;for(;z<256;)v.lens[z++]=9;for(;z<280;)v.lens[z++]=7;for(;z<288;)v.lens[z++]=8;for(o(u,v.lens,0,288,R,0,v.work,{bits:9}),z=0;z<32;)v.lens[z++]=5;o(h,v.lens,0,32,O,0,v.work,{bits:5}),F=!1}v.lencode=R,v.lenbits=9,v.distcode=O,v.distbits=5}function Q(v,z,f,I){var q,T=v.state;return T.window===null&&(T.wsize=1<<T.wbits,T.wnext=0,T.whave=0,T.window=new i.Buf8(T.wsize)),I>=T.wsize?(i.arraySet(T.window,z,f-T.wsize,T.wsize,0),T.wnext=0,T.whave=T.wsize):(I<(q=T.wsize-T.wnext)&&(q=I),i.arraySet(T.window,z,f-I,q,T.wnext),(I-=q)?(i.arraySet(T.window,z,f-I,I,0),T.wnext=I,T.whave=T.wsize):(T.wnext+=q,T.wnext===T.wsize&&(T.wnext=0),T.whave<T.wsize&&(T.whave+=q))),0}t.inflateReset=D,t.inflateReset2=_,t.inflateResetKeep=w,t.inflateInit=function(v){return Z(v,15)},t.inflateInit2=Z,t.inflate=function(v,z){var f,I,q,T,Y,E,G,B,k,N,W,V,X,$,ee,re,se,ne,he,de,d,U,P,y,x=0,C=new i.Buf8(4),L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!v||!v.state||!v.output||!v.input&&v.avail_in!==0)return c;(f=v.state).mode===12&&(f.mode=13),Y=v.next_out,q=v.output,G=v.avail_out,T=v.next_in,I=v.input,E=v.avail_in,B=f.hold,k=f.bits,N=E,W=G,U=l;e:for(;;)switch(f.mode){case A:if(f.wrap===0){f.mode=13;break}for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(2&f.wrap&&B===35615){C[f.check=0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0),k=B=0,f.mode=2;break}if(f.flags=0,f.head&&(f.head.done=!1),!(1&f.wrap)||(((255&B)<<8)+(B>>8))%31){v.msg="incorrect header check",f.mode=30;break}if((15&B)!=8){v.msg="unknown compression method",f.mode=30;break}if(k-=4,d=8+(15&(B>>>=4)),f.wbits===0)f.wbits=d;else if(d>f.wbits){v.msg="invalid window size",f.mode=30;break}f.dmax=1<<d,v.adler=f.check=1,f.mode=512&B?10:12,k=B=0;break;case 2:for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(f.flags=B,(255&f.flags)!=8){v.msg="unknown compression method",f.mode=30;break}if(57344&f.flags){v.msg="unknown header flags set",f.mode=30;break}f.head&&(f.head.text=B>>8&1),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0)),k=B=0,f.mode=3;case 3:for(;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.head&&(f.head.time=B),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,C[2]=B>>>16&255,C[3]=B>>>24&255,f.check=r(f.check,C,4,0)),k=B=0,f.mode=4;case 4:for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.head&&(f.head.xflags=255&B,f.head.os=B>>8),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0)),k=B=0,f.mode=5;case 5:if(1024&f.flags){for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.length=B,f.head&&(f.head.extra_len=B),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0)),k=B=0}else f.head&&(f.head.extra=null);f.mode=6;case 6:if(1024&f.flags&&(E<(V=f.length)&&(V=E),V&&(f.head&&(d=f.head.extra_len-f.length,f.head.extra||(f.head.extra=new Array(f.head.extra_len)),i.arraySet(f.head.extra,I,T,V,d)),512&f.flags&&(f.check=r(f.check,I,V,T)),E-=V,T+=V,f.length-=V),f.length))break e;f.length=0,f.mode=7;case 7:if(2048&f.flags){if(E===0)break e;for(V=0;d=I[T+V++],f.head&&d&&f.length<65536&&(f.head.name+=String.fromCharCode(d)),d&&V<E;);if(512&f.flags&&(f.check=r(f.check,I,V,T)),E-=V,T+=V,d)break e}else f.head&&(f.head.name=null);f.length=0,f.mode=8;case 8:if(4096&f.flags){if(E===0)break e;for(V=0;d=I[T+V++],f.head&&d&&f.length<65536&&(f.head.comment+=String.fromCharCode(d)),d&&V<E;);if(512&f.flags&&(f.check=r(f.check,I,V,T)),E-=V,T+=V,d)break e}else f.head&&(f.head.comment=null);f.mode=9;case 9:if(512&f.flags){for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(B!==(65535&f.check)){v.msg="header crc mismatch",f.mode=30;break}k=B=0}f.head&&(f.head.hcrc=f.flags>>9&1,f.head.done=!0),v.adler=f.check=0,f.mode=12;break;case 10:for(;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}v.adler=f.check=g(B),k=B=0,f.mode=11;case 11:if(f.havedict===0)return v.next_out=Y,v.avail_out=G,v.next_in=T,v.avail_in=E,f.hold=B,f.bits=k,2;v.adler=f.check=1,f.mode=12;case 12:if(z===5||z===6)break e;case 13:if(f.last){B>>>=7&k,k-=7&k,f.mode=27;break}for(;k<3;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}switch(f.last=1&B,k-=1,3&(B>>>=1)){case 0:f.mode=14;break;case 1:if(j(f),f.mode=20,z!==6)break;B>>>=2,k-=2;break e;case 2:f.mode=17;break;case 3:v.msg="invalid block type",f.mode=30}B>>>=2,k-=2;break;case 14:for(B>>>=7&k,k-=7&k;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if((65535&B)!=(B>>>16^65535)){v.msg="invalid stored block lengths",f.mode=30;break}if(f.length=65535&B,k=B=0,f.mode=15,z===6)break e;case 15:f.mode=16;case 16:if(V=f.length){if(E<V&&(V=E),G<V&&(V=G),V===0)break e;i.arraySet(q,I,T,V,Y),E-=V,T+=V,G-=V,Y+=V,f.length-=V;break}f.mode=12;break;case 17:for(;k<14;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(f.nlen=257+(31&B),B>>>=5,k-=5,f.ndist=1+(31&B),B>>>=5,k-=5,f.ncode=4+(15&B),B>>>=4,k-=4,286<f.nlen||30<f.ndist){v.msg="too many length or distance symbols",f.mode=30;break}f.have=0,f.mode=18;case 18:for(;f.have<f.ncode;){for(;k<3;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.lens[L[f.have++]]=7&B,B>>>=3,k-=3}for(;f.have<19;)f.lens[L[f.have++]]=0;if(f.lencode=f.lendyn,f.lenbits=7,P={bits:f.lenbits},U=o(0,f.lens,0,19,f.lencode,0,f.work,P),f.lenbits=P.bits,U){v.msg="invalid code lengths set",f.mode=30;break}f.have=0,f.mode=19;case 19:for(;f.have<f.nlen+f.ndist;){for(;re=(x=f.lencode[B&(1<<f.lenbits)-1])>>>16&255,se=65535&x,!((ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(se<16)B>>>=ee,k-=ee,f.lens[f.have++]=se;else{if(se===16){for(y=ee+2;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(B>>>=ee,k-=ee,f.have===0){v.msg="invalid bit length repeat",f.mode=30;break}d=f.lens[f.have-1],V=3+(3&B),B>>>=2,k-=2}else if(se===17){for(y=ee+3;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}k-=ee,d=0,V=3+(7&(B>>>=ee)),B>>>=3,k-=3}else{for(y=ee+7;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}k-=ee,d=0,V=11+(127&(B>>>=ee)),B>>>=7,k-=7}if(f.have+V>f.nlen+f.ndist){v.msg="invalid bit length repeat",f.mode=30;break}for(;V--;)f.lens[f.have++]=d}}if(f.mode===30)break;if(f.lens[256]===0){v.msg="invalid code -- missing end-of-block",f.mode=30;break}if(f.lenbits=9,P={bits:f.lenbits},U=o(u,f.lens,0,f.nlen,f.lencode,0,f.work,P),f.lenbits=P.bits,U){v.msg="invalid literal/lengths set",f.mode=30;break}if(f.distbits=6,f.distcode=f.distdyn,P={bits:f.distbits},U=o(h,f.lens,f.nlen,f.ndist,f.distcode,0,f.work,P),f.distbits=P.bits,U){v.msg="invalid distances set",f.mode=30;break}if(f.mode=20,z===6)break e;case 20:f.mode=21;case 21:if(6<=E&&258<=G){v.next_out=Y,v.avail_out=G,v.next_in=T,v.avail_in=E,f.hold=B,f.bits=k,a(v,W),Y=v.next_out,q=v.output,G=v.avail_out,T=v.next_in,I=v.input,E=v.avail_in,B=f.hold,k=f.bits,f.mode===12&&(f.back=-1);break}for(f.back=0;re=(x=f.lencode[B&(1<<f.lenbits)-1])>>>16&255,se=65535&x,!((ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(re&&!(240&re)){for(ne=ee,he=re,de=se;re=(x=f.lencode[de+((B&(1<<ne+he)-1)>>ne)])>>>16&255,se=65535&x,!(ne+(ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}B>>>=ne,k-=ne,f.back+=ne}if(B>>>=ee,k-=ee,f.back+=ee,f.length=se,re===0){f.mode=26;break}if(32&re){f.back=-1,f.mode=12;break}if(64&re){v.msg="invalid literal/length code",f.mode=30;break}f.extra=15&re,f.mode=22;case 22:if(f.extra){for(y=f.extra;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.length+=B&(1<<f.extra)-1,B>>>=f.extra,k-=f.extra,f.back+=f.extra}f.was=f.length,f.mode=23;case 23:for(;re=(x=f.distcode[B&(1<<f.distbits)-1])>>>16&255,se=65535&x,!((ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(!(240&re)){for(ne=ee,he=re,de=se;re=(x=f.distcode[de+((B&(1<<ne+he)-1)>>ne)])>>>16&255,se=65535&x,!(ne+(ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}B>>>=ne,k-=ne,f.back+=ne}if(B>>>=ee,k-=ee,f.back+=ee,64&re){v.msg="invalid distance code",f.mode=30;break}f.offset=se,f.extra=15&re,f.mode=24;case 24:if(f.extra){for(y=f.extra;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.offset+=B&(1<<f.extra)-1,B>>>=f.extra,k-=f.extra,f.back+=f.extra}if(f.offset>f.dmax){v.msg="invalid distance too far back",f.mode=30;break}f.mode=25;case 25:if(G===0)break e;if(V=W-G,f.offset>V){if((V=f.offset-V)>f.whave&&f.sane){v.msg="invalid distance too far back",f.mode=30;break}X=V>f.wnext?(V-=f.wnext,f.wsize-V):f.wnext-V,V>f.length&&(V=f.length),$=f.window}else $=q,X=Y-f.offset,V=f.length;for(G<V&&(V=G),G-=V,f.length-=V;q[Y++]=$[X++],--V;);f.length===0&&(f.mode=21);break;case 26:if(G===0)break e;q[Y++]=f.length,G--,f.mode=21;break;case 27:if(f.wrap){for(;k<32;){if(E===0)break e;E--,B|=I[T++]<<k,k+=8}if(W-=G,v.total_out+=W,f.total+=W,W&&(v.adler=f.check=f.flags?r(f.check,q,W,Y-W):n(f.check,q,W,Y-W)),W=G,(f.flags?B:g(B))!==f.check){v.msg="incorrect data check",f.mode=30;break}k=B=0}f.mode=28;case 28:if(f.wrap&&f.flags){for(;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(B!==(4294967295&f.total)){v.msg="incorrect length check",f.mode=30;break}k=B=0}f.mode=29;case 29:U=1;break e;case 30:U=-3;break e;case 31:return-4;case 32:default:return c}return v.next_out=Y,v.avail_out=G,v.next_in=T,v.avail_in=E,f.hold=B,f.bits=k,(f.wsize||W!==v.avail_out&&f.mode<30&&(f.mode<27||z!==4))&&Q(v,v.output,v.next_out,W-v.avail_out)?(f.mode=31,-4):(N-=v.avail_in,W-=v.avail_out,v.total_in+=N,v.total_out+=W,f.total+=W,f.wrap&&W&&(v.adler=f.check=f.flags?r(f.check,q,W,v.next_out-W):n(f.check,q,W,v.next_out-W)),v.data_type=f.bits+(f.last?64:0)+(f.mode===12?128:0)+(f.mode===20||f.mode===15?256:0),(N==0&&W===0||z===4)&&U===l&&(U=-5),U)},t.inflateEnd=function(v){if(!v||!v.state)return c;var z=v.state;return z.window&&(z.window=null),v.state=null,l},t.inflateGetHeader=function(v,z){var f;return v&&v.state&&2&(f=v.state).wrap?((f.head=z).done=!1,l):c},t.inflateSetDictionary=function(v,z){var f,I=z.length;return v&&v.state?(f=v.state).wrap!==0&&f.mode!==11?c:f.mode===11&&n(1,z,I,0)!==f.check?-3:Q(v,z,I,I)?(f.mode=31,-4):(f.havedict=1,l):c},t.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(s,e,t){"use strict";var i=s("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(u,h,l,c,A,p,m,g){var b,w,D,_,Z,R,O,F,j,Q=g.bits,v=0,z=0,f=0,I=0,q=0,T=0,Y=0,E=0,G=0,B=0,k=null,N=0,W=new i.Buf16(16),V=new i.Buf16(16),X=null,$=0;for(v=0;v<=15;v++)W[v]=0;for(z=0;z<c;z++)W[h[l+z]]++;for(q=Q,I=15;1<=I&&W[I]===0;I--);if(I<q&&(q=I),I===0)return A[p++]=20971520,A[p++]=20971520,g.bits=1,0;for(f=1;f<I&&W[f]===0;f++);for(q<f&&(q=f),v=E=1;v<=15;v++)if(E<<=1,(E-=W[v])<0)return-1;if(0<E&&(u===0||I!==1))return-1;for(V[1]=0,v=1;v<15;v++)V[v+1]=V[v]+W[v];for(z=0;z<c;z++)h[l+z]!==0&&(m[V[h[l+z]]++]=z);if(R=u===0?(k=X=m,19):u===1?(k=n,N-=257,X=r,$-=257,256):(k=a,X=o,-1),v=f,Z=p,Y=z=B=0,D=-1,_=(G=1<<(T=q))-1,u===1&&852<G||u===2&&592<G)return 1;for(;;){for(O=v-Y,j=m[z]<R?(F=0,m[z]):m[z]>R?(F=X[$+m[z]],k[N+m[z]]):(F=96,0),b=1<<v-Y,f=w=1<<T;A[Z+(B>>Y)+(w-=b)]=O<<24|F<<16|j|0,w!==0;);for(b=1<<v-1;B&b;)b>>=1;if(b!==0?(B&=b-1,B+=b):B=0,z++,--W[v]==0){if(v===I)break;v=h[l+m[z]]}if(q<v&&(B&_)!==D){for(Y===0&&(Y=q),Z+=f,E=1<<(T=v-Y);T+Y<I&&!((E-=W[T+Y])<=0);)T++,E<<=1;if(G+=1<<T,u===1&&852<G||u===2&&592<G)return 1;A[D=B&_]=q<<24|T<<16|Z-p|0}}return B!==0&&(A[Z+B]=v-Y<<24|64<<16|0),g.bits=q,0}},{"../utils/common":41}],51:[function(s,e,t){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(s,e,t){"use strict";var i=s("../utils/common"),n=0,r=1;function a(x){for(var C=x.length;0<=--C;)x[C]=0}var o=0,u=29,h=256,l=h+1+u,c=30,A=19,p=2*l+1,m=15,g=16,b=7,w=256,D=16,_=17,Z=18,R=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],O=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],F=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],j=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Q=new Array(2*(l+2));a(Q);var v=new Array(2*c);a(v);var z=new Array(512);a(z);var f=new Array(256);a(f);var I=new Array(u);a(I);var q,T,Y,E=new Array(c);function G(x,C,L,M,S){this.static_tree=x,this.extra_bits=C,this.extra_base=L,this.elems=M,this.max_length=S,this.has_stree=x&&x.length}function B(x,C){this.dyn_tree=x,this.max_code=0,this.stat_desc=C}function k(x){return x<256?z[x]:z[256+(x>>>7)]}function N(x,C){x.pending_buf[x.pending++]=255&C,x.pending_buf[x.pending++]=C>>>8&255}function W(x,C,L){x.bi_valid>g-L?(x.bi_buf|=C<<x.bi_valid&65535,N(x,x.bi_buf),x.bi_buf=C>>g-x.bi_valid,x.bi_valid+=L-g):(x.bi_buf|=C<<x.bi_valid&65535,x.bi_valid+=L)}function V(x,C,L){W(x,L[2*C],L[2*C+1])}function X(x,C){for(var L=0;L|=1&x,x>>>=1,L<<=1,0<--C;);return L>>>1}function $(x,C,L){var M,S,H=new Array(m+1),K=0;for(M=1;M<=m;M++)H[M]=K=K+L[M-1]<<1;for(S=0;S<=C;S++){var J=x[2*S+1];J!==0&&(x[2*S]=X(H[J]++,J))}}function ee(x){var C;for(C=0;C<l;C++)x.dyn_ltree[2*C]=0;for(C=0;C<c;C++)x.dyn_dtree[2*C]=0;for(C=0;C<A;C++)x.bl_tree[2*C]=0;x.dyn_ltree[2*w]=1,x.opt_len=x.static_len=0,x.last_lit=x.matches=0}function re(x){8<x.bi_valid?N(x,x.bi_buf):0<x.bi_valid&&(x.pending_buf[x.pending++]=x.bi_buf),x.bi_buf=0,x.bi_valid=0}function se(x,C,L,M){var S=2*C,H=2*L;return x[S]<x[H]||x[S]===x[H]&&M[C]<=M[L]}function ne(x,C,L){for(var M=x.heap[L],S=L<<1;S<=x.heap_len&&(S<x.heap_len&&se(C,x.heap[S+1],x.heap[S],x.depth)&&S++,!se(C,M,x.heap[S],x.depth));)x.heap[L]=x.heap[S],L=S,S<<=1;x.heap[L]=M}function he(x,C,L){var M,S,H,K,J=0;if(x.last_lit!==0)for(;M=x.pending_buf[x.d_buf+2*J]<<8|x.pending_buf[x.d_buf+2*J+1],S=x.pending_buf[x.l_buf+J],J++,M===0?V(x,S,C):(V(x,(H=f[S])+h+1,C),(K=R[H])!==0&&W(x,S-=I[H],K),V(x,H=k(--M),L),(K=O[H])!==0&&W(x,M-=E[H],K)),J<x.last_lit;);V(x,w,C)}function de(x,C){var L,M,S,H=C.dyn_tree,K=C.stat_desc.static_tree,J=C.stat_desc.has_stree,te=C.stat_desc.elems,ce=-1;for(x.heap_len=0,x.heap_max=p,L=0;L<te;L++)H[2*L]!==0?(x.heap[++x.heap_len]=ce=L,x.depth[L]=0):H[2*L+1]=0;for(;x.heap_len<2;)H[2*(S=x.heap[++x.heap_len]=ce<2?++ce:0)]=1,x.depth[S]=0,x.opt_len--,J&&(x.static_len-=K[2*S+1]);for(C.max_code=ce,L=x.heap_len>>1;1<=L;L--)ne(x,H,L);for(S=te;L=x.heap[1],x.heap[1]=x.heap[x.heap_len--],ne(x,H,1),M=x.heap[1],x.heap[--x.heap_max]=L,x.heap[--x.heap_max]=M,H[2*S]=H[2*L]+H[2*M],x.depth[S]=(x.depth[L]>=x.depth[M]?x.depth[L]:x.depth[M])+1,H[2*L+1]=H[2*M+1]=S,x.heap[1]=S++,ne(x,H,1),2<=x.heap_len;);x.heap[--x.heap_max]=x.heap[1],function(ae,ye){var Me,_e,Oe,pe,st,Bt,Ce=ye.dyn_tree,mr=ye.max_code,Ei=ye.stat_desc.static_tree,Bi=ye.stat_desc.has_stree,Ii=ye.stat_desc.extra_bits,gr=ye.stat_desc.extra_base,je=ye.stat_desc.max_length,at=0;for(pe=0;pe<=m;pe++)ae.bl_count[pe]=0;for(Ce[2*ae.heap[ae.heap_max]+1]=0,Me=ae.heap_max+1;Me<p;Me++)je<(pe=Ce[2*Ce[2*(_e=ae.heap[Me])+1]+1]+1)&&(pe=je,at++),Ce[2*_e+1]=pe,mr<_e||(ae.bl_count[pe]++,st=0,gr<=_e&&(st=Ii[_e-gr]),Bt=Ce[2*_e],ae.opt_len+=Bt*(pe+st),Bi&&(ae.static_len+=Bt*(Ei[2*_e+1]+st)));if(at!==0){do{for(pe=je-1;ae.bl_count[pe]===0;)pe--;ae.bl_count[pe]--,ae.bl_count[pe+1]+=2,ae.bl_count[je]--,at-=2}while(0<at);for(pe=je;pe!==0;pe--)for(_e=ae.bl_count[pe];_e!==0;)mr<(Oe=ae.heap[--Me])||(Ce[2*Oe+1]!==pe&&(ae.opt_len+=(pe-Ce[2*Oe+1])*Ce[2*Oe],Ce[2*Oe+1]=pe),_e--)}}(x,C),$(H,ce,x.bl_count)}function d(x,C,L){var M,S,H=-1,K=C[1],J=0,te=7,ce=4;for(K===0&&(te=138,ce=3),C[2*(L+1)+1]=65535,M=0;M<=L;M++)S=K,K=C[2*(M+1)+1],++J<te&&S===K||(J<ce?x.bl_tree[2*S]+=J:S!==0?(S!==H&&x.bl_tree[2*S]++,x.bl_tree[2*D]++):J<=10?x.bl_tree[2*_]++:x.bl_tree[2*Z]++,H=S,ce=(J=0)===K?(te=138,3):S===K?(te=6,3):(te=7,4))}function U(x,C,L){var M,S,H=-1,K=C[1],J=0,te=7,ce=4;for(K===0&&(te=138,ce=3),M=0;M<=L;M++)if(S=K,K=C[2*(M+1)+1],!(++J<te&&S===K)){if(J<ce)for(;V(x,S,x.bl_tree),--J!=0;);else S!==0?(S!==H&&(V(x,S,x.bl_tree),J--),V(x,D,x.bl_tree),W(x,J-3,2)):J<=10?(V(x,_,x.bl_tree),W(x,J-3,3)):(V(x,Z,x.bl_tree),W(x,J-11,7));H=S,ce=(J=0)===K?(te=138,3):S===K?(te=6,3):(te=7,4)}}a(E);var P=!1;function y(x,C,L,M){W(x,(o<<1)+(M?1:0),3),function(S,H,K,J){re(S),J&&(N(S,K),N(S,~K)),i.arraySet(S.pending_buf,S.window,H,K,S.pending),S.pending+=K}(x,C,L,!0)}t._tr_init=function(x){P||(function(){var C,L,M,S,H,K=new Array(m+1);for(S=M=0;S<u-1;S++)for(I[S]=M,C=0;C<1<<R[S];C++)f[M++]=S;for(f[M-1]=S,S=H=0;S<16;S++)for(E[S]=H,C=0;C<1<<O[S];C++)z[H++]=S;for(H>>=7;S<c;S++)for(E[S]=H<<7,C=0;C<1<<O[S]-7;C++)z[256+H++]=S;for(L=0;L<=m;L++)K[L]=0;for(C=0;C<=143;)Q[2*C+1]=8,C++,K[8]++;for(;C<=255;)Q[2*C+1]=9,C++,K[9]++;for(;C<=279;)Q[2*C+1]=7,C++,K[7]++;for(;C<=287;)Q[2*C+1]=8,C++,K[8]++;for($(Q,l+1,K),C=0;C<c;C++)v[2*C+1]=5,v[2*C]=X(C,5);q=new G(Q,R,h+1,l,m),T=new G(v,O,0,c,m),Y=new G(new Array(0),F,0,A,b)}(),P=!0),x.l_desc=new B(x.dyn_ltree,q),x.d_desc=new B(x.dyn_dtree,T),x.bl_desc=new B(x.bl_tree,Y),x.bi_buf=0,x.bi_valid=0,ee(x)},t._tr_stored_block=y,t._tr_flush_block=function(x,C,L,M){var S,H,K=0;0<x.level?(x.strm.data_type===2&&(x.strm.data_type=function(J){var te,ce=4093624447;for(te=0;te<=31;te++,ce>>>=1)if(1&ce&&J.dyn_ltree[2*te]!==0)return n;if(J.dyn_ltree[18]!==0||J.dyn_ltree[20]!==0||J.dyn_ltree[26]!==0)return r;for(te=32;te<h;te++)if(J.dyn_ltree[2*te]!==0)return r;return n}(x)),de(x,x.l_desc),de(x,x.d_desc),K=function(J){var te;for(d(J,J.dyn_ltree,J.l_desc.max_code),d(J,J.dyn_dtree,J.d_desc.max_code),de(J,J.bl_desc),te=A-1;3<=te&&J.bl_tree[2*j[te]+1]===0;te--);return J.opt_len+=3*(te+1)+5+5+4,te}(x),S=x.opt_len+3+7>>>3,(H=x.static_len+3+7>>>3)<=S&&(S=H)):S=H=L+5,L+4<=S&&C!==-1?y(x,C,L,M):x.strategy===4||H===S?(W(x,2+(M?1:0),3),he(x,Q,v)):(W(x,4+(M?1:0),3),function(J,te,ce,ae){var ye;for(W(J,te-257,5),W(J,ce-1,5),W(J,ae-4,4),ye=0;ye<ae;ye++)W(J,J.bl_tree[2*j[ye]+1],3);U(J,J.dyn_ltree,te-1),U(J,J.dyn_dtree,ce-1)}(x,x.l_desc.max_code+1,x.d_desc.max_code+1,K+1),he(x,x.dyn_ltree,x.dyn_dtree)),ee(x),M&&re(x)},t._tr_tally=function(x,C,L){return x.pending_buf[x.d_buf+2*x.last_lit]=C>>>8&255,x.pending_buf[x.d_buf+2*x.last_lit+1]=255&C,x.pending_buf[x.l_buf+x.last_lit]=255&L,x.last_lit++,C===0?x.dyn_ltree[2*L]++:(x.matches++,C--,x.dyn_ltree[2*(f[L]+h+1)]++,x.dyn_dtree[2*k(C)]++),x.last_lit===x.lit_bufsize-1},t._tr_align=function(x){W(x,2,3),V(x,w,Q),function(C){C.bi_valid===16?(N(C,C.bi_buf),C.bi_buf=0,C.bi_valid=0):8<=C.bi_valid&&(C.pending_buf[C.pending++]=255&C.bi_buf,C.bi_buf>>=8,C.bi_valid-=8)}(x)}},{"../utils/common":41}],53:[function(s,e,t){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(s,e,t){(function(i){(function(n,r){"use strict";if(!n.setImmediate){var a,o,u,h,l=1,c={},A=!1,p=n.document,m=Object.getPrototypeOf&&Object.getPrototypeOf(n);m=m&&m.setTimeout?m:n,a={}.toString.call(n.process)==="[object process]"?function(D){process.nextTick(function(){b(D)})}:function(){if(n.postMessage&&!n.importScripts){var D=!0,_=n.onmessage;return n.onmessage=function(){D=!1},n.postMessage("","*"),n.onmessage=_,D}}()?(h="setImmediate$"+Math.random()+"$",n.addEventListener?n.addEventListener("message",w,!1):n.attachEvent("onmessage",w),function(D){n.postMessage(h+D,"*")}):n.MessageChannel?((u=new MessageChannel).port1.onmessage=function(D){b(D.data)},function(D){u.port2.postMessage(D)}):p&&"onreadystatechange"in p.createElement("script")?(o=p.documentElement,function(D){var _=p.createElement("script");_.onreadystatechange=function(){b(D),_.onreadystatechange=null,o.removeChild(_),_=null},o.appendChild(_)}):function(D){setTimeout(b,0,D)},m.setImmediate=function(D){typeof D!="function"&&(D=new Function(""+D));for(var _=new Array(arguments.length-1),Z=0;Z<_.length;Z++)_[Z]=arguments[Z+1];var R={callback:D,args:_};return c[l]=R,a(l),l++},m.clearImmediate=g}function g(D){delete c[D]}function b(D){if(A)setTimeout(b,0,D);else{var _=c[D];if(_){A=!0;try{(function(Z){var R=Z.callback,O=Z.args;switch(O.length){case 0:R();break;case 1:R(O[0]);break;case 2:R(O[0],O[1]);break;case 3:R(O[0],O[1],O[2]);break;default:R.apply(r,O)}})(_)}finally{g(D),A=!1}}}}function w(D){D.source===n&&typeof D.data=="string"&&D.data.indexOf(h)===0&&b(+D.data.slice(h.length))}})(typeof self>"u"?i===void 0?this:i:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})});var Pt=ge(Ee=>{"use strict";var yr=":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD",Gi=yr+"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040",wr="["+yr+"]["+Gi+"]*",Vi=new RegExp("^"+wr+"$"),Mi=function(s,e){let t=[],i=e.exec(s);for(;i;){let n=[];n.startIndex=e.lastIndex-i[0].length;let r=i.length;for(let a=0;a<r;a++)n.push(i[a]);t.push(n),i=e.exec(s)}return t},Oi=function(s){let e=Vi.exec(s);return!(e===null||typeof e>"u")};Ee.isExist=function(s){return typeof s<"u"};Ee.isEmptyObject=function(s){return Object.keys(s).length===0};Ee.merge=function(s,e,t){if(e){let i=Object.keys(e),n=i.length;for(let r=0;r<n;r++)t==="strict"?s[i[r]]=[e[i[r]]]:s[i[r]]=e[i[r]]}};Ee.getValue=function(s){return Ee.isExist(s)?s:""};Ee.isName=Oi;Ee.getAllMatches=Mi;Ee.nameRegexp=wr});var Zt=ge(Er=>{"use strict";var Rt=Pt(),ji={allowBooleanAttributes:!1,unpairedTags:[]};Er.validate=function(s,e){e=Object.assign({},ji,e);let t=[],i=!1,n=!1;s[0]==="\\uFEFF"&&(s=s.substr(1));for(let r=0;r<s.length;r++)if(s[r]==="<"&&s[r+1]==="?"){if(r+=2,r=Dr(s,r),r.err)return r}else if(s[r]==="<"){let a=r;if(r++,s[r]==="!"){r=vr(s,r);continue}else{let o=!1;s[r]==="/"&&(o=!0,r++);let u="";for(;r<s.length&&s[r]!==">"&&s[r]!==" "&&s[r]!==" "&&s[r]!==`\n`&&s[r]!=="\\r";r++)u+=s[r];if(u=u.trim(),u[u.length-1]==="/"&&(u=u.substring(0,u.length-1),r--),!Ki(u)){let c;return u.trim().length===0?c="Invalid space after \'<\'.":c="Tag \'"+u+"\' is an invalid name.",fe("InvalidTag",c,Ae(s,r))}let h=Hi(s,r);if(h===!1)return fe("InvalidAttr","Attributes for \'"+u+"\' have open quote.",Ae(s,r));let l=h.value;if(r=h.index,l[l.length-1]==="/"){let c=r-l.length;l=l.substring(0,l.length-1);let A=Cr(l,e);if(A===!0)i=!0;else return fe(A.err.code,A.err.msg,Ae(s,c+A.err.line))}else if(o)if(h.tagClosed){if(l.trim().length>0)return fe("InvalidTag","Closing tag \'"+u+"\' can\'t have attributes or invalid starting.",Ae(s,a));{let c=t.pop();if(u!==c.tagName){let A=Ae(s,c.tagStartPos);return fe("InvalidTag","Expected closing tag \'"+c.tagName+"\' (opened in line "+A.line+", col "+A.col+") instead of closing tag \'"+u+"\'.",Ae(s,a))}t.length==0&&(n=!0)}}else return fe("InvalidTag","Closing tag \'"+u+"\' doesn\'t have proper closing.",Ae(s,r));else{let c=Cr(l,e);if(c!==!0)return fe(c.err.code,c.err.msg,Ae(s,r-l.length+c.err.line));if(n===!0)return fe("InvalidXml","Multiple possible root nodes found.",Ae(s,r));e.unpairedTags.indexOf(u)!==-1||t.push({tagName:u,tagStartPos:a}),i=!0}for(r++;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="!"){r++,r=vr(s,r);continue}else if(s[r+1]==="?"){if(r=Dr(s,++r),r.err)return r}else break;else if(s[r]==="&"){let c=Xi(s,r);if(c==-1)return fe("InvalidChar","char \'&\' is not expected.",Ae(s,r));r=c}else if(n===!0&&!_r(s[r]))return fe("InvalidXml","Extra text at the end",Ae(s,r));s[r]==="<"&&r--}}else{if(_r(s[r]))continue;return fe("InvalidChar","char \'"+s[r]+"\' is not expected.",Ae(s,r))}if(i){if(t.length==1)return fe("InvalidTag","Unclosed tag \'"+t[0].tagName+"\'.",Ae(s,t[0].tagStartPos));if(t.length>0)return fe("InvalidXml","Invalid \'"+JSON.stringify(t.map(r=>r.tagName),null,4).replace(/\\r?\\n/g,"")+"\' found.",{line:1,col:1})}else return fe("InvalidXml","Start tag expected.",1);return!0};function _r(s){return s===" "||s===" "||s===`\n`||s==="\\r"}function Dr(s,e){let t=e;for(;e<s.length;e++)if(s[e]=="?"||s[e]==" "){let i=s.substr(t,e-t);if(e>5&&i==="xml")return fe("InvalidXml","XML declaration allowed only at the start of the document.",Ae(s,e));if(s[e]=="?"&&s[e+1]==">"){e++;break}else continue}return e}function vr(s,e){if(s.length>e+5&&s[e+1]==="-"&&s[e+2]==="-"){for(e+=3;e<s.length;e++)if(s[e]==="-"&&s[e+1]==="-"&&s[e+2]===">"){e+=2;break}}else if(s.length>e+8&&s[e+1]==="D"&&s[e+2]==="O"&&s[e+3]==="C"&&s[e+4]==="T"&&s[e+5]==="Y"&&s[e+6]==="P"&&s[e+7]==="E"){let t=1;for(e+=8;e<s.length;e++)if(s[e]==="<")t++;else if(s[e]===">"&&(t--,t===0))break}else if(s.length>e+9&&s[e+1]==="["&&s[e+2]==="C"&&s[e+3]==="D"&&s[e+4]==="A"&&s[e+5]==="T"&&s[e+6]==="A"&&s[e+7]==="["){for(e+=8;e<s.length;e++)if(s[e]==="]"&&s[e+1]==="]"&&s[e+2]===">"){e+=2;break}}return e}var Yi=\'"\',$i="\'";function Hi(s,e){let t="",i="",n=!1;for(;e<s.length;e++){if(s[e]===Yi||s[e]===$i)i===""?i=s[e]:i!==s[e]||(i="");else if(s[e]===">"&&i===""){n=!0;break}t+=s[e]}return i!==""?!1:{value:t,index:e,tagClosed:n}}var qi=new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\'"])(([\\\\s\\\\S])*?)\\\\5)?`,"g");function Cr(s,e){let t=Rt.getAllMatches(s,qi),i={};for(let n=0;n<t.length;n++){if(t[n][1].length===0)return fe("InvalidAttr","Attribute \'"+t[n][2]+"\' has no space in starting.",qe(t[n]));if(t[n][3]!==void 0&&t[n][4]===void 0)return fe("InvalidAttr","Attribute \'"+t[n][2]+"\' is without value.",qe(t[n]));if(t[n][3]===void 0&&!e.allowBooleanAttributes)return fe("InvalidAttr","boolean attribute \'"+t[n][2]+"\' is not allowed.",qe(t[n]));let r=t[n][2];if(!Qi(r))return fe("InvalidAttr","Attribute \'"+r+"\' is an invalid name.",qe(t[n]));if(!i.hasOwnProperty(r))i[r]=1;else return fe("InvalidAttr","Attribute \'"+r+"\' is repeated.",qe(t[n]))}return!0}function Ji(s,e){let t=/\\d/;for(s[e]==="x"&&(e++,t=/[\\da-fA-F]/);e<s.length;e++){if(s[e]===";")return e;if(!s[e].match(t))break}return-1}function Xi(s,e){if(e++,s[e]===";")return-1;if(s[e]==="#")return e++,Ji(s,e);let t=0;for(;e<s.length;e++,t++)if(!(s[e].match(/\\w/)&&t<20)){if(s[e]===";")break;return-1}return e}function fe(s,e,t){return{err:{code:s,msg:e,line:t.line||t,col:t.col}}}function Qi(s){return Rt.isName(s)}function Ki(s){return Rt.isName(s)}function Ae(s,e){let t=s.substring(0,e).split(/\\r?\\n/);return{line:t.length,col:t[t.length-1].length+1}}function qe(s){return s.startIndex+s[1].length}});var Ir=ge(zt=>{var Br={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0},tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1},en=function(s){return Object.assign({},Br,s)};zt.buildOptions=en;zt.defaultOptions=Br});var Sr=ge((Ca,kr)=>{"use strict";var Lt=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){this.child.push({[e]:t})}addChild(e){e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,[":@"]:e[":@"]}):this.child.push({[e.tagname]:e.child})}};kr.exports=Lt});var Fr=ge((Ea,Nr)=>{function tn(s,e){let t={};if(s[e+3]==="O"&&s[e+4]==="C"&&s[e+5]==="T"&&s[e+6]==="Y"&&s[e+7]==="P"&&s[e+8]==="E"){e=e+9;let i=1,n=!1,r=!1,a=!1,o="";for(;e<s.length;e++)if(s[e]==="<"){if(n&&s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="N"&&s[e+4]==="T"&&s[e+5]==="I"&&s[e+6]==="T"&&s[e+7]==="Y")e+=7,r=!0;else if(n&&s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="L"&&s[e+4]==="E"&&s[e+5]==="M"&&s[e+6]==="E"&&s[e+7]==="N"&&s[e+8]==="T")e+=8;else if(n&&s[e+1]==="!"&&s[e+2]==="A"&&s[e+3]==="T"&&s[e+4]==="T"&&s[e+5]==="L"&&s[e+6]==="I"&&s[e+7]==="S"&&s[e+8]==="T")e+=8;else if(n&&s[e+1]==="!"&&s[e+2]==="N"&&s[e+3]==="O"&&s[e+4]==="T"&&s[e+5]==="A"&&s[e+6]==="T"&&s[e+7]==="I"&&s[e+8]==="O"&&s[e+9]==="N")e+=9;else if(s[e+1]==="!"&&s[e+2]==="-"&&s[e+3]==="-")a=!0;else throw new Error("Invalid DOCTYPE");i++,o=""}else if(s[e]===">"){if(a)if(s[e-1]==="-"&&s[e-2]==="-")a=!1;else throw new Error("Invalid XML comment in DOCTYPE");else r&&(nn(o,t),r=!1);if(i--,i===0)break}else s[e]==="["?n=!0:o+=s[e];if(i!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:t,i:e}}var rn=RegExp(`^\\\\s([a-zA-z0-0]+)[ ]([\'"])([^&]+)\\\\2`);function nn(s,e){let t=rn.exec(s);t&&(e[t[1]]={regx:RegExp(`&${t[1]};`,"g"),val:t[3]})}Nr.exports=tn});var Pr=ge((Ba,Tr)=>{var sn=/^[-+]?0x[a-fA-F0-9]+$/,an=/^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);var on={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function un(s,e={}){if(e=Object.assign({},on,e),!s||typeof s!="string")return s;let t=s.trim();if(e.skipLike!==void 0&&e.skipLike.test(t))return s;if(e.hex&&sn.test(t))return Number.parseInt(t,16);{let i=an.exec(t);if(i){let n=i[1],r=i[2],a=ln(i[3]),o=i[4]||i[6];if(!e.leadingZeros&&r.length>0&&n&&t[2]!==".")return s;if(!e.leadingZeros&&r.length>0&&!n&&t[1]!==".")return s;{let u=Number(t),h=""+u;return h.search(/[eE]/)!==-1||o?e.eNotation?u:s:t.indexOf(".")!==-1?h==="0"&&a===""||h===a||n&&h==="-"+a?u:s:r?a===h||n+a===h?u:s:t===h||t===n+h?u:s}}else return s}}function ln(s){return s&&s.indexOf(".")!==-1&&(s=s.replace(/0+$/,""),s==="."?s="0":s[0]==="."?s="0"+s:s[s.length-1]==="."&&(s=s.substr(0,s.length-1))),s}Tr.exports=un});var Zr=ge((ka,Rr)=>{"use strict";var Vt=Pt(),Je=Sr(),cn=Fr(),dn=Pr(),Ia="<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)".replace(/NAME/g,Vt.nameRegexp),Ut=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"\'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:\'"\'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\\xA2"},pound:{regex:/&(pound|#163);/g,val:"\\xA3"},yen:{regex:/&(yen|#165);/g,val:"\\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\\xA9"},reg:{regex:/&(reg|#174);/g,val:"\\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\\u20B9"}},this.addExternalEntities=hn,this.parseXml=bn,this.parseTextData=pn,this.resolveNameSpace=fn,this.buildAttributesMap=gn,this.isItStopNode=yn,this.replaceEntitiesValue=An,this.readStopNodeData=_n,this.saveTextToParentTag=xn}};function hn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:s[i]}}}function pn(s,e,t,i,n,r,a){if(s!==void 0&&(this.options.trimValues&&!i&&(s=s.trim()),s.length>0)){a||(s=this.replaceEntitiesValue(s));let o=this.options.tagValueProcessor(e,s,t,n,r);return o==null?s:typeof o!=typeof s||o!==s?o:this.options.trimValues?Gt(s,this.options.parseTagValue,this.options.numberParseOptions):s.trim()===s?Gt(s,this.options.parseTagValue,this.options.numberParseOptions):s}}function fn(s){if(this.options.removeNSPrefix){let e=s.split(":"),t=s.charAt(0)==="/"?"/":"";if(e[0]==="xmlns")return"";e.length===2&&(s=t+e[1])}return s}var mn=new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*([\'"])([\\\\s\\\\S]*?)\\\\3)?`,"gm");function gn(s,e){if(!this.options.ignoreAttributes&&typeof s=="string"){let t=Vt.getAllMatches(s,mn),i=t.length,n={};for(let r=0;r<i;r++){let a=this.resolveNameSpace(t[r][1]),o=t[r][4],u=this.options.attributeNamePrefix+a;if(a.length)if(o!==void 0){this.options.trimValues&&(o=o.trim()),o=this.replaceEntitiesValue(o);let h=this.options.attributeValueProcessor(a,o,e);h==null?n[u]=o:typeof h!=typeof o||h!==o?n[u]=h:n[u]=Gt(o,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[u]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){let r={};return r[this.options.attributesGroupName]=n,r}return n}}var bn=function(s){s=s.replace(/\\r\\n?/g,`\n`);let e=new Je("!xml"),t=e,i="",n="";for(let r=0;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="/"){let o=Ze(s,">",r,"Closing Tag is not closed."),u=s.substring(r+2,o).trim();if(this.options.removeNSPrefix){let h=u.indexOf(":");h!==-1&&(u=u.substr(h+1))}this.options.transformTagName&&(u=this.options.transformTagName(u)),t&&(i=this.saveTextToParentTag(i,t,n)),n=n.substr(0,n.lastIndexOf(".")),t=this.tagsNodeStack.pop(),i="",r=o}else if(s[r+1]==="?"){let o=Wt(s,r,!1,"?>");if(!o)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,t,n),!(this.options.ignoreDeclaration&&o.tagName==="?xml"||this.options.ignorePiTags)){let u=new Je(o.tagName);u.add(this.options.textNodeName,""),o.tagName!==o.tagExp&&o.attrExpPresent&&(u[":@"]=this.buildAttributesMap(o.tagExp,n)),t.addChild(u)}r=o.closeIndex+1}else if(s.substr(r+1,3)==="!--"){let o=Ze(s,"-->",r+4,"Comment is not closed.");if(this.options.commentPropName){let u=s.substring(r+4,o-2);i=this.saveTextToParentTag(i,t,n),t.add(this.options.commentPropName,[{[this.options.textNodeName]:u}])}r=o}else if(s.substr(r+1,2)==="!D"){let o=cn(s,r);this.docTypeEntities=o.entities,r=o.i}else if(s.substr(r+1,2)==="!["){let o=Ze(s,"]]>",r,"CDATA is not closed.")-2,u=s.substring(r+9,o);if(i=this.saveTextToParentTag(i,t,n),this.options.cdataPropName)t.add(this.options.cdataPropName,[{[this.options.textNodeName]:u}]);else{let h=this.parseTextData(u,t.tagname,n,!0,!1,!0);h==null&&(h=""),t.add(this.options.textNodeName,h)}r=o+2}else{let o=Wt(s,r,this.options.removeNSPrefix),u=o.tagName,h=o.tagExp,l=o.attrExpPresent,c=o.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),t&&i&&t.tagname!=="!xml"&&(i=this.saveTextToParentTag(i,t,n,!1)),u!==e.tagname&&(n+=n?"."+u:u);let A=t;if(A&&this.options.unpairedTags.indexOf(A.tagname)!==-1&&(t=this.tagsNodeStack.pop()),this.isItStopNode(this.options.stopNodes,n,u)){let p="";if(h.length>0&&h.lastIndexOf("/")===h.length-1)r=o.closeIndex;else if(this.options.unpairedTags.indexOf(u)!==-1)r=o.closeIndex;else{let g=this.readStopNodeData(s,u,c+1);if(!g)throw new Error(`Unexpected end of ${u}`);r=g.i,p=g.tagContent}let m=new Je(u);u!==h&&l&&(m[":@"]=this.buildAttributesMap(h,n)),p&&(p=this.parseTextData(p,u,n,!0,l,!0,!0)),n=n.substr(0,n.lastIndexOf(".")),m.add(this.options.textNodeName,p),t.addChild(m)}else{if(h.length>0&&h.lastIndexOf("/")===h.length-1){u[u.length-1]==="/"?(u=u.substr(0,u.length-1),h=u):h=h.substr(0,h.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));let p=new Je(u);u!==h&&l&&(p[":@"]=this.buildAttributesMap(h,n)),n=n.substr(0,n.lastIndexOf(".")),t.addChild(p)}else{let p=new Je(u);this.tagsNodeStack.push(t),u!==h&&l&&(p[":@"]=this.buildAttributesMap(h,n)),t.addChild(p),t=p}i="",r=c}}else i+=s[r];return e.child},An=function(s){if(this.options.processEntities){for(let e in this.docTypeEntities){let t=this.docTypeEntities[e];s=s.replace(t.regx,t.val)}for(let e in this.lastEntities){let t=this.lastEntities[e];s=s.replace(t.regex,t.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){let t=this.htmlEntities[e];s=s.replace(t.regex,t.val)}s=s.replace(this.ampEntity.regex,this.ampEntity.val)}return s};function xn(s,e,t,i){return s&&(i===void 0&&(i=Object.keys(e.child).length===0),s=this.parseTextData(s,e.tagname,t,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,i),s!==void 0&&s!==""&&e.add(this.options.textNodeName,s),s=""),s}function yn(s,e,t){let i="*."+t;for(let n in s){let r=s[n];if(i===r||e===r)return!0}return!1}function wn(s,e,t=">"){let i,n="";for(let r=e;r<s.length;r++){let a=s[r];if(i)a===i&&(i="");else if(a===\'"\'||a==="\'")i=a;else if(a===t[0])if(t[1]){if(s[r+1]===t[1])return{data:n,index:r}}else return{data:n,index:r};else a===" "&&(a=" ");n+=a}}function Ze(s,e,t,i){let n=s.indexOf(e,t);if(n===-1)throw new Error(i);return n+e.length-1}function Wt(s,e,t,i=">"){let n=wn(s,e+1,i);if(!n)return;let r=n.data,a=n.index,o=r.search(/\\s/),u=r,h=!0;if(o!==-1&&(u=r.substr(0,o).replace(/\\s\\s*$/,""),r=r.substr(o+1)),t){let l=u.indexOf(":");l!==-1&&(u=u.substr(l+1),h=u!==n.data.substr(l+1))}return{tagName:u,tagExp:r,closeIndex:a,attrExpPresent:h}}function _n(s,e,t){let i=t,n=1;for(;t<s.length;t++)if(s[t]==="<")if(s[t+1]==="/"){let r=Ze(s,">",t,`${e} is not closed`);if(s.substring(t+2,r).trim()===e&&(n--,n===0))return{tagContent:s.substring(i,t),i:r};t=r}else if(s[t+1]==="?")t=Ze(s,"?>",t+1,"StopNode is not closed.");else if(s.substr(t+1,3)==="!--")t=Ze(s,"-->",t+3,"StopNode is not closed.");else if(s.substr(t+1,2)==="![")t=Ze(s,"]]>",t,"StopNode is not closed.")-2;else{let r=Wt(s,t,">");r&&((r&&r.tagName)===e&&r.tagExp[r.tagExp.length-1]!=="/"&&n++,t=r.closeIndex)}}function Gt(s,e,t){if(e&&typeof s=="string"){let i=s.trim();return i==="true"?!0:i==="false"?!1:dn(s,t)}else return Vt.isExist(s)?s:""}Rr.exports=Ut});var Ur=ge(Lr=>{"use strict";function Dn(s,e){return zr(s,e)}function zr(s,e,t){let i,n={};for(let r=0;r<s.length;r++){let a=s[r],o=vn(a),u="";if(t===void 0?u=o:u=t+"."+o,o===e.textNodeName)i===void 0?i=a[o]:i+=""+a[o];else{if(o===void 0)continue;if(a[o]){let h=zr(a[o],e,u),l=En(h,e);a[":@"]?Cn(h,a[":@"],u,e):Object.keys(h).length===1&&h[e.textNodeName]!==void 0&&!e.alwaysCreateTextNode?h=h[e.textNodeName]:Object.keys(h).length===0&&(e.alwaysCreateTextNode?h[e.textNodeName]="":h=""),n[o]!==void 0&&n.hasOwnProperty(o)?(Array.isArray(n[o])||(n[o]=[n[o]]),n[o].push(h)):e.isArray(o,u,l)?n[o]=[h]:n[o]=h}}}return typeof i=="string"?i.length>0&&(n[e.textNodeName]=i):i!==void 0&&(n[e.textNodeName]=i),n}function vn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function Cn(s,e,t,i){if(e){let n=Object.keys(e),r=n.length;for(let a=0;a<r;a++){let o=n[a];i.isArray(o,t+"."+o,!0,!0)?s[o]=[e[o]]:s[o]=e[o]}}}function En(s,e){let t=Object.keys(s).length;return!!(t===0||t===1&&s[e.textNodeName])}Lr.prettify=Dn});var Gr=ge((Na,Wr)=>{var{buildOptions:Bn}=Ir(),In=Zr(),{prettify:kn}=Ur(),Sn=Zt(),Mt=class{constructor(e){this.externalEntities={},this.options=Bn(e)}parse(e,t){if(typeof e!="string")if(e.toString)e=e.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(t){t===!0&&(t={});let r=Sn.validate(e,t);if(r!==!0)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}let i=new In(this.options);i.addExternalEntities(this.externalEntities);let n=i.parseXml(e);return this.options.preserveOrder||n===void 0?n:kn(n,this.options)}addEntity(e,t){if(t.indexOf("&")!==-1)throw new Error("Entity value can\'t have \'&\'");if(e.indexOf("&")!==-1||e.indexOf(";")!==-1)throw new Error("An entity must be set without \'&\' and \';\'. Eg. use \'#xD\' for \'
\'");if(t==="&")throw new Error("An entity with value \'&\' is not permitted");this.externalEntities[e]=t}};Wr.exports=Mt});var Yr=ge((Fa,jr)=>{var Nn=`\n`;function Fn(s,e){return Mr(s,e,"",0)}function Mr(s,e,t,i){let n="",r="";e.format&&e.indentBy.length>0&&(r=Nn+""+e.indentBy.repeat(i));for(let a=0;a<s.length;a++){let o=s[a],u=Tn(o),h="";if(t.length===0?h=u:h=`${t}.${u}`,u===e.textNodeName){let p=o[u];Pn(h,e)||(p=e.tagValueProcessor(u,p),p=Or(p,e)),n+=r+p;continue}else if(u===e.cdataPropName){n+=r+`<![CDATA[${o[u][0][e.textNodeName]}]]>`;continue}else if(u===e.commentPropName){n+=r+`<!--${o[u][0][e.textNodeName]}-->`;continue}else if(u[0]==="?"){let p=Vr(o[":@"],e),m=u==="?xml"?"":r,g=o[u][0][e.textNodeName];g=g.length!==0?" "+g:"",n+=m+`<${u}${g}${p}?>`;continue}let l=Vr(o[":@"],e),c=r+`<${u}${l}`,A=Mr(o[u],e,h,i+1);e.unpairedTags.indexOf(u)!==-1?e.suppressUnpairedNode?n+=c+">":n+=c+"/>":(!A||A.length===0)&&e.suppressEmptyNode?n+=c+"/>":n+=c+`>${A}${r}</${u}>`}return n}function Tn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function Vr(s,e){let t="";if(s&&!e.ignoreAttributes)for(let i in s){let n=e.attributeValueProcessor(i,s[i]);n=Or(n,e),n===!0&&e.suppressBooleanAttributes?t+=` ${i.substr(e.attributeNamePrefix.length)}`:t+=` ${i.substr(e.attributeNamePrefix.length)}="${n}"`}return t}function Pn(s,e){s=s.substr(0,s.length-e.textNodeName.length-1);let t=s.substr(s.lastIndexOf(".")+1);for(let i in e.stopNodes)if(e.stopNodes[i]===s||e.stopNodes[i]==="*."+t)return!0;return!1}function Or(s,e){if(s&&s.length>0&&e.processEntities)for(let t=0;t<e.entities.length;t++){let i=e.entities[t];s=s.replace(i.regex,i.val)}return s}jr.exports=Fn});var Jr=ge((Ta,qr)=>{"use strict";var Rn=Yr(),Zn={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("\'","g"),val:"'"},{regex:new RegExp(\'"\',"g"),val:"""}],processEntities:!0,stopNodes:[],transformTagName:!1};function Ot(s){this.options=Object.assign({},Zn,s),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Mn),this.processTextOrObjNode=Ln,this.options.format?(this.indentate=Vn,this.tagEndChar=`>\n`,this.newLine=`\n`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.suppressEmptyNode?(this.buildTextNode=Gn,this.buildObjNode=Un):(this.buildTextNode=Hr,this.buildObjNode=$r),this.buildTextValNode=Hr,this.buildObjectNode=$r,this.replaceEntitiesValue=Wn,this.buildAttrPairStr=zn}Ot.prototype.build=function(s){return this.options.preserveOrder?Rn(s,this.options):(Array.isArray(s)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(s={[this.options.arrayNodeName]:s}),this.j2x(s,0).val)};Ot.prototype.j2x=function(s,e){let t="",i="";for(let n in s)if(!(typeof s[n]>"u"))if(s[n]===null)n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar;else if(s[n]instanceof Date)i+=this.buildTextNode(s[n],n,"",e);else if(typeof s[n]!="object"){let r=this.isAttribute(n);if(r)t+=this.buildAttrPairStr(r,""+s[n]);else if(n===this.options.textNodeName){let a=this.options.tagValueProcessor(n,""+s[n]);i+=this.replaceEntitiesValue(a)}else i+=this.buildTextNode(s[n],n,"",e)}else if(Array.isArray(s[n])){let r=s[n].length;for(let a=0;a<r;a++){let o=s[n][a];typeof o>"u"||(o===null?n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar:typeof o=="object"?i+=this.processTextOrObjNode(o,n,e):i+=this.buildTextNode(o,n,"",e))}}else if(this.options.attributesGroupName&&n===this.options.attributesGroupName){let r=Object.keys(s[n]),a=r.length;for(let o=0;o<a;o++)t+=this.buildAttrPairStr(r[o],""+s[n][r[o]])}else i+=this.processTextOrObjNode(s[n],n,e);return{attrStr:t,val:i}};function zn(s,e){return e=this.options.attributeValueProcessor(s,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&e==="true"?" "+s:" "+s+\'="\'+e+\'"\'}function Ln(s,e,t){let i=this.j2x(s,t+1);return s[this.options.textNodeName]!==void 0&&Object.keys(s).length===1?this.buildTextNode(s[this.options.textNodeName],e,i.attrStr,t):this.buildObjNode(i.val,e,i.attrStr,t)}function $r(s,e,t,i){let n="</"+e+this.tagEndChar,r="";return e[0]==="?"&&(r="?",n=""),t&&s.indexOf("<")===-1?this.indentate(i)+"<"+e+t+r+">"+s+n:this.options.commentPropName!==!1&&e===this.options.commentPropName&&r.length===0?this.indentate(i)+`<!--${s}-->`+this.newLine:this.indentate(i)+"<"+e+t+r+this.tagEndChar+s+this.indentate(i)+n}function Un(s,e,t,i){return s!==""?this.buildObjectNode(s,e,t,i):e[0]==="?"?this.indentate(i)+"<"+e+t+"?"+this.tagEndChar:this.indentate(i)+"<"+e+t+"/"+this.tagEndChar}function Hr(s,e,t,i){if(this.options.cdataPropName!==!1&&e===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${s}]]>`+this.newLine;if(this.options.commentPropName!==!1&&e===this.options.commentPropName)return this.indentate(i)+`<!--${s}-->`+this.newLine;{let n=this.options.tagValueProcessor(e,s);return n=this.replaceEntitiesValue(n),n===""&&this.options.unpairedTags.indexOf(e)!==-1?this.options.suppressUnpairedNode?this.indentate(i)+"<"+e+this.tagEndChar:this.indentate(i)+"<"+e+"/"+this.tagEndChar:this.indentate(i)+"<"+e+t+">"+n+"</"+e+this.tagEndChar}}function Wn(s){if(s&&s.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){let t=this.options.entities[e];s=s.replace(t.regex,t.val)}return s}function Gn(s,e,t,i){return s===""&&this.options.unpairedTags.indexOf(e)!==-1?this.options.suppressUnpairedNode?this.indentate(i)+"<"+e+this.tagEndChar:this.indentate(i)+"<"+e+"/"+this.tagEndChar:s!==""?this.buildTextValNode(s,e,t,i):e[0]==="?"?this.indentate(i)+"<"+e+t+"?"+this.tagEndChar:this.indentate(i)+"<"+e+t+"/"+this.tagEndChar}function Vn(s){return this.options.indentBy.repeat(s)}function Mn(s){return s.startsWith(this.options.attributeNamePrefix)?s.substr(this.attrPrefixLen):!1}qr.exports=Ot});var dt=ge((Pa,Xr)=>{"use strict";var On=Zt(),jn=Gr(),Yn=Jr();Xr.exports={XMLParser:jn,XMLValidator:On,XMLBuilder:Yn}});var Nu=Fe(ut()),vi=Fe(St());var lt=s=>{let e=Math.floor((s-5)/7*100+.5)/100;return Math.floor((e*7+5)/7*256)/256},Nt=s=>Math.floor((256*s+Math.floor(18.285714285714285))/256*7);var Ar="UEsDBAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxEZWZhdWx0IEV4dGVuc2lvbj0ieG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya2Jvb2sueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvdGhlbWUvdGhlbWUxLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZSt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC9zdHlsZXMueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3NoYXJlZFN0cmluZ3MueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9jb3JlLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9hcHAueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIi8+PC9UeXBlcz5QSwMECgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9hcHAueG1sIi8+PFJlbGF0aW9uc2hpcCBJZD0icklkMiIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9jb3JlLnhtbCIvPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQKAAAAAAAAACEAunCeZsoGAADKBgAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE1IHhyIHhyNiB4cjEwIHhyMiIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiIgeG1sbnM6eHI2PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb242IiB4bWxuczp4cjEwPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb24xMCIgeG1sbnM6eHIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvcmV2aXNpb24yIj48ZmlsZVZlcnNpb24gYXBwTmFtZT0ieGwiIGxhc3RFZGl0ZWQ9IjciIGxvd2VzdEVkaXRlZD0iNyIgcnVwQnVpbGQ9IjIxMTI2Ii8+PHdvcmtib29rUHIgZGVmYXVsdFRoZW1lVmVyc2lvbj0iMTY2OTI1Ii8+PG1jOkFsdGVybmF0ZUNvbnRlbnQgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2Ij48bWM6Q2hvaWNlIFJlcXVpcmVzPSJ4MTUiPjx4MTVhYzphYnNQYXRoIHVybD0iSDpcVFJFQlx0cmViLWV4cG9ydFx0ZW1wbGF0ZVwiIHhtbG5zOngxNWFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvYWMiLz48L21jOkNob2ljZT48L21jOkFsdGVybmF0ZUNvbnRlbnQ+PHhyOnJldmlzaW9uUHRyIHJldklETGFzdFNhdmU9IjAiIGRvY3VtZW50SWQ9Ijhfe0Q4NThGOUY3LTBEOTItNEFFNC04QTQyLTQ4MENCMzU5QjYyRH0iIHhyNjpjb2F1dGhWZXJzaW9uTGFzdD0iNDAiIHhyNjpjb2F1dGhWZXJzaW9uTWF4PSI0MCIgeHIxMDp1aWRMYXN0U2F2ZT0iezAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMH0iLz48Ym9va1ZpZXdzPjx3b3JrYm9va1ZpZXcgeFdpbmRvdz0iMCIgeVdpbmRvdz0iMCIgd2luZG93V2lkdGg9IjI0NTcwIiB3aW5kb3dIZWlnaHQ9IjExMTMwIiB4cjI6dWlkPSJ7REU0RTdEMzUtNDkyRC00MEQ3LTk5MjUtNDY0N0Y1ODdFMURFfSIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9IlNoZWV0MSIgc2hlZXRJZD0iMSIgcjppZD0icklkMSIvPjwvc2hlZXRzPjxjYWxjUHIgY2FsY0lkPSIxOTEwMjkiLz48ZXh0THN0PjxleHQgdXJpPSJ7MTQwQTcwOTQtMEUzNS00ODkyLTg0MzItQzREMkU1N0VERUI1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp3b3JrYm9va1ByIGNoYXJ0VHJhY2tpbmdSZWZCYXNlPSIxIi8+PC9leHQ+PC9leHRMc3Q+PC93b3JrYm9vaz5QSwMECgAAAAAAAAAhAIE+lJe6AgAAugIAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIiBUYXJnZXQ9InN0eWxlcy54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIiBUYXJnZXQ9InRoZW1lL3RoZW1lMS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQ0IiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiIFRhcmdldD0ic2hhcmVkU3RyaW5ncy54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMgeHIgeHIyIHhyMyIgeG1sbnM6eDE0YWM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIiB4bWxuczp4cj0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE0L3JldmlzaW9uIiB4bWxuczp4cjI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNS9yZXZpc2lvbjIiIHhtbG5zOnhyMz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE2L3JldmlzaW9uMyIgeHI6dWlkPSJ7MEQ4RTVDQTItNUM5RS00RDRCLTk0QzUtRjM1QzA0MUYzOUJEfSI+PGRpbWVuc2lvbiByZWY9IkExIi8+PHNoZWV0Vmlld3M+PHNoZWV0VmlldyB0YWJTZWxlY3RlZD0iMSIgd29ya2Jvb2tWaWV3SWQ9IjAiLz48L3NoZWV0Vmlld3M+PHNoZWV0Rm9ybWF0UHIgZGVmYXVsdFJvd0hlaWdodD0iMTUiIHgxNGFjOmR5RGVzY2VudD0iMC4yNSIvPjxzaGVldERhdGEvPjxwYWdlTWFyZ2lucyBsZWZ0PSIwLjciIHJpZ2h0PSIwLjciIHRvcD0iMC43NSIgYm90dG9tPSIwLjc1IiBoZWFkZXI9IjAuMyIgZm9vdGVyPSIwLjMiLz48L3dvcmtzaGVldD5QSwMECgAAAAAAAAAhAMEXEL7GIAAAxiAAABMAAAB4bC90aGVtZS90aGVtZTEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+PGE6dGhlbWVFbGVtZW50cz48YTpjbHJTY2hlbWUgbmFtZT0iT2ZmaWNlIj48YTpkazE+PGE6c3lzQ2xyIHZhbD0id2luZG93VGV4dCIgbGFzdENscj0iMDAwMDAwIi8+PC9hOmRrMT48YTpsdDE+PGE6c3lzQ2xyIHZhbD0id2luZG93IiBsYXN0Q2xyPSJGRkZGRkYiLz48L2E6bHQxPjxhOmRrMj48YTpzcmdiQ2xyIHZhbD0iNDQ1NDZBIi8+PC9hOmRrMj48YTpsdDI+PGE6c3JnYkNsciB2YWw9IkU3RTZFNiIvPjwvYTpsdDI+PGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD0iNDQ3MkM0Ii8+PC9hOmFjY2VudDE+PGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD0iRUQ3RDMxIi8+PC9hOmFjY2VudDI+PGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD0iQTVBNUE1Ii8+PC9hOmFjY2VudDM+PGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD0iRkZDMDAwIi8+PC9hOmFjY2VudDQ+PGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD0iNUI5QkQ1Ii8+PC9hOmFjY2VudDU+PGE6YWNjZW50Nj48YTpzcmdiQ2xyIHZhbD0iNzBBRDQ3Ii8+PC9hOmFjY2VudDY+PGE6aGxpbms+PGE6c3JnYkNsciB2YWw9IjA1NjNDMSIvPjwvYTpobGluaz48YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD0iOTU0RjcyIi8+PC9hOmZvbEhsaW5rPjwvYTpjbHJTY2hlbWU+PGE6Zm9udFNjaGVtZSBuYW1lPSJPZmZpY2UiPjxhOm1ham9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSBMaWdodCIgcGFub3NlPSIwMjBGMDMwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8gTGlnaHQiLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyBMaWdodCIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz48YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPjxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+PGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5cGVmYWNlPSJOeWFsYSIvPjxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+PGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz48YTpmb250IHNjcmlwdD0iS2htciIgdHlwZWZhY2U9Ik1vb2xCb3JhbiIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+PGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+PGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+PGE6Zm9udCBzY3JpcHQ9IkFybW4iIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJCdWdpIiB0eXBlZmFjZT0iTGVlbGF3YWRlZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJCb3BvIiB0eXBlZmFjZT0iTWljcm9zb2Z0IEpoZW5nSGVpIi8+PGE6Zm9udCBzY3JpcHQ9IkphdmEiIHR5cGVmYWNlPSJKYXZhbmVzZSBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ikxpc3UiIHR5cGVmYWNlPSJTZWdvZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJNeW1yIiB0eXBlZmFjZT0iTXlhbm1hciBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ik5rb28iIHR5cGVmYWNlPSJFYnJpbWEiLz48YTpmb250IHNjcmlwdD0iT2xjayIgdHlwZWZhY2U9Ik5pcm1hbGEgVUkiLz48YTpmb250IHNjcmlwdD0iT3NtYSIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJQaGFnIiB0eXBlZmFjZT0iUGhhZ3NwYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJuIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyaiIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmUiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTb3JhIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJUYWxlIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFRhaSBMZSIvPjxhOmZvbnQgc2NyaXB0PSJUYWx1IiB0eXBlZmFjZT0iTWljcm9zb2Z0IE5ldyBUYWkgTHVlIi8+PGE6Zm9udCBzY3JpcHQ9IlRmbmciIHR5cGVmYWNlPSJFYnJpbWEiLz48L2E6bWFqb3JGb250PjxhOm1pbm9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSIgcGFub3NlPSIwMjBGMDUwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8iLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPjxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz48YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPjxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+PGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz48YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz48YTpmb250IHNjcmlwdD0iQXJtbiIgdHlwZWZhY2U9IkFyaWFsIi8+PGE6Zm9udCBzY3JpcHQ9IkJ1Z2kiIHR5cGVmYWNlPSJMZWVsYXdhZGVlIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IkJvcG8iIHR5cGVmYWNlPSJNaWNyb3NvZnQgSmhlbmdIZWkiLz48YTpmb250IHNjcmlwdD0iSmF2YSIgdHlwZWZhY2U9IkphdmFuZXNlIFRleHQiLz48YTpmb250IHNjcmlwdD0iTGlzdSIgdHlwZWZhY2U9IlNlZ29lIFVJIi8+PGE6Zm9udCBzY3JpcHQ9Ik15bXIiIHR5cGVmYWNlPSJNeWFubWFyIFRleHQiLz48YTpmb250IHNjcmlwdD0iTmtvbyIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJPbGNrIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJPc21hIiB0eXBlZmFjZT0iRWJyaW1hIi8+PGE6Zm9udCBzY3JpcHQ9IlBoYWciIHR5cGVmYWNlPSJQaGFnc3BhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cm4iIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJqIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyZSIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlNvcmEiIHR5cGVmYWNlPSJOaXJtYWxhIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbGUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgVGFpIExlIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbHUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgTmV3IFRhaSBMdWUiLz48YTpmb250IHNjcmlwdD0iVGZuZyIgdHlwZWZhY2U9IkVicmltYSIvPjwvYTptaW5vckZvbnQ+PC9hOmZvbnRTY2hlbWU+PGE6Zm10U2NoZW1lIG5hbWU9Ik9mZmljZSI+PGE6ZmlsbFN0eWxlTHN0PjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj48YTpnc0xzdD48YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMTAwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48YTp0aW50IHZhbD0iNjcwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6bHVtTW9kIHZhbD0iMTA1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6dGludCB2YWw9IjczMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMDUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDkwMDAiLz48YTp0aW50IHZhbD0iODEwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+PGE6Z3NMc3Q+PGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6bHVtTW9kIHZhbD0iMTAyMDAwIi8+PGE6dGludCB2YWw9Ijk0MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSI1MDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNhdE1vZCB2YWw9IjExMDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSI5OTAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjxhOnNoYWRlIHZhbD0iNzgwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjwvYTpmaWxsU3R5bGVMc3Q+PGE6bG5TdHlsZUxzdD48YTpsbiB3PSI2MzUwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48YTptaXRlciBsaW09IjgwMDAwMCIvPjwvYTpsbj48YTpsbiB3PSIxMjcwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PGE6bWl0ZXIgbGltPSI4MDAwMDAiLz48L2E6bG4+PGE6bG4gdz0iMTkwNTAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjxhOm1pdGVyIGxpbT0iODAwMDAwIi8+PC9hOmxuPjwvYTpsblN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdD48YTpvdXRlclNoZHcgYmx1clJhZD0iNTcxNTAiIGRpc3Q9IjE5MDUwIiBkaXI9IjU0MDAwMDAiIGFsZ249ImN0ciIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjYzMDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz48L2E6ZWZmZWN0THN0PjwvYTplZmZlY3RTdHlsZT48L2E6ZWZmZWN0U3R5bGVMc3Q+PGE6YmdGaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5NTAwMCIvPjxhOnNhdE1vZCB2YWw9IjE3MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPjxhOmdzTHN0PjxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjE1MDAwMCIvPjxhOnNoYWRlIHZhbD0iOTgwMDAiLz48YTpsdW1Nb2QgdmFsPSIxMDIwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9Ijk4MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PGE6c2hhZGUgdmFsPSI5MDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMzAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSI2MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjwvYTpnc0xzdD48YTpsaW4gYW5nPSI1NDAwMDAwIiBzY2FsZWQ9IjAiLz48L2E6Z3JhZEZpbGw+PC9hOmJnRmlsbFN0eWxlTHN0PjwvYTpmbXRTY2hlbWU+PC9hOnRoZW1lRWxlbWVudHM+PGE6b2JqZWN0RGVmYXVsdHMvPjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz48YTpleHRMc3Q+PGE6ZXh0IHVyaT0iezA1QTRDMjVDLTA4NUUtNDM0MC04NUEzLUE1NTMxRTUxMERCMn0iPjx0aG0xNTp0aGVtZUZhbWlseSB4bWxuczp0aG0xNT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvdGhlbWVtbC8yMDEyL21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSIgaWQ9Ins2MkY5MzlCNi05M0FGLTREQjgtOUM2Qi1ENkM3REZEQzU4OUZ9IiB2aWQ9Ins0QTNDNDZFOC02MUNDLTQ2MDMtQTU4OS03NDIyQTQ3QThFNEF9Ii8+PC9hOmV4dD48L2E6ZXh0THN0PjwvYTp0aGVtZT5QSwMECgAAAAAAAAAhAHmhgGxSBgAAUgYAAA0AAAB4bC9zdHlsZXMueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHN0eWxlU2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIHgxNnIyIHhyIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiIHhtbG5zOngxNnIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvMDIvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiI+PGZvbnRzIGNvdW50PSIxIiB4MTRhYzprbm93bkZvbnRzPSIxIj48Zm9udD48c3ogdmFsPSIxMSIvPjxjb2xvciB0aGVtZT0iMSIvPjxuYW1lIHZhbD0iQ2FsaWJyaSIvPjxmYW1pbHkgdmFsPSIyIi8+PHNjaGVtZSB2YWw9Im1pbm9yIi8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSIyIj48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJncmF5MTI1Ii8+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjEiPjxib3JkZXI+PGxlZnQvPjxyaWdodC8+PHRvcC8+PGJvdHRvbS8+PGRpYWdvbmFsLz48L2JvcmRlcj48L2JvcmRlcnM+PGNlbGxTdHlsZVhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIHhmSWQ9IjAiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9IjEiPjxjZWxsU3R5bGUgbmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiLz48L2NlbGxTdHlsZXM+PGR4ZnMgY291bnQ9IjAiLz48dGFibGVTdHlsZXMgY291bnQ9IjAiIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtMiIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVMaWdodDE2Ii8+PGV4dExzdD48ZXh0IHVyaT0ie0VCNzlERUYyLTgwQjgtNDNlNS05NUJELTU0Q0JEREY5MDIwQ30iIHhtbG5zOngxND0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvbWFpbiI+PHgxNDpzbGljZXJTdHlsZXMgZGVmYXVsdFNsaWNlclN0eWxlPSJTbGljZXJTdHlsZUxpZ2h0MSIvPjwvZXh0PjxleHQgdXJpPSJ7OTI2MEE1MTAtRjMwMS00NmE4LTg2MzUtRjUxMkQ2NEJFNUY1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp0aW1lbGluZVN0eWxlcyBkZWZhdWx0VGltZWxpbmVTdHlsZT0iVGltZVNsaWNlclN0eWxlTGlnaHQxIi8+PC9leHQ+PC9leHRMc3Q+PC9zdHlsZVNoZWV0PlBLAwQKAAAAAAAAACEA0IywC4EAAACBAAAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHNzdCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIi8+UEsDBAoAAAAAAAAAIQDcCx83XQIAAF0CAAARAAAAZG9jUHJvcHMvY29yZS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8Y3A6Y29yZVByb3BlcnRpZXMgeG1sbnM6Y3A9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmRjdGVybXM9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIHhtbG5zOmRjbWl0eXBlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48ZGM6Y3JlYXRvcj5kdW5jYW48L2RjOmNyZWF0b3I+PGNwOmxhc3RNb2RpZmllZEJ5PmR1bmNhbjwvY3A6bGFzdE1vZGlmaWVkQnk+PGRjdGVybXM6Y3JlYXRlZCB4c2k6dHlwZT0iZGN0ZXJtczpXM0NEVEYiPjIwMTktMDEtMzFUMTY6NDg6MDNaPC9kY3Rlcm1zOmNyZWF0ZWQ+PGRjdGVybXM6bW9kaWZpZWQgeHNpOnR5cGU9ImRjdGVybXM6VzNDRFRGIj4yMDE5LTAxLTMxVDE2OjQ4OjI4WjwvZGN0ZXJtczptb2RpZmllZD48L2NwOmNvcmVQcm9wZXJ0aWVzPlBLAwQKAAAAAAAAACEAYUkJEBEDAAARAwAAEAAAAGRvY1Byb3BzL2FwcC54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8UHJvcGVydGllcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZXh0ZW5kZWQtcHJvcGVydGllcyIgeG1sbnM6dnQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzIj48QXBwbGljYXRpb24+TWljcm9zb2Z0IEV4Y2VsPC9BcHBsaWNhdGlvbj48RG9jU2VjdXJpdHk+MDwvRG9jU2VjdXJpdHk+PFNjYWxlQ3JvcD5mYWxzZTwvU2NhbGVDcm9wPjxIZWFkaW5nUGFpcnM+PHZ0OnZlY3RvciBzaXplPSIyIiBiYXNlVHlwZT0idmFyaWFudCI+PHZ0OnZhcmlhbnQ+PHZ0Omxwc3RyPldvcmtzaGVldHM8L3Z0Omxwc3RyPjwvdnQ6dmFyaWFudD48dnQ6dmFyaWFudD48dnQ6aTQ+MTwvdnQ6aTQ+PC92dDp2YXJpYW50PjwvdnQ6dmVjdG9yPjwvSGVhZGluZ1BhaXJzPjxUaXRsZXNPZlBhcnRzPjx2dDp2ZWN0b3Igc2l6ZT0iMSIgYmFzZVR5cGU9Imxwc3RyIj48dnQ6bHBzdHI+U2hlZXQxPC92dDpscHN0cj48L3Z0OnZlY3Rvcj48L1RpdGxlc09mUGFydHM+PENvbXBhbnk+PC9Db21wYW55PjxMaW5rc1VwVG9EYXRlPmZhbHNlPC9MaW5rc1VwVG9EYXRlPjxTaGFyZWREb2M+ZmFsc2U8L1NoYXJlZERvYz48SHlwZXJsaW5rc0NoYW5nZWQ+ZmFsc2U8L0h5cGVybGlua3NDaGFuZ2VkPjxBcHBWZXJzaW9uPjE2LjAzMDA8L0FwcFZlcnNpb24+PC9Qcm9wZXJ0aWVzPlBLAQIUAAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAhQACgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAAAAAAAAAAAAAAAAwQQAAF9yZWxzLy5yZWxzUEsBAhQACgAAAAAAAAAhALpwnmbKBgAAygYAAA8AAAAAAAAAAAAAAAAANgcAAHhsL3dvcmtib29rLnhtbFBLAQIUAAoAAAAAAAAAIQCBPpSXugIAALoCAAAaAAAAAAAAAAAAAAAAAC0OAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc1BLAQIUAAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAAAAAAAAAAAAAAB8RAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWxQSwECFAAKAAAAAAAAACEAwRcQvsYgAADGIAAAEwAAAAAAAAAAAAAAAAD5FAAAeGwvdGhlbWUvdGhlbWUxLnhtbFBLAQIUAAoAAAAAAAAAIQB5oYBsUgYAAFIGAAANAAAAAAAAAAAAAAAAAPA1AAB4bC9zdHlsZXMueG1sUEsBAhQACgAAAAAAAAAhANCMsAuBAAAAgQAAABQAAAAAAAAAAAAAAAAAbTwAAHhsL3NoYXJlZFN0cmluZ3MueG1sUEsBAhQACgAAAAAAAAAhANwLHzddAgAAXQIAABEAAAAAAAAAAAAAAAAAID0AAGRvY1Byb3BzL2NvcmUueG1sUEsBAhQACgAAAAAAAAAhAGFJCRARAwAAEQMAABAAAAAAAAAAAAAAAAAArD8AAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAAAAoACgCAAgAA60IAAAAA";var xr=s=>typeof s=="object"&&typeof s.row<"u"&&typeof s.column<"u";var ue=class{start_;end_;constructor(e,t=e,i=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),i&&this.Normalize()}static FromColumn(e){return new ue({row:1/0,column:e})}static FromRow(e){return new ue({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let i=new ue(e.start,e.end);for(let n of t)n&&(i.ConsumeAddress(n.start),i.ConsumeAddress(n.end));return i}static Bleed(e,t=1){return new ue({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new ue(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can\'t convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,i=0;for(let n=this.start_.row;n<=this.end_.row;n++)for(let r=this.start_.column;r<=this.end_.column;r++)e[i++]={row:n,column:r,sheet_id:t};return e}get left(){let e=new ue(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new ue(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new ue(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new ue(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don\'t iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let i=this.start_.row;i<=this.end_.row;i++)e({column:t,row:i,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=ue.ColumnToLabel(this.start_.column),e+=":"+ue.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=ue.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+ue.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var Zi=s=>typeof s=="object"&&!!s&&typeof s.real=="number"&&typeof s.imaginary=="number";var Ft=s=>typeof s=="object"&&!!s&&typeof s.value=="number"&&typeof s.unit=="string";var Re=s=>{switch(typeof s){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return s===null?0:Zi(s)?7:Ft(s)?9:5;case"string":return s[0]==="="?1:2;default:return 6}};var be=class{static StringToColumn(e){let t=0;e=e.toUpperCase();for(let i=0;i<e.length;i++)t*=26,t+=e.charCodeAt(i)-64;return t-1}value;type=0;calculated;calculated_type;formatted;rendered_type;style;area;merge_area;table;renderer_data;render_clean=[];note;hyperlink;editing;render_function;click_function;validation;constructor(e,t){typeof e<"u"&&this.Set(e,t)}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=Re(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=Re(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=Re(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var zi=s=>!s.cells,Li=s=>!!s[0]&&zi(s[0]),Ui=s=>!!s[0]&&s[0].row!==void 0,ct=class{data=[];rows_=0;columns_=0;get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let i=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(n=>{if(n.length>=e){let r=n.slice(0,e),a=e+t,o=n.slice(e);for(let u=0;u<o.length;u++)r[a++]=o[u];return r}return n}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(i=>i.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let i=[e,0,[]];for(let n=1;n<t;n++)i.push([]);Array.prototype.splice.apply(this.data,i),this.rows_+=t}GetCell(e,t){let{row:i,column:n}=e;if(!this.data[i])if(t)this.data[i]=[],this.rows_=Math.max(this.rows_,i+1);else return;return this.data[i][n]||t&&(this.data[i][n]=new be,this.columns_=Math.max(this.columns_,n+1)),this.data[i][n]}EnsureCell(e){let{row:t,column:i}=e,n=this.data[t];n||(this.data[t]=n=[],this.rows_=Math.max(this.rows_,t+1));let r=n[i];return r||(r=n[i]=new be,this.columns_=Math.max(this.columns_,i+1)),r}FromArray(e=[],t=!1){this.data=[];let i=0,n=0;if(t){n=e.length;for(let r=0;r<n;r++){let a=e[r];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)this.data[o]||(this.data[o]=[]),this.data[o][r]=new be(a[o])}}else{i=e.length;for(let r=0;r<i;r++){let a=[],o=e[r];n=Math.max(n,o.length);for(let u=0;u<o.length;u++)a[u]=new be(o[u]);this.data[r]=a}}this.rows_=i,this.columns_=n}FromJSON(e=[],t){if(this.data=[],!Li(e)){let n=[];if(Ui(e))for(let r of e)for(let a of r.cells)n.push({...a,row:r.row});else for(let r of e)for(let a of r.cells)n.push({...a,column:r.column});e=n}let i=[];for(let n of e){this.data[n.row]||(this.data[n.row]=[]);let r=new be(n.value);if(typeof n.calculated<"u"&&r.SetCalculatedValue(n.calculated,n.calculated_type),t&&typeof n.style_ref<"u"&&(r.style=t[n.style_ref]),typeof n.note<"u"&&(r.note=n.note),typeof n.hyperlink<"u"&&(r.hyperlink=n.hyperlink),this.data[n.row][n.column]&&this.data[n.row][n.column].area&&(r.area=this.data[n.row][n.column].area),this.data[n.row][n.column]=r,n.area){let a=new ue(n.area.start,n.area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let u=a.start.column;u<=a.end.column;u++)this.data[o]||(this.data[o]=[]),this.data[o][u]||(this.data[o][u]=new be),this.data[o][u].area=a}if(n.table&&i.push({...n.table}),n.merge_area){let a=new ue(n.merge_area.start,n.merge_area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let u=a.start.column;u<=a.end.column;u++)this.data[o]||(this.data[o]=[]),this.data[o][u]||(this.data[o][u]=new be),this.data[o][u].merge_area=a}n.validation&&(r.validation=n.validation)}for(let n of i)for(let r=n.area.start.row;r<=n.area.end.row;r++)for(let a=n.area.start.column;a<=n.area.end.column;a++)this.data[r]||(this.data[r]=[]),this.data[r][a]||(this.data[r][a]=new be),this.data[r][a].table=n;this.rows_=this.data.length,this.columns_=this.data.reduce((n,r)=>Math.max(n,r.length),0)}toJSON(e={}){let t=0,i=0,n=this.data.length-1,r;e.subset&&(t=e.subset.start.column,i=e.subset.start.row,n=e.subset.end.row);let a=[],o=-1,u=-1,h={},l={};for(let c=i;c<=n;c++)if(this.data[c]){let A=this.data[c];r=A.length-1,e.subset&&(r=e.subset.end.column);for(let p=t;p<=r;p++){let m=A[p],g=m&&m.merge_area&&m.merge_area.start.row===c&&m.merge_area.start.column===p,b=m&&m.area&&m.area.start.row===c&&m.area.start.column===p,w=m&&m.table&&m.table.area.start.row===c&&m.table.area.start.column===p,D=m?m.type===2&&!m.value:!0;if(m&&(!D||e.preserve_empty_strings)&&(g||m.type||m.calculated_type&&e.expand_arrays||m.calculated_type&&e.calculated_value||m.validation||e.decorated_cells&&m.style&&(m.style.fill||m.style.border_bottom||m.style.border_top||m.style.border_left||m.style.border_right))){let _={row:c,column:p,value:m.value};m.note&&(_.note=m.note),m.hyperlink&&(_.hyperlink=m.hyperlink),e.preserve_type&&(_.type=m.type),e.sheet_id&&(_.sheet_id=e.sheet_id),e.calculated_value&&typeof m.calculated<"u"&&(_.calculated=m.calculated,(e.preserve_type||m.calculated_type===6)&&(_.calculated_type=m.calculated_type)),m.table&&w&&e.tables&&(_.table=JSON.parse(JSON.stringify(m.table))),m.area&&b&&(_.area=m.area.toJSON()),m.merge_area&&(_.merge_area=m.merge_area.toJSON()),m.validation&&(_.validation=m.validation),e.cell_style_refs&&e.cell_style_refs[p]&&e.cell_style_refs[p][c]&&(_.style_ref=e.cell_style_refs[p][c],e.cell_style_refs[p][c]=0),h[c]=c,l[p]=p,o=Math.max(c,o),u=Math.max(p,u),a.push(_)}}}if(e.nested){let c=Object.keys(h),A=Object.keys(l);if(c.length<=A.length&&c.length){let p={},m=[];for(let g of a){let{row:b,...w}=g;p[g.row]||(p[g.row]=[]),p[g.row].push(w)}for(let g of c){let b=Number(g);m.push({row:b,cells:p[b]})}return{data:m,rows:o,columns:u+1}}else if(A.length){let p={},m=[];for(let g of a){let{column:b,...w}=g;p[g.column]||(p[g.column]=[]),p[g.column].push(w)}for(let g of A){let b=Number(g);m.push({column:b,cells:p[b]})}return{data:m,rows:o,columns:u+1}}}return{data:a,rows:o+1,columns:u+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let i=[],n=this.data.slice(e.row,t.row+1),r=e.column,a=t.column+1;for(let o of n){let u=[];for(let h=r,l=0;h<a;h++,l++){let c=o[h];u.push(c?c.value:void 0)}i.push(u)}return i}GetRange(e,t,i=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue()):a.push(void 0);n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue()):a.push(void 0);n.push(a)}return n}GetRange4(e,t=e,i=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue4()):a.push({type:0});n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue4()):a.push({type:0});n.push(a)}return{type:8,value:n}}Apply(e,t,i=!1){if(xr(e)&&(e=new ue(e)),e.entire_column||e.entire_row)throw new Error("don\'t iterate infinite cells");let n=e.start,r=e.end;if(i)for(let a=n.row;a<=r.row;a++){this.data[a]||(this.data[a]=[]);let o=this.data[a];for(let u=n.column;u<=r.column;u++)o[u]||(o[u]=new be),t(o[u],u,a)}else for(let a=n.row;a<=r.row;a++)if(this.data[a]){let o=this.data[a];for(let u=n.column;u<=r.column;u++)o[u]&&t(o[u],u,a)}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let i=e.start.row,n=0;i<=e.end.row;i++,n++){this.data[i]||(this.data[i]=[]);let r=this.data[i];if(t[n])for(let a=e.start.column,o=0;a<=e.end.column;a++,o++)r[a]||(r[a]=new be),r[a].Set(t[n][o])}else{let i=Re(t);for(let n=e.start.row;n<=e.end.row;n++){this.data[n]||(this.data[n]=[]);let r=this.data[n];for(let a=e.start.column;a<=e.end.column;a++)r[a]||(r[a]=new be),r[a].Set(t,i)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let i of t)i&&e(i)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var le=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let n=self?.document?.location;if(n&&n.search&&/locale=([^?&]+?)(?:\\?|$|&)/.test(n.search)){let r=n.search.match(/locale=(.*?)(?:\\?|$|&)/);r&&(this.locale=r[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let i=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,i),i=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,i),i=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,i),i=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,i),i=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,i),i=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,i),i=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,i),i=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,i),i=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,i),i=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,i),i=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,i),i=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,i)}static UpdateDateComponent(e,t,i){t>=0&&(this.date_components.short_days[t]=i.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=i.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=i.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=i.toLocaleString(this.locale,{month:"long"}))}};ie(le,"locale","en-us"),ie(le,"decimal_separator","."),ie(le,"argument_separator",","),ie(le,"grouping_separator",","),ie(le,"date_components",{short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]});le.UpdateLocale();var me;(p=>{let s=JSON.stringify({}),e;(D=>(D.None="",D.Left="left",D.Center="center",D.Right="right"))(e=p.HorizontalAlign||={});let t;(D=>(D.None="",D.Top="top",D.Bottom="bottom",D.Middle="middle"))(t=p.VerticalAlign||={}),p.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},p.CompositeBorders=m=>({top:{width:m.border_top||0,color:m.border_top_fill||{}},left:{width:m.border_left||0,color:m.border_left_fill||{}},right:{width:m.border_right||0,color:m.border_right_fill||{}},bottom:{width:m.border_bottom||0,color:m.border_bottom_fill||{}}}),p.Merge=(m,g,b=!0)=>{let w=b?{...m,...g}:{...g};return JSON.parse(JSON.stringify(w))},p.Composite=m=>JSON.parse(JSON.stringify(m.reduce((g,b)=>({...g,...b}),{}))),p.Empty=m=>JSON.stringify(m)===s,p.ValidColor=m=>!!(m&&!m.none&&(m.text||m.theme||m.theme===0)),p.ParseFontSize=(m="",g="em")=>{let b=m.match(/(-*[\\d.]+)\\s*(\\S*)/);if(b){let w=Number(b[1]);if(!w||isNaN(w)||w<0)return{};let D=b[2].toLowerCase()||g;if(D==="pt"||D==="em"||D==="%"||D==="px")return{font_size:{unit:D,value:w}}}return{}},p.RelativeFontSize=(m,g)=>{let b=12,w=12;switch(m.font_size?.unit){case"pt":if(!m.font_size.value)return 1;w=m.font_size.value;break;case"px":if(!m.font_size.value)return 1;w=Math.round(m.font_size.value*300/4)/100;break;case"em":return m.font_size.value||1;case"%":return(m.font_size.value||100)/100;default:return 1}switch(g.font_size?.unit){case"pt":if(!g.font_size.value)return 1;b=g.font_size.value;break;case"px":if(!g.font_size.value)return 1;b=Math.round(g.font_size.value*300/4)/100;break;default:return 1}return w/b},p.FontSize=(m,g=!0)=>{let b=m.font_size?.value;switch(m.font_size?.unit){case"pt":return(b||12)+"pt";case"px":return g?Math.round((b||16)*300/4)/100+"pt":(b||16)+"px";case"em":return(b||1)+"em";case"%":return(b||100)+"%"}return""},p.Font=(m,g=1)=>{let b=[];return m.bold&&b.push("bold"),m.italic&&b.push("italic"),b.push(((m.font_size?.value||0)*g).toFixed(2)+(m.font_size?.unit||"pt")),b.push(m.font_face||""),b.join(" ")}})(me||={});var Tt=class{Darken(e,t,i,n,r=!1){let{h:a,s:o,l:u}=this.RGBToHSL(e,t,i);return r?u-=u*n/100:u-=n/100,u=Math.max(0,Math.min(1,u)),this.HSLToRGB(a,o,u)}Lighten(e,t,i,n,r=!1){let{h:a,s:o,l:u}=this.RGBToHSL(e,t,i);return r?u+=u*n/100:u+=n/100,u=Math.max(0,Math.min(1,u)),this.HSLToRGB(a,o,u)}RGBToHSL(e,t,i){e/=255,t/=255,i/=255;let n=Math.max(e,t,i),r=Math.min(e,t,i),a=0,o=0,u=(n+r)/2;if(n===r)a=o=0;else{let h=n-r;switch(o=u>.5?h/(2-n-r):h/(n+r),n){case e:a=(t-i)/h+(t<i?6:0);break;case t:a=(i-e)/h+2;break;case i:a=(e-t)/h+4;break}a/=6}return{h:a*360,s:o,l:u}}HSLToRGB(e,t,i){let n,r,a;if(t===0)n=r=a=i;else{e=e/360;let o=i<.5?i*(1+t):i+t-i*t,u=2*i-o;n=this.HueToRGB(u,o,e+1/3),r=this.HueToRGB(u,o,e),a=this.HueToRGB(u,o,e-1/3)}return{r:Math.round(n*255),g:Math.round(r*255),b:Math.round(a*255)}}HueToRGB(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<1/2?t:i<2/3?e+(t-e)*(2/3-i)*6:e}},Wi=new Tt;var wt=Fe(dt());var Qr=Fe(ut()),Ra=Fe(dt()),Kr=(s,e)=>Qr.decode(e),ei={ignoreAttributes:!1,attributeNamePrefix:"__",trimValues:!1,textNodeName:"text__",tagValueProcessor:Kr,ignoreDeclaration:!0},ht={ignoreAttributes:!1,attributesGroupName:"a$",attributeNamePrefix:"",textNodeName:"t$",trimValues:!1,ignoreDeclaration:!0,isArray:(s,e,t,i)=>/Relationship$/.test(s),tagValueProcessor:Kr},oe=class{static FindChild(e={},t){let i=t.split("/");for(let n of i)if(e=e[n],!e)return;return e}static FindAll(e={},t){let i=t.split("/");if(i[0]==="."&&i.shift(),i[0]==="..")throw new Error("invalid path (no access to parent)");if(i[0]==="")throw new Error("invalid path (no access to root)");if(i[0]==="**")throw new Error("ENOTIMPL");return this.FindAllTail(e,i)}static FindAllTail(e,t){if(Array.isArray(e))return e.reduce((i,n)=>i.concat(this.FindAllTail(n,t)),[]);for(let i=0;i<t.length;i++){let n=t[i];if(n==="*"?e=Object.keys(e).filter(r=>r!=="a$"&&r!=="t$").map(r=>e[r]):e=e[n],!e)return[];if(Array.isArray(e)){if(i===t.length-1||e.length===0)return e;let r=t.slice(1);return e.reduce((a,o)=>a.concat(this.FindAllTail(o,r)),[])}}return[e]}};var Ue=class{strings=[];reverse={};FromXML(e){this.strings=[],this.reverse={};let t=0;for(let i of oe.FindAll(e,"sst/si")){if(i.t){let n="";typeof i.t=="string"?n=i.t:i.t.t$&&(n=i.t.t$),this.strings[t]=n,this.reverse[n]=t}else if(i.r){let r=oe.FindAll(i.r,"t").map(a=>typeof a=="string"?a:a.t$||"").join("");this.strings[t]=r,this.reverse[r]=t}else console.warn(` ** unexpected shared string @ ${t}`),console.info(i);t++}}Get(e){return this.strings[e]}Ensure(e){e[0]==="\'"&&(e=e.substring(1));let t=this.reverse[e];return typeof t=="number"||(t=this.strings.length,this.strings.push(e),this.reverse[e]=t),t}};var jt=class{colors={};FromXML(e){let t=Object.keys(e)[0],i="",n=t.toString().match(/^(.*?):/);if(n&&(i=n[1]+":"),e[t]&&e[t][`${i}themeElements`]){let r=e[t][`${i}themeElements`][`${i}clrScheme`];for(let a of jt.color_map){let o=r[`${i}${a}`],u,h="rgb";o[`${i}srgbClr`]?(h="rgb",u=o[`${i}srgbClr`].a$.val||""):o[`${i}sysClr`]&&(h="system",u=o[`${i}sysClr`].a$.lastClr||""),this.colors[a]={name:a,value:u,type:h}}}}},Be=jt;ie(Be,"color_map",["lt1","dk1","lt2","dk2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink"]);var Ie=class{date_format=!1;string_format=!1;fraction_format=!1;twelve_hour=!1;fraction_denominator=0;fraction_integer=!0;fraction_align=0;fraction_denominator_digits=0;integer_min_digits=0;decimal_min_digits=0;decimal_max_digits=0;grouping=!1;has_number_format=!1;prefix=[{text:""}];suffix=[{text:""}];scaling=0;percent=!1;exponential=!1;has_asterisk=!1};var ti=42,ri=95,Yt=63,pt=48,ii=46,$t=44,ni=37,Ht=34,Xe=35,si=59,ft=92,ai=64,Hn=91,qn=93,oi=69,ui=101,Jn=72,Xn=104,Qn=77,Kn=109,es=83,ts=115,rs=68,is=100,ns=89,ss=121,as=65,os=97;var xe=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new Ie,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new Ie,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case ft:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case Ht:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case ft:throw new Error("invalid escape character in formatting block");case qn:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\\/([#?0-9]+)(?:$|[^#?0-9])/,i=this.pattern.substr(this.char_index).match(e);if(!i)return!1;let n=(i[1]||"").length+i[2].length+i[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!i[1];let r=Number(i[3]);return isNaN(r)||(this.current_section.fraction_denominator=r),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=i[3].length,this.char_index+=n,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let i=!1;for(let n=this.char_index+1;!i&&n<this.characters.length;n++){let r=this.characters[n];if(r===this.decimal_mark||r===Xe||r===pt)i=!0;else if(r!==$t)break}if(i){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case Xe:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case pt:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===Yt||e===Xe)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case si:this.char_index++,this.current_section=new Ie,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case ai:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case pt:case Xe:case ii:case $t:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case Hn:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case Ht:this.AppendString(this.ConsumeString());break;case Yt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case ri:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case ti:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case ui:case oi:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case ni:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case ft:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let i=t-1;i;i--){let n=this.sections[0].prefix[i];if(n.flag===3){/h/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let i=t+1;i<this.sections[0].prefix.length;i++){let n=this.sections[0].prefix[i];if(n.flag===3){/s/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),i={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)i.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(i.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)i.text+=this.pattern[this.char_index++];return i}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case si:this.char_index=this.characters.length;break;case pt:case Xe:case ui:case oi:case ni:case ai:this.date_pattern=!1;break;case Jn:case Xn:case Qn:case Kn:case es:case ts:case rs:case is:case ns:case ss:this.AppendTextPart(this.ConsumeDatePart());break;case as:case os:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case Ht:this.AppendString(this.ConsumeString());break;case Yt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case ri:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case ti:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case ft:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};ie(xe,"date_pattern",!1),ie(xe,"pattern",""),ie(xe,"char_index",0),ie(xe,"characters",[]),ie(xe,"sections",[]),ie(xe,"current_section",new Ie),ie(xe,"preserve_formatting_characters",!1),ie(xe,"decimal_mark",ii),ie(xe,"group_separator",$t);var us=s=>(s>=60&&s--,new Date(-22090752e5+864e5*s)),li=(s,e=!0)=>{if(e){let t=new Date(s),i=new Date;i.setUTCMilliseconds(t.getUTCMilliseconds()),i.setUTCSeconds(t.getUTCSeconds()),i.setUTCMinutes(t.getUTCMinutes()),i.setUTCHours(t.getHours()),i.setUTCDate(t.getDate()),i.setUTCMonth(t.getMonth()),i.setUTCFullYear(t.getFullYear()),s=i.getTime()}return s=(s+22090752e5)/864e5,s>=60&&s++,s},ke=class{magic_decimal=!1;transform_value;_pattern="";sections;decimal_zero_regexp=[];cloned=[];get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}constructor(e){if(this._pattern=e,this.sections=xe.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new Ie),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}static FormatPartsAsText(e,t=0){let i=-1,n=e.map((r,a)=>{switch(r.flag){case 2:return i=a,r.text;case 1:return r.text.replace(/./g," ");case 6:return"";default:return r.text}});if(i>=0&&t){let r=n.reduce((o,u,h)=>h===i?o:o+u.length,0),a="";for(let o=0;o<t-r;o++)a+=n[i];n[i]=a}return n.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",i=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let n="";for(let r=0;r<e.fraction_denominator_digits;r++)n+="#";t+=n,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=n}else if(e.has_number_format){for(i=0;i<e.integer_min_digits;i++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\\d#]{1,3}(?=([\\d#]{3})+(?![\\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",i=0;i<e.decimal_min_digits;i++)t+="0";for(;i<e.decimal_max_digits;i++)t+="#"}if(e.scaling){let n=Math.log10(e.scaling)/3;for(i=0;i<n;i++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.flag===6?"["+n.text+"]":n.text).join("")+t+e.suffix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let i=this.transform_value(e);if(Ft(i))e=i;else return typeof i=="string"?i:this.FormatParts(i)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],i=[],n=!1,r=!!e.imaginary;r&&(t=this.FormatParts(e.imaginary),r=t.some(u=>/[1-9]/.test(u.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",n=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",n=!0));let a=!!e.real;a&&(i=this.FormatParts(e.real),a=i.some(u=>/[1-9]/.test(u.text)));let o=[];if(a||!a&&!r){if(o.push(...i),r){let u=Math.abs(e.imaginary);o.push({text:e.imaginary<0?` ${ke.minus_character} `:" + "});let h=n?[]:this.FormatParts(Math.abs(e.imaginary));o.push(...h,{text:ke.imaginary_character})}}else r&&o.push(...t,{text:ke.imaginary_character});return o}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:i}=this.BaseFormat(e),n=[];if(i.date_format||i.string_format)for(let r of t)typeof r=="string"?n.push({text:r}):n.push(r);else this.magic_decimal&&t[1]===""&&t.splice(1,1),n=[...i.prefix.map(r=>({...r})),{text:i.has_number_format?t.join(le.decimal_separator):""},...i.suffix.map(r=>({...r}))];for(let r=1;r<n.length;r++)n[r].flag===n[r-1].flag&&(n[r].text=n[r-1].text+n[r].text,n[r-1].text="");return n.filter(r=>r.text)}Format(e,t=0){return ke.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=us(e),i=this.sections[0],n=t.getUTCHours();return i.twelve_hour&&(n>12&&(n-=12),n===0&&(n=12)),{parts:i.prefix.map(a=>{if(a.flag===4)return a.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(a.flag===3){switch(a.text.toLowerCase()){case"am/pm":case"a/p":{let u=a.text.split("/");return{text:t.getUTCHours()>12?u[1]:u[0]}}case"mmmmm":return{text:le.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return a.text==="MMMM"?{text:le.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.long_months[t.getUTCMonth()]};case"mmm":return a.text==="MMM"?{text:le.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return a.text==="DDDDD"||a.text==="DDDD"?{text:le.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.long_days[t.getUTCDay()]};case"ddd":return a.text==="DDD"?{text:le.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(n.toString(),2)};case"h":return{text:this.ZeroPad(n.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let o=a.text.match(/^(s+)\\.(0+)$/);if(o)return{text:this.ZeroPad(t.getUTCSeconds().toString(),o[1].length)+le.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(o[2].length).substr(2)}}return{...a}}),section:i}}StringFormat(e,t){let i=[];for(let n of t.prefix)n.flag===5?i.push({text:e}):i.push({...n});return{parts:i,section:t}}Round2(e,t){let i=Math.pow(10,t);return Math.round(i*e)/i}FormatFraction(e,t){t.percent&&(e*=100);let i={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)i.denominator=t.fraction_denominator,i.numerator=Math.round(e*i.denominator);else if(i.error){let r=ke.fraction_limits[t.fraction_denominator_digits-1]||ke.fraction_limits[0];for(let a=2;a<=r;a++){let o=Math.round(e*a),u=Math.abs(o/a-e);if(u<i.error&&(i={numerator:o,denominator:a,error:u},!u))break}}let n=[];if(t.fraction_integer){let r=Math.floor(i.numerator/i.denominator);i.numerator%=i.denominator,(r||!i.numerator)&&(n.push(r.toString()),i.numerator&&n.push(" "))}else i.numerator||n.push("0");return i.numerator&&(n.push(i.numerator.toString()),n.push("/"),n.push(i.denominator.toString())),n.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],i=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let n=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,r=Math.pow(10,-n)/2,a=Math.abs(e);if(a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2]),t.scaling&&(a/=t.scaling,a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let o="";if(t.fraction_format)return{parts:[this.FormatFraction(a,t)],section:t};t.exponential?o=a.toExponential(t.decimal_max_digits):(t.percent&&(a*=100),o=this.Round2(a,t.decimal_max_digits).toFixed(t.decimal_max_digits)),i&&(o=o.replace(i,""));let u=o.split(".");for(;u[0].length<t.integer_min_digits;)u[0]=("0000000000000000"+u[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&u[0]==="0"&&(u[0]=""),t.grouping&&(u[0]=u[0].replace(ke.grouping_regexp,"$&"+le.grouping_separator)),{parts:u,section:t}}},De=ke;ie(De,"grouping_regexp",/\\d{1,3}(?=(\\d{3})+(?!\\d))/g),ie(De,"fraction_limits",[9,99,999,9999]),ie(De,"imaginary_character","\\u{1D456}"),ie(De,"minus_character","-");var ve=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let i=this.symbolc_name_map[e.toLowerCase()],n=this.cache[i||e];return n||(n=new De(e),this.cache[e]=n),n}static Equals(e,t){if(e===t)return!0;let i=this.Get(e),n=this.Get(t);return i.pattern===n.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new De(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new De("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};ie(ve,"cache",{}),ie(ve,"complex_general"),ie(ve,"symbolc_name_map",{}),ie(ve,"base_formats",{Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"}),ie(ve,"aliases",{Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"});ve.InitCache();var ci=new Date().getUTCFullYear(),qt=class{compare_day;compare_month;TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let i=new Date(t),r=e.replace(/[\\d\\-\\\\/,.\\s]+/g," ").toLocaleLowerCase().split(/\\s+/).map(u=>u.trim()).filter(u=>!!u);if(!r.length)return t;if(!this.compare_month){this.compare_month={};for(let u=0;u<12;u++)this.compare_month[le.date_components.long_months[u].toLocaleLowerCase().replace(/\\./,"")]=u,this.compare_month[le.date_components.short_months[u].toLocaleLowerCase().replace(/\\./,"")]=u}if(!this.compare_day){this.compare_day={};for(let u=0;u<7;u++)this.compare_day[le.date_components.long_days[u].toLocaleLowerCase().replace(/\\./,"")]=u,this.compare_day[le.date_components.short_days[u].toLocaleLowerCase().replace(/\\./,"")]=u}let a=!1,o=!1;for(let u of r){let h=!1;for(let[l,c]of Object.entries(this.compare_month))if(u===l){if(a||i.getUTCMonth()!==c)return!1;h=!0,a=!0}if(!h){for(let[l,c]of Object.entries(this.compare_day))if(u===l){if(o||i.getUTCDay()!==c)return!1;h=!0,o=!0}}if(!h)return!1}return o&&!a?!1:t}TryParse(e=""){let t=0;if(e[0]==="\'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let i=e.trim(),n=i.match(/^[$](.*?)$/);n&&(i=n[1],t|=8);let r=i.match(/^\\((.*?)\\)$/);r&&(i=r[1],t|=32);let a=i.match(/^(.*?)%\\s*$/);a&&(i=a[1],t|=4),le.decimal_separator==="."?/,/.test(i)&&(i=i.replace(/,/g,""),t|=16):(i=i.replace(/(\\d)\\s+/g,"$1"),i=i.replace(/\\./g,""),i=i.replace(/,/,"."));let o=Number(i);if(o===null||isNaN(o)){let u=e.toLowerCase();if(u==="false")return{value:!1,type:4};if(u==="true")return{value:!0,type:4};let h=this.TestDate(e);if(h!==!1&&!isNaN(h)){let l=new Date(h),c=l.getUTCFullYear();if(c>=ci-200&&c<=ci+200)return t=64,(l.getHours()||l.getMinutes()||l.getSeconds())&&(t|=128),{value:li(h),type:3,hints:t}}return{value:e,type:2}}if(r&&(o=-o),a){let u=o<0?-1:1,h=(u*o).toString().split(".");h[0]=("00"+h[0]).replace(/(\\d\\d)$/,".$1"),o=Number(h.join(""))*u}return/e/.test(e)&&(t|=2),{value:o,type:3,hints:t}}},ho=new qt;var di=Fe(ut());var Jt={top:{},left:{},bottom:{},right:{},diagonal:{}},mt=class{theme=new Be;cell_xfs=[];fonts=[];borders=[];fills=[];number_formats=[];base_number_format_id=200;modified=!1;Clamp(e,t,i){return Math.max(t,Math.min(e,i))}TintColor(e,t){let i=parseInt(e.substr(0,2),16),n=parseInt(e.substr(2,2),16),r=parseInt(e.substr(4,2),16);return t<0?(i=Math.round(i*t+i),n=Math.round(n*t+n),r=Math.round(r*t+r)):(i=Math.round((255-i)*t+i),n=Math.round((255-n)*t+n),r=Math.round((255-r)*t+r)),[i,n,r].map(a=>{let o=this.Clamp(a,0,255).toString(16);return o.length<2?"0"+o:o}).join("")}StyleOptionsFromProperties(e){let t=JSON.parse(JSON.stringify(e));for(let h of Object.keys(t))t[h]==="none"&&delete t[h];let i={},n={pattern_type:"none"},r=JSON.parse(JSON.stringify(Jt)),a={font:i,border:r};t.number_format&&(a.number_format={format:ve.Translate(t.number_format),symbolic_name:t.number_format}),t.font_size?.unit&&t.font_size.value&&(t.font_size.unit!=="pt"?console.warn("can\'t handle non-point font (FIXME)"):i.size=t.font_size.value),t.bold&&(i.bold=!0),t.italic&&(i.italic=!0),t.underline&&(i.underline=!0),t.text&&(t.text.text?i.color_argb=t.text.text:typeof t.text.theme=="number"&&(i.color_theme=t.text.theme,t.text.tint&&(i.color_tint=t.text.tint)));let o=(h,l)=>{h.width&&(l.style="thin",h.color.text?l.rgba=h.color.text:typeof h.color.theme=="number"?(l.theme=h.color.theme,h.color.tint&&(l.tint=h.color.tint)):l.color=64)},u=me.CompositeBorders(t);switch(o(u.top,r.top),o(u.left,r.left),o(u.right,r.right),o(u.bottom,r.bottom),t.vertical_align){case me.VerticalAlign.Top:a.vertical_alignment="top";break;case me.VerticalAlign.Middle:a.vertical_alignment="center";break}switch(t.horizontal_align){case me.HorizontalAlign.Center:a.horizontal_alignment="center";break;case me.HorizontalAlign.Left:a.horizontal_alignment="left";break;case me.HorizontalAlign.Right:a.horizontal_alignment="right";break}return t.fill&&(n.pattern_type="solid",t.fill.text?n.fg_color={argb:t.fill.text}:typeof t.fill.theme=="number"?(n.fg_color={theme:t.fill.theme},t.fill.tint&&(n.fg_color.tint=t.fill.tint)):n.fg_color={theme:1},a.fill=n),t.wrap&&(a.wrap=!0),a}CellXfToStyle(e){let t={},i=mt.default_styles[e.number_format];if(!i){for(let u of this.number_formats)if(u.id===e.number_format&&u.format){i=u.format;break}}if(i){let u=/\\[\\$(.)-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(u,"$1");let h=/\\[\\$-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(h,""),t.number_format=i}let n=this.fonts[0],r=this.fonts[e.font||0];r&&(r.bold&&(t.bold=!0),r.italic&&(t.italic=!0),r.underline&&(t.underline=!0),r.strike&&(t.strike=!0),n&&n.size&&r.size&&n.size!==r.size&&(t.font_size={value:100*r.size/n.size,unit:"%"}),r.color_argb?t.text={text:"#"+(r.color_argb.length>6?r.color_argb.substr(r.color_argb.length-6):r.color_argb)}:typeof r.color_theme=="number"&&(t.text={theme:r.color_theme}));let a=this.fills[e.fill||0];if(a&&a.pattern_type!=="none"){if(a.pattern_type==="gray"){let u=Math.round((a.pattern_gray||0)/1e3*255);t.fill={text:`rgb(${u}, ${u}, ${u})`}}a.pattern_type==="solid"&&a.fg_color&&(a.fg_color.argb?t.fill={text:"#"+(a.fg_color.argb.length>6?a.fg_color.argb.substr(a.fg_color.argb.length-6):a.fg_color.argb)}:typeof a.fg_color.theme=="number"&&(t.fill={theme:a.fg_color.theme},a.fg_color.tint&&(t.fill.tint=Math.round(a.fg_color.tint*1e3)/1e3)))}switch(e.horizontal_alignment){case"center":t.horizontal_align=me.HorizontalAlign.Center;break;case"right":t.horizontal_align=me.HorizontalAlign.Right;break;case"left":t.horizontal_align=me.HorizontalAlign.Left;break}switch(e.vertical_alignment){case"center":t.vertical_align=me.VerticalAlign.Middle;break;case"top":t.vertical_align=me.VerticalAlign.Top;break;case"bottom":t.vertical_align=me.VerticalAlign.Bottom;break}e.wrap_text&&(t.wrap=!0);let o=this.borders[e.border||0];return o&&(o.bottom.style&&(o.bottom.style==="double"?t.border_bottom=2:t.border_bottom=1),o.left.style&&(t.border_left=1),o.top.style&&(t.border_top=1),o.right.style&&(t.border_right=1)),t}CellXfToStyles(){return this.cell_xfs.map(e=>this.CellXfToStyle(e))}EnsureNumberFormat(e){if(typeof e.format>"u"||e.symbolic_name&&/^general$/i.test(e.symbolic_name))return 0;for(let i=0;i<100;i++){let n=mt.default_styles[i];if(n&&n===e.format)return i}for(let i of this.number_formats)if(i.format===e.format)return i.id||0;this.modified=!0;let t={id:this.base_number_format_id++,format:e.format};return this.number_formats.push(t),t.id}CompareBorderEdge(e,t){return e.color===t.color&&e.rgba===t.rgba&&e.style===t.style&&e.theme===t.theme&&e.tint===t.tint}CompareBorder(e,t){return this.CompareBorderEdge(e.top,t.top)&&this.CompareBorderEdge(e.left,t.left)&&this.CompareBorderEdge(e.bottom,t.bottom)&&this.CompareBorderEdge(e.right,t.right)&&this.CompareBorderEdge(e.diagonal,t.diagonal)}EnsureBorder(e){for(let i=0;i<this.borders.length;i++){let n=this.borders[i];if(this.CompareBorder(n,e))return i}this.modified=!0;let t=JSON.parse(JSON.stringify(e));return this.borders.push(t),this.borders.length-1}MatchColor(e,t){return!e&&!t?!0:!e||!t?!1:e.argb===t.argb&&e.indexed===t.indexed&&e.theme===t.theme&&e.tint===t.tint}EnsureFill(e){for(let i=0;i<this.fills.length;i++){let n=this.fills[i];if(this.MatchColor(e.bg_color,n.bg_color)&&this.MatchColor(e.fg_color,n.fg_color)&&e.pattern_gray===n.pattern_gray&&e.pattern_type===n.pattern_type)return i}this.modified=!0;let t={...e};return this.fills.push(t),this.fills.length-1}EnsureFont(e){let t={...this.fonts[0],...e};for(let i=0;i<this.fonts.length;i++){let n=this.fonts[i];if(n.bold===t.bold&&n.italic===t.italic&&n.underline===t.underline&&n.size===t.size&&n.strike===t.strike&&n.color_argb===t.color_argb&&n.color_theme===t.color_theme&&n.color_tint===t.color_tint&&n.family===t.family)return i}return this.modified=!0,this.fonts.push(t),this.fonts.length-1}EnsureStyle(e){let t=this.EnsureFont(e.font||{}),i=this.EnsureBorder(e.border||Jt),n=this.EnsureNumberFormat(e.number_format||{}),r=this.EnsureFill(e.fill||{pattern_type:"none"});for(let o=0;o<this.cell_xfs.length;o++){let u=this.cell_xfs[o];if(u.font===t&&u.fill===r&&u.border===i&&u.number_format===n&&!!u.wrap_text==!!e.wrap&&(!e.horizontal_alignment&&!u.horizontal_alignment||e.horizontal_alignment===u.horizontal_alignment)&&(!e.vertical_alignment&&!u.vertical_alignment||e.vertical_alignment===u.vertical_alignment))return o}this.modified=!0;let a={font:t,fill:r,border:i,number_format:n};return e.horizontal_alignment&&(a.horizontal_alignment=e.horizontal_alignment),e.vertical_alignment&&(a.vertical_alignment=e.vertical_alignment),e.wrap&&(a.wrap_text=!0),this.cell_xfs.push(a),this.cell_xfs.length-1}FromXML(e,t){let i=oe.FindAll.bind(oe,e);this.theme=t;let n=i("styleSheet/numFmts/numFmt");this.number_formats=n.map(r=>({id:Number(r.a$?.numFmtId||0),format:di.decode(r.a$?.formatCode||"")})),n=i("styleSheet/borders/border"),this.borders=n.map(r=>{let a=JSON.parse(JSON.stringify(Jt));return r.left&&(a.left.style=r.left.a$.style,a.left.color=Number(r.left.color?.a$?.indexed)),r.right&&(a.right.style=r.right.a$.style,a.right.color=Number(r.right.color?.a$?.indexed)),r.top&&(a.top.style=r.top.a$.style,a.top.color=Number(r.top.color?.a$?.indexed)),r.bottom&&(a.bottom.style=r.bottom.a$.style,a.bottom.color=Number(r.bottom.color?.a$?.indexed)),a}),n=i("styleSheet/cellXfs/xf"),this.cell_xfs=n.map(r=>{let a={number_format:Number(r.a$.numFmtId),font:Number(r.a$.fontId),fill:Number(r.a$.fillId),border:Number(r.a$.borderId),xfid:Number(r.a$.xfId)};return r.alignment&&(a.horizontal_alignment=r.alignment.a$.horizontal,a.vertical_alignment=r.alignment.a$.vertical,a.wrap_text=!!r.alignment.a$.wrapText),a}),n=i("styleSheet/fills/fill"),this.fills=n.map(r=>{let a={pattern_type:"none"};if(r.patternFill){let o=r.patternFill.a$?.patternType;switch(o){case"none":case void 0:break;case"solid":a.pattern_type="solid",r.patternFill.fgColor&&(a.fg_color={theme:r.patternFill.fgColor.a$?.theme?Number(r.patternFill.fgColor.a$.theme):void 0,indexed:r.patternFill.fgColor.a$?.indexed?Number(r.patternFill.fgColor.a$.indexed):void 0,tint:r.patternFill.fgColor.a$?.tint?Number(r.patternFill.fgColor.a$.tint):void 0,argb:r.patternFill.fgColor.a$?.rgb});break;default:{let u=o?.match(/^gray(\\d+)$/);if(u){a.pattern_type="gray",a.pattern_gray=Number(u[1]);break}}}}return a}),n=i("styleSheet/fonts/font"),this.fonts=n.map(r=>{let a={};return a.italic=typeof r.i<"u",a.bold=typeof r.b<"u",a.underline=typeof r.u<"u",a.strike=typeof r.strike<"u",r.sz&&(a.size=Number(r.sz.a$.val)),r.scheme&&(a.scheme=r.scheme.a$.val),r.name&&(a.name=r.name.a$.val),r.family&&(a.family=Number(r.family.a$.val)),r.color&&(r.color.a$?.theme&&(a.color_theme=Number(r.color.a$.theme)),r.color.a$?.tint&&(a.color_tint=Number(r.color.a$.tint)),r.color.a$?.rgb&&(a.color_argb=r.color.a$.rgb)),a})}},ze=mt;ie(ze,"default_styles",{0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"mm-dd-yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@"});var we=(s,e,t,i)=>{let r=`rId${Object.keys(s).length+1}`;return s[r]={id:r,type:e,target:t,mode:i},r};var ar=/[\\s-+=<>!()]/;var Xt=34,Qt=39,ls=160,hi=32,cs=9,ds=10,hs=13,Se=48,Qe=57,Kt=46,er=43,Ke=45,pi=40,tr=41,et=44,ps=37,rr=95,gt=36,fs=123,ms=125,tt=91,fi=93,gs=33,mi=59,bs=35,As=64,We=65,rt=97,xs=69,ys=101,bt=90,At=122,ws=105;var ir=192,nr=312,sr={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},_s=Object.keys(sr).sort((s,e)=>e.length-s.length),Ds={"-":100,"+":100},Ge=class{argument_separator=",";decimal_mark=".";flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};r1c1_regex=/[rR]((?:\\[[-+]{0,1}\\d+\\]|\\d+))[cC]((?:\\[[-+]{0,1}\\d+\\]|\\d+))$/;argument_separator_char=et;decimal_mark_char=Kt;imaginary_char=ws;imaginary_number="i";id_counter=0;expression="";data=[];index=0;length=0;valid=!0;error_position;error;dependencies={addresses:{},ranges:{}};address_refcount={};full_reference_list=[];Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(i=>this.Walk(i,t));return;case"call":t(e)&&e.args.forEach(i=>this.Walk(i,t))}}Transpose(e){let t=e.length,i=[],n=0;for(let r=0;r<t;r++)Array.isArray(e[r])&&(n=Math.max(n,e[r].length));for(let r=0;r<n;r++){i[r]=[];for(let a=0;a<t;a++)i[r][a]=e[a][r]}return i}Render(e,t={}){let i=t.offset||{rows:0,columns:0},n=t.missing??"(missing)",{convert_decimal:r,convert_argument_separator:a,convert_imaginary_number:o,long_structured_references:u,table_name:h}=t,l=this.argument_separator+" ";a===","?l=", ":a===";"&&(l="; ");let c=this.imaginary_number;o&&(c=o);let A=r===","?",":".",p=this.decimal_mark===","?/,/:/\\./,m=this.decimal_mark===","?/,/g:/\\./g;switch(e.type){case"address":return this.AddressLabel(e,i);case"range":return this.AddressLabel(e.start,i)+":"+this.AddressLabel(e.end,i);case"missing":return n;case"array":return"{"+this.Transpose(e.values).map(g=>g.map(b=>typeof b=="string"?\'"\'+b+\'"\':b).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return r?e.text.replace(m,A):e.text;{let g=Math.abs(e.imaginary).toString();if((r===","||this.decimal_mark===",")&&(g=g.replace(/\\./,",")),e.real){let b=e.real.toString();(r===","||this.decimal_mark===",")&&(b=b.replace(/\\./,","));let w=Math.abs(e.imaginary);return`${b}${e.imaginary<0?" - ":" + "}${w===1?"":g}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${g}i`}break;case"literal":if(typeof e.value=="string")return\'"\'+e.value.replace(/"/g,\'""\')+\'"\';if(r&&typeof e.value=="number")if(e.text){let g=e.text;return r===","&&this.decimal_mark==="."&&(g=g.replace(/,/g,"")),g.replace(p,A)}else return e.value.toString().replace(/\\./,A);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(g=>this.Render(g,t)).join(l)+")":e.elements.map(g=>this.Render(g,t)).join(l);case"call":return e.name+"("+e.args.map(g=>this.Render(g,t)).join(l)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let g=e.column;/[^A-Za-z]/.test(g)&&(g="["+g+"]");let b=e.table;switch(!b&&u&&h&&(b=h),e.scope){case"all":return`${b}[[#all],${g}]`;case"row":return u?`${b}[[#this row],${g}]`:`${b}[@${g}]`;case"column":return`${b}[${g}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=mi;break;default:this.argument_separator_char=et;break}switch(this.decimal_mark){case",":this.decimal_mark_char=et;break;default:this.decimal_mark_char=Kt;break}for(let n=0;n<this.length;n++)this.data[n]=e.charCodeAt(n);let t=this.ParseGeneric(),i={};for(let n of Object.keys(this.dependencies.addresses))this.address_refcount[n]&&(i[n]=this.dependencies.addresses[n]);return this.dependencies.addresses=i,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let i=e.column;!e.absolute_column&&e.column!==1/0&&(i+=t.columns);let n=e.row;if(!e.absolute_row&&e.row!==1/0&&(n+=t.rows),n<0||i<0||n===1/0&&i===1/0)return"#REF";let r="";return e.sheet&&(r=(ar.test(e.sheet)?"\'"+e.sheet+"\'":e.sheet)+"!"),n===1/0?r+(e.absolute_column?"$":"")+this.ColumnLabel(i):i===1/0?r+(e.absolute_row?"$":"")+(n+1):r+(e.absolute_column?"$":"")+this.ColumnLabel(i)+(e.absolute_row?"$":"")+(n+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let i=this.ParseNext(t.length===0);if(typeof i=="number"){if(e.some(n=>i===n))break;if(i===pi){this.index++;let n=this.ParseGeneric([tr]);this.index++,n&&t.push({type:"group",id:this.id_counter++,elements:[n],explicit:!0})}else{let n=this.ConsumeOperator();n?t.push(n):(this.error=`unexpected character [1]: ${String.fromCharCode(i)}, 0x${i.toString(16)}`,this.valid=!1,this.index++)}}else t.push(i)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let i=[],n=a=>a.type==="literal"&&typeof a.value=="number"&&a.value%1===0,r=0;for(;r<t.length-3;r++)if(n(t[r])&&n(t[r+1])&&t[r+2].type==="operator"&&t[r+2].operator==="/"&&n(t[r+3])){let a=t[r],o=t[r+1],u=t[r+3],h=(a.value<0?-1:1)*(o.value/u.value);r+=3,i.push({id:t[r].id,type:"literal",text:this.expression.substring(a.position,u.position+1),value:a.value+h,position:a.position})}else i.push(t[r]);for(;r<t.length;r++)i.push(t[r]);t=i}if(t=t.map(i=>i.type==="identifier"&&i.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:i.position,text:i.name,id:this.id_counter++}:i),this.flags.dimensioned_quantities){let i=[],n;for(let r=0;r<t.length;r++){let a=t[r];if(!n)n=a;else if(a.type==="identifier"&&(n.type==="literal"||n.type==="group"||n.type==="call")){let o=a;for(;t[r+1]?.type==="identifier";)o.name+=" "+t[++r].name;i.push({type:"dimensioned",expression:n,unit:a,id:this.id_counter++}),n=void 0}else i.push(n),n=a}n&&i.push(n),t=i}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,i=e.name,n=i.split("!");if(n.length>1&&(t=n.slice(0,n.length-1).join("!"),i=i.substr(t.length+1),t[0]==="\'"))if(t.length>1&&t[t.length-1]==="\'")t=t.substr(1,t.length-2);else return;let r=i[0]==="$";i=(r?i.substr(1):i).toUpperCase();let a=Number(i);if(isNaN(a)){if(/[A-Z]{1,3}/.test(i)){let o=-1;for(let u=0;u<i.length;u++){let h=i[u].charCodeAt(0);o=26*(1+o)+(h-We)}return{type:"address",position:e.position,absolute_column:r,label:e.name,column:o,id:this.id_counter++,row:1/0,sheet:t}}}else if(a>0&&a!==1/0&&!/\\./.test(i))return{type:"address",position:e.position,absolute_row:r,label:e.name,row:a-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let i=0;i<e.length;i++){let n=e[i],r=e[i+1],a=e[i+2],o,u="",h;if(n&&r&&a&&r.type==="operator"&&r.operator===":"){if(n.type==="address"&&a.type==="address"){let l=n.position+n.label.length,c=a.position;o={type:"range",id:this.id_counter++,position:n.position,start:n,end:a,label:n.label+this.expression.substring(l,c)+a.label},u=o.start.label+":"+o.end.label,this.address_refcount[o.start.label]--,this.address_refcount[o.end.label]--;let A=[n.position,a.position];this.full_reference_list=this.full_reference_list.filter(p=>p.position!==A[0]&&p.position!==A[1])}else if((n.type==="literal"||n.type==="identifier")&&(a.type==="literal"||a.type==="identifier")){let l=this.UnitToAddress(n);if(!l&&n.type==="literal"&&typeof n.value=="number"&&n.value<0){let A={...n,text:(n.text||"").replace(/^-/,""),position:n.position+1,value:-n.value};l=this.UnitToAddress(A),l&&(h={type:"operator",operator:"-",position:n.position,id:this.id_counter++})}let c=this.UnitToAddress(a);l&&c&&(l.column===1/0&&c.column===1/0||l.row===1/0&&c.row===1/0)&&(u=l.label+":"+c.label,o={type:"range",id:this.id_counter++,position:l.position,start:l,end:c,label:u})}}o?(h&&t.push(h),t.push(o),this.dependencies.ranges[u]=o,this.full_reference_list.push(o),i+=2):t.push(n)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let i=e.right.imaginary;return e.operator==="-"&&(i=-i),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:i,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,i="";if(e.left.type==="address"&&e.right.type==="address"){let n=e.left.position+e.left.label.length,r=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(n,r)+e.right.label},i=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let a=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(o=>o.position!==a[0]&&o.position!==a[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let n=this.UnitToAddress(e.left),r=this.UnitToAddress(e.right);n&&r&&(n.column===1/0&&r.column===1/0||n.row===1/0&&r.row===1/0)&&(i=n.label+":"+r.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:n,end:r,label:i})}if(t)return this.dependencies.ranges[i]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let i=0;i<e.length;i++){let n=e[i];if(n.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(Ds[n.operator]){let r=this.BinaryToComplex(this.ArrangeUnits(e.slice(i+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};r.type==="binary"?(r.left={type:"unary",id:this.id_counter++,operator:n.operator,operand:r.left,position:n.position},n=r):n={type:"unary",id:this.id_counter++,operator:n.operator,operand:r,position:n.position},i=e.length}else return this.error=`unexpected character [2]: ${n.operator}`,this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(n);continue}if(t.length<2)t.push(n);else if(t[t.length-1].type==="operator"){let r=t[t.length-2],a=t[t.length-1],o=a.operator,u={type:"binary",id:this.id_counter++,left:r,operator:o,position:a.position,right:n};r.type==="binary"&&sr[o]>sr[r.operator]&&(u.left=r.left,u.operator=r.operator,u.position=r.position,u.right={type:"binary",id:this.id_counter++,left:r.right,right:n,operator:o,position:a.position}),t.splice(-2,2,u)}else return this.error="multiple expressions",this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===Xt)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=Se&&t<=Qe||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===fs)return this.ConsumeArray();if(e&&(t===Ke||t===er)){let i=this.data[this.index+1];if(i>=Se&&i<=Qe||i===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=We&&t<=bt||t>=rt&&t<=At||t===rr||t===bs||t===Qt||t===gt||t===tt||t>=ir&&t<=nr)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,i=0;for(;this.index<this.length;){let n=this.ParseNext(),r=this.index;if(typeof n=="number")switch(this.index++,n){case mi:i++,t=0;break;case et:t++;break;case ms:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=r,this.valid=!1);break}else switch(n.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][i]=n.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=r,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of _s)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let i=this.ParseGeneric([this.argument_separator_char,tr]);i!==null&&t.push(i);let n=this.data[this.index];if(n===this.argument_separator_char){this.index++,e++;for(let r=t.length;r<e;r++)t.push({type:"missing",id:this.id_counter++})}else if(n===tr)return this.index++,t}return t}ConsumeToken(e){let t=[e],i=this.index,n=e===Qt,r=0,a=!1;for(e===tt&&(r=1,a=!0),++this.index;this.index<this.length;this.index++){let l=this.data[this.index];if(l>=We&&l<=bt||l>=rt&&l<=At||l>=ir&&l<=nr||l===rr||l===gt||l===Kt||l===gs||n||l>=Se&&l<=Qe||l===tt||r>0&&l===fi||l===Ke&&this.flags.r1c1&&r===1||r>0&&l===As&&this.data[this.index-1]===tt||r===1&&(l===et||l===hi)||r>1)t.push(l),l===tt&&(r++,a=!0),l===fi&&r--,l===Qt&&(n=!1);else break}let o=t.map(l=>String.fromCharCode(l)).join("");if(n)return this.error="unbalanced single quote",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(r)return this.error="unbalanced square bracket",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(o.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:i};if(o.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:i};if(this.ConsumeWhiteSpace(),this.data[this.index]===pi){let l=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:o,args:l,position:i}}if(this.flags.spreadsheet_semantics){let l=this.ConsumeAddress(o,i);if(l)return l;if(a){let c=this.ConsumeStructuredReference(o,i);if(c)return c}}let h={type:"identifier",id:this.id_counter++,name:o,position:i};return this.full_reference_list.push(h),h}ConsumeStructuredReference(e,t){let i=t,n=e.length,r=e,a="",o=0;for(;o<n;o++){if(e[o]==="["){e=e.substring(o);break}a+=e[o]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let u=e.split(",").map(A=>A.trim()),h="column",l="";if(u.length>2)return;u.length===2?(/\\[#this row\\]/i.test(u[0])?h="row":/\\[#all\\]/i.test(u[0])&&(h="all"),l=u[1]):(l=u[0],l[0]==="@"&&(h="row",l=l.substring(1,l.length))),l[0]==="["&&l[l.length-1]==="]"&&(l=l.substring(1,l.length-1));let c={type:"structured-reference",id:this.id_counter++,label:r,position:t,scope:h,column:l,table:a};return this.full_reference_list.push(c),c}ConsumeAddress(e,t){let i=t,n=e.length,r,a=e.split("!");if(a.length>1&&(r=a.slice(0,a.length-1).join("!"),t+=r.length+1),this.flags.r1c1){let c=a[a.length-1].match(this.r1c1_regex);if(c){let A={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:i,sheet:r,r1c1:!0};return c[1][0]==="["?(A.offset_row=!0,A.row=Number(c[1].substring(1,c[1].length-1))):A.row=Number(c[1])-1,c[2][0]==="["?(A.offset_column=!0,A.column=Number(c[2].substring(1,c[2].length-1))):A.column=Number(c[2])-1,A}}let o=this.ConsumeAddressColumn(t);if(!o)return null;t=o.position;let u=this.ConsumeAddressRow(t);if(!u)return null;t=u.position;let h=r?r+e.substr(r.length,t-i).toUpperCase():e.substr(0,t-i).toUpperCase();r&&r[0]==="\'"&&(r=r.substr(1,r.length-2));let l={type:"address",id:this.id_counter++,label:h,row:u.row,column:o.column,absolute_row:u.absolute,absolute_column:o.absolute,position:i,sheet:r};return n!==t-i?null:(this.dependencies.addresses[l.label]=l,this.address_refcount[l.label]=(this.address_refcount[l.label]||0)+1,this.full_reference_list.push(l),l)}ConsumeAddressRow(e){let t=this.data[e]===gt;t&&e++;let i=e,n=0;for(;;e++){let r=this.data[e];if(r>=Se&&r<=Qe)n*=10,n+=r-Se;else break}return i===e?!1:{absolute:t,row:n-1,position:e}}ConsumeAddressColumn(e){let t=-1,i=0,n=this.data[e]===gt;for(n&&e++;;e++,i++){if(i>=4)return!1;let r=this.data[e];if(r>=We&&r<=bt)t=26*(1+t)+(r-We);else if(r>=rt&&r<=At)t=26*(1+t)+(r-rt);else break}return t<0?!1:{absolute:n,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,i=!1,n=!1,r=0,a=0,o=0,u="integer",h=0,l=!1,c=this.index;for(;this.index<this.length;this.index++,h++){let p=this.data[this.index];if(p===this.decimal_mark_char)if(u==="integer")u="fraction";else break;else if(p===ps){r/=100,o/=100,this.index++;break}else if(p===er||p===Ke)if(h===0)p===Ke&&(n=!0);else break;else if(p===xs||p===ys)if(u==="integer"||u==="fraction")u="exponent",this.index<this.length-1&&(this.data[this.index+1]===er?this.index++:this.data[this.index+1]===Ke&&(this.index++,i=!0));else break;else if(p===this.imaginary_char){let m=this.data[this.index+1];if(m>=We&&m<=bt||m>=rt&&m<=At||m>=ir&&m<=nr||m===rr)break;if(u==="integer"||u==="fraction"){this.index++,l=!0;break}}else if(p>=Se&&p<=Qe)switch(u){case"integer":r=r*10+(p-Se);break;case"fraction":o=o*10+(p-Se),a++;break;case"exponent":t=t*10+(p-Se);break}else break}let A=r+o/Math.pow(10,a);return u==="exponent"&&(A=A*Math.pow(10,(i?-1:1)*t)),l?{type:"complex",id:this.id_counter++,position:e,imaginary:n?-A:A,real:0,text:this.expression.substring(c,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:n?-A:A,text:this.expression.substring(c,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===Xt&&(this.index++,this.index>=this.length||this.data[this.index]!==Xt))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===hi||e===cs||e===ds||e===hs||e===ls)this.index++;else return}}};var ur=class{constructor(){}static get instance(){return this._instance}HTML(e){let t=[];for(let i of e){let n=[];for(let r of i)r.pre&&n.push("<pre>"),r.emphasis&&n.push("<em>"),r.strong&&n.push("<strong>"),r.strike&&n.push("<strike>"),n.push(r.text),r.strike&&n.push("</strike>"),r.strong&&n.push("</strong>"),r.emphasis&&n.push("</em>"),r.pre&&n.push("</pre>");t.push(n.join(""))}return t.join(`<br/>\n`)}Dummy(e=""){return e.split(/\\n/).map(t=>[{text:t}])}Parse(e=""){let t=this.Tokenize(e);for(let i=0;i<t.length;i++){let n=t[i];if(n.type==="delimeter"){let r=t[i-1],a=t[i+1],o=!r||r.type==="whitespace"||r.type==="newline",u=r&&r.type==="text"&&/[^\\w\\d]$/.test(r.text),h=!a||a.type==="whitespace"||a.type==="newline",l=a&&a.type==="text"&&/^[^\\w\\d]/.test(a.text);n.left_flanking=!h&&(!l||o),n.right_flanking=!o&&(!u||h)}}return this.ApplyFormatting(t),this.Consolidate(t)}IsWhitespace(e){return e===" "||e===" "}IsNewline(e){return e==="\\r"||e===`\n`}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],i={},n=[],r={type:"text",text:""};for(let a of e)if(a.type==="newline")r.text.length&&n.push(r),r={...i,text:"",type:"text"},t.push(n),n=[];else switch((!!i.strong!=!!a.strong||!!i.emphasis!=!!a.emphasis||!!i.strike!=!!a.strike)&&(i.strong=!!a.strong,i.emphasis=!!a.emphasis,i.strike=!!a.strike,r.text.length&&n.push(r),r={...i,text:"",type:"text"}),a.type){case"text":case"whitespace":r.text+=a.text;break;case"delimeter":for(let o=0;o<a.length;o++)r.text+=a.char;break}return r.text.length&&n.push(r),n.length&&t.push(n),t}ApplyFormatting(e,t){let i=0,n=e.length;for(i=0;i<n;i++){let r=e[i];if(r.type==="delimeter"){if(t&&r.right_flanking&&t.char===r.char&&r.length>0)return{index:i,token:r};if(r.left_flanking){let a=this.ApplyFormatting(e.slice(i+1),r);if(a.token){let o=Math.min(a.token.length,r.length),u=r.char==="~",h=!u&&!!(o%2),l=!u&&o>=2;for(let c=i+1;c<=i+a.index;c++)e[c].strong=!!e[c].strong||l,e[c].emphasis=!!e[c].emphasis||h,e[c].strike=!!e[c].strike||u;a.token.length-=o,r.length-=o,r.length>0?i--:i+=a.index}}}}return{index:i}}Tokenize(e=""){let t=[],i=e.length,n=0,r=!1,a="";for(n=0;n<i;n++){let o=e[n];if(this.IsWhitespace(o)){a&&t.push({type:"text",text:a});let u=o;for(;;){let h=e[n+1];if(this.IsWhitespace(h))u+=h,n++;else break}t.push({type:"whitespace",text:u}),r=!1,a=""}else if(this.IsNewline(o)){a&&t.push({type:"text",text:a});let u=o;for(;;){let h=e[n+1];if(this.IsNewline(h))u+=h,n++;else break}t.push({type:"newline",text:u}),r=!1,a=""}else if(r)a+=o,r=!1;else if(this.IsDelimeter(o)){a&&t.push({type:"text",text:a});let u=o;for(;;){let h=e[n+1];if(h===o)u+=h,n++;else break}t.push({type:"delimeter",text:u,char:o,length:u.length}),r=!1,a=""}else o==="\\\\"?r=!0:a+=o}return a&&t.push({type:"text",text:a}),t}},or=ur;ie(or,"_instance",new ur);var gi={"c:tx":{"c:strRef":{"c:f":"","c:strCache":{"c:ptCount":{a$:{val:"1"}},"c:pt":{a$:{idx:"0"},"c:v":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},bi={"c:tx":{"c:rich":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:r":{"a:rPr":{a$:{lang:""}},"a:t":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},xt={"c:chartSpace":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:c16r2":"http://schemas.microsoft.com/office/drawing/2015/06/chart"},"c:date1904":{a$:{val:"0"}},"c:lang":{a$:{val:"en-US"}},"c:roundedCorners":{a$:{val:"0"}},"mc:AlternateContent":{a$:{"xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006"},"mc:Choice":{a$:{Requires:"c14","xmlns:c14":"http://schemas.microsoft.com/office/drawing/2007/8/2/chart"},"c14:style":{a$:{val:"102"}}},"mc:Fallback":{"c:style":{a$:{val:"2"}}}},"c:chart":{},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"bg1"}}},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:printSettings":{"c:headerFooter":{},"c:pageMargins":{a$:{b:"0.75",l:"0.7",r:"0.7",t:"0.75",header:"0.3",footer:"0.3"}},"c:pageSetup":{}}}};var Ai={"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:invertIfNegative":{a$:{val:"0"}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-F52E-47BC-822F-A046A80610BE}"}}}}},xi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:barChart":{"c:barDir":{a$:{val:"col"}},"c:grouping":{a$:{val:"clustered"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:gapWidth":{a$:{val:"219"}},"c:overlap":{a$:{val:"-27"}},"c:axId":[{a$:{val:"47003664"}},{a$:{val:"1789284464"}}]},"c:catAx":{"c:axId":{a$:{val:"47003664"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"1789284464"}},"c:crosses":{a$:{val:"autoZero"}},"c:auto":{a$:{val:"1"}},"c:lblAlgn":{a$:{val:"ctr"}},"c:lblOffset":{a$:{val:"100"}},"c:noMultiLvlLbl":{a$:{val:"0"}}},"c:valAx":{"c:axId":{a$:{val:"1789284464"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"General",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"47003664"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"between"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var yi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:doughnutChart":{"c:varyColors":{a$:{val:"1"}},"c:ser":{"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:dPt":{"c:idx":{a$:{val:"3"}},"c:bubble3D":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent4"}}},"a:ln":{a$:{w:"19050"},"a:solidFill":{"a:schemeClr":{a$:{val:"lt1"}}}},"a:effectLst":{}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000007-E886-49A6-AE6D-C67D8A27530F}"}}}}},"c:cat":{"c:strRef":{"c:f":""}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-3689-4BB4-A84F-05B9F3BBE577}"}}}}},"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}},"c:showLeaderLines":{a$:{val:"1"}}},"c:firstSliceAng":{a$:{val:"0"}},"c:holeSize":{a$:{val:"75"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:legend":{"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{a$:{rtl:"0"},"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var wi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:scatterChart":{"c:scatterStyle":{a$:{val:"lineMarker"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:axId":[{a$:{val:"2028657983"}},{a$:{val:"2023395087"}}]},"c:valAx":[{"c:axId":{a$:{val:"2028657983"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2023395087"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}},{"c:axId":{a$:{val:"2023395087"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"0.00",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2028657983"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}}],"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}},_i={"c:spPr":{"a:ln":{a$:{w:"19050",cap:"rnd"},"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:round":{}},"a:effectLst":{}},"c:marker":{"c:symbol":{a$:{val:"none"}}},"c:xVal":{"c:numRef":{"c:f":""}},"c:yVal":{"c:numRef":{"c:f":""}},"c:smooth":{a$:{val:"0"}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-1F6C-44A9-AA4F-6706F20CC72E}"}}}}};var lr=class{constructor(e,t=lr.next_chart_index++){this.options=e;this.index=t}relationships={};UpdateChartTitle(e){let t=this.options.title||{type:"literal",value:""};if(t&&t.type==="literal"){let i=JSON.parse(JSON.stringify(bi)),n=i["c:tx"]["c:rich"]["a:p"];n["a:r"]={"a:rPr":{a$:{lang:le.locale}},"a:t":t.value},e["c:title"]=i}else if(t){let i=JSON.parse(JSON.stringify(gi));i["c:tx"]["c:strRef"]["c:f"]=t.label,e["c:title"]=i}}toJSON(){switch(this.options.type){case"column":case"bar":return this.CreateBarChart();case"scatter":case"scatter2":return this.CreateScatterChart();case"donut":return this.CreateDonutChart();default:console.info("unhandled chart type",this.options.type)}return this.CreateBarChart()}CreateScatterChart(){let e=JSON.parse(JSON.stringify(xt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(wi));this.options.smooth&&(i["c:plotArea"]["c:scatterChart"]["c:scatterStyle"].a$.val="smoothMarker"),t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=t["c:chart"]["c:plotArea"]["c:scatterChart"]["c:ser"],r=!1;for(let a=0;a<this.options.data.length;a++){let o=JSON.parse(JSON.stringify(_i));if(o["c:idx"]={a$:{val:a.toString()}},o["c:order"]={a$:{val:a.toString()}},this.options.names&&this.options.names[a]){let u=this.options.names[a];switch(u.type){case"literal":o["c:tx"]={"c:v":u.value.toString()},r=!0;break;case"range":case"address":o["c:tx"]={"c:strRef":{"c:f":u.label}},r=!0;break}}o["c:spPr"]["a:ln"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${a+1}`,o["c:yVal"]["c:numRef"]["c:f"]=this.options.data[a]?.label,this.options.labels2&&this.options.labels2[a]&&(o["c:xVal"]["c:numRef"]["c:f"]=this.options.labels2[a]?.label),this.options.smooth&&(o["c:smooth"]={a$:{val:1}}),n.push(o)}return r&&(t["c:chart"]["c:legend"]={"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}}}),e}CreateDonutChart(){let e=JSON.parse(JSON.stringify(xt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(yi));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:doughnutChart"];return n&&(n["c:ser"]["c:cat"]["c:strRef"]["c:f"]=this.options.labels?.label||"",n["c:ser"]["c:val"]["c:numRef"]["c:f"]=this.options.data[0]?.label||""),e}CreateBarChart(){let e=JSON.parse(JSON.stringify(xt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(xi));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:barChart"];if(n){let r=n["c:barDir"];r&&(r.a$.val=this.options.type==="bar"?"bar":"col");let a=n["c:ser"];for(let o=0;o<this.options.data.length;o++){let u=JSON.parse(JSON.stringify(Ai));u["c:idx"]={a$:{val:o.toString()}},u["c:order"]={a$:{val:o.toString()}},u["c:spPr"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${o+1}`,!o&&this.options.labels&&(u["c:cat"]={"c:strRef":{"c:f":this.options.labels.label}}),u["c:val"]["c:numRef"]["c:f"]=this.options.data[o]?.label,a.push(u)}}return e}},Le=lr;ie(Le,"next_chart_index",1);var cr=class{constructor(e,t=cr.next_image_index++){this.options=e;this.index=t;switch(e.mimetype){case"svg+xml":this.extension="svg";break;case"image/png":this.extension="png";break;case"jpg":this.extension="jpeg";break;case"svg":case"png":case"jpeg":case"gif":this.extension=e.mimetype;break;default:console.warn("unhandled mime type",e.mimetype);break}}extension=""},it=cr;ie(it,"next_image_index",1);var Di=9525,dr=class{constructor(e=dr.next_drawing_index++){this.index=e}sheet_drawing_relationship=0;charts=[];images=[];relationships={};AddImage(e,t){let i=new it(e);if(i.extension){let n=we(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`../media/image${i.index}.${i.extension}`);this.images.push({image:i,relationship:n,anchor:t})}}AddChart(e,t){let i=new Le(e),n=we(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",`../charts/chart${i.index}.xml`);this.charts.push({chart:i,anchor:t,relationship:n})}CornerToJSON(e){return{"xdr:col":e.column,"xdr:colOff":(e.column_offset||0)*Di,"xdr:row":e.row,"xdr:rowOff":(e.row_offset||0)*Di}}AnchorToJSON(e){return{"xdr:from":{...this.CornerToJSON(e.from)},"xdr:to":{...this.CornerToJSON(e.to)}}}toJSON(){let e=this.images.map(n=>({a$:{editAs:"oneCell"},...this.AnchorToJSON(n.anchor),"xdr:pic":{"xdr:nvPicPr":{"xdr:cNvPr":{a$:{id:n.image.index+1,name:"Image "+n.image.index}},"xdr:cNvPicPr":{"a:picLocks":{a$:{noChangeAspect:1}}}},"xdr:blipFill":{"a:blip":{a$:n.image.extension==="svg"?{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships"}:{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":n.relationship},"a:extLst":{"a:ext":[{a$:{uri:"{28A0092B-C50C-407E-A947-70E740481C1C}"},"a14:useLocalDpi":{a$:{"xmlns:a14":"http://schemas.microsoft.com/office/drawing/2010/main",val:0}}},n.image.extension==="svg"?{a$:{uri:"{96DAC541-7B7A-43D3-8B79-37D633B846F1}"},"asvg:svgBlip":{a$:{"xmlns:asvg":"http://schemas.microsoft.com/office/drawing/2016/SVG/main","r:embed":n.relationship}}}:void 0]}},"a:stretch":{"a:fillRect":{}}},"xdr:spPr":{"a:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:4057650,cy:6172200}}},"a:prstGeom":{a$:{prst:"rect"},"a:avLst":{}}}},"xdr:clientData":{}})),t=this.charts.map(n=>({...this.AnchorToJSON(n.anchor),"xdr:graphicFrame":{a$:{macro:""},"xdr:nvGraphicFramePr":{"xdr:cNvPr":{a$:{id:n.chart.index+1,name:`Chart ${n.chart.index}`}},"xdr:cNvGraphicFramePr":{}},"xdr:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:0,cy:0}}},"a:graphic":{"a:graphicData":{a$:{uri:"http://schemas.openxmlformats.org/drawingml/2006/chart"},"c:chart":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":n.relationship}}}}},"xdr:clientData":{}}));return{"xdr:wsDr":{a$:{"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},"xdr:twoCellAnchor":[...t,...e]}}}},Ve=dr;ie(Ve,"next_drawing_index",1);var Ne=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n`,yt=class{zip;xmloptions={format:!0,attributesGroupName:"a$",textNodeName:"t$",ignoreAttributes:!1,suppressEmptyNode:!0};xmlbuilder1=new wt.XMLBuilder(this.xmloptions);xmlparser2=new wt.XMLParser(ht);parser=new Ge;decorated_functions={};async Init(e={}){for(let t of Object.keys(e))this.decorated_functions[t.toLowerCase()]=e[t];this.zip=await new vi.default().loadAsync(Ar,{base64:!0})}async WriteRels(e,t,i=!1){if(!this.zip)throw new Error("missing zip");let n=Object.keys(e),r={Relationships:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},Relationship:n.map(o=>{let u=e[o],h={Id:u.id,Target:u.target,Type:u.type};return u.mode&&(h.TargetMode=u.mode),{a$:h}})}},a=Ne+this.xmlbuilder1.build(r);i&&console.info(a),await this.zip?.file(t,a)}async WriteStyleCache(e){if(!this.zip)throw new Error("missing zip");let t=l=>{let c={};return l.indexed!==void 0&&(c.indexed=l.indexed),l.theme!==void 0&&(c.theme=l.theme),l.tint!==void 0&&(c.tint=l.tint),l.argb!==void 0&&(c.rgb=l.argb),c},i=e.cell_xfs.map(l=>{let c={a$:{numFmtId:l.number_format,fontId:l.font,fillId:l.fill,borderId:l.border}};return(l.horizontal_alignment||l.vertical_alignment||l.wrap_text)&&(c.alignment={a$:{}},l.horizontal_alignment&&(c.alignment.a$.horizontal=l.horizontal_alignment),l.vertical_alignment&&(c.alignment.a$.vertical=l.vertical_alignment),l.wrap_text&&(c.alignment.a$.wrapText=1)),c}),n=l=>{if(l.color)return{indexed:l.color};if(l.rgba)return{rgb:l.rgba};if(l.theme){let c={theme:l.theme};return l.tint&&(c.tint=l.tint),c}},r=e.borders.map(l=>{let c={left:{},right:{},top:{},bottom:{},diagonal:{}};if(l.top.style){c.top.a$={style:l.top.style};let A=n(l.top);A&&(c.top.color={a$:A})}if(l.left.style){c.left.a$={style:l.left.style};let A=n(l.left);A&&(c.left.color={a$:A})}if(l.bottom.style){c.bottom.a$={style:l.bottom.style};let A=n(l.bottom);A&&(c.bottom.color={a$:A})}if(l.right.style){c.right.a$={style:l.right.style};let A=n(l.right);A&&(c.right.color={a$:A})}if(l.diagonal.style){c.diagonal.a$={style:l.diagonal.style};let A=n(l.diagonal);A&&(c.diagonal.color={a$:A})}return c}),a=e.fills.map(l=>{let c={a$:{patternType:l.pattern_type}};return l.pattern_gray!==void 0&&(c.a$.patternType=`gray${l.pattern_gray}`),l.bg_color&&(c.bgColor={a$:t(l.bg_color)}),l.fg_color&&(c.fgColor={a$:t(l.fg_color)}),{patternFill:c}}),o=e.fonts.map(l=>{let c={};return l.bold&&(c.b=""),l.italic&&(c.i=""),l.underline&&(c.u=""),l.strike&&(c.strike=""),l.size!==void 0&&(c.sz={a$:{val:l.size}}),l.family!==void 0&&(c.family={a$:{val:l.family}}),l.name!==void 0&&(c.name={a$:{val:l.name}}),l.scheme!==void 0&&(c.scheme={a$:{val:l.scheme}}),l.color_argb!==void 0?c.color={a$:{rgb:l.color_argb}}:l.color_theme!==void 0&&(c.color={a$:{theme:l.color_theme}},l.color_tint&&(c.color.a$.tint=l.color_tint)),c}),u={styleSheet:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2 xr","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision"}}};e.number_formats.length&&(u.styleSheet.numFmts={a$:{count:e.number_formats.length},numFmt:e.number_formats.map(l=>({a$:{numFmtId:l.id,formatCode:l.format}}))}),o.length&&(u.styleSheet.fonts={a$:{count:o.length},font:o}),a.length&&(u.styleSheet.fills={a$:{count:a.length},fill:a}),r.length&&(u.styleSheet.borders={a$:{count:r.length},border:r}),i.length&&(u.styleSheet.cellXfs={a$:{count:i.length},xf:i});let h=Ne+this.xmlbuilder1.build(u);await this.zip?.file("xl/styles.xml",h)}async WriteSharedStrings(e){if(!this.zip)throw new Error("missing zip");let t={sst:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:e.strings.length,uniqueCount:e.strings.length},si:[...e.strings.map(n=>({t:n}))]}},i=Ne+this.xmlbuilder1.build(t);await this.zip?.file("xl/sharedStrings.xml",i)}StyleFromCell(e,t,i,n,r={}){let a=e.styles||e.cell_style_refs||[],o=[e.sheet_style];if(e.row_pattern&&e.row_pattern.length&&o.push(e.row_pattern[i%e.row_pattern.length]),e.row_style){let h=e.row_style[i];typeof h=="number"&&(h=a[h]),h&&o.push(h)}if(e.column_style){let h=e.column_style[n];typeof h=="number"&&(h=a[h]),h&&o.push(h)}o.push(r);let u=t.StyleOptionsFromProperties(me.Composite(o));return t.EnsureStyle(u)}NormalizeAddress(e,t){let i=e.type==="address"?[e]:[e.start,e.end];for(let n of i)n.absolute_row=!0,n.absolute_column=!0,n.sheet||(n.sheet=t.name);return e.type==="range"&&(e.end.sheet=void 0),e.label=this.parser.Render(e),e}AnnotationLayoutToAnchor(e,t){let i=n=>{let r=t.column_width&&t.column_width[n.address.column]?t.column_width[n.address.column]:t.default_column_width||100,a=t.row_height&&t.row_height[n.address.row]?t.row_height[n.address.row]:t.default_row_height||20;return{...n.address,row_offset:Math.round(n.offset.y*a),column_offset:Math.round(n.offset.x*r)}};return{from:i(e.tl),to:i(e.br)}}AnnotationRectToAnchor(e,t){let i={from:{row:-1,column:-1},to:{row:-1,column:-1}},n={...e,right:e.left+e.width,bottom:e.top+e.height};for(let r=0,a=0;a<1e3;a++){let o=t.column_width&&t.column_width[a]?t.column_width[a]:t.default_column_width||100;if(i.from.column<0&&n.left<=r+o&&(i.from.column=a,i.from.column_offset=n.left-r),i.to.column<0&&n.right<=r+o){i.to.column=a,i.to.column_offset=n.right-r;break}r+=o}for(let r=0,a=0;a<1e3;a++){let o=t.row_height&&t.row_height[a]?t.row_height[a]:t.default_row_height||20;if(i.from.row<0&&n.top<=r+o&&(i.from.row=a,i.from.row_offset=n.top-r),i.to.row<0&&n.bottom<=r+o){i.to.row=a,i.to.row_offset=n.bottom-r;break}r+=o}return i}ParseImages(e){let t=[];for(let i of e.annotations||[])if(i.type==="image"&&i.data?.src){let n=i.data.src,r=n.match(/^data:image\\/([^;]*?);base64,/);if(r){let a=n.substr(r[0].length),o=r[1],u={data:a,mimetype:o,encoding:"base64"};switch(o){case"svg+xml":case"webp":case"jpeg":case"jpg":case"image/png":case"png":case"gif":i.rect?t.push({anchor:this.AnnotationRectToAnchor(i.rect,e),options:u}):i.layout?t.push({anchor:this.AnnotationLayoutToAnchor(i.layout,e),options:u}):console.warn("annotation missing layout");break;default:console.info("unhandled image type",o);break}}}return t}ParseCharts(e){let t=[],i=(n,r,a)=>{if(n.type==="range")r.data.push(this.NormalizeAddress(n,e));else if(n.type==="call"){if(/group/i.test(n.name))for(let o of n.args||[])i(o,r,a?a+" (recurse)":void 0);else if(/series/i.test(n.name)){let[o,u,h]=n.args;h&&h.type==="range"?(r.data.push(this.NormalizeAddress(h,e)),o&&(r.names||(r.names=[]),o.type==="address"&&this.NormalizeAddress(o,e),o.type==="range"?(this.NormalizeAddress(o.start,e),r.names[r.data.length-1]=o.start):r.names[r.data.length-1]=o),r.labels2||(r.labels2=[]),u&&u.type==="range"&&(r.labels2[r.data.length-1]=this.NormalizeAddress(u,e))):console.info("invalid series missing Y",{y:h,arg:n,ref:a})}}};for(let n of e.annotations||[]){let r=this.parser.Parse(n.formula||"");if(r.expression&&r.expression.type==="call"){let a="";switch(r.expression.name.toLowerCase()){case"line.chart":a="scatter";break;case"scatter.line":a="scatter2";break;case"donut.chart":a="donut";break;case"bar.chart":a="bar";break;case"column.chart":a="column";break}if(a==="column"||a==="donut"||a==="bar"||a==="scatter"||a==="scatter2"){let o={type:a,data:[]},u=a==="scatter2"?1:2,h=r.expression.args[u];if(h&&h.type==="literal"?o.title=h:h&&h.type==="address"&&(o.title=this.NormalizeAddress(h,e)),r.expression.args[0]){let l=r.expression.args[0];if(a==="scatter2"||a==="bar"||a==="column"||a==="scatter")i(l,o,e.name);else if(l.type==="range")o.data.push(this.NormalizeAddress(l,e));else if(l.type==="call"&&/group/i.test(l.name))for(let c of l.args)c.type==="range"?o.data.push(this.NormalizeAddress(c,e)):c.type==="call"&&/series/i.test(c.name)&&c.args[2]&&c.args[2].type==="range"&&o.data.push(this.NormalizeAddress(c.args[2],e));else l.type==="call"&&/series/i.test(l.name)&&l.args[2]&&l.args[2].type==="range"&&o.data.push(this.NormalizeAddress(l.args[2],e))}a!=="scatter2"&&r.expression.args[1]&&r.expression.args[1].type==="range"&&(o.labels=this.NormalizeAddress(r.expression.args[1],e)),(a==="scatter"&&r.expression.args[4]&&r.expression.args[4].type==="literal"&&r.expression.args[4].value.toString().toLowerCase()==="smooth"||a==="scatter2"&&r.expression.args[2]&&r.expression.args[2].type==="literal"&&/smooth/i.test(r.expression.args[2].value.toString()))&&(o.smooth=!0),n.rect?t.push({anchor:this.AnnotationRectToAnchor(n.rect,e),options:o}):n.layout?t.push({anchor:this.AnnotationLayoutToAnchor(n.layout,e),options:o}):console.warn("annotation missing layout")}}}return t}FormulaText(e,t){if(e[0]!=="=")return e;let i=this.parser.Parse(e);if(i.expression){this.parser.Walk(i.expression,r=>{if(r.type==="call"){let a=r.name.toLowerCase();this.decorated_functions[a]&&(r.name=this.decorated_functions[a]+"."+r.name)}return!0});let n=t.table?.name||"";return this.parser.Render(i.expression,{missing:"",long_structured_references:!0,table_name:n})}else return console.warn("parsing function failed"),console.warn(e),e.substring(1)}async Export(e){let t=0,i=[];for(let D=0;D<e.sheet_data.length;D++){let _=e.sheet_data[D],Z=_.id||0;Z&&(i[Z]=_.name||""),Z===e.active_sheet&&(t=D)}let n=new Ue,r=new ze,a=new Be,o=await this.zip?.file("xl/theme/theme1.xml")?.async("text");a.FromXML(this.xmlparser2.parse(o||"")),o=await this.zip?.file("xl/styles.xml")?.async("text"),r.FromXML(this.xmlparser2.parse(o||""),a),Ve.next_drawing_index=1,Le.next_chart_index=1;let u=[],h=[];for(let D=0;D<e.sheet_data.length;D++){let _=e.sheet_data[D],Z={},R={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac xr xr2 xr3","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3","xr:uid":"{D37933E2-499F-4789-8D13-194E11B743FC}"},O=_.default_row_height?_.default_row_height/20*15:15,F={worksheet:{a$:{...R},dimension:{a$:{ref:"A1"}},sheetViews:{sheetView:{a$:{workbookViewId:0}}},sheetFormatPr:{a$:O===15?{"x14ac:dyDescent":.25}:{defaultRowHeight:O,customHeight:1,"x14ac:dyDescent":.25}},cols:{},sheetData:{},mergeCells:{a$:{count:0}},dataValidations:{},hyperlinks:{},pageMargins:{a$:{left:.7,right:.7,top:.75,bottom:.75,header:.3,footer:.3}},drawing:{},tableParts:{a$:{count:0}},extLst:{ext:{a$:{uri:"{05C60535-1F16-4fd2-B633-F4F36F0B64E0}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}}}}},j=_.styles||_.cell_style_refs||[],Q=new ct;Q.FromJSON(_.data,j);for(let N of _.cell_styles){let W=Q.EnsureCell(N);W.style||(W.style=j[N.ref])}let v={start:{row:Q.rows+1,column:Q.columns+1},end:{row:Q.rows+1,column:Q.columns+1}},z={row:[]},f=[],I=[],q=[],T=[],Y=[];for(let N=0;N<Q.data.length;N++)if(Q.data[N]&&Q.data[N].length){N<v.start.row&&(v.start.row=N);let W={start:-1,end:-1},V=[];for(let X=0;X<Q.data[N].length;X++){let $=Q.data[N][X];if($){if($.table&&$.table.area.start.row===N&&$.table.area.start.column===X){let de=new ue($.table.area.start,$.table.area.end),d=h.length+1,U=`../tables/table${d}.xml`,P=[];for(let C=0;C<de.columns;C++){let L=Q.data[N][X+C],M="";L.type!==2?(typeof L.calculated<"u"?M=L.calculated.toString():typeof L.value<"u"&&(M=L.value.toString()),L.type=2,L.value=M):M=L.value||"",M||(M=`Column${C+1}`);let S=M,H=!1,K=1;for(;!H;){H=!0;e:for(let J of P)if(J.toLowerCase()===S.toLowerCase()){H=!1,S=`${M}${++K}`;break e}}L.value=S,P.push(S)}let y;if($.table.totals_row){y=[];for(let C=0;C<de.columns;C++){let L=Q.data[de.end.row][de.start.column+C];L.type&&(L.type===1?y[C]={type:"formula",value:(L.value||"").toString().substring(1)}:(L.type!==2&&(L.type=2,L.value=L.value?.toString()||""),y[C]={type:"label",value:L.value}))}}let x={rel:we(Z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table",U),index:d,ref:de.spreadsheet_label,name:`Table${d}`,display_name:`Table${d}`,totals_row_shown:0,totals_row_count:$.table?.totals_row?1:0,columns:P,footers:y};if($.table.totals_row){let C=new ue(de.start,{row:de.end.row-1,column:de.end.column});x.filterRef=C.spreadsheet_label}T.push(x),h.push(x)}if($.merge_area&&$.merge_area.start.row===N&&$.merge_area.start.column===X&&q.push(new ue($.merge_area.start,$.merge_area.end)),$.hyperlink){let de=we(Z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",$.hyperlink,"External");f.push({rel:de,target:$.hyperlink,address:{row:N,column:X}})}if($.validation&&($.validation.type===0||$.validation.type===2)&&Y.push({address:{row:N,column:X},validation:$.validation}),$.type===1&&/^=?sparkline\\./i.test($.value)){I.push({address:{row:N,column:X},formula:$.value,style:$.style});continue}X<v.start.column&&(v.start.column=X),W.start<0&&(W.start=X),W.end=X;let ee=this.StyleFromCell(_,r,N,X,$.style),re,se,ne;switch($.type){case 1:switch(ne=this.FormulaText($.value,$),$.calculated_type){case 2:re=$.calculated,se="str";break;case 3:re=$.calculated;break;case 4:re=$.calculated?1:0,se="b";break}break;case 2:re=n.Ensure($.value),se="s";break;case 3:re=$.value;break;case 4:re=$.value?1:0,se="b";break}$.area&&$.area.start.row===N&&$.area.start.column===X&&typeof ne=="string"&&(ne={t$:ne,a$:{t:"array",ref:$.area.spreadsheet_label}});let he={a$:{r:ue.CellAddressToLabel({row:N,column:X})}};se!==void 0&&(he.a$.t=se),ee!==void 0&&(he.a$.s=ee),ne!==void 0&&(he.f=ne),re!==void 0&&(he.v=re),V.push(he)}}if(V.length){let X={a$:{r:N+1,spans:`${W.start+1}:${W.end+1}`},c:V};_.row_height&&typeof _.row_height[N]=="number"&&_.row_height[N]!==_.default_row_height&&(X.a$.customHeight=1,X.a$.ht=_.row_height[N]*3/4),z.row.push(X)}}let E=[];_.default_column_width&&(F.worksheet.sheetFormatPr.a$.defaultColWidth=lt(_.default_column_width));for(let N=0;N<_.columns;N++){let W={index:N};_.column_width&&_.default_column_width&&typeof _.column_width[N]=="number"&&_.column_width[N]!==_.default_column_width&&(W.width=lt(_.column_width[N]));let V=_.column_style[N];typeof V=="number"&&(V=j[V]),V&&(W.style=r.EnsureStyle(r.StyleOptionsFromProperties(V))),(W.style!==void 0||W.width!==void 0)&&(E[N]=W)}if(E.length)for(let N of E)F.worksheet.cols.col=E.map(W=>{let V={min:W.index+1,max:W.index+1};return W.style!==void 0&&(V.style=W.style),W.width!==void 0?(V.width=W.width,V.customWidth=1):V.width=lt(_.default_column_width||90),{a$:V}});else delete F.worksheet.cols;Y.length?F.worksheet.dataValidations={a$:{count:Y.length},dataValidation:Y.map(N=>{let W={a$:{type:"list",allowBlank:1,showInputMessage:1,showErrorMessage:1,sqref:new ue(N.address).spreadsheet_label}};if(N.validation.type===2){let V=new ue({...N.validation.area.start,absolute_column:!0,absolute_row:!0},{...N.validation.area.end,absolute_column:!0,absolute_row:!0});W.formula1=`${V.spreadsheet_label}`}else N.validation.type===0&&(W.formula1=`"${N.validation.list.join(",")}"`);return W})}:delete F.worksheet.dataValidations,T.length?(F.worksheet.tableParts.a$.count=T.length,F.worksheet.tableParts.tablePart=T.map(N=>({a$:{"r:id":N.rel||""}}))):delete F.worksheet.tableParts;for(let N of T){let W={};N.totals_row_count&&(W.totalsRowCount=1);let V={a$:{count:(N.columns||[]).length},tableColumn:[]};if(N.columns)for(let ee=0;ee<N.columns.length;ee++){let re=N.columns[ee],se=(N.footers||[])[ee],ne={a$:{id:ee+1,name:re||`Column${ee+1}`}};se&&(se.type==="label"?ne.a$.totalsRowLabel=se.value:se.type==="formula"&&(ne.a$.totalsRowFunction="custom",ne.totalsRowFormula=se.value)),V.tableColumn.push(ne)}let X={table:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3",id:N.index||0,name:N.name,displayName:N.display_name,...W,ref:N.ref},autoFilter:{a$:{ref:N.filterRef||N.ref}},tableColumns:V,tableStyleInfo:{a$:{name:"TableStyleMedium2",showFirstColumn:0,showLastColumn:0,showRowStripes:1,showColumnStripes:0}}}},$=Ne+this.xmlbuilder1.build(X);await this.zip?.file(`xl/tables/table${N.index}.xml`,$)}q.length?(F.worksheet.mergeCells.a$.count=q.length,F.worksheet.mergeCells.mergeCell=q.map(N=>({a$:{ref:N.spreadsheet_label}}))):delete F.worksheet.mergeCells,f.length?F.worksheet.hyperlinks.hyperlink=f.map(N=>({a$:{"r:id":N.rel,ref:new ue(N.address).spreadsheet_label,"xr:uid":"{0C6B7792-7EA0-4932-BF15-D49C453C565D}"}})):delete F.worksheet.hyperlinks,I.length?F.worksheet.extLst.ext["x14:sparklineGroups"]={a$:{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"},"x14:sparklineGroup":I.map(N=>{let W=this.parser.Parse(N.formula),V="";if(W.expression&&W.expression.type==="call"&&W.expression.args.length>0){let $=W.expression.args[0];if($.type==="range"||$.type==="address"){let ee=$.type==="range"?$.start:$;ee.sheet||(typeof ee.sheet_id<"u"?ee.sheet=i[ee.sheet_id]:ee.sheet=_.name),V=this.parser.Render($)}}let X={displayEmptyCellsAs:"gap"};return/column/i.test(N.formula)&&(X.type="column"),{a$:X,"x14:colorSeries":{a$:{rgb:"FF376092"}},"x14:sparklines":{"x14:sparkline":{"xm:f":V,"xm:sqref":new ue(N.address).spreadsheet_label}}}})}:delete F.worksheet.extLst,F.worksheet.sheetData=z;let G=this.ParseCharts(_),B=this.ParseImages(_);if(G.length||B.length){let N=new Ve;for(let X of G)N.AddChart(X.options,X.anchor);for(let X of B)N.AddImage(X.options,X.anchor);for(let{image:X}of N.images)await this.zip?.file(`xl/media/image${X.index}.${X.extension}`,X.options.data||"",{base64:X.options.encoding==="base64"});for(let{chart:X}of N.charts){let $=X.toJSON(),ee=Ne+this.xmlbuilder1.build($);await this.zip?.file(`xl/charts/chart${X.index}.xml`,ee),await this.WriteRels(X.relationships,`xl/charts/_rels/chart${X.index}.xml.rels`)}await this.WriteRels(N.relationships,`xl/drawings/_rels/drawing${N.index}.xml.rels`);let W=Ne+this.xmlbuilder1.build(N.toJSON());await this.zip?.file(`xl/drawings/drawing${N.index}.xml`,W),u.push(N);let V=we(Z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",`../drawings/drawing${N.index}.xml`);F.worksheet.drawing={a$:{"r:id":V}}}else delete F.worksheet.drawing;F.worksheet.dimension.a$.ref=new ue(v.start,v.end).spreadsheet_label;let k=Ne+this.xmlbuilder1.build(F);await this.zip?.file(`xl/worksheets/sheet${D+1}.xml`,k),Object.keys(Z).length&&this.WriteRels(Z,`xl/worksheets/_rels/sheet${D+1}.xml.rels`)}await this.WriteSharedStrings(n),await this.WriteStyleCache(r);let l={};we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"),we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme","theme/theme1.xml"),we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings","sharedStrings.xml");let c=e.sheet_data.map((D,_)=>we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",`worksheets/sheet${_+1}.xml`));await this.WriteRels(l,"xl/_rels/workbook.xml.rels");let A={definedName:[]};if(e.named_ranges){let D=Object.keys(e.named_ranges);for(let _ of D){let Z="",R=new ue(e.named_ranges[_].start,e.named_ranges[_].end);if(R.start.absolute_column=R.start.absolute_row=!0,R.end.absolute_column=R.end.absolute_row=!0,R.start.sheet_id){for(let O of e.sheet_data)if(O.id===R.start.sheet_id){Z=O.name||"";break}}Z&&(ar.test(Z)&&(Z=`\'${Z}\'`),Z+="!"),A.definedName.push({a$:{name:_},t$:Z+R.spreadsheet_label})}}if(e.named_expressions)for(let D of e.named_expressions)A.definedName.push({a$:{name:D.name},t$:D.expression});A.definedName.length||(A=void 0);let p={workbook:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15 xr xr6 xr10 xr2","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr6":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision6","xmlns:xr10":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision10","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2"},workbookPr:{a$:{defaultThemeVersion:"166925"}},bookViews:{workbookView:{a$:{activeTab:t||0}}},sheets:{sheet:e.sheet_data.map((D,_)=>{let Z={name:D.name||`Sheet${_+1}`,sheetId:_+1,"r:id":c[_]};return D.visible===!1&&(Z.state="hidden"),{a$:Z}})},definedNames:A}},m=Ne+this.xmlbuilder1.build(p);await this.zip?.file("xl/workbook.xml",m);let g={};for(let D of u)for(let _ of D.images)switch(_.image.extension){case"gif":case"png":case"jpeg":g[_.image.extension]="image/"+_.image.extension;break;case"svg":g.svg="image/svg+xml";break}let b={Types:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},Default:[{a$:{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}},{a$:{Extension:"xml",ContentType:"application/xml"}},...Object.keys(g).map(D=>({a$:{Extension:D,ContentType:g[D]}}))],Override:[{a$:{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}},...e.sheet_data.map((D,_)=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",PartName:`/xl/worksheets/sheet${_+1}.xml`}})),...u.reduce((D,_)=>D.concat([..._.charts.map(Z=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawingml.chart+xml",PartName:`/xl/charts/chart${Z.chart.index}.xml`}})),{a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml",PartName:`/xl/drawings/drawing${_.index}.xml`}}]),[]),{a$:{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}},{a$:{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"}},{a$:{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}},...h.map(D=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml",PartName:`/xl/tables/table${D.index||0}.xml`}})),{a$:{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}},{a$:{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}}]}},w=Ne+this.xmlbuilder1.build(b);await this.zip?.file("[Content_Types].xml",w)}async AsBinaryString(e){if(!this.zip)throw new Error("missing zip");let t={type:"binarystring"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}async AsBlob(e){if(!this.zip)throw new Error("missing zip");let t={type:"blob"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}};var Ci=Fe(St());var pr=Fe(dt());var nt=s=>"row"in s&&"col"in s,Te=s=>"from"in s&&"to"in s&&nt(s.from)&&nt(s.to),_t=(s,e)=>e.sheet===s.sheet&&e.row>=s.from.row&&e.row<=s.to.row&&e.col>=s.from.col&&e.col<=s.to.col,hr=(s,e=0,t=0)=>({from:{row:s.from.row+e,col:s.from.col+t,sheet:s.from.sheet},to:{row:s.to.row+e,col:s.to.col+t,sheet:s.to.sheet}});var Dt=class{constructor(e={}){this.options=e}path;rels_path;rels={};sheet_data={};shared_strings;extent;visible_state;tab_selected=!1;default_width=0;drawings=[];TranslateAddress(e){e=e.toUpperCase();let t=e.match(/([A-Z]+\\d+):([A-Z]+\\d+)/);if(t)return{from:this.TranslateAddress(t[1]),to:this.TranslateAddress(t[2])};let i=0,n=0;if(t=e.match(/^([A-Z]+)(\\d+)$/),t){i=Number(t[2]),n=0;let r=t[1].length;for(let a=0;a<r;a++){let o=t[1].charCodeAt(a)-64;n=n*26+o}}return{row:i,col:n}}Address(e,t=!1){if(Te(e))return this.Address(e.from,t)+":"+this.Address(e.to,t);let i="",n=e.col;for(;n>0;){let a=(n-1)%26+1;i=String.fromCharCode(64+a)+i,n=(n-a)/26}let r=e.sheet?`\'${e.sheet}\'!`:"";return t?`${r}$${i}$${e.row}`:r+i+e.row}NormalizeAddress(e){let t,i;return typeof e=="string"?(t=e.toUpperCase(),i=this.TranslateAddress(t)):(i=e,t=this.Address(i)),{a:t,rc:i}}Parse(){let e=this.sheet_data.worksheet?.dimension?.a$?.ref,t=this.TranslateAddress(e||"");Te(t)?this.extent=JSON.parse(JSON.stringify(t)):this.extent={from:JSON.parse(JSON.stringify(t)),to:JSON.parse(JSON.stringify(t))}}};var Es=new pr.XMLParser(ei),Pe=new pr.XMLParser(ht);var vt=class{constructor(e){this.zip=e}xml={};shared_strings=new Ue;style_cache=new ze;theme=new Be;defined_names={};rels={};sheets=[];active_tab=0;get sheet_count(){return this.sheets.length}async ReadRels(e){let t={},i=await this.zip.file(e)?.async("text"),n=Pe.parse(i||"");for(let r of n.Relationships?.Relationship||[]){let a=r.a$.Id;t[a]={id:a,type:r.a$.Type,target:r.a$.Target}}return t}async Init(){this.rels=await this.ReadRels("xl/_rels/workbook.xml.rels");let e=await this.zip.file("xl/sharedStrings.xml")?.async("text"),t=Pe.parse(e||"");this.shared_strings.FromXML(t),e=await this.zip.file("xl/theme/theme1.xml")?.async("text"),t=Pe.parse(e),this.theme.FromXML(t),e=await this.zip.file("xl/styles.xml")?.async("text"),t=Pe.parse(e),this.style_cache.FromXML(t,this.theme),console.info({c:this.style_cache}),e=await this.zip.file("xl/workbook.xml")?.async("text"),t=Pe.parse(e),this.defined_names={};let i=oe.FindAll(t,"workbook/definedNames/definedName");for(let a of i){let o=a.a$?.name,u=a.t$||"";o&&u&&(this.defined_names[o]=u)}let n=oe.FindAll(t,"workbook/bookViews/workbookView");n[0]?.a$?.activeTab&&(this.active_tab=Number(n[0].a$.activeTab)||0);let r=oe.FindAll(t,"workbook/sheets/sheet");for(let a of r){let o=a.a$?.name;if(o){let u=a.a$.state,h=a.a$["r:id"],l=new Dt({name:o,rid:h,id:Number(a.a$.sheetId)});u==="hidden"?l.visible_state=1:u==="veryHidden"&&(l.visible_state=2),l.shared_strings=this.shared_strings,l.path=`xl/${this.rels[h].target}`,l.rels_path=l.path.replace("worksheets","worksheets/_rels")+".rels",e=await this.zip.file(l.path)?.async("text"),l.sheet_data=Pe.parse(e||""),l.rels=await this.ReadRels(l.rels_path),l.Parse(),this.sheets.push(l)}}}async ReadTable(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Pe.parse(t),n=i.table?.a$?.name||"";return{name:n,display_name:i.table?.a$?.displayName||n,ref:i.table?.a$.ref||"",totals_row_shown:Number(i.table?.a$.totalsRowShown||"0")||0,totals_row_count:Number(i.table?.a$.totalsRowCount||"0")||0}}async ReadDrawing(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Pe.parse(t),n=await this.ReadRels(e.replace(/^..\\/drawings/,"xl/drawings/_rels")+".rels"),r=[],a=oe.FindAll(i,"xdr:wsDr/xdr:twoCellAnchor"),o=(u={})=>({column:u["xdr:col"]||0,column_offset:u["xdr:colOff"]||0,row:u["xdr:row"]||0,row_offset:u["xdr:rowOff"]||0});for(let u of a){let l={anchor:{from:o(u["xdr:from"]),to:o(u["xdr:to"])}},c=oe.FindAll(u,"xdr:graphicFrame/a:graphic/a:graphicData/c:chart")[0];if(c&&c.a$&&c.a$["r:id"]){let A=n[c.a$["r:id"]];A&&A.target&&(l.chart=await this.ReadChart(A.target))}r.push(l)}return r}async ReadChart(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Es.parse(t),n={type:0},r=oe.FindChild(i,"c:chartSpace/c:chart/c:title");if(r){let u=oe.FindChild(r,"c:tx/c:strRef/c:f");if(u)typeof u=="string"?n.title=u:u.text__&&(n.title=u.text__);else{let h=oe.FindAll(r,"c:tx/c:rich/a:p/a:r/a:t");n.title=\'"\'+h.join("")+\'"\'}}let a=(u,h=!1)=>{let l=[],c=u["c:ser"]||[];Array.isArray(c)||(c=[c]);for(let A of c){let p=l.length,m=A["c:order"];m&&(p=Number(m.__val||0)||0);let g={},b=oe.FindChild(A,"c:tx/c:v");if(b){let w=b;w&&(g.title=`"${w}"`)}else b=oe.FindChild(A,"c:tx/c:strRef/c:f"),b&&(g.title=b);if(h){let w=oe.FindChild(A,"c:xVal/c:numRef/c:f");w&&(g.categories=w);let D=oe.FindChild(A,"c:yVal/c:numRef/c:f");D&&(g.values=D)}else{let w=oe.FindChild(A,"c:val/c:numRef/c:f");w&&(g.values=w);let D=oe.FindChild(A,"c:cat/c:strRef/c:f");D||(D=oe.FindChild(A,"c:cat/c:numRef/c:f")),D&&(g.categories=D)}l[p]=g}return l},o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:barChart");return o&&(n.type=2,o["c:barDir"]&&o["c:barDir"].__val==="col"&&(n.type=1),n.series=a(o)),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:lineChart"),o&&(n.type=3,n.series=a(o))),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:doughnutChart"),o&&(n.type=5,n.series=a(o))),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:pieChart"),o&&(n.type=6,n.series=a(o))),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:scatterChart"),o&&(n.type=4,n.series=a(o,!0))),n}GetNamedRanges(){return this.defined_names}};var Ct=class{parser=new Ge;workbook;archive;async Init(e){typeof e=="string"?this.archive=await(0,Ci.default)().loadAsync(e):this.archive=e,this.archive&&(this.workbook=new vt(this.archive),await this.workbook.Init())}SheetCount(){return this.workbook?.sheet_count||0}ParseCell(e,t,i,n,r,a,o){let u=t.a$?.r;if(!u){console.warn("cell missing address");return}let h=e.TranslateAddress(u);if(Te(h)){console.warn("cell has range address");return}let l,c=0,A,p=0;if(t.a$?.t&&t.a$.t==="s"){if(c=2,typeof t.v!==void 0){let b=Number(t.v);!isNaN(b)&&e.shared_strings&&(l=e.shared_strings.Get(b)||"",l[0]==="="&&(l="\'"+l))}}else if(typeof t.f<"u"){c=1;let b=(typeof t.f=="string"?t.f:t.f.t$)||"";if(b){l="="+b.replace(/^_xll\\./g,"");let w=this.parser.Parse(b);w.expression&&(this.parser.Walk(w.expression,D=>(D.type==="call"&&/^_xll\\./.test(D.name)&&(D.name=D.name.substr(5)),!0)),l="="+this.parser.Render(w.expression,{missing:""})),typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si&&(i[t.f.a$.si]={row:h.row-1,column:h.col-1,formula:l,parse_result:this.parser.Parse(l)})}else if(typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si){let w=i[t.f.a$.si];w&&(w.parse_result.expression?l="="+this.parser.Render(w.parse_result.expression,{offset:{rows:h.row-1-w.row,columns:h.col-1-w.column},missing:""}):l=w.formula)}if(typeof t.f!="string"&&t.f.a$?.t==="array"){let w=e.TranslateAddress(t.f.a$.ref||"");Te(w)&&n.push(hr(w,-1,-1))}if(typeof t.v<"u"){let w=Number(t.v.toString());isNaN(w)?(p=2,A=t.v.toString()):(p=3,A=w)}}else if(typeof t.v<"u"){let b=Number(t.v.toString());isNaN(b)?(c=2,l=t.v.toString()):(c=3,l=b)}let m={row:h.row-1,col:h.col-1};for(let b of n)_t(b,m)&&(m.row!==b.from.row||m.col!==b.from.col)&&(p=c,A=l,l=void 0,c=0);let g={row:m.row,column:m.col,value:l,type:c};typeof A<"u"&&(g.calculated_type=p,g.calculated=A),t.a$?.s&&(g.style_ref=Number(t.a$.s));for(let b of a)b.address.row===h.row&&b.address.col===h.col&&(g.hyperlink=b.reference);for(let b of o)if(b.address.row===m.row&&b.address.column===m.col){g.validation=b.validation;break}for(let b of r)_t(b,m)&&(g.merge_area={start:{row:b.from.row,column:b.from.col},end:{row:b.to.row,column:b.to.col}});for(let b of n)_t(b,m)&&(g.area={start:{row:b.from.row,column:b.from.col},end:{row:b.to.row,column:b.to.col}});return g}async GetSheet(e=0){if(!this.workbook)throw new Error("missing workbook");let t=this.workbook.sheets[e],i=[],n={},r=[],a=[],o=[],u=[],h=[],l=oe.FindAll.bind(oe,t.sheet_data),c=l("worksheet/mergeCells/mergeCell");for(let I of c)if(I.a$.ref){let q=t.TranslateAddress(I.a$.ref);Te(q)&&a.push(hr(q,-1,-1))}let A=l("worksheet/dataValidations/dataValidation");for(let I of A){let q=I.a$?.type,T=I.a$?.sqref,Y=I.formula1;if(T&&Y&&q==="list"){let E,G,B=this.parser.Parse(T);B.expression&&(B.expression.type==="address"?E=B.expression:B.expression.type==="range"&&(E=B.expression.start)),B=this.parser.Parse(Y),B.expression&&(B.expression.type==="range"?G={type:2,area:B.expression}:B.expression.type==="literal"&&(G={type:0,list:B.expression.value.toString().split(/,/).map(k=>{let N=this.parser.Parse(k);if(N.expression?.type==="group"&&/\\s/.test(k))return k;if(N.expression?.type==="literal")return N.expression.value;if(N.expression?.type==="identifier")return N.expression.name})})),E&&G&&u.push({address:E,validation:G})}}let p=l("worksheet/hyperlinks/hyperlink");for(let I of p){let q=t.TranslateAddress(I.a$?.ref||"");Te(q)&&(q=q.from);let T="",Y="";if(I.a$&&I.a$["r:id"]){T="remote link";let E=t.rels[I.a$["r:id"]];E&&(Y=E.target||"")}else Y=I.__location||"",T=I.__display||"";o.push({address:q,reference:Y,text:T})}let m=21,g=100,b=t.sheet_data.worksheet?.sheetFormatPr;if(b){if(b.a$?.defaultColWidth){let I=Number(b.a$.defaultColWidth);isNaN(I)||(g=Nt(I))}if(b.a$?.defaultRowHeight){let I=Number(b.a$.defaultRowHeight);isNaN(I)||(m=Math.round(I*4/3))}}let w=[],D=l("worksheet/sheetData/row");for(let I of D){let q=I.a$?.r?Number(I.a$.r):1,T=m;if(I.a$?.ht){let E=Number(I.a$.ht);isNaN(E)||(T=Math.round(E*4/3))}T!==m&&(w[q-1]=T);let Y=I.c||[];Array.isArray(Y)||(Y=[Y]);for(let E of Y){let G=this.ParseCell(t,E,n,r,a,o,u);G&&i.push(G)}}let _=[],Z=-1,R=[],O=l("worksheet/cols/col");for(let I of O){let q=Number(I.a$?.min),T=Number(I.a$?.max);if(I.a$?.style){let Y=Number(I.a$.style);if(!isNaN(q)&&!isNaN(T)&&!isNaN(Y))if(t.extent&&T>=t.extent.to.col||T-q>100)Z=Y;else for(let E=q;E<=T;E++)_[E]=Y}if(I.a$?.customWidth){let Y=Number(I.a$.width);if(!isNaN(q)&&!isNaN(T)&&!isNaN(Y)&&T!==16384){Y=Nt(Y);for(let E=q;E<=T;E++)R[E-1]=Y}}}let F=l("worksheet/tableParts/tablePart");for(let I of F){let q=I.a$?I.a$["r:id"]:void 0;if(q){let T="",Y=t.rels[q];if(Y){T=Y.target||"";let E=await this.workbook.ReadTable(T);if(E){let G=t.TranslateAddress(E.ref),B=nt(G)?{start:{row:G.row-1,column:G.col-1},end:{row:G.row-1,column:G.col-1}}:{start:{row:G.from.row-1,column:G.from.col-1},end:{row:G.to.row-1,column:G.to.col-1}};for(let k of i)if(k.row===B.start.row&&k.column===B.start.column){k.table={area:B,name:E.name,totals_row:!!E.totals_row_count};break}}}}}let j=l("worksheet/drawing"),Q=[];for(let I of j){let q=I.a$?I.a$["r:id"]:void 0;if(q){let T="",Y=t.rels[q];if(Y&&(T=Y.target||""),T){let E=await this.workbook.ReadDrawing(T);E&&E.length&&Q.push(...E)}}}let v=I=>{let q={address:{row:I.row,column:I.column},offset:{x:0,y:0}};if(I.row_offset){let T=w[I.row];T===void 0&&(T=m),q.offset.y=I.row_offset/9525/T}if(I.column_offset){let T=R[I.column];T===void 0&&(T=g),q.offset.x=I.column_offset/9525/T}return q};for(let I of Q)if(I&&I.chart){let q={tl:v(I.anchor.from),br:v(I.anchor.to)},T,Y=[],E="",G=I.chart?.series;switch(I.chart.type){case 4:T="treb-chart",E="Scatter.Line",G&&G.length&&(Y[0]=`Group(${G.map(k=>`Series(${k.title||""},${k.categories||""},${k.values||""})`||"").join(", ")})`),Y[1]=I.chart.title;break;case 5:case 6:E=I.chart.type===5?"Donut.Chart":"Pie.Chart",T="treb-chart",G&&G[0]&&(Y[0]=G[0].values,Y[1]=G[0]?.categories||""),Y[2]=I.chart.title;break;case 2:case 1:case 3:switch(Y[2]=I.chart.title,T="treb-chart",I.chart.type){case 2:E="Bar.Chart";break;case 1:E="Column.Chart";break;default:E="Line.Chart"}G&&(G.length>1?Y[0]=`Group(${G.map(k=>`Series(${k.title||""},,${k.values||""})`||"").join(", ")})`:G.length===1&&(G[0].title?Y[0]=`Series(${G[0].title||""},,${G[0].values||""})`:Y[0]=G[0].values),Y[1]=G[0]?.categories||"");break}let B=`=${E}(${Y.join(", ")})`;T&&B&&h.push({layout:q,type:T,formula:B})}let z=l("worksheet/extLst/ext");for(let I of z){let q="";for(let Y of Object.keys(I?.a$||{})){let E=Y.match(/^xmlns:(.*)$/);if(E){q=E[1];break}}let T=oe.FindAll(I,`${q}:sparklineGroups/${q}:sparklineGroup`);for(let Y of T){let E="Sparkline.line",G="",B="";Y.a$?.type==="column"&&(E="Sparkline.column");let k=oe.FindAll(Y,`${q}:sparklines/${q}:sparkline`);for(let N of k)for(let W of Object.keys(N))/:f$/.test(W)?B=N[W]:/:sqref$/.test(W)&&(G=N[W]);if(B&&G){let N=`=${E}(${B})`,W=t.TranslateAddress(G);if(nt(W)){let V={row:W.row-1,column:W.col-1,value:N,type:1},X=!1;for(let $ of i)if($.row===V.row&&$.column===V.column){X=!0,$.type=1,$.value=N;break}X||i.push(V)}}}}let f={name:t.options.name,cells:i,default_column_width:g,column_widths:R,row_heights:w,annotations:h,styles:this.workbook?.style_cache?.CellXfToStyles()||[]};return(t.visible_state===1||t.visible_state===2)&&(f.hidden=!0),Z>=0&&(f.sheet_style=Z),_.length&&(f.column_styles=_),f}};var Et=self,fr=new yt,Bs=async s=>{if(s.sheet){await fr.Init(s.decorated||[]),await fr.Export(s.sheet);let e=await fr.AsBlob(1),t=e.slice(0,e.size,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");Et.postMessage({status:"complete",blob:t})}},Is=async s=>{let e=new Ct;try{await e.Init(s.data);let t=e.SheetCount(),i={sheets:[],names:e.workbook?.GetNamedRanges(),active_tab:e.workbook?.active_tab};for(let n=0;n<t;n++){let r=await e.GetSheet(n);r&&i.sheets.push(r)}Et.postMessage({status:"complete",results:i})}catch(t){console.warn("error importing xlsx file"),console.info(t),Et.postMessage({status:"error",data:t})}};Et.addEventListener("message",s=>{s.data&&s.data.command==="export"?Bs(s.data):s.data&&s.data.command==="import"&&Is(s.data)});})();\n/*! Bundled license information:\n\nhe/he.js:\n (*! https://mths.be/he v1.2.0 by @mathias | MIT license *)\n\njszip/dist/jszip.min.js:\n (*!\n \n JSZip v3.10.1 - A JavaScript class for generating and reading zip files\n <http://stuartk.com/jszip>\n \n (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\n Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n \n JSZip uses the library pako released under the MIT license :\n https://github.com/nodeca/pako/blob/main/LICENSE\n *)\n*/\n';is&&(oe.export_worker_text=is);var G_={version:"23.3.3",CreateSpreadsheet:c=>xt.Create(oe,c).sheet,SetScriptPath:c=>{oe.treb_base_path=c}};oe.BuildPath();export{G_ as TREB};
|
|
8
|
+
`)+"<ul>";let i=this.completion_list.offsetHeight,s=!1;this.options.autocomplete_prefer_top?s=r.top>=200:document.documentElement&&Math.max(document.documentElement.clientHeight,window.innerHeight||0)-r.bottom<200&&(s=!0),s?this.completion_list.style.top=r.top-i-5+"px":this.completion_list.style.top=r.bottom+5+"px",this.completion_list.style.left=r.left+"px";let n=this.completion_list.querySelectorAll("a");this.active_element=n[this.selected_index],n[this.selected_index].classList.add("selected"),this.last_completion=n[this.selected_index].textContent||void 0,this.completion_list.scrollTop=this.active_element.offsetTop,this.completion_list_visible=!0}else this.completion_list.style.top="-1000px"}};var ft=(C=>(C[C.Null=0]="Null",C[C.InsertRows=1]="InsertRows",C[C.InsertColumns=2]="InsertColumns",C[C.ResizeRows=3]="ResizeRows",C[C.ResizeColumns=4]="ResizeColumns",C[C.Select=5]="Select",C[C.SetRange=6]="SetRange",C[C.UpdateStyle=7]="UpdateStyle",C[C.UpdateBorders=8]="UpdateBorders",C[C.MergeCells=9]="MergeCells",C[C.UnmergeCells=10]="UnmergeCells",C[C.Clear=11]="Clear",C[C.UpdateTheme=12]="UpdateTheme",C[C.SetNote=13]="SetNote",C[C.SetLink=14]="SetLink",C[C.Freeze=15]="Freeze",C[C.SetName=16]="SetName",C[C.ShowHeaders=17]="ShowHeaders",C[C.AddSheet=18]="AddSheet",C[C.DuplicateSheet=19]="DuplicateSheet",C[C.DeleteSheet=20]="DeleteSheet",C[C.ActivateSheet=21]="ActivateSheet",C[C.RenameSheet=22]="RenameSheet",C[C.ReorderSheet=23]="ReorderSheet",C[C.ShowSheet=24]="ShowSheet",C[C.DataValidation=25]="DataValidation",C[C.Reset=26]="Reset",C[C.SortTable=27]="SortTable",C[C.InsertTable=28]="InsertTable",C[C.RemoveTable=29]="RemoveTable",C))(ft||{});var Ei={scrollbars:!0,in_cell_editor:!0,formula_bar:!0,add_tab:!1,tab_bar:"auto",insert_function_button:!1,expand_formula_button:!1,expand:!0,repaint_on_cell_change:!0,grid_over_background:!1};var pt=class{grid_events=new te;command_log=new te;model;view;get active_sheet(){return this.view.active_sheet}set active_sheet(e){this.view.active_sheet=e}get view_index(){return this.view.view_index}batch=!1;batch_events=[];autocomplete_matcher=new Nt;flags={};options;parser;constructor(e={},t,r){this.model=r,this.view={active_sheet:this.model.sheets.list[0],view_index:this.model.view_count++},this.parser=t,this.options={...Ei,...e}}RemoveTable(e){this.ExecCommand({key:29,table:e})}InsertTable(e,t=!1,r=void 0,i){e.start.sheet_id||(e.start.sheet_id=this.active_sheet.id);let s=this.FindSheet(e);for(let n=e.start.row;n<=e.end.row;n++)for(let a=e.start.column;a<=e.end.column;a++){let o=s.cells.GetCell({row:n,column:a},!1);if(o&&(o.area||o.merge_area||o.table))throw new Error("invalid area for table")}this.ExecCommand({key:28,area:JSON.parse(JSON.stringify(e)),totals:t,sortable:r,theme:i})}SortTable(e,t={}){this.ExecCommand({key:27,table:JSON.parse(JSON.stringify(e)),...si,...t})}FilterTable(e,t,r){let i=[];if(!e.area.start.sheet_id)throw new Error("invalid table area");let s=this.model.sheets.Find(e.area.start.sheet_id);if(!s)throw new Error("invalid table sheet");let n=[],a=[],o=e.totals_row?e.area.end.row-1:e.area.end.row;t+=e.area.start.column;for(let l=e.area.start.row+1;l<=o;l++){let d=s.CellData({row:l,column:t}),u=r(d),h=s.GetRowHeight(l);u&&!h?n.push(l):!u&&h&&a.push(l)}n&&i.push({key:3,sheet_id:s.id,row:n,height:s.default_row_height}),a&&i.push({key:3,sheet_id:s.id,row:a,height:0}),i.length&&this.ExecCommand(i)}UpdateSheets(e,t=!1,r){j.Reset();let i=e.map(s=>j.FromJSON(s,this.model.theme_style_properties));if(i.length===0&&i.push(j.Blank(this.model.theme_style_properties)),this.model.sheets.Assign(i),this.ResetMetadata(),this.active_sheet=i[0],r){let s=this.model.sheets.Find(r);s&&(this.active_sheet=s)}}SetAutocompleteFunctions(e){let t=[];for(let i of this.model.named_expressions.keys())t.push({name:i,type:0});let r=e.slice(0).concat(this.model.named_ranges.List().map(i=>({name:i.name,type:1})),t);this.autocomplete_matcher.SetFunctions(r)}ResetMetadata(){this.model.document_name=void 0,this.model.user_data=void 0}Serialize(e={}){let t=this.model.sheets.list.map(n=>n.toJSON(e)),r;this.model.tables.size>0&&(r=Array.from(this.model.tables.values()));let i;if(this.model.macro_functions.size){i=[];for(let n of this.model.macro_functions.values())i.push({...n,expression:void 0})}let s=[];if(this.model.named_expressions)for(let[n,a]of this.model.named_expressions){this.parser.Walk(a,l=>{if(l.type==="address"||l.type==="range"){let d=l.type==="range"?l.start:l;if(d.absolute_column=d.absolute_row=!0,!d.sheet){if(d.sheet_id){let u=this.model.sheets.Find(d.sheet_id);u&&(d.sheet=u.name)}d.sheet||(d.sheet=this.active_sheet.name)}return l.type==="range"&&(l.end.absolute_column=l.end.absolute_row=!0),!1}return!0});let o=this.parser.Render(a,{missing:""});s.push({name:n,expression:o})}return{sheet_data:t,active_sheet:this.active_sheet.id,named_ranges:this.model.named_ranges.Count()?this.model.named_ranges.Serialize():void 0,macro_functions:i,tables:r,named_expressions:s.length?s:void 0}}ResizeColumnsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.column;if(typeof r>"u"){r=[];for(let i=0;i<t.columns;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.width)for(let i of r)t.SetColumnWidth(i,e.width);else console.error("auto size not supported")}ResizeRowsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.row;if(typeof r>"u"){r=[];for(let i=0;i<t.rows;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.height)for(let i of r)t.SetRowHeight(i,e.height);else console.error("auto size not supported")}ResetInternal(){j.Reset(),this.UpdateSheets([],!0),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),this.model.macro_functions.clear(),this.model.tables.clear()}SetValidationInternal(e){let t,r=this.FindSheet(e.area);if(r&&(t=r.cells.GetCell(e.area,!0)),!t)throw new Error("invalid cell in set validation");e.range?t.validation={type:2,area:e.range,error:!!e.error}:e.list?t.validation={type:0,list:JSON.parse(JSON.stringify(e.list)),error:!!e.error}:t.validation=void 0}GetValidationRange(e){let t,r=this.FindSheet(e);if(r){t=[],e=r.RealArea(new y(e.start,e.end),!0);for(let i=e.start.row;i<=e.end.row;i++)for(let s=e.start.column;s<=e.end.column;s++){let n=r.CellData({row:i,column:s});n&&n.formatted&&(typeof n.formatted=="string"?t.push(n.formatted):t.push(X.FormatPartsAsText(n.formatted)))}}return t}DeleteSheetInternal(e){let t=!1,r=-1,i="",s=!1,n=e.name?e.name.toLowerCase():"",a=this.model.sheets.list.filter((o,l)=>l===e.index||o.id===e.id||o.name.toLowerCase()===n?(t=o===this.active_sheet,this.model.named_ranges.RemoveRangesForSheet(o.id),i=o.name,r=l,!1):!0);if(i&&this.RenameSheetReferences(a,i,"#REF")>0&&(s=!0),!a.length)a.push(j.Blank(this.model.theme_style_properties)),r=0;else if(a.every(o=>!o.visible))a.unshift(j.Blank(this.model.theme_style_properties)),r=0;else for(r>=a.length&&(r=0);!a[r].visible;)r++;return this.model.sheets.Assign(a),t&&this.ActivateSheetInternal({key:21,index:r}),s}RenameSheetInternal(e,t){if(!t||ci.test(t))throw new Error("invalid sheet name");let r=t.toLowerCase();for(let s of this.model.sheets.list)if(s!==e&&s.name.toLowerCase()===r)throw new Error("sheet name already exists");let i=e.name;e.name=t,this.model.sheets.Assign(this.model.sheets.list),this.RenameSheetReferences(this.model.sheets.list,i,t)}SortTableInternal(e){if(!e.table.area.start.sheet_id)throw new Error("table has invalid area");let t=this.model.sheets.Find(e.table.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table area");let r=[],i=[],s=e.table.area.end.row;e.table.totals_row&&s--;let n=0,a=0;for(let h=e.table.area.start.row+1;h<=s;h++){if(t.GetRowHeight(h))i.push(h);else continue;let p={row:h,number:0,text:"",type:0,data:[]};for(let m=e.table.area.start.column;m<=e.table.area.end.column;m++){let _=t.CellData({row:h,column:m});if(m===e.column+e.table.area.start.column){let b=_.calculated_type||_.type;b===2?n++:b===3&&a++;let g=_.calculated_type?_.calculated:_.value;p.text=g?.toString()||"",p.number=Number(g)||0,p.type=_.calculated_type||_.type}p.data.push({address:{row:h,column:m},data:_.value,type:_.type,style:_.style})}r.push(p)}let o=e.type;o==="auto"&&(a>n?o="numeric":o="text");let l=e.asc?1:-1;switch(o){case"numeric":r.sort((h,f)=>h.type===0?f.type===0?0:1:f.type===0?-1:(h.number-f.number)*l);break;case"text":default:r.sort((h,f)=>h.type===0?f.type===0?0:1:f.type===0?-1:h.text.localeCompare(f.text)*l);break}let d={row:e.table.area.start.row+1,column:e.table.area.start.column};for(let h=0;h<i.length;h++){d.row=i[h];let f=r[h];d.column=e.table.area.start.column;for(let p of f.data){if(p.type===1){let m=p.data,_={columns:0,rows:d.row-f.row},b=this.parser.Parse(m);b.expression&&(m="="+this.parser.Render(b.expression,{offset:_,missing:""})),t.SetCellValue(d,m)}else t.SetCellValue(d,p.data);t.UpdateCellStyle(d,p.style||{},!1),d.column++}}let u=this.model.tables.get(e.table.name.toLowerCase());u&&(u.sort={type:e.type,asc:!!e.asc,column:e.column});{let h=e.table.area.start.row;for(let f=e.table.area.start.column;f<=e.table.area.end.column;f++)t.cells.data[h][f]?.FlushStyle();if(e.table.totals_row){h=e.table.area.end.row;for(let f=e.table.area.start.column;f<=e.table.area.end.column;f++)t.cells.data[h][f]?.FlushStyle()}}return new y(e.table.area.start,e.table.area.end)}UpdateTableColumns(e){if(!e.area.start.sheet_id)throw new Error("invalid area in table");let t=this.model.sheets.Find(e.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table");let r=e.columns?.slice(0)||void 0,i=[],s=e.area.start.row,n=e.area.end.column-e.area.start.column+1,a=e.area.start.column;for(let o=0;o<n;o++,a++){let l=t.CellData({row:s,column:a}),d="";l.type!==2?(typeof l.calculated<"u"?d=l.calculated.toString():typeof l.value<"u"&&(d=l.value.toString()),l.Set(d,2)):d=l.value||"",d||(d=`Column${o+1}`);let u=d,h=!1,f=1;for(;!h;){h=!0;e:for(let p of i)if(p.toLowerCase()===u.toLowerCase()){h=!1,u=`${d}${++f}`;break e}}l.Set(u,2),i.push(u.toLowerCase())}if(r&&r.length===i.length){let o=new Map;for(let l=0;l<r.length;l++){let d=r[l].toLowerCase();d!==i[l]&&o.set(d,i[l])}if(o.size){let l=e.name.toLowerCase();for(let d of this.model.sheets.list)d.cells.IterateAll(u=>{if(u.ValueIsFormula()){let h=!1,f=this.parser.Parse(u.value);f.expression&&(this.parser.Walk(f.expression,p=>{if(p.type==="structured-reference"&&(p.table.toLowerCase()===l||!p.table&&u.table===e))for(let[m,_]of o.entries())p.column.toLowerCase()===m&&(p.column=_,h=!0);return!0}),h&&(console.info("updating value"),u.value="="+this.parser.Render(f.expression,{missing:""})))}})}}return e.columns=i,{start:{...e.area.start},end:{row:e.area.start.row,column:e.area.end.column}}}SetRangeInternal(e,t={}){let r=z(e.area)?new y(e.area):new y(e.area.start,e.area.end),i=this.FindSheet(r);if(r.start.sheet_id||(r.start.sheet_id=i.id),!r.entire_row&&!r.entire_column&&(r.end.row>=i.rows||r.end.column>=i.columns)&&(i.cells.EnsureCell(r.end),i===this.active_sheet&&(t.layout=!0)),z(e.area)){let s=i.CellData(e.area);if(s.area&&(s.area.rows>1||s.area.columns>1)){this.Error(2);return}let n=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;return e.r1c1&&(n=this.TranslateR1C1(e.area,n)),e.array?i.SetArrayValue(r,n):i.SetCellValue(e.area,n),r}else{if(e.array){let s=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;e.r1c1&&(s=this.TranslateR1C1(r.start,s)),i.SetArrayValue(r,s)}else{if(e.r1c1){if(Array.isArray(e.value))for(let s=0;s<e.value.length&&s<r.rows;s++){e.value[s]||(e.value[s]=[]);let n=e.value[s];for(let a=0;a<n.length&&a<r.columns;a++){let o={...r.start,row:r.start.row+s,column:r.start.column+a};n[a]=this.TranslateR1C1(o,n[a])}}else if(typeof e.value=="string"&&e.value[0]==="="){let s=[];for(let n=0;n<r.rows;n++){let a=[];for(let o=0;o<r.columns;o++){let l={...r.start,row:r.start.row+n,column:r.start.column+o};a.push(this.TranslateR1C1(l,e.value))}s.push(a)}e.value=s}}i.SetAreaValues2(r,e.value)}return r}}ActivateSheetInternal(e){let t=this.ResolveSheet(e)||this.model.sheets.list[0];if(this.active_sheet===t&&!e.force)return;if(!t.visible)throw new Error("cannot activate hidden sheet");let r=this.active_sheet;this.active_sheet=t,this.grid_events.Publish({type:"sheet-change",deactivate:r,activate:this.active_sheet})}ShowSheetInternal(e){let t=this.ResolveSheet(e);if(t&&t.visible!==e.show){if(!e.show){let r=0;for(let i of this.model.sheets.list)(!t.visible||i===t)&&r++;if(r>=this.model.sheets.length)throw new Error("can't hide all sheets")}if(t.visible=e.show,t===this.active_sheet){let r=this.model.sheets.list;for(let i=0;i<r.length;i++)if(r[i]===this.active_sheet){for(let s=i+1;s<r.length;s++)if(r[s].visible){this.ActivateSheetInternal({key:21,index:s});return}for(let s=0;s<r.length;s++)if(r[s].visible){this.ActivateSheetInternal({key:21,index:s});return}throw new Error("no visible sheet")}}}}NormalizeCommands(e){Array.isArray(e)||(e=[e]);let t=this.active_sheet.id;for(let r of e)switch(r.key){case 0:case 17:case 24:case 18:case 19:case 20:case 21:case 22:case 23:case 26:break;case 27:case 29:r.table.area.start.sheet_id||(r.table.area.start.sheet_id=t);break;case 3:case 4:case 2:case 1:case 15:r.sheet_id||(r.sheet_id=t);break;case 11:case 13:case 14:case 8:case 9:case 10:case 25:case 6:case 7:case 16:case 5:case 28:r.area&&(z(r.area)?r.area.sheet_id||(r.area.sheet_id=t):r.area.start.sheet_id||(r.area.start.sheet_id=t));break}return e}AddSheetInternal(e=j.default_sheet_name,t=-1){if(!this.options.add_tab){console.warn("add tab option not set or false");return}for(;this.model.sheets.list.some(i=>i.name===e);){let i=e.match(/^(.*?)(\d+)$/);i?e=i[1]+(Number(i[2])+1):e=e+"2"}let r=j.Blank(this.model.theme_style_properties,e);return t>=0?this.model.sheets.Splice(t,0,r):this.model.sheets.Add(r),r.id}ResolveSheet(e){if(typeof e.index<"u")return this.model.sheets.list[e.index];if(typeof e.name<"u")return this.model.sheets.Find(e.name);if(e.id)return this.model.sheets.Find(e.id)}FindSheet(e){if(e===void 0)return this.active_sheet;let t=typeof e=="number"?e:z(e)?e.sheet_id:e.start.sheet_id;if(!t||t===this.active_sheet.id)return this.active_sheet;let r=this.model.sheets.Find(t);return r||this.active_sheet}PatchFormulasInternal(e,t,r,i,s,n,a){let o=this.parser.Parse(e||""),l=!1;if(o.expression&&(this.parser.Walk(o.expression,d=>{if(d.type==="range"||d.type==="address"){let u=[];d.type==="range"?(d.start.sheet&&d.start.sheet.toLowerCase()===n||!d.start.sheet&&a)&&u.push(d.start,d.end):d.type==="address"&&(d.sheet&&d.sheet.toLowerCase()===n||!d.sheet&&a)&&u.push(d);for(let h of u)r&&h.row>=t&&(r<0&&h.row+r<t?h.column=h.row=-1:h.row+=r,l=!0),s&&h.column>=i&&(s<0&&h.column+s<i?h.column=h.row=-1:h.column+=s,l=!0);return!1}return!0}),l))return"="+this.parser.Render(o.expression,{missing:""})}RenameSheetReferences(e,t,r){let i=0;t=t.toLowerCase();for(let s of e){s.cells.IterateAll(n=>{if(n.ValueIsFormula()){let a=!1,o=this.parser.Parse(n.value||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(n.value="="+this.parser.Render(o.expression,{missing:""}),i++))}});for(let n of s.annotations)if(n.formula){let a=!1,o=this.parser.Parse(n.formula||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(n.formula="="+this.parser.Render(o.expression,{missing:""}),i++))}}return i}ApplyBordersInternal(e){let t=e.borders,r=e.borders==="none"?0:e.width,i=new y(e.area.start,e.area.end),s=this.FindSheet(i);i.start.sheet_id=s.id;let n={border_top:r},a={border_bottom:r},o={border_left:r},l={border_right:r},d={border_top:0},u={border_bottom:0},h={border_left:0},f={border_right:0};return e.color&&(n.border_top_fill={...e.color},a.border_bottom_fill={...e.color},o.border_left_fill={...e.color},l.border_right_fill={...e.color}),(t==="none"||t==="all")&&s.UpdateAreaStyle(i,{...n,...a,...o,...l},!0),(t==="top"||t==="outside")&&(i.entire_column||s.UpdateAreaStyle(i.top,{...n},!0)),(t==="none"||t==="all"||t==="outside"||t==="top")&&(i.entire_column||i.start.row&&s.UpdateAreaStyle(new y({row:i.start.row-1,column:i.start.column},{row:i.start.row-1,column:i.end.column}),{...u},!0)),(t==="bottom"||t==="outside")&&(i.entire_column||s.UpdateAreaStyle(i.bottom,{...a},!0)),(t==="none"||t==="all"||t==="outside"||t==="bottom")&&(i.entire_column||s.UpdateAreaStyle(new y({row:i.end.row+1,column:i.start.column},{row:i.end.row+1,column:i.end.column}),{...d},!0)),(t==="left"||t==="outside")&&(i.entire_row||s.UpdateAreaStyle(i.left,{...o},!0)),(t==="none"||t==="all"||t==="outside"||t==="left")&&(i.entire_row||i.start.column&&s.UpdateAreaStyle(new y({row:i.start.row,column:i.start.column-1},{row:i.end.row,column:i.start.column-1}),{...f},!0)),(t==="right"||t==="outside")&&(i.entire_row||s.UpdateAreaStyle(i.right,{...l},!0)),(t==="none"||t==="all"||t==="outside"||t==="right")&&(i.entire_row||s.UpdateAreaStyle(new y({row:i.start.row,column:i.end.column+1},{row:i.end.row,column:i.end.column+1}),{...h},!0)),y.Bleed(i)}TranslateR1C1(e,t){let r=!1,i=this.parser.flags.r1c1;if(this.parser.flags.r1c1=!0,typeof t=="string"&&t[0]==="="){let s=this.parser.Parse(t);s.expression&&(this.parser.Walk(s.expression,n=>(n.type==="address"&&n.r1c1&&(r=!0,n.offset_column&&(n.column=n.column+e.column),n.offset_row&&(n.row=n.row+e.row)),!0)),r&&(this.flags.warned_r1c1||(this.flags.warned_r1c1=!0,console.warn("NOTE: R1C1 support is experimental. the semantics may change in the future.")),t="="+this.parser.Render(s.expression,{missing:""})))}return this.parser.flags.r1c1=i,t}ClearAreaInternal(e){let t=!1;e=this.active_sheet.RealArea(e),this.active_sheet.cells.Apply(e,r=>{r.area&&!e.ContainsArea(r.area)&&(t=!0)}),t?this.Error(2):this.active_sheet.ClearArea(e)}Error(e){this.grid_events.Publish({type:"error",code:e})}DuplicateSheetInternal(e){if(!this.options.add_tab){console.warn("add tab option not set or false");return}let t=this.ResolveSheet(e),r=this.model.sheets.list.reduce((o,l)=>Math.max(o,l.id),0)+1,i=-1;for(let o=0;o<this.model.sheets.length;o++)this.model.sheets.list[o]===t&&(i=o+1);if(!t||i<0)throw new Error("source sheet not found");if(typeof e.insert_before=="number")i=e.insert_before;else if(typeof e.insert_before=="string"){let o=e.insert_before.toLowerCase();for(let l=0;l<this.model.sheets.length;l++)if(this.model.sheets.list[l].name.toLowerCase()===o){i=l;break}}let s={rendered_values:!0},n=j.FromJSON(t.toJSON(s),this.model.theme_style_properties),a=e.new_name||t.name;for(;this.model.sheets.list.some(o=>o.name===a);){let o=a.match(/^(.*?)(\d+)$/);o?a=o[1]+(Number(o[2])+1):a=a+"2"}return n.name=a,n.id=r,this.model.sheets.Splice(i,0,n),n.id}SelectInternal(e){}FreezeInternal(e){let t=this.FindSheet(e.sheet_id||this.active_sheet.id);t.freeze.rows=e.rows,t.freeze.columns=e.columns}InsertRowsInternal(e){let t=this.FindSheet(e.sheet_id);if(!t.InsertRows(e.before_row,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_row<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row<=o.area.end.row){o.area.end.row+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let d=o.area.start.column;d<=o.area.end.column;d++){let u=t.CellData({row:l,column:d});u.table=o}}}else if(e.before_row<=o.area.start.row)if(e.before_row-e.count<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row-e.count>=o.area.end.row)this.model.tables.delete(o.name.toLowerCase());else{this.model.tables.delete(o.name.toLowerCase());for(let l=e.before_row;l<=o.area.end.row;l++)for(let d=o.area.start.column;d<=o.area.end.column;d++){let u=t.CellData({row:l,column:d});u.table===o&&(u.table=void 0)}}else e.before_row<=o.area.end.row&&(e.before_row-e.count>o.area.end.row&&(o.totals_row=!1),o.area.end.row=Math.max(0,o.area.end.row+e.count,e.before_row-1));this.model.named_ranges.PatchNamedRanges(t.id,0,0,e.before_row,e.count);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(d=>{if(d.ValueIsFormula()){let u=this.PatchFormulasInternal(d.value||"",e.before_row,e.count,0,0,i,l);u&&(d.value=u)}});for(let d of o.annotations)if(d.formula){let u=this.PatchFormulasInternal(d.formula||"",e.before_row,e.count,0,0,i,l);u&&(d.formula=u)}}let s=[],n=[],a=[];if(e.count>0){let o=e.before_row;for(let l of t.annotations)if(l.layout){let[d,u,h]=[l.layout.tl.address.row,l.layout.br.address.row,l.layout.br.offset.y];if(o<=d)l.layout.tl.address.row+=e.count,l.layout.br.address.row+=e.count;else if(o<u||o===u&&h>0)l.layout.br.address.row+=e.count,n.push(l);else continue;s.push(l)}}else if(e.count<0){let o=e.before_row,l=e.before_row-e.count-1;for(let d of t.annotations)if(d.layout){let[u,h,f]=[d.layout.tl.address.row,d.layout.br.address.row,d.layout.br.offset.y];if(o<=u)if(l<u)d.layout.tl.address.row+=e.count,d.layout.br.address.row+=e.count;else if(l<h-1||l===h-1&&f>0)d.layout.tl.address.row=o,d.layout.tl.offset.y=0,d.layout.br.address.row+=e.count,n.push(d);else{a.push(d);continue}else if(o<h||o===h&&f>0)l<h-1||l===h-1&&f>0?(d.layout.br.address.row+=e.count,n.push(d)):(d.layout.br.address.row=o,d.layout.br.offset.y=0,n.push(d));else continue;s.push(d)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:s,resize_annotations_list:n,delete_annotations_list:a}}InsertColumnsInternal(e){let t=this.FindSheet(e.sheet_id);if(!t.InsertColumns(e.before_column,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_column<=o.area.start.column)o.area.start.column+=e.count,o.area.end.column+=e.count;else if(e.before_column<=o.area.end.column){o.area.end.column+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let d=o.area.start.column;d<=o.area.end.column;d++){let u=t.CellData({row:l,column:d});u.table=o}this.UpdateTableColumns(o)}}else e.before_column<=o.area.start.column?e.before_column-e.count<=o.area.start.column?(o.area.start.column+=e.count,o.area.end.column+=e.count):e.before_column-e.count>=o.area.end.column?this.model.tables.delete(o.name.toLowerCase()):(o.area.start.column=e.before_column,o.area.end.column+=e.count,this.UpdateTableColumns(o)):e.before_column<=o.area.end.column&&(o.area.end.column=Math.max(0,o.area.end.column+e.count,e.before_column-1),this.UpdateTableColumns(o));this.model.named_ranges.PatchNamedRanges(t.id,e.before_column,e.count,0,0);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(d=>{if(d.ValueIsFormula()){let u=this.PatchFormulasInternal(d.value||"",0,0,e.before_column,e.count,i,l);u&&(d.value=u)}});for(let d of o.annotations)if(d.formula){let u=this.PatchFormulasInternal(d.formula,0,0,e.before_column,e.count,i,l);u&&(d.formula=u)}}let s=[],n=[],a=[];if(e.count>0){let o=e.before_column;for(let l of t.annotations)if(l.layout){let[d,u,h]=[l.layout.tl.address.column,l.layout.br.address.column,l.layout.br.offset.x];if(o<=d)l.layout.tl.address.column+=e.count,l.layout.br.address.column+=e.count;else if(o<u||o===u&&h>0)l.layout.br.address.column+=e.count,n.push(l);else continue;s.push(l)}}else if(e.count<0){let o=e.before_column,l=e.before_column-e.count-1;for(let d of t.annotations)if(d.layout){let[u,h,f]=[d.layout.tl.address.column,d.layout.br.address.column,d.layout.br.offset.x];if(o<=u)if(l<u)d.layout.tl.address.column+=e.count,d.layout.br.address.column+=e.count;else if(l<h-1||l===h-1&&f>0)d.layout.tl.address.column=o,d.layout.tl.offset.x=0,d.layout.br.address.column+=e.count,n.push(d);else{a.push(d);continue}else if(o<h||o===h&&f>0)l<h-1||l===h-1&&f>0?(d.layout.br.address.column+=e.count,n.push(d)):(d.layout.br.address.column=o,d.layout.br.offset.x=0,n.push(d));else continue;s.push(d)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:s,resize_annotations_list:n,delete_annotations_list:a}}ExecCommand(e,t=!0){let r={pending:[]},i=[];e=this.NormalizeCommands(e),t&&this.command_log.Publish({command:e,timestamp:new Date().getTime()});for(let s of e)switch(s.key){case 26:this.ResetInternal();break;case 11:if(s.area){let n=new y(s.area.start,s.area.end);this.ClearAreaInternal(n),r.data_area=y.Join(n,r.data_area),r.formula=!0}break;case 5:this.SelectInternal(s);break;case 15:this.FreezeInternal(s),r.structure_event=!0;break;case 28:{let n=this.FindSheet(s.area),a=new y(s.area.start,s.area.end),o=!0;e:for(let l=a.start.row;l<=a.end.row;l++)for(let d=a.start.column;d<=a.end.column;d++){let u=n.cells.GetCell({row:l,column:d},!1);if(u&&(u.area||u.merge_area||u.table)){o=!1;break e}}if(o){let l=this.model.tables.size+1,d="";for(;d=`Table${l++}`,!!this.model.tables.has(d.toLowerCase()););let u={area:s.area,name:d,sortable:s.sortable,theme:s.theme};s.totals&&(u.totals_row=!0),this.model.tables.set(d.toLowerCase(),u);for(let h=a.start.row;h<=a.end.row;h++)for(let f=a.start.column;f<=a.end.column;f++){let p=n.cells.GetCell({row:h,column:f},!0);p.table=u}this.UpdateTableColumns(u),n.Invalidate(new y(u.area.start,u.area.end)),n===this.active_sheet?(r.style_area=y.Join(a,r.style_area),r.render_area=y.Join(a,r.render_area)):r.style_event=!0}}break;case 29:{let n=this.FindSheet(s.table.area),a=new y(s.table.area.start,s.table.area.end);for(let l=a.start.row;l<=a.end.row;l++)for(let d=a.start.column;d<=a.end.column;d++){let u=n.cells.GetCell({row:l,column:d},!1);u&&(u.table=void 0)}this.model.tables.delete(s.table.name.toLowerCase());let o=n.RealArea(a.Clone().Shift(-1,-1).Resize(a.rows+2,a.columns+2));n.Invalidate(o),n===this.active_sheet?(r.style_area=y.Join(a,r.style_area),r.render_area=y.Join(a,r.render_area)):r.style_event=!0}break;case 9:{let n=this.FindSheet(s.area);n.MergeCells(new y(s.area.start,s.area.end)),r.structure_event=!0,r.structure_rebuild_required=!0,n===this.active_sheet?(r.data_area=y.Join(s.area,r.data_area),r.render_area=y.Join(s.area,r.render_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(n.id))}break;case 10:{let n=this.FindSheet(s.area),a={},o=new y(s.area.start,s.area.end);n.cells.Apply(o,d=>{if(d.merge_area){let u=y.CellAddressToLabel(d.merge_area.start)+":"+y.CellAddressToLabel(d.merge_area.end);a[u]=d.merge_area}},!1);let l=Object.keys(a);for(let d=0;d<l.length;d++)n.UnmergeCells(a[l[d]]);n===this.active_sheet?(r.render_area=y.Join(s.area,r.render_area),r.data_area=y.Join(s.area,r.data_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(n.id)),r.structure_event=!0,r.structure_rebuild_required=!0}break;case 7:{let n,a=this.FindSheet(s.area);z(s.area)?(n=new y(s.area),a.UpdateCellStyle(s.area,s.style,!!s.delta)):(n=new y(s.area.start,s.area.end),a.UpdateAreaStyle(n,s.style,!!s.delta)),a===this.active_sheet?(r.style_area=y.Join(n,r.style_area),(!s.delta||s.style.fill||s.style.border_top||s.style.border_left||s.style.border_right||s.style.border_bottom)&&(n=y.Bleed(n),this.active_sheet.Invalidate(n)),r.render_area=y.Join(n,r.render_area)):r.style_event=!0}break;case 25:this.SetValidationInternal(s),(!s.area.sheet_id||s.area.sheet_id===this.active_sheet.id)&&(r.render_area=y.Join(new y(s.area),r.render_area));break;case 16:s.area?(this.model.named_expressions.delete(s.name),this.model.named_ranges.SetName(s.name,new y(s.area.start,s.area.end)),this.autocomplete_matcher.AddFunctions({type:1,name:s.name})):s.expression?(this.model.named_ranges.ClearName(s.name),this.model.named_expressions.set(s.name,s.expression),this.autocomplete_matcher.AddFunctions({type:1,name:s.name})):(this.model.named_ranges.ClearName(s.name),this.model.named_expressions.delete(s.name),this.autocomplete_matcher.RemoveFunctions({type:1,name:s.name})),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 8:{let n=this.ApplyBordersInternal(s);n.start.sheet_id===this.active_sheet.id?(r.render_area=y.Join(n,r.render_area),r.style_area=y.Join(n,r.style_area)):r.style_event=!0}break;case 24:this.ShowSheetInternal(s),r.sheets=!0,r.structure_event=!0;break;case 23:{let n=[],a=this.model.sheets.list[s.index];for(let o=0;o<this.model.sheets.length;o++)o!==s.index&&(o===s.move_before&&n.push(a),n.push(this.model.sheets.list[o]));s.move_before>=this.model.sheets.length&&n.push(a),this.model.sheets.Assign(n),r.sheets=!0,r.structure_event=!0}break;case 22:{let n=this.ResolveSheet(s);n&&(this.RenameSheetInternal(n,s.new_name),r.sheets=!0,r.structure_event=!0)}break;case 3:{let n=this.ResizeRowsInternal(s);if(n)if(n.start.sheet_id===this.active_sheet.id){let a=this.active_sheet.RealArea(new y(n.start,n.end));r.render_area=y.Join(a,r.render_area),r.data_area=y.Join(a,r.data_area),r.data_event=!0}else r.data_event=!0,r.pending||(r.pending=[]),n.start.sheet_id&&r.pending.push(n.start.sheet_id);r.structure_event=!0}break;case 4:this.ResizeColumnsInternal(s),r.structure_event=!0;break;case 17:this.active_sheet.SetHeaderSize(s.show?void 0:1,s.show?void 0:1),this.flags.layout=!0,this.flags.repaint=!0;break;case 1:this.InsertRowsInternal(s),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 2:this.InsertColumnsInternal(s),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 14:case 13:{let n=this.FindSheet(s.area),a=n.cells.GetCell(s.area,!0);if(a){let o;a.merge_area?(o=new y(a.merge_area.start),a=n.cells.GetCell(a.merge_area.start,!0)):o=new y(s.area),s.key===13?a.SetNote(s.note):(a.hyperlink=s.reference||void 0,a.render_clean=[]),n===this.active_sheet?(r.style_area=y.Join(o,r.style_area),r.render_area=y.Join(o,r.render_area)):r.style_event=!0}}break;case 27:{let n=this.SortTableInternal(s);n&&n.start.sheet_id===this.active_sheet.id?(r.data_area=y.Join(n,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=y.Join(n,r.render_area))):r.data_event=!0}break;case 6:{let n=this.SetRangeInternal(s,r);if(n){let o=this.model.sheets.Find(n.start.sheet_id||this.active_sheet.id)?.TablesFromArea(n,!0)||[];for(let l of o)this.UpdateTableColumns(l)}n&&n.start.sheet_id===this.active_sheet.id?(r.data_area=y.Join(n,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=y.Join(n,r.render_area))):r.data_event=!0}break;case 20:this.DeleteSheetInternal(s),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 19:this.DuplicateSheetInternal(s),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 18:{let n=this.AddSheetInternal(s.name,s.insert_index);typeof n=="number"&&s.show&&this.ActivateSheetInternal({key:21,id:n}),r.structure_event=!0,r.sheets=!0,r.structure=!0}break;case 21:this.ActivateSheetInternal(s);break;default:console.warn(`unhandled command: ${ft[s.key]} (${s.key})`)}return r.data_area?(r.data_area.start.sheet_id||r.data_area.SetSheetID(this.active_sheet.id),i.push({type:"data",area:r.data_area})):r.data_event&&i.push({type:"data"}),r.style_area?(r.style_area.start.sheet_id||r.style_area.SetSheetID(this.active_sheet.id),i.push({type:"style",area:r.style_area})):r.style_event&&i.push({type:"style"}),r.structure_event&&i.push({type:"structure",rebuild_required:r.structure_rebuild_required}),this.batch?this.batch_events.push(...i):this.grid_events.Publish(i),r}};var mt=class extends pt{hide_selection=!1;headless=!1;get scale(){return this.layout.scale}set scale(e){this.layout.scale=e,this.UpdateLayout(),this.UpdateAnnotationLayout(),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.layout.ApplyTheme(this.theme),this.overlay_editor?.UpdateTheme(e),this.tab_bar?.UpdateScale(e),this.grid_events.Publish({type:"scale",scale:e});for(let t of this.model.sheets.list)for(let r of t.annotations)r.dirty=!0}theme;language_map;reverse_language_map;hover_data={};editing_state=0;editing_cell={row:-1,column:-1,sheet_id:0};selected_annotation;editing_annotation;grid_container;container;layout;tile_update_pending=!1;scroll_offset_pending;pending_layout_update=new Set;decimal_separator_code=46;overlay_editor;formula_bar;RESIZE_PIXEL_BUFFER=5;select_argument=!1;cell_resize={row:-1,column:-1};render_tiles=new y({row:0,column:0});primary_selection={target:{row:0,column:0},area:new y({row:0,column:0}),empty:!0};active_selection={target:{row:0,column:0},area:new y({row:0,column:0}),empty:!0};nub_select_flag=!1;additional_selections=[];double_click_data={};layout_token=0;render_token=0;tile_renderer;selection_renderer;tab_bar;constructor(e={},t,r,i=Ct){super(e,t,r),this.decimal_separator_code=T.decimal_separator.charCodeAt(0),this.theme=JSON.parse(JSON.stringify(i)),this.layout=new Pt(this.model,this.view),e.initial_scale&&(typeof e.initial_scale=="string"&&(e.initial_scale=Number(e.initial_scale)),this.layout.scale=e.initial_scale),this.tile_renderer=new Ht(this.theme,this.layout,this.model,this.view,this.options),this.selection_renderer=new Dt(this.theme,this.layout,this.model,this.view,this.primary_selection,this.additional_selections)}SetLanguageMap(e){if(!e)this.language_map=this.reverse_language_map=void 0;else{let t=Object.keys(e);this.language_map={};for(let r of t)this.language_map[r.toUpperCase()]=e[r];this.reverse_language_map={};for(let r of t){let i=e[r];this.reverse_language_map[i.toUpperCase()]=r}}this.primary_selection.empty||this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target)}SetNote(e,t){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.target}this.ExecCommand({key:13,area:e,note:t})}SetLink(e,t){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.target}this.ExecCommand({key:14,area:e,reference:t})}FindAnnotation(e){for(let t of this.active_sheet.annotations)if((t.view[this.view_index]||{}).node===e)return t}CreateAnnotation(e={},t=!0,r=!1,i){let s=new Ve(e);if(r)if(!s.layout&&s.scaled_rect&&(s.layout=this.layout.RectToAnnotationLayout(s.scaled_rect)),!s.layout)console.warn("can't offset annotation without layout");else{let n=this.layout.AnnotationLayoutToRect(s.layout).Shift(20,20),a=!0;for(;a;){a=!1;for(let o of this.active_sheet.annotations)if(o!==s&&o.scaled_rect&&o.scaled_rect.top===n.top&&o.scaled_rect.left===n.left){n=n.Shift(20,20),a=!0;break}}s.layout=this.layout.RectToAnnotationLayout(n)}return i&&(F.IsRectangle(i)?(s.layout=void 0,s.rect=F.Create(i)):i.start&&(s.rect=void 0,s.layout=this.layout.AddressToAnnotationLayout(i.start,i.end||i.start))),t&&(this.active_sheet.annotations.some(n=>n===s)||this.active_sheet.annotations.push(s),this.AddAnnotation(s)),s}UpdateAnnotationLayout(){}AddAnnotation(e,t=!1,r=!0){let i=e.view[this.view_index];if(i||(i={},e.view[this.view_index]=i),!i.node){i.node=document.createElement("div"),i.node.dataset.scale=this.layout.scale.toString(),i.node.style.fontSize=`${10*this.layout.scale}pt`,i.content_node=I.CreateDiv("annotation-content",i.node);let s=I.CreateDiv("annotation-move-target",i.node),n=I.CreateDiv("annotation-resize-target",i.node);if(i.node){let a=i.node;a.setAttribute("tabindex","-1"),a.addEventListener("mousedown",o=>{o.button===0&&this.layout.AnnotationMouseDown(e,a,o,s,n).then(l=>{l&&this.grid_events.Publish(l),e.layout&&this.EnsureAddress(e.layout.br.address,1)})}),a.addEventListener("focusin",()=>{for(let o of this.layout.GetFrozenAnnotations(e))o.classList.add("clone-focus");this.selected_annotation=e,this.primary_selection.empty=!0,this.primary_selection.target={row:-1,column:-1,sheet_id:this.active_sheet.id},this.HideGridSelection()}),a.addEventListener("focusout",o=>{for(let l of this.layout.GetFrozenAnnotations(e))l.classList.remove("clone-focus");this.formula_bar&&this.formula_bar.IsElement(o.relatedTarget)?(this.primary_selection.empty=!0,this.RenderSelections(),this.editing_annotation=e,this.layout.ShowSelections(!0)):(this.selected_annotation===e&&(this.selected_annotation=void 0),this.ShowGridSelection())}),a.addEventListener("keydown",o=>{let l=e.scaled_rect;if(!l){console.info("missing scaled rect!");return}let d=[a,...this.layout.GetFrozenAnnotations(e)],u={x:l.left,y:l.top};switch(o.key){case"ArrowUp":case"Up":o.ctrlKey?(this.layout.AnnotationLayoutOrder(e,1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:e}),a.focus()):u.y--;break;case"ArrowLeft":case"Left":if(o.ctrlKey)return;u.x--;break;case"ArrowRight":case"Right":if(o.ctrlKey)return;u.x++;break;case"ArrowDown":case"Down":o.ctrlKey?(this.layout.AnnotationLayoutOrder(e,-1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:e}),a.focus()):u.y++;break;case"Escape":case"Esc":this.Focus();break;case"Delete":case"Del":this.Focus(),this.RemoveAnnotation(e);break;default:return}if(o.stopPropagation(),o.preventDefault(),u.x=Math.max(u.x,0),u.y=Math.max(u.y,0),l.left!==u.x||l.top!==u.y){l.left=Math.round(u.x),l.top=Math.round(u.y);for(let h of d)h.style.top=l.top+"px",h.style.left=l.left+"px";e.extent=void 0,this.grid_events.Publish({type:"annotation",event:"move",annotation:e}),e.layout=this.layout.RectToAnnotationLayout(l)}})}}i.node.classList.add("annotation"),r&&(this.layout.AddAnnotation(e),e.layout&&this.EnsureAddress(e.layout.br.address,1)),t||this.grid_events.Publish({type:"annotation",annotation:e,event:"create"})}AnnotationUpdated(e){this.layout.CloneFrozenAnnotation(e)}RemoveAnnotation(e){for(let t=0;t<this.active_sheet.annotations.length;t++)if(e===this.active_sheet.annotations[t]){this.active_sheet.annotations.splice(t,1),this.layout.RemoveAnnotation(e),this.grid_events.Publish({type:"annotation",annotation:e,event:"delete"});return}}RemoveAnnotationNodes(){this.layout.RemoveAnnotationNodes()}Serialize(e={}){return this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset,super.Serialize(e)}Reset(){this.ExecCommand({key:26})}FromCSV(e){let t=this.parser.decimal_mark===",";t&&(this.parser.argument_separator=",",this.parser.decimal_mark=".");let i=di(e).map(n=>n.map(a=>{if(a){let o=this.parser.Parse(a);if(o.expression?.type==="complex")return o.expression}return ye.TryParse(a).value}));t&&(this.parser.argument_separator=";",this.parser.decimal_mark=",");let s={row:Math.max(0,i.length-1),column:i.reduce((n,a)=>Math.max(n,Math.max(0,a.length-1)),0)};this.ExecCommand([{key:26},{key:6,area:{start:{row:0,column:0},end:s},value:i}])}ShowHeaders(e=!0){this.ExecCommand({key:17,show:e})}FromImportData(e,t=!1){this.RemoveAnnotationNodes();let r=e.sheets,i=r.map(()=>j.Blank(this.model.theme_style_properties).toJSON()),s;if(typeof e.active_tab=="number")s=i[e.active_tab]?.id;else for(let a=0;a<e.sheets.length;a++)if(!e.sheets[a].hidden){s=i[a].id;break}this.UpdateSheets(i,!0,s);let n={};this.model.macro_functions.clear(),this.ClearSelection(this.primary_selection),this.model.tables.clear();for(let a=0;a<r.length;a++){let o=this.model.sheets.list[a];o.ImportData(r[a]),n[o.name]=o.id;for(let l of r[a].cells)l.table&&(l.table.area.start.sheet_id=o.id,this.model.tables.set(l.table.name.toLowerCase(),l.table));for(let l of this.model.tables.values())this.UpdateTableColumns(l)}if(this.model.sheets.UpdateIndexes(),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),e.names){for(let a of Object.keys(e.names)){let o=this.model.named_ranges.ValidateNamed(a);if(!o){console.warn(`invalid name: ${a}`);continue}let l=e.names[a];if(typeof l!="number"){let d=this.parser.Parse(l);if(d.expression)if(d.expression.type==="range"){let u=n[d.expression.start.sheet||""];u&&(d.expression.start.sheet_id=u,this.model.named_ranges.SetName(o,new y(d.expression.start,d.expression.end),!1))}else if(d.expression.type==="address"){let u=n[d.expression.sheet||""];u&&(d.expression.sheet_id=u,this.model.named_ranges.SetName(o,new y(d.expression),!1))}else{let u=d.expression;this.parser.Walk(u,h=>h.type==="address"||h.type==="range"?(h.type==="range"&&(h=h.start),h.sheet_id||(h.sheet_id=n[h.sheet||""]||0),!1):!0),this.model.named_expressions.set(o,u)}}}this.model.named_ranges.RebuildList()}for(let a of this.active_sheet.annotations)this.AddAnnotation(a,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.StyleDefaultFromTheme(),t&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}NextSheet(e=1){if(this.model.sheets.length===1)return;let t=this.model.sheets.list.map((r,i)=>({sheet:r,index:i})).filter(r=>r.sheet.visible);if(t.length!==1){for(let r=0;r<t.length;r++)if(t[r].sheet===this.active_sheet){let i=(r+e)%t.length;for(;i<0;)i+=t.length;this.ActivateSheet(t[i].index);return}}}InsertSheet(e,t){if(typeof e>"u"&&!this.model.sheets.list.some((r,i)=>r===this.active_sheet?(e=i+1,!0):!1))throw new Error("invalid index");this.ExecCommand({key:18,insert_index:e,name:t,show:!0})}DeleteSheetID(e){this.ExecCommand({key:20,id:e})}DeleteSheet(e){if(typeof e>"u"&&!this.model.sheets.list.some((t,r)=>t===this.active_sheet?(e=r,!0):!1))throw new Error("invalid index");this.ExecCommand({key:20,index:e})}DuplicateSheet(e,t,r){let i={key:19,new_name:t,insert_before:r};typeof e>"u"?i.id=this.active_sheet.id:i.index=e,this.ExecCommand(i)}AddSheet(e){this.ExecCommand({key:18,name:e,show:!0})}ActivateSheet(e){let t=typeof e=="number"?e:void 0,r=typeof e=="string"?e:void 0;this.ExecCommand({key:21,index:t,name:r})}ActivateSheetID(e){this.ExecCommand({key:21,id:e})}ShowAll(){let e=[];for(let t=0;t<this.model.sheets.length;t++)e.push({key:24,index:t,show:!0});this.ExecCommand(e)}ShowSheet(e=0,t=!0){let r={key:24,show:t};typeof e=="string"?r.name=e:r.index=e,this.ExecCommand(r)}UpdateSheets(e,t=!1,r){if(super.UpdateSheets(e,t,r),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),e[0]&&e[0].primary_selection){let i=e[0].primary_selection;i.empty||this.Select(this.primary_selection,new y(i.area.start,i.area.end),i.target)}else if(!this.active_sheet.selection.empty){let i=this.active_sheet.selection;this.Select(this.primary_selection,new y(i.area.start,i.area.end),i.target)}this.layout.ClearLayoutCaches();for(let i of this.model.sheets.list)for(let s of i.annotations)this.AddAnnotation(s,!0,i===this.active_sheet);this.ActivateSheetTasks(),this.QueueLayoutUpdate(JSON.parse(JSON.stringify(this.active_sheet.scroll_offset))),this.StyleDefaultFromTheme(),t&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}UpdateLayout(){this.layout.UpdateTiles(),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!0)}UpdateTheme(e=!1,t){if(!e)for(let i of Object.keys(this.theme))delete this.theme[i];let r=JSON.parse(JSON.stringify(Ct));this.grid_container&&(r={...ii(this.grid_container)}),r={...this.theme,...r,...t},Object.assign(this.theme,r),this.StyleDefaultFromTheme(),this.active_sheet.UpdateDefaultRowHeight(),this.active_sheet.FlushCellStyles(),this.layout.ApplyTheme(this.theme),e||(this.UpdateLayout(),this.overlay_editor?.UpdateTheme(this.layout.scale),this.Repaint(!0,!0,!0))}Initialize(e,t=!1){this.grid_container=e,e.classList.add("treb-main"),ie.is_windows?e.classList.add("treb-ua-windows"):ie.is_mac&&e.classList.add("treb-ua-osx"),e.classList.add("treb-theme"),this.UpdateTheme(!0);let r=document.createElement("div"),i=document.createElement("div");i.classList.add("treb-layout-master"),i.setAttribute("role","grid"),i.appendChild(r),e.appendChild(i);let s;this.options.formula_bar&&(s||(s=new ht({theme:this.theme,container:r})),this.InitFormulaBar(e,s)),this.options.tab_bar&&(this.tab_bar=new Vt(this.layout,this.model,this.view,this.options,this.theme,e),this.tab_bar.Subscribe(n=>{switch(n.type){case"cancel":break;case"scale":{let a=this.layout.scale;if(a=Math.round(n.value*1e3)/1e3,a=Math.min(2,Math.max(a,.5)),this.options.persist_scale_key&&localStorage.setItem(this.options.persist_scale_key,JSON.stringify({scale:a})),this.scale=a,n.keep_focus)return}break;case"reorder-sheet":this.ReorderSheet(n.index,n.move_before);break;case"delete-sheet":this.DeleteSheet();break;case"add-sheet":this.AddSheet();break;case"rename-sheet":this.RenameSheet(n.sheet,n.name);break;case"activate-sheet":this.ActivateSheetID(n.sheet.id);break}this.SelectingArgument()||this.Focus()})),this.container=r,this.container.classList.add("treb-grid"),ie.is_mac&&ie.is_safari&&this.container.classList.add("safari"),this.container.setAttribute("tabindex","-1"),this.layout.Initialize(r,{scroll:()=>this.OnScroll(),dropdown:n=>this.OnDropdownSelect(n),sort:(n,a,o)=>{let l=this.model.tables.get(n.toLowerCase());l&&this.SortTable(l,{column:a,asc:o})},focus:()=>this.Focus()},this.options.scrollbars),this.selection_renderer.Initialize(),this.layout.UpdateTiles(),s||(s=new ht({theme:this.theme,container:r})),this.InitOverlayEditor(s),this.AttachListeners(),this.render_tiles=this.layout.VisibleTiles(),t||(this.tab_bar?.Update(),this.Repaint(!0))}MergeCells(e){!e&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:9,area:e||this.primary_selection.area}))}UnmergeCells(e){!e&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:10,area:e||this.primary_selection.area}))}Focus(e=""){ie.is_mobile?this.container?.focus():this.overlay_editor?.Focus(e)}SetValidation(e,t,r){if(!e){if(this.primary_selection.empty)throw new Error("invalid target in set validation");e=this.primary_selection.target}let i={key:25,area:e,error:r};t&&(Array.isArray(t)?i.list=t:typeof t=="object"&&t.start&&t.end&&z(t.start)&&z(t.end)&&(i.range=t)),this.ExecCommand(i),!this.primary_selection.empty&&(!e.sheet_id||e.sheet_id===this.active_sheet.id)&&this.primary_selection.target.row===e.row&&this.primary_selection.target.column===e.column&&requestAnimationFrame(()=>this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target))}SetName(e,t,r){let i=this.model.named_ranges.ValidateNamed(e);if(!i)throw new Error("invalid name");let s=e.trim().toUpperCase();if(this.autocomplete_matcher){for(let a of Object.keys(this.autocomplete_matcher.function_map))if(s===a.toUpperCase()){if(t||r)throw new Error("name already defined");break}}e=i;let n={key:16,name:e};if(t)z(t)&&(t=new y(t)),t.start.sheet_id||(t=new y({...t.start,sheet_id:this.active_sheet.id},t.end)),n.area=new y(t.start,t.end);else if(r){let a=this.parser.Parse(r);if(a.valid&&a.expression)this.parser.Walk(a.expression,o=>{if(o.type==="address"||o.type==="range"){if(o.type==="range"&&(o=o.start),!o.sheet_id&&o.sheet){let l=this.model.sheets.Find(o.sheet);l&&(o.sheet_id=l.id)}return o.sheet_id||(o.sheet_id=this.active_sheet.id),!1}return!0}),n.expression=a.expression;else throw new Error("invalid expression")}this.ExecCommand(n)}SelectAll(){this.Select(this.primary_selection,new y({row:1/0,column:1/0}),void 0,!0),this.RenderSelections()}SelectRange(e){this.Select(this.primary_selection,e),this.RenderSelections()}GetNumberFormat(e){let t=this.active_sheet.CellStyleData(e);if(t&&t.number_format)return D.Get(t.number_format).toString()}GetRangeStyle(e,t=!1){let r=0;if(z(e)?r=e.sheet_id||this.active_sheet.id:r=e.start.sheet_id||this.active_sheet.id,r)return this.model.sheets.Find(r)?.GetCellStyle(e,t)||void 0}GetRange(e,t){if(z(e)){let i=this.model.sheets.Find(e.sheet_id||this.active_sheet.id);return i?t==="formula"?i.cells.RawValue(e):t==="formatted"?i.GetFormattedRange(e):i.cells.GetRange(e):void 0}let r=this.model.sheets.Find(e.start.sheet_id||this.active_sheet.id);if(r)return t==="formula"?r.cells.RawValue(e.start,e.end):t==="formatted"?r.GetFormattedRange(e.start,e.end):r.cells.GetRange(e.start,e.end)}SetRange(e,t,r={}){let{recycle:i,transpose:s,array:n,r1c1:a}=r;if(r.argument_separator){let o={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark},l=!1;if(r.argument_separator===","&&this.parser.argument_separator!==","&&(this.parser.argument_separator=",",this.parser.decimal_mark=".",l=!0),r.argument_separator===";"&&this.parser.argument_separator!==";"&&(this.parser.argument_separator=";",this.parser.decimal_mark=",",l=!0),l){let d=u=>{if(typeof u=="string"&&u[0]==="="){let h=this.parser.Parse(u);h.expression&&(u="="+this.parser.Render(h.expression,{missing:"",convert_decimal:o.decimal_mark,convert_argument_separator:o.argument_separator}))}return u};Array.isArray(t)?t=t.map(u=>Array.isArray(u)?u.map(h=>d(h)):d(u)):t=d(t)}this.parser.argument_separator=o.argument_separator,this.parser.decimal_mark=o.decimal_mark}if(t=this.UntranslateData(t),!Array.isArray(t))i||n?this.ExecCommand({key:6,area:e,value:t,array:n,r1c1:a}):this.ExecCommand({key:6,area:e.start,value:t,array:n,r1c1:a});else{if(!cr(t))if(i){let o=e.entire_column?this.active_sheet.rows:e.rows,l=e.entire_row?this.active_sheet.columns:e.columns,d=o*l;if(d>t.length){let h=t.slice(0),f=Math.ceil(d/h.length);for(let p=1;p<f;p++)h=h.concat(t.slice(0));t=h}let u=[];for(let h=0,f=0;h<l;h++,f+=o)u[h]=t.slice(f,f+o);t=u}else t=[t];s&&(t=this.Transpose(t)),this.ExecCommand({key:6,area:e,value:t,array:n,r1c1:a})}!this.primary_selection.empty&&e.Contains(this.primary_selection.target)&&this.UpdateFormulaBarFormula()}SetRowHeight(e,t,r=!0){this.ExecCommand({key:3,row:e,height:t,shrink:r})}SetColumnWidth(e,t=0){this.ExecCommand({key:4,column:e,width:t})}ApplyStyle(e,t={},r=!0){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.area}j.UpdateStyle(t),this.ExecCommand({key:7,area:e,style:t,delta:r}),this.UpdateFormulaBarFormula()}GetSelection(){return this.primary_selection}Update(e=!1,t){this.DelayedRender(e,t)}ApplyBorders(e,t="none",r,i=1){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.area}t==="none"&&(i=0),this.ExecCommand({key:8,color:{text:r},area:e,borders:t,width:i})}ApplyBorders2(e,t="none",r,i=1){if(!e){if(this.primary_selection.empty)return;e=this.primary_selection.area}t==="none"&&(i=0),this.ExecCommand({key:8,color:r,area:e,borders:t,width:i})}GetFreeze(){return{...this.active_sheet.freeze}}Freeze(e=0,t=0,r=!0){this.ExecCommand({key:15,rows:e,columns:t,highlight_transition:r})}Batch(e,t=!0){this.batch=!0,e(),this.batch=!1;let r=this.batch_events.slice(0);return this.batch_events=[],t&&this.DelayedRender(!1),r}InsertColumns(e=0,t=1){this.ExecCommand({key:2,before_column:e,count:t})}ReorderSheet(e,t){this.ExecCommand({key:23,index:e,move_before:t})}RenameSheet(e,t){this.ExecCommand({key:22,new_name:t,id:e.id})}InsertRows(e=0,t=1){this.ExecCommand({key:1,before_row:e,count:t})}GetTableReference(e){return this.model.sheets.Find(e.sheet_id||this.active_sheet.id)?.CellData(e).table||void 0}ScrollTo(e,t=!0,r=!0,i=!1){this.layout.ScrollTo(e,t,r,i)}ScrollIntoView(e){this.options.scrollbars&&this.layout.ScrollIntoView(e)}GetScrollOffset(){return this.layout.GetScrollOffset()}ScrollOffset(e){if(e)this.layout.scroll_offset=e;else return this.layout.scroll_offset}TranslateInternal(e,t){let r=this.parser.Parse(e);if(r.expression){let i=!1;if(this.parser.Walk(r.expression,s=>{if(s.type==="call"){let n=t[s.name.toUpperCase()];n&&(i=!0,s.name=n)}return!0}),i)return"="+this.parser.Render(r.expression,{missing:""})}return e}TranslateFunction(e){return this.language_map?this.TranslateInternal(e,this.language_map):e}UntranslateFunction(e){return this.reverse_language_map?this.TranslateInternal(e,this.reverse_language_map):e}UntranslateData(e){return Array.isArray(e)?cr(e)?e.map(t=>t.map(r=>r&&typeof r=="string"&&r[0]==="="?this.UntranslateFunction(r):r)):e.map(t=>t&&typeof t=="string"&&t[0]==="="?this.UntranslateFunction(t):t):(e&&typeof e=="string"&&e[0]==="="&&(e=this.UntranslateFunction(e)),e)}StyleDefaultFromTheme(){this.model.theme_style_properties.font_face=this.theme.grid_cell?.font_face||"",this.model.theme_style_properties.font_size=this.theme.grid_cell?.font_size||{unit:"pt",value:10}}AutoSizeColumn(e,t,r=!0){let i=12,s=4*2;r||(i=e.GetColumnWidth(t));for(let n=0;n<e.cells.rows;n++){let a=e.CellData({row:n,column:t}),o=a.formatted||"";if(typeof o!="string"&&(o=o.map(l=>l.text).join("")),o&&o.length){let l=this.tile_renderer.MeasureText(o,A.Font(a.style||{}));i=Math.max(i,Math.ceil(l.width)+s)}}e.SetColumnWidth(t,i)}EnsureActiveSheet(e=!1){for(let t of this.model.sheets.list)if(t===this.active_sheet){e&&this.ActivateSheetInternal({key:21,id:t.id,force:!0});return}this.ActivateSheetInternal({key:21,index:0})}ActivateSheetInternal(e){let t=this.SelectingArgument(),r=this.ResolveSheet(e)||this.model.sheets.list[0];if(this.active_sheet===r&&!e.force)return;if(!r.visible)throw new Error("cannot activate hidden sheet");this.HideHoverInfo(),this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset;let i=this.active_sheet;this.RemoveAnnotationNodes(),this.active_sheet=r,t?this.RenderSelections():(this.ClearSelection(this.primary_selection),r.selection&&!r.selection.empty&&this.Select(this.primary_selection,new y(r.selection.area.start,r.selection.area.end),r.selection.target));let s=this.active_sheet.annotations;for(let n of s)this.AddAnnotation(n,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.pending_layout_update.has(this.active_sheet.id)?(this.Repaint(!0,!0),this.pending_layout_update.delete(this.active_sheet.id)):this.Repaint(!1,!1),this.grid_events.Publish({type:"sheet-change",deactivate:i,activate:this.active_sheet}),this.tab_bar&&this.tab_bar.Update(),this.layout.scroll_offset=this.active_sheet.scroll_offset,this.formula_bar?.selecting&&requestAnimationFrame(()=>this.formula_bar?.FocusEditor())}ActivateSheetTasks(){if(this.active_sheet.Activate(),this.active_sheet.image&&!this.active_sheet.image.complete){let e=this.active_sheet.image,t=0,r=()=>{e.complete?this.UpdateLayout():t++<5&&setTimeout(()=>r(),10)};r()}}HighlightFreezeArea(){for(let e of[this.layout.corner_selection,this.layout.row_header_selection,this.layout.column_header_selection])e.classList.add("highlight-area"),setTimeout(()=>{e.classList.remove("highlight-area")},400)}QueueLayoutUpdate(e){this.tile_update_pending=!0,e&&(this.scroll_offset_pending=e)}HandleAddressLabelEvent(e){if(e){let t=(n="")=>{let a=n.toLowerCase();for(let o of this.model.sheets.list)if(o.name.toLowerCase()===a)return o.id;return this.active_sheet.id},r=n=>{for(let a of this.model.sheets.list)if(a.id===n)return a;return this.active_sheet},i,s=this.parser.Parse(e);if(s.expression)switch(s.expression.type){case"address":s.expression.sheet_id=t(s.expression.sheet),i=new y(s.expression);break;case"range":s.expression.start.sheet_id=t(s.expression.start.sheet),i=new y(s.expression.start,s.expression.end);break;case"identifier":i=this.model.named_ranges.Get(s.expression.name),i||this.primary_selection.empty||this.SetName(s.expression.name.toUpperCase(),this.primary_selection.area);break;default:break}if(i){let n=r(i.start.sheet_id);if(n.columns>=i.end.column&&n.rows>=i.end.row){this.ExecCommand({key:5,area:i});return}else console.warn("address out of range")}}this.UpdateAddressLabel(),this.Focus()}InitFormulaBar(e,t){this.formula_bar=new $t(e,this.parser,this.theme,this.model,this.view,this.options,t),this.formula_bar.autocomplete_matcher=this.autocomplete_matcher,this.formula_bar.Subscribe(r=>{switch(r.type){case"address-label-event":this.HandleAddressLabelEvent(r.text);break;case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=2,this.editing_cell={...this.primary_selection.target};break;case"discard":if(this.editing_state=0,this.editing_annotation){this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection);let i=this.editing_annotation.view[this.view_index]?.node;i&&i.focus(),this.editing_annotation=void 0,this.UpdateFormulaBarFormula(),this.DelayedRender();return}this.container&&this.Focus(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.UpdateFormulaBarFormula(),this.DelayedRender();break;case"commit":if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.editing_annotation){let i=this.editing_annotation;this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),i.formula=r.value?this.FixFormula(r.value):"";let s=this.editing_annotation.view[this.view_index]?.node;s&&s.focus(),this.grid_events.Publish({type:"annotation",event:"update",annotation:i}),this.editing_annotation=void 0,this.DelayedRender();return}this.container&&this.Focus(),this.SetInferredType(this.primary_selection,r.value,r.array),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.primary_selection.area),r.event&&this.OverlayKeyDown(r.event);break;case"update":r.dependencies&&this.HighlightDependencies(r.dependencies);break}})}InitOverlayEditor(e){this.container&&(this.overlay_editor=new Ot(this.container,this.parser,this.theme,this.model,this.view,e),this.overlay_editor.UpdateTheme(this.layout.scale),this.overlay_editor.autocomplete_matcher=this.autocomplete_matcher,this.overlay_editor.Subscribe(t=>{switch(t.type){case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=1,this.editing_cell={...this.primary_selection.target};break;case"update":t.dependencies&&this.HighlightDependencies(t.dependencies);break;case"end-selection":this.ClearSelection(this.active_selection),this.DelayedRender();break}}))}DelayedRender(e=!1,t,r=!1){!this.tile_update_pending&&t?this.layout.DirtyArea(t):!this.tile_update_pending&&e&&this.layout.DirtyAll(),this.render_token||(this.render_token=1,ne().then(()=>{this.render_token=0,this.Repaint(e,r)}))}Repaint(e=!1,t=!1,r=!1){if(this.headless)return;if(this.tile_update_pending&&(this.tile_update_pending=!1,this.layout.UpdateTiles(),this.scroll_offset_pending&&(this.layout.scroll_offset=this.scroll_offset_pending,this.scroll_offset_pending=void 0),this.render_tiles=this.layout.VisibleTiles(),this.layout.UpdateAnnotation(this.active_sheet.annotations)),this.layout_token=0,this.tile_renderer.OverflowDirty(t),e)for(let o of this.layout.grid_tiles)for(let l of o)l.dirty=!0;let i=this.render_tiles.start,s=this.render_tiles.end,n=[];for(let o=i.row;o<=s.row;o++)n.push(o);let a=[];for(let o=i.column;o<=s.column;o++)a.push(o);i.row>0&&this.active_sheet.freeze.rows&&n.push(0),i.column>0&&this.active_sheet.freeze.columns&&a.push(0);for(let o of a)for(let l of n){let d=this.layout.grid_tiles[o][l];(e||d.dirty||d.needs_full_repaint)&&(this.tile_renderer.Render(d),d.dirty=d.needs_full_repaint=!1)}this.tile_renderer.RenderHeaders(this.render_tiles,r),this.tile_renderer.RenderCorner(),this.RenderSelections()}MouseMove_RowHeader(e){let t=this.layout.CoordinateToRowHeader(e.offsetY),r=this.layout.OffsetCellAddressToRectangle({row:t.row,column:0});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let i=-1;e.offsetY-r.top<=this.RESIZE_PIXEL_BUFFER&&t.row>0?i=t.row-1:r.bottom-e.offsetY<=this.RESIZE_PIXEL_BUFFER&&(i=t.row),i>=0?this.layout.ResizeCursor("row"):this.cell_resize.row&&(this.cell_resize.row=-1,this.layout.ResizeCursor()),this.cell_resize.row=i}MouseMove_ColumnHeader(e){let t=this.layout.CoordinateToColumnHeader(e.offsetX),r=this.layout.OffsetCellAddressToRectangle({row:0,column:t.column});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let i=-1;e.offsetX-r.left<=this.RESIZE_PIXEL_BUFFER&&t.column>0?i=t.column-1:r.right-e.offsetX<=this.RESIZE_PIXEL_BUFFER&&(i=t.column),i>=0?this.layout.ResizeCursor("column"):this.cell_resize.column&&(this.cell_resize.column=-1,this.layout.ResizeCursor()),this.cell_resize.column=i}MouseDown_RowHeader(e){if(e.button!==0)return;e.stopPropagation(),e.preventDefault();let t=this.layout.CoordinateToRowHeader(e.offsetY),r=this.layout.row_header_cover.getBoundingClientRect(),i={x:r.left,y:r.top};if(this.cell_resize.row>=0){let s=this.cell_resize.row,n=i.y+e.offsetY;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:s,column:-1})){let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(s)){let p=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let m=p.start.row;m<=p.end.row;m++)f.push(m)}this.ExecCommand({key:3,row:f});return}let a=this.layout.RowHeight(s),o=a,l=this.layout.OffsetCellAddressToRectangle({row:s,column:0}),d=i.y+l.bottom;this.layout.ShowTooltip({left:!0,text:`${o}px`,x:Math.round(r.right+10),y:d});let u=[],h=[];for(let f of this.active_sheet.annotations){let p=l.bottom-1;if(!f.scaled_rect||f.scaled_rect.bottom<p)continue;let m=[...this.layout.GetFrozenAnnotations(f)],_=f.view[this.view_index]?.node;_&&m.push(_),p<=f.scaled_rect.top&&f.move_with_cells?u.push({annotation:f,y:f.scaled_rect.top,nodes:m}):p>f.scaled_rect.top&&f.resize_with_cells&&h.push({annotation:f,height:f.scaled_rect.height,nodes:m})}be(this.layout.mask,"row-resize",f=>{let p=Math.max(-a,Math.round(f.offsetY-n));if(p+a!==o){o=p+a,this.layout.SetRowHeight(s,o),this.layout.UpdateTooltip({text:`${o}px`,y:d+p});for(let{annotation:m,y:_}of u)m.scaled_rect&&(m.scaled_rect.top=_+p);for(let{annotation:m,height:_}of h)m.scaled_rect&&(m.scaled_rect.height=_+p);requestAnimationFrame(()=>{for(let{annotation:m,nodes:_}of h)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);for(let{annotation:m,nodes:_}of u)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);this.layout.UpdateTileHeights(!0,s),this.Repaint(!1,!0),this.layout.UpdateAnnotation(this.active_sheet.annotations)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(s)){let p=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let m=p.start.row;m<=p.end.row;m++)f.push(m)}this.layout.SetRowHeight(s,a),this.ExecCommand({key:3,row:f,height:o/this.scale});for(let{annotation:p}of u)p.scaled_rect&&(p.layout=this.layout.RectToAnnotationLayout(p.scaled_rect));for(let{annotation:p}of h){p.scaled_rect&&(p.layout=this.layout.RectToAnnotationLayout(p.scaled_rect));let m=p.view[this.view_index];m&&m.resize_callback&&m.resize_callback.call(void 0)}})})}else{let s=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),e.shiftKey&&!s.empty){let n=s.target;this.Select(s,new y(s.target,t,!0),void 0,!0),t=n}else this.Select(s,new y(t),{column:0,row:t.row});this.RenderSelections(),be(this.layout.mask,[],n=>{let a=this.layout.CoordinateToRowHeader(n.offsetY-i.y),o=new y(a,t,!0);(s.empty||!o.Equals(s.area))&&(this.Select(s,o,void 0,!0),this.RenderSelections())},()=>{})}}MouseDown_ColumnHeader(e){if(e.button!==0)return;e.stopPropagation(),e.preventDefault();let t=this.layout.CoordinateToColumnHeader(e.offsetX),r=this.layout.column_header_cover.getBoundingClientRect(),i={x:r.left,y:r.top};if(this.cell_resize.column>=0){let s=this.cell_resize.column,n=i.x+e.offsetX;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:-1,column:s})){let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(s)){let p=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let m=p.start.column;m<=p.end.column;m++)f.push(m)}this.ExecCommand({key:4,column:f});return}let a=this.layout.ColumnWidth(s),o=a,l=this.layout.OffsetCellAddressToRectangle({row:0,column:s}),d=i.x+l.right;this.layout.ShowTooltip({up:!0,text:`${o}px`,x:d,y:Math.round(r.bottom+10)});let u=[],h=[];for(let f of this.active_sheet.annotations){let p=l.right-1;if(!f.scaled_rect||f.scaled_rect.right<p)continue;let m=[...this.layout.GetFrozenAnnotations(f)],_=f.view[this.view_index]?.node;_&&m.push(_),p<=f.scaled_rect.left&&f.move_with_cells?u.push({annotation:f,x:f.scaled_rect.left,nodes:m}):p>f.scaled_rect.left&&f.resize_with_cells&&h.push({annotation:f,width:f.scaled_rect.width,nodes:m})}be(this.layout.mask,"column-resize",f=>{let p=Math.max(-a,Math.round(f.offsetX-n));if(p+a!==o){o=p+a,this.layout.UpdateTooltip({text:`${o}px`,x:d+p}),this.layout.SetColumnWidth(s,o);for(let{annotation:m,x:_}of u)m.scaled_rect&&(m.scaled_rect.left=_+p);for(let{annotation:m,width:_}of h)m.scaled_rect&&(m.scaled_rect.width=_+p);requestAnimationFrame(()=>{for(let{annotation:m,nodes:_}of h)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);for(let{annotation:m,nodes:_}of u)if(m.scaled_rect)for(let b of _)m.scaled_rect.ApplyStyle(b);this.layout.UpdateTileWidths(!0,s),this.Repaint(!1,!0)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(s)){let p=this.active_sheet.RealArea(this.primary_selection.area);for(let m=p.start.column;m<=p.end.column;m++)f.push(m)}this.ExecCommand({key:4,column:f,width:o/this.scale});for(let{annotation:p}of u)p.scaled_rect&&(p.layout=this.layout.RectToAnnotationLayout(p.scaled_rect));for(let{annotation:p}of h){p.scaled_rect&&(p.layout=this.layout.RectToAnnotationLayout(p.scaled_rect));let m=p.view[this.view_index];m&&m.resize_callback&&m.resize_callback.call(void 0)}})})}else{let s=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),e.shiftKey&&!s.empty){let n=s.target;this.Select(s,new y(s.target,t,!0),void 0,!0),t=n}else this.Select(s,new y(t),{row:0,column:t.column});this.RenderSelections(),be(this.layout.mask,[],n=>{let a=this.layout.CoordinateToColumnHeader(n.offsetX-i.x),o=new y(a,t,!0);(s.empty||!o.Equals(s.area))&&(this.Select(s,o,void 0,!0),this.RenderSelections())})}}HoverCell(e,t){let r=this.active_sheet.cells.GetCell(e,!1);if(r?.table&&r.table.area.start.row===e.row&&r.table.sortable!==!1?(this.hover_data.table_header=!0,this.layout.ShowTableSortButton(r.table,e.column-r.table.area.start.column,e)):(this.hover_data.table_header&&this.layout.HideTableSortButton(),this.hover_data.table_header=!1),r?.merge_area){let i=r.merge_area;e=i.start,r=this.active_sheet.cells.GetCell(e,!1),e={row:i.start.row,column:i.end.column}}if(r?.note){let i=this.options.markdown?xe.instance.HTML(xe.instance.Parse(r.note)):void 0;this.layout.ShowNote(r.note,e,t,i),this.hover_data.note=!0}else this.hover_data.note&&(this.layout.HideNote(),this.hover_data.note=!1);r?.hyperlink?(this.layout.ShowTitle("Link: "+r.hyperlink,e),this.hover_data.link=!0,this.hover_data.cell=r):this.hover_data.link&&(this.layout.HideTitle(),this.hover_data.cell=void 0),this.hover_data.address={...e}}HideHoverInfo(){this.layout.HideTitle(),this.layout.HideTooltip(),this.hover_data.note=this.hover_data.link=!1,this.hover_data.cell=void 0,this.hover_data.pointer&&this.layout.grid_cover.classList.remove("link-pointer"),this.hover_data.pointer=!1}MouseMove_Grid(e){e.stopPropagation(),e.preventDefault(),(this.cell_resize.row>=0||this.cell_resize.column>=0)&&this.layout.ResizeCursor();let t={x:e.offsetX,y:e.offsetY},r;if(this.overlay_editor?.editing||(r=this.layout.PointToAddress_Grid(t),(!this.hover_data.address||this.hover_data.address.row!==r.row||this.hover_data.address.column!==r.column)&&this.HoverCell(r,e)),this.hover_data.link&&r&&(this.hover_data.point=t,this.hover_data.handler||(this.hover_data.handler=requestAnimationFrame(()=>{let s=this.hover_data.address&&this.hover_data.point&&this.hover_data.cell&&this.PointInTextPart(this.hover_data.address,this.hover_data.point,this.hover_data.cell);s!==!!this.hover_data.pointer&&(this.hover_data.pointer=s,s?this.layout.grid_cover.classList.add("link-pointer"):this.layout.grid_cover.classList.remove("link-pointer")),this.hover_data.handler=void 0}))),this.primary_selection.empty||!this.selection_renderer.nub_rectangle){this.nub_select_flag&&(this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=!1);return}let i=this.selection_renderer.nub_rectangle.Contains(e.offsetX,e.offsetY);i!==this.nub_select_flag&&(i?this.layout.grid_cover.classList.add("nub-select"):this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=i)}ClearDoubleClick(){this.double_click_data.address=void 0}IsDoubleClick(e,t=300){if(this.double_click_data.address&&this.double_click_data.address.row===e.row&&this.double_click_data.address.column===e.column)return clearTimeout(this.double_click_data.timeout),this.double_click_data.address=void 0,this.double_click_data.timeout=void 0,!0;this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.address={...e},this.double_click_data.timeout=window.setTimeout(()=>{this.double_click_data.address=void 0,this.double_click_data.timeout=void 0},t)}PointInTextPart(e,t,r){let i=this.layout.CellAddressToRectangle(e);r.merge_area&&(i=i.Combine(this.layout.CellAddressToRectangle(r.merge_area.end)));let s=t.x-i.left,n=t.y-i.top,a=r.renderer_data?.text_data?.strings||[];for(let o of a)for(let l of o)if(typeof l.left=="number"&&typeof l.top=="number"&&typeof l.width=="number"&&typeof l.height=="number"&&s>=l.left&&n>=l.top&&s<=l.left+l.width&&n<=l.top+l.height)return!0;return!1}MouseDown_Grid(e){if(e.button!==0)return;e.stopPropagation(),e.preventDefault();let t=this.SelectingArgument();!t&&this.additional_selections.length&&this.ClearAdditionalSelections(),(!t||!this.formula_bar?.selecting)&&this.Focus(),this.overlay_editor?.editing&&!this.overlay_editor?.selecting&&this.DismissEditor();let r={x:e.offsetX,y:e.offsetY},i=this.layout.PointToAddress_Grid(r),s=t?this.active_selection:this.primary_selection;if(!t&&this.IsDoubleClick(i)){ie.is_mobile&&this.overlay_editor?.edit_node?.focus(),this.OverlayEditCell({target:i,area:new y(i)},!1);return}let n=this.layout.grid_cover.getBoundingClientRect(),a={x:n.left,y:n.top},o=[],l;if(e.shiftKey&&!s.empty){let u=s.target;this.Select(s,new y(i,s.target,!0),void 0,!0),i=u}else if(this.nub_select_flag)i=s.area.TopLeft(),o.push("nub-select"),l=this.active_sheet.RealArea(s.area);else{let u=i,h=this.active_sheet.CellData(u);if(h.merge_area&&(u=h.merge_area.start,h=this.active_sheet.CellData(h.merge_area.start)),h.hyperlink&&this.PointInTextPart(u,r,h)){let f=h.hyperlink;ne().then(()=>{this.grid_events.Publish({type:"cell-event",data:{type:"hyperlink",data:f}})}),this.ClearDoubleClick();return}if(h.click_function){let f=this.layout.CellAddressToRectangle(u);h.merge_area&&(f=f.Combine(this.layout.CellAddressToRectangle(h.merge_area.end)));let p=h.click_function.call(this,{cell:h,x:r.x-f.left,y:r.y-f.top,width:f.width,height:f.height,scale:this.layout.scale});if(p.value&&this.ExecCommand({key:6,value:p.value,area:u}),p.block_selection){this.ClearDoubleClick(),!this.primary_selection.empty&&this.primary_selection.target.row===u.row&&this.primary_selection.target.column===u.column&&this.UpdateFormulaBarFormula();return}}this.Select(s,new y(i),i)}this.RenderSelections(),t&&this.UpdateSelectedArgument(s);let d=this.layout.CellAddressToRectangle({row:0,column:0}).Combine(this.layout.CellAddressToRectangle({row:this.active_sheet.rows-1,column:this.active_sheet.columns-1})).Expand(-1,-1);be(this.layout.mask,o,u=>{let h={x:u.offsetX-a.x,y:u.offsetY-a.y},f=d.Clamp(h.x,h.y),p=this.layout.PointToAddress_Grid(f,!0),m=this.layout.scroll_reference_node,_=!1;this.container&&this.options.scrollbars&&(h.x<m.scrollLeft?(m.scrollLeft-=25,_=!0):h.x>m.scrollLeft+this.container.clientWidth&&(m.scrollLeft+=25,_=!0),h.y<m.scrollTop?(m.scrollTop-=25,_=!0):h.y>m.scrollTop+this.container.clientHeight&&(m.scrollTop+=25,_=!0),_&&(n=this.layout.grid_cover.getBoundingClientRect(),a.x=n.left+document.body.scrollLeft,a.y=n.top+document.body.scrollTop));let b=new y(p,i,!0);if(l&&(b=l.Clone(),b.ConsumeAddress(p),b.rows!==l.rows&&b.columns!==l.columns)){let g={rows:p.row>l.end.row?p.row-l.end.row:l.start.row-p.row,columns:p.column>l.end.column?p.column-l.end.column:l.start.column-p.column};g.rows>=g.columns?b=new y({row:b.start.row,column:l.start.column},{row:b.end.row,column:l.end.column}):b=new y({row:l.start.row,column:b.start.column},{row:l.end.row,column:b.end.column})}(s.empty||!b.Equals(s.area))&&(this.Select(s,b,void 0,!0),this.RenderSelections(),t?this.UpdateSelectedArgument(s):!s.empty&&!s.area.entire_sheet&&(s.area.entire_column?this.UpdateAddressLabel(void 0,s.area.columns+"C"):s.area.entire_row?this.UpdateAddressLabel(void 0,s.area.rows+"R"):s.area.count>1?this.UpdateAddressLabel(void 0,s.area.rows+"R x "+s.area.columns+"C"):this.UpdateAddressLabel(s)))},()=>{this.UpdateAddressLabel(),t?this.overlay_editor?.editing||this.select_argument||this.formula_bar&&this.formula_bar.FocusEditor():l&&this.RecycleNubArea(s.area,l)})}Transpose(e){let t=[],r=e.length,i=e[0].length;for(let s=0;s<i;s++){t[s]=[];for(let n=0;n<r;n++)t[s][n]=e[n][s]}return t}RecycleNubArea(e,t){if(e.Equals(t))return;let r=[];for(let u=0;u<t.rows;u++){r[u]=[];for(let h=0;h<t.columns;h++){let f={row:t.start.row+u,column:t.start.column+h};r[u][h]=this.active_sheet.CellData(f)}}if(r[0][0].area&&r[0][0].area.Equals(t)){this.ExecCommand({key:6,value:r[0][0].value,array:!0,area:e});return}if(r[0][0].table&&t.Equals(new y(r[0][0].table.area.start,r[0][0].table.area.end))){let u=r[0][0].table,h=u.sortable,f=u.totals_row,p=u.theme;this.ExecCommand([{key:29,table:u},{key:28,area:e,sortable:h,totals:f,theme:p}]);return}let i=[],s=[],n=t.columns,a=e.rows,o=!1,l=!1;e.columns===t.columns?o=e.start.row<t.start.row:(n=t.rows,a=e.columns,o=e.start.column<t.start.column,r=this.Transpose(r),l=!0);for(let u=0;u<a;u++)i[u]=[],s[u]=[];for(let u=0;u<n;u++){let h=0;if(r.length>1){h=1;let f=[],p=[];for(let m=0;m<r.length;m++){let _=r[m][u];_.ValueIsNumber()&&(p.push(m),f.push(_.value))}if(f.length>1){let m=f.slice(1).map((_,b)=>_-f[b]);m.every(_=>_===m[0])&&(h=m[0])}f.length&&(h+=f[f.length-1]-f[0])}for(let f=0;f<r.length;f++){let p,m=r[f][u];if(m.ValueIsFormula()){let w=this.parser.Parse(m.value);w.expression&&w.full_reference_list?.length&&(p=w.expression)}let _=0,b=f,g=r.length,x=0,v=h;o&&(b=a-r.length+f,g=-r.length,v=-h);for(let w=b;w>=0&&w<a;w+=g,_+=g,x+=v){if(p)i[w][u]="="+this.parser.Render(p,{offset:{rows:_,columns:0}});else{let S=r[f][u];S.ValueIsNumber()?i[w][u]=S.value+x:i[w][u]=S.value}s[w][u]=r[f][u].style||{}}}}let d=[{key:6,value:l?this.Transpose(i):i,array:!1,area:e}];l&&(s=this.Transpose(s));for(let u=0;u<s.length;u++)for(let h=0;h<s[u].length;h++)d.push({key:7,area:{row:u+e.start.row,column:h+e.start.column},style:s[u][h],delta:!1});this.ExecCommand(d)}UpdateSelectedArgument(e){let t=this.active_sheet.CellData(e.area.start),r=new y(t.merge_area?t.merge_area.start:e.target),i=this.model.named_ranges.MatchSelection(e.area,r);if(!i&&(i=e.area.spreadsheet_label,t.merge_area&&t.merge_area.Equals(e.area)&&(i=y.CellAddressToLabel(t.merge_area.start)),this.active_sheet.id!==this.editing_cell.sheet_id)){let s=this.active_sheet.name;ct.test(s)?i=`'${s}'!${i}`:i=`${s}!${i}`}this.overlay_editor?.editing&&this.overlay_editor.selecting?this.overlay_editor.InsertReference(i,0):this.formula_bar&&this.formula_bar.selecting?this.formula_bar.InsertReference(i,0):this.select_argument&&this.grid_events.Publish({type:"alternate-selection",selection:this.active_selection})}SelectingArgument(){return this.overlay_editor?.editing&&this.overlay_editor?.selecting||this.formula_bar&&this.formula_bar.selecting||this.select_argument}OverlayKeyDown(e){let t=!1;if(this.overlay_editor&&this.overlay_editor.editing)switch(t=!0,this.overlay_editor.HandleKeyDown(e)){case 1:return;case 3:this.editing_state=0,this.DismissEditor(),this.DelayedRender();return;case 2:if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.overlay_editor?.selection){let l=this.overlay_editor?.edit_node.textContent||void 0,d=e.key==="Enter"&&e.ctrlKey&&e.shiftKey;this.SetInferredType(this.overlay_editor.selection,l,d)}this.DismissEditor(),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.overlay_editor?.selection.area||void 0);break}let r=this.SelectingArgument();if(this.formula_bar&&this.formula_bar.focused&&!r||this.selected_annotation&&!r)return;let i=r?this.active_selection:this.primary_selection,s={rows:0,columns:0},n=!1,a=!1;if(e.ctrlKey||ie.is_mac&&e.metaKey){switch(e.key){case"ArrowDown":case"Down":s.rows++;break;case"ArrowUp":case"Up":s.rows--;break;case"ArrowLeft":case"Left":s.columns--;break;case"ArrowRight":case"Right":s.columns++;break;case"Delete":case"Del":{e.stopPropagation(),e.preventDefault();for(let o=0;o<this.model.sheets.length;o++)if(this.model.sheets.list[o]===this.active_sheet){this.DeleteSheet(o);break}return}break;case"/":e.stopPropagation(),e.preventDefault(),this.SelectArrayOrTable();break;default:if(e.shiftKey)return}if(s.columns||s.rows)if(e.stopPropagation(),e.preventDefault(),!i.empty&&(s.columns||s.rows)){if(this.BlockSelection(i,!!e.shiftKey,s.columns,s.rows))return}else return;else{let o={},l=this.primary_selection.empty?{}:this.active_sheet.CellData(this.primary_selection.target).style||{};switch(e.key.toLowerCase()){case"b":o.bold=!l.bold;break;case"i":o.italic=!l.italic;break;case"u":o.underline=!l.underline;break;case"a":this.SelectAll();break;case"0":if(!e.altKey)return;this.ClearSelection(this.primary_selection),this.RenderSelections();break;default:e.key;return}Object.keys(o).length&&this.ApplyStyle(void 0,o)}}else switch(e.key){case"Tab":e.shiftKey?s.columns--:s.columns++,n=!0;break;case"Enter":e.shiftKey?s.rows--:s.rows++,n=!0;break;case"ArrowDown":case"Down":s.rows++,a=e.shiftKey;break;case"ArrowUp":case"Up":s.rows--,a=e.shiftKey;break;case"ArrowLeft":case"Left":s.columns--,a=e.shiftKey;break;case"ArrowRight":case"Right":s.columns++,a=e.shiftKey;break;case"Delete":case"Del":i.empty||this.DeleteSelection(i);break;case"PageUp":case"PageDown":if(e.shiftKey){this.NextSheet(e.key==="PageUp"?-1:1);break}return;case"Control":case"Shift":case"Alt":return;default:i.empty||this.OverlayEditCell(i,!0,e);return}e.stopPropagation(),e.preventDefault(),(s.rows||s.columns)&&this.AdvanceSelection(s,i,n,a,!t)}SelectArrayOrTable(){if(this.primary_selection.empty)return;let e=this.active_sheet.CellData(this.primary_selection.target);if(!(!e||!e.area&&!e.table)){if(e.area&&this.Select(this.primary_selection,e.area,e.area.start),e.table){let t=new y(e.table.area.start,e.table.area.end);this.Select(this.primary_selection,t,t.start)}this.RenderSelections()}}RenderSelections(e=!0){let t=this.hide_selection?!1:!this.editing_state||this.editing_cell.sheet_id===this.active_sheet.id;this.selection_renderer.RenderSelections(t,e)}BlockSelection(e,t,r,i,s=!0){if(e.empty)return!1;let n={...e.target};i>0?n.row=Math.max(n.row,e.area.end.row):i<0&&(n.row=Math.min(n.row,e.area.start.row)),r>0?n.column=Math.max(n.column,e.area.end.column):r<0&&(n.column=Math.min(n.column,e.area.start.column));let a=this.active_sheet.cells,o=a.GetCell(e.target,!1);if(!o||o.type===0&&!o.area)return!1;let l={...n};for(;;){let d={row:l.row+i,column:l.column+r};if(d.column<0||d.row<0||d.column>=this.active_sheet.columns||d.row>=this.active_sheet.rows)break;let u=!1;if(i)for(let h=e.area.start.column;!u&&h<=e.area.end.column;h++)o=a.GetCell({row:d.row,column:h},!1),u=u||!!o&&(o.type!==0||!!o.area),!u&&o&&o.merge_area&&(o=a.GetCell(o.merge_area.start,!1),u=u||!!o&&(o.type!==0||!!o.area));else for(let h=e.area.start.row;!u&&h<=e.area.end.row;h++)o=a.GetCell({row:h,column:d.column},!1),u=u||!!o&&(o.type!==0||!!o.area),!u&&o&&o.merge_area&&(o=a.GetCell(o.merge_area.start,!1),u=u||!!o&&(o.type!==0||!!o.area));if(!u)break;l=d}if(t){i?(n.row=e.target.row,n.column=e.area.start.column,l.column=e.area.end.column):(n.column=e.target.column,n.row=e.area.start.row,l.row=e.area.end.row);let d=new y(n,l,!0);this.Select(e,d,e.target,!0)}else this.Select(e,new y(l));return this.ScrollIntoView(l),this.SelectingArgument()&&this.UpdateSelectedArgument(e),s&&this.DelayedRender(),!0}DeleteSelection(e){if(e.empty)return;let t=this.active_sheet.RealArea(e.area);this.ExecCommand({key:11,area:t})}SetInferredType(e,t,r=!1,i=!0){let s=e.target||e.area.start,n=this.active_sheet.CellData(s);if(n.area){if(!r&&n.area.count>1||!e.area||!e.area.Equals(n.area)){this.Error(2);return}}else if(r){let u=!1;if(this.active_sheet.cells.Apply(e.area,h=>{h.area&&(u=!0)},!1),u){this.Error(2);return}}if(n.validation&&n.validation.error){let u;if(n.validation.type===0?u=n.validation.list:n.validation.type===2&&(u=this.GetValidationRange(n.validation.area)),u&&u.length){let h=!1;if(t){let f=t.toUpperCase();for(let p of u)if(p&&p.toString().toUpperCase()===f){t=p.toString(),h=!0;break}}if(!h){this.Error(3);return}}}n.merge_area&&(s=n.merge_area.start);let a=typeof t=="string"&&t.trim()[0]==="=",o=[];if(a&&(t=this.FixFormula(t||""),!this.active_sheet.HasCellStyle(s))){let u=this.parser.Parse(t);if(u){if(u.expression?.type==="call"&&(!n.style||!n.style.number_format||D.Equals(n.style.number_format,"General"))){let h=u.expression.name.toLowerCase(),f;switch(h){case"today":f="Short Date";break;case"now":f="Timestamp";break}f&&o.push({key:7,area:r?e.area:s,style:{number_format:f},delta:!0})}if(u.dependencies){let h=u.dependencies;for(let f of Object.keys(h.addresses)){let p=h.addresses[f];if(this.active_sheet.HasCellStyle({...p})){let m=this.active_sheet.CellData({...p});if(m.style&&m.style.number_format){let _={number_format:m.style.number_format};o.push({key:7,area:r?e.area:s,style:_,delta:!0})}break}}}}}let l=this.parser.Parse(t||"").expression;l?.type==="group"&&l.elements.length===1&&l.elements[0].type==="complex"&&(l=l.elements[0]);let d=l&&l.type==="complex"?{type:7,value:{real:l.real,imaginary:l.imaginary}}:ye.TryParse(t);if(!a&&d.type===3){let u="",h=d.hints||0;(!n.style||!n.style.number_format||D.Equals(n.style.number_format,"General"))&&(h&64?u="Short Date":h&2?u="Exponential":h&4?u="Percent":h&8?u="Currency":(h&16||h&32)&&(u="Accounting")),u&&o.push({key:7,area:r?e.area:s,style:{number_format:u},delta:!0})}if(o.push({key:6,area:r?e.area:s,array:r,value:a?this.UntranslateFunction(t||""):d.value}),i)this.ExecCommand(o);else return o}FixFormula(e){if(e.trim()[0]!=="=")return e;e=e.replace(/^\s+/,"");let t=!1,r=!1,i=0,s=!1,n=e.length;for(let a=0;a<n;a++){let o=e[a];if(!s)switch(o){case'"':t?e[a+1]==='"'?a++:t=!1:r||(t=!0);break;case"'":r?r=!1:t||(r=!0);break;case"\\":s=!0;break;case"(":!t&&!r&&i++;break;case")":!t&&!r&&i--;break}}for(t?e+='"':r&&(e+="'");i>0;)e+=")",i--;return e=this.NormalizeFormula(e),e}NormalizeFormula(e){let t=this.parser.Parse(e);return t.error&&console.warn(t.error),t&&t.expression&&(this.parser.Walk(t.expression,r=>{switch(r.type){case"call":r.name=this.autocomplete_matcher.NormalizeIdentifier(r.name)||r.name;break;case"identifier":this.model.named_ranges.Get(r.name)&&(r.name=r.name.toUpperCase());break}return!0}),e="="+this.parser.Render(t.expression,{missing:""})),e}DismissEditor(){this.overlay_editor?.active_cell&&(this.overlay_editor.active_cell.editing=!1,this.overlay_editor.active_cell.render_clean=[],this.DelayedRender(void 0,this.overlay_editor.selection.area)),this.editing_state=0,this.Focus(),this.overlay_editor?.CloseEditor(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection)}NormalizeCellValue(e){let t=e.value;if(e.ValueIsNumber()&&e.style&&e.style.number_format)if(D.Get(e.style.number_format).date_format){let i=Ne(e.value),s=i.getUTCHours()||i.getUTCMinutes()||i.getUTCSeconds()?"Timestamp":"Short Date";t=D.Get(s).Format(t)}else if(/(?:%|percent)/i.test(e.style.number_format)){let i=0,s=e.value.toString().match(/\.(.*?)$/);s&&s[1]&&(i=Math.max(0,s[1].length-2)),t=(e.value*100).toFixed(i)+"%",T.decimal_separator===","&&(t=t.replace(/\./,","))}else t&&T.decimal_separator===","&&(t=e.value.toString().replace(/\./,","));else{if(e.ValueIsBoolean())return e.value.toString().toUpperCase();e.ValueIsNumber()?t&&T.decimal_separator===","&&(t=e.value.toString().replace(/\./,",")):e.ValueIsComplex()?(e.value.imaginary?e.value.real?t=`${e.value.real.toString()}${e.value.imaginary<0?" - ":" + "}${e.value.imaginary===1||e.value.imaginary===-1?"":Math.abs(e.value.imaginary).toString()}i`:e.value.imaginary===1?t="i":e.value.imaginary===-1?t="-i":t=e.value.imaginary.toString()+"i":t=e.value.real.toString(),T.decimal_separator===","&&(t=t.replace(/\./,","))):e.ValueIsFormula()&&(t=this.TranslateFunction(e.value))}return t}IsNumeric(e){return e>=48&&e<=57||e===this.decimal_separator_code||e===45||e===43}OverlayEditCell(e,t=!0,r){if(!this.options.in_cell_editor)return;let i=e.target||e.area.start,s=this.active_sheet.CellData(i),n;if(this.HideHoverInfo(),s.merge_area?(n=this.layout.OffsetCellAddressToRectangle(s.merge_area.start).Combine(this.layout.OffsetCellAddressToRectangle(s.merge_area.end)),i=s.merge_area.start,s=this.active_sheet.CellData(i)):n=this.layout.OffsetCellAddressToRectangle(i),s.style?.locked){console.info("cell is locked for editing");return}n=n.Shift(this.layout.header_size.width,this.layout.header_size.height);let a=s.value;t?(s.type===3||s.rendered_type===3)&&s.style&&s.style.number_format&&/(?:%|percent)/i.test(s.style.number_format)&&(!r||this.IsNumeric(r.key.charCodeAt(0)))?a="%":a=void 0:a=this.NormalizeCellValue(s),this.overlay_editor?.Edit(e,n.Expand(-1,-1),s,a,r),s.editing=!0,s.render_clean=[],this.DelayedRender(!1,e.area)}BoundAddressArea(e,t){e.column>t.end.column?(e.row=this.StepVisibleRows(e.row,1),e.row>t.end.row&&(e.row=t.start.row),e.column=t.start.column):e.column<t.start.column?(e.row=this.StepVisibleRows(e.row,-1),e.row<t.start.row&&(e.row=t.end.row),e.column=t.end.column):e.row>t.end.row?(e.column=this.StepVisibleColumns(e.column,1),e.column>t.end.column&&(e.column=t.start.column),e.row=t.start.row):e.row<t.start.row&&(e.column=this.StepVisibleColumns(e.column,-1),e.column<t.start.column&&(e.column=t.end.column),e.row=t.end.row)}StepVisibleRows(e,t){if(t>0)for(let r=0;r<t;r++)this.layout.RowHeight(++e)||r--;else if(t<0)for(let r=0;r>t;r--)--e>=0&&!this.layout.RowHeight(e)&&r++;return e}StepVisibleColumns(e,t){if(t>0)for(let r=0;r<t;r++)this.layout.ColumnWidth(++e)||r--;else if(t<0)for(let r=0;r>t;r--)--e>=0&&!this.layout.ColumnWidth(e)&&r++;return e}EnsureAddress(e,t=8){let r=!1;if(this.options.expand){if(e.row!==1/0&&e.row>=this.active_sheet.rows){let i=this.active_sheet.rows;for(;e.row>=i;)i+=t;this.active_sheet.cells.EnsureRow(i),r=!0}if(e.column!==1/0&&e.column>=this.active_sheet.columns){let i=this.active_sheet.columns;for(;e.column>=i;)i+=t;this.active_sheet.cells.EnsureColumn(i),r=!0}r&&(this.layout.UpdateTiles(),this.layout.UpdateContentsSize(),this.Repaint(!0,!0))}return r}AdvanceSelection(e,t,r=!1,i=!1,s=!0){let n=this.SelectingArgument();if(t.empty)if(n){let a={row:Math.max(0,this.StepVisibleRows(this.primary_selection.target.row,e.rows)),column:Math.max(0,this.StepVisibleColumns(this.primary_selection.target.column,e.columns))};this.Select(t,new y(a))}else this.Select(t,new y({row:0,column:0}));else{let a=this.active_sheet.CellData(t.target);if(a.merge_area&&r&&(r=!a.merge_area.Equals(t.area)),r&&t.area.count>1){let o=this.active_sheet.RealArea(t.area),l=t.target;for(;;){l.row=this.StepVisibleRows(l.row,e.rows),l.column=this.StepVisibleColumns(l.column,e.columns),this.BoundAddressArea(l,o);let d=this.active_sheet.CellData(l);if(!d.merge_area||d.merge_area.start.row===l.row&&d.merge_area.start.column===l.column)break}this.Select(t,o,l)}else if(i&&t&&t.target){let o=t.area,l=t.target,d=o.start,u=o.end,h={row:1/0,column:1/0};if(e.columns&&(o.columns===1?e.columns>0?(u.column=this.StepVisibleColumns(u.column,1),h.column=u.column):(d.column=this.StepVisibleColumns(d.column,-1),h.column=d.column):o.end.column>l.column?(u.column=this.StepVisibleColumns(u.column,e.columns),h.column=u.column):o.start.column<l.column&&(d.column=this.StepVisibleColumns(d.column,e.columns),h.column=d.column),u.column=Math.max(0,u.column),d.column=Math.max(0,d.column)),e.rows&&(o.rows===1?e.rows>0?(u.row=this.StepVisibleRows(u.row,1),h.row=u.row):(d.row=this.StepVisibleRows(d.row,-1),h.row=d.row):o.end.row>l.row?(u.row=this.StepVisibleRows(u.row,e.rows),h.row=u.row):o.start.row<l.row&&(d.row=this.StepVisibleRows(d.row,e.rows),h.row=d.row),u.row=Math.max(0,u.row),d.row=Math.max(0,d.row)),this.options.expand){for(let f of[d,u,h])f.row!==1/0&&(f.row=Math.max(0,f.row)),f.column!==1/0&&(f.column=Math.max(0,f.column));this.EnsureAddress(u)&&(s=!0),this.ScrollIntoView(h),this.Select(t,new y(d,u),void 0,!0)}else{for(let f of[d,u,h])f.row!==1/0&&(f.row=Math.max(0,Math.min(f.row,this.active_sheet.rows-1))),f.column!==1/0&&(f.column=Math.max(0,Math.min(f.column,this.active_sheet.columns-1)));this.ScrollIntoView(h),this.Select(t,new y(d,u),void 0,!0)}}else{let o=t.target;a.merge_area?(e.columns<0?o.column=this.StepVisibleColumns(a.merge_area.start.column,-1):e.columns>0&&(o.column=this.StepVisibleColumns(a.merge_area.end.column,1)),e.rows<0?o.row=this.StepVisibleRows(a.merge_area.start.row,-1):e.rows>0&&(o.row=this.StepVisibleRows(a.merge_area.end.row,1))):(o.row=this.StepVisibleRows(o.row,e.rows),o.column=this.StepVisibleColumns(o.column,e.columns)),this.EnsureAddress(o)&&(s=!0),this.Select(t,new y({row:Math.min(Math.max(0,o.row),this.active_sheet.rows-1),column:Math.min(Math.max(0,o.column),this.active_sheet.columns-1)})),this.RenderSelections(),this.ScrollIntoView(t.target)}}this.SelectingArgument()&&this.UpdateSelectedArgument(t),s&&this.DelayedRender()}HighlightDependencies(e,t=!0){let r=0;e:for(let i of e)if((i.start.row===1/0||i.start.row<this.active_sheet.rows)&&(i.start.column===1/0||i.start.column<this.active_sheet.columns)){i=this.active_sheet.RealArea(i);let s=i.spreadsheet_label;if(this.additional_selections[r]&&this.additional_selections[r].area.spreadsheet_label===s)r++;else{for(let n=0;n<r;n++)if(this.additional_selections[n].area.spreadsheet_label===s&&this.additional_selections[n].area.start.sheet_id===i.start.sheet_id)continue e;this.additional_selections[r++]={target:i.start,area:i}}}this.additional_selections.splice(r),t&&this.RenderSelections(!1)}AddAdditionalSelection(e,t){let r=t.spreadsheet_label;return this.additional_selections.some(i=>i.area.spreadsheet_label===r)?!1:(this.additional_selections.push({target:e,area:t}),!0)}ClearAdditionalSelections(){this.additional_selections.splice(0,this.additional_selections.length)}ClearSelection(e){this.Select(e)}HideGridSelection(){this.UpdateAddressLabel(void 0,"");let e=this.selected_annotation&&this.selected_annotation.formula?this.selected_annotation.formula:"";this.UpdateFormulaBarFormula(e),this.layout.ShowSelections(!1)}ShowGridSelection(){this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.layout.ShowSelections(!0)}Select(e,t,r,i=!1){if(e.empty||i&&(r=e.target),t){let s=this.active_sheet.RealArea(t);r||(r=s.start);let n=!0;for(;n;)n=!1,this.active_sheet.cells.Apply(s,l=>{l.merge_area&&!s.ContainsArea(l.merge_area)&&(t.ConsumeArea(l.merge_area),s=this.active_sheet.RealArea(t),n=!0)});e.area=new y({...t.start,sheet_id:this.active_sheet.id},t.end),r&&(e.target={...r,sheet_id:this.active_sheet.id}),e.empty=!1;let a=this.active_sheet.CellData(e.target),o="";a.formatted&&(typeof a.formatted=="string"?o=a.formatted:o=a.formatted.map(l=>l.flag===1||l.flag===6?"":l.text).join("")),this.overlay_editor?.UpdateCaption(o)}else e.empty=!0;e===this.primary_selection&&(ie.is_edge&&this.Focus(),this.grid_events.Publish({type:"selection",selection:this.primary_selection}),this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.formula_bar&&(this.formula_bar.target_address={...this.primary_selection.target}),this.options.stats&&this.UpdateStats())}UpdateFormulaBarFormula(e){if(this.formula_bar){if(e){this.formula_bar.formula=e;return}if(this.primary_selection.empty)this.formula_bar.formula="";else{let t=this.active_sheet.CellData(this.primary_selection.target),r=t.merge_area||t.area;r&&(r.start.column!==this.primary_selection.target.column||r.start.row!==this.primary_selection.target.row)&&(t=this.active_sheet.CellData(r.start)),this.formula_bar.editable=!t.style?.locked;let i=this.NormalizeCellValue(t);if(t.validation&&!t.style?.locked){let s;t.validation.type===0?s=t.validation.list:t.validation.type===2&&(s=this.GetValidationRange(t.validation.area)),s&&s.length&&this.layout.ShowDropdownCaret(t.merge_area||new y(this.primary_selection.target),s,t.value)}else this.layout.HideDropdownCaret();t.area?this.formula_bar.formula="{"+(i||"")+"}":this.formula_bar.formula=typeof i<"u"?i.toString():""}}}RenderStats(e){if(!Array.isArray(e))return[];let t=0,r=0,i={real:0,imaginary:0};for(let s of e)for(let n of s)typeof n=="number"?(i.real+=n,r++):ve(n)&&(i.real+=n.real,i.imaginary+=n.imaginary,r++),typeof n<"u"&&t++;if(t>1)if(r>0){let s=D.Get("General");if(i.imaginary){let n={real:i.real/r,imaginary:i.imaginary/r};return[{label:"Count",value:t.toString()},{label:"Sum",value:X.FormatPartsAsText(s.FormatComplex(i))},{label:"Average",value:X.FormatPartsAsText(s.FormatComplex(n))}]}else return[{label:"Count",value:t.toString()},{label:"Sum",value:s.Format(i.real)},{label:"Average",value:s.Format(i.real/r)}]}else return[{label:"Count",value:t.toString()}];return[]}UpdateStats(){if(this.tab_bar){let e=[];typeof this.options.stats=="function"?this.primary_selection.empty||(e=this.options.stats.call(void 0,this.GetRange(this.primary_selection.area))):!this.primary_selection.empty&&this.primary_selection.area.count>1&&(e=this.RenderStats(this.GetRange(this.primary_selection.area))),this.tab_bar.stats_data=e}}UpdateAddressLabel(e=this.primary_selection,t){if(this.formula_bar)if(typeof t<"u")this.formula_bar.label=t;else if(e.empty)this.formula_bar.label="";else{let r=this.active_sheet.CellData(this.primary_selection.target),i=new y(r.merge_area?r.merge_area.start:e.target);this.formula_bar.label=this.model.named_ranges.MatchSelection(e.area,i)||y.CellAddressToLabel(i.start)}}OnDropdownSelect(e){if(typeof e<"u"){let i=ye.TryParse(e.toString());i.type===3&&(e=i.value)}let t=this.active_sheet.CellData(this.primary_selection.target),r=t.merge_area?t.merge_area.start:this.primary_selection.target;this.ExecCommand({key:6,area:r,value:e}),this.UpdateFormulaBarFormula()}OnScroll(){let e=this.layout.VisibleTiles();e.Equals(this.render_tiles)||(this.render_tiles=e,this.layout_token||(this.layout_token=requestAnimationFrame(()=>this.Repaint())))}AttachListeners(){if(!this.container)throw new Error("invalid container");this.container.addEventListener("copy",this.HandleCopy.bind(this)),this.container.addEventListener("cut",this.HandleCut.bind(this)),this.container.addEventListener("paste",this.HandlePaste.bind(this)),this.layout.grid_cover.addEventListener("mousedown",e=>this.MouseDown_Grid(e)),this.layout.column_header_cover.addEventListener("mousedown",e=>this.MouseDown_ColumnHeader(e)),this.layout.row_header_cover.addEventListener("mousedown",e=>this.MouseDown_RowHeader(e)),this.layout.column_header_cover.addEventListener("mousemove",e=>this.MouseMove_ColumnHeader(e)),this.layout.row_header_cover.addEventListener("mousemove",e=>this.MouseMove_RowHeader(e)),this.layout.grid_cover.addEventListener("mousemove",e=>this.MouseMove_Grid(e)),this.overlay_editor?.edit_node.addEventListener("keydown",e=>this.OverlayKeyDown(e)),this.layout.corner.addEventListener("dblclick",()=>{this.SelectAll()}),window.addEventListener("resize",()=>{this.layout.UpdateDPR()&&(this.QueueLayoutUpdate(),this.Repaint(!0,!0,!0))})}HandleCopy(e){if(e.stopPropagation(),e.preventDefault(),this.primary_selection.empty){if(e.clipboardData&&e.clipboardData.clearData(),this.selected_annotation&&e.clipboardData){let t=JSON.stringify({data:this.selected_annotation,source:this.active_sheet.id});e.clipboardData.setData("text/x-treb-annotation",t);let r=this.selected_annotation.view[this.view_index];if(r&&r.node){let i=r.node.firstChild;if(i){let s=hi(i).outerHTML,n="text/plain";e.clipboardData.setData(n,s)}}}}else{let t=this.active_sheet.RealArea(this.primary_selection.area),r=t.columns,i=t.rows,s=[],n=[];for(let o=0;o<i;o++){let l=[];for(let d=0;d<r;d++){let u={row:t.start.row+o,column:t.start.column+d},h=this.active_sheet.CellData(u),f="";h.calculated?h.calculated_type===7?f=Je(h.calculated):f=h.calculated.toString():h.type===7?f=Je(h.value):f=h.value?.toString()||"",l.push(f);let p={address:u,data:h.value,type:h.type,style:this.active_sheet.GetCopyStyle(u)};h.area&&h.area.start.row===u.row&&h.area.start.column===u.column&&(p.array={rows:h.area.rows,columns:h.area.columns}),n.push(JSON.parse(JSON.stringify(p)))}s.push(l)}let a=s.map(o=>o.join(" ")).join(`
|
|
9
|
+
`);e.clipboardData&&(e.clipboardData.clearData(),e.clipboardData.setData("text/plain",a),e.clipboardData.setData("text/x-treb",JSON.stringify({source:t,data:n})))}}HandleCut(e){if(e.stopPropagation(),e.preventDefault(),this.HandleCopy(e),this.primary_selection.empty)this.selected_annotation&&this.RemoveAnnotation(this.selected_annotation);else{let t=this.active_sheet.RealArea(this.primary_selection.area);this.ExecCommand({key:11,area:t})}}RecyclePasteAreas(e,t){let r=[];if(e.count===1)for(let i=t.start.row;i<=t.end.row;i++)for(let s=t.start.column;s<=t.end.column;s++)r.push(new y({row:i,column:s}));else if(e.columns===t.columns&&t.rows>=e.rows&&t.rows%e.rows===0)for(let i=t.start.row;i<=t.end.row;i+=e.rows)r.push(new y({row:i,column:t.start.column},{row:i+e.rows-1,column:t.end.column}));else if(e.rows===t.rows&&t.columns>=e.columns&&t.columns%e.columns===0)for(let i=t.start.column;i<=t.end.column;i+=e.columns)r.push(new y({column:i,row:t.start.row},{column:i+e.columns-1,row:t.end.row}));else r.push(t.Clone().Resize(e.rows,e.columns));return r}HandlePaste(e){if(this.overlay_editor?.editing||(e.stopPropagation(),e.preventDefault(),!e.clipboardData))return;let t=e.clipboardData.getData("text/x-treb-annotation");if(t){try{let n=JSON.parse(t);if(n.source&&n.source!==this.active_sheet.id&&n.data&&n.data.formula){let l="",d=this.model.sheets.Find(n.source);if(d&&(l=d.name),l){let u=this.parser.Parse(n.data.formula);u.expression&&(this.parser.Walk(u.expression,h=>h.type==="range"?(!h.start.sheet_id&&!h.start.sheet&&(h.start.sheet=l),!1):(h.type==="address"&&!h.sheet_id&&!h.sheet&&(h.sheet=l),!0)),n.data.formula="="+this.parser.Render(u.expression,{missing:""}))}}let o=this.CreateAnnotation(n.data,!0,!0).view[this.view_index];if(o&&o.node){let l=o.node;setTimeout(()=>{l.focus()},1)}}catch(n){console.error(n)}return}if(this.primary_selection.empty)return;let r=this.active_sheet.RealArea(this.primary_selection.area),i=[],s=e.clipboardData.getData("text/x-treb");if(s)try{let n=JSON.parse(s),a=new y(n.source.start,n.source.end),o=this.RecyclePasteAreas(a,r);o.length===1&&r.Resize(o[0].rows,o[0].columns);let l=[];for(let d of o){this.active_sheet.cells.EnsureCell(d.end),i.push({key:11,area:d});let u={rows:d.start.row-a.start.row,columns:d.start.column-a.start.column};n.data.forEach(h=>{let f=h.data,p={row:h.address.row-a.start.row+d.start.row,column:h.address.column-a.start.column+d.start.column};if(h.type===1){let m=this.parser.Parse(f);m.expression&&(f="="+this.parser.Render(m.expression,{offset:u,missing:""}))}if(h.array){let m={start:{...p},end:{row:p.row+h.array.rows-1,column:p.column+h.array.columns-1}},_={key:6,value:f,array:!0,area:m};l.push(new y(m.start,m.end)),i.push(_)}else{let m=!1;for(let _ of l)if(_.Contains(p)){m=!0;break}m||i.push({key:6,value:f,area:p})}i.push({key:7,style:h.style||{},area:p})})}}catch(n){console.error("invalid treb data on clipboard"),console.info(n);return}else{let n=e.clipboardData.getData("text/plain");if(!n)return!0;let o=n.trim().split(`
|
|
10
|
+
`).map(d=>d.split(" ").map(u=>u.trim())),l=this.RecyclePasteAreas(new y({row:0,column:0},{row:o.length-1,column:o[0].length-1}),r);l.length===1&&(r.Resize(o.length,o[0].length),r.Resize(l[0].rows,l[0].columns));for(let d of l)for(let u=0;u<o.length;u++)for(let h=0;h<o[0].length;h++){let f=new y({row:u+d.start.row,column:h+d.start.column});if(this.active_sheet.cells.EnsureCell(f.end),o[u][h]){let p=this.SetInferredType({area:f,target:f.start,empty:!1},o[u][h],!1,!1);if(p)for(let m of p)i.push(m)}else{let p=this.active_sheet.cells.GetCell(f.start,!1);p&&p.type!==0&&i.push({key:11,area:f.Clone()})}}}this.ExecCommand(i),this.Select(this.primary_selection,r)}AllSelections(e=!1){let t=[this.primary_selection,this.active_selection].concat(this.additional_selections);return e?t:t.filter(r=>!r.empty)}InsertRowsInternal(e){let t=super.InsertRowsInternal(e);if(t.error)return t;let r=this.FindSheet(e.sheet_id);if(r===this.active_sheet){if(e.count<0)for(let i of this.AllSelections())i.empty=!0;else for(let i of this.AllSelections())i.target.row>=e.before_row&&(i.target.row+=e.count),i.area.entire_column||(i.area.start.row>=e.before_row?i.area.Shift(e.count,0):i.area.end.row>=e.before_row&&i.area.ConsumeAddress({row:i.area.end.row+e.count,column:i.area.end.column}));for(let i of t.delete_annotations_list||[])this.layout.RemoveAnnotation(i);if(this.QueueLayoutUpdate(),this.Repaint(),t.update_annotations_list?.length){this.layout.UpdateAnnotation(t.update_annotations_list);for(let i of t.resize_annotations_list||[]){let s=i.view[this.view_index];s?.resize_callback&&s.resize_callback.call(void 0)}}}else this.pending_layout_update.add(r.id);return t}InsertColumnsInternal(e){let t=super.InsertColumnsInternal(e);if(t.error)return t;let r=this.FindSheet(e.sheet_id);if(r===this.active_sheet){if(e.count<0)for(let i of this.AllSelections())i.empty=!0;else for(let i of this.AllSelections())i.target.column>=e.before_column&&(i.target.column+=e.count),i.area.entire_row||(i.area.start.column>=e.before_column?i.area.Shift(0,e.count):i.area.end.column>=e.before_column&&i.area.ConsumeAddress({row:i.area.end.row,column:i.area.end.column+e.count}));for(let i of t.delete_annotations_list||[])this.layout.RemoveAnnotation(i);if(this.tile_renderer.FlushOverflows(),this.QueueLayoutUpdate(),this.DelayedRender(!0,void 0,!0),t.update_annotations_list?.length){this.layout.UpdateAnnotation(t.update_annotations_list);for(let i of t.resize_annotations_list||[]){let s=i.view[this.view_index];s?.resize_callback&&s.resize_callback.call(void 0)}}}else this.pending_layout_update.add(r.id);return t}ResetInternal(){super.ResetInternal(),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),this.ScrollIntoView({row:0,column:0}),this.QueueLayoutUpdate(),this.layout.HideNote()}ResizeColumnsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.column;if(typeof r>"u"){r=[];for(let n=0;n<t.columns;n++)r.push(n)}typeof r=="number"&&(r=[r]);let i=typeof e.width!="number",s=Math.round(e.width||0/this.scale);if(i)for(let n of r)this.AutoSizeColumn(t,n,!1);else for(let n of r)t.SetColumnWidth(n,s);t===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetWidth&&this.layout.container.offsetWidth>this.layout.total_width?this.UpdateLayout():(this.layout.UpdateTileWidths(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(t.id)}ResizeRowsInternal(e){let t,r=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,i=e.row;if(typeof i>"u"){i=[];for(let o=0;o<r.rows;o++)i.push(o)}typeof i=="number"&&(i=[i]);let s=typeof e.shrink=="boolean"?e.shrink:!0,n=typeof e.height!="number",a=Math.round(e.height||0/this.scale);if(n)for(let o of i)r.GetRowHeight(o)||(t?t.ConsumeAddress({row:o,column:1}):t=new y({row:o,column:1/0,sheet_id:r.id})),r.AutoSizeRow(o,this.theme.grid_cell,s);else for(let o of i){let l=r.GetRowHeight(o);(!l&&a||l&&!a)&&(t?t.ConsumeAddress({row:o,column:1}):t=new y({row:o,column:1/0,sheet_id:r.id})),r.SetRowHeight(o,a)}return r===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetHeight&&this.layout.container.offsetHeight>this.layout.total_height?this.UpdateLayout():(this.layout.UpdateTileHeights(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(r.id),t?{start:t.start,end:t.end}:void 0}SelectInternal(e){e.area?(e.area.start.sheet_id&&e.area.start.sheet_id!==this.active_sheet.id&&this.ActivateSheetInternal({key:21,id:e.area.start.sheet_id}),this.Select(this.primary_selection,new y(e.area.start,e.area.end)),this.RenderSelections()):this.ClearSelection(this.primary_selection)}FreezeInternal(e){let t=this.FindSheet(e.sheet_id||this.active_sheet.id),r=(typeof e.highlight_transition=="boolean"?e.highlight_transition:!0)&&t===this.active_sheet;if(e.rows===t.freeze.rows&&e.columns===t.freeze.columns){r&&this.HighlightFreezeArea();return}t.freeze.rows=e.rows,t.freeze.columns=e.columns,t===this.active_sheet?(this.QueueLayoutUpdate(),this.Repaint(),r&&this.HighlightFreezeArea(),e.rows||e.columns?this.layout.CloneFrozenAnnotations():this.layout.ClearFrozenAnnotations()):this.pending_layout_update.add(t.id)}ExecCommand(e,t=!0){let r=super.ExecCommand(e,t);this.batch||r.render_area&&this.DelayedRender(!1,r.render_area),r.repaint&&this.Repaint();for(let i of r.pending||[])this.pending_layout_update.add(i);return r.layout&&this.QueueLayoutUpdate(),r.sheets&&this.tab_bar&&this.tab_bar.Update(),r.formula&&this.UpdateFormulaBarFormula(),r}};var _t=class{forward={};backward=[];Count(){return this.backward.length}Serialize(){return JSON.parse(JSON.stringify(this.Map()))}Deserialize(e){if(this.Reset(),e){for(let t of Object.keys(e))this.SetName(t,new y(e[t].start,e[t].end),!1);this.RebuildList()}}MatchSelection(e,t){if(!e.start.sheet_id)throw new Error("match selection without sheet id");let r;for(let i of this.List())if(i.range.start.sheet_id===e.start.sheet_id&&(i.range.Equals(e)&&(r=i.name),t?.Equals(i.range)))return i.name;return r}SetName(e,t,r=!0){let i=this.ValidateNamed(e);return i?t.entire_column||t.entire_row?(console.warn("invalid range"),!1):(this.forward[i]=t,r&&this.RebuildList(),!0):(console.warn("invalid name"),!1)}SetNames(e){for(let t of Object.keys(e)){let r=e[t];this.SetName(t,new y(r.start,r.end),!1)}this.RebuildList()}ClearName(e,t=!0){delete this.forward[e],t&&this.RebuildList()}RemoveRangesForSheet(e,t=!0){let r={},i=this.List();for(let s of i)s.range.start.sheet_id!==e&&(r[s.name]=s.range);this.forward=r,t&&this.RebuildList()}Reset(){this.forward={},this.backward=[]}Get(e){return this.forward[e.toUpperCase()]}Map(){return this.forward}List(){return this.backward}ValidateNamed(e){return e=e.trim(),!e.length||/^[A-Za-z]{1,3}\d+$/.test(e)||/[^A-Za-z\d_.]/.test(e)||/^[^A-Za-z_]/.test(e)?!1:e.toUpperCase()}PatchNamedRanges(e,t,r,i,s){let n=this.List().slice(0);for(let a of n){let o=a.name,l=a.range;if(l.start.sheet_id!==e){console.info("skipping name",o);continue}if(r&&t<=l.end.column){if(r>0)t<=l.start.column?l.Shift(0,r):t>l.start.column&&t<=l.end.column?l.ConsumeAddress({row:l.end.row,column:l.end.column+r}):console.warn("PNR X case 1",t,r,JSON.stringify(l));else if(r<0)if(t-r<=l.start.column)l.Shift(0,r);else if(t<=l.start.column&&t-r>l.end.column)this.ClearName(o,!1);else if(t<=l.start.column){let d=t-r-1;this.SetName(o,new y({row:l.start.row,column:d+1+r,sheet_id:e},{row:l.end.row,column:l.end.column+r}),!1)}else t<=l.end.column?t-r-1>=l.end.column?this.SetName(o,new y({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:t-1}),!1):this.SetName(o,new y({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:l.start.column+l.columns+r-1}),!1):console.warn("PNR X case 2",t,r,JSON.stringify(l))}if(s&&i<=l.end.row){if(s>0)i<=l.start.row?l.Shift(s,0):i>l.start.row&&i<=l.end.row?l.ConsumeAddress({row:l.end.row+s,column:l.end.column}):console.warn("PNR X case 3",i,s,JSON.stringify(l));else if(s<0)if(i-s<=l.start.row)l.Shift(s,0);else if(i<=l.start.row&&i-s>l.end.row)this.ClearName(o,!1);else if(i<=l.start.row){let d=i-s-1;this.SetName(o,new y({column:l.start.column,row:d+1+s,sheet_id:e},{column:l.end.column,row:l.end.row+s}),!1)}else i<=l.end.row?i-s-1>=l.end.row?this.SetName(o,new y({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:i-1}),!1):this.SetName(o,new y({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:l.start.row+l.rows+s-1}),!1):console.warn("PNR X case 4",i,s,JSON.stringify(l))}}this.RebuildList()}RebuildList(){this.backward=[];for(let e of Object.keys(this.forward))this.backward.push({name:e,range:this.forward[e]})}};var Vr=class{get list(){return this.sheets_.slice(0)}get length(){return this.sheets_.length}names=new Map;ids=new Map;sheets_=[];Assign(e){this.sheets_=[...e],this.UpdateIndexes()}Add(e){this.sheets_.push(e),this.UpdateIndexes()}Splice(e,t,...r){this.sheets_.splice(e,t,...r),this.UpdateIndexes()}Find(e){return typeof e=="string"?this.names.get(e.toLocaleUpperCase()):this.ids.get(e)}Name(e){return this.ids.get(e)?.name||void 0}ID(e){return this.names.get(e.toLocaleUpperCase())?.id||void 0}UpdateIndexes(){this.names.clear(),this.ids.clear();for(let e of this.sheets_){let t=e.name.toLocaleUpperCase();this.names.set(t,e),this.ids.set(e.id,e)}}},bt=class{document_name;user_data;sheets=new Vr;named_ranges=new _t;macro_functions=new Map;named_expressions=new Map;view_count=0;theme_style_properties=JSON.parse(JSON.stringify(A.DefaultProperties));tables=new Map;ResolveStructuredReference(e,t){let r;if(e.table?r=this.tables.get(e.table.toLowerCase()):t.sheet_id&&(r=this.sheets.Find(t.sheet_id)?.CellData(t)?.table),!r)return;let i=e.column.toLowerCase(),s=-1;if(r.columns){for(let n=0;n<r.columns.length;n++)if(i===r.columns[n]){s=r.area.start.column+n;break}}if(!(s<0))if(e.scope==="row"){let n=t.row;return n<r.area.start.row||n>r.area.end.row?void 0:{label:e.label,type:"address",row:n,column:s,sheet_id:r.area.start.sheet_id,id:e.id,position:e.position}}else{let n=r.area.start.row,a=r.area.end.row;return e.scope==="column"&&(n++,r.totals_row&&a--),{label:e.label,type:"range",position:e.position,id:e.id,start:{type:"address",row:n,column:s,sheet_id:r.area.start.sheet_id,label:e.label,position:e.position,id:0},end:{type:"address",row:a,column:s,label:e.label,position:e.position,id:0}}}}};var Fr=class{type=Fr.type;color=0;edges_in=new Set;edges_out=new Set;get has_inbound_edges(){return this.edges_in.size>0}get has_outbound_edges(){return this.edges_out.size>0}Reset(){for(let e of this.edges_out)e.RemoveDependency(this);for(let e of this.edges_in)e.RemoveDependent(this);this.edges_out.clear(),this.edges_in.clear()}ClearDependencies(){for(let e of this.edges_in)e.RemoveDependent(this);this.edges_in.clear()}AddDependent(e){e!==this&&(this.edges_out.has(e)||this.edges_out.add(e))}RemoveDependent(e){this.edges_out.delete(e)}AddDependency(e){e!==this&&(this.edges_in.has(e)||this.edges_in.add(e))}RemoveDependency(e){this.edges_in.delete(e)}LinkTo(e){this.AddDependent(e),e.AddDependency(this)}DependsOn(e){this.AddDependency(e),e.AddDependent(this)}LoopCheck(){let e=[this];for(;e.length;){let t=e[e.length-1],r=!0;if(t.color!==2){t.color=1;for(let i of t.edges_out){if(i.color===1)return this.color=0,!0;i.color===0&&i.edges_out.size&&(e.push(i),r=!1)}}r&&(t.color=2,e.pop())}return this.color=2,!1}},yt=Fr;k(yt,"type","vertex");var Ye=class extends yt{dirty=!1};var Mi={error:"NOTIMPL"},Re=()=>({type:6,value:"N/A"}),ke=()=>({type:6,value:"EXPR"});var pe=()=>({type:6,value:"DIV/0"}),W=()=>({type:6,value:"ARG"}),L=()=>({type:6,value:"VALUE"}),J=()=>({type:6,value:"REF"}),zr=()=>({type:6,value:"NAME"}),Bt=()=>({type:6,value:"UNK"});var Nr=class extends Ye{reference;error=0;address;result={type:0};expression={type:"missing",id:-1};expression_error=!1;short_circuit=!1;type=Nr.type;get array_head(){return this.address?!!this.reference&&!!this.reference.area&&this.reference.area.start.column===this.address.column&&this.reference.area.start.row===this.address.row:!1}TakeReferenceValue(){this.reference&&(this.result=q(this.reference.GetValue()))}Calculate(e){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){this.reference&&(this.array_head||this.reference.type===1)&&this.reference.SetCalculationError("LOOP");for(let t of this.edges_out)t.Calculate(e);return}for(let t of this.edges_in)if(t.dirty)return;if(this.reference){if(this.reference.type===1){this.short_circuit=!1;let t=e.CalculationCallback.call(e,this);if(this.result=t.value,this.short_circuit)return;t.volatile&&e.volatile_list.push(this)}else this.result=this.reference.GetValue4();if(this.array_head)e.SpreadCallback.call(e,this,this.result);else if(this.reference.type===1){let t=this.result.type===8?this.result.value[0][0]:this.result;this.reference.SetCalculatedValue(t.value,t.type)}}else console.info("skip dirty constant? [or dangling...]");this.dirty=!1;for(let t of this.edges_out)t.dirty&&e.calculation_list.push(t)}}},ze=Nr;k(ze,"type","spreadsheet-vertex");var He=class extends Ye{type=He.type;area;static GetVertex(e){for(let t of this.list)if(t.area.start.sheet_id===e.start.sheet_id&&t.area.Equals(e))return[t,!1];return[new He(e),!0]}static Clear(){this.list=[]}static GetContainingArrays(e){let t=[];for(let r of this.list)r.area.start.sheet_id===e.sheet_id&&r.area.Contains(e)&&t.push(r);return t}static CreateImplicitEdges(e,t){for(let r of this.list)r.area.start.sheet_id===t.sheet_id&&r.area.Contains(t)&&r.DependsOn(e)}constructor(e){super(),this.area=e.Clone(),He.list.push(this)}RemoveDependent(e){super.RemoveDependent(e),this.edges_out.size||(this.Reset(),He.list=He.list.filter(t=>t!==this))}Calculate(e){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){for(let t of this.edges_out)t.Calculate(e);return}for(let t of this.edges_in)if(t.dirty)return;this.dirty=!1;for(let t of this.edges_out)t.Calculate(e)}}},Ee=He;k(Ee,"type","array-vertex"),k(Ee,"list",[]);var jt=class{vertices=[[]];volatile_list=[];calculation_list=[];loop_hint;leaf_vertices=[];dirty_list=[];loop_check_required=!1;IsSpreadsheetVertex(e){return e.type===ze.type}FlushTree(){this.dirty_list=[],this.volatile_list=[],this.vertices=[[]],this.leaf_vertices=[],Ee.Clear()}ResolveArrayHead(e){if(!e.sheet_id)throw new Error("resolve array head with no sheet id");let t=this.model.sheets.Find(e.sheet_id)?.cells;if(!t)throw new Error("no cells? sheet id "+e.sheet_id);let r=t.data[e.row];if(r){let i=r[e.column];if(i&&i.area){let s={row:i.area.start.row,column:i.area.start.column,sheet_id:e.sheet_id};return console.info("array head",e,s),s}}return e}GetVertex(e,t){if(!e.sheet_id)throw console.info({address:e,create:t}),new Error("getvertex with no sheet id");let r=this.model.sheets.Find(e.sheet_id)?.cells;if(!r)throw new Error("no cells? sheet id "+e.sheet_id);if(!this.vertices[e.sheet_id]){if(!t)return;this.vertices[e.sheet_id]=[]}if(this.vertices[e.sheet_id][e.column]){let s=this.vertices[e.sheet_id][e.column][e.row];if(s)return s;if(!t)return}else{if(!t)return;this.vertices[e.sheet_id][e.column]=[]}let i=new ze;return i.address={row:e.row,column:e.column,absolute_row:e.absolute_row,absolute_column:e.absolute_column,sheet_id:e.sheet_id},i.reference=r.EnsureCell(e),this.vertices[e.sheet_id][e.column][e.row]=i,Ee.CreateImplicitEdges(i,e),i}RemoveVertex(e){if(!e.sheet_id)throw new Error("removevertex with no sheet id");let t=this.GetVertex(e,!1);t&&(t.Reset(),this.vertices[e.sheet_id][e.column][e.row]=void 0)}ResetVertex(e){let t=this.GetVertex(e,!1);t&&t.Reset()}RIBcount=0;ResetInbound(e,t=!1,r=!0,i=!1){this.RIBcount++;let s=this.GetVertex(e,r);if(!s){if(t){let a=Ee.GetContainingArrays(e);for(let o of a)this.SetVertexDirty(o)}return}let n=[];if(i&&(n=Array.from(s.edges_in)),s.ClearDependencies(),t&&this.SetVertexDirty(s),i){s.has_outbound_edges||this.RemoveVertex(e);for(let a of n)if(!a.has_inbound_edges&&!a.has_outbound_edges){let o=a;o.address&&this.RemoveVertex(o.address)}}}ResetLoopState(){for(let e of this.vertices)if(e){for(let t of e)if(t)for(let r of t)r&&(r.color=r.edges_out.size?0:2)}for(let e of this.leaf_vertices)e.color=2}LoopCheck(e=!1){if(!this.loop_check_required&&!e)return!1;let t=[];for(let i of this.vertices)if(i){for(let s of i)if(s)for(let n of s)n&&(n.color=n.edges_out.size?0:2,t.push(n))}let r=[];for(let i of t)if(i.color===0){for(i.color=1,r.push(i);r.length;){let s=r[r.length-1],n=!0;if(s.color!==2)for(let a of s.edges_out){if(a.color===1)return this.loop_hint=this.RenderAddress(i.address),console.info("loop detected @",this.loop_hint),!0;a.color===0&&(r.push(a),n=!1)}n&&(r.pop(),s.color=2)}i.color=2}return this.loop_check_required=!1,this.loop_hint=void 0,!1}RenderAddress(e){if(!e)return"undefined";let t="";if(e.sheet_id){let i=this.model.sheets.Find(e.sheet_id);i&&(t=i.name+"!")}let r=new y(e);return t+r.spreadsheet_label}AddArrayEdge(e,t){if(!e.start.sheet_id)throw new Error("AddArrayEdge called without sheet ID");let r=this.GetVertex(t,!0),[i,s]=Ee.GetVertex(e);if(r.DependsOn(i),this.loop_check_required=!0,!s)return;let n=this.vertices[e.start.sheet_id];if(n)if(e.entire_row){for(let a=0;a<n.length;a++)if(n[a])for(let o=e.start.row;o<=e.end.row;o++){let l=n[a][o];l&&i.DependsOn(l)}}else if(e.entire_column){for(let a=e.start.column;a<=e.end.column;a++)if(n[a])for(let o of n[a])o?.address&&i.DependsOn(o)}else for(let a=e.start.row;a<=e.end.row;a++)for(let o=e.start.column;o<=e.end.column;o++){let l=n[o][a];l&&i.DependsOn(l)}}AddEdge(e,t,r){let i=this.GetVertex(e,!0);this.GetVertex(t,!0).DependsOn(i),i.reference&&i.reference.area&&!i.array_head&&this.AddEdge({...e,row:i.reference.area.start.row,column:i.reference.area.start.column},t,"implicit"),this.loop_check_required=!0}RemoveEdge(e,t){let r=this.GetVertex(e,!1),i=this.GetVertex(t,!1);!r||!i||(r.RemoveDependent(i),i.RemoveDependency(r))}SetAreaDirty(e){if(e.start.column===1/0||e.end.column===1/0||e.start.row===1/0||e.end.row===1/0)throw new Error("don't iterate over infinite area");let t=e.start.sheet_id;if(!t)throw new Error("invalid area, missing sheet id");for(let r=e.start.column;r<=e.end.column;r++)for(let i=e.start.row;i<=e.end.row;i++){let s={row:i,column:r,sheet_id:t};this.GetVertex(s,!1)&&this.SetDirty(s)}}SetVertexDirty(e){if(!e.dirty){this.dirty_list.push(e),e.dirty=!0;for(let t of e.edges_out)this.SetVertexDirty(t)}}SetDirty(e){let t=this.GetVertex(e,!0);this.SetVertexDirty(t)}AddLeafVertex(e){for(let t of this.leaf_vertices)if(t===e)return;this.leaf_vertices.push(e)}RemoveLeafVertex(e){this.leaf_vertices=this.leaf_vertices.filter(t=>t!==e)}AddLeafVertexEdge(e,t){let r=this.GetVertex(e,!0);return t.DependsOn(r),0}RemoveLeafVertexEdge(e,t){let r=this.GetVertex(e,!1);r&&(r.RemoveDependent(t),t.RemoveDependency(r))}InitializeGraph(){for(let e of this.dirty_list)this.IsSpreadsheetVertex(e)&&(e.TakeReferenceValue(),this.CheckVolatile(e)&&this.volatile_list.push(e)),e.dirty=!1;this.dirty_list=[]}Recalculate(){for(let e of this.volatile_list)this.SetVertexDirty(e);this.calculation_list=this.dirty_list.slice(0),this.volatile_list=[],this.dirty_list=[],this.loop_check_required&&(this.ResetLoopState(),this.loop_check_required=!1);for(let e=0;e<this.calculation_list.length;e++)this.calculation_list[e].Calculate(this);this.calculation_list=[]}};var Ks=c=>{let e={m:c,n:c,array:[]};for(let t=0;t<c;t++){let r=[];for(let i=0;i<c;i++)r.push({real:0,imaginary:0});e.array.push(r)}return e};var Ys=c=>{let{r:e,theta:t}=c,r=e*Math.cos(t),i=e*Math.sin(t);return{real:r,imaginary:i}},Jt=c=>{let e=Math.sqrt(c.real*c.real+c.imaginary*c.imaginary),t=Math.atan2(c.imaginary,c.real);return{r:e,theta:t}},ue=(c,e)=>({real:c.real*e.real-c.imaginary*e.imaginary,imaginary:c.real*e.imaginary+c.imaginary*e.real}),Zs=(c,e)=>{let t=[];for(let r=0;r<c.m;r++){let i=[];for(let s=0;s<c.n;s++)i.push(c.array[r][s]+e.array[r][s]);t.push(i)}return{m:c.m,n:c.n,array:t}},Or=(c,e)=>{let t=[];for(let r=0;r<c.m;r++){let i=[];for(let s=0;s<e.n;s++){let n=0;for(let a=0;a<c.n;a++)n+=c.array[r][a]*e.array[a][s];i.push(n)}t.push(i)}return{array:t,m:c.m,n:e.n}},Di=(c,e)=>{let t=[];for(let r=0;r<c.m;r++){let i=[];for(let s=0;s<e.n;s++){let n={real:0,imaginary:0};for(let a=0;a<c.n;a++)n.real+=c.array[r][a].real*e.array[a][s].real-c.array[r][a].imaginary*e.array[a][s].imaginary,n.imaginary+=c.array[r][a].real*e.array[a][s].imaginary+c.array[r][a].imaginary*e.array[a][s].real;i.push(n)}t.push(i)}return t},Wt=c=>{let e={real:0,imaginary:0},t=c.n;if(t==2){let i=ue(c.array[0][0],c.array[1][1]),s=ue(c.array[1][0],c.array[0][1]);return{real:i.real-s.real,imaginary:i.imaginary-s.imaginary}}let r=Ks(c.n);for(let i=0;i<t;i++){let s=0;for(let o=1;o<t;o++){let l=0;for(let d=0;d<t;d++)d!=i&&(r.array[s][l]={...c.array[o][d]},l++);s++}r.m=r.n=t-1;let n=Math.pow(-1,i),a=ue({real:c.array[0][i].real*n,imaginary:c.array[0][i].imaginary*n},Wt(r));e.real+=a.real,e.imaginary+=a.imaginary}return e};var Qs=c=>{let e={real_values:!1,imaginary_values:!1,square:c.m===c.n,unit_diagonal:!0},t={m:c.m,n:c.n,array:[]},r={m:c.m,n:c.n,array:[]};for(let i=0;i<c.m;i++){let s=c.array[i],n=[],a=[];for(let o=0;o<c.n;o++)s[o].real&&(e.real_values=!0),s[o].imaginary&&(e.imaginary_values=!0),o===i&&e.unit_diagonal&&(s[o].real!==1||s[o].imaginary!==0)&&(e.unit_diagonal=!1),n.push(s[o].real),a.push(s[o].imaginary);t.array.push(n),r.array.push(a)}return{real:t,imaginary:r,flags:e}},en=c=>{let e=c.array.map(t=>t.slice(0));return{m:c.m,n:c.n,array:e}},Li=c=>{if(c.m!==c.n)return;let e=en(c),t=e.array,r=0,i=0,s=0,n=0,a=c.m;for(i=1;i<a;i++)t[0][i]/=t[0][0];for(i=1;i<a;i++){for(s=i;s<a;s++){for(r=0,n=0;n<i;n++)r+=t[s][n]*t[n][i];t[s][i]-=r}if(i!=a-1)for(s=i+1;s<a;s++){for(r=0,n=0;n<i;n++)r+=t[i][n]*t[n][s];t[i][s]=(t[i][s]-r)/t[i][i]}}for(i=0;i<a;i++)for(s=i;s<a;s++){let o=1;if(i!=s)for(o=0,n=i;n<s;n++)o-=t[s][n]*t[n][i];t[s][i]=o/t[s][s]}for(i=0;i<a;i++)for(s=i;s<a;s++)if(i!=s){for(r=0,n=i;n<s;n++)r+=t[n][s]*(i==n?1:t[i][n]);t[i][s]=-r}for(i=0;i<a;i++)for(s=0;s<a;s++){for(r=0,n=i>s?i:s;n<a;n++)r+=(s==n?1:t[s][n])*t[n][i];t[s][i]=r}return e},Ii=c=>{let e=[];if(c.m!==c.n)return;let{real:t,imaginary:r,flags:i}=Qs(c),s=Li(t);if(!s)return;if(!i.imaginary_values){for(let u=0;u<c.m;u++){let h=[];for(let f=0;f<c.n;f++)h.push({real:s.array[u][f],imaginary:0});e.push(h)}return e}let n=Or(s,r),a=Or(r,n),o=Zs(t,a),l=Li(o);if(!l)return;let d=Or(n,l);for(let u=0;u<c.m;u++){let h=[];for(let f=0;f<c.n;f++)h.push({real:l.array[u][f],imaginary:-d.array[u][f]});e.push(h)}return e},Vi=(c,e)=>{let t={real:e.real,imaginary:-e.imaginary},r=ue(c,t),i=ue(e,t);return{real:r.real/i.real,imaginary:r.imaginary/i.real}},Gr=c=>{let e=c.real||0,t=c.imaginary||0;return ue({real:Math.exp(e),imaginary:0},{real:Math.cos(t),imaginary:Math.sin(t)})},tn=c=>{let e=Jt(c);return{real:Math.log(e.r),imaginary:e.theta}},me=(c,e)=>{if(e.imaginary)return Gr(ue(e,tn(c)));{let t=Jt(c);return Ys({r:Math.pow(t.r,e.real),theta:t.theta*e.real})}};var Fi=(c,e=0)=>c&&c.type===7?c:{type:7,value:{real:e,imaginary:0}},$e=c=>c.imaginary?{type:7,value:c}:{type:3,value:c.real},Be=(c,e)=>{if(c.type===6)return[0,0,c];if(e.type===6)return[0,0,e];let t=[0,0];switch(c.type){case 3:t[0]=c.value;break;case 4:t[0]=c.value?1:0;break;case 0:break;case 7:t[3]=c;break;default:return[0,0,L()]}switch(e.type){case 3:t[1]=e.value;break;case 4:t[1]=e.value?1:0;break;case 0:break;case 7:t[4]=e;break;default:return[0,0,L()]}return(t[3]||t[4])&&(t[3]=Fi(t[3],t[0]),t[4]=Fi(t[4],t[1])),t},rn=(c,e)=>{let[t,r,i,s,n]=Be(c,e);return i||(s&&n?$e({real:s.value.real+n.value.real,imaginary:s.value.imaginary+n.value.imaginary}):{value:t+r,type:3})},jr=(c,e)=>{let[t,r,i,s,n]=Be(c,e);return i||(s&&n?$e({real:s.value.real-n.value.real,imaginary:s.value.imaginary-n.value.imaginary}):{value:t-r,type:3})},sn=(c,e)=>{let[t,r,i,s,n]=Be(c,e);if(i)return i;if(s&&n)return $e(me(s.value,n.value));let a=Math.pow(t,r);return isNaN(a)?L():{type:3,value:a}},nn=(c,e)=>{let[t,r,i,s,n]=Be(c,e);if(i)return i;if(s&&n)return $e(me(s.value,n.value));if(t<0&&r!==0&&Math.abs(r)<1)return $e(me({real:t,imaginary:0},{real:r,imaginary:0}));let a=Math.pow(t,r);return isNaN(a)?L():{type:3,value:a}},$r=sn,on=(c,e)=>{let[t,r,i,s,n]=Be(c,e);return i||(s&&n?$e(ue(s.value,n.value)):{value:t*r,type:3})},an=(c,e)=>{let[t,r,i,s,n]=Be(c,e);return i||(s&&n?n.value.real===0&&n.value.imaginary===0?pe():$e(Vi(s.value,n.value)):r===0?pe():{value:t/r,type:3})},ln=(c,e)=>{let[t,r,i]=Be(c,e);return i||(r===0?pe():{value:t%r,type:3})},cn=(c,e)=>c.type===6?c:e.type===6?e:{type:2,value:`${c.type===0?"":c.value}${e.type===0?"":e.value}`},Br=(c,e)=>{if(c.type===6)return c;if(e.type===6)return e;if(c.type===0&&(e.value===""||e.value===0||e.type===7&&e.value.real===0&&e.value.imaginary===0)||e.type===0&&(c.value===""||c.value===0||c.type===7&&c.value.real===0&&c.value.imaginary===0))return{type:4,value:!0};if(c.type===7||e.type===7){let t=!1;return c.type===e.type?t=c.value.real==e.value.real&&c.value.imaginary==e.value.imaginary:c.type===3?t=e.value.real==c.value&&!e.value.imaginary:e.type===3&&(t=c.value.real==e.value&&!c.value.imaginary),{type:4,value:t}}return{type:4,value:c.value==e.value}},zi=(c,e)=>{let t=Br(c,e);return t.type===6?t:{type:4,value:!t.value}},dn=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:(c.value||0)>(e.value||0)},un=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:c.value>=e.value},hn=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:c.value<e.value},fn=(c,e)=>c.type===6?c:e.type===6?e:c.type===7||e.type===7?L():{type:4,value:c.value<=e.value},Pi=()=>{$r=nn},Ni=c=>{switch(c){case"&":return cn;case"+":return rn;case"-":return jr;case"*":return on;case"/":return an;case"^":return $r;case"**":return $r;case"%":return ln;case"=":return Br;case"==":return Br;case"!=":return zi;case"<>":return zi;case">":return dn;case">=":return un;case"<":return hn;case"<=":return fn}};var Gi=c=>!Array.isArray(c)&&c.type===5&&!!c.value.type,Xt=c=>c.type===5&&c.key==="metadata",qt=class{constructor(e,t){this.library=e;this.parser=t}context={address:{row:-1,column:-1},volatile:!1,call_index:0};call_index=0;named_range_map={};data_model;SetModel(e){this.data_model=e,this.named_range_map=e.named_ranges.Map(),this.context.model=e}Calculate(e,t,r=!1){return r||(this.context.address=t,this.context.volatile=!1,this.context.call_index=0,this.call_index=0),{value:this.CalculateExpression(e),volatile:this.context.volatile}}CellFunction2(e){if(!e.sheet_id)if(e.sheet)e.sheet_id=this.data_model.sheets.ID(e.sheet)||0;else return()=>J();let t=this.data_model.sheets.Find(e.sheet_id)?.cells;if(!t)return console.warn("missing cells reference @ "+e.sheet_id),()=>J();let r=t.GetCell(e);return r?()=>r.GetValue4():()=>({type:3,value:0})}CellFunction4(e,t){return e.sheet_id?this.data_model.sheets.Find(e.sheet_id)?.cells?.GetRange4(e,t,!0)||J():J()}GetMetadata(e,t){let r,i;switch(e.type){case"address":r=e;break;case"range":i=e;break;case"structured-reference":{let s=this.data_model.ResolveStructuredReference(e,this.context.address);s&&(s.type==="address"?r=s:s.type==="range"&&(i=s))}break;case"identifier":{let s=this.named_range_map[e.name.toUpperCase()];s&&(s.count===1?r=s.start:i=s)}break;case"call":{let s=this.CalculateExpression(e,!0);if(Gi(s))if(s.value.type==="address")r=s.value;else if(s.value.type==="range")i=s.value;else return s;else return s}break;default:return this.CalculateExpression(e)}if(r){let s;if(r.sheet_id&&(s=this.data_model.sheets.Find(r.sheet_id)),!s)return console.error("missing sheet [ac8]"),J();let n=s.CellData(r),a=n.calculated_type?n.calculated:n.value,o={type:"metadata",address:{...r},value:a,format:n.style?n.style.number_format:void 0,...t(n,r)};return{type:5,value:o,key:"metadata"}}else if(i){if(i.start.row===1/0||i.start.column===1/0)return J();let s;if(i.start.sheet_id&&(s=this.data_model.sheets.Find(i.start.sheet_id)),!s)throw new Error("missing sheet [ac9]");let n=[];for(let a=i.start.column;a<=i.end.column;a++){let o=[];for(let l=i.start.row;l<=i.end.row;l++){let d=s.CellData({row:l,column:a});r={...i.start,row:l,column:a};let u=d.calculated_type?d.calculated:d.value,h={type:"metadata",address:r,value:u,format:d.style?d.style.number_format:void 0,...t(d,r)};o.push({type:5,value:h,key:"metadata"})}n.push(o)}return{type:8,value:n}}return this.CalculateExpression(e)}RewriteMacro(e,t){let r;switch(e.type){case"identifier":if(r=t[e.name.toUpperCase()],r)return JSON.parse(JSON.stringify(r));break;case"binary":e.left=this.RewriteMacro(e.left,t),e.right=this.RewriteMacro(e.right,t);break;case"unary":e.operand=this.RewriteMacro(e.operand,t);break;case"group":e.elements=e.elements.map(i=>this.RewriteMacro(i,t));break;case"call":e.args=e.args.map(i=>this.RewriteMacro(i,t));break}return e}CallMacro(e,t){if(!t.expression)return()=>ke();let r=JSON.stringify(t.expression),i={},s=t.argument_names?.map(n=>n.toUpperCase())||[];return n=>{let a=JSON.parse(r);for(let o=0;o<s.length;o++)i[s[o]]=n.args[o]||{type:"missing",id:0};return this.CalculateExpression(this.RewriteMacro(a,i))}}CallExpression(e,t=!1){let r=this.library.Get(e.name);return r?i=>{let s=this.call_index++;this.context.volatile=this.context.volatile||!!r.volatile;let n=e.name.toLowerCase()==="if",a=-1,o,l=r.arguments||[],d=i.args.map((u,h)=>{if(o)return;let f=l[Math.min(h,l.length-1)]||{};if(h===a)return f.boxed?{type:0}:void 0;if(typeof u>"u")return n&&h===0&&(a=1),f.boxed?{type:0}:void 0;if(f.address)return f.boxed?{type:2,value:this.parser.Render(u).replace(/\$/g,"")}:this.parser.Render(u).replace(/\$/g,"");if(f.metadata)return this.GetMetadata(u,()=>({}));{let p=this.CalculateExpression(u);if(p.type===6){if(f.allow_error)return p;o=p;return}if(n&&h===0&&p.type!==8){let m=!1;if(p.type===2){let _=p.value.toLowerCase().trim();m=_!=="false"&&_!=="f"}else m=!!p.value;a=m?2:1}return f.boxed?p:p.type===8?p.value.map(m=>m.map(_=>_.value)):p.value}});if(o)return o;if(this.context.call_index=s,r.return_type===1){let u=r.fn.apply(null,d);if(t)return u;if(Gi(u)){if(u.value.type==="address")return this.CellFunction2(u.value)();if(u.value.type==="range")return this.CellFunction4(u.value.start,u.value.end)}return u}return r.fn.apply(null,d)}:()=>zr()}ResolveStructuredReference(e){let t=this.data_model.ResolveStructuredReference(e,this.context.address);if(t){if(t.type==="address")return this.CellFunction2(t);if(t.type==="range")return()=>this.CellFunction4(t.start,t.end)}return()=>J()}ResolveDimensionedQuantity(){return e=>{let t=this.CalculateExpression(e.expression);return{type:9,value:{value:t.value,unit:e.unit.name}}}}UnaryExpression(e){switch(e.operator){case"+":return t=>this.CalculateExpression(t.operand);case"-":{let t=jr,r={type:3,value:0};return i=>{let s=this.CalculateExpression(i.operand);return s.type===8?{type:8,value:s.value.map(n=>n.map(a=>t(r,a)))}:t(r,s)}}default:return()=>(console.warn("unexpected unary operator:",e.operator),ke())}}RecycleArray(e,t,r){if(e[0].length<r){let i=e[0].length;for(let s of e)for(let n=i;n<r;n++)s[n]=s[n%i]}if(e.length<t){let i=e.length;for(let s=i;s<t;s++)e[s]=e[s%i].slice(0)}return e}ElementwiseBinaryExpression(e,t,r){let i=Math.max(t.value.length,r.value.length),s=Math.max(t.value[0].length,r.value[0].length),n=this.RecycleArray(t.value,i,s),a=this.RecycleArray(r.value,i,s),o=[];for(let l=0;l<i;l++){let d=[];for(let u=0;u<s;u++)d[u]=e(n[l][u],a[l][u]);o.push(d)}return{type:8,value:o}}BinaryExpression(e){let t=Ni(e.operator);return t?r=>{let i=this.CalculateExpression(r.left),s=this.CalculateExpression(r.right);return i.type===8?s.type===8?this.ElementwiseBinaryExpression(t,i,s):this.ElementwiseBinaryExpression(t,i,{type:8,value:[[s]]}):s.type===8?this.ElementwiseBinaryExpression(t,{type:8,value:[[i]]},s):t(i,s)}:()=>(console.info(`(unexpected binary operator: ${e.operator})`),ke())}Identifier(e){let t=e.name;if(t[0]==="#")return()=>J();let r=t.toUpperCase();switch(r){case"FALSE":case"F":return()=>({value:!1,type:4});case"TRUE":case"T":return()=>({value:!0,type:4});case"UNDEFINED":return()=>({value:void 0,type:0})}return()=>{let i=this.named_range_map[r];if(i)return i.count===1?this.CellFunction4(i.start,i.start):this.CellFunction4(i.start,i.end);let s=this.data_model.named_expressions.get(r);return s?this.CalculateExpression(s):zr()}}GroupExpression(e){return!e.elements||e.elements.length!==1?(console.warn("Can't handle group !== 1"),()=>ke()):t=>this.CalculateExpression(t.elements[0])}CalculateExpression(e,t=!1){if(e.user_data)return e.user_data(e);switch(e.type){case"call":{let r=this.data_model.macro_functions.get(e.name.toUpperCase());return r?(e.user_data=this.CallMacro(e,r))(e):(e.user_data=this.CallExpression(e,t))(e)}case"address":return(e.user_data=this.CellFunction2(e))();case"range":return(e.user_data=r=>this.CellFunction4(r.start,r.end))(e);case"binary":return(e.user_data=this.BinaryExpression(e))(e);case"unary":return(e.user_data=this.UnaryExpression(e))(e);case"identifier":return(e.user_data=this.Identifier(e))();case"missing":return(e.user_data=()=>({value:void 0,type:0}))();case"dimensioned":return(e.user_data=this.ResolveDimensionedQuantity())(e);case"literal":{let r={value:e.value,type:ce(e.value)};return(e.user_data=()=>r)()}case"group":return(e.user_data=this.GroupExpression(e))(e);case"complex":{let r={value:{real:e.real,imaginary:e.imaginary},type:7};return(e.user_data=()=>r)()}case"structured-reference":return(e.user_data=this.ResolveStructuredReference(e))();case"array":return(e.user_data=()=>({type:8,value:e.values.map(r=>(Array.isArray(r)?r:[r]).map(i=>({type:ce(i),value:i})))}))();default:return console.warn("Unhandled parse expr:",e),Bt()}}};var Fh=1e3*60*60*24;var Kt=c=>{let e=[],t=c.length,r=c[0].length;for(let i=0;i<r;i++){e[i]=[];for(let s=0;s<t;s++)e[i][s]=c[s][i]}return e};var ge=c=>{let e=[];for(let t of c)if(t.type===8)for(let r of t.value)e=e.concat(ge(r));else e.push(t);return e},O=c=>Array.isArray(c)?c.reduce((e,t)=>typeof t>"u"?e:Array.isArray(t)?e.concat(O(t)):t instanceof Float32Array||t instanceof Float64Array?e.concat(Array.from(t)):e.concat([t]),[]):[c];var N=c=>(e,...t)=>Array.isArray(e)?(console.info("AAA 71823"),{type:8,value:e.map(r=>r.map(i=>c(i,...t)))}):typeof e=="object"&&e&&e.type===8?{type:8,value:e.value.map(r=>r.map(i=>c(i,...t)))}:c(e,...t),Te=c=>(e,t,...r)=>{let i=!1,s=!1;return e&&typeof e=="object"&&e.type===8?(e=e.value,i=!0):i=Array.isArray(e),t&&typeof t=="object"&&t.type===8?(t=t.value,s=!0):s=Array.isArray(t),i?s?{type:8,value:e.map((n,a)=>n.map((o,l)=>c(o,t[a][l],...r)))}:{type:8,value:e.map(n=>n.map(a=>c(a,t,...r)))}:s?{type:8,value:t.map(n=>n.map(a=>c(e,a,...r)))}:c(e,t,...r)};var Yt=class{functions={};Register(...e){for(let t of e)for(let r of Object.keys(t)){if(/[^a-zA-Z0-9._]/.test(r))throw new Error("invalid function name (invalid character)");if(r.length>255)throw new Error("invalid function name (too long, > 255)");if(/^[^a-zA-Z]/.test(r))throw new Error("invalid function name (start with an ascii letter)");let i=r.toLowerCase();if(this.functions[i])throw new Error(`function name (${i}) is already in use`);let s=t[r];s.canonical_name=r,this.functions[i]=s}}Get(e){let t=e.toLowerCase();return this.functions[t]}List(){let e={};for(let t of Object.keys(this.functions))e[t]=this.functions[t];return e}Alias(e,t){let r=this.Get(t);if(!r)throw new Error(`referenced function ${t} does not exist`);this.Register({[e]:{...r}})}};var Qe=class{static UnpackValues(e){if(Array.isArray(e)){let t=e[0];return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?e.reduce((r,i)=>r.concat(this.UnpackValues(i)),[]):e.map(r=>isNaN(r)?void 0:r)}else{if(e instanceof Float32Array||e instanceof Float64Array)return Array.prototype.slice.call(e);if(e&&typeof e=="object"){let r=Object.keys(e).length;if(typeof e[0]<"u"&&typeof e[(r-1).toString()]<"u"){let i=[];for(let s=0;s<r;s++)i[s]=e[s.toString()];return i}}}return[]}static SparklineCommon(e,t){let r=[],i=t.text?.text||this.default_color,s=[i,i];return Array.isArray(e.calculated)&&(r=this.UnpackValues(e.calculated[0]),typeof e.calculated[1]=="string"&&(s[0]=e.calculated[1]),typeof e.calculated[2]=="string"&&(s[1]=e.calculated[2])),{values:r,colors:s}}static RenderLine(e,t,r,i,s){let{values:n,colors:a}=this.SparklineCommon(i,s),o=.05,l=.1,d=1;Array.isArray(i.calculated)&&typeof i.calculated[2]=="number"&&(d=i.calculated[2]);let u=0,h=0,f=-1;for(let p=0;p<n.length;p++){let m=n[p];typeof m=="number"&&(f>=0?(u=Math.min(u,m),h=Math.max(h,m)):(f=p,u=h=m))}if(u!==h){let p=e*(1-2*o)/(n.length-1),m=h-u,_=t*(1-2*l),b=t*l;r.strokeStyle=a[0],r.lineWidth=d,r.lineCap="round",r.lineJoin="round",r.beginPath();let g=0;for(let x=f;x<n.length;x++){let v=n[x];if(typeof v=="number"){let w=e*o+p*x,S=t-(v-u)*_/m-b;g===0?(r.moveTo(w,S),g=1):r.lineTo(w,S)}else g=0}r.stroke()}}static RenderColumn(e,t,r,i,s){let{values:n,colors:a}=this.SparklineCommon(i,s),o=3,l=2.5,d=0,u=0,h=!1;for(let f of n)typeof f=="number"&&(h?(d=Math.min(d,f),u=Math.max(u,f)):(h=!0,d=u=f));if(n.length){let f=(e-2*o-2)/(n.length-0),p=t-2*l,m=l;if(d!==u)if(d<0&&u>0){let _=u-d,b=m+u/_*p;for(let g=0;g<n.length;g++){let x=n[g];if(typeof x=="number"){let v=o+g*f,w=Math.abs(x)/_*p;if(x>=0){r.fillStyle=a[0];let S=b-w;r.fillRect(v+2,S,f-2,w)}else{r.fillStyle=a[1];let S=b;r.fillRect(v+2,S,f-2,w)}}}}else if(u>0){r.fillStyle=a[0];let _=u-d;for(let b=0;b<n.length;b++){let g=n[b];if(typeof g=="number"){let x=o+b*f,v=Math.max(1,(g-d)/_*p),w=t-m-v;r.fillRect(x+2,w,f-2,v)}}}else{r.fillStyle=a[1];let _=u-d;for(let b=0;b<n.length;b++){let g=n[b];if(typeof g=="number"){let x=o+b*f,v=Math.max(1,Math.abs(u-g)/_*p),w=m;r.fillRect(x+2,w,f-2,v)}}}}}};k(Qe,"default_color","#888");var Hi=c=>{let{x:e,y:t,width:r,height:i,cell:s}=c,n={},a=3,o=Math.round(16*(c.scale||1));if(s&&r&&i&&e&&t){let l={x:a,y:i-a-o};if(s.style){switch(s.style.vertical_align){case A.VerticalAlign.Top:l.y=a;break;case A.VerticalAlign.Middle:l.y=Math.round((i-o)/2);break}switch(s.style.horizontal_align){case A.HorizontalAlign.Right:l.x=Math.round(r-a-o);break;case A.HorizontalAlign.Center:l.x=Math.round((r-o)/2);break}}e>=l.x&&e<=l.x+o&&t>=l.y&&t<=l.y+o&&(n.value=`=Checkbox(${s.calculated?"FALSE":"TRUE"})`,n.block_selection=!0)}return n},$i=c=>{let{context:e,width:t,height:r,cell:i}=c,s=c.scale||1;e.lineJoin="round",e.lineCap="round";let n=3*s,a=16*s,o=n,l=r-n-a;if(i.style){switch(i.style.vertical_align){case A.VerticalAlign.Top:l=n;break;case A.VerticalAlign.Middle:l=(r-a)/2;break}switch(i.style.horizontal_align){case A.HorizontalAlign.Right:o=t-n-a;break;case A.HorizontalAlign.Center:o=(t-a)/2;break}}o=Math.floor(o)+.5,l=Math.floor(l)+.5;let d=Math.floor(o+a)+.5,u=Math.floor(l+a)+.5;if(i&&i.calculated){e.lineWidth=.5,e.fillStyle=e.strokeStyle,e.beginPath(),e.moveTo(o,l),e.lineTo(o+16*s,l),e.lineTo(o+16*s,l+16*s),e.lineTo(o,l+16*s),e.closePath(),e.moveTo(o+15*s,l+4*s);for(let h of[[13.59,2.58],[6,10.17],[2.41,6.59],[1,8],[6,13]])e.lineTo(o+h[0]*s,l+h[1]*s);e.closePath(),e.fill()}else e.lineWidth=1,e.lineJoin="round",e.beginPath(),e.moveTo(o,l),e.lineTo(d,l),e.lineTo(d,u),e.lineTo(o,u),e.closePath(),e.stroke();return{handled:!0}};var Bi=c=>{let e=.254829592,t=-.284496736,r=1.421413741,i=-1.453152027,s=1.061405429,n=.3275911;c=Math.abs(c);let a=1/(1+n*c);return 1-((((s*a+i)*a+r)*a+t)*a+e)*a*Math.exp(-1*c*c)},mn=Math.sqrt(2*Math.PI),ji=c=>{if(c===.5)return 0;let e=c<1&&c>.5?1-c:c,t=Math.sqrt(Math.log(1/Math.pow(e,2))),r=t-(2.515517+.802853*t+.010328*Math.pow(t,2))/(1+1.432788*t+.189269*Math.pow(t,2)+.001308*Math.pow(t,3));return c>.5?r:-r},Jr={Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:N(c=>{if(c.type===7){let e=me(c.value,{real:.5,imaginary:0});return fe(e)}else{if(c.type===0||!c.value)return{type:3,value:0};if(c.type===3&&c.value<0){let e=me({real:c.value,imaginary:0},{real:.5,imaginary:0});return{type:7,value:e}}else{let e=Math.sqrt(c.value);return isNaN(e)?L():{type:3,value:e}}}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Te((c,e)=>{if(c.type===3&&e.type===3&&(c.value>=0||e.value===0||Math.abs(e.value)>=1)){let s=Math.pow(c.value,e.value);return isNaN(s)?L():{type:3,value:s}}let t=c.type===7?c.value:{real:c.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=me(t,r);return fe(i)})}},et={Int:{fn:c=>({type:3,value:Math.floor(c)})},Rand:{volatile:!0,fn:()=>({type:3,value:Math.random()})},RandBetween:{arguments:[{name:"min"},{name:"max"}],volatile:!0,fn:(c=0,e=1)=>{if(c>e){let t=c;c=e,e=t}return{type:3,value:Math.floor(Math.random()*(e+1-c)+c)}}},Sum:{description:"Adds arguments and ranges",arguments:[{boxed:!0,name:"values or ranges"}],fn:(...c)=>{let e={real:0,imaginary:0},t=ge(c);for(let r of t)switch(r.type){case 3:e.real+=r.value;break;case 4:e.real+=r.value?1:0;break;case 7:e.real+=r.value.real,e.imaginary+=r.value.imaginary;break;case 6:return r}return fe(e)}},Now:{description:"Returns current time",volatile:!0,fn:()=>({type:3,value:Ke(new Date().getTime())})},Date:{description:"Constructs a Lotus date from parts",arguments:[{name:"year"},{name:"month"},{name:"day"}],fn:(c,e,t)=>{let r=new Date;return r.setMilliseconds(0),r.setSeconds(0),r.setMinutes(0),r.setHours(0),c<0||c>1e4?W():(c<1899&&(c+=1900),r.setFullYear(c),e<1||e>12?W():(r.setMonth(e-1),t<1||t>31?W():(r.setDate(t),{type:3,value:Ke(r.getTime())})))}},Today:{description:"Returns current day",volatile:!0,fn:()=>{let c=new Date;return c.setMilliseconds(0),c.setSeconds(0),c.setMinutes(0),c.setHours(12),{type:3,value:Ke(c.getTime())}}},IfError:{description:"Returns the original value, or the alternate value if the original value contains an error",arguments:[{name:"original value",allow_error:!0,boxed:!0},{name:"alternate value"}],fn:(c,e=0)=>c&&c.type===6?{value:e,type:ce(e)}:c},IsError:{description:"Checks if another cell contains an error",arguments:[{name:"reference",allow_error:!0,boxed:!0}],fn:(...c)=>{let e=ge(c);for(let t of e)if(t.type===6)return{type:4,value:!0};return{type:4,value:!1}}},Cell:{description:"Returns data about a cell",arguments:[{name:"type",description:"Type of data to return"},{name:"reference",description:"Cell reference",metadata:!0}],fn:Te((c,e)=>{if(!Xt(e))return J();if(c)switch(c.toString().toLowerCase()){case"format":return e.value.format?{type:2,value:e.value.format}:J();case"address":return{type:2,value:e.value.address.label.replace(/\$/g,"")}}return{type:6,value:Mi.error}})},Year:{description:"Returns year from date",arguments:[{name:"date"}],fn:c=>q(new Date(Ne(c)).getUTCFullYear())},Month:{description:"Returns month from date",arguments:[{name:"date"}],fn:c=>q(new Date(Ne(c)).getUTCMonth()+1)},Day:{description:"Returns day of month from date",arguments:[{name:"date"}],fn:c=>q(new Date(Ne(c)).getUTCDate())},Radians:{description:"Converts degrees to radians",arguments:[{name:"Degrees",description:"Angle in degrees"}],fn:N(c=>q(c*Math.PI/180))},Degrees:{description:"Converts radians to degrees",arguments:[{name:"Radians",description:"Angle in radians"}],fn:N(c=>q(c/Math.PI*180))},CountA:{description:"Counts cells that are not empty",fn:(...c)=>q(O(c).reduce((e,t)=>typeof t>"u"?e:e+1,0))},Count:{description:"Counts cells that contain numbers",fn:(...c)=>q(O(c).reduce((e,t)=>typeof t=="number"?e+1:e,0))},Or:{fn:(...c)=>{let e=!1;c=O(c);for(let t of c)e=e||!!t;return q(e)}},And:{fn:(...c)=>{let e=!0;c=O(c);for(let t of c)e=e&&!!t;return q(e)}},Not:{fn:(...c)=>c.length===0?W():c.length===1?q(!c[0]):q(!0)},If:{arguments:[{name:"test value",boxed:!0},{name:"value if true",boxed:!0,allow_error:!0},{name:"value if false",boxed:!0,allow_error:!0}],fn:(c,e={type:4,value:!0},t={type:4,value:!1})=>{let r=e.type===8,i=t.type===8;return c.type===8?{type:8,value:c.value.map((n,a)=>n.map((o,l)=>(o.type===2?o.value.toLowerCase()!=="false"&&o.value.toLowerCase()!=="f":!!o.value)?r?e.value[a][l]:e:i?t.value[a][l]:t))}:(c.type===2?c.value.toLowerCase()!=="false"&&c.value.toLowerCase()!=="f":!!c.value)?e:t}},Fact:{description:"Returns the factorial of a number",arguments:[{name:"number"}],fn:N(c=>{c=Math.floor(c);let e=1;for(;c>1;)e*=c,c--;return{type:3,value:e}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Te((c,e)=>{if(c.type===7||e.type===7){let t=c.type===7?c.value:{real:c.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=me(t,r);return fe(i)}else{let t=Math.pow(c.value,e.value);return isNaN(t)?L():{type:3,value:t}}})},Mod:{fn:Te((c,e)=>e?q(c%e):pe())},Sort:{arguments:[{name:"values"}],fn:(...c)=>(c=O(c),c.every(e=>typeof e=="number")?c.sort((e,t)=>e-t):c.sort(),{type:8,value:[c.map(e=>q(e))]})},Transpose:{description:"Returns transpose of input matrix",arguments:[{name:"matrix",boxed:!0}],fn:c=>c.type===8?{type:8,value:Kt(c.value)}:c},Max:{fn:(...c)=>({type:3,value:Math.max.apply(0,O(c).filter(e=>typeof e=="number"))})},Min:{fn:(...c)=>({type:3,value:Math.min.apply(0,O(c).filter(e=>typeof e=="number"))})},SumProduct:{description:"Returns the sum of pairwise products of two or more ranges",fn:(...c)=>{let e=c.map(i=>O(i)),t=Math.max.apply(0,e.map(i=>i.length)),r=0;for(let i=0;i<t;i++)r+=e.reduce((s,n)=>s*(n[i]||0),1);return{type:3,value:r}}},VLookup:{fn:(c,e,t,r=!0)=>{if(t=Math.max(0,t-1),r){let i=Math.abs(c-e[0][0]),s=e[t][0];for(let n=1;n<e[0].length;n++){let a=Math.abs(e[0][n]-c);a<i&&(i=a,s=e[t][n])}return q(s)}else{for(let i=1;i<e[0].length;i++)if(e[0][i]==c)return e[t][i];return Re()}}},Product:{arguments:[{boxed:!0}],fn:(...c)=>{let e={real:1,imaginary:0};c=ge(c);for(let t of c)t.type===7?e=ue(e,t.value):t.type===3&&(e.real*=t.value,e.imaginary*=t.value);return fe(e)}},Log:{fn:Te((c,e=10)=>({type:3,value:Math.log(c)/Math.log(e)}))},Log10:{fn:N(c=>({type:3,value:Math.log(c)/Math.log(10)}))},Ln:{fn:N(c=>({type:3,value:Math.log(c)}))},Round:{fn:Te((c,e=0)=>{let t=Math.pow(10,e);return{type:3,value:Math.round(t*c)/t}})},RoundDown:{fn:Te((c,e=0)=>{let t=Math.pow(10,e),r=c>=0;return{type:3,value:r?Math.floor(t*c)/t:Math.ceil(t*c)/t}})},Reverse:{arguments:[{boxed:!0}],fn:c=>c.type===8?(c.value.length===1?c.value[0].reverse():c.value.reverse(),c):{type:2,value:c.value.toString().split("").reverse().join("")}},Exp:{arguments:[{boxed:!0}],fn:N(c=>{if(c.type===7){let e=Gr(c.value);return fe(e)}return{type:3,value:Math.exp(c.value||0)}})},Abs:{arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:3,value:Math.sqrt(c.value.real*c.value.real+c.value.imaginary*c.value.imaginary)}:{type:3,value:Math.abs(c.value||0)})},Simplify:{arguments:[{name:"value"},{name:"significant digits"}],fn:Te((c,e=2)=>{if(e=e||2,c===0)return{type:3,value:c};let t=c<0?-1:1;c*=t;let r=Math.pow(10,Math.floor(Math.log10(c))+1-e);return{type:3,value:Math.round(c/r)*r*t}})},Erf:{fn:c=>({type:3,value:Bi(c)})},NormsInv:{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"}],fn:c=>({type:3,value:ji(c)})},"Norm.Inv":{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"},{name:"mean",default:0},{name:"standard deviation",default:1}],xlfn:!0,fn:(c,e=0,t=1)=>({type:3,value:ji(c)*t+e})},"Norm.Dist":{description:"Cumulative normal distribution",arguments:[{name:"value"},{name:"mean",default:0},{name:"standard deviation",default:1},{name:"cumulative",default:!0}],xlfn:!0,fn:(c,e=0,t=1,r=!0)=>{let i=0;return r?i=.5*(1+(c<e?-1:1)*Bi(Math.abs(c-e)/(t*Math.sqrt(2)))):i=Math.exp(-1/2*Math.pow((c-e)/t,2))/(t*mn),{type:3,value:i}}},Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:N(c=>{if(c.type===7){let e=me(c.value,{real:.5,imaginary:0});return fe(e)}else{if(c.type===0||!c.value)return{type:3,value:0};{let e=Math.sqrt(c.value);return isNaN(e)?L():{type:3,value:e}}}})},HexToDec:{arguments:[{description:"hexadecimal string"}],fn:c=>({type:3,value:parseInt(c,16)})},DecToHex:{arguments:[{description:"number"}],fn:c=>({type:2,value:c.toString(16)})},Checkbox:{arguments:[{name:"checked"}],click:Hi,render:$i,fn:c=>({value:!!c,type:4})},"Sparkline.Column":{arguments:[{name:"data"},{name:"color"},{name:"negative color"}],render:c=>(Qe.RenderColumn(c.width,c.height,c.context,c.cell,c.style),{handled:!0}),fn:(...c)=>({type:5,value:c,key:"sparkline-data"})},"Sparkline.Line":{arguments:[{name:"data"},{name:"color"},{name:"line width"}],render:c=>(Qe.RenderLine(c.width,c.height,c.context,c.cell,c.style),{handled:!0}),fn:(...c)=>({type:5,value:c,key:"sparkline-data"})}},Ji={};for(let c of Object.keys(et))Ji[c.toLowerCase()]=c;var _n=["pow"],Wi={};for(let c of _n)Wi[c.toLowerCase()]=c;for(let c of Object.getOwnPropertyNames(Math)){let e=c.toLowerCase();if(Ji[e]||Wi[e])continue;let t=Object.getOwnPropertyDescriptor(Math,c);if(!t)continue;let r=t.value,i=typeof r;switch(i){case"number":et[c]={fn:()=>({type:3,value:r}),category:["Math Functions"]};break;case"function":et[c]={fn:(...s)=>q(r(...s)),category:["Math Functions"]};break;default:console.info("unexpected type:",i,c);break}}Math.log10||(Math.log10=c=>Math.log(c)/Math.log(10));var gt=(c,e,t=0,r=0,i=0)=>i?-(t*(c/(1-Math.pow(1+c,-e))))/(1+c)-r*(1/((1+c)*((Math.pow(1+c,e)-1)/c))):-(t*c*Math.pow(1+c,e)+r*c)/(Math.pow(1+c,e)-1),Xi=(c,e,t,r=0,i=0)=>i?(1+c)*-t/c*(Math.pow(1+c,e)-1)-r*Math.pow(1+c,e):-t/c*(Math.pow(1+c,e)-1)-r*Math.pow(1+c,e),Wr=(c,e,t,r=0,i=0,s=0)=>{if(e<1)return NaN;if(e===1&&s)return 0;let n=gt(c,t,r,i,s),a=Xi(c,e-1,n,r,s)*c;return s?a/(1+c):a},qi=(c,e,t,r=0,i=0,s=0)=>gt(c,t,r,i,s)-Wr(c,e,t,r,i,s),Ki={NPV:{description:"Returns the present value of a series of future cashflows",arguments:[{name:"Rate"},{name:"Cashflow"}],fn:(c=0,...e)=>{let t=0,r=O(e);for(let i=0;i<r.length;i++){let s=r[i];typeof s=="number"&&(t+=Math.pow(1+c,-(i+1))*s)}return{type:3,value:t}}},IRR:{description:"Calculates the internal rate of return of a series of cashflows",arguments:[{name:"Cashflows"},{name:"Guess",default:.1}],fn:(c,e=.1)=>{let t=O(c).map(s=>typeof s=="number"?s:0),r=.1,i=[{found:!1,value:0},{found:!1,value:0}];for(let s=0;s<50;s++){let n=0;for(let a=0;a<t.length;a++)n+=Math.pow(1+e,-(a+1))*t[a];if(Math.abs(n)<=.00125)return{type:3,value:e};if(n>0){if(i[0].value=i[0].found?Math.max(i[0].value,e):e,i[0].found=!0,!i[1].found){e+=r;continue}}else if(i[1].value=i[1].found?Math.min(i[1].value,e):e,i[1].found=!0,!i[0].found){e-=r;continue}e=i[0].value+(i[1].value-i[0].value)/2}return{type:6,value:"NUM"}}},CUMPRINC:{description:"Returns cumulative principal paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(c,e,t,r,i,s=0)=>{let n=0;for(let a=r;a<=i;a++)n+=qi(c,a,e,t,0,s);return{type:3,value:n}}},CUMIPMT:{description:"Returns cumulative interest paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(c,e,t,r,i,s=0)=>{let n=0;for(let a=r;a<=i;a++)n+=Wr(c,a,e,t,0,s);return{type:3,value:n}}},IPMT:{description:"Returns the interest portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0,s=0)=>({type:3,value:Wr(c,e,t,r,i,s)})},PPMT:{description:"Returns the principal portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0,s=0)=>({type:3,value:qi(c,e,t,r,i,s)})},Rate:{description:"Returns the interest rate of a loan",arguments:[{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t=0,r=0,i=0)=>{let s=.25,n=[-1,1],a=32,o=1e-6;for(let l=0;l<a;l++){let d=gt(s,c,t,r,i);if(Math.abs(d-e)<=o)return{type:3,value:s};let u=gt(n[1],c,t,r,i);e>=d&&e<=u||e>=u&&e<=d?n[0]=s:n[1]=s,s=n[0]+(n[1]-n[0])/2}return{type:3,value:s}}},FV:{description:"Returns the future value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0)=>({type:3,value:Xi(c,e,t,r,i)})},PV:{description:"Returns the present value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0)=>i?(t+=r*(1/((1+c)*((Math.pow(1+c,e)-1)/c))),{type:3,value:-(t+t/c*(1-Math.pow(1+c,-(e-1))))}):{type:3,value:-(r+t/c*(Math.pow(1+c,e)-1))/Math.pow(1+c,e)}},NPER:{description:"Returns the number of periods of an investment",arguments:[{name:"Rate"},{name:"Payment"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t=0,r=0,i=0)=>i?{type:3,value:1+(-Math.log(1+c*(1-t/-e))+Math.log(1+r*c/(-e*(1+c))))/Math.log(1+c)}:{type:3,value:(Math.log(Math.pow(1-t*c/-e,-1))+Math.log(1+r*c/-e))/Math.log(1+c)}},PMT:{description:"Returns the periodic payment of a loan",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(c,e,t,r=0,i=0)=>({type:3,value:gt(c,e,t,r,i)})}};var bn=c=>{let e=[],t=c.length,r="[\\^$.|?*+()";for(let i=0;i<t;i++){let s=c[i];switch(s){case"*":e.push(".","*");break;case"?":e.push(".");break;case"~":s=c[++i]||"";default:for(let n=0;n<r.length;n++)if(s===r[n]){e.push("\\");break}e.push(s);break}}return e.join("")},Yi={Char:{arguments:[{name:"number"}],fn:c=>({type:2,value:String.fromCodePoint(c||32)}),category:["text"]},Code:{arguments:[{name:"string"}],fn:c=>({type:3,value:c.codePointAt(0)||0}),category:["text"]},Value:{arguments:[{name:"text"}],fn:c=>{let e=ye.TryParse(c);return e.type===3?{type:3,value:e.value}:W()},category:["text"]},Text:{arguments:[{name:"value"},{name:"number format"}],fn:(c,e="0.00####")=>({type:2,value:D.Get(e).Format(c||0)}),category:["text"]},Left:{arguments:[{name:"string"},{name:"count"}],fn:(c,e=1)=>({type:2,value:c.substr(0,e)}),category:["text"]},Right:{arguments:[{name:"string"},{name:"count"}],fn:(c,e=1)=>({type:2,value:c.slice(-e)}),category:["text"]},Mid:{arguments:[{name:"string"},{name:"left"},{name:"count"}],fn:(c,e=0,t=1)=>({type:2,value:c.substr(Math.max(0,e-1),t)}),category:["text"]},Search:{description:"Find a string (needle) in another string (haystack). Case-insensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(c,e,t=1)=>{if(t>=1){if(!c)return{type:3,value:t};let r=bn(c),i=new RegExp(r,"i").exec(e.substr(t-1));if(i)return{type:3,value:i.index+t}}return L()}},Find:{description:"Find a string (needle) in another string (haystack). Case-sensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(c,e,t=1)=>{if(t>=1){if(!c)return{type:3,value:t};let r=new RegExp(c).exec(e.substr(t-1));if(r)return{type:3,value:r.index+t}}return L()}},Concat:{description:"Pastes strings together",fn:(...c)=>{let t=O(c).map(r=>{let i=r?.toString()||"";return typeof r=="number"&&T.decimal_separator===","?i.replace(/\./,","):i}).join("");return{type:2,value:t}}}},qr={Concatenate:"Concat"};var Zi={IsBlank:{description:"Returns true if the reference is blank",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:!c?.value||typeof c.value.value>"u"}))},IsNumber:{description:"Returns true if the reference is a number",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&typeof c.value.value=="number"}))},IsLogical:{description:"Returns true if the reference is a logical TRUE or FALSE",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&typeof c.value.value=="boolean"}))},IsText:{description:"Returns true if the reference is text",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&typeof c.value.value=="string"}))}};var Ue=(c,e=!1)=>{let t=c.length,r=0,i=0;for(let s=0;s<t;s++)r+=c[s];r/=t;for(let s=0;s<t;s++){let n=c[s]-r;i+=n*n}return e?i/(t-1):i/t},Qi={"StDev.P":{description:"Returns the standard deviation of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Math.sqrt(Ue(O(c),!1))})},"StDev.S":{description:"Returns the standard deviation of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Math.sqrt(Ue(O(c),!0))})},"Var.P":{description:"Returns the variance of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Ue(O(c),!1)})},"Var.S":{description:"Returns the variance of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...c)=>({type:3,value:Ue(O(c),!0)})},Covar:{description:"Returns the covariance between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(c,e)=>{if(!Array.isArray(c)||!Array.isArray(e))return L();if(!Array.isArray(c[0])||!Array.isArray(e[0]))return L();if(c.length!==e.length)return W();let t=0,r=0,i={x:0,y:0},s={x:[],y:[]};for(let n=0;n<c.length;n++){if(!c[n]||!e[n])continue;if(c[n].length!==e[n].length)return W();let a=c[n].length;r+=a;for(let o=0;o<a;o++)i.x+=c[n][o]||0,i.y+=e[n][o]||0,s.x.push(c[n][o]||0),s.y.push(e[n][o]||0)}if(r===0)return Re();i.x/=r,i.y/=r;for(let n=0;n<r;n++)t+=(s.x[n]-i.x)*(s.y[n]-i.y);return{type:3,value:t/r}}},Correl:{description:"Returns the correlation between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(c,e)=>{if(!Array.isArray(c)||!Array.isArray(e))return L();if(!Array.isArray(c[0])||!Array.isArray(e[0]))return L();let t=0,r=0,i=0,s=0,n=0,a=0,o=0;for(let l=0;l<c.length;l++){if(!c[l]||!e[l])continue;let d=c[l].length;for(let u=0;u<d;u++){let h=Number(c[l][u]),f=Number(e[l][u]);isNaN(h)||isNaN(f)||(r+=h*f,i+=h,s+=f,n+=h*h,a+=f*f,o++)}}return t=o*r-i*s,t&&(t/=Math.sqrt((o*n-i*i)*(o*a-s*s))),{type:3,value:t}}},GeoMean:{description:"Returns the geometric mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...c)=>{c=ge(c);let e=0,t={real:1,imaginary:0},r=!1,i=!1;for(let s of c)s.type===7?(r=!0,t=ue(t,s.value),e++):s.type===3&&(s.value<0&&(i=!0),e++,t.real*=s.value,t.imaginary*=s.value);if(r){let s=me(t,{real:1/e,imaginary:0});return s.imaginary?{type:7,value:s}:{type:3,value:s.real}}else return i?L():{type:3,value:Math.pow(t.real,1/e)}}},Average:{description:"Returns the arithmetic mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...c)=>{c=ge(c);let e={real:0,imaginary:0},t=0;for(let r of c){if(r.type===6)return r;r.type===3&&(e.real+=r.value,t++),r.type===7&&(e.real+=r.value.real,e.imaginary+=r.value.imaginary,t++)}return e.real/=t,e.imaginary/=t,e.imaginary?{type:7,value:e}:{type:3,value:e.real}}},Percentile:{description:"Returns the kth percentile value from the range of data",arguments:[{name:"range"},{name:"percentile"}],fn:(c,e)=>{let t=O(c).filter(o=>typeof o=="number");t.sort((o,l)=>o-l);let r=t.length,i=Math.pow(10,8),s=Math.round((1+(r-1)*e)*i)/i,n=Math.floor(s),a=Math.ceil(s);return{type:3,value:(t[n-1]+t[a-1])/2}}},Median:{description:"Returns the median value of the range of data",arguments:[{name:"range"}],fn:(...c)=>{let e=O(c).filter(n=>typeof n=="number");e.sort((n,a)=>n-a);let r=1+(e.length-1)*.5,i=Math.floor(r),s=Math.ceil(r);return{type:3,value:(e[i-1]+e[s-1])/2}}}},Xr={Mean:"Average",StDev:"StDev.S",Var:"Var.S"};var es={IsComplex:{description:"Returns true if the reference is a complex number",arguments:[{name:"Reference",metadata:!0}],fn:N(c=>({type:4,value:c?.value&&ve(c.value.value)}))},Real:{description:"Returns the real part of a complex number",arguments:[{boxed:!0}],fn:N(c=>c.type===3?{...c}:c.type===7?{type:3,value:c.value.real||0}:c.type===0||c.type===2&&c.value===""?{type:3,value:0}:L())},Imaginary:{description:"Returns the imaginary part of a complex number (as real)",arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:3,value:c.value.imaginary||0}:c.type===3||c.type===0||c.type===2&&c.value===""?{type:3,value:0}:L())},Conjugate:{description:"Returns the conjugate of a complex number",arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:7,value:{real:c.value.real,imaginary:-c.value.imaginary}}:c.type===3||c.type===0||!c.value?{type:3,value:c.value||0}:L())},Arg:{description:"Returns the principal argument of a complex number (in radians)",arguments:[{boxed:!0}],fn:N(c=>c.type===7?{type:3,value:Math.atan2(c.value.imaginary,c.value.real)}:c.type===3||c.type===0||c.type===2&&c.value===""?{type:3,value:Math.atan2(0,c.value||0)}:L())},Rectangular:{description:"Converts a complex number in polar form to rectangular form",arguments:[{name:"r"},{name:"\u03B8 in radians"}],fn:(c=0,e=0)=>({type:7,value:{real:c*Math.cos(e),imaginary:c*Math.sin(e)}})},Complex:{description:"Ensures that the given value will be treated as a complex number",arguments:[{boxed:!0}],fn:N(c=>c.type===7?c:c.type===3||c.type===0||!c.value?{type:7,value:{imaginary:0,real:c.value||0}}:L())},ComplexLog:{description:"Returns the principal value Log(z) of a complex number z",arguments:[{boxed:!0}],fn:N(c=>{if(c.type===3){if(!c.value)return L();c={type:7,value:{real:c.value,imaginary:0}}}else if(c.type===0||c.type===2&&c.value==="")return L();if(c.type===7){let e=Jt(c.value),t={real:Math.log(e.r),imaginary:e.theta};return t.imaginary?{type:7,value:t}:{type:3,value:t.real}}return L()})}};var Zt=c=>{let e=[];c.type===8?e=c.value:e=[[c.value]];let t=e.length,r=t?e[0].length:0,i=[];if(!t||!r)return{m:t,n:r,array:i};for(let s=0;s<t;s++){let n=[];for(let a=0;a<r;a++){let o=e[s][a];if(o.type===7)n.push({...o.value});else if(o.type===3)n.push({real:o.value,imaginary:0});else if(o.type===0||o.value==="")n.push({real:0,imaginary:0});else return{m:t,n:r,error:!0,array:[]}}i.push(n)}return{m:t,n:r,array:i}},ts={MDeterm:{description:"Returns the determinant of a matrix",arguments:[{name:"matrix",boxed:!0}],fn:c=>{let e=Zt(c);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return L();let t=Wt(e);return t?fe(t):L()}},MInverse:{description:"Returns the inverse matrix",arguments:[{name:"matrix",boxed:!0}],fn:c=>{let e=Zt(c);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return L();let t=Wt(e);if(t&&t.real===0&&t?.imaginary===0)return L();let r=Ii(e);return r?{type:8,value:r.map(i=>i.map(s=>fe(s)))}:L()}},MMult:{description:"Returns the dot product of A and B",arguments:[{name:"A",boxed:!0},{name:"B",boxed:!0}],fn:(c,e)=>{let t=Zt(c),r=Zt(e);if(!t.array||t.error||!r.array||r.error)return L();if(t.m!==r.n)return L();let i=Di(r,t);return{type:8,value:i.map(s=>s.map(n=>fe(n)))}}}};var Kr=class extends ze{state_id=0;type=Kr.type;color=2;state_representation="";UpdateState(){let e=JSON.stringify(Array.from(this.edges_in).map(t=>t.result));e!==this.state_representation&&(this.state_representation=e,this.state_id++)}Calculate(e){if(this.dirty){for(let t of this.edges_in)if(t.dirty)return;this.UpdateState(),this.dirty=!1}}AddDependent(e){throw new Error("leaf vertex cannot have dependents")}},tt=Kr;k(tt,"type","leaf-vertex");var yn=c=>{if(typeof c=="string")switch(c=c.toUpperCase(),c){case"AVERAGE":case"MEAN":c=101;break;case"COUNT":c=102;break;case"COUNTA":c=103;break;case"MAX":c=104;break;case"MIN":c=105;break;case"PRODUCT":c=106;break;case"STDEV":c=107;break;case"STDEVP":c=108;break;case"SUM":c=109;break;case"VAR":c=110;break;case"VARP":c=111;break;default:c=0;break}return c},gn={complex_numbers:"off"},Qt=class extends jt{constructor(t,r={}){super();this.model=t;if({...gn,...r}.complex_numbers==="on"){for(let s of Object.keys(Jr))et[s]=Jr[s];Pi()}this.UpdateLocale(),this.library.Register(et,Yi,Qi,Ki,Zi,es,ts);for(let s of Object.keys(Xr))this.library.Alias(s,Xr[s]);for(let s of Object.keys(qr))this.library.Alias(s,qr[s]);this.library.Register({Subtotal:{arguments:[{name:"type"},{name:"range",metadata:!0}],fn:(s,...n)=>{if(s=yn(s),s>100&&(s-=100),s<1||s>11)return W();let a=ge(n),o=[],l=0,d=0,u;for(let f of a){let p=f.value?.address;if(!p)return J();if(!u||u.id!==p.sheet_id){if(!p.sheet_id)return console.warn("invalid reference in metadata"),J();if(u=this.model.sheets.Find(p.sheet_id),!u)return console.warn("invalid sheet in metadata"),J()}if(!u.GetRowHeight(p.row))continue;let _=f.value?.value;typeof _>"u"||(l++,typeof _=="number"&&(d+=_,o.push(_)))}let h=0;switch(s){case 1:if(o.length===0)return pe();h=d/o.length;break;case 2:h=o.length;break;case 3:h=l;break;case 4:if(o.length===0)return L();h=Math.max.apply(0,o);break;case 5:if(o.length===0)return L();h=Math.min.apply(0,o);break;case 6:if(o.length===0)return L();h=1;for(let f of o)h*=f;break;case 7:if(o.length<2)return pe();h=Math.sqrt(Ue(o,!0));break;case 8:if(o.length===0)return pe();h=Math.sqrt(Ue(o,!1));break;case 9:h=d;break;case 10:if(o.length<2)return pe();h=Ue(o,!0);break;case 11:if(o.length===0)return pe();h=Ue(o,!1);break}return{type:3,value:h}}},CountIf:{arguments:[{name:"range"},{name:"criteria"}],fn:(s,n)=>{let a=O(s);typeof n!="string"?n="="+(n||0).toString():(n=n.trim(),/^[=<>]/.test(n)||(n="="+n));let o=this.parser.Parse("{}"+n),l=o.expression;if(o.error||!l)return ke();if(l.type!=="binary")return ke();if(l.left.type!=="array")return ke();l.left.values=[a];let d=this.CalculateExpression(l);if(d.type===8){let u=0;for(let h of d.value)for(let f of h)f.value&&u++;return{type:3,value:u}}return d}},Offset:{arguments:[{name:"reference",description:"Base reference",metadata:!0},{name:"rows",description:"number of rows to offset"},{name:"columns",description:"number of columns to offset"},{name:"height"},{name:"width"}],return_type:1,volatile:!0,fn:((s,n=0,a=0,o,l)=>{if(!s)return W();if(s.type===8){let u=typeof o=="number"?n+o:void 0,h=typeof l=="number"?a+l:void 0;return{type:8,value:s.value.slice(n,u).map(p=>p.slice(a,h))}}if(!Xt(s))return console.info("e2",{reference:s}),J();let d=this.DynamicDependencies(s.value.address,this.expression_calculator.context.address,!0,n,a,l,o);if(!d)return console.info("e1",{check_result:d}),J();if(d.dirty){let u=this.GetVertex(this.expression_calculator.context.address,!0);return u.short_circuit=!0,{type:0,value:void 0}}if(d.area){let u={type:"address",...d.area.start,label:"",position:0,id:0},h={type:"address",...d.area.end,label:"",position:0,id:0},f=d.area.count===1?u:{type:"range",start:u,end:h,label:"",position:0,id:0};return{type:5,value:f}}return L()}).bind(this)},Indirect:{arguments:[{name:"reference",description:"Cell reference (string)"}],return_type:1,volatile:!0,fn:(s=>{if(!s||typeof s!="string")return W();let n=this.parser.Parse(s);if(n.error||!n.expression||n.expression.type!=="address"&&n.expression.type!=="range")return J();let a=this.DynamicDependencies(n.expression,this.expression_calculator.context.address);if(!a)return J();if(a.dirty){let o=this.GetVertex(this.expression_calculator.context.address,!0);return o.short_circuit=!0,{type:0,value:void 0}}return{type:5,value:n.expression}}).bind(this)},Match:{arguments:[{name:"value",boxed:!0},{name:"range",boxed:!0},{name:"type"}],fn:(s,n,a=0)=>{if(a)return console.warn("inexact match not supported",{value:s,range:n,type:a}),Re();if(n.type===8){if(n.value.length===1){let o=n.value[0];for(let l=0;l<o.length;l++)if(s.type==o[l].type&&s.value===o[l].value)return{type:3,value:l+1}}else for(let o=0;o<n.value.length;o++){let l=n.value[o];if(l.length!==1)return Re();if(s.type==l[0].type&&s.value===l[0].value)return{type:3,value:o+1}}return Re()}else return s.type===n.type&&s.value===n.value?{type:3,value:1}:Re();return W()}},Index:{arguments:[{name:"range",boxed:!0},{name:"row"},{name:"column"}],volatile:!1,fn:(s,n,a)=>{if(s&&s.type!==8&&(s={type:8,value:[[s]]}),n&&a){let o=s.value[a-1];if(o){let l=o[n-1];if(l)return l}}else if(n){let o=[];for(let l of s.value){if(!l[n-1])return W();o.push([l[n-1]])}return{type:8,value:o}}else if(a){let o=s.value[a-1];if(o)return{type:8,value:[o]}}return W()}},Rows:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:s=>{if(!s)return W();if(Array.isArray(s)){let n=s[0];return Array.isArray(n)?{type:3,value:n.length}:L()}return{type:3,value:1}}},Columns:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:s=>s?Array.isArray(s)?{type:3,value:s.length}:{type:3,value:1}:W()},IsFormula:{description:"Returns true if the reference is a formula",arguments:[{name:"Reference",metadata:!0}],fn:N(s=>{let n=this.model.sheets.Find(s?.value?.address?.sheet_id||0);if(n){let a=n.cells.GetCell(s.value.address,!1);return{type:4,value:a?.type===1}}return{type:4,value:!1}})}})}parser=new qe;library=new Yt;registered_libraries={};expression_calculator=new qt(this.library,this.parser);full_rebuild_required=!1;ExportCalculatedValues(){let t={};for(let r of this.model.sheets.list){let i=r.cells.toJSON({calculated_value:!0}).data;t[r.id]=i.filter(s=>s.calculated!==void 0)}return t}ApplyCalculatedValues(t){for(let r of this.model.sheets.list){let i=t[r.id];if(!i)console.info("mismatch",r.id);else for(let s of i)r.cells.data[s.row][s.column].SetCalculatedValue(s.calculated)}}SpreadCallback(t,r){if(!t.address||!t.address.sheet_id)throw new Error("spread callback called without sheet id");let i=this.model.sheets.Find(t.address.sheet_id)?.cells;if(!i)throw new Error("spread callback called without cells");if(!t||!t.reference)return;let s=t.reference.area;if(s){let n=s.rows,a=s.columns;if(r.type===8){let o=Kt(r.value);for(let l=0;l<n;l++)if(o[l]){let d=0;for(;d<a&&d<o[l].length;d++)i.data[l+s.start.row][d+s.start.column].SetCalculatedValue(o[l][d].value,o[l][d].type);for(;d<a;d++)i.data[l+s.start.row][d+s.start.column].SetCalculatedValue(void 0,0)}else for(let d=0;d<a;d++)i.data[l+s.start.row][d+s.start.column].SetCalculatedValue(void 0,0)}else for(let o=0;o<n;o++)for(let l=0;l<a;l++)i.data[o+s.start.row][l+s.start.column].SetCalculatedValue(r.value,r.type)}}CalculationCallback(t){if(!t.address)throw new Error("vertex missing address");return t.expression_error?{value:Bt()}:this.expression_calculator.Calculate(t.expression,t.address)}DynamicDependencies(t,r,i=!1,s=0,n=0,a=1,o=1){let l=this.ResolveExpressionAddress(t,r);if(!l)return;let d=!1,u;if(t.type==="address"||t.type==="range"){let f=t.type==="range"?t.start:t;f.sheet_id?u=this.model.sheets.Find(f.sheet_id):f.sheet&&(u=this.model.sheets.Find(f.sheet))}if(!u&&r?.sheet_id&&(u=this.model.sheets.Find(r.sheet_id)),!u)throw new Error("missing sheet in dynamic dependencies [b21]");l=u.RealArea(l);let h=l.start.sheet_id;i&&(l=new y({column:l.start.column+n,row:l.start.row+s,sheet_id:l.start.sheet_id},{column:l.start.column+n+a-1,row:l.start.row+s+o-1,sheet_id:l.end.sheet_id}));for(let f=l.start.row;f<=l.end.row;f++)for(let p=l.start.column;p<=l.end.column;p++){let m=this.GetVertex({row:f,column:p,sheet_id:h},!1);m&&m.dirty&&(this.AddEdge({row:f,column:p,sheet_id:h},this.expression_calculator.context.address),d=!0)}return{dirty:d,area:l}}UpdateLocale(){T.decimal_separator===","?(this.parser.decimal_mark=",",this.parser.argument_separator=";"):(this.parser.decimal_mark=".",this.parser.argument_separator=",")}SupportedFunctions(){let t=this.library.List(),r=Object.keys(t).map(i=>{let s=t[i].canonical_name;return s||(s=i.replace(/_/g,".")),{name:s,description:t[i].description,arguments:(t[i].arguments||[]).map(n=>({name:n.name||""}))}});for(let i of this.model.macro_functions.values())r.push({name:i.name,description:i.description,arguments:(i.argument_names||[]).map(s=>({name:s}))});return r}RegisterLibrary(t,r){return this.registered_libraries[t]?!1:(this.RegisterFunction(r),this.registered_libraries[t]=!0,!0)}RegisterFunction(t){for(let r of Object.keys(t)){let i=t[r],s=i.fn;i.fn=(...n)=>s.apply({address:{...this.expression_calculator.context.address}},n),this.library.Register({[r]:i})}}AttachModel(){this.expression_calculator.SetModel(this.model)}Calculate(t){if(this.AttachModel(),t&&!t.start.sheet_id)throw new Error("CalculateInternal called with subset w/out sheet ID");this.full_rebuild_required&&(t=void 0,this.UpdateAnnotations(),this.full_rebuild_required=!1),this.RebuildGraph(t);try{this.Recalculate()}catch(r){console.error(r),console.info("calculation error trapped")}}Reset(){this.FlushTree(),this.AttachModel(),this.full_rebuild_required=!0}DecoratedFunctionList(){let t={},r=this.library.List();for(let i of Object.keys(r)){let s=r[i];s.xlfn?t[i]="_xlfn":s.extension&&(t[i]="_xll")}return t}ResolveArea(t,r){let i=this.ResolveAddress(t,r);return z(i)?new y(i):new y(i.start,i.end)}ResolveAddress(t,r){if(typeof t=="string"){let i=this.parser.Parse(t);if(i.expression&&i.expression.type==="address")return this.ResolveSheetID(i.expression,void 0,r),{row:i.expression.row,column:i.expression.column,sheet_id:i.expression.sheet_id};if(i.expression&&i.expression.type==="range")return this.ResolveSheetID(i.expression,void 0,r),{start:{row:i.expression.start.row,column:i.expression.start.column,sheet_id:i.expression.start.sheet_id},end:{row:i.expression.end.row,column:i.expression.end.column}};if(i.expression&&i.expression.type==="identifier"){let s=this.model.named_ranges.Get(i.expression.name);if(s)return s}return{row:0,column:0}}return t}Evaluate(t,r,i={}){let s=this.parser.argument_separator,n=this.parser.flags.r1c1;i.argument_separator&&(i.argument_separator===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",")),i.r1c1&&(this.parser.flags.r1c1=i.r1c1);let a=this.parser.Parse(t);if(this.parser.argument_separator=s,this.parser.decimal_mark=s===","?".":",",this.parser.flags.r1c1=n,a&&a.expression){this.parser.Walk(a.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="address"){if(l.offset_column||l.offset_row)throw new Error("Evaluate does not support offset references")}else if(l.start.offset_column||l.start.offset_row||l.end.offset_column||l.end.offset_row)throw new Error("Evaluate does not support offset references");this.ResolveSheetID(l,void 0,r)}return!0});let o=this.CalculateExpression(a.expression);return o.type===8?o.value.map(l=>l.map(d=>d.value)):o.value}throw a.error?new Error(a.error):new Error("invalid expression")}CalculateExpression(t,r={row:-1,column:-1},i=!1){return this.expression_calculator.Calculate(t,r,i).value}RebuildClean(t=!1){this.full_rebuild_required=!1,this.AttachModel(),this.RebuildGraph(),this.UpdateAnnotations(),this.InitializeGraph(),t&&this.volatile_list.length&&this.Recalculate()}FlattenCellList(t){let r={},i=[];for(let s of t){let n={column:s.column,row:s.row,sheet_id:s.sheet_id},a=y.CellAddressToLabel(n,!0);r[a]||(r[a]=a,i.push(n))}return i}RemoveAnnotation(t){let r=t.temp.vertex;r&&(r.Reset(),this.RemoveLeafVertex(r))}UpdateAnnotations(t,r){if(!t){for(let i of this.model.sheets.list)this.UpdateAnnotations(i.annotations,i);return}if(!r)throw new Error("invalid call to UpdateAnnotations with list but no sheet");typeof t<"u"&&!Array.isArray(t)&&(t=[t]);for(let i of t)if(i.formula){i.temp.vertex||(i.temp.vertex=new tt);let s=i.temp.vertex;this.AddLeafVertex(s),this.UpdateLeafVertex(s,i.formula,r)}}ResolveSheetID(t,r,i){let s=t.type==="address"?t:t.start;if(s.sheet_id)return!0;if(s.sheet){let n=this.model.sheets.Find(s.sheet);if(n)return s.sheet_id=n.id,!0}else{if(r?.sheet_id)return s.sheet_id=r.sheet_id,!0;if(i?.id)return s.sheet_id=i.id,!0}return!1}ResolveExpressionAddress(t,r){switch(t.type){case"address":if(this.ResolveSheetID(t,r))return new y(t);break;case"range":if(this.ResolveSheetID(t,r))return new y(t.start,t.end);break;case"identifier":{let i=this.model.named_ranges.Get(t.name.toUpperCase());if(i)return new y(i.start,i.end)}break}}NamedRangeToAddressUnit(t){let r=t.name.toUpperCase(),i=this.model.named_ranges.Get(r);if(i)return i.count===1?this.ConstructAddressUnit(i.start,r,t.id,t.position):{type:"range",start:this.ConstructAddressUnit(i.start,r,t.id,t.position),end:this.ConstructAddressUnit(i.end,r,t.id,t.position),label:r,id:t.id,position:t.position}}ConstructAddressUnit(t,r,i,s){return{type:"address",row:t.row,column:t.column,sheet_id:t.sheet_id,label:r,id:i,position:s}}RebuildDependencies(t,r,i,s={addresses:{},ranges:{}},n){if(!i){let a=this.model.sheets.Find(r);a&&(i=a.name)}switch(t.type){case"literal":case"missing":case"operator":break;case"identifier":{let a=t.name.toUpperCase();if(this.model.named_expressions.has(a)){let o=this.model.named_expressions.get(a);o&&this.RebuildDependencies(o,r,i,s,n)}else{let o=this.NamedRangeToAddressUnit(t);o&&(o.type==="address"?s.addresses[o.label]=o:s.ranges[o.label]=o)}}break;case"structured-reference":{let a=this.model.ResolveStructuredReference(t,n);a&&(a.type==="address"?s.addresses[a.sheet_id+"!"+a.label]=a:s.ranges[a.label]=a);let o=this.model.tables.get(t.table.toLowerCase());if(o){let l=n.row;if(l<o.area.start.row||l>o.area.end.row)break;let d=t.column.toLowerCase(),u=-1;if(o.columns){for(let h=0;h<o.columns.length;h++)if(d===o.columns[h]){u=o.area.start.column+h;break}}if(u>=0){let h={label:t.label,type:"address",row:l,column:u,sheet_id:o.area.start.sheet_id,id:t.id,position:t.position};s.addresses[h.sheet_id+"!"+h.label]=h}}}break;case"address":if(!t.sheet_id)if(t.sheet){let a=this.model.sheets.Find(t.sheet);a&&(t.sheet_id=a.id)}else t.sheet_id=r,t.sheet=i;t.sheet_id?s.addresses[t.sheet_id+"!"+t.label]=t:console.warn("invalid address in range [9d]");break;case"range":if(!t.start.sheet_id)if(t.start.sheet){let a=this.model.sheets.Find(t.start.sheet);a&&(t.start.sheet_id=a.id)}else t.start.sheet_id=r,t.start.sheet=i;t.start.sheet_id?s.ranges[t.start.sheet_id+"!"+t.start.label+":"+t.end.label]=t:console.warn("invalid sheet in range",t);break;case"unary":this.RebuildDependencies(t.operand,r,i,s,n);break;case"binary":this.RebuildDependencies(t.left,r,i,s,n),this.RebuildDependencies(t.right,r,i,s,n);break;case"group":t.elements.forEach(a=>this.RebuildDependencies(a,r,i,s,n));break;case"call":{let a=t.args.slice(0),o=this.library.Get(t.name);o&&o.arguments&&o.arguments.forEach((l,d)=>{l&&l.address&&(this.RebuildDependencies(a[d],r,i,void 0,n),a[d]={type:"missing",id:-1})}),a.forEach(l=>this.RebuildDependencies(l,r,i,s,n))}break}return s}UpdateLeafVertex(t,r,i){t.Reset();let s=this.parser.Parse(r);if(s.expression){let n=this.RebuildDependencies(s.expression,i.id,i.name,void 0,{row:0,column:0});for(let a of Object.keys(n.ranges)){let o=n.ranges[a];new y(o.start,o.end).Iterate(d=>{this.AddLeafVertexEdge(d,t)})}for(let a of Object.keys(n.addresses)){let o=n.addresses[a];this.AddLeafVertexEdge(o,t)}}t.expression=s.expression||{type:"missing",id:-1},t.expression_error=!s.valid}RebuildGraphCell(t,r){if(t.area&&t.area.start.column===r.column&&t.area.start.row===r.row){let{start:i,end:s}=t.area,n=i.sheet_id||r.sheet_id;i.sheet_id||(i.sheet_id=n);for(let a=i.column;a<=s.column;a++)for(let o=i.row;o<=s.row;o++)this.ResetInbound({column:a,row:o,sheet_id:n},!0,!1);this.SetDirty(r);for(let a=i.column;a<=s.column;a++)for(let o=i.row;o<=s.row;o++)o===i.row&&a===i.column||this.AddEdge(i,{...i,row:o,column:a})}if(t.type===1){this.ResetInbound(r,!0);let i=this.parser.Parse(t.value);if(i.expression){if(i.expression.type==="call"){let a=this.library.Get(i.expression.name);a&&(a.render||a.click)&&(t.render_function=a.render,t.click_function=a.click)}let n=this.RebuildDependencies(i.expression,r.sheet_id,"",void 0,r);for(let a of Object.keys(n.ranges)){let o=n.ranges[a],l=new y(o.start,o.end);l.entire_row||l.entire_column?this.AddArrayEdge(l,r):l.Iterate(d=>this.AddEdge(d,r))}for(let a of Object.keys(n.addresses)){let o=n.addresses[a];this.AddEdge(o,r)}}let s=this.GetVertex(r,!0);s&&(s.expression=i.expression||{type:"missing",id:-1},s.expression_error=!i.valid)}else t.value!==t.calculated?this.ResetInbound(r,!0,!1):t.type===0&&this.ResetInbound(r,!0,!1,!0)}RebuildGraph(t){if(t){if(!t.start.sheet_id)throw new Error("subset missing sheet id");let r=this.model.sheets.Find(t.start.sheet_id)?.cells;if(r)for(let i=t.start.row;i<=t.end.row;i++){let s=r.data[i];if(s)for(let n=t.start.column;n<=t.end.column;n++){let a=s[n];a&&this.RebuildGraphCell(a,{row:i,column:n,sheet_id:t.start.sheet_id})}}}else for(let r of this.model.sheets.list||[]){let i=r.cells.data.length;for(let s=0;s<i;s++){let n=r.cells.data[s];if(n){let a=n.length;for(let o=0;o<a;o++){let l=n[o];l&&this.RebuildGraphCell(l,{row:s,column:o,sheet_id:r.id})}}}}}IsNativeOrTypedArray(t){return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array}CheckVolatile(t){if(!t.expression||t.expression_error)return!1;let r=!1;return this.parser.Walk(t.expression,i=>{if(i.type==="call"){let s=this.library.Get(i.name);s&&s.volatile&&(r=!0)}return!r}),r}};var er=class{constructor(e){this.parent_node=e;this.model=Tt`<div id='mask' class='treb-embed-mask'><div id='dialog' class='treb-embed-dialog'><div id='left'><a href='https://treb.app' target='_blank'><div class='treb-icon-64'></div></a></div><div id='middle'><div id='title' class='treb-embed-dialog-title'></div><div id='message' class='treb-embed-dialog-message'></div><div id='about' class='treb-embed-dialog-body'>TREB version ${"23.5.1"}${""}<div class='smaller'><a target=_blank href='https://treb.app'>http://treb.app</a></div></div></div><button type='button' title='Close dialog' id='close' class='close-box'><svg viewBox='0 0 16 16'><path d='M11.854 4.146a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708-.708l7-7a.5.5 0 0 1 .708 0z'/><path d='M4.146 4.146a.5.5 0 0 0 0 .708l7 7a.5.5 0 0 0 .708-.708l-7-7a.5.5 0 0 0-.708 0z'/></svg></button></div></div>`,this.model.close.addEventListener("click",t=>{t.stopPropagation(),t.preventDefault(),this.HideDialog()}),e.appendChild(this.model.mask)}model;visible_=!1;timeout=0;pending_dialog_resoltion=[];options_={type:"initial"};set options(e){if(e.type==="about"&&(e.close_box=!0,e.icon=!0),this.options_.icon!==e.icon&&(this.model.left.style.display=e.icon?"block":"none"),this.options_.close_box!==e.close_box&&(this.model.close.style.display=e.close_box?"block":"none"),this.options_.message!==e.message&&(this.model.message.textContent=e.message||"",this.model.message.style.display=e.message?"block":"none"),this.options_.title!==e.title&&(this.model.title.textContent=e.title||"",this.model.title.style.display=e.title?"block":"none"),this.options_.type!==e.type){let t=this.model.dialog.className.replace(/dialog-type-\S+/g,"").trim();e.type&&(t+=` dialog-type-${e.type}`),this.model.dialog.className=t,e.type==="about"?this.model.about.style.display="block":this.model.about.style.display="none"}this.options_=e}event_handler=e=>{(e.key==="Escape"||e.key==="Esc")&&(e.stopPropagation(),e.preventDefault(),this.visible=!1)};get visible(){return this.visible_}set visible(e){if(e!==this.visible_)if(this.visible_=e,e)this.parent_node.classList.add("masked"),this.model.mask.classList.add("visible"),window.addEventListener("keydown",this.event_handler);else{this.parent_node.classList.remove("masked"),this.model.mask.classList.remove("visible"),window.removeEventListener("keydown",this.event_handler);let t=this.pending_dialog_resoltion.slice(0);this.pending_dialog_resoltion=[],Promise.resolve().then(()=>{for(let r of t)r()})}}Div(e,t){let r=document.createElement("div");return e&&r.setAttribute("class",e),t&&t.appendChild(r),r}Update(e,t=!0){t&&(e={...this.options_,...e}),this.options=e}HideDialog(){this.visible=!1}ShowDialog(e){return new Promise(t=>{this.pending_dialog_resoltion.push(t),this.options=e,this.visible=!0,this.timeout&&(window.clearTimeout(this.timeout),this.timeout=0),e.timeout&&(this.timeout=window.setTimeout(()=>this.HideDialog(),e.timeout))})}};var tr=class{constructor(e){this.container=e;this.node=document.createElement("div"),this.node.classList.add("treb-spinner"),this.node.innerHTML="<div><div></div><div></div><div></div><div></div></div>",e.appendChild(this.node)}node;visible=!1;Show(){this.node.classList.add("visible")}Hide(){this.node.classList.remove("visible")}};var rr={formula_bar:!0,in_cell_editor:!0,undo:!0,scrollbars:!0,headers:!0,export:!0,popout:!1,tab_bar:"auto",resizable:!0,hyperlinks:"_blank",max_file_size:94208,dnd:!1,add_tab:!1,expand_formula_button:!1,delete_tab:!1,expand:!1,markdown:!1,spinner:!1,complex:"off"};var ir=class extends te{constructor(t,r,i){super();this.container=t;this.options=r;this.theme=i;this.outer_container=t.parentElement;let s=T.decimal_separator;for(let h of[0,128,192,212,256])this.colors.push(`rgb(${h}, ${h}, ${h})`);for(let h of["red","orange","yellow","green","blue","indigo","violet"])this.colors.push(h);this.model=Tt`<div id='root' class='treb-toolbar'><div class='group narrow'><button id='text-align' data-command='align-left' title='Align left'><div class='treb-toolbar-icon treb-icon-text-align-left'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button id='align-left-drop' data-command='align-left' title='Align left', data-replace='text-align'><div class='treb-toolbar-icon treb-icon-text-align-left'/></button></li><li><button id='align-center-drop' data-command='align-center' title='Align center', data-replace='text-align'><div class='treb-toolbar-icon treb-icon-text-align-center'/></button></li><li><button id='align-right-drop' data-command='align-right' title='Align right', data-replace='text-align'><div class='treb-toolbar-icon treb-icon-text-align-right'/></button></li></ul></div></div><div class='group narrow'><button id='vertical-align' data-command='align-top' title='Align top'><div class='treb-toolbar-icon treb-icon-text-align-top'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button id='align-top-drop' data-command='align-top' title='Align top', data-replace='vertical-align'><div class='treb-toolbar-icon treb-icon-text-align-top'/></button></li><li><button id='align-middle-drop' data-command='align-middle' title='Align middle', data-replace='vertical-align'><div class='treb-toolbar-icon treb-icon-text-align-middle'/></button></li><li><button id='align-bottom-drop' data-command='align-bottom' title='Align bottom', data-replace='vertical-align'><div class='treb-toolbar-icon treb-icon-text-align-bottom'/></button></li></ul></div></div>${r.file_menu?"<div class='group wide'><button title='File options' class='drop-button'><div class='treb-toolbar-icon treb-icon-file-menu'/></button><div class='drop-menu' tabindex='-1'><ul><li><button class='text' data-command='reset'>New Document</button></li><hr/><li><button class='text' data-command='import-desktop'>Open File</button></li><li><button class='text' data-command='save-json'>Save JSON</button></li><hr/><li><button class='text' data-command='export-xlsx'>Export XLSX</button></li></ul></div></div>":""}<div class='group wide'><button id='align-left' title='Align left' data-command='align-left'><div class='treb-toolbar-icon treb-icon-text-align-left'/></button><button id='align-center' title='Align center' data-command='align-center'><div class='treb-toolbar-icon treb-icon-text-align-center'/></button><button id='align-right' title='Align right' data-command='align-right'><div class='treb-toolbar-icon treb-icon-text-align-right'/></button></div><div class='group wide'><button id='align-top' data-command='align-top' title='Align top'><div class='treb-toolbar-icon treb-icon-text-align-top'/></button><button id='align-middle' data-command='align-middle' title='Align middle'><div class='treb-toolbar-icon treb-icon-text-align-middle'/></button><button id='align-bottom' data-command='align-bottom' title='Align bottom'><div class='treb-toolbar-icon treb-icon-text-align-bottom'/></button></div><div class='group'><button id='wrap' data-command='wrap' title='Wrap text'><div class='treb-toolbar-icon treb-icon-wrap-text'/></button><button id='merge' data-command='merge' title='Merge cells'><div class='active-icon treb-toolbar-icon treb-icon-unmerge-cells'></div><div class='inactive-icon treb-toolbar-icon treb-icon-merge-cells'></div></button><button id='lock' data-command='lock'><div class='treb-toolbar-icon treb-icon-lock'/></button><button id='comment' class='drop-button' title='Comment'><div class='treb-toolbar-icon treb-icon-comment'/></button><div class='drop-menu' tabindex='-1'><div class='comment-editor'><div class='label' id='comment-label'></div><textarea id='comment-text' class='comment-textarea'></textarea><div class='comment-buttons'><button data-command='clear-comment'>Clear</button><button id='update-comment' data-command='update-comment'>Save</button></div></div></div></div><div class='group'><button class='color-button' data-command='background-color' title='Background color'><div class='treb-toolbar-icon treb-icon-fill-color'></div><div id='background-color-bar' class='color-bar' ></div></button><button class='drop'></button><div class='drop-menu color-chooser' data-target='background' tabindex='-1'></div></div><div class='group'><button class='color-button' data-command='foreground-color' title='Text color'><div class='treb-toolbar-icon treb-icon-text-color'></div><div id='foreground-color-bar' class='color-bar' ></div></button><button class='drop'></button><div class='drop-menu color-chooser' data-target='foreground' tabindex='-1'></div></div>${r.font_scale?`<div class='group wide'><div class='container font-size'><input value='' id='font-size-input' title='Font scale'></div><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button class='text' data-command='font-scale' data-scale='0.80'>0${s}80</button></li><li><button class='text' data-command='font-scale' data-scale='0.90'>0${s}90</button></li><li><button class='text' data-command='font-scale' data-scale='1.00'>1${s}00</button></li><li><button class='text' data-command='font-scale' data-scale='1.10'>1${s}10</button></li><li><button class='text' data-command='font-scale' data-scale='1.20'>1${s}20</button></li><li><button class='text' data-command='font-scale' data-scale='1.50'>1${s}50</button></li><li><button class='text' data-command='font-scale' data-scale='2.00'>2${s}00</button></li></ul></div></div>`:""}<div class='group'><button id='update-border' data-command='border-bottom' title='Bottom border'><div class='treb-toolbar-icon treb-icon-border-bottom'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button id='border-top' data-command='border-top' title='Top border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-top'/></button></li><li><button id='border-left' data-command='border-left' title='Left border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-left'/></button></li><li><button id='border-right' data-command='border-right' title='Right border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-right'/></button></li><li><button id='border-bottom' data-command='border-bottom' title='Bottom border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-bottom'/></button></li><li><button id='border-double-bottom' data-command='border-double-bottom' title='Double bottom border' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-double-bottom'/></button></li><li><button id='border-all' data-command='border-all' title='All borders' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-all'/></button></li><li><button id='border-outside' data-command='border-outside' title='Outside borders' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-outer'/></button></li><li><button id='border-none' data-command='border-none' title='Remove borders' data-replace='update-border'><div class='treb-toolbar-icon treb-icon-border-none'/></button></li><hr/><li><button id='border-color' class='color-button drop-button' data-position='horizontal' title='Border color'><div class='treb-toolbar-icon treb-icon-palette'></div><div id='border-color-bar' class='color-bar'></div></button><div class='drop-menu color-chooser' data-target='border' tabindex='-1'></div></li></ul></div></div><div class='group'><button id='layout' class='drop-button' title='Rows/columns'><div class='treb-toolbar-icon treb-icon-layout'/></button><div class='drop-menu' tabindex='-1'><ul><li><button class='text' data-command='insert-row'>Insert row</button></li><li><button class='text' data-command='insert-column'>Insert column</button></li><li><button class='text' data-command='delete-row'>Delete row</button></li><li><button class='text' data-command='delete-column'>Delete column</button></li></ul>${r.add_tab?"<ul><hr/><li><button class='text' data-command='insert-sheet'>Insert sheet</button></li><li><button class='text' data-command='delete-sheet'>Delete sheet</button></li></ul>":""}</div></div><div class='group'><button id='freeze' data-command='freeze'><div class='treb-toolbar-icon treb-icon-freeze'/></button></div><div class='group'><div class='container'><input value='General' id='number-format-input' title='Number format'></div><button class='drop'></button><div class='drop-menu scroll' tabindex='-1' data-number-formats></div></div><div class='split-button'><button data-command='decrease-decimal' title='Decrease precision'><div>0${s}0</div></button><button data-command='increase-decimal' title='Increase precision'><div>0${s}00</div></button></div><div class='group'><button id='insert-annotation' data-command='column-chart' title='Insert column chart'><div class='treb-toolbar-icon treb-icon-column-chart'/></button><button class='drop'></button><div class='drop-menu' tabindex='-1'><ul><li><button title='Insert column chart' id='column-chart' data-command='column-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-column-chart'/></button></li><li><button title='Insert donut chart' id='donut-chart' data-command='donut-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-donut-chart'/></button></li><li><button title='Insert bar chart' id='bar-chart' data-command='bar-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-bar-chart'/></button></li><li><button title='Insert line chart' id='line-chart' data-command='line-chart' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-line-chart'/></button></li><hr/><li><button id='insert-image' data-command='insert-image' title='Insert image' data-replace='insert-annotation'><div class='treb-toolbar-icon treb-icon-image'/></button></li></ul></div></div>${r.toolbar_recalculate_button?"<div class='group end-group'><button data-command='recalculate' title='Recalculate'><div class='treb-toolbar-icon treb-icon-recalculate'></div></button></div>":""}<div class='staging'><div id='color-chooser' class='color-chooser-main'><div class='color-header'>Theme colors</div><div id='theme-color-list' class='color-list'></div><div class='color-header other-colors'>Other colors</div><div id='color-list' class='color-list'></div><div class='new-color'><input id='color-input' placeholder='New Color'><button id='color-button'><div class='treb-toolbar-icon treb-icon-check'></div></button></div></div></div></div>`,this.model["background-color-bar"].style.color="yellow",this.model["foreground-color-bar"].style.color="blue",this.model["border-color-bar"].style.color="#333";let n=this.model["color-button"],a=this.model["color-input"];this.UpdateTheme(i),n.addEventListener("click",()=>{this.CommitColor({text:a.value||""})}),a.addEventListener("keydown",h=>{h.key==="Enter"&&this.CommitColor({text:a.value||""})}),a.addEventListener("input",()=>{n.style.backgroundColor="";let h=a.value||"";n.style.backgroundColor=h;let f=re.MeasureColor(h),p=Ie.RGBToHSL(f[0],f[1],f[2]);n.style.color=p.l>.5?"":"#fff"}),this.model["comment-text"].addEventListener("keydown",h=>{if(h.key==="Enter"&&h.ctrlKey){h.stopPropagation(),h.preventDefault(),this.model["update-comment"].click();return}});let o="",l=this.model["font-size-input"];l&&(l.addEventListener("focus",()=>o=l.value||""),l.addEventListener("keydown",h=>{switch(h.key){case"Enter":if(l.value){let f=l.value;T.decimal_separator!=="."&&(f=f.replace(new RegExp(T.decimal_separator,"g"),".")),this.Publish({type:"font-size",style:A.ParseFontSize(f)})}else this.Publish({type:"font-size",style:{font_size:void 0}});break;case"Escape":u.value=d,this.Publish({type:"cancel"});break;default:return}h.stopPropagation(),h.preventDefault()}));let d="",u=this.model["number-format-input"];u.addEventListener("focus",()=>d=u.value||""),u.addEventListener("keydown",h=>{switch(h.key){case"Enter":this.Publish({type:"format",format:u.value||""});break;case"Escape":u.value=d,this.Publish({type:"cancel"});break;default:return}h.stopPropagation(),h.preventDefault()}),this.model.root.addEventListener("click",h=>{this.HandleClick(h)}),/narrow/i.test((r.toolbar||"").toString())&&this.model.root.classList.add("narrow"),t.appendChild(this.model.root)}model;number_formats=[];date_formats=[];colors=[];color_target;state;background_color={text:"yellow"};foreground_color={text:"blue"};border_color=void 0;outer_container;menu_map={};menu_index=1;HandleClick(t){let r=this.model["color-button"],i=this.model["color-input"],s=t.target,n=s?.dataset?.command;if(n){let a={};if(/^border-/.test(n))a.border=n,a.color=this.border_color,n="border";else switch(n){case"font-scale":a.scale=s?.dataset?.scale||1;break;case"clear-comment":case"update-comment":this.state?.selection&&!this.state.selection.empty&&(a.address={...this.state.selection.target}),a.comment=this.model["comment-text"].value||"";break;case"background-color":a.target="background",a.color=this.background_color;break;case"foreground-color":a.target="foreground",a.color=this.foreground_color;break;case"border-color":a.target="border",a.color=this.border_color;break}this.Publish({type:"button",command:n,data:a});return}if(s?.classList?.contains("drop")||s?.classList?.contains("drop-button")){let a=s.parentElement;for(;a&&!a.classList.contains("group");){if(a===this.model.root)return;a=a.parentElement}if(a||s.dataset.position==="horizontal"){let o,l;if(s.dataset.menu_target)l=this.menu_map[s.dataset.menu_target];else{l=s.nextSibling;let d=(this.menu_index++).toString();this.menu_map[d]=l,s.dataset.menu_target=d,l.style.position="absolute",l.classList.add("treb-toolbar-drop-menu"),s.dataset.position!=="horizontal"&&this.outer_container?.appendChild(l)}if(l?.classList?.contains("drop-menu"))if(s===this.model.comment&&(this.model["comment-label"].textContent=this.state?.selection?.target?y.CellAddressToLabel(this.state?.selection.target):"",this.model["comment-text"].value=this.state?.comment||"",o=this.model["comment-text"]),l.dataset.numberFormats!==void 0&&this.RenderNumberFormats(l),l.classList.contains("color-chooser")&&(this.color_target=l.dataset?.target||"",this.RenderColors(this.model["color-list"]),i.value="",r.style.backgroundColor="",r.style.color="",l.appendChild(this.model["color-chooser"])),s.dataset?.position==="horizontal")this.Focus(l,s.offsetWidth+12,s.offsetTop-8,o);else{let d=(s.classList.contains("drop-button")?s:a)?.getBoundingClientRect()||{x:0},u=this.outer_container?.getBoundingClientRect()||{x:0,right:0},h=d.x-u.x,f=l.offsetWidth;f>0&&h+f>u.right&&(h=Math.max(0,u.right-f-10)),this.Focus(l,h,s.offsetHeight+4,o)}}return}}ResolveColor(t,r){return U(this.theme,t||r)||""}CommitColor(t){switch(this.color_target){case"background":this.model["background-color-bar"].style.color=this.ResolveColor(t,{theme:0}),this.background_color=t?{...t}:void 0;break;case"border":this.model["border-color-bar"].style.color=this.ResolveColor(t,{theme:1}),this.border_color=t?{...t}:void 0;break;case"foreground":t||(t={theme:1}),this.model["foreground-color-bar"].style.color=this.ResolveColor(t,{theme:1}),this.foreground_color=t?{...t}:void 0;break}this.Publish({type:"button",command:"color",data:{color:t?{...t}:void 0,target:this.color_target||""}})}Focus(t,r,i,s){t.style.left=r+"px",t.style.top=i+"px",t.classList.add("enabled"),requestAnimationFrame(()=>t.classList.add("visible"));let n=d=>{d.key==="Escape"&&(d.stopPropagation(),d.preventDefault(),this.Publish({type:"cancel"}))};window.addEventListener("keydown",n);let a=d=>{let u=d.target;if(u.dataset?.replace){let h=this.model[u.dataset.replace];h.innerHTML=u.innerHTML,h.setAttribute("title",u.getAttribute("title")||""),h.dataset.command=u.dataset.command||void 0}if(u.dataset?.command==="number-format"){let h=u.textContent||"General";this.model["number-format-input"].value=u.textContent||"",this.Publish({type:"format",format:h})}else if(u.dataset?.command||u.classList?.contains("drop-button")){this.HandleClick(d);return}else if(u.classList?.contains("color-swatch"))if(typeof u?.dataset?.theme<"u"){let h=Number(u?.dataset?.theme);isNaN(h)&&(h=0);let f={theme:h||0};if(u?.dataset?.tint){let p=Number(u.dataset.tint);p&&!isNaN(p)&&(f.tint=p)}this.CommitColor(f)}else{let h=u?.dataset?.color||"";this.CommitColor(h?{text:h}:void 0)}d.stopPropagation()};t.addEventListener("click",a);let o=()=>{t.classList.contains("visible")||(t.style.left="",t.style.top=""),t.removeEventListener("transitionend",o)},l=d=>{let u=d.relatedTarget;u&&t.contains(u)||(t.classList.remove("visible"),t.removeEventListener("focusout",l),t.removeEventListener("click",a),window.removeEventListener("keydown",n),t.addEventListener("transitionend",o))};t.addEventListener("focusout",l),requestAnimationFrame(()=>(s||t).focus())}UpdateState(t){this.state=t;let r={"align-center":t.style&&t.style?.horizontal_align===A.HorizontalAlign.Center,"align-left":t.style&&t.style?.horizontal_align===A.HorizontalAlign.Left,"align-right":t.style&&t.style?.horizontal_align===A.HorizontalAlign.Right,"align-top":t.style&&t.style?.vertical_align===A.VerticalAlign.Top,"align-middle":t.style&&t.style?.vertical_align===A.VerticalAlign.Middle,"align-bottom":t.style&&t.style?.vertical_align===A.VerticalAlign.Bottom,wrap:t.style&&!!t.style.wrap,comment:!!t.comment},i=this.model.freeze;t.frozen?(i.classList.add("active"),i.setAttribute("title","Unfreeze panes")):(i.classList.remove("active"),i.setAttribute("title","Freeze panes")),t.style?.locked?(this.model.lock.classList.add("active"),this.model.lock.setAttribute("title","Unlock cells")):(this.model.lock.classList.remove("active"),this.model.lock.setAttribute("title","Lock cells"));let s=this.model.merge;t.merge?(s.classList.add("active"),s.dataset.command="unmerge",s.setAttribute("title","Unmerge cells")):(s.classList.remove("active"),s.dataset.command="merge",s.setAttribute("title","Merge cells"));let n=this.model["font-size-input"];if(n){let o=A.RelativeFontSize(t.style||{},this.theme.grid_cell||{}).toFixed(2);o=o.replace(/\./g,T.decimal_separator),n.value=o}let a=t.style?.number_format||"";this.model["number-format-input"].value=D.SymbolicName(a)||a,Object.keys(r).forEach(o=>{r[o]?this.model[o]?.classList.add("active"):this.model[o]?.classList.remove("active")})}UpdateTheme(t){let r=this.model["theme-color-list"],i=[],s=["Background","Text","Background","Text","Accent","Accent","Accent","Accent","Accent","Accent"],n=0;if(t.theme_colors)if(this.options.tint_theme_colors)for(let o of[.5,.25,0,-.25,-.5]){for(i.push("<div class='color-list-row'>"),n=0;n<10;n++){let l=t.theme_colors[n]||"#000";if(o){let u=Math.round(Math.abs(o)*100),h=(t.mode==="dark"?-o:o)>0?"lighter":"darker";l+=` (${u}% ${h})`}let d=this.ResolveColor({theme:n,tint:o},{});i.push(`<button data-color='${d}' class='color-swatch' data-tint=${o} data-theme=${n} title='${s[n]}: ${l}' ></button>`)}i.push("</div>")}else{for(i.push("<div class='color-list-row'>"),n=0;n<10;n++){let o=t.theme_colors[n]||"#000";i.push(`<button data-color='${o}' class='color-swatch' data-theme=${n} title='${s[n]}: ${o}' ></button>`)}i.push("</div>")}r.innerHTML=i.join("");let a=r.querySelectorAll("button[data-color]");for(let o=0;o<a.length;o++)a[o].style.backgroundColor=a[o].dataset.color||""}RenderColors(t){let r=["<div class='color-list-row'>","<button class='color-swatch default-color' data-color='' title='Default color'></button>"],i=0;for(;i<9&&i<this.colors.length;i++){let n=this.colors[i];r.push(`<button class='color-swatch' data-color='${n}' title='${n}' ></button>`)}for(r.push("</div>");i<this.colors.length;){r.push("<div class='color-list-row'>");let n=i+10;for(;i<this.colors.length&&i<n;i++){let a=this.colors[i];r.push(`<button class='color-swatch' data-color='${a}' title='${a}' ></button>`)}r.push("</div>")}t.innerHTML=r.join("");let s=t.querySelectorAll("button.color-swatch");for(let n=0;n<s.length;n++){let a=s[n];a.style.background=a.dataset.color||""}}RenderNumberFormats(t){t.innerHTML=`<ul>${this.number_formats.map(r=>Et`<li><button data-command='number-format' class='text'>${r}</button></li>`).join(`
|
|
11
|
+
`)}</ul><hr/><ul>${this.date_formats.map(r=>Et`<li><button data-command='number-format' class='text'>${r}</button></li>`).join(`
|
|
12
|
+
`)}</ul>`}UpdateDocumentStyles(t,r,i){let s=["General","Number","Integer","Percent","Fraction","Accounting","Currency","Scientific"],n=["Timestamp","Long Date","Short Date"];for(let o of t){if(D.SymbolicName(D.Translate(o)))continue;D.Get(o).date_format?n.push(o):s.push(o)}this.number_formats=s,this.date_formats=n;let a=this.colors.map(o=>re.MeasureColor(o));for(let o of r){let l=re.MeasureColor(o);a.some(d=>d[0]===l[0]&&d[1]===l[1]&&d[2]===l[2])||(this.colors.push(o),a.push(l))}}};var Me=class{constructor(e=0,t=0,r=100,i=100){this.left=e;this.top=t;this.right=r;this.bottom=i}get width(){return this.right-this.left}get height(){return this.bottom-this.top}get center(){return{x:this.left+this.width/2,y:this.top+this.height/2}}};var vt="http://www.w3.org/2000/svg",M=(c,e={},t)=>{let r=document.createElementNS(vt,c);for(let i of Object.keys(e))if(e[i]!==void 0){let s=e[i];r.setAttribute(i,Array.isArray(s)?s.join(" "):s.toString())}return t&&(r.textContent=t),r},sr=class{parent;svg_node;text_measurement_node;container_group;group;axis_group;label_group;size={width:0,height:0};bounds=new Me;constructor(){this.container_group=M("g"),this.group=M("g"),this.axis_group=M("g",{class:"axis-group"}),this.label_group=M("g",{class:"label-group"}),this.container_group.appendChild(this.axis_group),this.container_group.appendChild(this.group),this.container_group.appendChild(this.label_group)}Initialize(e){this.parent=e,this.svg_node=M("svg",{class:"treb-chart"}),this.svg_node.style.overflow="hidden",this.svg_node.style.position="relative",this.svg_node.style.width="100%",this.svg_node.style.height="100%",this.svg_node.appendChild(this.container_group),this.parent.appendChild(this.svg_node),this.Resize()}Legend(e){let t=M("g");this.group.appendChild(t);let r=M("text");t.appendChild(r),t.setAttribute("class","legend");let i=[[]],s=10,n=e.area.width,a=0,o=0,l=e.area.width,d=e.style===1?14:26,u=e.labels.map((_,b)=>{r.textContent=_.label;let g=r.getBoundingClientRect(),x={width:g.width,height:g.height},v=x.width+d+s;return o=Math.max(o,x.height),e.layout===1?i[b]=[b]:v>n?i[a].length===0?(i[a].push(b),a++,i[a]=[],n=l):(a++,i[a]=[b],n=l-v):(i[a].push(b),n-=v),x});t.removeChild(r);let h=o,f=e.layout||0;f===0&&i.every(_=>_.length<=1)&&(f=0);for(let _=0;_<i.length;_++){let b=i[_].reduce((v,w)=>v+u[w].width+d,(i[_].length-1)*s),g=0,x=f===0?Math.round((l-b)/2):Math.round(s/2);for(let v=0;v<i[_].length;v++){let w=i[_][v],S=u[w],R=e.labels[w],E=h-1,H=!1;typeof navigator<"u"&&(H=/trident/i.test(navigator?.userAgent||""));let Z=typeof R.index=="number"?R.index:w+1;t.appendChild(M("text",{"dominant-baseline":"middle",x:x+d,y:h,dy:H?".3em":void 0},R.label)),e.style===1?t.appendChild(M("rect",{class:`series-${Z}`,x,y:E-4,width:8,height:8})):t.appendChild(M("rect",{class:`series-${Z}`,x,y:E-1,width:d-3,height:2})),g=Math.max(g,S.height),x+=S.width+d+s}h=Math.round(h+g*1.1)}let p=t.getBoundingClientRect(),m={width:p.width,height:p.height+o};switch(e.position){case 1:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.bottom-m.height})`);break;case 2:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`);break;case 3:t.setAttribute("transform",`translate(${e.area.right-m.width}, ${e.area.top})`);break;case 0:default:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`)}e.position===0?e.area.top+=m.height||0:e.position===3?e.area.right-=(m.width||0)+8:e.position===2?e.area.left+=(m.width||0)+8:e.area.bottom-=m.height||0}Clear(e){this.group.textContent="",this.axis_group.textContent="",this.label_group.textContent="",e="treb-chart"+(e?" "+e:""),this.svg_node.setAttribute("class",e)}Resize(){let e=this.parent.getBoundingClientRect();this.svg_node.setAttribute("width",e.width.toString()),this.svg_node.setAttribute("height",e.height.toString()),this.size={width:e.width,height:e.height}}Prerender(){let e=this.svg_node.getBoundingClientRect();this.bounds.top=e.top,this.bounds.left=e.left,this.bounds.right=e.right,this.bounds.bottom=e.bottom}RenderTitle(e,t,r,i){let s=M("text",{class:"chart-title",x:Math.round(t.width/2)},e);s.style.textAnchor="middle",this.group.appendChild(s);let n=s.getBoundingClientRect();switch(i){case"bottom":s.setAttribute("y",Math.round(t.bottom-n.height).toString()),t.bottom-=n.height+r;break;default:s.setAttribute("y",Math.round(t.top+r+n.height).toString()),t.top+=n.height+r;break}}MeasureText(e,t,r=!1){this.text_measurement_node||(this.text_measurement_node=M("text",{x:"-100px",y:"-100px"}),this.svg_node.appendChild(this.text_measurement_node)),typeof t<"u"?(typeof t=="string"&&(t=[t]),this.text_measurement_node.setAttribute("class",t.join(" "))):this.text_measurement_node.setAttribute("class",""),this.text_measurement_node.textContent=e;let i=this.text_measurement_node.getBoundingClientRect(),s={width:i.width,height:i.height,y_offset:i.height-(this.bounds.top-i.top-100)};return r&&(s.width=Math.ceil(s.width),s.height=Math.ceil(s.height),s.y_offset=Math.ceil(s.y_offset)),s}RenderTicks(e,t,r,i,s){let n=[],a=e.width/i;for(let o=0;o<i;o++){let l=Math.round(e.left+a/2+a*o)-.5;n.push(`M${l} ${t} L${l} ${r}`)}this.group.appendChild(M("path",{d:n,class:s}))}RenderXAxisBar(e,t,r,i,s){let n=r.length;if(!n)return;let a=4,o=t?e.width/n:e.width/(n-1),l=t?o/2:0,d=1,u=!0;for(;u;){u=!1;let h=0;for(let f=0;f<n;f+=d){let p=Math.round(e.left+l+o*f),m=p-i[f].width/2;if(h&&m<=h){d++,u=!0;break}h=p+i[f].width/2+a}}for(let h=0;h<n;h+=d){let f=Math.round(e.left+l+o*h);this.RenderText(this.axis_group,r[h],"center",{x:f,y:e.bottom},s)}}RenderXAxisTicks(e,t,r){let i=t?e.width/r:e.width/(r-1),s=t?i/2:0,n=[];for(let a=0;a<r;a++){let o=Math.round(e.left+s+i*a)+.5;n.push(`M${o},${e.bottom+.5} v${6}`)}this.axis_group.appendChild(M("path",{d:n.join(" "),class:"x-axis-tick axis-tick"}))}RenderXAxis(e,t,r,i,s){let n=r.length;if(!n)return;let a=4,o=t?e.width/n:e.width/(n-1),l=t?o/2:0,d=1,u=!0,h=(r.length-1)%2===0,f=(r.length-1)%3===0;for(;u;){u=!1;let p=0;for(let m=0;m<n;m+=d){let _=Math.round(e.left+l+o*m),b=_-i[m].width/2;if(p&&b<=p){d++,u=!0;break}p=_+i[m].width/2+a}}d===3&&!f&&h&&d++;for(let p=0;p<n;p+=d){let m=Math.round(e.left+l+o*p);this.RenderText(this.axis_group,r[p],"center",{x:m,y:e.bottom},s)}}RenderYAxisBar(e,t,r,i){r=r.slice(0),r.reverse();let s=r.length;if(!s)return;let n=e.height/s,a=1,o=!0;for(;o;){o=!1;let l=0;for(let d=0;d<s;d+=a){let u=r[d],h=Math.round(e.bottom-n*(d+.5)+u.metrics.height/4);if(l&&h>=l){a++,o=!0;break}l=h-u.metrics.height}}for(let l=0;l<s;l+=a){let d=r[l],u=Math.round(e.bottom-n*(l+.5)+d.metrics.height/4);this.RenderText(this.axis_group,d.label,"right",{x:t,y:u},i)}}RenderYAxis(e,t,r,i){let s=r.length;if(!s)return;let n=e.height/(s-1),a=1,o=!0;for(;o;){o=!1;let l=0;for(let d=0;d<s;d+=a){let u=r[d],h=Math.round(e.bottom-n*d+u.metrics.height/4);if(l&&h>=l){a++,o=!0;break}l=h-u.metrics.height}}for(let l=0;l<s;l+=a){let d=r[l],u=Math.round(e.bottom-n*l+d.metrics.height/4);this.RenderText(this.axis_group,d.label,"right",{x:t,y:u},i)}}LineProperties(e,t){let r=t.x-e.x,i=t.y-e.y;return{length:Math.sqrt(r*r+i*i),angle:Math.atan2(i,r)}}RenderSmoothLine(e,t,r=!1,i,s){let n=M("g"),a=[],o=[],l=t.length,d=l-1,u=e.width/l/2,h=[],f=t.map((_,b)=>{if(!(typeof _>"u"))return{x:Math.round(e.left+e.width/d*b),y:e.bottom-_}}),p=[],m=()=>{if(p.length<2)return;let _="",b=p[0],g=p[p.length-1];p.length===2?_=`${p[0].x},${p[0].y} L${p[1].x},${p[1].y}`:p.length>2&&(_=""+this.CatmullRomChain(p).map(v=>`${v.x},${v.y}`).join(" L")),_&&(a.push("M"+_),r&&(o.push(`M ${b.x},${e.bottom} L ${b.x},${b.y}`),o.push("L"+_),o.push(`L ${g.x},${e.bottom}`)))};for(let _ of f)_?p.push(_):(m(),p=[]);if(p.length&&m(),r&&n.appendChild(M("path",{class:"fill",d:o})),n.appendChild(M("path",{class:"line",d:a})),typeof s<"u"&&(typeof s=="string"&&(s=[s]),n.setAttribute("class",s.join(" "))),this.group.appendChild(n),i&&h.length){let _=document.createElementNS(vt,"g");for(let b of h){let g=M("circle",{cx:b.x,cy:b.y,r:u});g.addEventListener("mouseenter",x=>{this.parent.setAttribute("title",i[b.i]||"")}),g.addEventListener("mouseleave",x=>{this.parent.setAttribute("title","")}),_.appendChild(g)}_.setAttribute("class","mouse-layer"),this.group.appendChild(_)}}RenderLine(e,t,r=!1,i,s){let n=document.createElementNS(vt,"g"),a=[],o=[],l=t.length,d=l-1,u=e.width/l/2,h=[],f=0,p=!0,m;for(;f<l;f++){let _=t[f];if(typeof _>"u"){p=!0,r&&typeof m<"u"&&o.push(`L${m} ${e.bottom}Z`),m=void 0;continue}let b=Math.round(+e.left+e.width/d*f);p?(r&&o.push(`M${b} ${e.bottom} L${b} ${e.bottom-_}`),a.push(`M${b} ${e.bottom-_}`)):(a.push(`L${b} ${e.bottom-_}`),o.push(`L${b} ${e.bottom-_}`)),h.push({x:b,y:e.bottom-_,i:f}),m=b,p=!1}if(r&&typeof m<"u"&&o.push(`L${m} ${e.bottom}Z`),r&&n.appendChild(M("path",{class:"fill",d:o})),n.appendChild(M("path",{class:"line",d:a})),typeof s<"u"&&(typeof s=="string"&&(s=[s]),n.setAttribute("class",s.join(" "))),this.group.appendChild(n),i&&h.length){let _=document.createElementNS(vt,"g");for(let b of h){let g=M("circle",{cx:b.x,cy:b.y,r:u});g.addEventListener("mouseenter",x=>{this.parent.setAttribute("title",i[b.i]||"")}),g.addEventListener("mouseleave",x=>{this.parent.setAttribute("title","")}),_.appendChild(g)}_.setAttribute("class","mouse-layer"),this.group.appendChild(_)}}RenderBarGrid(e,t,r){let i=[],s=e.width/t;for(let n=0;n<=t;n++){let a=Math.round(e.left+s*n)-.5;i.push(`M${a} ${e.top} L${a} ${e.bottom}`)}this.group.appendChild(M("path",{d:i,class:r}))}RenderGrid(e,t,r=0,i){let s=[],n=e.height/t;for(let a=0;a<=t;a++){let o=Math.round(e.top+n*a)-.5;s.push(`M${e.left} ${o} L${e.right} ${o}`)}n=e.width/(r-1);for(let a=0;a<r;a++){let o=Math.round(e.left+n*a)-.5;s.push(`M${o} ${e.top} L${o} ${e.bottom}`)}this.group.appendChild(M("path",{d:s,class:i}))}MultiplyPoint(e,t){return{x:e.x*t,y:e.y*t}}AddPoints(e,t){return{x:e.x+t.x,y:e.y+t.y}}CatmullRomSpline(e,t){let r=.5;r=r/2;let i=(u,h,f)=>{let{x:p,y:m}=h,{x:_,y:b}=f;return((_-p)**2+(b-m)**2)**r+u},s=0,n=i(s,e[0],e[1]),a=i(n,e[1],e[2]),o=i(a,e[2],e[3]),l=(a-n)/t,d=[];for(let u=0;u<t;u++){let h=n+l*u,f=this.AddPoints(this.MultiplyPoint(e[0],(n-h)/(n-s)),this.MultiplyPoint(e[1],(h-s)/(n-s))),p=this.AddPoints(this.MultiplyPoint(e[1],(a-h)/(a-n)),this.MultiplyPoint(e[2],(h-n)/(a-n))),m=this.AddPoints(this.MultiplyPoint(e[2],(o-h)/(o-a)),this.MultiplyPoint(e[3],(h-a)/(o-a))),_=this.AddPoints(this.MultiplyPoint(f,(a-h)/(a-s)),this.MultiplyPoint(p,(h-s)/(a-s))),b=this.AddPoints(this.MultiplyPoint(p,(o-h)/(o-n)),this.MultiplyPoint(m,(h-n)/(o-n))),g=this.AddPoints(this.MultiplyPoint(_,(a-h)/(a-n)),this.MultiplyPoint(b,(h-n)/(a-n)));d.push(g)}return d}CatmullRomChain(e,t=30){let r=e.slice(0),i=[],s=r.length;if(s){let n=r[s-1].x-r[s-2].x,a=r[s-1].y-r[s-2].y;r.push({x:r[s-1].x+n,y:r[s-1].y+a}),r.push({x:r[s-1].x+n,y:r[s-1].y+a}),n=r[1].x-r[0].x,a=r[1].y-r[0].y,r.unshift({x:r[0].x-n,y:r[0].y-a});for(let o=0;o<r.length-4;o++){let l=r.slice(o,o+4),d=this.CatmullRomSpline(l,t);i.push(...d)}}return i}RenderDataLabels(e,t,r,i,s,n,a){let o=Math.max(t.length,r.length),l=i.max-i.min||1,d=s.max-s.min||1;for(let u=0;u<o;u++){let h=t[u],f=r[u];if(h!==void 0&&f!==void 0){let p={x:e.left+(h-i.min)/l*e.width,y:e.bottom-(f-s.min)/d*e.height},m=n[u];if(m){this.label_group.appendChild(M("circle",{class:"label-target",cx:p.x,cy:p.y,r:10}));let _=M("g",{class:"data-label",transform:`translate(${p.x+10},${p.y})`});this.label_group.appendChild(_);let b=M("circle",{cx:-10,y:0,r:5,class:`marker-highlight series-${a}`});_.appendChild(b);let g=M("text",{x:4,y:0},m);_.appendChild(g);let x=g.getBoundingClientRect(),v=x.height,w=x.width+8;w+15+p.x>=e.right&&(_.setAttribute("transform",`translate(${p.x-w-15},${p.y})`),b.setAttribute("cx",(w+15).toString()));let S=M("path",{d:`M0,5 h${w} v-${v} h-${w} Z`});_.insertBefore(S,g)}}}}RenderScatterSeries(e,t,r,i,s,n=!0,a=!1,o=!1,l=!1,d=!1,u){let h=Math.max(t.length,r.length),f=i.max-i.min||1,p=s.max-s.min||1,m=[],_=[],b=[],g=M("g",{class:u});this.group.appendChild(g);for(let x=0;x<h;x++){let v=t[x],w=r[x];typeof v>"u"||typeof w>"u"?m.push(void 0):m.push({x:e.left+(v-i.min)/f*e.width,y:e.bottom-(w-s.min)/p*e.height})}if(n){let x=[],v=d?()=>x.length===2?`${x[0].x},${x[0].y} L${x[1].x},${x[1].y}`:x.length>2?this.CatmullRomChain(x).map(S=>`${S.x},${S.y}`).join(" L"):"":()=>x.map(w=>`${w.x},${w.y}`).join(" L");for(let w of m)if(w)x.push(w);else{if(x.length>=2){let S=v();_.push("M"+S),b.push(`M${x[0].x},${e.bottom}L`+S+`L${x[x.length-1].x},${e.bottom}Z`)}x=[]}if(x.length>=2){let w=v();_.push("M"+w),b.push(`M${x[0].x},${e.bottom}L`+w+`L${x[x.length-1].x},${e.bottom}Z`)}}if(o&&g.appendChild(M("path",{d:b,class:"fill"})),n&&g.appendChild(M("path",{d:_,class:"line"})),a)for(let x of m)x&&g.appendChild(M("circle",{cx:x.x,cy:x.y,r:1,class:"point"}));if(l)for(let x of m)x&&g.appendChild(M("circle",{cx:x.x,cy:x.y,r:3,class:"marker"}))}RenderPoints(e,t,r,i){let s=[];for(let n=0;n<t.length;n++){let a=t[n]*e.width+e.left,o=e.bottom-r[n]*e.height;s.push(`M${a-1},${o-1} L${a+1},${o+1}`),s.push(`M${a-1},${o+1} L${a+1},${o-1}`)}this.group.appendChild(M("path",{d:s,class:i}))}RenderPoint(e,t,r){this.group.appendChild(M("circle",{cx:e,cy:t,r:1,class:r}))}RenderCalloutLines(e){let t=M("g",{class:"callouts"});this.label_group.appendChild(t);for(let r of e)t.appendChild(M("path",{d:`M${r.x1},${r.y1} L${r.x2},${r.y2}`,class:"callout "+(r.classes||"").trim()}))}RenderRectangle(e,t,r,i,s,n){let a="";if(t)if(t[0]&&t[0]===t[1]&&t[0]>=e.height){let l=t[0],d=t[0]-e.height,u=Math.sqrt(l*l-d*d);a=`M${e.left+e.width/2-u},${e.bottom} a${l},${l} 0 0 1 ${u*2},0 z`}else if(t[1]&&t[1]===t[2]&&t[1]>=e.width){let l=t[1],d=t[1]-e.width,u=Math.sqrt(l*l-d*d);a=`M${e.left},${e.top+e.height/2-u} a${l},${l} 0 0 1 0,${u*2} z`}else a=`M${e.left},${e.top+t[0]} a${t[0]},${t[0]} 0 0 1 ${t[0]},${-t[0]} h${e.width-t[0]-t[1]} a${t[1]},${t[1]} 0 0 1 ${t[1]},${t[1]} v${e.height-t[1]-t[2]} a${t[2]},${t[2]} 0 0 1 ${-t[2]},${t[2]} h${-e.width+t[2]+t[3]} a${t[3]},${t[3]} 0 0 1 ${-t[3]},${-t[3]} v${-e.height+t[3]+t[0]} `;else a=`M${e.left},${e.top} h${e.width} v${e.height} h${-e.width} v${-e.height} `;let o=M("path",{d:a,class:r});if(i&&(o.addEventListener("mouseenter",l=>{this.parent.setAttribute("title",i)}),o.addEventListener("mouseleave",l=>{this.parent.setAttribute("title","")})),this.group.appendChild(o),s){this.label_group.appendChild(M("path",{class:"label-target",d:a}));let l=n||{x:Math.round(e.left+e.width/2),y:Math.round(e.top-10)},d=M("g",{class:"data-label",transform:`translate(${l.x},${l.y})`});this.label_group.appendChild(d);let u=M("text",{x:0,y:0},s);d.appendChild(u);let h=u.getBoundingClientRect(),f=h.height,p=h.width+8;l.y-h.height<4&&(l.y-=l.y-h.height-4,d.setAttribute("transform",`translate(${l.x},${l.y})`)),u.setAttribute("x",Math.floor(-h.width/2).toString());let m=Math.ceil(f*.125),_=M("rect",{rx:3,x:-p/2,y:Math.round(-f+m*2/3),width:p,height:f+m});d.insertBefore(_,u)}}RenderText(e,t,r,i,s){let n=M("text",{x:i.x,y:i.y,class:s},t);switch(r){case"right":n.style.textAnchor="end";break;case"center":n.style.textAnchor="middle";break;default:n.style.textAnchor="start";break}(e||this.group).appendChild(n)}RenderDonut(e,t,r,i,s,n,a){let o=-Math.PI/2,l=0;n&&(r*=.8,i*=.7);let d=(u,h,f)=>[Math.cos(f)*h+u.x,Math.sin(f)*h+u.y];for(let u of e){let h=u.title||"",f=u.percent,p=u.index,m=[],_=0,b=d.bind(0,t,r),g=d.bind(0,t,i);if(f>.5){_=o+f/2*Math.PI*2,l=o+f*Math.PI*2;let w=_-o,S=l-_;m.push(`M${b(o)}`,`A${r},${r},${w},0,1,${b(_)}`,`A${r},${r},${S},0,1,${b(l)}`,`L${g(l)}`,`A${i},${i},${S},0,0,${g(_)}`,`A${i},${i},${w},0,0,${g(o)}`,"Z")}else{l=o+f*Math.PI*2,_=(l-o)/2+o;let w=l-o;m.push(`M${b(o)}`,`A${r},${r},${w},0,1,${b(l)}`,`L${g(l)}`,`A${i},${i},${w},0,0,${g(o)}`,"Z")}let x=M("path",{d:m,class:typeof p>"u"?void 0:`series-${p}`});typeof p<"u"&&x.setAttribute("data-index",p.toString());let v=M("g",{class:a});if(v.appendChild(x),this.group.appendChild(v),f>=.05&&h){let w=r-i;m=[];let S=d(t,i+(r-i)/2+w,_);m.push(`M${d(t,i+(r-i)/2,_)}`),m.push(`L${S}`),v.appendChild(M("path",{d:m,class:"callout"}));let R=[],E=M("text",{class:"callout-label"});v.appendChild(E);let H=_+Math.PI/2,Z=h;E.textContent=Z;let Le=E.getBoundingClientRect(),De={width:Le.width,height:Le.height},[he,C]=S;he+=De.height/2*Math.cos(_),C+=De.height/4+De.height/2*Math.sin(_);let ee=!1;H>Math.PI?he-De.width<=s.left&&(ee=!0):he+De.width>s.right&&(ee=!0);let ae=/[\s-]/;if(ee&&ae.test(Z)){let K=-1,Y=1,Q=[];for(let V=0;V<Z.length;V++)if(ae.test(Z[V])){let $=Math.abs(.5-V/Z.length);$<Y&&(Y=$,K=V)}K>0&&(R.push(Z.substr(0,K+1).trim()),R.push(Z.substr(K+1).trim()))}if(R.length){let K=0,Y=0,Q=R.map(V=>{E.textContent=V,Le=E.getBoundingClientRect();let $={width:Le.width,height:Le.height};return Y=Math.max(Y,$.width),{text:V,metrics:$}});E.textContent="";for(let V of Q){let $=document.createElementNS(vt,"tspan");$.textContent=V.text;let ss=H>Math.PI?he-(Y-V.metrics.width)/2:he+(Y-V.metrics.width)/2;$.setAttribute("x",ss.toString()),$.setAttribute("dy",K.toString()),E.appendChild($),K=V.metrics.height}}let le=H>Math.PI?"end":"start";E.setAttribute("text-anchor",le),E.setAttribute("x",he.toString()),E.setAttribute("y",C.toString()),typeof p<"u"&&E.setAttribute("data-index",p.toString())}o=l}}};var P=class{static Scale(e,t,r=6.5){return fi(e,t,r)}static Range(e){let t,r;for(let s of e)typeof s>"u"||((typeof t>"u"||t>s)&&(t=s),(typeof r>"u"||r<s)&&(r=s));let i=typeof t>"u"||typeof r>"u"?0:r-t;return{min:t,max:r,range:i}}static ApplyScale(e,t,r){return t*(e-r.min)/(r.max-r.min)}static Flatten(e){let t=[];if(Array.isArray(e))for(let r of e)Array.isArray(r)?t=t.concat(this.Flatten(r)):t.push(r);else typeof e<"u"&&t.push(e);return t}};rs();var Yr="#,##0.00",rt=class{constructor(e=new sr){this.renderer=e}chart_data={type:"null"};margin={top:.025,left:.05,bottom:.025,right:.075};Initialize(e){this.renderer.Initialize(e)}Exec(e,t){let r=t?.value||[];switch(e.toLowerCase()){case"column.chart":this.CreateColumnChart(r,"column");break;case"bar.chart":this.CreateColumnChart(r,"bar");break;case"line.chart":this.CreateLineChart(r,"line");break;case"area.chart":this.CreateLineChart(r,"area");break;case"donut.chart":case"pie.chart":this.CreateDonut(r,e.toLowerCase()==="pie.chart");break;case"scatter.plot":this.CreateScatterChart(r,"plot");break;case"scatter.line":this.CreateScatterChart(r,"line");break;default:this.Clear();break}}Clear(){this.chart_data={type:"null"}}CreateColumnChart(e,t){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),s;if(e[1]){s=(e[1].type===8?P.Flatten(e[1].value):P.Flatten(e[1])).map(d=>d?d.type===5&&d.value.type==="metadata"?typeof d.value.value=="number"?D.Get(d.value.format||Yr).Format(d.value.value):d.value.value:typeof d.value=="number"?D.Get(d.format||Yr).Format(d.value):d.value:"");let l=r.reduce((d,u)=>Math.max(d,u.y.data.length),0);for(l<s.length&&(s=s.slice(0,l));l>s.length;)s.push("")}let n=e[2]?.toString()||void 0,a=e[3]?.toString()||void 0;if(this.chart_data={type:t,legend:i.legend,legend_style:1,series2:r,scale:i.y.scale,title:n,y_labels:t==="bar"?s:i.y.labels,x_labels:t==="bar"?i.y.labels:s},a){this.chart_data.round=/round/i.test(a),this.chart_data.data_labels=/labels/i.test(a);let o=a.match(/labels="(.*?)"/);o&&r?this.ApplyLabels(r,o[1],s):(o=a.match(/labels=([^\s\r\n,]+)(?:\W|$)/),o&&r&&this.ApplyLabels(r,o[1],s)),o=a.match(/class=([\w_-]+)(?:\W|$)/),o&&(this.chart_data.class_name=o[1])}}ReadSeries(e){let t={x:{data:[]},y:{data:[]}};if(e[3]&&typeof e[3]=="number"&&(t.index=e[3]),e[4]&&(t.subtype=e[4].toString()),e[0]){let r=P.Flatten(e[0]);typeof r[0]=="object"?t.label=r[0]?.value?.toString()||"":t.label=r[0].toString()}if(e[2]&&typeof e[2]=="object"&&e[2].type===8){let r=P.Flatten(e[2].value);if(t.y.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value?.format){t.y.format=r[0].value?.format;let i=D.Get(t.y.format);t.y.labels=t.y.data.map(s=>s===void 0?void 0:i.Format(s))}}if(e[1]&&typeof e[1]=="object"&&e[1].type===8){let r=P.Flatten(e[1].value);t.x.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value.format&&(t.x.format=r[0].value.format)}for(let r of[t.x,t.y])if(r.data.length){let i=r.data.filter(s=>s||s===0);r.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)}}return t}ArrayToSeries(e){let t={x:{data:[]},y:{data:[]}},r=P.Flatten(e.value);if(t.y.data=r.map((s,n)=>typeof s.value=="number"?s.value:typeof s.value.value?.real=="number"?(t.x.data[n]=s.value.value.real,s.value.value.imaginary):typeof s.value.value=="number"?s.value.value:void 0),r[0].value.format){t.y.format=r[0].value.format||"";let s=D.Get(t.y.format||"");t.y.labels=t.y.data.map(n=>n===void 0?void 0:s.Format(n))}let i=t.y.data.filter(s=>s||s===0);if(t.y.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)},t.x.data.length){let s=t.x.data.filter(n=>typeof n=="number");if(t.x.range={min:Math.min.apply(0,s),max:Math.max.apply(0,s)},r[0].value.format){t.x.format=r[0].value.format||"";let n=D.Get(t.x.format||"");t.x.labels=t.x.data.map(a=>a===void 0?void 0:n.Format(a))}}return t}TransformSeriesData(e,t){if(!e)return[];let r=[];if(e.type===5){if(e.key==="group"){if(Array.isArray(e.value)){for(let n of e.value)if(n&&typeof n=="object")if(n.key==="series"){let a=this.ReadSeries(n.value);r.push(a)}else n.type===8&&r.push(this.ArrayToSeries(n))}}else if(e.key==="series"){let n=this.ReadSeries(e.value);r.push(n)}}else e.type===8&&r.push(this.ArrayToSeries(e));let i,s=0;if(t?.type===8){let n=P.Flatten(t.value),a="0.00###";n[0]&&n[0].type===5&&(a=n[0].value.format);let o=n.map(d=>{if(d.type===3)return d.value;if(d.type===5)return d.value.value}),l=o.filter(d=>typeof d=="number");i={data:o,format:a,range:{min:Math.min.apply(0,l),max:Math.max.apply(0,l)}}}for(let n of r)s=Math.max(s,n.y.data.length),n.x.data.length&&(i||(i=n.x));if(!i){i={data:[],range:{min:0,max:Math.max(0,s-1)}};for(let n=0;n<s;n++)i.data.push(n)}for(let n of r)n.x.data.length||(n.x=i);return r}CommonData(e,t,r){let i="",s="";for(let b of e)b.y.format&&!s&&(s=b.y.format),b.x.format&&!i&&(i=b.x.format);let n;e.some(b=>b.label&&b.label.length>0)&&(n=e.map((b,g)=>({label:b.label||`Series ${g+1}`,index:typeof b.index=="number"?b.index:g+1})));let a=e.filter(b=>b.x.range),o=Math.min.apply(0,a.map(b=>b.x.range?.min||0)),l=Math.max.apply(0,a.map(b=>b.x.range?.max||0)),d=e.filter(b=>b.y.range),u=Math.min.apply(0,a.map(b=>b.y.range?.min||0)),h=Math.max.apply(0,a.map(b=>b.y.range?.max||0));typeof t<"u"&&(u=Math.min(u,t)),typeof r<"u"&&(h=Math.max(h,r));let f=P.Scale(o,l,7),p=P.Scale(u,h,7),m,_;if(i){m=[];let b=D.Get(i);for(let g=0;g<=f.count;g++)m.push(b.Format(f.min+g*f.step))}if(s){_=[];let b=D.Get(s);for(let g=0;g<=p.count;g++)_.push(b.Format(p.min+g*p.step))}return{x:{format:i,scale:f,labels:m},y:{format:s,scale:p,labels:_},legend:n}}CreateScatterChart(e,t="plot"){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),s=e[1]?.toString()||void 0,n=e[2]?.toString()||void 0;if(this.chart_data={legend:i.legend,style:t,type:"scatter2",series:r,title:s,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:t==="line",points:t==="plot"},n){this.chart_data.markers=/marker/i.test(n),this.chart_data.smooth=/smooth/i.test(n),this.chart_data.data_labels=/labels/i.test(n);let a=n.match(/labels="(.*?)"/);a&&this.chart_data.series?this.ApplyLabels(this.chart_data.series,a[1]):(a=n.match(/labels=([^\s\r\n,]+)(?:\W|$)/),a&&this.chart_data.series&&this.ApplyLabels(this.chart_data.series,a[1])),a=n.match(/class=([\w_-]+)(?:\W|$)/),a&&(this.chart_data.class_name=a[1])}}ApplyLabels(e,t,r){for(let i of e){let s={x:D.Get(i.x.format||""),y:D.Get(i.y.format||"")};i.y.labels=[];for(let n=0;n<i.y.data.length;n++){let a=r?r[n]:typeof i.x.data[n]=="number"?s.x.Format(i.x.data[n]):"",o=typeof i.y.data[n]=="number"?s.y.Format(i.y.data[n]):"";i.y.labels[n]=t.replace(/\bx\b/g,a).replace(/\by\b/g,o)}}}CreateLineChart(e,t){let r=this.TransformSeriesData(e[0],e[1]),i=this.CommonData(r,0,0),s=e[2]?.toString()||void 0,n=e[3]?.toString()||void 0;if(this.chart_data={legend:i.legend,type:"scatter2",series:r,title:s,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:!0,filled:t==="area"},n){this.chart_data.smooth=/smooth/i.test(n);let a=n.match(/class=([\w_-]+)(?:\W|$)/);a&&(this.chart_data.class_name=a[1])}}CreateDonut(e,t=!1){let r=e[0]?.type===8?e[0].value:e[0],i=P.Flatten(r),s=i.map(b=>typeof b.value.value=="number"?b.value.value:void 0),n=e[1]?.type===8?e[1].value:e[1],a=P.Flatten(n).map(b=>{if(b&&typeof b=="object"){let g=b.value?.value;return typeof g=="number"&&b.value?.format?D.Get(b.value?.format).Format(g):g?g.toString():""}else return b?b.toString():""});s=s.map(b=>b<0?(console.warn("pie/donut chart does not support negative values (omitted)"),0):b);let o=e[2]||"",l=0,d=s.map((b,g)=>(typeof b<"u"&&(l+=b),{value:b,label:a[g]||"",index:g+1,percent:0}));if(l)for(let b of d)b.percent=(b.value||0)/l;let u=i.length&&i[0].value?.format?i[0].value.format:"",h=D.Get(u||Yr),f=D.Get("percent");typeof e[4]>"u"&&e[1]&&(e[4]="label");let p=e[4]||"";if(p)for(let b of d){let g=h.Format(b.value||0),x=f.Format(b.percent);b.title=p.replace(/value%/ig,f.Format(b.value||0)).replace(/value/ig,g).replace(/percent/ig,x).replace(/label/ig,b.label||"").trim()}let m=(e[3]||"").toString().trim(),_=m.toUpperCase();if(_==="ASC"||_==="ASCENDING"||_==="INC")d.sort((b,g)=>(b.value||0)-(g.value||0));else if(_==="DESC"||_==="DESCENDING"||_==="DEC")d.sort((b,g)=>(g.value||0)-(b.value||0));else{let b=m.match(/sort=([\w]+)(?:\W|$)/i);b&&(_=b[1],/^(asc|inc)/i.test(_)?d.sort((g,x)=>(g.value||0)-(x.value||0)):/^(desc|dec)/i.test(_)&&d.sort((g,x)=>(x.value||0)-(g.value||0)))}if(this.chart_data={type:t?"pie":"donut",slices:d,title:o},m){let b=m.match(/class=([_-\w]+)(?:\W|$)/);b&&(this.chart_data.class_name=b[1])}}Resize(){this.renderer.Resize()}Update(){this.renderer.Resize(),this.renderer.Prerender(),this.renderer.Clear(this.chart_data.class_name);let e=new Me(0,0,this.renderer.size.width,this.renderer.size.height),t={top:Math.round(e.height)*this.margin.top,bottom:Math.round(e.height)*this.margin.bottom,left:Math.round(e.width)*this.margin.left,right:Math.round(e.width)*this.margin.right},r=this.chart_data.title;if(r&&this.renderer.RenderTitle(r,e,t.top,this.chart_data.title_layout||"top"),e.top+=t.top,e.left+=t.left,e.bottom-=t.bottom,e.right-=t.right,this.chart_data.legend&&this.chart_data.legend.length){let i=0;this.chart_data.title&&(!this.chart_data.title_layout||this.chart_data.title_layout==="top")&&(i=1);let s=this.chart_data.legend_position||i;this.renderer.Legend({labels:this.chart_data.legend,position:s,style:this.chart_data.legend_style,layout:s===0||s===1?0:1,area:e})}if(this.chart_data.type==="histogram"||this.chart_data.type==="line"||this.chart_data.type==="area"||this.chart_data.type==="column"||this.chart_data.type==="histogram2"||this.chart_data.type==="bar"||this.chart_data.type==="scatter2"){let i=[],s=0;if(this.chart_data.x_labels&&this.chart_data.x_labels.length&&(i=this.chart_data.x_labels.map(n=>{let a=this.renderer.MeasureText(n,["axis-label","x-axis-label"],!0);return s=Math.max(s,a.height),a})),this.chart_data.y_labels&&this.chart_data.y_labels.length){let n=[],a=0,o=0,l=this.chart_data.type==="scatter2"?this.chart_data.y_scale:this.chart_data.scale,d=this.chart_data.type==="bar"?this.chart_data.y_labels.length:l.count+1;for(let u=0;u<d;u++){let h=this.renderer.MeasureText(this.chart_data.y_labels[u],["axis-label","y-axis-label"]);n.push({label:this.chart_data.y_labels[u],metrics:h}),a=Math.max(a,h.width),o=Math.max(o,h.height)}e.bottom=Math.round(e.bottom-o/2),e.top=Math.round(e.top+o/2),i.length&&(e.bottom-=s+t.bottom),this.chart_data.type==="bar"?this.renderer.RenderYAxisBar(e,e.left+a,n,["axis-label","y-axis-label"]):this.renderer.RenderYAxis(e,e.left+a,n,["axis-label","y-axis-label"]),e.left+=a+t.left}if(i.length&&this.chart_data.x_labels&&this.chart_data.x_labels.length){let n=this.chart_data.type==="histogram2",a=this.chart_data.type!=="line"&&this.chart_data.type!=="area"&&this.chart_data.type!=="bar"&&this.chart_data.type!=="scatter2"&&this.chart_data.type!=="histogram2";n&&this.renderer.RenderXAxisTicks(e,a,this.chart_data.x_labels.length),this.chart_data.y_labels&&(e.bottom+=s+t.bottom),this.renderer.RenderXAxis(e,a,this.chart_data.x_labels,i,["axis-label","x-axis-label"]),e.bottom-=s+t.bottom}}switch(this.chart_data.type){case"scatter":this.renderer.RenderPoints(e,this.chart_data.x,this.chart_data.y,"mc mc-correlation series-1");break;case"scatter2":if(this.renderer.RenderGrid(e,this.chart_data.y_scale.count,this.chart_data.x_scale.count+1,"chart-grid"),this.chart_data.series){for(let i=0;i<this.chart_data.series.length;i++){let s=this.chart_data.series[i],n=!!this.chart_data.lines,a=!!this.chart_data.points;s.subtype==="plot"?(a=!0,n=!1):s.subtype==="line"&&(a=!1,n=!0);let o=typeof s.index=="number"?s.index:i+1;this.renderer.RenderScatterSeries(e,s.x.data,s.y.data,this.chart_data.x_scale,this.chart_data.y_scale,n,a,!!this.chart_data.filled,!!this.chart_data.markers,!!this.chart_data.smooth,`scatter-plot series-${o}`)}if(this.chart_data.data_labels)for(let i=0;i<this.chart_data.series.length;i++){let s=this.chart_data.series[i];s.y.labels&&this.renderer.RenderDataLabels(e,s.x.data,s.y.data,this.chart_data.x_scale,this.chart_data.y_scale,s.y.labels,i+1)}}break;case"pie":case"donut":{let i=Math.min(e.height,e.width)/2*.9,s=this.chart_data.type==="pie"?0:i*.8;this.renderer.RenderDonut(this.chart_data.slices,e.center,i,s,e,!0,"donut")}break;case"line":case"area":{let i=this.chart_data.scale;if(this.chart_data.series){let s=this.chart_data.x_scale?this.chart_data.x_scale.max:Math.max.apply(0,this.chart_data.series.map(o=>o.length)),n=this.chart_data.smooth?this.renderer.RenderSmoothLine:this.renderer.RenderLine;this.renderer.RenderGrid(e,this.chart_data.scale.count,this.chart_data.x_scale?this.chart_data.x_scale.count+1:s,"chart-grid");let a=0;for(let o of this.chart_data.series){let l=o.map(u=>{if(!(typeof u>"u"))return P.ApplyScale(u,e.height,i)});if(l.length<s)for(let u=l.length;u<s;u++)l.push(void 0);let d=[this.chart_data.type==="area"?"chart-area":"chart-line",`series-${a+1}`];n.call(this.renderer,e,l,this.chart_data.type==="area",this.chart_data.titles,d),a++}}}break;case"bar":{let i;if(this.renderer.RenderBarGrid(e,this.chart_data.scale.count,"chart-grid"),this.chart_data.series2){let s=0,n=this.chart_data.series2.length;for(let h of this.chart_data.series2)s=Math.max(s,h.y.data.length);let a=e.height/s,o=.7;typeof this.chart_data.space=="number"&&(o=Math.max(0,Math.min(1,1-this.chart_data.space)));let l=a*(1-o)/2,d=(a-l*2)/n,u=0;if(this.chart_data.scale.min<0&&(u=P.ApplyScale(0,e.width,this.chart_data.scale)),this.chart_data.round){let h=Math.floor(d/2);i=[0,h,h,0]}for(let h=0;h<n;h++){let f=this.chart_data.series2[h],p=typeof f.index=="number"?f.index:h+1;for(let m=0;m<f.y.data.length;m++){let _=f.y.data[m];if(typeof _=="number"){let b=Math.round(e.top+m*a+l)+h*d,g=0,x=0,v=!1;u?_>0?(x=P.ApplyScale(_+this.chart_data.scale.min,e.width,this.chart_data.scale),g=e.left+u):(x=P.ApplyScale(this.chart_data.scale.min-_,e.width,this.chart_data.scale),g=e.left+u-x,v=!0):(x=P.ApplyScale(_,e.width,this.chart_data.scale),g=e.left);let w=void 0;x&&this.renderer.RenderRectangle(new Me(g,b,g+x,b+d),i,["chart-column",`series-${p}`],w||void 0)}}}}}break;case"column":case"histogram2":if(this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid"),this.chart_data.series2){let i=0,s=this.chart_data.series2.length;for(let h of this.chart_data.series2)i=Math.max(i,h.y.data.length);let n=e.width/i,a=.7;typeof this.chart_data.space=="number"&&(a=Math.max(0,Math.min(1,1-this.chart_data.space)));let o=n*(1-a)/2,l=(n-o*2)/s,d=0;if(this.chart_data.scale.min<0&&(d=P.ApplyScale(0,e.height,this.chart_data.scale)),this.chart_data.callouts&&this.chart_data.x_scale){let h=this.chart_data.x_scale,f=this.chart_data.callouts.map((p,m)=>{let _=Math.round(e.left+P.ApplyScale(p.value,e.width,h))+.5;return{x1:_,y1:e.bottom-e.height,x2:_,y2:e.bottom,classes:`callout-${m+1}`}});this.renderer.RenderCalloutLines(f)}let u;if(this.chart_data.round){let h=Math.floor(l/2);u=[h,h,0,0]}for(let h=0;h<s;h++){let f=this.chart_data.series2[h],p=typeof f.index=="number"?f.index:h+1;for(let m=0;m<f.y.data.length;m++){let _=f.y.data[m];if(typeof _=="number"){let b=e.left+m*n+o+h*l,g=0,x=0,v=!1;d?_>0?(g=P.ApplyScale(_+this.chart_data.scale.min,e.height,this.chart_data.scale),x=e.bottom-g-d):(g=P.ApplyScale(this.chart_data.scale.min-_,e.height,this.chart_data.scale),x=e.bottom-d,v=!0):(g=P.ApplyScale(_,e.height,this.chart_data.scale),x=e.bottom-g);let w=void 0;if(g){let S=this.chart_data.data_labels&&f.y.labels?f.y.labels[m]:"",R={x:Math.round(b+l/2),y:Math.round(x-10)};this.renderer.RenderRectangle(new Me(b,x,b+l,x+g),u,["chart-column",`series-${p}`],w||void 0,S,R)}}}}}break;case"histogram":{this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid");let i=e.width/this.chart_data.count,s=this.chart_data.column_width,n=i*(1-s)/2;for(let a=0;a<this.chart_data.count;a++){let o=Math.round(e.left+a*i+n),l=i-n*2,d=P.ApplyScale(this.chart_data.bins[a],e.height,this.chart_data.scale),u=e.bottom-d,h=this.chart_data.titles?this.chart_data.titles[a]:void 0;this.renderer.RenderRectangle(new Me(o,u,o+l,u+d),void 0,"chart-column series-1",h||void 0)}}break}}IsCellData(e){return typeof e=="object"&&typeof e.address=="object"&&typeof e.address.row=="number"&&typeof e.address.column=="number"}};k(rt,"functions_registered",!1);var Pe=(...c)=>({type:5,value:c,key:"arguments"}),Zr={Group:{arguments:[{name:"Array...",metadata:!0}],fn:(...c)=>({type:5,value:c,key:"group"})},Series:{arguments:[{name:"Label"},{name:"X",metadata:!0},{name:"Y",metadata:!0},{name:"index"},{name:"subtype"}],fn:(...c)=>({type:5,value:c,key:"series"})},"Bar.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"ChartTitle"}],fn:Pe},"Line.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:Pe},"Area.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:Pe},"Pie.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels"},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:Pe},"Donut.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels",metadata:!0},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:Pe},"Scatter.Line":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:Pe},"Scatter.Plot":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:Pe},"Column.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"Chart Title"}],fn:Pe}};var je=class{loaded=!1;toolbar_ctl;get Localization(){return T}language_model;events=new te;calculation=0;file_version=0;last_save_version=0;calculator;grid;model;options;dialog;spinner;file_chooser;file_chooser_operation=0;toolbar;selection_state;get parser(){return this.calculator.parser}view;key_listener;node;views=[];focus_target=this;parent_view;export_worker;undo_pointer=0;undo_stack=[];last_selection;get modified(){return this.undo_stack.length!==1}get document_name(){return this.grid.model.document_name}set document_name(e){this.grid.model.document_name=e,this.DocumentChange()}get user_data(){return this.grid.model.user_data}set user_data(e){this.grid.model.user_data=e,this.DocumentChange()}get scale(){return this.grid.scale}set scale(e){this.grid.scale=e}get headless(){return this.grid.headless}set headless(e){this.grid.headless!==e&&(this.grid.headless=e,e||(this.grid.Update(!0),this.RebuildAllAnnotations()))}get state(){return this.file_version}get dirty(){return this.file_version!==this.last_save_version}constructor(e){this.options={...rr,...e},typeof this.options.imaginary_value=="string"&&(X.imaginary_character=this.options.imaginary_value);let t=this.options.network_document,r,i;this.options.storage_key&&!this.options.toll_initial_load&&!e.model&&(r=localStorage.getItem(this.options.storage_key)||void 0,r&&(i="local-storage"),!r&&this.options.alternate_document&&(t=this.options.alternate_document)),this.options.storage_key&&!e.model&&window.addEventListener("beforeunload",()=>{this.options.storage_key&&this.SaveLocalStorage(this.options.storage_key)});let s;typeof this.options.container=="string"?s=document.getElementById(this.options.container):this.options.container&&(s=this.options.container);let n={insert_function_button:!1,in_cell_editor:!0,repaint_on_cell_change:!1,scrollbars:this.options.scrollbars,markdown:!!this.options.markdown,formula_bar:this.options.formula_bar,expand_formula_button:this.options.expand_formula_button,tab_bar:this.options.tab_bar,add_tab:this.options.add_tab,delete_tab:this.options.delete_tab,expand:this.options.expand};if(this.options.scale&&(n.initial_scale=this.options.scale),this.options.stats&&(n.stats=this.options.stats,n.tab_bar=!0),this.options.scale_control&&(n.scale_control=!0,n.tab_bar=!0,this.options.persist_scale)){this.options.persist_scale===!0?n.persist_scale_key="spreadsheet-scale":n.persist_scale_key="spreadsheet-scale-"+this.options.persist_scale;let a=localStorage.getItem(n.persist_scale_key);if(a)try{let o=JSON.parse(a);n.initial_scale=o.scale||1}catch{console.warn("parsing persisted scale failed")}}if(e.model?(this.model=e.model.model,this.calculator=e.model.calculator):(this.model=new bt,this.model.sheets.Add(j.Blank(this.model.theme_style_properties)),this.calculator=this.CreateCalculator(this.model,e)),this.grid=new mt(n,this.parser,this.model),this.options.headless&&(this.grid.headless=!0),s){this.view=document.createElement("div"),this.view.classList.add("treb-view"),this.node=document.createElement("div"),this.view.appendChild(this.node),s.appendChild(this.view),this.node.addEventListener("focusin",()=>{this.focus_target=this}),this.key_listener=this.HandleKeyDown.bind(this),s.addEventListener("keydown",this.key_listener);let a=!!(r||this.options.network_document);this.grid.Initialize(this.node,a),this.options.dnd&&(this.node.addEventListener("dragenter",o=>this.HandleDrag(o)),this.node.addEventListener("dragover",o=>this.HandleDrag(o)),this.node.addEventListener("drop",o=>this.HandleDrop(o))),this.grid.grid_events.Subscribe(o=>{switch(o.type){case"error":this.dialog?.ShowDialog({type:"error",...this.TranslateGridError(o.code),timeout:3e3,close_box:!0});break;case"selection":this.UpdateSelection(o.selection),this.UpdateSelectionStyle(o.selection);break;case"sheet-change":this.OnSheetChange(o),this.UpdateSelectionStyle();break;case"data":{let l=this.last_selection;(this.calculation===0?this.Recalculate(o):Promise.resolve()).then(()=>{this.DocumentChange(l)})}break;case"style":this.DocumentChange(),this.UpdateDocumentStyles(!1),this.UpdateSelectionStyle();break;case"scale":this.RebuildAllAnnotations();break;case"annotation":if(o.annotation){let l=o.annotation.view[this.grid.view_index]||{};switch(this.DocumentChange(),o.event){case"create":this.InflateAnnotation(o.annotation),this.calculator.UpdateAnnotations(o.annotation,this.grid.active_sheet),this.grid.AnnotationUpdated(o.annotation);break;case"delete":this.calculator.RemoveAnnotation(o.annotation);break;case"update":l.update_callback?(l.update_callback(),this.grid.AnnotationUpdated(o.annotation)):console.info("annotation update event without update callback"),this.calculator.UpdateAnnotations(o.annotation,this.grid.active_sheet);break;case"resize":l.resize_callback&&(l.resize_callback(),this.grid.AnnotationUpdated(o.annotation));break}}else console.info("annotation event without annotation");break;case"structure":{let l=this.last_selection;o.rebuild_required?(this.calculator.Reset(),(this.calculation===0?this.Recalculate(o):Promise.resolve()).then(()=>{this.DocumentChange(l)})):this.DocumentChange(l)}this.UpdateSelectionStyle();break;case"cell-event":this.HandleCellEvent(o);break}}),this.options.prompt_save&&window.addEventListener("beforeunload",o=>{this.last_save_version!==this.file_version&&(o.preventDefault(),o.returnValue="")})}else console.info("not initializing grid; don't call UI functions"),this.grid.headless=!0;if(r?this.LoadDocument(JSON.parse(r),{recalculate:!!this.options.recalculate,source:i}):t||this.calculator.RebuildClean(!0),this.FlushUndo(),this.grid.ShowHeaders(this.options.headers),this.options.scroll&&!this.options.network_document){let a=this.options.scroll;requestAnimationFrame(()=>{this.ScrollTo(a)})}this.UpdateAC(),this.options.global_name&&(self[this.options.global_name]=this),s&&this.options.spinner&&(this.spinner=new tr(s)),t&&!e.model&&!r&&this.LoadNetworkDocument(t,this.options),s&&(this.dialog=new er(s))}static BuildPath(){let e=typeof document>"u"?[]:document.querySelectorAll("script"),t="treb-bundle",r=new RegExp(t);for(let i=0;i<e.length;i++){let n=e[i].src;if(n&&r.test(n)){n&&/\?.*?engine/i.test(n)&&(this.enable_engine=!0),n&&/\?.*?format/i.test(n)&&(this.enable_formatter=!0),this.treb_embedded_script_path=n,this.treb_base_path=n.replace(new RegExp(t+".*$"),"");return}}r=new RegExp(`import.*?from.*?['"](.*?${t}.*?)['"]`);for(let i=0;i<e.length;i++){let s=e[i];if(!s.src){let a=(s.textContent||"").match(r);if(a){let o=a[1];this.treb_embedded_script_path=o,this.treb_base_path=o.replace(new RegExp(t+".*$"),"");return}}}}UpdateAC(){let e=this.calculator.SupportedFunctions();if(this.language_model){let t={};for(let r of this.language_model.functions||[])t[r.base.toUpperCase()]=r;e=e.map(r=>t[r.name.toUpperCase()]||r)}this.grid.SetAutocompleteFunctions(e)}CreateCalculator(e,t){return new Qt(e,{complex_numbers:t.complex})}TranslateGridError(e){switch(e){case 0:return{message:"No error"};case 2:return{message:"You can't change part of an array"};case 3:return{message:"Invalid value (data validation)"};default:return{message:`Unknown error (${e})`}}}CreateView(){let e=new je({...this.options,global_name:void 0,model:this});return e.parent_view=this,e}Unsplit(){let e=this.views.pop();if(e){let t=e.view;t.grid.grid_events.CancelAll(),t.events.CancelAll(),t.view?.parentElement&&(t.key_listener&&t.view.parentElement.removeEventListener("keydown",t.key_listener),t.view.parentElement.removeChild(t.view)),this.node?.focus()}}Split(){let e=this.CreateView();e.grid.EnsureActiveSheet(!0),e.node?.addEventListener("focusin",()=>{this.focus_target=e}),e.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(this.grid.EnsureActiveSheet(),this.grid.UpdateLayout(),this.grid.tab_bar?.Update())}),e.Subscribe(r=>{switch(r.type){case"selection":break;default:e.UpdateAnnotations(),this.grid.Update(!0)}}),this.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(e.grid.EnsureActiveSheet(),e.grid.UpdateLayout(),e.grid.tab_bar?.Update())});let t=this.Subscribe(r=>{switch(r.type){case"selection":break;case"load":case"reset":e.grid.EnsureActiveSheet(!0),e.UpdateAnnotations(),e.grid.Update(!0);break;default:e.UpdateAnnotations(),e.grid.Update(!0)}});this.views.push({view:e,subscription:t})}HandleToolbarEvent(e){let t={},r=i=>{let s=this.grid.GetSelection();if(s&&!s.empty){let n=s.area.spreadsheet_label;this.InsertAnnotation(`=${i}(${n},,"${n}")`,void 0,void 0,",")}};if(e.type==="format")t.number_format=e.format||"General";else if(e.type==="font-size"){let i=this.grid.GetSelection(),s=this.grid.active_sheet.RealArea(i.area);this.grid.ApplyStyle(void 0,e.style,!0);let n=[];for(let a=s.start.row;a<=s.end.row;a++)n.push(a);this.grid.SetRowHeight(n,void 0,!1)}else if(e.type==="button")switch(e.command){case"font-scale":{let i=this.grid.GetSelection(),s=this.grid.active_sheet.RealArea(i.area),n=Number(e.data?.scale||1);if(n&&!isNaN(n)){this.grid.ApplyStyle(void 0,{font_size:{unit:"em",value:n}},!0);let a=[];for(let o=s.start.row;o<=s.end.row;o++)a.push(o);this.selection_state?.merge||this.grid.SetRowHeight(a,void 0,!1)}}break;case"update-comment":this.SetNote(void 0,e.data?.comment||"");break;case"clear-comment":this.SetNote(void 0,"");break;case"border":{let i=1,s=(e.data?.border||"").replace(/^border-/,"");s==="double-bottom"&&(s="bottom",i=2),s&&this.grid.ApplyBorders2(void 0,s,e.data?.color||void 0,i)}break;case"color":case"background-color":case"foreground-color":case"border-color":switch(e.data?.target){case"border":t.border_top_fill=t.border_bottom_fill=t.border_left_fill=t.border_right_fill=e.data?.color||{};break;case"foreground":t.text=e.data?.color||{theme:1};break;case"background":t.fill=e.data?.color||{};break}break;case"insert-row":this.InsertRows();break;case"insert-column":this.InsertColumns();break;case"delete-row":this.DeleteRows();break;case"delete-column":this.DeleteColumns();break;case"insert-sheet":this.grid.InsertSheet();break;case"delete-sheet":this.grid.DeleteSheet();break;case"freeze":{let i=this.grid.GetFreeze();i.rows||i.columns?this.Freeze(0,0):this.FreezeSelection()}break;case"insert-image":this.InsertImage();break;case"donut-chart":r("Donut.Chart");break;case"column-chart":r("Column.Chart");break;case"bar-chart":r("Bar.Chart");break;case"line-chart":r("Line.Chart");break;case"increase-decimal":case"decrease-decimal":if(this.selection_state?.style){let i=D.Get(this.selection_state.style.number_format||"General");if(i.date_format)break;let s=new X(i.pattern);if(i.magic_decimal){let n=0,a=this.GetRange();Array.isArray(a)||(a=[[a]]);e:for(let o=0;o<a.length;o++)for(let l=0;l<a[o].length;l++){let d=a[o][l];if(typeof d<"u"&&ve(d)){let u=D.Get(this.selection_state.style.number_format||"General",!0),h=u.BaseFormat(d.real),f=u.BaseFormat(d.imaginary);h.parts&&typeof h.parts[1]=="string"&&(n=h.parts[1].length),f.parts&&typeof f.parts[1]=="string"&&(n=Math.max(n,f.parts[1].length));break e}else if(typeof d=="number"){let u=i.BaseFormat(d);u.parts&&typeof u.parts[1]=="string"&&(n=u.parts[1].length);break e}}e.command==="increase-decimal"?s.SetDecimal(n+1):s.SetDecimal(Math.max(0,n-1))}else e.command==="increase-decimal"?s.IncreaseDecimal():s.DecreaseDecimal();t.number_format=s.toString()}break;case"merge":this.grid.MergeCells();break;case"unmerge":this.grid.UnmergeCells();break;case"lock":t={locked:this.selection_state?.style?!this.selection_state.style.locked:!0};break;case"wrap":t={wrap:this.selection_state?.style?!this.selection_state?.style.wrap:!0};break;case"align-left":t={horizontal_align:A.HorizontalAlign.Left};break;case"align-center":t={horizontal_align:A.HorizontalAlign.Center};break;case"align-right":t={horizontal_align:A.HorizontalAlign.Right};break;case"align-top":t={vertical_align:A.VerticalAlign.Top};break;case"align-middle":t={vertical_align:A.VerticalAlign.Middle};break;case"align-bottom":t={vertical_align:A.VerticalAlign.Bottom};break;case"reset":this.Reset();break;case"import-desktop":this.LoadLocalFile();break;case"save-json":this.SaveLocalFile();break;case"save-csv":this.SaveLocalFile("csv");break;case"export-xlsx":this.Export();break;case"recalculate":this.Recalculate();break;default:console.info("unhandled",e.command);break}Object.keys(t).length&&this.grid.ApplyStyle(void 0,t,!0),this.Focus()}CreateToolbar(e){return this.toolbar=new ir(e,this.options,this.grid.theme),this.toolbar.Subscribe(t=>this.focus_target.HandleToolbarEvent(t)),this.UpdateDocumentStyles(!1),this.UpdateSelectionStyle(void 0),this.toolbar}CreateChart(){return this.calculator.RegisterLibrary("treb-charts",Zr)&&this.UpdateAC(),new rt}SetLanguage(e){if(this.language_model=e,!e)this.grid.SetLanguageMap();else{let t={};for(let r of e.functions||[])t[r.base]=r.name;this.grid.SetLanguageMap(t)}this.UpdateAC()}async Batch(e,t=!1){let r=this.last_selection,i=this.grid.Batch(e,t),s=!1,n=!1;for(let a of i)a.type==="data"?s=!0:a.type==="structure"&&a.rebuild_required&&(n=!0);n&&this.calculator.Reset(),(s||n)&&(await this.Recalculate(),this.DocumentChange(r))}Freeze(e=0,t=0){this.grid.Freeze(e,t,!0)}FreezeSelection(){let e=this.grid.GetSelection();if(e.empty)this.grid.Freeze(0,0);else{let t=e.area;t.entire_sheet||(t.entire_row?this.grid.Freeze(t.end.row+1,0):t.entire_column?this.grid.Freeze(0,t.end.column+1):this.grid.Freeze(t.end.row+1,t.end.column+1))}}GetFreeze(){return this.grid.GetFreeze()}UpdateTheme(){this.grid.UpdateTheme(void 0),this.toolbar&&this.toolbar.UpdateTheme(this.grid.theme)}GetSheetID(e){if(typeof e=="number"){let t=this.grid.model.sheets.list[e];if(t)return t.id}else{let t=this.model.sheets.Find(e);if(t)return t.id}}InsertTable(e,t={}){let r=e?this.calculator.ResolveArea(e,this.grid.active_sheet):this.GetSelectionReference().area,i=t.theme;typeof i=="number"&&(i=ur(i)),this.grid.InsertTable(r,t.totals_row,t.sortable,i)}RemoveTable(e){let t=this.ResolveTable(e||this.GetSelectionReference().target);t&&this.grid.RemoveTable(t)}AddSheet(e){this.grid.AddSheet(e);let t=this.model.sheets.list[this.model.sheets.list.length-1];return this.calculator.Reset(),t.id}InsertAnnotation(e,t="treb-chart",r,i){let s;if(r&&(s=F.IsRectangle(r)?r:this.calculator.ResolveArea(r,this.grid.active_sheet)),i&&i!==this.parser.argument_separator){let l={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark};i===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",");let d=this.parser.Parse(e);this.parser.argument_separator=l.argument_separator,this.parser.decimal_mark=l.decimal_mark,d.expression&&(e="="+this.parser.Render(d.expression,{missing:""}))}let{x:n,y:a}=this.grid.GetScrollOffset(),o=this.grid.scale||1;this.grid.CreateAnnotation({type:t,formula:e},void 0,void 0,s||{top:a/o+30,left:n/o+30,width:300,height:300})}InsertImage(){this.SelectFile2(".png, .jpg, .jpeg, .gif, .svg",2)}RenameSheet(e,t){let r;typeof e=="number"?r=this.grid.model.sheets.list[e]:typeof e=="string"?r=this.model.sheets.Find(e):r=this.grid.active_sheet,r&&this.grid.RenameSheet(r,t)}DeleteSheet(e){if(typeof e=="string"){let t=this.model.sheets.Find(e);t&&this.grid.DeleteSheetID(t.id)}else this.grid.DeleteSheet(e);this.calculator.Reset()}HideSheet(e=0,t=!0){this.grid.ShowSheet(e,!t)}ShowSheet(e=0,t=!0){this.grid.ShowSheet(e,t)}ActivateSheet(e){this.grid.ActivateSheet(e)}SetColumnWidth(e,t){this.grid.SetColumnWidth(e,t)}SetRowHeight(e,t){this.grid.SetRowHeight(e,t)}InsertRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row}this.grid.InsertRows(e,t)}InsertColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column}this.grid.InsertColumns(e,t)}DeleteRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row,t=i.rows}this.grid.InsertRows(e,-t)}DeleteColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column,t=i.columns}this.grid.InsertColumns(e,-t)}FilterTable(e,t=0,r){let i=this.ResolveTable(e);if(!i)throw new Error("invalid table reference");r?this.grid.FilterTable(i,t,s=>r.call(0,s.value,s.calculated||void 0,JSON.parse(JSON.stringify(s.style||{})))):this.grid.FilterTable(i,0,()=>!0)}SortTable(e,t={}){let r=this.ResolveTable(e);if(!r)throw new Error("invalid table reference");this.grid.SortTable(r,t)}MergeCells(e){this.grid.MergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}UnmergeCells(e){this.grid.UnmergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}async ExportBlob(){if(!this.export_worker){let e="treb-export-worker";this.export_worker=await this.LoadWorker(e)}return new Promise((e,t)=>{if(this.export_worker){this.export_worker.onmessage=i=>{e(i.data?i.data.blob:void 0)},this.export_worker.onerror=i=>{console.error("export worker error"),console.info(i),t(i)};let r=this.grid.Serialize({rendered_values:!0,expand_arrays:!0,export_colors:!0,decorated_cells:!0,tables:!0,share_resources:!1});r.decimal_mark=T.decimal_separator,this.export_worker.postMessage({command:"export",sheet:r,decorated:this.calculator.DecoratedFunctionList()})}else t("worker failed")})}Revert(){let e=this.options.alternate_document||this.options.network_document;if(e){this.LoadNetworkDocument(e),this.options.storage_key&&(this.SaveLocalStorage("reverted_backup"),localStorage.removeItem(this.options.storage_key));return}console.warn("to revert, there must be a document set in options"),this.dialog?.ShowDialog({title:"Can't revert -- no document is set in options",close_box:!0,timeout:3e3,type:"error"})}Export(){this.ExportBlob().then(e=>{let t="export";this.grid.model.document_name&&(t=this.grid.model.document_name.toLowerCase().replace(/\s+/g,"-")),e&&(this.SaveAs(e,t+".xlsx"),this.last_save_version=this.file_version)}).catch(e=>{throw/invalid uri/i.test(e.message)&&this.dialog?.ShowDialog({title:"Error exporting file",close_box:!0,message:"The worker cannot run from the filesystem, please use a web server.",timeout:3e3,type:"error"}),e})}GetSelectionReference(){return this.grid.GetSelection()}Focus(){this.grid.Focus()}Resize(){this.grid.UpdateLayout(),this.Publish({type:"resize"})}Reset(){if(this.parent_view)return this.parent_view.Reset();this.grid.Reset(),this.ResetInternal(),this.calculator.AttachModel(),this.UpdateAC(),this.Publish({type:"reset"})}LoadFromLocalStorage(e){this.options.storage_key=e;let t=localStorage.getItem(e);if(t)try{let r=JSON.parse(t);return this.LoadDocument(r,{source:"local-storage"}),!0}catch(r){console.error(r)}return!1}async LoadNetworkDocument(e,t){let r=t?t.scroll:void 0,i=t?!!t.recalculate:!1,s=t?t.sheet:void 0,n=/csv(?:$|\?|&)/i.test(e),a=/tsv(?:$|\?|&)/i.test(e);try{this.spinner?.Show();let o=await fetch(e);if(this.spinner?.Hide(),!o.ok)throw new Error("network error");let l=await o.text();if(typeof l=="string")if(n)this.LoadCSV(l,"network-file");else{if(a)throw new Error("tsv not supported (TODO)");{l.substr(0,11)==="&&&START&&&"?l=l.substr(11):l.substr(0,8)==="for(;;);"&&(l=l.substr(8));let d=JSON.parse(l);this.LoadDocument(d,{scroll:r,recalculate:i,override_sheet:s,source:"network-file"})}}}catch(o){console.info("error loading network document",e),console.error(o),this.dialog?.ShowDialog({title:"Error loading file",close_box:!0,message:"The network document returned an error",type:"error",timeout:3e3}),this.Reset()}}async LoadLocalFile(){this.SelectFile2(".treb, .csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/json",1)}ExportDelimited(e={}){if(e={delimiter:",",...e},!e.delimiter||e.delimiter!==","&&e.delimiter!==" ")throw new Error("invalid delimiter");let t=this.grid.active_sheet;switch(typeof e.sheet){case"undefined":break;case"string":t=this.model.sheets.Find(e.sheet);break;case"number":t=this.grid.model.sheets.list[e.sheet];break;default:t=void 0;break}if(!t)throw new Error("invalid sheet identifier");let r=t.cells.toJSON({nested:!1,expand_arrays:!0,calculated_value:!0}),i=[];for(let a=0;a<r.columns;a++)i.push("");let s=[];for(let a=0;a<r.rows;a++)s.push(i.slice(0));let n=new RegExp(`[
|
|
13
|
+
\r"${e.delimiter}]`);if(it(r.data))for(let a of r.data){let o="";!e.formulas&&typeof a.calculated<"u"?o=ve(a.calculated)?Je(a.calculated):a.calculated.toString():typeof a.value=="string"&&a.value[0]==="'"?o=a.value.substr(1):typeof a.value<"u"&&(o=ve(a.value)?Je(a.value):a.value.toString()),n.test(o)&&(o=o.replace(/"/g,'""'),o='"'+o+'"'),s[a.row][a.column]=o}return s.map(a=>a.join(e.delimiter)).join(`\r
|
|
14
|
+
`)}SaveLocalFile(e="treb.json",t={}){let r=this.grid.model.document_name||"document",i,s,n=e.split(/\./).filter(o=>o.trim().length),a=n.length?n[n.length-1].toLowerCase():"treb";if(n.length<=1||e==="treb.json")if(e==="treb.json"&&(a=e),(a==="csv"||a==="tsv")&&this.grid.model.sheets.length>1){let o=this.grid.active_sheet.name;e=(r+"-"+o).toLowerCase().replace(/\W+/g,"-")+"."+a}else e=r.toLowerCase().replace(/\W+/g,"-")+"."+a;switch(a){case"csv":s=this.ExportDelimited({delimiter:","});break;case"tsv":s=this.ExportDelimited({delimiter:" "});break;case"treb":case"json":case"treb.json":i=this.SerializeDocument({...t}),s=JSON.stringify(i,void 0,t.pretty?2:void 0),this.last_save_version=this.file_version;break;default:throw new Error("invalid file type")}if(s&&e){let o=new Blob([s],{type:"text/plain;charset=utf-8"});this.SaveAs(o,e)}}LoadCSV(e,t){if(this.parent_view)return this.parent_view.LoadCSV(e,t);this.grid.FromCSV(e),this.ResetInternal(),this.grid.Update(!0),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles()}ScrollOffset(e){return this.grid.ScrollOffset(e)}LoadDocument(e,t={}){if(this.parent_view)return this.parent_view.LoadDocument(e,t);if(t={flush:!0,recalculate:!1,...t},t.override_selection&&e.sheet_data){let r=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let i of r)if(i.id===t.override_selection.target.sheet_id){i.selection=t.override_selection;break}}if(this.ImportDocumentData(e,t.override_sheet),this.calculator.Reset(),e.rendered_values&&!t.recalculate?(this.grid.Update(),this.calculator.RebuildClean(!0)):this.Recalculate(),this.InflateAnnotations(),t.flush&&this.FlushUndo(),this.Publish({type:"load",source:t.source}),this.UpdateDocumentStyles(),this.loaded=!0,t.scroll){let r=t.scroll;ne().then(()=>this.ScrollTo(r))}}SetNote(e,t){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(r)?r:r.start}this.grid.SetNote(e,t)}SetValidation(e,t,r){if(typeof e=="string"){let i=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(i)?i:i.start}if(typeof t>"u"||Array.isArray(t))this.grid.SetValidation(e,t,r);else{let i=this.calculator.ResolveArea(t,this.grid.active_sheet);this.grid.SetValidation(e,i,r)}}RemoveFunction(e){let t=e.toUpperCase();this.model.macro_functions.delete(t),this.UpdateAC()}DefineFunction(e,t="",r="0"){if(!e.length||/^[^A-Za-z]/.test(e)||/[^\w_.]/.test(e))throw new Error("invalid function name");typeof t=="string"&&(t=t?t.split(this.parser.argument_separator).map(i=>i.trim()):[]);for(let i of t)if(!i.length||/^[^A-Za-z]/.test(i)||/[^\w_.]/.test(i))throw new Error("invalid argument name");this.RemoveFunction(e),this.grid.model.macro_functions.set(e.toUpperCase(),{name:e,function_def:r,argument_names:t,expression:this.parser.Parse(r).expression}),this.UpdateAC()}SerializeDocument(e={}){e={share_resources:!0,shrink:!0,...e};let t=this.grid.Serialize(e),r={app:"treb",version:"23.5.1",revision:this.file_version,name:this.grid.model.document_name,user_data:this.grid.model.user_data,decimal_mark:T.decimal_separator,...t};if(e.share_resources){let i=1,s=new Map,n=Array.isArray(r.sheet_data)?r.sheet_data:[r.sheet_data],a=l=>{let d=s.get(l);return d||(d=(i++).toString(),s.set(l,d)),`resource:${d}`};for(let l of n)if(l){l.background_image&&(l.background_image=a(l.background_image));for(let d of l.annotations||[])d.type==="image"&&d.data.src&&(d.data.src=a(d.data.src))}let o={};for(let[l,d]of s.entries())o[d]=l;r.shared_resources=o}return e.rendered_values&&(r.rendered_values=!0),r}async Recalculate(e){let t;e&&e.type==="data"&&e.area&&(t=e.area),this.calculator.Calculate(t),this.grid.Update(!0),this.UpdateAnnotations(),this.Publish({type:"data"})}SaveLocalStorage(e=this.options.storage_key){if(!e){console.warn("not saving, no key");return}let t=JSON.stringify(this.SerializeDocument({rendered_values:!0,expand_arrays:!0}));localStorage.setItem(e,t)}Undo(){if(this.parent_view)return this.parent_view.Undo();if(this.undo_pointer<=1){console.warn("nothing to undo");return}let e=this.undo_stack[--this.undo_pointer-1],t=e.selection?JSON.parse(e.selection):void 0;this.LoadDocument(JSON.parse(e.data),{flush:!1,override_selection:t,source:"undo"})}About(){this.dialog?.ShowDialog({type:"about"})}ScrollTo(e,t={}){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(r)?r:r.start}t={x:!0,y:!0,smooth:!1,...t},this.grid.ScrollTo(e,t.x,t.y,t.smooth)}Resolve(e){let t=this.calculator.ResolveAddress(e,this.grid.active_sheet);return z(t)?t.sheet_id?t:void 0:t.start.sheet_id?t:void 0}Evaluate(e,t={}){return this.calculator.Evaluate(e,this.grid.active_sheet,t)}GetSelection(e=!0){let t=this.grid.GetSelection();if(t.empty)return"";let r="";if(t.area.count>1?r=y.CellAddressToLabel(t.area.start)+":"+y.CellAddressToLabel(t.area.end):r=y.CellAddressToLabel(t.area.start),!e)return r;let i=t.area.start.sheet_id||this.grid.active_sheet.id,s=this.ResolveSheetName(i,!0);return s?s+"!"+r:r}ParseNumber(e){return ye.TryParse(e).value}FormatNumber(e,t="General"){return D.Get(t).Format(e)}ApplyBorders(e,t,r=1){this.grid.ApplyBorders(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,void 0,r)}ApplyStyle(e,t={},r=!0){this.grid.ApplyStyle(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,r)}ClearName(e){this.grid.SetName(e)}DefineName(e,t){if(typeof t>"u"||t===null)throw new Error("invalid value (null or undefined)");if(typeof t=="object"&&(z(t)||ti(t))){this.grid.SetName(e,this.calculator.ResolveArea(t,this.grid.active_sheet));return}if(typeof t=="string"){let r=this.parser.Parse(t);if(!r.expression)throw new Error("invalid expression");switch(r.expression.type){case"address":case"range":this.grid.SetName(e,this.calculator.ResolveArea(r.expression,this.grid.active_sheet));return}this.grid.SetName(e,void 0,t)}else this.grid.SetName(e,void 0,t.toString())}SetLink(e,t=""){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=z(r)?r:r.start}if(!e){let r=this.GetSelectionReference();if(r.empty)return;e=r.target}this.grid.SetLink(e,t)}Select(e){let t=this.calculator.ResolveArea(e,this.grid.active_sheet);t.start.sheet_id&&t.start.sheet_id!==this.grid.active_sheet.id&&this.grid.ActivateSheetID(t.start.sheet_id),this.grid.SelectRange(t)}GetRange(e,t={}){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return t.type||(t.formatted&&(t.type="formatted"),t.formula&&(t.type="formula")),this.grid.GetRange(this.calculator.ResolveAddress(e,this.grid.active_sheet),t.type)}GetStyle(e,t=!1){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return this.grid.GetRangeStyle(this.calculator.ResolveAddress(e,this.grid.active_sheet),t)}SetRange(e,t=void 0,r={}){if(!e){let i=this.GetSelectionReference();i.empty||(e=i.area)}if(e){let i=this.calculator.ResolveArea(e,this.grid.active_sheet);if(r.spill&&Array.isArray(t)){let s=t.length,n=Math.max(0,...t.map(o=>o.length)),a={row:i.start.row+s+1,column:i.start.column+n+1};i.ConsumeAddress(a)}return this.grid.SetRange(i,t,r)}}Subscribe(e){return this.events.Subscribe(e)}Cancel(e){this.events.Cancel(e)}ResolveTable(e){let t;if(typeof e=="string"){let r=e.toLowerCase();this.model.tables.has(r)&&(t=this.model.tables.get(r))}if(!t){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);z(r)||(r=r.start),t=this.grid.GetTableReference(r)}return t}Unresolve(e,t=!0,r=!0){let i="",s=z(e)?new y(e):new y(e.start,e.end);if(r){let o=this.model.named_ranges.MatchSelection(s);if(o)return o}if(s.count>1?i=y.CellAddressToLabel(s.start)+":"+y.CellAddressToLabel(s.end):i=y.CellAddressToLabel(s.start),!t)return i;let n=s.start.sheet_id||this.grid.active_sheet.id,a=this.ResolveSheetName(n,!0);return a?a+"!"+i:i}SaveAs(e,t){let r=document.createElement("a");r.href=URL.createObjectURL(e),r.download=t,r.click(),URL.revokeObjectURL(r.href)}Publish(e){this.events.Publish(e)}async ImportXLSX(e,t){if(this.parent_view)return this.parent_view.ImportXLSX(e,t);if(!this.export_worker){let r="treb-export-worker";this.export_worker=await this.LoadWorker(r)}return new Promise((r,i)=>{this.export_worker?(this.dialog?.ShowDialog({message:"Importing XLSX..."}),this.export_worker.onmessage=s=>{if(s.data){if(s.data.status==="error")return i(s.data.error||"unknown error");this.grid.FromImportData(s.data.results),this.ResetInternal(),this.grid.Update(),this.UpdateAC(),this.calculator.AttachModel(),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles(),this.InflateAnnotations()}else return i("unknown error (missing data)");this.dialog?.HideDialog(),r()},this.export_worker.onerror=s=>{console.error("import worker error"),console.info(s),i(s)},this.export_worker.postMessage({command:"import",data:e})):i("worker failed")})}ResetInternal(){this.calculator.Reset(),this.FlushUndo(),this.file_version=this.last_save_version=0}HandleCellEvent(e){if(e.data?.type==="hyperlink"){let r="hyperlink invalid target",i=e.data.data||"";if(typeof i=="string"){if(/^https{0,1}:\/\//i.test(i)){if(!this.options.hyperlinks){console.warn("hyperlinks are disabled");return}let s=document.createElement("a");s.setAttribute("target",this.options.hyperlinks),s.setAttribute("href",i),s.setAttribute("noreferrer","true"),s.setAttribute("nofollow","true"),s.click();return}else{let s=this.parser.Parse(i);if(s.expression){if(s.expression.type==="address"){(s.expression.sheet||s.expression.sheet_id)&&this.ActivateSheet(s.expression.sheet||s.expression.sheet_id),this.Select(i);return}else if(s.expression.type==="range"){(s.expression.start.sheet||s.expression.start.sheet_id)&&this.ActivateSheet(s.expression.start.sheet||s.expression.start.sheet_id),this.Select(i);return}}}console.warn(r,2);return}}}OnSheetChange(e){for(let t of e.activate.annotations)this.InflateAnnotation(t),this.calculator.UpdateAnnotations(t,e.activate);this.UpdateAnnotations()}HandleDrag(e){if(e.dataTransfer&&e.dataTransfer.types){if(e.dataTransfer.types.some&&e.dataTransfer.types.some(t=>t==="Files"))e.preventDefault();else for(let t=0;t<e.dataTransfer.types.length;t++)if(e.dataTransfer.types[t]==="files"){e.preventDefault();return}}}HandleDrop(e){if(e.dataTransfer&&e.dataTransfer.files&&e.dataTransfer.files.length){e.preventDefault();let t=e.dataTransfer.files[0];/^image/.test(t.type)?this.InsertImageInternal(t):this.LoadFileInternal(t,"drag-and-drop").catch(()=>{})}}SelectFile2(e,t){if(!this.file_chooser){this.file_chooser=document.createElement("input"),this.file_chooser.type="file";let r=this.file_chooser;r.addEventListener("change",()=>{if(r.files&&r.files[0]){let i=r.files[0];switch(r.value="",this.file_chooser_operation){case 2:this.InsertImageInternal(i);break;case 1:this.LoadFileInternal(i,"local-file",!0);break;default:console.warn("file chooser: no operation");break}}})}if(!this.file_chooser)throw new Error("could not create file chooser");this.file_chooser_operation=t,this.file_chooser.accept=e||"",this.file_chooser.click()}async InsertImageInternal(e){if(this.options.max_file_size&&e.size>this.options.max_file_size){this.dialog?.ShowDialog({type:"error",message:"This file exceeds the allowed image size. Please try a smaller image.",title:"Error adding image",timeout:3e3,close_box:!0});return}let t=e;await new Promise((r,i)=>{let s=new FileReader;s.onload=async()=>{try{if(s.result){let n;if(typeof s.result=="string")n=s.result;else{n="";let l=new Uint8Array(s.result);for(let d=0;d<l.byteLength;d++)n+=String.fromCharCode(l[d])}let a=document.createElement("img");a.src=n,await Promise.resolve();let o=this.grid.CreateAnnotation({type:"image",formula:""},void 0,void 0,{top:30,left:30,width:a.width||300,height:a.height||300});o.data.src=n,o.data.original_size={width:a.width||300,height:a.height||300}}r()}catch(n){i(n)}},s.onabort=()=>{i("Aborted")},s.onerror=()=>{i("File error")},setTimeout(()=>{s.readAsDataURL(t)},100)})}LoadFileInternal(e,t,r=!0){if(!e)return Promise.resolve();let i=new FileReader;return new Promise((s,n)=>{let a=o=>{i.onload=null,i.onabort=null,i.onerror=null,o?(r&&(this.dialog?.ShowDialog({title:"Error reading file",close_box:!0,message:"Please make sure your file is a valid XLSX, CSV or TREB file.",type:"error",timeout:3e3}),console.error(o)),n(o)):s()};i.onload=()=>{try{if(i.result)if(/\.csv$/i.test(e.name))this.LoadCSV(i.result,t);else if(/\.xls[xm]$/i.test(e.name)){let o;if(typeof i.result=="string")o=i.result;else{o="";let l=new Uint8Array(i.result);for(let d=0;d<l.byteLength;d++)o+=String.fromCharCode(l[d])}this.ImportXLSX(o,t).then(()=>a()).catch(l=>a(l));return}else{let o=JSON.parse(i.result);this.LoadDocument(o,{source:t})}a()}catch(o){a(o?.toString())}},i.onabort=()=>{a("Aborted")},i.onerror=()=>{a("File error")},setTimeout(()=>{/\.xlsx$/i.test(e.name)?i.readAsBinaryString?i.readAsBinaryString(e):i.readAsArrayBuffer(e):i.readAsText(e)},100)})}UpdateAnnotations(){for(let e of this.grid.active_sheet.annotations){if(e.temp.vertex){let r=e.temp.vertex;if(r.state_id!==e.temp.state){e.temp.state=r.state_id;for(let i of e.view)i.dirty=!0}}let t=e.view[this.grid.view_index]||{};t.dirty&&(t.update_callback&&t.update_callback(),this.grid.AnnotationUpdated(e))}}RebuildAllAnnotations(){for(let e of this.grid.active_sheet.annotations){this.InflateAnnotation(e);let t=e.view[this.grid.view_index]||{};t.resize_callback&&t.resize_callback(),t.update_callback&&t.update_callback()}}InflateAnnotations(){for(let e of this.grid.active_sheet.annotations)this.InflateAnnotation(e)}InflateAnnotation(e){if(this.grid.headless)return;let t=e.view[this.grid.view_index]||{};if(t.inflated){e.dirty&&(t.resize_callback&&t.resize_callback(),e.dirty=!1);return}if(t.inflated=!0,e.dirty&&(e.dirty=!1),t.content_node&&e.data){if(e.type==="treb-chart"){let r=this.CreateChart();r.Initialize(t.content_node);let i=()=>{if(e.formula){let s=this.parser.Parse(e.formula);if(s&&s.expression&&s.expression.type==="call"){this.parser.Walk(s.expression,o=>((o.type==="address"||o.type==="range")&&this.calculator.ResolveSheetID(o,void 0,this.grid.active_sheet),!0));let n=s.expression.name.toLowerCase(),a=this.calculator.CalculateExpression(s.expression);r.Exec(n,a)}}r.Update()};t.resize_callback=()=>{this.grid.headless||(r.Resize(),r.Update())},t.update_callback=()=>{this.grid.headless||i()},t.node?.parentElement&&(this.grid.headless||i())}else if(e.type==="image"&&typeof e.data.src=="string"){let r=kt(e.data.src);if(r){let i=document.createElement("img");i.src=r,e.data.scale==="fixed"?(i.style.position="relative",i.style.left="50%",i.style.top="50%",i.style.transform="translate(-50%, -50%)"):(i.style.width="100%",i.style.height="100%"),t.content_node.appendChild(i)}}}}DocumentChange(e){ne().then(()=>{this.file_version++,this.file_version>=65536&&(this.file_version=1);let t=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}));this.options.storage_key&&localStorage.setItem(this.options.storage_key,t),this.options.undo&&this.PushUndo(t,e,!1),this.Publish({type:"document-change"})})}PushUndo(e,t,r=!0){let i=t||this.last_selection;this.undo_stack[this.undo_pointer-1]&&(this.undo_stack[this.undo_pointer-1].selection=i),r&&(this.file_version++,this.file_version>=65536&&(this.file_version=1)),e||(e=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}))),this.undo_stack[this.undo_pointer++]={data:e,selection:void 0};let s=this.undo_stack.length;if(s>16){let n=s-16;this.undo_stack=this.undo_stack.slice(n),this.undo_pointer-=n}}FlushUndo(e=!0){this.undo_stack=[],this.undo_pointer=0,this.last_save_version=this.file_version,e&&this.PushUndo(void 0,void 0,!1)}UpdateSelection(e){this.last_selection=JSON.stringify(e),this.Publish({type:"selection"})}UpdateSelectionStyle(e){let t=this.grid.GetFreeze(),r={frozen:!!t.rows||!!t.columns};if(e||(e=this.grid.GetSelection()),e&&!e.empty){r.selection=e,r.merge=!1;let i=this.grid.active_sheet.CellData(e.target);r.merge=!!i.merge_area,r.merge&&i.merge_area&&(i.merge_area.start.row!==e.target.row||i.merge_area.start.column!==e.target.column)&&(i=this.grid.active_sheet.CellData(i.merge_area.start)),r.comment=i.note,r.style=i.style?{...i.style}:void 0}this.selection_state=r,this.toolbar?.UpdateState(r)}UpdateDocumentStyles(e=!0){if(!this.toolbar)return;let t={},r={};for(let i of this.grid.model.sheets.list)i.NumberFormatsAndColors(r,t);this.toolbar.UpdateDocumentStyles(Object.keys(t),Object.keys(r),e)}ConvertLocale(e){let t=new qe;t.flags={...this.parser.flags};let r,i;e.decimal_mark==="."?(t.decimal_mark=".",t.argument_separator=",",r=",",i=";"):(t.decimal_mark=",",t.argument_separator=";",r=".",i=",");let s=n=>{let a=t.Parse(n);if(a.expression)return"="+t.Render(a.expression,{missing:"",convert_decimal:r,convert_argument_separator:i})};if(e.macro_functions)for(let n of e.macro_functions){let a=s(n.function_def);a&&(n.function_def=a)}if(e.sheet_data){let n=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let a of n){if(a.annotations){for(let o of a.annotations)if(o.formula){let l=s(o.formula);l&&(o.formula=l)}}if(a.data?.length)for(let o of a.data){let l=ar(o)?[o]:o.cells;for(let d of l)if(d.value&&typeof d.value=="string"&&d.value[0]==="="){let u=s(d.value.slice(1));u&&(d.value=u)}}}}}CompareVersions(e="",t=""){let r=e.split(".").map(a=>Number(a)||0).concat([0,0,0]),i=t.split(".").map(a=>Number(a)||0).concat([0,0,0]),s=[0,1,2],n={match:0};for(let a=0;a<3;a++)if(r[a]!==i[a]){n.match=r[a]>i[a]?1:-1,n.level=s[a];break}return n}ImportDocumentData(e,t){this.file_version=e.revision||0;let r=[],i=this.CompareVersions(e.version,"23.5.1");if(i.match>0&&(i.level===0||i.level===1)&&console.warn(`The file you are opening was created with a newer version of TREB (${e.version} vs 23.5.1).
|
|
15
|
+
You may encounter compatibility errors.`),e.sheet_data&&(Array.isArray(e.sheet_data)?r=e.sheet_data:r.push(e.sheet_data)),e.shared_resources){let a=e.shared_resources,o=l=>/^resource:/.test(l)?a[l.substring(9)]||"":l;for(let l of r){l.background_image&&(l.background_image=o(l.background_image));for(let d of l.annotations||[])d.type==="image"&&d.data.src&&(d.data.src=o(d.data.src))}}e.decimal_mark&&e.decimal_mark!==T.decimal_separator&&this.ConvertLocale(e);let s=this.grid.model;if(s.tables.clear(),e.tables)for(let a of e.tables)s.tables.set(a.name.toLowerCase(),a);this.grid.UpdateSheets(r,void 0,t||e.active_sheet);for(let[a,o]of this.model.tables.entries())if(o.area.start.sheet_id){let l=s.sheets.Find(o.area.start.sheet_id);if(l)for(let d=o.area.start.row;d<=o.area.end.row;d++)for(let u=o.area.start.column;u<=o.area.end.column;u++){let h=l.cells.GetCell({row:d,column:u},!0);h.table=o}}s.document_name=e.name,s.user_data=e.user_data,s.named_ranges.Reset();let n=e.named_ranges;if(!n&&r[0]&&r[0].named_ranges&&(n=r[0].named_ranges),n&&s.named_ranges.Deserialize(n),s.named_expressions.clear(),e.named_expressions)for(let a of e.named_expressions){let o=this.parser.Parse(a.expression);o.valid&&o.expression&&(this.parser.Walk(o.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="range"&&(l=l.start),!l.sheet_id&&l.sheet){let d=this.model.sheets.Find(l.sheet);d&&(l.sheet_id=d.id)}return l.sheet_id||(l.sheet_id=this.grid.active_sheet.id),!1}return!0}),s.named_expressions.set(a.name.toUpperCase(),o.expression))}if(s.macro_functions.clear(),e.macro_functions)for(let a of e.macro_functions)s.macro_functions.set(a.name.toUpperCase(),{...a,expression:this.parser.Parse(a.function_def||"").expression});this.UpdateAC()}async LoadWorker(e){if(je.export_worker_text)try{return new Worker(URL.createObjectURL(new Blob([je.export_worker_text],{type:"application/javascript"})))}catch(i){console.info("embedded worker failed"),console.error(i)}if(!je.treb_base_path)throw console.warn("worker path is not set. it you are loading TREB in an ESM module, please either include the script in a document <script/> tag, or call the method TREB.SetScriptPath() to set the load path for workers (this should be the path to TREB script files)."),new Error("worker path not set");/\.js$/.test(e)||(e+="-23.5.1.js");let t,r=je.treb_base_path;if(r&&(/\/$/.test(r)||(r+="/"),e=r+e),/^(http:|https:|\/\/)/.test(e)){let i=await fetch(e);if(!i.ok)throw new Error("Error loading worker script");let s=await i.text();t=new Worker(URL.createObjectURL(new Blob([s],{type:"application/javascript"})))}else{if(/^file:/.test(e))throw new Error("invalid URI");t=new Worker(e)}return t}HandleKeyDown(e){e.ctrlKey&&(e.code==="KeyZ"||e.key==="z")&&(e.stopPropagation(),e.preventDefault(),this.Undo())}ResolveSheetName(e,t=!1){let r=this.model.sheets.Find(e);if(r)return t&&ct.test(r.name)?`'${r.name}'`:r.name}},oe=je;k(oe,"treb_base_path",""),k(oe,"export_worker_text",""),k(oe,"treb_embedded_script_path",""),k(oe,"enable_engine",!1),k(oe,"enable_formatter",!1);var Qr="sidebar-open",nr="toolbar-open";var ei=class{constructor(e,t){this.base_type=e;let r=typeof t.container=="string"?document.querySelector(t.container):t.container;if(!r)throw new Error("missing container");r.classList.add("treb-container"),this.options={...rr,...t},window.getComputedStyle(r).position==="static"&&(r.style.position="relative");let s=r.getBoundingClientRect();!this.options.headless&&(!s.width||!s.height)&&r.classList.add("default-spreadsheet-size"),this.inner_container=document.createElement("div"),this.inner_container.classList.add("treb-views"),this.options.collapsed||r.classList.add("sidebar-open"),(this.options.toolbar==="show"||this.options.toolbar==="show-narrow")&&r.classList.add(nr),r.appendChild(this.inner_container),this.sheet=new e({...this.options,container:this.inner_container,resizable:!1}),this.sidebar=document.createElement("div"),this.sidebar.classList.add("embedded-spreadsheet-sidebar"),this.AddSidebarButton({icon:"treb-icon-reset",title:"Recalculate",click:()=>this.sheet.Recalculate()}),this.options.toolbar&&(this.toolbar_container=document.createElement("div"),this.toolbar_container.classList.add("toolbar-container"),this.toolbar_button=this.AddSidebarButton({icon:"treb-icon-toolbar",title:"Show Toolbar",click:()=>this.ToggleToolbar()}),r.appendChild(this.toolbar_container),this.sheet.toolbar_ctl={Show:o=>this.ShowToolbar(o)}),this.options.export&&this.AddSidebarButton({icon:"treb-icon-export",title:"Download as XLSX",click:()=>this.sheet.Export()}),this.options.revert&&this.AddSidebarButton({icon:"treb-icon-revert",title:"Revert to original version",click:()=>this.sheet.Revert()}),this.options.popout&&this.AddSidebarButton({icon:"treb-icon-popout",title:"Open in New Tab",click:()=>this.Popout()}),this.AddSidebarButton({icon:"treb-icon-about",title:"What's This?",click:()=>this.sheet.About()});let n=document.createElement("div");n.classList.add("sidebar-spacer"),this.sidebar.appendChild(n),this.AddSidebarButton({icon:"treb-icon-chevron-right",classes:"smaller",title:"Hide Sidebar",click:()=>this.HideSidebar()}),r.appendChild(this.sidebar);let a=this.AddSidebarButton({icon:"treb-icon-chevron-left",classes:["smaller","show-sidebar-button"],title:"Show Sidebar",click:()=>this.ShowSidebar()},void 0);if(r.appendChild(a),this.options.resizable){let o=r.querySelector(".treb-grid"),l=r.querySelector(".treb-layout-master");o&&Xe.Create({container:r,node:o,resize_callback:()=>this.sheet.Resize(),layout_reference:l||void 0})}(this.options.toolbar==="show"||this.options.toolbar==="show-narrow")&&this.ShowToolbar(!0),t.container._spreadsheet=this.sheet}inner_container;sidebar;toolbar_container;toolbar_button;sheet;options;toolbar;static Create(e,t){return new ei(e,t)}Popout(){let e=window.open("","_blank");if(!e)return;e.document.head.innerHTML=`<title>${this.sheet.document_name?`TREB: ${this.sheet.document_name}`:"TREB: Untitled Document"}</title><meta charset='utf-8'><meta http-equiv='X-UA-Compatible' content='IE=edge'><meta name='viewport' content='width=device-width,initial-scale=1'><link rel='icon' type='image/svg+xml' href='https://treb.app/leaf.svg'>`;let t="treb-bundle";/\.js$/.test(t)||(t+=".js");let r=oe.treb_base_path;r&&(/\/$/.test(r)||(r+="/"),t=r+t);let i=e.document.createElement("script");i.src=t,i.setAttribute("type","text/javascript"),e.document.body.appendChild(i);let s=JSON.stringify(this.sheet.SerializeDocument({rendered_values:!0})),n=e.document.createElement("style");n.setAttribute("type","text/css"),n.textContent="*{box-sizing:border-box;padding:0;margin:0;}body,html{height:100%;width:100%;position:relative;}.treb{top:0;left:0;right:0;bottom:0;position:absolute;background:#fff;}",e.document.head.appendChild(n);let a=e.document.createElement("div");a.setAttribute("class","treb treb-fullscreen-padding"),e.document.body.appendChild(a);let o=window.screen.availWidth>=1200,l=e.document.createElement("script"),d={...this.options,container:void 0,network_document:void 0,storage_key:void 0,resizable:!1,export:!0,scroll:void 0,toolbar:o?"show":!0,file_menu:!0,prompt_save:!0,expand_formula_button:o,popout:!1,add_tab:!0,tab_bar:"auto",headless:!1,dnd:!0,collapsed:!o},u=(h,f)=>{let p=0,m=()=>{h.container=document.querySelector(".treb"),h.container&&window.TREB?(window.sheet=window.TREB.CreateSpreadsheet(h),window.sheet.LoadDocument(f)):++p<32&&setTimeout(()=>m(),100)};m()};l.textContent=`(${u.toString()})(${JSON.stringify(d)},${s})`,e.document.body.appendChild(l),e.document.close()}AddSidebarButton(e={},t=this.sidebar){let r=document.createElement("button");if(r.setAttribute("type","button"),r.classList.add("sidebar-button"),e.classes){let i=typeof e.classes=="string"?[e.classes]:e.classes;for(let s of i)r.classList.add(s)}if(e.title&&r.setAttribute("title",e.title),e.text&&(r.textContent=e.text),e.click){let i=e.click;r.addEventListener("click",()=>i())}if(e.icon&&r.classList.add("treb-icon",e.icon),t)if(typeof e.position=="number"){let s=t.children[e.position];s?t.insertBefore(r,s):t.appendChild(r)}else t.appendChild(r);return r}ToggleSidebar(){this.sidebar.parentElement.classList.toggle(Qr)}ShowSidebar(e=!0){let t=this.sidebar.parentElement;e?t.classList.add(Qr):t.classList.remove(Qr)}HideSidebar(){this.ShowSidebar(!1)}ToggleToolbar(){let e=this.toolbar_container?.parentElement;this.ShowToolbar(!e.classList.contains(nr))}ShowToolbar(e=!0){let t=this.toolbar_container?.parentElement,r="Hide Toolbar";e?(this.toolbar_container&&!this.toolbar&&(this.toolbar=this.sheet.CreateToolbar(this.toolbar_container)),t.classList.add(nr)):(t.classList.remove(nr),r="Show Toolbar"),this.toolbar_button&&this.toolbar_button.setAttribute("title",r)}HideToolbar(){this.ShowToolbar(!1)}},wt=ei;k(wt,"symbols_injected",!1);var is='/*! TREB v23.5.1. Copyright 2018-2023 trebco, llc. All rights reserved. LGPL: https://treb.app/license */\n"use strict";(()=>{var ki=Object.create;var It=Object.defineProperty;var Ni=Object.getOwnPropertyDescriptor;var Si=Object.getOwnPropertyNames;var Fi=Object.getPrototypeOf,Ti=Object.prototype.hasOwnProperty;var Pi=(s,e,t)=>e in s?It(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var Ye=(s=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(s,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):s)(function(s){if(typeof require<"u")return require.apply(this,arguments);throw new Error(\'Dynamic require of "\'+s+\'" is not supported\')});var ge=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var Ri=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Si(e))!Ti.call(s,n)&&n!==t&&It(s,n,{get:()=>e[n],enumerable:!(i=Ni(e,n))||i.enumerable});return s};var Fe=(s,e,t)=>(t=s!=null?ki(Fi(s)):{},Ri(e||!s||!s.__esModule?It(t,"default",{value:s,enumerable:!0}):t,s));var ie=(s,e,t)=>(Pi(s,typeof e!="symbol"?e+"":e,t),t);var ut=ge((ot,$e)=>{(function(s){var e=typeof ot=="object"&&ot,t=typeof $e=="object"&&$e&&$e.exports==e&&$e,i=typeof global=="object"&&global;(i.global===i||i.window===i)&&(s=i);var n=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,r=/[\\x01-\\x7F]/g,a=/[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g,o=/<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g,u={"\\xAD":"shy","\\u200C":"zwnj","\\u200D":"zwj","\\u200E":"lrm","\\u2063":"ic","\\u2062":"it","\\u2061":"af","\\u200F":"rlm","\\u200B":"ZeroWidthSpace","\\u2060":"NoBreak","\\u0311":"DownBreve","\\u20DB":"tdot","\\u20DC":"DotDot"," ":"Tab","\\n":"NewLine","\\u2008":"puncsp","\\u205F":"MediumSpace","\\u2009":"thinsp","\\u200A":"hairsp","\\u2004":"emsp13","\\u2002":"ensp","\\u2005":"emsp14","\\u2003":"emsp","\\u2007":"numsp","\\xA0":"nbsp","\\u205F\\u200A":"ThickSpace","\\u203E":"oline",_:"lowbar","\\u2010":"dash","\\u2013":"ndash","\\u2014":"mdash","\\u2015":"horbar",",":"comma",";":"semi","\\u204F":"bsemi",":":"colon","\\u2A74":"Colone","!":"excl","\\xA1":"iexcl","?":"quest","\\xBF":"iquest",".":"period","\\u2025":"nldr","\\u2026":"mldr","\\xB7":"middot","\'":"apos","\\u2018":"lsquo","\\u2019":"rsquo","\\u201A":"sbquo","\\u2039":"lsaquo","\\u203A":"rsaquo",\'"\':"quot","\\u201C":"ldquo","\\u201D":"rdquo","\\u201E":"bdquo","\\xAB":"laquo","\\xBB":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","\\u2308":"lceil","\\u2309":"rceil","\\u230A":"lfloor","\\u230B":"rfloor","\\u2985":"lopar","\\u2986":"ropar","\\u298B":"lbrke","\\u298C":"rbrke","\\u298D":"lbrkslu","\\u298E":"rbrksld","\\u298F":"lbrksld","\\u2990":"rbrkslu","\\u2991":"langd","\\u2992":"rangd","\\u2993":"lparlt","\\u2994":"rpargt","\\u2995":"gtlPar","\\u2996":"ltrPar","\\u27E6":"lobrk","\\u27E7":"robrk","\\u27E8":"lang","\\u27E9":"rang","\\u27EA":"Lang","\\u27EB":"Rang","\\u27EC":"loang","\\u27ED":"roang","\\u2772":"lbbrk","\\u2773":"rbbrk","\\u2016":"Vert","\\xA7":"sect","\\xB6":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","\\u2030":"permil","\\u2031":"pertenk","\\u2020":"dagger","\\u2021":"Dagger","\\u2022":"bull","\\u2043":"hybull","\\u2032":"prime","\\u2033":"Prime","\\u2034":"tprime","\\u2057":"qprime","\\u2035":"bprime","\\u2041":"caret","`":"grave","\\xB4":"acute","\\u02DC":"tilde","^":"Hat","\\xAF":"macr","\\u02D8":"breve","\\u02D9":"dot","\\xA8":"die","\\u02DA":"ring","\\u02DD":"dblac","\\xB8":"cedil","\\u02DB":"ogon","\\u02C6":"circ","\\u02C7":"caron","\\xB0":"deg","\\xA9":"copy","\\xAE":"reg","\\u2117":"copysr","\\u2118":"wp","\\u211E":"rx","\\u2127":"mho","\\u2129":"iiota","\\u2190":"larr","\\u219A":"nlarr","\\u2192":"rarr","\\u219B":"nrarr","\\u2191":"uarr","\\u2193":"darr","\\u2194":"harr","\\u21AE":"nharr","\\u2195":"varr","\\u2196":"nwarr","\\u2197":"nearr","\\u2198":"searr","\\u2199":"swarr","\\u219D":"rarrw","\\u219D\\u0338":"nrarrw","\\u219E":"Larr","\\u219F":"Uarr","\\u21A0":"Rarr","\\u21A1":"Darr","\\u21A2":"larrtl","\\u21A3":"rarrtl","\\u21A4":"mapstoleft","\\u21A5":"mapstoup","\\u21A6":"map","\\u21A7":"mapstodown","\\u21A9":"larrhk","\\u21AA":"rarrhk","\\u21AB":"larrlp","\\u21AC":"rarrlp","\\u21AD":"harrw","\\u21B0":"lsh","\\u21B1":"rsh","\\u21B2":"ldsh","\\u21B3":"rdsh","\\u21B5":"crarr","\\u21B6":"cularr","\\u21B7":"curarr","\\u21BA":"olarr","\\u21BB":"orarr","\\u21BC":"lharu","\\u21BD":"lhard","\\u21BE":"uharr","\\u21BF":"uharl","\\u21C0":"rharu","\\u21C1":"rhard","\\u21C2":"dharr","\\u21C3":"dharl","\\u21C4":"rlarr","\\u21C5":"udarr","\\u21C6":"lrarr","\\u21C7":"llarr","\\u21C8":"uuarr","\\u21C9":"rrarr","\\u21CA":"ddarr","\\u21CB":"lrhar","\\u21CC":"rlhar","\\u21D0":"lArr","\\u21CD":"nlArr","\\u21D1":"uArr","\\u21D2":"rArr","\\u21CF":"nrArr","\\u21D3":"dArr","\\u21D4":"iff","\\u21CE":"nhArr","\\u21D5":"vArr","\\u21D6":"nwArr","\\u21D7":"neArr","\\u21D8":"seArr","\\u21D9":"swArr","\\u21DA":"lAarr","\\u21DB":"rAarr","\\u21DD":"zigrarr","\\u21E4":"larrb","\\u21E5":"rarrb","\\u21F5":"duarr","\\u21FD":"loarr","\\u21FE":"roarr","\\u21FF":"hoarr","\\u2200":"forall","\\u2201":"comp","\\u2202":"part","\\u2202\\u0338":"npart","\\u2203":"exist","\\u2204":"nexist","\\u2205":"empty","\\u2207":"Del","\\u2208":"in","\\u2209":"notin","\\u220B":"ni","\\u220C":"notni","\\u03F6":"bepsi","\\u220F":"prod","\\u2210":"coprod","\\u2211":"sum","+":"plus","\\xB1":"pm","\\xF7":"div","\\xD7":"times","<":"lt","\\u226E":"nlt","<\\u20D2":"nvlt","=":"equals","\\u2260":"ne","=\\u20E5":"bne","\\u2A75":"Equal",">":"gt","\\u226F":"ngt",">\\u20D2":"nvgt","\\xAC":"not","|":"vert","\\xA6":"brvbar","\\u2212":"minus","\\u2213":"mp","\\u2214":"plusdo","\\u2044":"frasl","\\u2216":"setmn","\\u2217":"lowast","\\u2218":"compfn","\\u221A":"Sqrt","\\u221D":"prop","\\u221E":"infin","\\u221F":"angrt","\\u2220":"ang","\\u2220\\u20D2":"nang","\\u2221":"angmsd","\\u2222":"angsph","\\u2223":"mid","\\u2224":"nmid","\\u2225":"par","\\u2226":"npar","\\u2227":"and","\\u2228":"or","\\u2229":"cap","\\u2229\\uFE00":"caps","\\u222A":"cup","\\u222A\\uFE00":"cups","\\u222B":"int","\\u222C":"Int","\\u222D":"tint","\\u2A0C":"qint","\\u222E":"oint","\\u222F":"Conint","\\u2230":"Cconint","\\u2231":"cwint","\\u2232":"cwconint","\\u2233":"awconint","\\u2234":"there4","\\u2235":"becaus","\\u2236":"ratio","\\u2237":"Colon","\\u2238":"minusd","\\u223A":"mDDot","\\u223B":"homtht","\\u223C":"sim","\\u2241":"nsim","\\u223C\\u20D2":"nvsim","\\u223D":"bsim","\\u223D\\u0331":"race","\\u223E":"ac","\\u223E\\u0333":"acE","\\u223F":"acd","\\u2240":"wr","\\u2242":"esim","\\u2242\\u0338":"nesim","\\u2243":"sime","\\u2244":"nsime","\\u2245":"cong","\\u2247":"ncong","\\u2246":"simne","\\u2248":"ap","\\u2249":"nap","\\u224A":"ape","\\u224B":"apid","\\u224B\\u0338":"napid","\\u224C":"bcong","\\u224D":"CupCap","\\u226D":"NotCupCap","\\u224D\\u20D2":"nvap","\\u224E":"bump","\\u224E\\u0338":"nbump","\\u224F":"bumpe","\\u224F\\u0338":"nbumpe","\\u2250":"doteq","\\u2250\\u0338":"nedot","\\u2251":"eDot","\\u2252":"efDot","\\u2253":"erDot","\\u2254":"colone","\\u2255":"ecolon","\\u2256":"ecir","\\u2257":"cire","\\u2259":"wedgeq","\\u225A":"veeeq","\\u225C":"trie","\\u225F":"equest","\\u2261":"equiv","\\u2262":"nequiv","\\u2261\\u20E5":"bnequiv","\\u2264":"le","\\u2270":"nle","\\u2264\\u20D2":"nvle","\\u2265":"ge","\\u2271":"nge","\\u2265\\u20D2":"nvge","\\u2266":"lE","\\u2266\\u0338":"nlE","\\u2267":"gE","\\u2267\\u0338":"ngE","\\u2268\\uFE00":"lvnE","\\u2268":"lnE","\\u2269":"gnE","\\u2269\\uFE00":"gvnE","\\u226A":"ll","\\u226A\\u0338":"nLtv","\\u226A\\u20D2":"nLt","\\u226B":"gg","\\u226B\\u0338":"nGtv","\\u226B\\u20D2":"nGt","\\u226C":"twixt","\\u2272":"lsim","\\u2274":"nlsim","\\u2273":"gsim","\\u2275":"ngsim","\\u2276":"lg","\\u2278":"ntlg","\\u2277":"gl","\\u2279":"ntgl","\\u227A":"pr","\\u2280":"npr","\\u227B":"sc","\\u2281":"nsc","\\u227C":"prcue","\\u22E0":"nprcue","\\u227D":"sccue","\\u22E1":"nsccue","\\u227E":"prsim","\\u227F":"scsim","\\u227F\\u0338":"NotSucceedsTilde","\\u2282":"sub","\\u2284":"nsub","\\u2282\\u20D2":"vnsub","\\u2283":"sup","\\u2285":"nsup","\\u2283\\u20D2":"vnsup","\\u2286":"sube","\\u2288":"nsube","\\u2287":"supe","\\u2289":"nsupe","\\u228A\\uFE00":"vsubne","\\u228A":"subne","\\u228B\\uFE00":"vsupne","\\u228B":"supne","\\u228D":"cupdot","\\u228E":"uplus","\\u228F":"sqsub","\\u228F\\u0338":"NotSquareSubset","\\u2290":"sqsup","\\u2290\\u0338":"NotSquareSuperset","\\u2291":"sqsube","\\u22E2":"nsqsube","\\u2292":"sqsupe","\\u22E3":"nsqsupe","\\u2293":"sqcap","\\u2293\\uFE00":"sqcaps","\\u2294":"sqcup","\\u2294\\uFE00":"sqcups","\\u2295":"oplus","\\u2296":"ominus","\\u2297":"otimes","\\u2298":"osol","\\u2299":"odot","\\u229A":"ocir","\\u229B":"oast","\\u229D":"odash","\\u229E":"plusb","\\u229F":"minusb","\\u22A0":"timesb","\\u22A1":"sdotb","\\u22A2":"vdash","\\u22AC":"nvdash","\\u22A3":"dashv","\\u22A4":"top","\\u22A5":"bot","\\u22A7":"models","\\u22A8":"vDash","\\u22AD":"nvDash","\\u22A9":"Vdash","\\u22AE":"nVdash","\\u22AA":"Vvdash","\\u22AB":"VDash","\\u22AF":"nVDash","\\u22B0":"prurel","\\u22B2":"vltri","\\u22EA":"nltri","\\u22B3":"vrtri","\\u22EB":"nrtri","\\u22B4":"ltrie","\\u22EC":"nltrie","\\u22B4\\u20D2":"nvltrie","\\u22B5":"rtrie","\\u22ED":"nrtrie","\\u22B5\\u20D2":"nvrtrie","\\u22B6":"origof","\\u22B7":"imof","\\u22B8":"mumap","\\u22B9":"hercon","\\u22BA":"intcal","\\u22BB":"veebar","\\u22BD":"barvee","\\u22BE":"angrtvb","\\u22BF":"lrtri","\\u22C0":"Wedge","\\u22C1":"Vee","\\u22C2":"xcap","\\u22C3":"xcup","\\u22C4":"diam","\\u22C5":"sdot","\\u22C6":"Star","\\u22C7":"divonx","\\u22C8":"bowtie","\\u22C9":"ltimes","\\u22CA":"rtimes","\\u22CB":"lthree","\\u22CC":"rthree","\\u22CD":"bsime","\\u22CE":"cuvee","\\u22CF":"cuwed","\\u22D0":"Sub","\\u22D1":"Sup","\\u22D2":"Cap","\\u22D3":"Cup","\\u22D4":"fork","\\u22D5":"epar","\\u22D6":"ltdot","\\u22D7":"gtdot","\\u22D8":"Ll","\\u22D8\\u0338":"nLl","\\u22D9":"Gg","\\u22D9\\u0338":"nGg","\\u22DA\\uFE00":"lesg","\\u22DA":"leg","\\u22DB":"gel","\\u22DB\\uFE00":"gesl","\\u22DE":"cuepr","\\u22DF":"cuesc","\\u22E6":"lnsim","\\u22E7":"gnsim","\\u22E8":"prnsim","\\u22E9":"scnsim","\\u22EE":"vellip","\\u22EF":"ctdot","\\u22F0":"utdot","\\u22F1":"dtdot","\\u22F2":"disin","\\u22F3":"isinsv","\\u22F4":"isins","\\u22F5":"isindot","\\u22F5\\u0338":"notindot","\\u22F6":"notinvc","\\u22F7":"notinvb","\\u22F9":"isinE","\\u22F9\\u0338":"notinE","\\u22FA":"nisd","\\u22FB":"xnis","\\u22FC":"nis","\\u22FD":"notnivc","\\u22FE":"notnivb","\\u2305":"barwed","\\u2306":"Barwed","\\u230C":"drcrop","\\u230D":"dlcrop","\\u230E":"urcrop","\\u230F":"ulcrop","\\u2310":"bnot","\\u2312":"profline","\\u2313":"profsurf","\\u2315":"telrec","\\u2316":"target","\\u231C":"ulcorn","\\u231D":"urcorn","\\u231E":"dlcorn","\\u231F":"drcorn","\\u2322":"frown","\\u2323":"smile","\\u232D":"cylcty","\\u232E":"profalar","\\u2336":"topbot","\\u233D":"ovbar","\\u233F":"solbar","\\u237C":"angzarr","\\u23B0":"lmoust","\\u23B1":"rmoust","\\u23B4":"tbrk","\\u23B5":"bbrk","\\u23B6":"bbrktbrk","\\u23DC":"OverParenthesis","\\u23DD":"UnderParenthesis","\\u23DE":"OverBrace","\\u23DF":"UnderBrace","\\u23E2":"trpezium","\\u23E7":"elinters","\\u2423":"blank","\\u2500":"boxh","\\u2502":"boxv","\\u250C":"boxdr","\\u2510":"boxdl","\\u2514":"boxur","\\u2518":"boxul","\\u251C":"boxvr","\\u2524":"boxvl","\\u252C":"boxhd","\\u2534":"boxhu","\\u253C":"boxvh","\\u2550":"boxH","\\u2551":"boxV","\\u2552":"boxdR","\\u2553":"boxDr","\\u2554":"boxDR","\\u2555":"boxdL","\\u2556":"boxDl","\\u2557":"boxDL","\\u2558":"boxuR","\\u2559":"boxUr","\\u255A":"boxUR","\\u255B":"boxuL","\\u255C":"boxUl","\\u255D":"boxUL","\\u255E":"boxvR","\\u255F":"boxVr","\\u2560":"boxVR","\\u2561":"boxvL","\\u2562":"boxVl","\\u2563":"boxVL","\\u2564":"boxHd","\\u2565":"boxhD","\\u2566":"boxHD","\\u2567":"boxHu","\\u2568":"boxhU","\\u2569":"boxHU","\\u256A":"boxvH","\\u256B":"boxVh","\\u256C":"boxVH","\\u2580":"uhblk","\\u2584":"lhblk","\\u2588":"block","\\u2591":"blk14","\\u2592":"blk12","\\u2593":"blk34","\\u25A1":"squ","\\u25AA":"squf","\\u25AB":"EmptyVerySmallSquare","\\u25AD":"rect","\\u25AE":"marker","\\u25B1":"fltns","\\u25B3":"xutri","\\u25B4":"utrif","\\u25B5":"utri","\\u25B8":"rtrif","\\u25B9":"rtri","\\u25BD":"xdtri","\\u25BE":"dtrif","\\u25BF":"dtri","\\u25C2":"ltrif","\\u25C3":"ltri","\\u25CA":"loz","\\u25CB":"cir","\\u25EC":"tridot","\\u25EF":"xcirc","\\u25F8":"ultri","\\u25F9":"urtri","\\u25FA":"lltri","\\u25FB":"EmptySmallSquare","\\u25FC":"FilledSmallSquare","\\u2605":"starf","\\u2606":"star","\\u260E":"phone","\\u2640":"female","\\u2642":"male","\\u2660":"spades","\\u2663":"clubs","\\u2665":"hearts","\\u2666":"diams","\\u266A":"sung","\\u2713":"check","\\u2717":"cross","\\u2720":"malt","\\u2736":"sext","\\u2758":"VerticalSeparator","\\u27C8":"bsolhsub","\\u27C9":"suphsol","\\u27F5":"xlarr","\\u27F6":"xrarr","\\u27F7":"xharr","\\u27F8":"xlArr","\\u27F9":"xrArr","\\u27FA":"xhArr","\\u27FC":"xmap","\\u27FF":"dzigrarr","\\u2902":"nvlArr","\\u2903":"nvrArr","\\u2904":"nvHarr","\\u2905":"Map","\\u290C":"lbarr","\\u290D":"rbarr","\\u290E":"lBarr","\\u290F":"rBarr","\\u2910":"RBarr","\\u2911":"DDotrahd","\\u2912":"UpArrowBar","\\u2913":"DownArrowBar","\\u2916":"Rarrtl","\\u2919":"latail","\\u291A":"ratail","\\u291B":"lAtail","\\u291C":"rAtail","\\u291D":"larrfs","\\u291E":"rarrfs","\\u291F":"larrbfs","\\u2920":"rarrbfs","\\u2923":"nwarhk","\\u2924":"nearhk","\\u2925":"searhk","\\u2926":"swarhk","\\u2927":"nwnear","\\u2928":"toea","\\u2929":"tosa","\\u292A":"swnwar","\\u2933":"rarrc","\\u2933\\u0338":"nrarrc","\\u2935":"cudarrr","\\u2936":"ldca","\\u2937":"rdca","\\u2938":"cudarrl","\\u2939":"larrpl","\\u293C":"curarrm","\\u293D":"cularrp","\\u2945":"rarrpl","\\u2948":"harrcir","\\u2949":"Uarrocir","\\u294A":"lurdshar","\\u294B":"ldrushar","\\u294E":"LeftRightVector","\\u294F":"RightUpDownVector","\\u2950":"DownLeftRightVector","\\u2951":"LeftUpDownVector","\\u2952":"LeftVectorBar","\\u2953":"RightVectorBar","\\u2954":"RightUpVectorBar","\\u2955":"RightDownVectorBar","\\u2956":"DownLeftVectorBar","\\u2957":"DownRightVectorBar","\\u2958":"LeftUpVectorBar","\\u2959":"LeftDownVectorBar","\\u295A":"LeftTeeVector","\\u295B":"RightTeeVector","\\u295C":"RightUpTeeVector","\\u295D":"RightDownTeeVector","\\u295E":"DownLeftTeeVector","\\u295F":"DownRightTeeVector","\\u2960":"LeftUpTeeVector","\\u2961":"LeftDownTeeVector","\\u2962":"lHar","\\u2963":"uHar","\\u2964":"rHar","\\u2965":"dHar","\\u2966":"luruhar","\\u2967":"ldrdhar","\\u2968":"ruluhar","\\u2969":"rdldhar","\\u296A":"lharul","\\u296B":"llhard","\\u296C":"rharul","\\u296D":"lrhard","\\u296E":"udhar","\\u296F":"duhar","\\u2970":"RoundImplies","\\u2971":"erarr","\\u2972":"simrarr","\\u2973":"larrsim","\\u2974":"rarrsim","\\u2975":"rarrap","\\u2976":"ltlarr","\\u2978":"gtrarr","\\u2979":"subrarr","\\u297B":"suplarr","\\u297C":"lfisht","\\u297D":"rfisht","\\u297E":"ufisht","\\u297F":"dfisht","\\u299A":"vzigzag","\\u299C":"vangrt","\\u299D":"angrtvbd","\\u29A4":"ange","\\u29A5":"range","\\u29A6":"dwangle","\\u29A7":"uwangle","\\u29A8":"angmsdaa","\\u29A9":"angmsdab","\\u29AA":"angmsdac","\\u29AB":"angmsdad","\\u29AC":"angmsdae","\\u29AD":"angmsdaf","\\u29AE":"angmsdag","\\u29AF":"angmsdah","\\u29B0":"bemptyv","\\u29B1":"demptyv","\\u29B2":"cemptyv","\\u29B3":"raemptyv","\\u29B4":"laemptyv","\\u29B5":"ohbar","\\u29B6":"omid","\\u29B7":"opar","\\u29B9":"operp","\\u29BB":"olcross","\\u29BC":"odsold","\\u29BE":"olcir","\\u29BF":"ofcir","\\u29C0":"olt","\\u29C1":"ogt","\\u29C2":"cirscir","\\u29C3":"cirE","\\u29C4":"solb","\\u29C5":"bsolb","\\u29C9":"boxbox","\\u29CD":"trisb","\\u29CE":"rtriltri","\\u29CF":"LeftTriangleBar","\\u29CF\\u0338":"NotLeftTriangleBar","\\u29D0":"RightTriangleBar","\\u29D0\\u0338":"NotRightTriangleBar","\\u29DC":"iinfin","\\u29DD":"infintie","\\u29DE":"nvinfin","\\u29E3":"eparsl","\\u29E4":"smeparsl","\\u29E5":"eqvparsl","\\u29EB":"lozf","\\u29F4":"RuleDelayed","\\u29F6":"dsol","\\u2A00":"xodot","\\u2A01":"xoplus","\\u2A02":"xotime","\\u2A04":"xuplus","\\u2A06":"xsqcup","\\u2A0D":"fpartint","\\u2A10":"cirfnint","\\u2A11":"awint","\\u2A12":"rppolint","\\u2A13":"scpolint","\\u2A14":"npolint","\\u2A15":"pointint","\\u2A16":"quatint","\\u2A17":"intlarhk","\\u2A22":"pluscir","\\u2A23":"plusacir","\\u2A24":"simplus","\\u2A25":"plusdu","\\u2A26":"plussim","\\u2A27":"plustwo","\\u2A29":"mcomma","\\u2A2A":"minusdu","\\u2A2D":"loplus","\\u2A2E":"roplus","\\u2A2F":"Cross","\\u2A30":"timesd","\\u2A31":"timesbar","\\u2A33":"smashp","\\u2A34":"lotimes","\\u2A35":"rotimes","\\u2A36":"otimesas","\\u2A37":"Otimes","\\u2A38":"odiv","\\u2A39":"triplus","\\u2A3A":"triminus","\\u2A3B":"tritime","\\u2A3C":"iprod","\\u2A3F":"amalg","\\u2A40":"capdot","\\u2A42":"ncup","\\u2A43":"ncap","\\u2A44":"capand","\\u2A45":"cupor","\\u2A46":"cupcap","\\u2A47":"capcup","\\u2A48":"cupbrcap","\\u2A49":"capbrcup","\\u2A4A":"cupcup","\\u2A4B":"capcap","\\u2A4C":"ccups","\\u2A4D":"ccaps","\\u2A50":"ccupssm","\\u2A53":"And","\\u2A54":"Or","\\u2A55":"andand","\\u2A56":"oror","\\u2A57":"orslope","\\u2A58":"andslope","\\u2A5A":"andv","\\u2A5B":"orv","\\u2A5C":"andd","\\u2A5D":"ord","\\u2A5F":"wedbar","\\u2A66":"sdote","\\u2A6A":"simdot","\\u2A6D":"congdot","\\u2A6D\\u0338":"ncongdot","\\u2A6E":"easter","\\u2A6F":"apacir","\\u2A70":"apE","\\u2A70\\u0338":"napE","\\u2A71":"eplus","\\u2A72":"pluse","\\u2A73":"Esim","\\u2A77":"eDDot","\\u2A78":"equivDD","\\u2A79":"ltcir","\\u2A7A":"gtcir","\\u2A7B":"ltquest","\\u2A7C":"gtquest","\\u2A7D":"les","\\u2A7D\\u0338":"nles","\\u2A7E":"ges","\\u2A7E\\u0338":"nges","\\u2A7F":"lesdot","\\u2A80":"gesdot","\\u2A81":"lesdoto","\\u2A82":"gesdoto","\\u2A83":"lesdotor","\\u2A84":"gesdotol","\\u2A85":"lap","\\u2A86":"gap","\\u2A87":"lne","\\u2A88":"gne","\\u2A89":"lnap","\\u2A8A":"gnap","\\u2A8B":"lEg","\\u2A8C":"gEl","\\u2A8D":"lsime","\\u2A8E":"gsime","\\u2A8F":"lsimg","\\u2A90":"gsiml","\\u2A91":"lgE","\\u2A92":"glE","\\u2A93":"lesges","\\u2A94":"gesles","\\u2A95":"els","\\u2A96":"egs","\\u2A97":"elsdot","\\u2A98":"egsdot","\\u2A99":"el","\\u2A9A":"eg","\\u2A9D":"siml","\\u2A9E":"simg","\\u2A9F":"simlE","\\u2AA0":"simgE","\\u2AA1":"LessLess","\\u2AA1\\u0338":"NotNestedLessLess","\\u2AA2":"GreaterGreater","\\u2AA2\\u0338":"NotNestedGreaterGreater","\\u2AA4":"glj","\\u2AA5":"gla","\\u2AA6":"ltcc","\\u2AA7":"gtcc","\\u2AA8":"lescc","\\u2AA9":"gescc","\\u2AAA":"smt","\\u2AAB":"lat","\\u2AAC":"smte","\\u2AAC\\uFE00":"smtes","\\u2AAD":"late","\\u2AAD\\uFE00":"lates","\\u2AAE":"bumpE","\\u2AAF":"pre","\\u2AAF\\u0338":"npre","\\u2AB0":"sce","\\u2AB0\\u0338":"nsce","\\u2AB3":"prE","\\u2AB4":"scE","\\u2AB5":"prnE","\\u2AB6":"scnE","\\u2AB7":"prap","\\u2AB8":"scap","\\u2AB9":"prnap","\\u2ABA":"scnap","\\u2ABB":"Pr","\\u2ABC":"Sc","\\u2ABD":"subdot","\\u2ABE":"supdot","\\u2ABF":"subplus","\\u2AC0":"supplus","\\u2AC1":"submult","\\u2AC2":"supmult","\\u2AC3":"subedot","\\u2AC4":"supedot","\\u2AC5":"subE","\\u2AC5\\u0338":"nsubE","\\u2AC6":"supE","\\u2AC6\\u0338":"nsupE","\\u2AC7":"subsim","\\u2AC8":"supsim","\\u2ACB\\uFE00":"vsubnE","\\u2ACB":"subnE","\\u2ACC\\uFE00":"vsupnE","\\u2ACC":"supnE","\\u2ACF":"csub","\\u2AD0":"csup","\\u2AD1":"csube","\\u2AD2":"csupe","\\u2AD3":"subsup","\\u2AD4":"supsub","\\u2AD5":"subsub","\\u2AD6":"supsup","\\u2AD7":"suphsub","\\u2AD8":"supdsub","\\u2AD9":"forkv","\\u2ADA":"topfork","\\u2ADB":"mlcp","\\u2AE4":"Dashv","\\u2AE6":"Vdashl","\\u2AE7":"Barv","\\u2AE8":"vBar","\\u2AE9":"vBarv","\\u2AEB":"Vbar","\\u2AEC":"Not","\\u2AED":"bNot","\\u2AEE":"rnmid","\\u2AEF":"cirmid","\\u2AF0":"midcir","\\u2AF1":"topcir","\\u2AF2":"nhpar","\\u2AF3":"parsim","\\u2AFD":"parsl","\\u2AFD\\u20E5":"nparsl","\\u266D":"flat","\\u266E":"natur","\\u266F":"sharp","\\xA4":"curren","\\xA2":"cent",$:"dollar","\\xA3":"pound","\\xA5":"yen","\\u20AC":"euro","\\xB9":"sup1","\\xBD":"half","\\u2153":"frac13","\\xBC":"frac14","\\u2155":"frac15","\\u2159":"frac16","\\u215B":"frac18","\\xB2":"sup2","\\u2154":"frac23","\\u2156":"frac25","\\xB3":"sup3","\\xBE":"frac34","\\u2157":"frac35","\\u215C":"frac38","\\u2158":"frac45","\\u215A":"frac56","\\u215D":"frac58","\\u215E":"frac78","\\u{1D4B6}":"ascr","\\u{1D552}":"aopf","\\u{1D51E}":"afr","\\u{1D538}":"Aopf","\\u{1D504}":"Afr","\\u{1D49C}":"Ascr",\\u00AA:"ordf",\\u00E1:"aacute",\\u00C1:"Aacute",\\u00E0:"agrave",\\u00C0:"Agrave",\\u0103:"abreve",\\u0102:"Abreve",\\u00E2:"acirc",\\u00C2:"Acirc",\\u00E5:"aring",\\u00C5:"angst",\\u00E4:"auml",\\u00C4:"Auml",\\u00E3:"atilde",\\u00C3:"Atilde",\\u0105:"aogon",\\u0104:"Aogon",\\u0101:"amacr",\\u0100:"Amacr",\\u00E6:"aelig",\\u00C6:"AElig","\\u{1D4B7}":"bscr","\\u{1D553}":"bopf","\\u{1D51F}":"bfr","\\u{1D539}":"Bopf",\\u212C:"Bscr","\\u{1D505}":"Bfr","\\u{1D520}":"cfr","\\u{1D4B8}":"cscr","\\u{1D554}":"copf",\\u212D:"Cfr","\\u{1D49E}":"Cscr",\\u2102:"Copf",\\u0107:"cacute",\\u0106:"Cacute",\\u0109:"ccirc",\\u0108:"Ccirc",\\u010D:"ccaron",\\u010C:"Ccaron",\\u010B:"cdot",\\u010A:"Cdot",\\u00E7:"ccedil",\\u00C7:"Ccedil","\\u2105":"incare","\\u{1D521}":"dfr","\\u2146":"dd","\\u{1D555}":"dopf","\\u{1D4B9}":"dscr","\\u{1D49F}":"Dscr","\\u{1D507}":"Dfr","\\u2145":"DD","\\u{1D53B}":"Dopf",\\u010F:"dcaron",\\u010E:"Dcaron",\\u0111:"dstrok",\\u0110:"Dstrok",\\u00F0:"eth",\\u00D0:"ETH","\\u2147":"ee",\\u212F:"escr","\\u{1D522}":"efr","\\u{1D556}":"eopf",\\u2130:"Escr","\\u{1D508}":"Efr","\\u{1D53C}":"Eopf",\\u00E9:"eacute",\\u00C9:"Eacute",\\u00E8:"egrave",\\u00C8:"Egrave",\\u00EA:"ecirc",\\u00CA:"Ecirc",\\u011B:"ecaron",\\u011A:"Ecaron",\\u00EB:"euml",\\u00CB:"Euml",\\u0117:"edot",\\u0116:"Edot",\\u0119:"eogon",\\u0118:"Eogon",\\u0113:"emacr",\\u0112:"Emacr","\\u{1D523}":"ffr","\\u{1D557}":"fopf","\\u{1D4BB}":"fscr","\\u{1D509}":"Ffr","\\u{1D53D}":"Fopf",\\u2131:"Fscr",\\uFB00:"fflig",\\uFB03:"ffilig",\\uFB04:"ffllig",\\uFB01:"filig",fj:"fjlig",\\uFB02:"fllig",\\u0192:"fnof",\\u210A:"gscr","\\u{1D558}":"gopf","\\u{1D524}":"gfr","\\u{1D4A2}":"Gscr","\\u{1D53E}":"Gopf","\\u{1D50A}":"Gfr",\\u01F5:"gacute",\\u011F:"gbreve",\\u011E:"Gbreve",\\u011D:"gcirc",\\u011C:"Gcirc",\\u0121:"gdot",\\u0120:"Gdot",\\u0122:"Gcedil","\\u{1D525}":"hfr",\\u210E:"planckh","\\u{1D4BD}":"hscr","\\u{1D559}":"hopf",\\u210B:"Hscr",\\u210C:"Hfr",\\u210D:"Hopf",\\u0125:"hcirc",\\u0124:"Hcirc",\\u210F:"hbar",\\u0127:"hstrok",\\u0126:"Hstrok","\\u{1D55A}":"iopf","\\u{1D526}":"ifr","\\u{1D4BE}":"iscr","\\u2148":"ii","\\u{1D540}":"Iopf",\\u2110:"Iscr",\\u2111:"Im",\\u00ED:"iacute",\\u00CD:"Iacute",\\u00EC:"igrave",\\u00CC:"Igrave",\\u00EE:"icirc",\\u00CE:"Icirc",\\u00EF:"iuml",\\u00CF:"Iuml",\\u0129:"itilde",\\u0128:"Itilde",\\u0130:"Idot",\\u012F:"iogon",\\u012E:"Iogon",\\u012B:"imacr",\\u012A:"Imacr",\\u0133:"ijlig",\\u0132:"IJlig",\\u0131:"imath","\\u{1D4BF}":"jscr","\\u{1D55B}":"jopf","\\u{1D527}":"jfr","\\u{1D4A5}":"Jscr","\\u{1D50D}":"Jfr","\\u{1D541}":"Jopf",\\u0135:"jcirc",\\u0134:"Jcirc","\\u0237":"jmath","\\u{1D55C}":"kopf","\\u{1D4C0}":"kscr","\\u{1D528}":"kfr","\\u{1D4A6}":"Kscr","\\u{1D542}":"Kopf","\\u{1D50E}":"Kfr",\\u0137:"kcedil",\\u0136:"Kcedil","\\u{1D529}":"lfr","\\u{1D4C1}":"lscr",\\u2113:"ell","\\u{1D55D}":"lopf",\\u2112:"Lscr","\\u{1D50F}":"Lfr","\\u{1D543}":"Lopf",\\u013A:"lacute",\\u0139:"Lacute",\\u013E:"lcaron",\\u013D:"Lcaron",\\u013C:"lcedil",\\u013B:"Lcedil",\\u0142:"lstrok",\\u0141:"Lstrok",\\u0140:"lmidot",\\u013F:"Lmidot","\\u{1D52A}":"mfr","\\u{1D55E}":"mopf","\\u{1D4C2}":"mscr","\\u{1D510}":"Mfr","\\u{1D544}":"Mopf",\\u2133:"Mscr","\\u{1D52B}":"nfr","\\u{1D55F}":"nopf","\\u{1D4C3}":"nscr",\\u2115:"Nopf","\\u{1D4A9}":"Nscr","\\u{1D511}":"Nfr",\\u0144:"nacute",\\u0143:"Nacute",\\u0148:"ncaron",\\u0147:"Ncaron",\\u00F1:"ntilde",\\u00D1:"Ntilde",\\u0146:"ncedil",\\u0145:"Ncedil","\\u2116":"numero",\\u014B:"eng",\\u014A:"ENG","\\u{1D560}":"oopf","\\u{1D52C}":"ofr",\\u2134:"oscr","\\u{1D4AA}":"Oscr","\\u{1D512}":"Ofr","\\u{1D546}":"Oopf",\\u00BA:"ordm",\\u00F3:"oacute",\\u00D3:"Oacute",\\u00F2:"ograve",\\u00D2:"Ograve",\\u00F4:"ocirc",\\u00D4:"Ocirc",\\u00F6:"ouml",\\u00D6:"Ouml",\\u0151:"odblac",\\u0150:"Odblac",\\u00F5:"otilde",\\u00D5:"Otilde",\\u00F8:"oslash",\\u00D8:"Oslash",\\u014D:"omacr",\\u014C:"Omacr",\\u0153:"oelig",\\u0152:"OElig","\\u{1D52D}":"pfr","\\u{1D4C5}":"pscr","\\u{1D561}":"popf",\\u2119:"Popf","\\u{1D513}":"Pfr","\\u{1D4AB}":"Pscr","\\u{1D562}":"qopf","\\u{1D52E}":"qfr","\\u{1D4C6}":"qscr","\\u{1D4AC}":"Qscr","\\u{1D514}":"Qfr",\\u211A:"Qopf",\\u0138:"kgreen","\\u{1D52F}":"rfr","\\u{1D563}":"ropf","\\u{1D4C7}":"rscr",\\u211B:"Rscr",\\u211C:"Re",\\u211D:"Ropf",\\u0155:"racute",\\u0154:"Racute",\\u0159:"rcaron",\\u0158:"Rcaron",\\u0157:"rcedil",\\u0156:"Rcedil","\\u{1D564}":"sopf","\\u{1D4C8}":"sscr","\\u{1D530}":"sfr","\\u{1D54A}":"Sopf","\\u{1D516}":"Sfr","\\u{1D4AE}":"Sscr","\\u24C8":"oS",\\u015B:"sacute",\\u015A:"Sacute",\\u015D:"scirc",\\u015C:"Scirc",\\u0161:"scaron",\\u0160:"Scaron",\\u015F:"scedil",\\u015E:"Scedil",\\u00DF:"szlig","\\u{1D531}":"tfr","\\u{1D4C9}":"tscr","\\u{1D565}":"topf","\\u{1D4AF}":"Tscr","\\u{1D517}":"Tfr","\\u{1D54B}":"Topf",\\u0165:"tcaron",\\u0164:"Tcaron",\\u0163:"tcedil",\\u0162:"Tcedil","\\u2122":"trade",\\u0167:"tstrok",\\u0166:"Tstrok","\\u{1D4CA}":"uscr","\\u{1D566}":"uopf","\\u{1D532}":"ufr","\\u{1D54C}":"Uopf","\\u{1D518}":"Ufr","\\u{1D4B0}":"Uscr",\\u00FA:"uacute",\\u00DA:"Uacute",\\u00F9:"ugrave",\\u00D9:"Ugrave",\\u016D:"ubreve",\\u016C:"Ubreve",\\u00FB:"ucirc",\\u00DB:"Ucirc",\\u016F:"uring",\\u016E:"Uring",\\u00FC:"uuml",\\u00DC:"Uuml",\\u0171:"udblac",\\u0170:"Udblac",\\u0169:"utilde",\\u0168:"Utilde",\\u0173:"uogon",\\u0172:"Uogon",\\u016B:"umacr",\\u016A:"Umacr","\\u{1D533}":"vfr","\\u{1D567}":"vopf","\\u{1D4CB}":"vscr","\\u{1D519}":"Vfr","\\u{1D54D}":"Vopf","\\u{1D4B1}":"Vscr","\\u{1D568}":"wopf","\\u{1D4CC}":"wscr","\\u{1D534}":"wfr","\\u{1D4B2}":"Wscr","\\u{1D54E}":"Wopf","\\u{1D51A}":"Wfr",\\u0175:"wcirc",\\u0174:"Wcirc","\\u{1D535}":"xfr","\\u{1D4CD}":"xscr","\\u{1D569}":"xopf","\\u{1D54F}":"Xopf","\\u{1D51B}":"Xfr","\\u{1D4B3}":"Xscr","\\u{1D536}":"yfr","\\u{1D4CE}":"yscr","\\u{1D56A}":"yopf","\\u{1D4B4}":"Yscr","\\u{1D51C}":"Yfr","\\u{1D550}":"Yopf",\\u00FD:"yacute",\\u00DD:"Yacute",\\u0177:"ycirc",\\u0176:"Ycirc",\\u00FF:"yuml",\\u0178:"Yuml","\\u{1D4CF}":"zscr","\\u{1D537}":"zfr","\\u{1D56B}":"zopf",\\u2128:"Zfr",\\u2124:"Zopf","\\u{1D4B5}":"Zscr",\\u017A:"zacute",\\u0179:"Zacute",\\u017E:"zcaron",\\u017D:"Zcaron",\\u017C:"zdot",\\u017B:"Zdot",\\u01B5:"imped",\\u00FE:"thorn",\\u00DE:"THORN",\\u0149:"napos",\\u03B1:"alpha",\\u0391:"Alpha",\\u03B2:"beta",\\u0392:"Beta",\\u03B3:"gamma",\\u0393:"Gamma",\\u03B4:"delta",\\u0394:"Delta",\\u03B5:"epsi","\\u03F5":"epsiv",\\u0395:"Epsilon",\\u03DD:"gammad",\\u03DC:"Gammad",\\u03B6:"zeta",\\u0396:"Zeta",\\u03B7:"eta",\\u0397:"Eta",\\u03B8:"theta",\\u03D1:"thetav",\\u0398:"Theta",\\u03B9:"iota",\\u0399:"Iota",\\u03BA:"kappa",\\u03F0:"kappav",\\u039A:"Kappa",\\u03BB:"lambda",\\u039B:"Lambda",\\u03BC:"mu",\\u00B5:"micro",\\u039C:"Mu",\\u03BD:"nu",\\u039D:"Nu",\\u03BE:"xi",\\u039E:"Xi",\\u03BF:"omicron",\\u039F:"Omicron",\\u03C0:"pi",\\u03D6:"piv",\\u03A0:"Pi",\\u03C1:"rho",\\u03F1:"rhov",\\u03A1:"Rho",\\u03C3:"sigma",\\u03A3:"Sigma",\\u03C2:"sigmaf",\\u03C4:"tau",\\u03A4:"Tau",\\u03C5:"upsi",\\u03A5:"Upsilon",\\u03D2:"Upsi",\\u03C6:"phi",\\u03D5:"phiv",\\u03A6:"Phi",\\u03C7:"chi",\\u03A7:"Chi",\\u03C8:"psi",\\u03A8:"Psi",\\u03C9:"omega",\\u03A9:"ohm",\\u0430:"acy",\\u0410:"Acy",\\u0431:"bcy",\\u0411:"Bcy",\\u0432:"vcy",\\u0412:"Vcy",\\u0433:"gcy",\\u0413:"Gcy",\\u0453:"gjcy",\\u0403:"GJcy",\\u0434:"dcy",\\u0414:"Dcy",\\u0452:"djcy",\\u0402:"DJcy",\\u0435:"iecy",\\u0415:"IEcy",\\u0451:"iocy",\\u0401:"IOcy",\\u0454:"jukcy",\\u0404:"Jukcy",\\u0436:"zhcy",\\u0416:"ZHcy",\\u0437:"zcy",\\u0417:"Zcy",\\u0455:"dscy",\\u0405:"DScy",\\u0438:"icy",\\u0418:"Icy",\\u0456:"iukcy",\\u0406:"Iukcy",\\u0457:"yicy",\\u0407:"YIcy",\\u0439:"jcy",\\u0419:"Jcy",\\u0458:"jsercy",\\u0408:"Jsercy",\\u043A:"kcy",\\u041A:"Kcy",\\u045C:"kjcy",\\u040C:"KJcy",\\u043B:"lcy",\\u041B:"Lcy",\\u0459:"ljcy",\\u0409:"LJcy",\\u043C:"mcy",\\u041C:"Mcy",\\u043D:"ncy",\\u041D:"Ncy",\\u045A:"njcy",\\u040A:"NJcy",\\u043E:"ocy",\\u041E:"Ocy",\\u043F:"pcy",\\u041F:"Pcy",\\u0440:"rcy",\\u0420:"Rcy",\\u0441:"scy",\\u0421:"Scy",\\u0442:"tcy",\\u0422:"Tcy",\\u045B:"tshcy",\\u040B:"TSHcy",\\u0443:"ucy",\\u0423:"Ucy",\\u045E:"ubrcy",\\u040E:"Ubrcy",\\u0444:"fcy",\\u0424:"Fcy",\\u0445:"khcy",\\u0425:"KHcy",\\u0446:"tscy",\\u0426:"TScy",\\u0447:"chcy",\\u0427:"CHcy",\\u045F:"dzcy",\\u040F:"DZcy",\\u0448:"shcy",\\u0428:"SHcy",\\u0449:"shchcy",\\u0429:"SHCHcy",\\u044A:"hardcy",\\u042A:"HARDcy",\\u044B:"ycy",\\u042B:"Ycy",\\u044C:"softcy",\\u042C:"SOFTcy",\\u044D:"ecy",\\u042D:"Ecy",\\u044E:"yucy",\\u042E:"YUcy",\\u044F:"yacy",\\u042F:"YAcy",\\u2135:"aleph",\\u2136:"beth",\\u2137:"gimel",\\u2138:"daleth"},h=/["&\'<>`]/g,l={\'"\':""","&":"&","\'":"'","<":"<",">":">","`":"`"},c=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,A=/[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,p=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,m={aacute:"\\xE1",Aacute:"\\xC1",abreve:"\\u0103",Abreve:"\\u0102",ac:"\\u223E",acd:"\\u223F",acE:"\\u223E\\u0333",acirc:"\\xE2",Acirc:"\\xC2",acute:"\\xB4",acy:"\\u0430",Acy:"\\u0410",aelig:"\\xE6",AElig:"\\xC6",af:"\\u2061",afr:"\\u{1D51E}",Afr:"\\u{1D504}",agrave:"\\xE0",Agrave:"\\xC0",alefsym:"\\u2135",aleph:"\\u2135",alpha:"\\u03B1",Alpha:"\\u0391",amacr:"\\u0101",Amacr:"\\u0100",amalg:"\\u2A3F",amp:"&",AMP:"&",and:"\\u2227",And:"\\u2A53",andand:"\\u2A55",andd:"\\u2A5C",andslope:"\\u2A58",andv:"\\u2A5A",ang:"\\u2220",ange:"\\u29A4",angle:"\\u2220",angmsd:"\\u2221",angmsdaa:"\\u29A8",angmsdab:"\\u29A9",angmsdac:"\\u29AA",angmsdad:"\\u29AB",angmsdae:"\\u29AC",angmsdaf:"\\u29AD",angmsdag:"\\u29AE",angmsdah:"\\u29AF",angrt:"\\u221F",angrtvb:"\\u22BE",angrtvbd:"\\u299D",angsph:"\\u2222",angst:"\\xC5",angzarr:"\\u237C",aogon:"\\u0105",Aogon:"\\u0104",aopf:"\\u{1D552}",Aopf:"\\u{1D538}",ap:"\\u2248",apacir:"\\u2A6F",ape:"\\u224A",apE:"\\u2A70",apid:"\\u224B",apos:"\'",ApplyFunction:"\\u2061",approx:"\\u2248",approxeq:"\\u224A",aring:"\\xE5",Aring:"\\xC5",ascr:"\\u{1D4B6}",Ascr:"\\u{1D49C}",Assign:"\\u2254",ast:"*",asymp:"\\u2248",asympeq:"\\u224D",atilde:"\\xE3",Atilde:"\\xC3",auml:"\\xE4",Auml:"\\xC4",awconint:"\\u2233",awint:"\\u2A11",backcong:"\\u224C",backepsilon:"\\u03F6",backprime:"\\u2035",backsim:"\\u223D",backsimeq:"\\u22CD",Backslash:"\\u2216",Barv:"\\u2AE7",barvee:"\\u22BD",barwed:"\\u2305",Barwed:"\\u2306",barwedge:"\\u2305",bbrk:"\\u23B5",bbrktbrk:"\\u23B6",bcong:"\\u224C",bcy:"\\u0431",Bcy:"\\u0411",bdquo:"\\u201E",becaus:"\\u2235",because:"\\u2235",Because:"\\u2235",bemptyv:"\\u29B0",bepsi:"\\u03F6",bernou:"\\u212C",Bernoullis:"\\u212C",beta:"\\u03B2",Beta:"\\u0392",beth:"\\u2136",between:"\\u226C",bfr:"\\u{1D51F}",Bfr:"\\u{1D505}",bigcap:"\\u22C2",bigcirc:"\\u25EF",bigcup:"\\u22C3",bigodot:"\\u2A00",bigoplus:"\\u2A01",bigotimes:"\\u2A02",bigsqcup:"\\u2A06",bigstar:"\\u2605",bigtriangledown:"\\u25BD",bigtriangleup:"\\u25B3",biguplus:"\\u2A04",bigvee:"\\u22C1",bigwedge:"\\u22C0",bkarow:"\\u290D",blacklozenge:"\\u29EB",blacksquare:"\\u25AA",blacktriangle:"\\u25B4",blacktriangledown:"\\u25BE",blacktriangleleft:"\\u25C2",blacktriangleright:"\\u25B8",blank:"\\u2423",blk12:"\\u2592",blk14:"\\u2591",blk34:"\\u2593",block:"\\u2588",bne:"=\\u20E5",bnequiv:"\\u2261\\u20E5",bnot:"\\u2310",bNot:"\\u2AED",bopf:"\\u{1D553}",Bopf:"\\u{1D539}",bot:"\\u22A5",bottom:"\\u22A5",bowtie:"\\u22C8",boxbox:"\\u29C9",boxdl:"\\u2510",boxdL:"\\u2555",boxDl:"\\u2556",boxDL:"\\u2557",boxdr:"\\u250C",boxdR:"\\u2552",boxDr:"\\u2553",boxDR:"\\u2554",boxh:"\\u2500",boxH:"\\u2550",boxhd:"\\u252C",boxhD:"\\u2565",boxHd:"\\u2564",boxHD:"\\u2566",boxhu:"\\u2534",boxhU:"\\u2568",boxHu:"\\u2567",boxHU:"\\u2569",boxminus:"\\u229F",boxplus:"\\u229E",boxtimes:"\\u22A0",boxul:"\\u2518",boxuL:"\\u255B",boxUl:"\\u255C",boxUL:"\\u255D",boxur:"\\u2514",boxuR:"\\u2558",boxUr:"\\u2559",boxUR:"\\u255A",boxv:"\\u2502",boxV:"\\u2551",boxvh:"\\u253C",boxvH:"\\u256A",boxVh:"\\u256B",boxVH:"\\u256C",boxvl:"\\u2524",boxvL:"\\u2561",boxVl:"\\u2562",boxVL:"\\u2563",boxvr:"\\u251C",boxvR:"\\u255E",boxVr:"\\u255F",boxVR:"\\u2560",bprime:"\\u2035",breve:"\\u02D8",Breve:"\\u02D8",brvbar:"\\xA6",bscr:"\\u{1D4B7}",Bscr:"\\u212C",bsemi:"\\u204F",bsim:"\\u223D",bsime:"\\u22CD",bsol:"\\\\",bsolb:"\\u29C5",bsolhsub:"\\u27C8",bull:"\\u2022",bullet:"\\u2022",bump:"\\u224E",bumpe:"\\u224F",bumpE:"\\u2AAE",bumpeq:"\\u224F",Bumpeq:"\\u224E",cacute:"\\u0107",Cacute:"\\u0106",cap:"\\u2229",Cap:"\\u22D2",capand:"\\u2A44",capbrcup:"\\u2A49",capcap:"\\u2A4B",capcup:"\\u2A47",capdot:"\\u2A40",CapitalDifferentialD:"\\u2145",caps:"\\u2229\\uFE00",caret:"\\u2041",caron:"\\u02C7",Cayleys:"\\u212D",ccaps:"\\u2A4D",ccaron:"\\u010D",Ccaron:"\\u010C",ccedil:"\\xE7",Ccedil:"\\xC7",ccirc:"\\u0109",Ccirc:"\\u0108",Cconint:"\\u2230",ccups:"\\u2A4C",ccupssm:"\\u2A50",cdot:"\\u010B",Cdot:"\\u010A",cedil:"\\xB8",Cedilla:"\\xB8",cemptyv:"\\u29B2",cent:"\\xA2",centerdot:"\\xB7",CenterDot:"\\xB7",cfr:"\\u{1D520}",Cfr:"\\u212D",chcy:"\\u0447",CHcy:"\\u0427",check:"\\u2713",checkmark:"\\u2713",chi:"\\u03C7",Chi:"\\u03A7",cir:"\\u25CB",circ:"\\u02C6",circeq:"\\u2257",circlearrowleft:"\\u21BA",circlearrowright:"\\u21BB",circledast:"\\u229B",circledcirc:"\\u229A",circleddash:"\\u229D",CircleDot:"\\u2299",circledR:"\\xAE",circledS:"\\u24C8",CircleMinus:"\\u2296",CirclePlus:"\\u2295",CircleTimes:"\\u2297",cire:"\\u2257",cirE:"\\u29C3",cirfnint:"\\u2A10",cirmid:"\\u2AEF",cirscir:"\\u29C2",ClockwiseContourIntegral:"\\u2232",CloseCurlyDoubleQuote:"\\u201D",CloseCurlyQuote:"\\u2019",clubs:"\\u2663",clubsuit:"\\u2663",colon:":",Colon:"\\u2237",colone:"\\u2254",Colone:"\\u2A74",coloneq:"\\u2254",comma:",",commat:"@",comp:"\\u2201",compfn:"\\u2218",complement:"\\u2201",complexes:"\\u2102",cong:"\\u2245",congdot:"\\u2A6D",Congruent:"\\u2261",conint:"\\u222E",Conint:"\\u222F",ContourIntegral:"\\u222E",copf:"\\u{1D554}",Copf:"\\u2102",coprod:"\\u2210",Coproduct:"\\u2210",copy:"\\xA9",COPY:"\\xA9",copysr:"\\u2117",CounterClockwiseContourIntegral:"\\u2233",crarr:"\\u21B5",cross:"\\u2717",Cross:"\\u2A2F",cscr:"\\u{1D4B8}",Cscr:"\\u{1D49E}",csub:"\\u2ACF",csube:"\\u2AD1",csup:"\\u2AD0",csupe:"\\u2AD2",ctdot:"\\u22EF",cudarrl:"\\u2938",cudarrr:"\\u2935",cuepr:"\\u22DE",cuesc:"\\u22DF",cularr:"\\u21B6",cularrp:"\\u293D",cup:"\\u222A",Cup:"\\u22D3",cupbrcap:"\\u2A48",cupcap:"\\u2A46",CupCap:"\\u224D",cupcup:"\\u2A4A",cupdot:"\\u228D",cupor:"\\u2A45",cups:"\\u222A\\uFE00",curarr:"\\u21B7",curarrm:"\\u293C",curlyeqprec:"\\u22DE",curlyeqsucc:"\\u22DF",curlyvee:"\\u22CE",curlywedge:"\\u22CF",curren:"\\xA4",curvearrowleft:"\\u21B6",curvearrowright:"\\u21B7",cuvee:"\\u22CE",cuwed:"\\u22CF",cwconint:"\\u2232",cwint:"\\u2231",cylcty:"\\u232D",dagger:"\\u2020",Dagger:"\\u2021",daleth:"\\u2138",darr:"\\u2193",dArr:"\\u21D3",Darr:"\\u21A1",dash:"\\u2010",dashv:"\\u22A3",Dashv:"\\u2AE4",dbkarow:"\\u290F",dblac:"\\u02DD",dcaron:"\\u010F",Dcaron:"\\u010E",dcy:"\\u0434",Dcy:"\\u0414",dd:"\\u2146",DD:"\\u2145",ddagger:"\\u2021",ddarr:"\\u21CA",DDotrahd:"\\u2911",ddotseq:"\\u2A77",deg:"\\xB0",Del:"\\u2207",delta:"\\u03B4",Delta:"\\u0394",demptyv:"\\u29B1",dfisht:"\\u297F",dfr:"\\u{1D521}",Dfr:"\\u{1D507}",dHar:"\\u2965",dharl:"\\u21C3",dharr:"\\u21C2",DiacriticalAcute:"\\xB4",DiacriticalDot:"\\u02D9",DiacriticalDoubleAcute:"\\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\\u02DC",diam:"\\u22C4",diamond:"\\u22C4",Diamond:"\\u22C4",diamondsuit:"\\u2666",diams:"\\u2666",die:"\\xA8",DifferentialD:"\\u2146",digamma:"\\u03DD",disin:"\\u22F2",div:"\\xF7",divide:"\\xF7",divideontimes:"\\u22C7",divonx:"\\u22C7",djcy:"\\u0452",DJcy:"\\u0402",dlcorn:"\\u231E",dlcrop:"\\u230D",dollar:"$",dopf:"\\u{1D555}",Dopf:"\\u{1D53B}",dot:"\\u02D9",Dot:"\\xA8",DotDot:"\\u20DC",doteq:"\\u2250",doteqdot:"\\u2251",DotEqual:"\\u2250",dotminus:"\\u2238",dotplus:"\\u2214",dotsquare:"\\u22A1",doublebarwedge:"\\u2306",DoubleContourIntegral:"\\u222F",DoubleDot:"\\xA8",DoubleDownArrow:"\\u21D3",DoubleLeftArrow:"\\u21D0",DoubleLeftRightArrow:"\\u21D4",DoubleLeftTee:"\\u2AE4",DoubleLongLeftArrow:"\\u27F8",DoubleLongLeftRightArrow:"\\u27FA",DoubleLongRightArrow:"\\u27F9",DoubleRightArrow:"\\u21D2",DoubleRightTee:"\\u22A8",DoubleUpArrow:"\\u21D1",DoubleUpDownArrow:"\\u21D5",DoubleVerticalBar:"\\u2225",downarrow:"\\u2193",Downarrow:"\\u21D3",DownArrow:"\\u2193",DownArrowBar:"\\u2913",DownArrowUpArrow:"\\u21F5",DownBreve:"\\u0311",downdownarrows:"\\u21CA",downharpoonleft:"\\u21C3",downharpoonright:"\\u21C2",DownLeftRightVector:"\\u2950",DownLeftTeeVector:"\\u295E",DownLeftVector:"\\u21BD",DownLeftVectorBar:"\\u2956",DownRightTeeVector:"\\u295F",DownRightVector:"\\u21C1",DownRightVectorBar:"\\u2957",DownTee:"\\u22A4",DownTeeArrow:"\\u21A7",drbkarow:"\\u2910",drcorn:"\\u231F",drcrop:"\\u230C",dscr:"\\u{1D4B9}",Dscr:"\\u{1D49F}",dscy:"\\u0455",DScy:"\\u0405",dsol:"\\u29F6",dstrok:"\\u0111",Dstrok:"\\u0110",dtdot:"\\u22F1",dtri:"\\u25BF",dtrif:"\\u25BE",duarr:"\\u21F5",duhar:"\\u296F",dwangle:"\\u29A6",dzcy:"\\u045F",DZcy:"\\u040F",dzigrarr:"\\u27FF",eacute:"\\xE9",Eacute:"\\xC9",easter:"\\u2A6E",ecaron:"\\u011B",Ecaron:"\\u011A",ecir:"\\u2256",ecirc:"\\xEA",Ecirc:"\\xCA",ecolon:"\\u2255",ecy:"\\u044D",Ecy:"\\u042D",eDDot:"\\u2A77",edot:"\\u0117",eDot:"\\u2251",Edot:"\\u0116",ee:"\\u2147",efDot:"\\u2252",efr:"\\u{1D522}",Efr:"\\u{1D508}",eg:"\\u2A9A",egrave:"\\xE8",Egrave:"\\xC8",egs:"\\u2A96",egsdot:"\\u2A98",el:"\\u2A99",Element:"\\u2208",elinters:"\\u23E7",ell:"\\u2113",els:"\\u2A95",elsdot:"\\u2A97",emacr:"\\u0113",Emacr:"\\u0112",empty:"\\u2205",emptyset:"\\u2205",EmptySmallSquare:"\\u25FB",emptyv:"\\u2205",EmptyVerySmallSquare:"\\u25AB",emsp:"\\u2003",emsp13:"\\u2004",emsp14:"\\u2005",eng:"\\u014B",ENG:"\\u014A",ensp:"\\u2002",eogon:"\\u0119",Eogon:"\\u0118",eopf:"\\u{1D556}",Eopf:"\\u{1D53C}",epar:"\\u22D5",eparsl:"\\u29E3",eplus:"\\u2A71",epsi:"\\u03B5",epsilon:"\\u03B5",Epsilon:"\\u0395",epsiv:"\\u03F5",eqcirc:"\\u2256",eqcolon:"\\u2255",eqsim:"\\u2242",eqslantgtr:"\\u2A96",eqslantless:"\\u2A95",Equal:"\\u2A75",equals:"=",EqualTilde:"\\u2242",equest:"\\u225F",Equilibrium:"\\u21CC",equiv:"\\u2261",equivDD:"\\u2A78",eqvparsl:"\\u29E5",erarr:"\\u2971",erDot:"\\u2253",escr:"\\u212F",Escr:"\\u2130",esdot:"\\u2250",esim:"\\u2242",Esim:"\\u2A73",eta:"\\u03B7",Eta:"\\u0397",eth:"\\xF0",ETH:"\\xD0",euml:"\\xEB",Euml:"\\xCB",euro:"\\u20AC",excl:"!",exist:"\\u2203",Exists:"\\u2203",expectation:"\\u2130",exponentiale:"\\u2147",ExponentialE:"\\u2147",fallingdotseq:"\\u2252",fcy:"\\u0444",Fcy:"\\u0424",female:"\\u2640",ffilig:"\\uFB03",fflig:"\\uFB00",ffllig:"\\uFB04",ffr:"\\u{1D523}",Ffr:"\\u{1D509}",filig:"\\uFB01",FilledSmallSquare:"\\u25FC",FilledVerySmallSquare:"\\u25AA",fjlig:"fj",flat:"\\u266D",fllig:"\\uFB02",fltns:"\\u25B1",fnof:"\\u0192",fopf:"\\u{1D557}",Fopf:"\\u{1D53D}",forall:"\\u2200",ForAll:"\\u2200",fork:"\\u22D4",forkv:"\\u2AD9",Fouriertrf:"\\u2131",fpartint:"\\u2A0D",frac12:"\\xBD",frac13:"\\u2153",frac14:"\\xBC",frac15:"\\u2155",frac16:"\\u2159",frac18:"\\u215B",frac23:"\\u2154",frac25:"\\u2156",frac34:"\\xBE",frac35:"\\u2157",frac38:"\\u215C",frac45:"\\u2158",frac56:"\\u215A",frac58:"\\u215D",frac78:"\\u215E",frasl:"\\u2044",frown:"\\u2322",fscr:"\\u{1D4BB}",Fscr:"\\u2131",gacute:"\\u01F5",gamma:"\\u03B3",Gamma:"\\u0393",gammad:"\\u03DD",Gammad:"\\u03DC",gap:"\\u2A86",gbreve:"\\u011F",Gbreve:"\\u011E",Gcedil:"\\u0122",gcirc:"\\u011D",Gcirc:"\\u011C",gcy:"\\u0433",Gcy:"\\u0413",gdot:"\\u0121",Gdot:"\\u0120",ge:"\\u2265",gE:"\\u2267",gel:"\\u22DB",gEl:"\\u2A8C",geq:"\\u2265",geqq:"\\u2267",geqslant:"\\u2A7E",ges:"\\u2A7E",gescc:"\\u2AA9",gesdot:"\\u2A80",gesdoto:"\\u2A82",gesdotol:"\\u2A84",gesl:"\\u22DB\\uFE00",gesles:"\\u2A94",gfr:"\\u{1D524}",Gfr:"\\u{1D50A}",gg:"\\u226B",Gg:"\\u22D9",ggg:"\\u22D9",gimel:"\\u2137",gjcy:"\\u0453",GJcy:"\\u0403",gl:"\\u2277",gla:"\\u2AA5",glE:"\\u2A92",glj:"\\u2AA4",gnap:"\\u2A8A",gnapprox:"\\u2A8A",gne:"\\u2A88",gnE:"\\u2269",gneq:"\\u2A88",gneqq:"\\u2269",gnsim:"\\u22E7",gopf:"\\u{1D558}",Gopf:"\\u{1D53E}",grave:"`",GreaterEqual:"\\u2265",GreaterEqualLess:"\\u22DB",GreaterFullEqual:"\\u2267",GreaterGreater:"\\u2AA2",GreaterLess:"\\u2277",GreaterSlantEqual:"\\u2A7E",GreaterTilde:"\\u2273",gscr:"\\u210A",Gscr:"\\u{1D4A2}",gsim:"\\u2273",gsime:"\\u2A8E",gsiml:"\\u2A90",gt:">",Gt:"\\u226B",GT:">",gtcc:"\\u2AA7",gtcir:"\\u2A7A",gtdot:"\\u22D7",gtlPar:"\\u2995",gtquest:"\\u2A7C",gtrapprox:"\\u2A86",gtrarr:"\\u2978",gtrdot:"\\u22D7",gtreqless:"\\u22DB",gtreqqless:"\\u2A8C",gtrless:"\\u2277",gtrsim:"\\u2273",gvertneqq:"\\u2269\\uFE00",gvnE:"\\u2269\\uFE00",Hacek:"\\u02C7",hairsp:"\\u200A",half:"\\xBD",hamilt:"\\u210B",hardcy:"\\u044A",HARDcy:"\\u042A",harr:"\\u2194",hArr:"\\u21D4",harrcir:"\\u2948",harrw:"\\u21AD",Hat:"^",hbar:"\\u210F",hcirc:"\\u0125",Hcirc:"\\u0124",hearts:"\\u2665",heartsuit:"\\u2665",hellip:"\\u2026",hercon:"\\u22B9",hfr:"\\u{1D525}",Hfr:"\\u210C",HilbertSpace:"\\u210B",hksearow:"\\u2925",hkswarow:"\\u2926",hoarr:"\\u21FF",homtht:"\\u223B",hookleftarrow:"\\u21A9",hookrightarrow:"\\u21AA",hopf:"\\u{1D559}",Hopf:"\\u210D",horbar:"\\u2015",HorizontalLine:"\\u2500",hscr:"\\u{1D4BD}",Hscr:"\\u210B",hslash:"\\u210F",hstrok:"\\u0127",Hstrok:"\\u0126",HumpDownHump:"\\u224E",HumpEqual:"\\u224F",hybull:"\\u2043",hyphen:"\\u2010",iacute:"\\xED",Iacute:"\\xCD",ic:"\\u2063",icirc:"\\xEE",Icirc:"\\xCE",icy:"\\u0438",Icy:"\\u0418",Idot:"\\u0130",iecy:"\\u0435",IEcy:"\\u0415",iexcl:"\\xA1",iff:"\\u21D4",ifr:"\\u{1D526}",Ifr:"\\u2111",igrave:"\\xEC",Igrave:"\\xCC",ii:"\\u2148",iiiint:"\\u2A0C",iiint:"\\u222D",iinfin:"\\u29DC",iiota:"\\u2129",ijlig:"\\u0133",IJlig:"\\u0132",Im:"\\u2111",imacr:"\\u012B",Imacr:"\\u012A",image:"\\u2111",ImaginaryI:"\\u2148",imagline:"\\u2110",imagpart:"\\u2111",imath:"\\u0131",imof:"\\u22B7",imped:"\\u01B5",Implies:"\\u21D2",in:"\\u2208",incare:"\\u2105",infin:"\\u221E",infintie:"\\u29DD",inodot:"\\u0131",int:"\\u222B",Int:"\\u222C",intcal:"\\u22BA",integers:"\\u2124",Integral:"\\u222B",intercal:"\\u22BA",Intersection:"\\u22C2",intlarhk:"\\u2A17",intprod:"\\u2A3C",InvisibleComma:"\\u2063",InvisibleTimes:"\\u2062",iocy:"\\u0451",IOcy:"\\u0401",iogon:"\\u012F",Iogon:"\\u012E",iopf:"\\u{1D55A}",Iopf:"\\u{1D540}",iota:"\\u03B9",Iota:"\\u0399",iprod:"\\u2A3C",iquest:"\\xBF",iscr:"\\u{1D4BE}",Iscr:"\\u2110",isin:"\\u2208",isindot:"\\u22F5",isinE:"\\u22F9",isins:"\\u22F4",isinsv:"\\u22F3",isinv:"\\u2208",it:"\\u2062",itilde:"\\u0129",Itilde:"\\u0128",iukcy:"\\u0456",Iukcy:"\\u0406",iuml:"\\xEF",Iuml:"\\xCF",jcirc:"\\u0135",Jcirc:"\\u0134",jcy:"\\u0439",Jcy:"\\u0419",jfr:"\\u{1D527}",Jfr:"\\u{1D50D}",jmath:"\\u0237",jopf:"\\u{1D55B}",Jopf:"\\u{1D541}",jscr:"\\u{1D4BF}",Jscr:"\\u{1D4A5}",jsercy:"\\u0458",Jsercy:"\\u0408",jukcy:"\\u0454",Jukcy:"\\u0404",kappa:"\\u03BA",Kappa:"\\u039A",kappav:"\\u03F0",kcedil:"\\u0137",Kcedil:"\\u0136",kcy:"\\u043A",Kcy:"\\u041A",kfr:"\\u{1D528}",Kfr:"\\u{1D50E}",kgreen:"\\u0138",khcy:"\\u0445",KHcy:"\\u0425",kjcy:"\\u045C",KJcy:"\\u040C",kopf:"\\u{1D55C}",Kopf:"\\u{1D542}",kscr:"\\u{1D4C0}",Kscr:"\\u{1D4A6}",lAarr:"\\u21DA",lacute:"\\u013A",Lacute:"\\u0139",laemptyv:"\\u29B4",lagran:"\\u2112",lambda:"\\u03BB",Lambda:"\\u039B",lang:"\\u27E8",Lang:"\\u27EA",langd:"\\u2991",langle:"\\u27E8",lap:"\\u2A85",Laplacetrf:"\\u2112",laquo:"\\xAB",larr:"\\u2190",lArr:"\\u21D0",Larr:"\\u219E",larrb:"\\u21E4",larrbfs:"\\u291F",larrfs:"\\u291D",larrhk:"\\u21A9",larrlp:"\\u21AB",larrpl:"\\u2939",larrsim:"\\u2973",larrtl:"\\u21A2",lat:"\\u2AAB",latail:"\\u2919",lAtail:"\\u291B",late:"\\u2AAD",lates:"\\u2AAD\\uFE00",lbarr:"\\u290C",lBarr:"\\u290E",lbbrk:"\\u2772",lbrace:"{",lbrack:"[",lbrke:"\\u298B",lbrksld:"\\u298F",lbrkslu:"\\u298D",lcaron:"\\u013E",Lcaron:"\\u013D",lcedil:"\\u013C",Lcedil:"\\u013B",lceil:"\\u2308",lcub:"{",lcy:"\\u043B",Lcy:"\\u041B",ldca:"\\u2936",ldquo:"\\u201C",ldquor:"\\u201E",ldrdhar:"\\u2967",ldrushar:"\\u294B",ldsh:"\\u21B2",le:"\\u2264",lE:"\\u2266",LeftAngleBracket:"\\u27E8",leftarrow:"\\u2190",Leftarrow:"\\u21D0",LeftArrow:"\\u2190",LeftArrowBar:"\\u21E4",LeftArrowRightArrow:"\\u21C6",leftarrowtail:"\\u21A2",LeftCeiling:"\\u2308",LeftDoubleBracket:"\\u27E6",LeftDownTeeVector:"\\u2961",LeftDownVector:"\\u21C3",LeftDownVectorBar:"\\u2959",LeftFloor:"\\u230A",leftharpoondown:"\\u21BD",leftharpoonup:"\\u21BC",leftleftarrows:"\\u21C7",leftrightarrow:"\\u2194",Leftrightarrow:"\\u21D4",LeftRightArrow:"\\u2194",leftrightarrows:"\\u21C6",leftrightharpoons:"\\u21CB",leftrightsquigarrow:"\\u21AD",LeftRightVector:"\\u294E",LeftTee:"\\u22A3",LeftTeeArrow:"\\u21A4",LeftTeeVector:"\\u295A",leftthreetimes:"\\u22CB",LeftTriangle:"\\u22B2",LeftTriangleBar:"\\u29CF",LeftTriangleEqual:"\\u22B4",LeftUpDownVector:"\\u2951",LeftUpTeeVector:"\\u2960",LeftUpVector:"\\u21BF",LeftUpVectorBar:"\\u2958",LeftVector:"\\u21BC",LeftVectorBar:"\\u2952",leg:"\\u22DA",lEg:"\\u2A8B",leq:"\\u2264",leqq:"\\u2266",leqslant:"\\u2A7D",les:"\\u2A7D",lescc:"\\u2AA8",lesdot:"\\u2A7F",lesdoto:"\\u2A81",lesdotor:"\\u2A83",lesg:"\\u22DA\\uFE00",lesges:"\\u2A93",lessapprox:"\\u2A85",lessdot:"\\u22D6",lesseqgtr:"\\u22DA",lesseqqgtr:"\\u2A8B",LessEqualGreater:"\\u22DA",LessFullEqual:"\\u2266",LessGreater:"\\u2276",lessgtr:"\\u2276",LessLess:"\\u2AA1",lesssim:"\\u2272",LessSlantEqual:"\\u2A7D",LessTilde:"\\u2272",lfisht:"\\u297C",lfloor:"\\u230A",lfr:"\\u{1D529}",Lfr:"\\u{1D50F}",lg:"\\u2276",lgE:"\\u2A91",lHar:"\\u2962",lhard:"\\u21BD",lharu:"\\u21BC",lharul:"\\u296A",lhblk:"\\u2584",ljcy:"\\u0459",LJcy:"\\u0409",ll:"\\u226A",Ll:"\\u22D8",llarr:"\\u21C7",llcorner:"\\u231E",Lleftarrow:"\\u21DA",llhard:"\\u296B",lltri:"\\u25FA",lmidot:"\\u0140",Lmidot:"\\u013F",lmoust:"\\u23B0",lmoustache:"\\u23B0",lnap:"\\u2A89",lnapprox:"\\u2A89",lne:"\\u2A87",lnE:"\\u2268",lneq:"\\u2A87",lneqq:"\\u2268",lnsim:"\\u22E6",loang:"\\u27EC",loarr:"\\u21FD",lobrk:"\\u27E6",longleftarrow:"\\u27F5",Longleftarrow:"\\u27F8",LongLeftArrow:"\\u27F5",longleftrightarrow:"\\u27F7",Longleftrightarrow:"\\u27FA",LongLeftRightArrow:"\\u27F7",longmapsto:"\\u27FC",longrightarrow:"\\u27F6",Longrightarrow:"\\u27F9",LongRightArrow:"\\u27F6",looparrowleft:"\\u21AB",looparrowright:"\\u21AC",lopar:"\\u2985",lopf:"\\u{1D55D}",Lopf:"\\u{1D543}",loplus:"\\u2A2D",lotimes:"\\u2A34",lowast:"\\u2217",lowbar:"_",LowerLeftArrow:"\\u2199",LowerRightArrow:"\\u2198",loz:"\\u25CA",lozenge:"\\u25CA",lozf:"\\u29EB",lpar:"(",lparlt:"\\u2993",lrarr:"\\u21C6",lrcorner:"\\u231F",lrhar:"\\u21CB",lrhard:"\\u296D",lrm:"\\u200E",lrtri:"\\u22BF",lsaquo:"\\u2039",lscr:"\\u{1D4C1}",Lscr:"\\u2112",lsh:"\\u21B0",Lsh:"\\u21B0",lsim:"\\u2272",lsime:"\\u2A8D",lsimg:"\\u2A8F",lsqb:"[",lsquo:"\\u2018",lsquor:"\\u201A",lstrok:"\\u0142",Lstrok:"\\u0141",lt:"<",Lt:"\\u226A",LT:"<",ltcc:"\\u2AA6",ltcir:"\\u2A79",ltdot:"\\u22D6",lthree:"\\u22CB",ltimes:"\\u22C9",ltlarr:"\\u2976",ltquest:"\\u2A7B",ltri:"\\u25C3",ltrie:"\\u22B4",ltrif:"\\u25C2",ltrPar:"\\u2996",lurdshar:"\\u294A",luruhar:"\\u2966",lvertneqq:"\\u2268\\uFE00",lvnE:"\\u2268\\uFE00",macr:"\\xAF",male:"\\u2642",malt:"\\u2720",maltese:"\\u2720",map:"\\u21A6",Map:"\\u2905",mapsto:"\\u21A6",mapstodown:"\\u21A7",mapstoleft:"\\u21A4",mapstoup:"\\u21A5",marker:"\\u25AE",mcomma:"\\u2A29",mcy:"\\u043C",Mcy:"\\u041C",mdash:"\\u2014",mDDot:"\\u223A",measuredangle:"\\u2221",MediumSpace:"\\u205F",Mellintrf:"\\u2133",mfr:"\\u{1D52A}",Mfr:"\\u{1D510}",mho:"\\u2127",micro:"\\xB5",mid:"\\u2223",midast:"*",midcir:"\\u2AF0",middot:"\\xB7",minus:"\\u2212",minusb:"\\u229F",minusd:"\\u2238",minusdu:"\\u2A2A",MinusPlus:"\\u2213",mlcp:"\\u2ADB",mldr:"\\u2026",mnplus:"\\u2213",models:"\\u22A7",mopf:"\\u{1D55E}",Mopf:"\\u{1D544}",mp:"\\u2213",mscr:"\\u{1D4C2}",Mscr:"\\u2133",mstpos:"\\u223E",mu:"\\u03BC",Mu:"\\u039C",multimap:"\\u22B8",mumap:"\\u22B8",nabla:"\\u2207",nacute:"\\u0144",Nacute:"\\u0143",nang:"\\u2220\\u20D2",nap:"\\u2249",napE:"\\u2A70\\u0338",napid:"\\u224B\\u0338",napos:"\\u0149",napprox:"\\u2249",natur:"\\u266E",natural:"\\u266E",naturals:"\\u2115",nbsp:"\\xA0",nbump:"\\u224E\\u0338",nbumpe:"\\u224F\\u0338",ncap:"\\u2A43",ncaron:"\\u0148",Ncaron:"\\u0147",ncedil:"\\u0146",Ncedil:"\\u0145",ncong:"\\u2247",ncongdot:"\\u2A6D\\u0338",ncup:"\\u2A42",ncy:"\\u043D",Ncy:"\\u041D",ndash:"\\u2013",ne:"\\u2260",nearhk:"\\u2924",nearr:"\\u2197",neArr:"\\u21D7",nearrow:"\\u2197",nedot:"\\u2250\\u0338",NegativeMediumSpace:"\\u200B",NegativeThickSpace:"\\u200B",NegativeThinSpace:"\\u200B",NegativeVeryThinSpace:"\\u200B",nequiv:"\\u2262",nesear:"\\u2928",nesim:"\\u2242\\u0338",NestedGreaterGreater:"\\u226B",NestedLessLess:"\\u226A",NewLine:`\n`,nexist:"\\u2204",nexists:"\\u2204",nfr:"\\u{1D52B}",Nfr:"\\u{1D511}",nge:"\\u2271",ngE:"\\u2267\\u0338",ngeq:"\\u2271",ngeqq:"\\u2267\\u0338",ngeqslant:"\\u2A7E\\u0338",nges:"\\u2A7E\\u0338",nGg:"\\u22D9\\u0338",ngsim:"\\u2275",ngt:"\\u226F",nGt:"\\u226B\\u20D2",ngtr:"\\u226F",nGtv:"\\u226B\\u0338",nharr:"\\u21AE",nhArr:"\\u21CE",nhpar:"\\u2AF2",ni:"\\u220B",nis:"\\u22FC",nisd:"\\u22FA",niv:"\\u220B",njcy:"\\u045A",NJcy:"\\u040A",nlarr:"\\u219A",nlArr:"\\u21CD",nldr:"\\u2025",nle:"\\u2270",nlE:"\\u2266\\u0338",nleftarrow:"\\u219A",nLeftarrow:"\\u21CD",nleftrightarrow:"\\u21AE",nLeftrightarrow:"\\u21CE",nleq:"\\u2270",nleqq:"\\u2266\\u0338",nleqslant:"\\u2A7D\\u0338",nles:"\\u2A7D\\u0338",nless:"\\u226E",nLl:"\\u22D8\\u0338",nlsim:"\\u2274",nlt:"\\u226E",nLt:"\\u226A\\u20D2",nltri:"\\u22EA",nltrie:"\\u22EC",nLtv:"\\u226A\\u0338",nmid:"\\u2224",NoBreak:"\\u2060",NonBreakingSpace:"\\xA0",nopf:"\\u{1D55F}",Nopf:"\\u2115",not:"\\xAC",Not:"\\u2AEC",NotCongruent:"\\u2262",NotCupCap:"\\u226D",NotDoubleVerticalBar:"\\u2226",NotElement:"\\u2209",NotEqual:"\\u2260",NotEqualTilde:"\\u2242\\u0338",NotExists:"\\u2204",NotGreater:"\\u226F",NotGreaterEqual:"\\u2271",NotGreaterFullEqual:"\\u2267\\u0338",NotGreaterGreater:"\\u226B\\u0338",NotGreaterLess:"\\u2279",NotGreaterSlantEqual:"\\u2A7E\\u0338",NotGreaterTilde:"\\u2275",NotHumpDownHump:"\\u224E\\u0338",NotHumpEqual:"\\u224F\\u0338",notin:"\\u2209",notindot:"\\u22F5\\u0338",notinE:"\\u22F9\\u0338",notinva:"\\u2209",notinvb:"\\u22F7",notinvc:"\\u22F6",NotLeftTriangle:"\\u22EA",NotLeftTriangleBar:"\\u29CF\\u0338",NotLeftTriangleEqual:"\\u22EC",NotLess:"\\u226E",NotLessEqual:"\\u2270",NotLessGreater:"\\u2278",NotLessLess:"\\u226A\\u0338",NotLessSlantEqual:"\\u2A7D\\u0338",NotLessTilde:"\\u2274",NotNestedGreaterGreater:"\\u2AA2\\u0338",NotNestedLessLess:"\\u2AA1\\u0338",notni:"\\u220C",notniva:"\\u220C",notnivb:"\\u22FE",notnivc:"\\u22FD",NotPrecedes:"\\u2280",NotPrecedesEqual:"\\u2AAF\\u0338",NotPrecedesSlantEqual:"\\u22E0",NotReverseElement:"\\u220C",NotRightTriangle:"\\u22EB",NotRightTriangleBar:"\\u29D0\\u0338",NotRightTriangleEqual:"\\u22ED",NotSquareSubset:"\\u228F\\u0338",NotSquareSubsetEqual:"\\u22E2",NotSquareSuperset:"\\u2290\\u0338",NotSquareSupersetEqual:"\\u22E3",NotSubset:"\\u2282\\u20D2",NotSubsetEqual:"\\u2288",NotSucceeds:"\\u2281",NotSucceedsEqual:"\\u2AB0\\u0338",NotSucceedsSlantEqual:"\\u22E1",NotSucceedsTilde:"\\u227F\\u0338",NotSuperset:"\\u2283\\u20D2",NotSupersetEqual:"\\u2289",NotTilde:"\\u2241",NotTildeEqual:"\\u2244",NotTildeFullEqual:"\\u2247",NotTildeTilde:"\\u2249",NotVerticalBar:"\\u2224",npar:"\\u2226",nparallel:"\\u2226",nparsl:"\\u2AFD\\u20E5",npart:"\\u2202\\u0338",npolint:"\\u2A14",npr:"\\u2280",nprcue:"\\u22E0",npre:"\\u2AAF\\u0338",nprec:"\\u2280",npreceq:"\\u2AAF\\u0338",nrarr:"\\u219B",nrArr:"\\u21CF",nrarrc:"\\u2933\\u0338",nrarrw:"\\u219D\\u0338",nrightarrow:"\\u219B",nRightarrow:"\\u21CF",nrtri:"\\u22EB",nrtrie:"\\u22ED",nsc:"\\u2281",nsccue:"\\u22E1",nsce:"\\u2AB0\\u0338",nscr:"\\u{1D4C3}",Nscr:"\\u{1D4A9}",nshortmid:"\\u2224",nshortparallel:"\\u2226",nsim:"\\u2241",nsime:"\\u2244",nsimeq:"\\u2244",nsmid:"\\u2224",nspar:"\\u2226",nsqsube:"\\u22E2",nsqsupe:"\\u22E3",nsub:"\\u2284",nsube:"\\u2288",nsubE:"\\u2AC5\\u0338",nsubset:"\\u2282\\u20D2",nsubseteq:"\\u2288",nsubseteqq:"\\u2AC5\\u0338",nsucc:"\\u2281",nsucceq:"\\u2AB0\\u0338",nsup:"\\u2285",nsupe:"\\u2289",nsupE:"\\u2AC6\\u0338",nsupset:"\\u2283\\u20D2",nsupseteq:"\\u2289",nsupseteqq:"\\u2AC6\\u0338",ntgl:"\\u2279",ntilde:"\\xF1",Ntilde:"\\xD1",ntlg:"\\u2278",ntriangleleft:"\\u22EA",ntrianglelefteq:"\\u22EC",ntriangleright:"\\u22EB",ntrianglerighteq:"\\u22ED",nu:"\\u03BD",Nu:"\\u039D",num:"#",numero:"\\u2116",numsp:"\\u2007",nvap:"\\u224D\\u20D2",nvdash:"\\u22AC",nvDash:"\\u22AD",nVdash:"\\u22AE",nVDash:"\\u22AF",nvge:"\\u2265\\u20D2",nvgt:">\\u20D2",nvHarr:"\\u2904",nvinfin:"\\u29DE",nvlArr:"\\u2902",nvle:"\\u2264\\u20D2",nvlt:"<\\u20D2",nvltrie:"\\u22B4\\u20D2",nvrArr:"\\u2903",nvrtrie:"\\u22B5\\u20D2",nvsim:"\\u223C\\u20D2",nwarhk:"\\u2923",nwarr:"\\u2196",nwArr:"\\u21D6",nwarrow:"\\u2196",nwnear:"\\u2927",oacute:"\\xF3",Oacute:"\\xD3",oast:"\\u229B",ocir:"\\u229A",ocirc:"\\xF4",Ocirc:"\\xD4",ocy:"\\u043E",Ocy:"\\u041E",odash:"\\u229D",odblac:"\\u0151",Odblac:"\\u0150",odiv:"\\u2A38",odot:"\\u2299",odsold:"\\u29BC",oelig:"\\u0153",OElig:"\\u0152",ofcir:"\\u29BF",ofr:"\\u{1D52C}",Ofr:"\\u{1D512}",ogon:"\\u02DB",ograve:"\\xF2",Ograve:"\\xD2",ogt:"\\u29C1",ohbar:"\\u29B5",ohm:"\\u03A9",oint:"\\u222E",olarr:"\\u21BA",olcir:"\\u29BE",olcross:"\\u29BB",oline:"\\u203E",olt:"\\u29C0",omacr:"\\u014D",Omacr:"\\u014C",omega:"\\u03C9",Omega:"\\u03A9",omicron:"\\u03BF",Omicron:"\\u039F",omid:"\\u29B6",ominus:"\\u2296",oopf:"\\u{1D560}",Oopf:"\\u{1D546}",opar:"\\u29B7",OpenCurlyDoubleQuote:"\\u201C",OpenCurlyQuote:"\\u2018",operp:"\\u29B9",oplus:"\\u2295",or:"\\u2228",Or:"\\u2A54",orarr:"\\u21BB",ord:"\\u2A5D",order:"\\u2134",orderof:"\\u2134",ordf:"\\xAA",ordm:"\\xBA",origof:"\\u22B6",oror:"\\u2A56",orslope:"\\u2A57",orv:"\\u2A5B",oS:"\\u24C8",oscr:"\\u2134",Oscr:"\\u{1D4AA}",oslash:"\\xF8",Oslash:"\\xD8",osol:"\\u2298",otilde:"\\xF5",Otilde:"\\xD5",otimes:"\\u2297",Otimes:"\\u2A37",otimesas:"\\u2A36",ouml:"\\xF6",Ouml:"\\xD6",ovbar:"\\u233D",OverBar:"\\u203E",OverBrace:"\\u23DE",OverBracket:"\\u23B4",OverParenthesis:"\\u23DC",par:"\\u2225",para:"\\xB6",parallel:"\\u2225",parsim:"\\u2AF3",parsl:"\\u2AFD",part:"\\u2202",PartialD:"\\u2202",pcy:"\\u043F",Pcy:"\\u041F",percnt:"%",period:".",permil:"\\u2030",perp:"\\u22A5",pertenk:"\\u2031",pfr:"\\u{1D52D}",Pfr:"\\u{1D513}",phi:"\\u03C6",Phi:"\\u03A6",phiv:"\\u03D5",phmmat:"\\u2133",phone:"\\u260E",pi:"\\u03C0",Pi:"\\u03A0",pitchfork:"\\u22D4",piv:"\\u03D6",planck:"\\u210F",planckh:"\\u210E",plankv:"\\u210F",plus:"+",plusacir:"\\u2A23",plusb:"\\u229E",pluscir:"\\u2A22",plusdo:"\\u2214",plusdu:"\\u2A25",pluse:"\\u2A72",PlusMinus:"\\xB1",plusmn:"\\xB1",plussim:"\\u2A26",plustwo:"\\u2A27",pm:"\\xB1",Poincareplane:"\\u210C",pointint:"\\u2A15",popf:"\\u{1D561}",Popf:"\\u2119",pound:"\\xA3",pr:"\\u227A",Pr:"\\u2ABB",prap:"\\u2AB7",prcue:"\\u227C",pre:"\\u2AAF",prE:"\\u2AB3",prec:"\\u227A",precapprox:"\\u2AB7",preccurlyeq:"\\u227C",Precedes:"\\u227A",PrecedesEqual:"\\u2AAF",PrecedesSlantEqual:"\\u227C",PrecedesTilde:"\\u227E",preceq:"\\u2AAF",precnapprox:"\\u2AB9",precneqq:"\\u2AB5",precnsim:"\\u22E8",precsim:"\\u227E",prime:"\\u2032",Prime:"\\u2033",primes:"\\u2119",prnap:"\\u2AB9",prnE:"\\u2AB5",prnsim:"\\u22E8",prod:"\\u220F",Product:"\\u220F",profalar:"\\u232E",profline:"\\u2312",profsurf:"\\u2313",prop:"\\u221D",Proportion:"\\u2237",Proportional:"\\u221D",propto:"\\u221D",prsim:"\\u227E",prurel:"\\u22B0",pscr:"\\u{1D4C5}",Pscr:"\\u{1D4AB}",psi:"\\u03C8",Psi:"\\u03A8",puncsp:"\\u2008",qfr:"\\u{1D52E}",Qfr:"\\u{1D514}",qint:"\\u2A0C",qopf:"\\u{1D562}",Qopf:"\\u211A",qprime:"\\u2057",qscr:"\\u{1D4C6}",Qscr:"\\u{1D4AC}",quaternions:"\\u210D",quatint:"\\u2A16",quest:"?",questeq:"\\u225F",quot:\'"\',QUOT:\'"\',rAarr:"\\u21DB",race:"\\u223D\\u0331",racute:"\\u0155",Racute:"\\u0154",radic:"\\u221A",raemptyv:"\\u29B3",rang:"\\u27E9",Rang:"\\u27EB",rangd:"\\u2992",range:"\\u29A5",rangle:"\\u27E9",raquo:"\\xBB",rarr:"\\u2192",rArr:"\\u21D2",Rarr:"\\u21A0",rarrap:"\\u2975",rarrb:"\\u21E5",rarrbfs:"\\u2920",rarrc:"\\u2933",rarrfs:"\\u291E",rarrhk:"\\u21AA",rarrlp:"\\u21AC",rarrpl:"\\u2945",rarrsim:"\\u2974",rarrtl:"\\u21A3",Rarrtl:"\\u2916",rarrw:"\\u219D",ratail:"\\u291A",rAtail:"\\u291C",ratio:"\\u2236",rationals:"\\u211A",rbarr:"\\u290D",rBarr:"\\u290F",RBarr:"\\u2910",rbbrk:"\\u2773",rbrace:"}",rbrack:"]",rbrke:"\\u298C",rbrksld:"\\u298E",rbrkslu:"\\u2990",rcaron:"\\u0159",Rcaron:"\\u0158",rcedil:"\\u0157",Rcedil:"\\u0156",rceil:"\\u2309",rcub:"}",rcy:"\\u0440",Rcy:"\\u0420",rdca:"\\u2937",rdldhar:"\\u2969",rdquo:"\\u201D",rdquor:"\\u201D",rdsh:"\\u21B3",Re:"\\u211C",real:"\\u211C",realine:"\\u211B",realpart:"\\u211C",reals:"\\u211D",rect:"\\u25AD",reg:"\\xAE",REG:"\\xAE",ReverseElement:"\\u220B",ReverseEquilibrium:"\\u21CB",ReverseUpEquilibrium:"\\u296F",rfisht:"\\u297D",rfloor:"\\u230B",rfr:"\\u{1D52F}",Rfr:"\\u211C",rHar:"\\u2964",rhard:"\\u21C1",rharu:"\\u21C0",rharul:"\\u296C",rho:"\\u03C1",Rho:"\\u03A1",rhov:"\\u03F1",RightAngleBracket:"\\u27E9",rightarrow:"\\u2192",Rightarrow:"\\u21D2",RightArrow:"\\u2192",RightArrowBar:"\\u21E5",RightArrowLeftArrow:"\\u21C4",rightarrowtail:"\\u21A3",RightCeiling:"\\u2309",RightDoubleBracket:"\\u27E7",RightDownTeeVector:"\\u295D",RightDownVector:"\\u21C2",RightDownVectorBar:"\\u2955",RightFloor:"\\u230B",rightharpoondown:"\\u21C1",rightharpoonup:"\\u21C0",rightleftarrows:"\\u21C4",rightleftharpoons:"\\u21CC",rightrightarrows:"\\u21C9",rightsquigarrow:"\\u219D",RightTee:"\\u22A2",RightTeeArrow:"\\u21A6",RightTeeVector:"\\u295B",rightthreetimes:"\\u22CC",RightTriangle:"\\u22B3",RightTriangleBar:"\\u29D0",RightTriangleEqual:"\\u22B5",RightUpDownVector:"\\u294F",RightUpTeeVector:"\\u295C",RightUpVector:"\\u21BE",RightUpVectorBar:"\\u2954",RightVector:"\\u21C0",RightVectorBar:"\\u2953",ring:"\\u02DA",risingdotseq:"\\u2253",rlarr:"\\u21C4",rlhar:"\\u21CC",rlm:"\\u200F",rmoust:"\\u23B1",rmoustache:"\\u23B1",rnmid:"\\u2AEE",roang:"\\u27ED",roarr:"\\u21FE",robrk:"\\u27E7",ropar:"\\u2986",ropf:"\\u{1D563}",Ropf:"\\u211D",roplus:"\\u2A2E",rotimes:"\\u2A35",RoundImplies:"\\u2970",rpar:")",rpargt:"\\u2994",rppolint:"\\u2A12",rrarr:"\\u21C9",Rrightarrow:"\\u21DB",rsaquo:"\\u203A",rscr:"\\u{1D4C7}",Rscr:"\\u211B",rsh:"\\u21B1",Rsh:"\\u21B1",rsqb:"]",rsquo:"\\u2019",rsquor:"\\u2019",rthree:"\\u22CC",rtimes:"\\u22CA",rtri:"\\u25B9",rtrie:"\\u22B5",rtrif:"\\u25B8",rtriltri:"\\u29CE",RuleDelayed:"\\u29F4",ruluhar:"\\u2968",rx:"\\u211E",sacute:"\\u015B",Sacute:"\\u015A",sbquo:"\\u201A",sc:"\\u227B",Sc:"\\u2ABC",scap:"\\u2AB8",scaron:"\\u0161",Scaron:"\\u0160",sccue:"\\u227D",sce:"\\u2AB0",scE:"\\u2AB4",scedil:"\\u015F",Scedil:"\\u015E",scirc:"\\u015D",Scirc:"\\u015C",scnap:"\\u2ABA",scnE:"\\u2AB6",scnsim:"\\u22E9",scpolint:"\\u2A13",scsim:"\\u227F",scy:"\\u0441",Scy:"\\u0421",sdot:"\\u22C5",sdotb:"\\u22A1",sdote:"\\u2A66",searhk:"\\u2925",searr:"\\u2198",seArr:"\\u21D8",searrow:"\\u2198",sect:"\\xA7",semi:";",seswar:"\\u2929",setminus:"\\u2216",setmn:"\\u2216",sext:"\\u2736",sfr:"\\u{1D530}",Sfr:"\\u{1D516}",sfrown:"\\u2322",sharp:"\\u266F",shchcy:"\\u0449",SHCHcy:"\\u0429",shcy:"\\u0448",SHcy:"\\u0428",ShortDownArrow:"\\u2193",ShortLeftArrow:"\\u2190",shortmid:"\\u2223",shortparallel:"\\u2225",ShortRightArrow:"\\u2192",ShortUpArrow:"\\u2191",shy:"\\xAD",sigma:"\\u03C3",Sigma:"\\u03A3",sigmaf:"\\u03C2",sigmav:"\\u03C2",sim:"\\u223C",simdot:"\\u2A6A",sime:"\\u2243",simeq:"\\u2243",simg:"\\u2A9E",simgE:"\\u2AA0",siml:"\\u2A9D",simlE:"\\u2A9F",simne:"\\u2246",simplus:"\\u2A24",simrarr:"\\u2972",slarr:"\\u2190",SmallCircle:"\\u2218",smallsetminus:"\\u2216",smashp:"\\u2A33",smeparsl:"\\u29E4",smid:"\\u2223",smile:"\\u2323",smt:"\\u2AAA",smte:"\\u2AAC",smtes:"\\u2AAC\\uFE00",softcy:"\\u044C",SOFTcy:"\\u042C",sol:"/",solb:"\\u29C4",solbar:"\\u233F",sopf:"\\u{1D564}",Sopf:"\\u{1D54A}",spades:"\\u2660",spadesuit:"\\u2660",spar:"\\u2225",sqcap:"\\u2293",sqcaps:"\\u2293\\uFE00",sqcup:"\\u2294",sqcups:"\\u2294\\uFE00",Sqrt:"\\u221A",sqsub:"\\u228F",sqsube:"\\u2291",sqsubset:"\\u228F",sqsubseteq:"\\u2291",sqsup:"\\u2290",sqsupe:"\\u2292",sqsupset:"\\u2290",sqsupseteq:"\\u2292",squ:"\\u25A1",square:"\\u25A1",Square:"\\u25A1",SquareIntersection:"\\u2293",SquareSubset:"\\u228F",SquareSubsetEqual:"\\u2291",SquareSuperset:"\\u2290",SquareSupersetEqual:"\\u2292",SquareUnion:"\\u2294",squarf:"\\u25AA",squf:"\\u25AA",srarr:"\\u2192",sscr:"\\u{1D4C8}",Sscr:"\\u{1D4AE}",ssetmn:"\\u2216",ssmile:"\\u2323",sstarf:"\\u22C6",star:"\\u2606",Star:"\\u22C6",starf:"\\u2605",straightepsilon:"\\u03F5",straightphi:"\\u03D5",strns:"\\xAF",sub:"\\u2282",Sub:"\\u22D0",subdot:"\\u2ABD",sube:"\\u2286",subE:"\\u2AC5",subedot:"\\u2AC3",submult:"\\u2AC1",subne:"\\u228A",subnE:"\\u2ACB",subplus:"\\u2ABF",subrarr:"\\u2979",subset:"\\u2282",Subset:"\\u22D0",subseteq:"\\u2286",subseteqq:"\\u2AC5",SubsetEqual:"\\u2286",subsetneq:"\\u228A",subsetneqq:"\\u2ACB",subsim:"\\u2AC7",subsub:"\\u2AD5",subsup:"\\u2AD3",succ:"\\u227B",succapprox:"\\u2AB8",succcurlyeq:"\\u227D",Succeeds:"\\u227B",SucceedsEqual:"\\u2AB0",SucceedsSlantEqual:"\\u227D",SucceedsTilde:"\\u227F",succeq:"\\u2AB0",succnapprox:"\\u2ABA",succneqq:"\\u2AB6",succnsim:"\\u22E9",succsim:"\\u227F",SuchThat:"\\u220B",sum:"\\u2211",Sum:"\\u2211",sung:"\\u266A",sup:"\\u2283",Sup:"\\u22D1",sup1:"\\xB9",sup2:"\\xB2",sup3:"\\xB3",supdot:"\\u2ABE",supdsub:"\\u2AD8",supe:"\\u2287",supE:"\\u2AC6",supedot:"\\u2AC4",Superset:"\\u2283",SupersetEqual:"\\u2287",suphsol:"\\u27C9",suphsub:"\\u2AD7",suplarr:"\\u297B",supmult:"\\u2AC2",supne:"\\u228B",supnE:"\\u2ACC",supplus:"\\u2AC0",supset:"\\u2283",Supset:"\\u22D1",supseteq:"\\u2287",supseteqq:"\\u2AC6",supsetneq:"\\u228B",supsetneqq:"\\u2ACC",supsim:"\\u2AC8",supsub:"\\u2AD4",supsup:"\\u2AD6",swarhk:"\\u2926",swarr:"\\u2199",swArr:"\\u21D9",swarrow:"\\u2199",swnwar:"\\u292A",szlig:"\\xDF",Tab:" ",target:"\\u2316",tau:"\\u03C4",Tau:"\\u03A4",tbrk:"\\u23B4",tcaron:"\\u0165",Tcaron:"\\u0164",tcedil:"\\u0163",Tcedil:"\\u0162",tcy:"\\u0442",Tcy:"\\u0422",tdot:"\\u20DB",telrec:"\\u2315",tfr:"\\u{1D531}",Tfr:"\\u{1D517}",there4:"\\u2234",therefore:"\\u2234",Therefore:"\\u2234",theta:"\\u03B8",Theta:"\\u0398",thetasym:"\\u03D1",thetav:"\\u03D1",thickapprox:"\\u2248",thicksim:"\\u223C",ThickSpace:"\\u205F\\u200A",thinsp:"\\u2009",ThinSpace:"\\u2009",thkap:"\\u2248",thksim:"\\u223C",thorn:"\\xFE",THORN:"\\xDE",tilde:"\\u02DC",Tilde:"\\u223C",TildeEqual:"\\u2243",TildeFullEqual:"\\u2245",TildeTilde:"\\u2248",times:"\\xD7",timesb:"\\u22A0",timesbar:"\\u2A31",timesd:"\\u2A30",tint:"\\u222D",toea:"\\u2928",top:"\\u22A4",topbot:"\\u2336",topcir:"\\u2AF1",topf:"\\u{1D565}",Topf:"\\u{1D54B}",topfork:"\\u2ADA",tosa:"\\u2929",tprime:"\\u2034",trade:"\\u2122",TRADE:"\\u2122",triangle:"\\u25B5",triangledown:"\\u25BF",triangleleft:"\\u25C3",trianglelefteq:"\\u22B4",triangleq:"\\u225C",triangleright:"\\u25B9",trianglerighteq:"\\u22B5",tridot:"\\u25EC",trie:"\\u225C",triminus:"\\u2A3A",TripleDot:"\\u20DB",triplus:"\\u2A39",trisb:"\\u29CD",tritime:"\\u2A3B",trpezium:"\\u23E2",tscr:"\\u{1D4C9}",Tscr:"\\u{1D4AF}",tscy:"\\u0446",TScy:"\\u0426",tshcy:"\\u045B",TSHcy:"\\u040B",tstrok:"\\u0167",Tstrok:"\\u0166",twixt:"\\u226C",twoheadleftarrow:"\\u219E",twoheadrightarrow:"\\u21A0",uacute:"\\xFA",Uacute:"\\xDA",uarr:"\\u2191",uArr:"\\u21D1",Uarr:"\\u219F",Uarrocir:"\\u2949",ubrcy:"\\u045E",Ubrcy:"\\u040E",ubreve:"\\u016D",Ubreve:"\\u016C",ucirc:"\\xFB",Ucirc:"\\xDB",ucy:"\\u0443",Ucy:"\\u0423",udarr:"\\u21C5",udblac:"\\u0171",Udblac:"\\u0170",udhar:"\\u296E",ufisht:"\\u297E",ufr:"\\u{1D532}",Ufr:"\\u{1D518}",ugrave:"\\xF9",Ugrave:"\\xD9",uHar:"\\u2963",uharl:"\\u21BF",uharr:"\\u21BE",uhblk:"\\u2580",ulcorn:"\\u231C",ulcorner:"\\u231C",ulcrop:"\\u230F",ultri:"\\u25F8",umacr:"\\u016B",Umacr:"\\u016A",uml:"\\xA8",UnderBar:"_",UnderBrace:"\\u23DF",UnderBracket:"\\u23B5",UnderParenthesis:"\\u23DD",Union:"\\u22C3",UnionPlus:"\\u228E",uogon:"\\u0173",Uogon:"\\u0172",uopf:"\\u{1D566}",Uopf:"\\u{1D54C}",uparrow:"\\u2191",Uparrow:"\\u21D1",UpArrow:"\\u2191",UpArrowBar:"\\u2912",UpArrowDownArrow:"\\u21C5",updownarrow:"\\u2195",Updownarrow:"\\u21D5",UpDownArrow:"\\u2195",UpEquilibrium:"\\u296E",upharpoonleft:"\\u21BF",upharpoonright:"\\u21BE",uplus:"\\u228E",UpperLeftArrow:"\\u2196",UpperRightArrow:"\\u2197",upsi:"\\u03C5",Upsi:"\\u03D2",upsih:"\\u03D2",upsilon:"\\u03C5",Upsilon:"\\u03A5",UpTee:"\\u22A5",UpTeeArrow:"\\u21A5",upuparrows:"\\u21C8",urcorn:"\\u231D",urcorner:"\\u231D",urcrop:"\\u230E",uring:"\\u016F",Uring:"\\u016E",urtri:"\\u25F9",uscr:"\\u{1D4CA}",Uscr:"\\u{1D4B0}",utdot:"\\u22F0",utilde:"\\u0169",Utilde:"\\u0168",utri:"\\u25B5",utrif:"\\u25B4",uuarr:"\\u21C8",uuml:"\\xFC",Uuml:"\\xDC",uwangle:"\\u29A7",vangrt:"\\u299C",varepsilon:"\\u03F5",varkappa:"\\u03F0",varnothing:"\\u2205",varphi:"\\u03D5",varpi:"\\u03D6",varpropto:"\\u221D",varr:"\\u2195",vArr:"\\u21D5",varrho:"\\u03F1",varsigma:"\\u03C2",varsubsetneq:"\\u228A\\uFE00",varsubsetneqq:"\\u2ACB\\uFE00",varsupsetneq:"\\u228B\\uFE00",varsupsetneqq:"\\u2ACC\\uFE00",vartheta:"\\u03D1",vartriangleleft:"\\u22B2",vartriangleright:"\\u22B3",vBar:"\\u2AE8",Vbar:"\\u2AEB",vBarv:"\\u2AE9",vcy:"\\u0432",Vcy:"\\u0412",vdash:"\\u22A2",vDash:"\\u22A8",Vdash:"\\u22A9",VDash:"\\u22AB",Vdashl:"\\u2AE6",vee:"\\u2228",Vee:"\\u22C1",veebar:"\\u22BB",veeeq:"\\u225A",vellip:"\\u22EE",verbar:"|",Verbar:"\\u2016",vert:"|",Vert:"\\u2016",VerticalBar:"\\u2223",VerticalLine:"|",VerticalSeparator:"\\u2758",VerticalTilde:"\\u2240",VeryThinSpace:"\\u200A",vfr:"\\u{1D533}",Vfr:"\\u{1D519}",vltri:"\\u22B2",vnsub:"\\u2282\\u20D2",vnsup:"\\u2283\\u20D2",vopf:"\\u{1D567}",Vopf:"\\u{1D54D}",vprop:"\\u221D",vrtri:"\\u22B3",vscr:"\\u{1D4CB}",Vscr:"\\u{1D4B1}",vsubne:"\\u228A\\uFE00",vsubnE:"\\u2ACB\\uFE00",vsupne:"\\u228B\\uFE00",vsupnE:"\\u2ACC\\uFE00",Vvdash:"\\u22AA",vzigzag:"\\u299A",wcirc:"\\u0175",Wcirc:"\\u0174",wedbar:"\\u2A5F",wedge:"\\u2227",Wedge:"\\u22C0",wedgeq:"\\u2259",weierp:"\\u2118",wfr:"\\u{1D534}",Wfr:"\\u{1D51A}",wopf:"\\u{1D568}",Wopf:"\\u{1D54E}",wp:"\\u2118",wr:"\\u2240",wreath:"\\u2240",wscr:"\\u{1D4CC}",Wscr:"\\u{1D4B2}",xcap:"\\u22C2",xcirc:"\\u25EF",xcup:"\\u22C3",xdtri:"\\u25BD",xfr:"\\u{1D535}",Xfr:"\\u{1D51B}",xharr:"\\u27F7",xhArr:"\\u27FA",xi:"\\u03BE",Xi:"\\u039E",xlarr:"\\u27F5",xlArr:"\\u27F8",xmap:"\\u27FC",xnis:"\\u22FB",xodot:"\\u2A00",xopf:"\\u{1D569}",Xopf:"\\u{1D54F}",xoplus:"\\u2A01",xotime:"\\u2A02",xrarr:"\\u27F6",xrArr:"\\u27F9",xscr:"\\u{1D4CD}",Xscr:"\\u{1D4B3}",xsqcup:"\\u2A06",xuplus:"\\u2A04",xutri:"\\u25B3",xvee:"\\u22C1",xwedge:"\\u22C0",yacute:"\\xFD",Yacute:"\\xDD",yacy:"\\u044F",YAcy:"\\u042F",ycirc:"\\u0177",Ycirc:"\\u0176",ycy:"\\u044B",Ycy:"\\u042B",yen:"\\xA5",yfr:"\\u{1D536}",Yfr:"\\u{1D51C}",yicy:"\\u0457",YIcy:"\\u0407",yopf:"\\u{1D56A}",Yopf:"\\u{1D550}",yscr:"\\u{1D4CE}",Yscr:"\\u{1D4B4}",yucy:"\\u044E",YUcy:"\\u042E",yuml:"\\xFF",Yuml:"\\u0178",zacute:"\\u017A",Zacute:"\\u0179",zcaron:"\\u017E",Zcaron:"\\u017D",zcy:"\\u0437",Zcy:"\\u0417",zdot:"\\u017C",Zdot:"\\u017B",zeetrf:"\\u2128",ZeroWidthSpace:"\\u200B",zeta:"\\u03B6",Zeta:"\\u0396",zfr:"\\u{1D537}",Zfr:"\\u2128",zhcy:"\\u0436",ZHcy:"\\u0416",zigrarr:"\\u21DD",zopf:"\\u{1D56B}",Zopf:"\\u2124",zscr:"\\u{1D4CF}",Zscr:"\\u{1D4B5}",zwj:"\\u200D",zwnj:"\\u200C"},g={aacute:"\\xE1",Aacute:"\\xC1",acirc:"\\xE2",Acirc:"\\xC2",acute:"\\xB4",aelig:"\\xE6",AElig:"\\xC6",agrave:"\\xE0",Agrave:"\\xC0",amp:"&",AMP:"&",aring:"\\xE5",Aring:"\\xC5",atilde:"\\xE3",Atilde:"\\xC3",auml:"\\xE4",Auml:"\\xC4",brvbar:"\\xA6",ccedil:"\\xE7",Ccedil:"\\xC7",cedil:"\\xB8",cent:"\\xA2",copy:"\\xA9",COPY:"\\xA9",curren:"\\xA4",deg:"\\xB0",divide:"\\xF7",eacute:"\\xE9",Eacute:"\\xC9",ecirc:"\\xEA",Ecirc:"\\xCA",egrave:"\\xE8",Egrave:"\\xC8",eth:"\\xF0",ETH:"\\xD0",euml:"\\xEB",Euml:"\\xCB",frac12:"\\xBD",frac14:"\\xBC",frac34:"\\xBE",gt:">",GT:">",iacute:"\\xED",Iacute:"\\xCD",icirc:"\\xEE",Icirc:"\\xCE",iexcl:"\\xA1",igrave:"\\xEC",Igrave:"\\xCC",iquest:"\\xBF",iuml:"\\xEF",Iuml:"\\xCF",laquo:"\\xAB",lt:"<",LT:"<",macr:"\\xAF",micro:"\\xB5",middot:"\\xB7",nbsp:"\\xA0",not:"\\xAC",ntilde:"\\xF1",Ntilde:"\\xD1",oacute:"\\xF3",Oacute:"\\xD3",ocirc:"\\xF4",Ocirc:"\\xD4",ograve:"\\xF2",Ograve:"\\xD2",ordf:"\\xAA",ordm:"\\xBA",oslash:"\\xF8",Oslash:"\\xD8",otilde:"\\xF5",Otilde:"\\xD5",ouml:"\\xF6",Ouml:"\\xD6",para:"\\xB6",plusmn:"\\xB1",pound:"\\xA3",quot:\'"\',QUOT:\'"\',raquo:"\\xBB",reg:"\\xAE",REG:"\\xAE",sect:"\\xA7",shy:"\\xAD",sup1:"\\xB9",sup2:"\\xB2",sup3:"\\xB3",szlig:"\\xDF",thorn:"\\xFE",THORN:"\\xDE",times:"\\xD7",uacute:"\\xFA",Uacute:"\\xDA",ucirc:"\\xFB",Ucirc:"\\xDB",ugrave:"\\xF9",Ugrave:"\\xD9",uml:"\\xA8",uuml:"\\xFC",Uuml:"\\xDC",yacute:"\\xFD",Yacute:"\\xDD",yen:"\\xA5",yuml:"\\xFF"},b={0:"\\uFFFD",128:"\\u20AC",130:"\\u201A",131:"\\u0192",132:"\\u201E",133:"\\u2026",134:"\\u2020",135:"\\u2021",136:"\\u02C6",137:"\\u2030",138:"\\u0160",139:"\\u2039",140:"\\u0152",142:"\\u017D",145:"\\u2018",146:"\\u2019",147:"\\u201C",148:"\\u201D",149:"\\u2022",150:"\\u2013",151:"\\u2014",152:"\\u02DC",153:"\\u2122",154:"\\u0161",155:"\\u203A",156:"\\u0153",158:"\\u017E",159:"\\u0178"},w=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],D=String.fromCharCode,_={},Z=_.hasOwnProperty,R=function(E,W){return Z.call(E,W)},O=function(E,W){for(var B=-1,k=E.length;++B<k;)if(E[B]==W)return!0;return!1},F=function(E,W){if(!E)return W;var B={},k;for(k in W)B[k]=R(E,k)?E[k]:W[k];return B},j=function(E,W){var B="";return E>=55296&&E<=57343||E>1114111?(W&&z("character reference outside the permissible Unicode range"),"\\uFFFD"):R(b,E)?(W&&z("disallowed character reference"),b[E]):(W&&O(w,E)&&z("disallowed character reference"),E>65535&&(E-=65536,B+=D(E>>>10&1023|55296),E=56320|E&1023),B+=D(E),B)},Q=function(E){return"&#x"+E.toString(16).toUpperCase()+";"},v=function(E){return"&#"+E+";"},z=function(E){throw Error("Parse error: "+E)},f=function(E,W){W=F(W,f.options);var B=W.strict;B&&A.test(E)&&z("forbidden code point");var k=W.encodeEverything,S=W.useNamedReferences,G=W.allowUnsafeSymbols,V=W.decimal?v:Q,X=function($){return V($.charCodeAt(0))};return k?(E=E.replace(r,function($){return S&&R(u,$)?"&"+u[$]+";":X($)}),S&&(E=E.replace(/>\\u20D2/g,">⃒").replace(/<\\u20D2/g,"<⃒").replace(/fj/g,"fj")),S&&(E=E.replace(o,function($){return"&"+u[$]+";"}))):S?(G||(E=E.replace(h,function($){return"&"+u[$]+";"})),E=E.replace(/>\\u20D2/g,">⃒").replace(/<\\u20D2/g,"<⃒"),E=E.replace(o,function($){return"&"+u[$]+";"})):G||(E=E.replace(h,X)),E.replace(n,function($){var ee=$.charCodeAt(0),re=$.charCodeAt(1),se=(ee-55296)*1024+re-56320+65536;return V(se)}).replace(a,X)};f.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var I=function(E,W){W=F(W,I.options);var B=W.strict;return B&&c.test(E)&&z("malformed character reference"),E.replace(p,function(k,S,G,V,X,$,ee,re,se){var ne,he,de,d,U,P;return S?(U=S,m[U]):G?(U=G,P=V,P&&W.isAttributeValue?(B&&P=="="&&z("`&` did not start a character reference"),k):(B&&z("named character reference was not terminated by a semicolon"),g[U]+(P||""))):X?(de=X,he=$,B&&!he&&z("character reference was not terminated by a semicolon"),ne=parseInt(de,10),j(ne,B)):ee?(d=ee,he=re,B&&!he&&z("character reference was not terminated by a semicolon"),ne=parseInt(d,16),j(ne,B)):(B&&z("named character reference was not terminated by a semicolon"),k)})};I.options={isAttributeValue:!1,strict:!1};var q=function(E){return E.replace(h,function(W){return l[W]})},T={version:"1.2.0",encode:f,decode:I,escape:q,unescape:I};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd)define(function(){return T});else if(e&&!e.nodeType)if(t)t.exports=T;else for(var Y in T)R(T,Y)&&(e[Y]=T[Y]);else s.he=T})(ot)});var Nt=ge((br,kt)=>{(function(s){typeof br=="object"&&typeof kt<"u"?kt.exports=s():typeof define=="function"&&define.amd?define([],s):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=s()})(function(){return function s(e,t,i){function n(o,u){if(!t[o]){if(!e[o]){var h=typeof Ye=="function"&&Ye;if(!u&&h)return h(o,!0);if(r)return r(o,!0);var l=new Error("Cannot find module \'"+o+"\'");throw l.code="MODULE_NOT_FOUND",l}var c=t[o]={exports:{}};e[o][0].call(c.exports,function(A){var p=e[o][1][A];return n(p||A)},c,c.exports,s,e,t,i)}return t[o].exports}for(var r=typeof Ye=="function"&&Ye,a=0;a<i.length;a++)n(i[a]);return n}({1:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./support"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.encode=function(a){for(var o,u,h,l,c,A,p,m=[],g=0,b=a.length,w=b,D=i.getTypeOf(a)!=="string";g<a.length;)w=b-g,h=D?(o=a[g++],u=g<b?a[g++]:0,g<b?a[g++]:0):(o=a.charCodeAt(g++),u=g<b?a.charCodeAt(g++):0,g<b?a.charCodeAt(g++):0),l=o>>2,c=(3&o)<<4|u>>4,A=1<w?(15&u)<<2|h>>6:64,p=2<w?63&h:64,m.push(r.charAt(l)+r.charAt(c)+r.charAt(A)+r.charAt(p));return m.join("")},t.decode=function(a){var o,u,h,l,c,A,p=0,m=0,g="data:";if(a.substr(0,g.length)===g)throw new Error("Invalid base64 input, it looks like a data url.");var b,w=3*(a=a.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(a.charAt(a.length-1)===r.charAt(64)&&w--,a.charAt(a.length-2)===r.charAt(64)&&w--,w%1!=0)throw new Error("Invalid base64 input, bad content length.");for(b=n.uint8array?new Uint8Array(0|w):new Array(0|w);p<a.length;)o=r.indexOf(a.charAt(p++))<<2|(l=r.indexOf(a.charAt(p++)))>>4,u=(15&l)<<4|(c=r.indexOf(a.charAt(p++)))>>2,h=(3&c)<<6|(A=r.indexOf(a.charAt(p++))),b[m++]=o,c!==64&&(b[m++]=u),A!==64&&(b[m++]=h);return b}},{"./support":30,"./utils":32}],2:[function(s,e,t){"use strict";var i=s("./external"),n=s("./stream/DataWorker"),r=s("./stream/Crc32Probe"),a=s("./stream/DataLengthProbe");function o(u,h,l,c,A){this.compressedSize=u,this.uncompressedSize=h,this.crc32=l,this.compression=c,this.compressedContent=A}o.prototype={getContentWorker:function(){var u=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),h=this;return u.on("end",function(){if(this.streamInfo.data_length!==h.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),u},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(u,h,l){return u.pipe(new r).pipe(new a("uncompressedSize")).pipe(h.compressWorker(l)).pipe(new a("compressedSize")).withStreamInfo("compression",h)},e.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(s,e,t){"use strict";var i=s("./stream/GenericWorker");t.STORE={magic:"\\0\\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},t.DEFLATE=s("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(s,e,t){"use strict";var i=s("./utils"),n=function(){for(var r,a=[],o=0;o<256;o++){r=o;for(var u=0;u<8;u++)r=1&r?3988292384^r>>>1:r>>>1;a[o]=r}return a}();e.exports=function(r,a){return r!==void 0&&r.length?i.getTypeOf(r)!=="string"?function(o,u,h,l){var c=n,A=l+h;o^=-1;for(var p=l;p<A;p++)o=o>>>8^c[255&(o^u[p])];return-1^o}(0|a,r,r.length,0):function(o,u,h,l){var c=n,A=l+h;o^=-1;for(var p=l;p<A;p++)o=o>>>8^c[255&(o^u.charCodeAt(p))];return-1^o}(0|a,r,r.length,0):0}},{"./utils":32}],5:[function(s,e,t){"use strict";t.base64=!1,t.binary=!1,t.dir=!1,t.createFolders=!0,t.date=null,t.compression=null,t.compressionOptions=null,t.comment=null,t.unixPermissions=null,t.dosPermissions=null},{}],6:[function(s,e,t){"use strict";var i=null;i=typeof Promise<"u"?Promise:s("lie"),e.exports={Promise:i}},{lie:37}],7:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",n=s("pako"),r=s("./utils"),a=s("./stream/GenericWorker"),o=i?"uint8array":"array";function u(h,l){a.call(this,"FlateWorker/"+h),this._pako=null,this._pakoAction=h,this._pakoOptions=l,this.meta={}}t.magic="\\b\\0",r.inherits(u,a),u.prototype.processChunk=function(h){this.meta=h.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(o,h.data),!1)},u.prototype.flush=function(){a.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var h=this;this._pako.onData=function(l){h.push({data:l,meta:h.meta})}},t.compressWorker=function(h){return new u("Deflate",h)},t.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(s,e,t){"use strict";function i(c,A){var p,m="";for(p=0;p<A;p++)m+=String.fromCharCode(255&c),c>>>=8;return m}function n(c,A,p,m,g,b){var w,D,_=c.file,Z=c.compression,R=b!==o.utf8encode,O=r.transformTo("string",b(_.name)),F=r.transformTo("string",o.utf8encode(_.name)),j=_.comment,Q=r.transformTo("string",b(j)),v=r.transformTo("string",o.utf8encode(j)),z=F.length!==_.name.length,f=v.length!==j.length,I="",q="",T="",Y=_.dir,E=_.date,W={crc32:0,compressedSize:0,uncompressedSize:0};A&&!p||(W.crc32=c.crc32,W.compressedSize=c.compressedSize,W.uncompressedSize=c.uncompressedSize);var B=0;A&&(B|=8),R||!z&&!f||(B|=2048);var k=0,S=0;Y&&(k|=16),g==="UNIX"?(S=798,k|=function(V,X){var $=V;return V||($=X?16893:33204),(65535&$)<<16}(_.unixPermissions,Y)):(S=20,k|=function(V){return 63&(V||0)}(_.dosPermissions)),w=E.getUTCHours(),w<<=6,w|=E.getUTCMinutes(),w<<=5,w|=E.getUTCSeconds()/2,D=E.getUTCFullYear()-1980,D<<=4,D|=E.getUTCMonth()+1,D<<=5,D|=E.getUTCDate(),z&&(q=i(1,1)+i(u(O),4)+F,I+="up"+i(q.length,2)+q),f&&(T=i(1,1)+i(u(Q),4)+v,I+="uc"+i(T.length,2)+T);var G="";return G+=`\n\\0`,G+=i(B,2),G+=Z.magic,G+=i(w,2),G+=i(D,2),G+=i(W.crc32,4),G+=i(W.compressedSize,4),G+=i(W.uncompressedSize,4),G+=i(O.length,2),G+=i(I.length,2),{fileRecord:h.LOCAL_FILE_HEADER+G+O+I,dirRecord:h.CENTRAL_FILE_HEADER+i(S,2)+G+i(Q.length,2)+"\\0\\0\\0\\0"+i(k,4)+i(m,4)+O+I+Q}}var r=s("../utils"),a=s("../stream/GenericWorker"),o=s("../utf8"),u=s("../crc32"),h=s("../signature");function l(c,A,p,m){a.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=A,this.zipPlatform=p,this.encodeFileName=m,this.streamFiles=c,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(l,a),l.prototype.push=function(c){var A=c.meta.percent||0,p=this.entriesCount,m=this._sources.length;this.accumulate?this.contentBuffer.push(c):(this.bytesWritten+=c.data.length,a.prototype.push.call(this,{data:c.data,meta:{currentFile:this.currentFile,percent:p?(A+100*(p-m-1))/p:100}}))},l.prototype.openedSource=function(c){this.currentSourceOffset=this.bytesWritten,this.currentFile=c.file.name;var A=this.streamFiles&&!c.file.dir;if(A){var p=n(c,A,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:p.fileRecord,meta:{percent:0}})}else this.accumulate=!0},l.prototype.closedSource=function(c){this.accumulate=!1;var A=this.streamFiles&&!c.file.dir,p=n(c,A,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(p.dirRecord),A)this.push({data:function(m){return h.DATA_DESCRIPTOR+i(m.crc32,4)+i(m.compressedSize,4)+i(m.uncompressedSize,4)}(c),meta:{percent:100}});else for(this.push({data:p.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},l.prototype.flush=function(){for(var c=this.bytesWritten,A=0;A<this.dirRecords.length;A++)this.push({data:this.dirRecords[A],meta:{percent:100}});var p=this.bytesWritten-c,m=function(g,b,w,D,_){var Z=r.transformTo("string",_(D));return h.CENTRAL_DIRECTORY_END+"\\0\\0\\0\\0"+i(g,2)+i(g,2)+i(b,4)+i(w,4)+i(Z.length,2)+Z}(this.dirRecords.length,p,c,this.zipComment,this.encodeFileName);this.push({data:m,meta:{percent:100}})},l.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},l.prototype.registerPrevious=function(c){this._sources.push(c);var A=this;return c.on("data",function(p){A.processChunk(p)}),c.on("end",function(){A.closedSource(A.previous.streamInfo),A._sources.length?A.prepareNextSource():A.end()}),c.on("error",function(p){A.error(p)}),this},l.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},l.prototype.error=function(c){var A=this._sources;if(!a.prototype.error.call(this,c))return!1;for(var p=0;p<A.length;p++)try{A[p].error(c)}catch{}return!0},l.prototype.lock=function(){a.prototype.lock.call(this);for(var c=this._sources,A=0;A<c.length;A++)c[A].lock()},e.exports=l},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(s,e,t){"use strict";var i=s("../compressions"),n=s("./ZipFileWorker");t.generateWorker=function(r,a,o){var u=new n(a.streamFiles,o,a.platform,a.encodeFileName),h=0;try{r.forEach(function(l,c){h++;var A=function(b,w){var D=b||w,_=i[D];if(!_)throw new Error(D+" is not a valid compression method !");return _}(c.options.compression,a.compression),p=c.options.compressionOptions||a.compressionOptions||{},m=c.dir,g=c.date;c._compressWorker(A,p).withStreamInfo("file",{name:l,dir:m,date:g,comment:c.comment||"",unixPermissions:c.unixPermissions,dosPermissions:c.dosPermissions}).pipe(u)}),u.entriesCount=h}catch(l){u.error(l)}return u}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(s,e,t){"use strict";function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var n=new i;for(var r in this)typeof this[r]!="function"&&(n[r]=this[r]);return n}}(i.prototype=s("./object")).loadAsync=s("./load"),i.support=s("./support"),i.defaults=s("./defaults"),i.version="3.10.1",i.loadAsync=function(n,r){return new i().loadAsync(n,r)},i.external=s("./external"),e.exports=i},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./external"),r=s("./utf8"),a=s("./zipEntries"),o=s("./stream/Crc32Probe"),u=s("./nodejsUtils");function h(l){return new n.Promise(function(c,A){var p=l.decompressed.getContentWorker().pipe(new o);p.on("error",function(m){A(m)}).on("end",function(){p.streamInfo.crc32!==l.decompressed.crc32?A(new Error("Corrupted zip : CRC32 mismatch")):c()}).resume()})}e.exports=function(l,c){var A=this;return c=i.extend(c||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:r.utf8decode}),u.isNode&&u.isStream(l)?n.Promise.reject(new Error("JSZip can\'t accept a stream when loading a zip file.")):i.prepareContent("the loaded zip file",l,!0,c.optimizedBinaryString,c.base64).then(function(p){var m=new a(c);return m.load(p),m}).then(function(p){var m=[n.Promise.resolve(p)],g=p.files;if(c.checkCRC32)for(var b=0;b<g.length;b++)m.push(h(g[b]));return n.Promise.all(m)}).then(function(p){for(var m=p.shift(),g=m.files,b=0;b<g.length;b++){var w=g[b],D=w.fileNameStr,_=i.resolve(w.fileNameStr);A.file(_,w.decompressed,{binary:!0,optimizedBinaryString:!0,date:w.date,dir:w.dir,comment:w.fileCommentStr.length?w.fileCommentStr:null,unixPermissions:w.unixPermissions,dosPermissions:w.dosPermissions,createFolders:c.createFolders}),w.dir||(A.file(_).unsafeOriginalName=D)}return m.zipComment.length&&(A.comment=m.zipComment),A})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../stream/GenericWorker");function r(a,o){n.call(this,"Nodejs stream input adapter for "+a),this._upstreamEnded=!1,this._bindStream(o)}i.inherits(r,n),r.prototype._bindStream=function(a){var o=this;(this._stream=a).pause(),a.on("data",function(u){o.push({data:u,meta:{percent:0}})}).on("error",function(u){o.isPaused?this.generatedError=u:o.error(u)}).on("end",function(){o.isPaused?o._upstreamEnded=!0:o.end()})},r.prototype.pause=function(){return!!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=r},{"../stream/GenericWorker":28,"../utils":32}],13:[function(s,e,t){"use strict";var i=s("readable-stream").Readable;function n(r,a,o){i.call(this,a),this._helper=r;var u=this;r.on("data",function(h,l){u.push(h)||u._helper.pause(),o&&o(l)}).on("error",function(h){u.emit("error",h)}).on("end",function(){u.push(null)})}s("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume()},e.exports=n},{"../utils":32,"readable-stream":16}],14:[function(s,e,t){"use strict";e.exports={isNode:typeof Buffer<"u",newBufferFrom:function(i,n){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(i,n);if(typeof i=="number")throw new Error(\'The "data" argument must not be a number\');return new Buffer(i,n)},allocBuffer:function(i){if(Buffer.alloc)return Buffer.alloc(i);var n=new Buffer(i);return n.fill(0),n},isBuffer:function(i){return Buffer.isBuffer(i)},isStream:function(i){return i&&typeof i.on=="function"&&typeof i.pause=="function"&&typeof i.resume=="function"}}},{}],15:[function(s,e,t){"use strict";function i(_,Z,R){var O,F=r.getTypeOf(Z),j=r.extend(R||{},u);j.date=j.date||new Date,j.compression!==null&&(j.compression=j.compression.toUpperCase()),typeof j.unixPermissions=="string"&&(j.unixPermissions=parseInt(j.unixPermissions,8)),j.unixPermissions&&16384&j.unixPermissions&&(j.dir=!0),j.dosPermissions&&16&j.dosPermissions&&(j.dir=!0),j.dir&&(_=g(_)),j.createFolders&&(O=m(_))&&b.call(this,O,!0);var Q=F==="string"&&j.binary===!1&&j.base64===!1;R&&R.binary!==void 0||(j.binary=!Q),(Z instanceof h&&Z.uncompressedSize===0||j.dir||!Z||Z.length===0)&&(j.base64=!1,j.binary=!0,Z="",j.compression="STORE",F="string");var v=null;v=Z instanceof h||Z instanceof a?Z:A.isNode&&A.isStream(Z)?new p(_,Z):r.prepareContent(_,Z,j.binary,j.optimizedBinaryString,j.base64);var z=new l(_,v,j);this.files[_]=z}var n=s("./utf8"),r=s("./utils"),a=s("./stream/GenericWorker"),o=s("./stream/StreamHelper"),u=s("./defaults"),h=s("./compressedObject"),l=s("./zipObject"),c=s("./generate"),A=s("./nodejsUtils"),p=s("./nodejs/NodejsStreamInputAdapter"),m=function(_){_.slice(-1)==="/"&&(_=_.substring(0,_.length-1));var Z=_.lastIndexOf("/");return 0<Z?_.substring(0,Z):""},g=function(_){return _.slice(-1)!=="/"&&(_+="/"),_},b=function(_,Z){return Z=Z!==void 0?Z:u.createFolders,_=g(_),this.files[_]||i.call(this,_,null,{dir:!0,createFolders:Z}),this.files[_]};function w(_){return Object.prototype.toString.call(_)==="[object RegExp]"}var D={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(_){var Z,R,O;for(Z in this.files)O=this.files[Z],(R=Z.slice(this.root.length,Z.length))&&Z.slice(0,this.root.length)===this.root&&_(R,O)},filter:function(_){var Z=[];return this.forEach(function(R,O){_(R,O)&&Z.push(O)}),Z},file:function(_,Z,R){if(arguments.length!==1)return _=this.root+_,i.call(this,_,Z,R),this;if(w(_)){var O=_;return this.filter(function(j,Q){return!Q.dir&&O.test(j)})}var F=this.files[this.root+_];return F&&!F.dir?F:null},folder:function(_){if(!_)return this;if(w(_))return this.filter(function(F,j){return j.dir&&_.test(F)});var Z=this.root+_,R=b.call(this,Z),O=this.clone();return O.root=R.name,O},remove:function(_){_=this.root+_;var Z=this.files[_];if(Z||(_.slice(-1)!=="/"&&(_+="/"),Z=this.files[_]),Z&&!Z.dir)delete this.files[_];else for(var R=this.filter(function(F,j){return j.name.slice(0,_.length)===_}),O=0;O<R.length;O++)delete this.files[R[O].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(_){var Z,R={};try{if((R=r.extend(_||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:n.utf8encode})).type=R.type.toLowerCase(),R.compression=R.compression.toUpperCase(),R.type==="binarystring"&&(R.type="string"),!R.type)throw new Error("No output type specified.");r.checkSupport(R.type),R.platform!=="darwin"&&R.platform!=="freebsd"&&R.platform!=="linux"&&R.platform!=="sunos"||(R.platform="UNIX"),R.platform==="win32"&&(R.platform="DOS");var O=R.comment||this.comment||"";Z=c.generateWorker(this,R,O)}catch(F){(Z=new a("error")).error(F)}return new o(Z,R.type||"string",R.mimeType)},generateAsync:function(_,Z){return this.generateInternalStream(_).accumulate(Z)},generateNodeStream:function(_,Z){return(_=_||{}).type||(_.type="nodebuffer"),this.generateInternalStream(_).toNodejsStream(Z)}};e.exports=D},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(s,e,t){"use strict";e.exports=s("stream")},{stream:void 0}],17:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r);for(var a=0;a<this.data.length;a++)r[a]=255&r[a]}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data[this.zero+r]},n.prototype.lastIndexOfSignature=function(r){for(var a=r.charCodeAt(0),o=r.charCodeAt(1),u=r.charCodeAt(2),h=r.charCodeAt(3),l=this.length-4;0<=l;--l)if(this.data[l]===a&&this.data[l+1]===o&&this.data[l+2]===u&&this.data[l+3]===h)return l-this.zero;return-1},n.prototype.readAndCheckSignature=function(r){var a=r.charCodeAt(0),o=r.charCodeAt(1),u=r.charCodeAt(2),h=r.charCodeAt(3),l=this.readData(4);return a===l[0]&&o===l[1]&&u===l[2]&&h===l[3]},n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return[];var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],18:[function(s,e,t){"use strict";var i=s("../utils");function n(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}n.prototype={checkOffset:function(r){this.checkIndex(this.index+r)},checkIndex:function(r){if(this.length<this.zero+r||r<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+r+"). Corrupted zip ?")},setIndex:function(r){this.checkIndex(r),this.index=r},skip:function(r){this.setIndex(this.index+r)},byteAt:function(){},readInt:function(r){var a,o=0;for(this.checkOffset(r),a=this.index+r-1;a>=this.index;a--)o=(o<<8)+this.byteAt(a);return this.index+=r,o},readString:function(r){return i.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},e.exports=n},{"../utils":32}],19:[function(s,e,t){"use strict";var i=s("./Uint8ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},n.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},n.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],21:[function(s,e,t){"use strict";var i=s("./ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var a=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../support"),r=s("./ArrayReader"),a=s("./StringReader"),o=s("./NodeBufferReader"),u=s("./Uint8ArrayReader");e.exports=function(h){var l=i.getTypeOf(h);return i.checkSupport(l),l!=="string"||n.uint8array?l==="nodebuffer"?new o(h):n.uint8array?new u(i.transformTo("uint8array",h)):new r(i.transformTo("array",h)):new a(h)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(s,e,t){"use strict";t.LOCAL_FILE_HEADER="PK",t.CENTRAL_FILE_HEADER="PK",t.CENTRAL_DIRECTORY_END="PK",t.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\\x07",t.ZIP64_CENTRAL_DIRECTORY_END="PK",t.DATA_DESCRIPTOR="PK\\x07\\b"},{}],24:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../utils");function r(a){i.call(this,"ConvertWorker to "+a),this.destType=a}n.inherits(r,i),r.prototype.processChunk=function(a){this.push({data:n.transformTo(this.destType,a.data),meta:a.meta})},e.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../crc32");function r(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}s("../utils").inherits(r,i),r.prototype.processChunk=function(a){this.streamInfo.crc32=n(a.data,this.streamInfo.crc32||0),this.push(a)},e.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataLengthProbe for "+a),this.propName=a,this.withStreamInfo(a,0)}i.inherits(r,n),r.prototype.processChunk=function(a){if(a){var o=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=o+a.data.length}n.prototype.processChunk.call(this,a)},e.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataWorker");var o=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,a.then(function(u){o.dataIsReady=!0,o.data=u,o.max=u&&u.length||0,o.type=i.getTypeOf(u),o.isPaused||o._tickAndRepeat()},function(u){o.error(u)})}i.inherits(r,n),r.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var a=null,o=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":a=this.data.substring(this.index,o);break;case"uint8array":a=this.data.subarray(this.index,o);break;case"array":case"nodebuffer":a=this.data.slice(this.index,o)}return this.index=o,this.push({data:a,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(s,e,t){"use strict";function i(n){this.name=n||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(n){this.emit("data",n)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(n){this.emit("error",n)}return!0},error:function(n){return!this.isFinished&&(this.isPaused?this.generatedError=n:(this.isFinished=!0,this.emit("error",n),this.previous&&this.previous.error(n),this.cleanUp()),!0)},on:function(n,r){return this._listeners[n].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(n,r){if(this._listeners[n])for(var a=0;a<this._listeners[n].length;a++)this._listeners[n][a].call(this,r)},pipe:function(n){return n.registerPrevious(this)},registerPrevious:function(n){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.streamInfo=n.streamInfo,this.mergeStreamInfo(),this.previous=n;var r=this;return n.on("data",function(a){r.processChunk(a)}),n.on("end",function(){r.end()}),n.on("error",function(a){r.error(a)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var n=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),n=!0),this.previous&&this.previous.resume(),!n},flush:function(){},processChunk:function(n){this.push(n)},withStreamInfo:function(n,r){return this.extraStreamInfo[n]=r,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var n in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,n)&&(this.streamInfo[n]=this.extraStreamInfo[n])},lock:function(){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var n="Worker "+this.name;return this.previous?this.previous+" -> "+n:n}},e.exports=i},{}],29:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./ConvertWorker"),r=s("./GenericWorker"),a=s("../base64"),o=s("../support"),u=s("../external"),h=null;if(o.nodestream)try{h=s("../nodejs/NodejsStreamOutputAdapter")}catch{}function l(A,p){return new u.Promise(function(m,g){var b=[],w=A._internalType,D=A._outputType,_=A._mimeType;A.on("data",function(Z,R){b.push(Z),p&&p(R)}).on("error",function(Z){b=[],g(Z)}).on("end",function(){try{var Z=function(R,O,F){switch(R){case"blob":return i.newBlob(i.transformTo("arraybuffer",O),F);case"base64":return a.encode(O);default:return i.transformTo(R,O)}}(D,function(R,O){var F,j=0,Q=null,v=0;for(F=0;F<O.length;F++)v+=O[F].length;switch(R){case"string":return O.join("");case"array":return Array.prototype.concat.apply([],O);case"uint8array":for(Q=new Uint8Array(v),F=0;F<O.length;F++)Q.set(O[F],j),j+=O[F].length;return Q;case"nodebuffer":return Buffer.concat(O);default:throw new Error("concat : unsupported type \'"+R+"\'")}}(w,b),_);m(Z)}catch(R){g(R)}b=[]}).resume()})}function c(A,p,m){var g=p;switch(p){case"blob":case"arraybuffer":g="uint8array";break;case"base64":g="string"}try{this._internalType=g,this._outputType=p,this._mimeType=m,i.checkSupport(g),this._worker=A.pipe(new n(g)),A.lock()}catch(b){this._worker=new r("error"),this._worker.error(b)}}c.prototype={accumulate:function(A){return l(this,A)},on:function(A,p){var m=this;return A==="data"?this._worker.on(A,function(g){p.call(m,g.data,g.meta)}):this._worker.on(A,function(){i.delay(p,arguments,m)}),this},resume:function(){return i.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(A){if(i.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new h(this,{objectMode:this._outputType!=="nodebuffer"},A)}},e.exports=c},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(s,e,t){"use strict";if(t.base64=!0,t.array=!0,t.string=!0,t.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",t.nodebuffer=typeof Buffer<"u",t.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")t.blob=!1;else{var i=new ArrayBuffer(0);try{t.blob=new Blob([i],{type:"application/zip"}).size===0}catch{try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);n.append(i),t.blob=n.getBlob("application/zip").size===0}catch{t.blob=!1}}}try{t.nodestream=!!s("readable-stream").Readable}catch{t.nodestream=!1}},{"readable-stream":16}],31:[function(s,e,t){"use strict";for(var i=s("./utils"),n=s("./support"),r=s("./nodejsUtils"),a=s("./stream/GenericWorker"),o=new Array(256),u=0;u<256;u++)o[u]=252<=u?6:248<=u?5:240<=u?4:224<=u?3:192<=u?2:1;o[254]=o[254]=1;function h(){a.call(this,"utf-8 decode"),this.leftOver=null}function l(){a.call(this,"utf-8 encode")}t.utf8encode=function(c){return n.nodebuffer?r.newBufferFrom(c,"utf-8"):function(A){var p,m,g,b,w,D=A.length,_=0;for(b=0;b<D;b++)(64512&(m=A.charCodeAt(b)))==55296&&b+1<D&&(64512&(g=A.charCodeAt(b+1)))==56320&&(m=65536+(m-55296<<10)+(g-56320),b++),_+=m<128?1:m<2048?2:m<65536?3:4;for(p=n.uint8array?new Uint8Array(_):new Array(_),b=w=0;w<_;b++)(64512&(m=A.charCodeAt(b)))==55296&&b+1<D&&(64512&(g=A.charCodeAt(b+1)))==56320&&(m=65536+(m-55296<<10)+(g-56320),b++),m<128?p[w++]=m:(m<2048?p[w++]=192|m>>>6:(m<65536?p[w++]=224|m>>>12:(p[w++]=240|m>>>18,p[w++]=128|m>>>12&63),p[w++]=128|m>>>6&63),p[w++]=128|63&m);return p}(c)},t.utf8decode=function(c){return n.nodebuffer?i.transformTo("nodebuffer",c).toString("utf-8"):function(A){var p,m,g,b,w=A.length,D=new Array(2*w);for(p=m=0;p<w;)if((g=A[p++])<128)D[m++]=g;else if(4<(b=o[g]))D[m++]=65533,p+=b-1;else{for(g&=b===2?31:b===3?15:7;1<b&&p<w;)g=g<<6|63&A[p++],b--;1<b?D[m++]=65533:g<65536?D[m++]=g:(g-=65536,D[m++]=55296|g>>10&1023,D[m++]=56320|1023&g)}return D.length!==m&&(D.subarray?D=D.subarray(0,m):D.length=m),i.applyFromCharCode(D)}(c=i.transformTo(n.uint8array?"uint8array":"array",c))},i.inherits(h,a),h.prototype.processChunk=function(c){var A=i.transformTo(n.uint8array?"uint8array":"array",c.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var p=A;(A=new Uint8Array(p.length+this.leftOver.length)).set(this.leftOver,0),A.set(p,this.leftOver.length)}else A=this.leftOver.concat(A);this.leftOver=null}var m=function(b,w){var D;for((w=w||b.length)>b.length&&(w=b.length),D=w-1;0<=D&&(192&b[D])==128;)D--;return D<0||D===0?w:D+o[b[D]]>w?D:w}(A),g=A;m!==A.length&&(n.uint8array?(g=A.subarray(0,m),this.leftOver=A.subarray(m,A.length)):(g=A.slice(0,m),this.leftOver=A.slice(m,A.length))),this.push({data:t.utf8decode(g),meta:c.meta})},h.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:t.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},t.Utf8DecodeWorker=h,i.inherits(l,a),l.prototype.processChunk=function(c){this.push({data:t.utf8encode(c.data),meta:c.meta})},t.Utf8EncodeWorker=l},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(s,e,t){"use strict";var i=s("./support"),n=s("./base64"),r=s("./nodejsUtils"),a=s("./external");function o(p){return p}function u(p,m){for(var g=0;g<p.length;++g)m[g]=255&p.charCodeAt(g);return m}s("setimmediate"),t.newBlob=function(p,m){t.checkSupport("blob");try{return new Blob([p],{type:m})}catch{try{var g=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return g.append(p),g.getBlob(m)}catch{throw new Error("Bug : can\'t construct the Blob.")}}};var h={stringifyByChunk:function(p,m,g){var b=[],w=0,D=p.length;if(D<=g)return String.fromCharCode.apply(null,p);for(;w<D;)m==="array"||m==="nodebuffer"?b.push(String.fromCharCode.apply(null,p.slice(w,Math.min(w+g,D)))):b.push(String.fromCharCode.apply(null,p.subarray(w,Math.min(w+g,D)))),w+=g;return b.join("")},stringifyByChar:function(p){for(var m="",g=0;g<p.length;g++)m+=String.fromCharCode(p[g]);return m},applyCanBeUsed:{uint8array:function(){try{return i.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}}(),nodebuffer:function(){try{return i.nodebuffer&&String.fromCharCode.apply(null,r.allocBuffer(1)).length===1}catch{return!1}}()}};function l(p){var m=65536,g=t.getTypeOf(p),b=!0;if(g==="uint8array"?b=h.applyCanBeUsed.uint8array:g==="nodebuffer"&&(b=h.applyCanBeUsed.nodebuffer),b)for(;1<m;)try{return h.stringifyByChunk(p,g,m)}catch{m=Math.floor(m/2)}return h.stringifyByChar(p)}function c(p,m){for(var g=0;g<p.length;g++)m[g]=p[g];return m}t.applyFromCharCode=l;var A={};A.string={string:o,array:function(p){return u(p,new Array(p.length))},arraybuffer:function(p){return A.string.uint8array(p).buffer},uint8array:function(p){return u(p,new Uint8Array(p.length))},nodebuffer:function(p){return u(p,r.allocBuffer(p.length))}},A.array={string:l,array:o,arraybuffer:function(p){return new Uint8Array(p).buffer},uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return r.newBufferFrom(p)}},A.arraybuffer={string:function(p){return l(new Uint8Array(p))},array:function(p){return c(new Uint8Array(p),new Array(p.byteLength))},arraybuffer:o,uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return r.newBufferFrom(new Uint8Array(p))}},A.uint8array={string:l,array:function(p){return c(p,new Array(p.length))},arraybuffer:function(p){return p.buffer},uint8array:o,nodebuffer:function(p){return r.newBufferFrom(p)}},A.nodebuffer={string:l,array:function(p){return c(p,new Array(p.length))},arraybuffer:function(p){return A.nodebuffer.uint8array(p).buffer},uint8array:function(p){return c(p,new Uint8Array(p.length))},nodebuffer:o},t.transformTo=function(p,m){if(m=m||"",!p)return m;t.checkSupport(p);var g=t.getTypeOf(m);return A[g][p](m)},t.resolve=function(p){for(var m=p.split("/"),g=[],b=0;b<m.length;b++){var w=m[b];w==="."||w===""&&b!==0&&b!==m.length-1||(w===".."?g.pop():g.push(w))}return g.join("/")},t.getTypeOf=function(p){return typeof p=="string"?"string":Object.prototype.toString.call(p)==="[object Array]"?"array":i.nodebuffer&&r.isBuffer(p)?"nodebuffer":i.uint8array&&p instanceof Uint8Array?"uint8array":i.arraybuffer&&p instanceof ArrayBuffer?"arraybuffer":void 0},t.checkSupport=function(p){if(!i[p.toLowerCase()])throw new Error(p+" is not supported by this platform")},t.MAX_VALUE_16BITS=65535,t.MAX_VALUE_32BITS=-1,t.pretty=function(p){var m,g,b="";for(g=0;g<(p||"").length;g++)b+="\\\\x"+((m=p.charCodeAt(g))<16?"0":"")+m.toString(16).toUpperCase();return b},t.delay=function(p,m,g){setImmediate(function(){p.apply(g||null,m||[])})},t.inherits=function(p,m){function g(){}g.prototype=m.prototype,p.prototype=new g},t.extend=function(){var p,m,g={};for(p=0;p<arguments.length;p++)for(m in arguments[p])Object.prototype.hasOwnProperty.call(arguments[p],m)&&g[m]===void 0&&(g[m]=arguments[p][m]);return g},t.prepareContent=function(p,m,g,b,w){return a.Promise.resolve(m).then(function(D){return i.blob&&(D instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(D))!==-1)&&typeof FileReader<"u"?new a.Promise(function(_,Z){var R=new FileReader;R.onload=function(O){_(O.target.result)},R.onerror=function(O){Z(O.target.error)},R.readAsArrayBuffer(D)}):D}).then(function(D){var _=t.getTypeOf(D);return _?(_==="arraybuffer"?D=t.transformTo("uint8array",D):_==="string"&&(w?D=n.decode(D):g&&b!==!0&&(D=function(Z){return u(Z,i.uint8array?new Uint8Array(Z.length):new Array(Z.length))}(D))),D):a.Promise.reject(new Error("Can\'t read the data of \'"+p+"\'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./signature"),a=s("./zipEntry"),o=s("./support");function u(h){this.files=[],this.loadOptions=h}u.prototype={checkSignature:function(h){if(!this.reader.readAndCheckSignature(h)){this.reader.index-=4;var l=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+n.pretty(l)+", expected "+n.pretty(h)+")")}},isSignature:function(h,l){var c=this.reader.index;this.reader.setIndex(h);var A=this.reader.readString(4)===l;return this.reader.setIndex(c),A},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var h=this.reader.readData(this.zipCommentLength),l=o.uint8array?"uint8array":"array",c=n.transformTo(l,h);this.zipComment=this.loadOptions.decodeFileName(c)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var h,l,c,A=this.zip64EndOfCentralSize-44;0<A;)h=this.reader.readInt(2),l=this.reader.readInt(4),c=this.reader.readData(l),this.zip64ExtensibleData[h]={id:h,length:l,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var h,l;for(h=0;h<this.files.length;h++)l=this.files[h],this.reader.setIndex(l.localHeaderOffset),this.checkSignature(r.LOCAL_FILE_HEADER),l.readLocalPart(this.reader),l.handleUTF8(),l.processAttributes()},readCentralDir:function(){var h;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(r.CENTRAL_FILE_HEADER);)(h=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(h);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var h=this.reader.lastIndexOfSignature(r.CENTRAL_DIRECTORY_END);if(h<0)throw this.isSignature(0,r.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can\'t find end of central directory"):new Error("Can\'t find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(h);var l=h;if(this.checkSignature(r.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,(h=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory locator");if(this.reader.setIndex(h),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,r.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var c=this.centralDirOffset+this.centralDirSize;this.zip64&&(c+=20,c+=12+this.zip64EndOfCentralSize);var A=l-c;if(0<A)this.isSignature(l,r.CENTRAL_FILE_HEADER)||(this.reader.zero=A);else if(A<0)throw new Error("Corrupted zip: missing "+Math.abs(A)+" bytes.")},prepareReader:function(h){this.reader=i(h)},load:function(h){this.prepareReader(h),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=u},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./compressedObject"),a=s("./crc32"),o=s("./utf8"),u=s("./compressions"),h=s("./support");function l(c,A){this.options=c,this.loadOptions=A}l.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(c){var A,p;if(c.skip(22),this.fileNameLength=c.readInt(2),p=c.readInt(2),this.fileName=c.readData(this.fileNameLength),c.skip(p),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn\'t get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((A=function(m){for(var g in u)if(Object.prototype.hasOwnProperty.call(u,g)&&u[g].magic===m)return u[g];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,A,c.readData(this.compressedSize))},readCentralPart:function(c){this.versionMadeBy=c.readInt(2),c.skip(2),this.bitFlag=c.readInt(2),this.compressionMethod=c.readString(2),this.date=c.readDate(),this.crc32=c.readInt(4),this.compressedSize=c.readInt(4),this.uncompressedSize=c.readInt(4);var A=c.readInt(2);if(this.extraFieldsLength=c.readInt(2),this.fileCommentLength=c.readInt(2),this.diskNumberStart=c.readInt(2),this.internalFileAttributes=c.readInt(2),this.externalFileAttributes=c.readInt(4),this.localHeaderOffset=c.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");c.skip(A),this.readExtraFields(c),this.parseZIP64ExtraField(c),this.fileComment=c.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var c=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),c==0&&(this.dosPermissions=63&this.externalFileAttributes),c==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var c=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=c.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=c.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=c.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=c.readInt(4))}},readExtraFields:function(c){var A,p,m,g=c.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});c.index+4<g;)A=c.readInt(2),p=c.readInt(2),m=c.readData(p),this.extraFields[A]={id:A,length:p,value:m};c.setIndex(g)},handleUTF8:function(){var c=h.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var A=this.findExtraFieldUnicodePath();if(A!==null)this.fileNameStr=A;else{var p=n.transformTo(c,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(p)}var m=this.findExtraFieldUnicodeComment();if(m!==null)this.fileCommentStr=m;else{var g=n.transformTo(c,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(g)}}},findExtraFieldUnicodePath:function(){var c=this.extraFields[28789];if(c){var A=i(c.value);return A.readInt(1)!==1||a(this.fileName)!==A.readInt(4)?null:o.utf8decode(A.readData(c.length-5))}return null},findExtraFieldUnicodeComment:function(){var c=this.extraFields[25461];if(c){var A=i(c.value);return A.readInt(1)!==1||a(this.fileComment)!==A.readInt(4)?null:o.utf8decode(A.readData(c.length-5))}return null}},e.exports=l},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(s,e,t){"use strict";function i(A,p,m){this.name=A,this.dir=m.dir,this.date=m.date,this.comment=m.comment,this.unixPermissions=m.unixPermissions,this.dosPermissions=m.dosPermissions,this._data=p,this._dataBinary=m.binary,this.options={compression:m.compression,compressionOptions:m.compressionOptions}}var n=s("./stream/StreamHelper"),r=s("./stream/DataWorker"),a=s("./utf8"),o=s("./compressedObject"),u=s("./stream/GenericWorker");i.prototype={internalStream:function(A){var p=null,m="string";try{if(!A)throw new Error("No output type specified.");var g=(m=A.toLowerCase())==="string"||m==="text";m!=="binarystring"&&m!=="text"||(m="string"),p=this._decompressWorker();var b=!this._dataBinary;b&&!g&&(p=p.pipe(new a.Utf8EncodeWorker)),!b&&g&&(p=p.pipe(new a.Utf8DecodeWorker))}catch(w){(p=new u("error")).error(w)}return new n(p,m,"")},async:function(A,p){return this.internalStream(A).accumulate(p)},nodeStream:function(A,p){return this.internalStream(A||"nodebuffer").toNodejsStream(p)},_compressWorker:function(A,p){if(this._data instanceof o&&this._data.compression.magic===A.magic)return this._data.getCompressedWorker();var m=this._decompressWorker();return this._dataBinary||(m=m.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(m,A,p)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof u?this._data:new r(this._data)}};for(var h=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],l=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},c=0;c<h.length;c++)i.prototype[h[c]]=l;e.exports=i},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(s,e,t){(function(i){"use strict";var n,r,a=i.MutationObserver||i.WebKitMutationObserver;if(a){var o=0,u=new a(A),h=i.document.createTextNode("");u.observe(h,{characterData:!0}),n=function(){h.data=o=++o%2}}else if(i.setImmediate||i.MessageChannel===void 0)n="document"in i&&"onreadystatechange"in i.document.createElement("script")?function(){var p=i.document.createElement("script");p.onreadystatechange=function(){A(),p.onreadystatechange=null,p.parentNode.removeChild(p),p=null},i.document.documentElement.appendChild(p)}:function(){setTimeout(A,0)};else{var l=new i.MessageChannel;l.port1.onmessage=A,n=function(){l.port2.postMessage(0)}}var c=[];function A(){var p,m;r=!0;for(var g=c.length;g;){for(m=c,c=[],p=-1;++p<g;)m[p]();g=c.length}r=!1}e.exports=function(p){c.push(p)!==1||r||n()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(s,e,t){"use strict";var i=s("immediate");function n(){}var r={},a=["REJECTED"],o=["FULFILLED"],u=["PENDING"];function h(g){if(typeof g!="function")throw new TypeError("resolver must be a function");this.state=u,this.queue=[],this.outcome=void 0,g!==n&&p(this,g)}function l(g,b,w){this.promise=g,typeof b=="function"&&(this.onFulfilled=b,this.callFulfilled=this.otherCallFulfilled),typeof w=="function"&&(this.onRejected=w,this.callRejected=this.otherCallRejected)}function c(g,b,w){i(function(){var D;try{D=b(w)}catch(_){return r.reject(g,_)}D===g?r.reject(g,new TypeError("Cannot resolve promise with itself")):r.resolve(g,D)})}function A(g){var b=g&&g.then;if(g&&(typeof g=="object"||typeof g=="function")&&typeof b=="function")return function(){b.apply(g,arguments)}}function p(g,b){var w=!1;function D(R){w||(w=!0,r.reject(g,R))}function _(R){w||(w=!0,r.resolve(g,R))}var Z=m(function(){b(_,D)});Z.status==="error"&&D(Z.value)}function m(g,b){var w={};try{w.value=g(b),w.status="success"}catch(D){w.status="error",w.value=D}return w}(e.exports=h).prototype.finally=function(g){if(typeof g!="function")return this;var b=this.constructor;return this.then(function(w){return b.resolve(g()).then(function(){return w})},function(w){return b.resolve(g()).then(function(){throw w})})},h.prototype.catch=function(g){return this.then(null,g)},h.prototype.then=function(g,b){if(typeof g!="function"&&this.state===o||typeof b!="function"&&this.state===a)return this;var w=new this.constructor(n);return this.state!==u?c(w,this.state===o?g:b,this.outcome):this.queue.push(new l(w,g,b)),w},l.prototype.callFulfilled=function(g){r.resolve(this.promise,g)},l.prototype.otherCallFulfilled=function(g){c(this.promise,this.onFulfilled,g)},l.prototype.callRejected=function(g){r.reject(this.promise,g)},l.prototype.otherCallRejected=function(g){c(this.promise,this.onRejected,g)},r.resolve=function(g,b){var w=m(A,b);if(w.status==="error")return r.reject(g,w.value);var D=w.value;if(D)p(g,D);else{g.state=o,g.outcome=b;for(var _=-1,Z=g.queue.length;++_<Z;)g.queue[_].callFulfilled(b)}return g},r.reject=function(g,b){g.state=a,g.outcome=b;for(var w=-1,D=g.queue.length;++w<D;)g.queue[w].callRejected(b);return g},h.resolve=function(g){return g instanceof this?g:r.resolve(new this(n),g)},h.reject=function(g){var b=new this(n);return r.reject(b,g)},h.all=function(g){var b=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,D=!1;if(!w)return this.resolve([]);for(var _=new Array(w),Z=0,R=-1,O=new this(n);++R<w;)F(g[R],R);return O;function F(j,Q){b.resolve(j).then(function(v){_[Q]=v,++Z!==w||D||(D=!0,r.resolve(O,_))},function(v){D||(D=!0,r.reject(O,v))})}},h.race=function(g){var b=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,D=!1;if(!w)return this.resolve([]);for(var _=-1,Z=new this(n);++_<w;)R=g[_],b.resolve(R).then(function(O){D||(D=!0,r.resolve(Z,O))},function(O){D||(D=!0,r.reject(Z,O))});var R;return Z}},{immediate:36}],38:[function(s,e,t){"use strict";var i={};(0,s("./lib/utils/common").assign)(i,s("./lib/deflate"),s("./lib/inflate"),s("./lib/zlib/constants")),e.exports=i},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(s,e,t){"use strict";var i=s("./zlib/deflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/messages"),o=s("./zlib/zstream"),u=Object.prototype.toString,h=0,l=-1,c=0,A=8;function p(g){if(!(this instanceof p))return new p(g);this.options=n.assign({level:l,method:A,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:""},g||{});var b=this.options;b.raw&&0<b.windowBits?b.windowBits=-b.windowBits:b.gzip&&0<b.windowBits&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var w=i.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(w!==h)throw new Error(a[w]);if(b.header&&i.deflateSetHeader(this.strm,b.header),b.dictionary){var D;if(D=typeof b.dictionary=="string"?r.string2buf(b.dictionary):u.call(b.dictionary)==="[object ArrayBuffer]"?new Uint8Array(b.dictionary):b.dictionary,(w=i.deflateSetDictionary(this.strm,D))!==h)throw new Error(a[w]);this._dict_set=!0}}function m(g,b){var w=new p(b);if(w.push(g,!0),w.err)throw w.msg||a[w.err];return w.result}p.prototype.push=function(g,b){var w,D,_=this.strm,Z=this.options.chunkSize;if(this.ended)return!1;D=b===~~b?b:b===!0?4:0,typeof g=="string"?_.input=r.string2buf(g):u.call(g)==="[object ArrayBuffer]"?_.input=new Uint8Array(g):_.input=g,_.next_in=0,_.avail_in=_.input.length;do{if(_.avail_out===0&&(_.output=new n.Buf8(Z),_.next_out=0,_.avail_out=Z),(w=i.deflate(_,D))!==1&&w!==h)return this.onEnd(w),!(this.ended=!0);_.avail_out!==0&&(_.avail_in!==0||D!==4&&D!==2)||(this.options.to==="string"?this.onData(r.buf2binstring(n.shrinkBuf(_.output,_.next_out))):this.onData(n.shrinkBuf(_.output,_.next_out)))}while((0<_.avail_in||_.avail_out===0)&&w!==1);return D===4?(w=i.deflateEnd(this.strm),this.onEnd(w),this.ended=!0,w===h):D!==2||(this.onEnd(h),!(_.avail_out=0))},p.prototype.onData=function(g){this.chunks.push(g)},p.prototype.onEnd=function(g){g===h&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=g,this.msg=this.strm.msg},t.Deflate=p,t.deflate=m,t.deflateRaw=function(g,b){return(b=b||{}).raw=!0,m(g,b)},t.gzip=function(g,b){return(b=b||{}).gzip=!0,m(g,b)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(s,e,t){"use strict";var i=s("./zlib/inflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/constants"),o=s("./zlib/messages"),u=s("./zlib/zstream"),h=s("./zlib/gzheader"),l=Object.prototype.toString;function c(p){if(!(this instanceof c))return new c(p);this.options=n.assign({chunkSize:16384,windowBits:0,to:""},p||{});var m=this.options;m.raw&&0<=m.windowBits&&m.windowBits<16&&(m.windowBits=-m.windowBits,m.windowBits===0&&(m.windowBits=-15)),!(0<=m.windowBits&&m.windowBits<16)||p&&p.windowBits||(m.windowBits+=32),15<m.windowBits&&m.windowBits<48&&!(15&m.windowBits)&&(m.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new u,this.strm.avail_out=0;var g=i.inflateInit2(this.strm,m.windowBits);if(g!==a.Z_OK)throw new Error(o[g]);this.header=new h,i.inflateGetHeader(this.strm,this.header)}function A(p,m){var g=new c(m);if(g.push(p,!0),g.err)throw g.msg||o[g.err];return g.result}c.prototype.push=function(p,m){var g,b,w,D,_,Z,R=this.strm,O=this.options.chunkSize,F=this.options.dictionary,j=!1;if(this.ended)return!1;b=m===~~m?m:m===!0?a.Z_FINISH:a.Z_NO_FLUSH,typeof p=="string"?R.input=r.binstring2buf(p):l.call(p)==="[object ArrayBuffer]"?R.input=new Uint8Array(p):R.input=p,R.next_in=0,R.avail_in=R.input.length;do{if(R.avail_out===0&&(R.output=new n.Buf8(O),R.next_out=0,R.avail_out=O),(g=i.inflate(R,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&F&&(Z=typeof F=="string"?r.string2buf(F):l.call(F)==="[object ArrayBuffer]"?new Uint8Array(F):F,g=i.inflateSetDictionary(this.strm,Z)),g===a.Z_BUF_ERROR&&j===!0&&(g=a.Z_OK,j=!1),g!==a.Z_STREAM_END&&g!==a.Z_OK)return this.onEnd(g),!(this.ended=!0);R.next_out&&(R.avail_out!==0&&g!==a.Z_STREAM_END&&(R.avail_in!==0||b!==a.Z_FINISH&&b!==a.Z_SYNC_FLUSH)||(this.options.to==="string"?(w=r.utf8border(R.output,R.next_out),D=R.next_out-w,_=r.buf2string(R.output,w),R.next_out=D,R.avail_out=O-D,D&&n.arraySet(R.output,R.output,w,D,0),this.onData(_)):this.onData(n.shrinkBuf(R.output,R.next_out)))),R.avail_in===0&&R.avail_out===0&&(j=!0)}while((0<R.avail_in||R.avail_out===0)&&g!==a.Z_STREAM_END);return g===a.Z_STREAM_END&&(b=a.Z_FINISH),b===a.Z_FINISH?(g=i.inflateEnd(this.strm),this.onEnd(g),this.ended=!0,g===a.Z_OK):b!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),!(R.avail_out=0))},c.prototype.onData=function(p){this.chunks.push(p)},c.prototype.onEnd=function(p){p===a.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=p,this.msg=this.strm.msg},t.Inflate=c,t.inflate=A,t.inflateRaw=function(p,m){return(m=m||{}).raw=!0,A(p,m)},t.ungzip=A},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";t.assign=function(a){for(var o=Array.prototype.slice.call(arguments,1);o.length;){var u=o.shift();if(u){if(typeof u!="object")throw new TypeError(u+"must be non-object");for(var h in u)u.hasOwnProperty(h)&&(a[h]=u[h])}}return a},t.shrinkBuf=function(a,o){return a.length===o?a:a.subarray?a.subarray(0,o):(a.length=o,a)};var n={arraySet:function(a,o,u,h,l){if(o.subarray&&a.subarray)a.set(o.subarray(u,u+h),l);else for(var c=0;c<h;c++)a[l+c]=o[u+c]},flattenChunks:function(a){var o,u,h,l,c,A;for(o=h=0,u=a.length;o<u;o++)h+=a[o].length;for(A=new Uint8Array(h),o=l=0,u=a.length;o<u;o++)c=a[o],A.set(c,l),l+=c.length;return A}},r={arraySet:function(a,o,u,h,l){for(var c=0;c<h;c++)a[l+c]=o[u+c]},flattenChunks:function(a){return[].concat.apply([],a)}};t.setTyped=function(a){a?(t.Buf8=Uint8Array,t.Buf16=Uint16Array,t.Buf32=Int32Array,t.assign(t,n)):(t.Buf8=Array,t.Buf16=Array,t.Buf32=Array,t.assign(t,r))},t.setTyped(i)},{}],42:[function(s,e,t){"use strict";var i=s("./common"),n=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{r=!1}for(var a=new i.Buf8(256),o=0;o<256;o++)a[o]=252<=o?6:248<=o?5:240<=o?4:224<=o?3:192<=o?2:1;function u(h,l){if(l<65537&&(h.subarray&&r||!h.subarray&&n))return String.fromCharCode.apply(null,i.shrinkBuf(h,l));for(var c="",A=0;A<l;A++)c+=String.fromCharCode(h[A]);return c}a[254]=a[254]=1,t.string2buf=function(h){var l,c,A,p,m,g=h.length,b=0;for(p=0;p<g;p++)(64512&(c=h.charCodeAt(p)))==55296&&p+1<g&&(64512&(A=h.charCodeAt(p+1)))==56320&&(c=65536+(c-55296<<10)+(A-56320),p++),b+=c<128?1:c<2048?2:c<65536?3:4;for(l=new i.Buf8(b),p=m=0;m<b;p++)(64512&(c=h.charCodeAt(p)))==55296&&p+1<g&&(64512&(A=h.charCodeAt(p+1)))==56320&&(c=65536+(c-55296<<10)+(A-56320),p++),c<128?l[m++]=c:(c<2048?l[m++]=192|c>>>6:(c<65536?l[m++]=224|c>>>12:(l[m++]=240|c>>>18,l[m++]=128|c>>>12&63),l[m++]=128|c>>>6&63),l[m++]=128|63&c);return l},t.buf2binstring=function(h){return u(h,h.length)},t.binstring2buf=function(h){for(var l=new i.Buf8(h.length),c=0,A=l.length;c<A;c++)l[c]=h.charCodeAt(c);return l},t.buf2string=function(h,l){var c,A,p,m,g=l||h.length,b=new Array(2*g);for(c=A=0;c<g;)if((p=h[c++])<128)b[A++]=p;else if(4<(m=a[p]))b[A++]=65533,c+=m-1;else{for(p&=m===2?31:m===3?15:7;1<m&&c<g;)p=p<<6|63&h[c++],m--;1<m?b[A++]=65533:p<65536?b[A++]=p:(p-=65536,b[A++]=55296|p>>10&1023,b[A++]=56320|1023&p)}return u(b,A)},t.utf8border=function(h,l){var c;for((l=l||h.length)>h.length&&(l=h.length),c=l-1;0<=c&&(192&h[c])==128;)c--;return c<0||c===0?l:c+a[h[c]]>l?c:l}},{"./common":41}],43:[function(s,e,t){"use strict";e.exports=function(i,n,r,a){for(var o=65535&i|0,u=i>>>16&65535|0,h=0;r!==0;){for(r-=h=2e3<r?2e3:r;u=u+(o=o+n[a++]|0)|0,--h;);o%=65521,u%=65521}return o|u<<16|0}},{}],44:[function(s,e,t){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(s,e,t){"use strict";var i=function(){for(var n,r=[],a=0;a<256;a++){n=a;for(var o=0;o<8;o++)n=1&n?3988292384^n>>>1:n>>>1;r[a]=n}return r}();e.exports=function(n,r,a,o){var u=i,h=o+a;n^=-1;for(var l=o;l<h;l++)n=n>>>8^u[255&(n^r[l])];return-1^n}},{}],46:[function(s,e,t){"use strict";var i,n=s("../utils/common"),r=s("./trees"),a=s("./adler32"),o=s("./crc32"),u=s("./messages"),h=0,l=4,c=0,A=-2,p=-1,m=4,g=2,b=8,w=9,D=286,_=30,Z=19,R=2*D+1,O=15,F=3,j=258,Q=j+F+1,v=42,z=113,f=1,I=2,q=3,T=4;function Y(d,U){return d.msg=u[U],U}function E(d){return(d<<1)-(4<d?9:0)}function W(d){for(var U=d.length;0<=--U;)d[U]=0}function B(d){var U=d.state,P=U.pending;P>d.avail_out&&(P=d.avail_out),P!==0&&(n.arraySet(d.output,U.pending_buf,U.pending_out,P,d.next_out),d.next_out+=P,U.pending_out+=P,d.total_out+=P,d.avail_out-=P,U.pending-=P,U.pending===0&&(U.pending_out=0))}function k(d,U){r._tr_flush_block(d,0<=d.block_start?d.block_start:-1,d.strstart-d.block_start,U),d.block_start=d.strstart,B(d.strm)}function S(d,U){d.pending_buf[d.pending++]=U}function G(d,U){d.pending_buf[d.pending++]=U>>>8&255,d.pending_buf[d.pending++]=255&U}function V(d,U){var P,y,x=d.max_chain_length,C=d.strstart,L=d.prev_length,M=d.nice_match,N=d.strstart>d.w_size-Q?d.strstart-(d.w_size-Q):0,H=d.window,K=d.w_mask,J=d.prev,te=d.strstart+j,ce=H[C+L-1],ae=H[C+L];d.prev_length>=d.good_match&&(x>>=2),M>d.lookahead&&(M=d.lookahead);do if(H[(P=U)+L]===ae&&H[P+L-1]===ce&&H[P]===H[C]&&H[++P]===H[C+1]){C+=2,P++;do;while(H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&H[++C]===H[++P]&&C<te);if(y=j-(te-C),C=te-j,L<y){if(d.match_start=U,M<=(L=y))break;ce=H[C+L-1],ae=H[C+L]}}while((U=J[U&K])>N&&--x!=0);return L<=d.lookahead?L:d.lookahead}function X(d){var U,P,y,x,C,L,M,N,H,K,J=d.w_size;do{if(x=d.window_size-d.lookahead-d.strstart,d.strstart>=J+(J-Q)){for(n.arraySet(d.window,d.window,J,J,0),d.match_start-=J,d.strstart-=J,d.block_start-=J,U=P=d.hash_size;y=d.head[--U],d.head[U]=J<=y?y-J:0,--P;);for(U=P=J;y=d.prev[--U],d.prev[U]=J<=y?y-J:0,--P;);x+=J}if(d.strm.avail_in===0)break;if(L=d.strm,M=d.window,N=d.strstart+d.lookahead,H=x,K=void 0,K=L.avail_in,H<K&&(K=H),P=K===0?0:(L.avail_in-=K,n.arraySet(M,L.input,L.next_in,K,N),L.state.wrap===1?L.adler=a(L.adler,M,K,N):L.state.wrap===2&&(L.adler=o(L.adler,M,K,N)),L.next_in+=K,L.total_in+=K,K),d.lookahead+=P,d.lookahead+d.insert>=F)for(C=d.strstart-d.insert,d.ins_h=d.window[C],d.ins_h=(d.ins_h<<d.hash_shift^d.window[C+1])&d.hash_mask;d.insert&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[C+F-1])&d.hash_mask,d.prev[C&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=C,C++,d.insert--,!(d.lookahead+d.insert<F)););}while(d.lookahead<Q&&d.strm.avail_in!==0)}function $(d,U){for(var P,y;;){if(d.lookahead<Q){if(X(d),d.lookahead<Q&&U===h)return f;if(d.lookahead===0)break}if(P=0,d.lookahead>=F&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),P!==0&&d.strstart-P<=d.w_size-Q&&(d.match_length=V(d,P)),d.match_length>=F)if(y=r._tr_tally(d,d.strstart-d.match_start,d.match_length-F),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=F){for(d.match_length--;d.strstart++,d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart,--d.match_length!=0;);d.strstart++}else d.strstart+=d.match_length,d.match_length=0,d.ins_h=d.window[d.strstart],d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+1])&d.hash_mask;else y=r._tr_tally(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++;if(y&&(k(d,!1),d.strm.avail_out===0))return f}return d.insert=d.strstart<F-1?d.strstart:F-1,U===l?(k(d,!0),d.strm.avail_out===0?q:T):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?f:I}function ee(d,U){for(var P,y,x;;){if(d.lookahead<Q){if(X(d),d.lookahead<Q&&U===h)return f;if(d.lookahead===0)break}if(P=0,d.lookahead>=F&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),d.prev_length=d.match_length,d.prev_match=d.match_start,d.match_length=F-1,P!==0&&d.prev_length<d.max_lazy_match&&d.strstart-P<=d.w_size-Q&&(d.match_length=V(d,P),d.match_length<=5&&(d.strategy===1||d.match_length===F&&4096<d.strstart-d.match_start)&&(d.match_length=F-1)),d.prev_length>=F&&d.match_length<=d.prev_length){for(x=d.strstart+d.lookahead-F,y=r._tr_tally(d,d.strstart-1-d.prev_match,d.prev_length-F),d.lookahead-=d.prev_length-1,d.prev_length-=2;++d.strstart<=x&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+F-1])&d.hash_mask,P=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),--d.prev_length!=0;);if(d.match_available=0,d.match_length=F-1,d.strstart++,y&&(k(d,!1),d.strm.avail_out===0))return f}else if(d.match_available){if((y=r._tr_tally(d,0,d.window[d.strstart-1]))&&k(d,!1),d.strstart++,d.lookahead--,d.strm.avail_out===0)return f}else d.match_available=1,d.strstart++,d.lookahead--}return d.match_available&&(y=r._tr_tally(d,0,d.window[d.strstart-1]),d.match_available=0),d.insert=d.strstart<F-1?d.strstart:F-1,U===l?(k(d,!0),d.strm.avail_out===0?q:T):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?f:I}function re(d,U,P,y,x){this.good_length=d,this.max_lazy=U,this.nice_length=P,this.max_chain=y,this.func=x}function se(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=b,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(2*R),this.dyn_dtree=new n.Buf16(2*(2*_+1)),this.bl_tree=new n.Buf16(2*(2*Z+1)),W(this.dyn_ltree),W(this.dyn_dtree),W(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(O+1),this.heap=new n.Buf16(2*D+1),W(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(2*D+1),W(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function ne(d){var U;return d&&d.state?(d.total_in=d.total_out=0,d.data_type=g,(U=d.state).pending=0,U.pending_out=0,U.wrap<0&&(U.wrap=-U.wrap),U.status=U.wrap?v:z,d.adler=U.wrap===2?0:1,U.last_flush=h,r._tr_init(U),c):Y(d,A)}function he(d){var U=ne(d);return U===c&&function(P){P.window_size=2*P.w_size,W(P.head),P.max_lazy_match=i[P.level].max_lazy,P.good_match=i[P.level].good_length,P.nice_match=i[P.level].nice_length,P.max_chain_length=i[P.level].max_chain,P.strstart=0,P.block_start=0,P.lookahead=0,P.insert=0,P.match_length=P.prev_length=F-1,P.match_available=0,P.ins_h=0}(d.state),U}function de(d,U,P,y,x,C){if(!d)return A;var L=1;if(U===p&&(U=6),y<0?(L=0,y=-y):15<y&&(L=2,y-=16),x<1||w<x||P!==b||y<8||15<y||U<0||9<U||C<0||m<C)return Y(d,A);y===8&&(y=9);var M=new se;return(d.state=M).strm=d,M.wrap=L,M.gzhead=null,M.w_bits=y,M.w_size=1<<M.w_bits,M.w_mask=M.w_size-1,M.hash_bits=x+7,M.hash_size=1<<M.hash_bits,M.hash_mask=M.hash_size-1,M.hash_shift=~~((M.hash_bits+F-1)/F),M.window=new n.Buf8(2*M.w_size),M.head=new n.Buf16(M.hash_size),M.prev=new n.Buf16(M.w_size),M.lit_bufsize=1<<x+6,M.pending_buf_size=4*M.lit_bufsize,M.pending_buf=new n.Buf8(M.pending_buf_size),M.d_buf=1*M.lit_bufsize,M.l_buf=3*M.lit_bufsize,M.level=U,M.strategy=C,M.method=P,he(d)}i=[new re(0,0,0,0,function(d,U){var P=65535;for(P>d.pending_buf_size-5&&(P=d.pending_buf_size-5);;){if(d.lookahead<=1){if(X(d),d.lookahead===0&&U===h)return f;if(d.lookahead===0)break}d.strstart+=d.lookahead,d.lookahead=0;var y=d.block_start+P;if((d.strstart===0||d.strstart>=y)&&(d.lookahead=d.strstart-y,d.strstart=y,k(d,!1),d.strm.avail_out===0)||d.strstart-d.block_start>=d.w_size-Q&&(k(d,!1),d.strm.avail_out===0))return f}return d.insert=0,U===l?(k(d,!0),d.strm.avail_out===0?q:T):(d.strstart>d.block_start&&(k(d,!1),d.strm.avail_out),f)}),new re(4,4,8,4,$),new re(4,5,16,8,$),new re(4,6,32,32,$),new re(4,4,16,16,ee),new re(8,16,32,32,ee),new re(8,16,128,128,ee),new re(8,32,128,256,ee),new re(32,128,258,1024,ee),new re(32,258,258,4096,ee)],t.deflateInit=function(d,U){return de(d,U,b,15,8,0)},t.deflateInit2=de,t.deflateReset=he,t.deflateResetKeep=ne,t.deflateSetHeader=function(d,U){return d&&d.state?d.state.wrap!==2?A:(d.state.gzhead=U,c):A},t.deflate=function(d,U){var P,y,x,C;if(!d||!d.state||5<U||U<0)return d?Y(d,A):A;if(y=d.state,!d.output||!d.input&&d.avail_in!==0||y.status===666&&U!==l)return Y(d,d.avail_out===0?-5:A);if(y.strm=d,P=y.last_flush,y.last_flush=U,y.status===v)if(y.wrap===2)d.adler=0,S(y,31),S(y,139),S(y,8),y.gzhead?(S(y,(y.gzhead.text?1:0)+(y.gzhead.hcrc?2:0)+(y.gzhead.extra?4:0)+(y.gzhead.name?8:0)+(y.gzhead.comment?16:0)),S(y,255&y.gzhead.time),S(y,y.gzhead.time>>8&255),S(y,y.gzhead.time>>16&255),S(y,y.gzhead.time>>24&255),S(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),S(y,255&y.gzhead.os),y.gzhead.extra&&y.gzhead.extra.length&&(S(y,255&y.gzhead.extra.length),S(y,y.gzhead.extra.length>>8&255)),y.gzhead.hcrc&&(d.adler=o(d.adler,y.pending_buf,y.pending,0)),y.gzindex=0,y.status=69):(S(y,0),S(y,0),S(y,0),S(y,0),S(y,0),S(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),S(y,3),y.status=z);else{var L=b+(y.w_bits-8<<4)<<8;L|=(2<=y.strategy||y.level<2?0:y.level<6?1:y.level===6?2:3)<<6,y.strstart!==0&&(L|=32),L+=31-L%31,y.status=z,G(y,L),y.strstart!==0&&(G(y,d.adler>>>16),G(y,65535&d.adler)),d.adler=1}if(y.status===69)if(y.gzhead.extra){for(x=y.pending;y.gzindex<(65535&y.gzhead.extra.length)&&(y.pending!==y.pending_buf_size||(y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),B(d),x=y.pending,y.pending!==y.pending_buf_size));)S(y,255&y.gzhead.extra[y.gzindex]),y.gzindex++;y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),y.gzindex===y.gzhead.extra.length&&(y.gzindex=0,y.status=73)}else y.status=73;if(y.status===73)if(y.gzhead.name){x=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),B(d),x=y.pending,y.pending===y.pending_buf_size)){C=1;break}C=y.gzindex<y.gzhead.name.length?255&y.gzhead.name.charCodeAt(y.gzindex++):0,S(y,C)}while(C!==0);y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),C===0&&(y.gzindex=0,y.status=91)}else y.status=91;if(y.status===91)if(y.gzhead.comment){x=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),B(d),x=y.pending,y.pending===y.pending_buf_size)){C=1;break}C=y.gzindex<y.gzhead.comment.length?255&y.gzhead.comment.charCodeAt(y.gzindex++):0,S(y,C)}while(C!==0);y.gzhead.hcrc&&y.pending>x&&(d.adler=o(d.adler,y.pending_buf,y.pending-x,x)),C===0&&(y.status=103)}else y.status=103;if(y.status===103&&(y.gzhead.hcrc?(y.pending+2>y.pending_buf_size&&B(d),y.pending+2<=y.pending_buf_size&&(S(y,255&d.adler),S(y,d.adler>>8&255),d.adler=0,y.status=z)):y.status=z),y.pending!==0){if(B(d),d.avail_out===0)return y.last_flush=-1,c}else if(d.avail_in===0&&E(U)<=E(P)&&U!==l)return Y(d,-5);if(y.status===666&&d.avail_in!==0)return Y(d,-5);if(d.avail_in!==0||y.lookahead!==0||U!==h&&y.status!==666){var M=y.strategy===2?function(N,H){for(var K;;){if(N.lookahead===0&&(X(N),N.lookahead===0)){if(H===h)return f;break}if(N.match_length=0,K=r._tr_tally(N,0,N.window[N.strstart]),N.lookahead--,N.strstart++,K&&(k(N,!1),N.strm.avail_out===0))return f}return N.insert=0,H===l?(k(N,!0),N.strm.avail_out===0?q:T):N.last_lit&&(k(N,!1),N.strm.avail_out===0)?f:I}(y,U):y.strategy===3?function(N,H){for(var K,J,te,ce,ae=N.window;;){if(N.lookahead<=j){if(X(N),N.lookahead<=j&&H===h)return f;if(N.lookahead===0)break}if(N.match_length=0,N.lookahead>=F&&0<N.strstart&&(J=ae[te=N.strstart-1])===ae[++te]&&J===ae[++te]&&J===ae[++te]){ce=N.strstart+j;do;while(J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&J===ae[++te]&&te<ce);N.match_length=j-(ce-te),N.match_length>N.lookahead&&(N.match_length=N.lookahead)}if(N.match_length>=F?(K=r._tr_tally(N,1,N.match_length-F),N.lookahead-=N.match_length,N.strstart+=N.match_length,N.match_length=0):(K=r._tr_tally(N,0,N.window[N.strstart]),N.lookahead--,N.strstart++),K&&(k(N,!1),N.strm.avail_out===0))return f}return N.insert=0,H===l?(k(N,!0),N.strm.avail_out===0?q:T):N.last_lit&&(k(N,!1),N.strm.avail_out===0)?f:I}(y,U):i[y.level].func(y,U);if(M!==q&&M!==T||(y.status=666),M===f||M===q)return d.avail_out===0&&(y.last_flush=-1),c;if(M===I&&(U===1?r._tr_align(y):U!==5&&(r._tr_stored_block(y,0,0,!1),U===3&&(W(y.head),y.lookahead===0&&(y.strstart=0,y.block_start=0,y.insert=0))),B(d),d.avail_out===0))return y.last_flush=-1,c}return U!==l?c:y.wrap<=0?1:(y.wrap===2?(S(y,255&d.adler),S(y,d.adler>>8&255),S(y,d.adler>>16&255),S(y,d.adler>>24&255),S(y,255&d.total_in),S(y,d.total_in>>8&255),S(y,d.total_in>>16&255),S(y,d.total_in>>24&255)):(G(y,d.adler>>>16),G(y,65535&d.adler)),B(d),0<y.wrap&&(y.wrap=-y.wrap),y.pending!==0?c:1)},t.deflateEnd=function(d){var U;return d&&d.state?(U=d.state.status)!==v&&U!==69&&U!==73&&U!==91&&U!==103&&U!==z&&U!==666?Y(d,A):(d.state=null,U===z?Y(d,-3):c):A},t.deflateSetDictionary=function(d,U){var P,y,x,C,L,M,N,H,K=U.length;if(!d||!d.state||(C=(P=d.state).wrap)===2||C===1&&P.status!==v||P.lookahead)return A;for(C===1&&(d.adler=a(d.adler,U,K,0)),P.wrap=0,K>=P.w_size&&(C===0&&(W(P.head),P.strstart=0,P.block_start=0,P.insert=0),H=new n.Buf8(P.w_size),n.arraySet(H,U,K-P.w_size,P.w_size,0),U=H,K=P.w_size),L=d.avail_in,M=d.next_in,N=d.input,d.avail_in=K,d.next_in=0,d.input=U,X(P);P.lookahead>=F;){for(y=P.strstart,x=P.lookahead-(F-1);P.ins_h=(P.ins_h<<P.hash_shift^P.window[y+F-1])&P.hash_mask,P.prev[y&P.w_mask]=P.head[P.ins_h],P.head[P.ins_h]=y,y++,--x;);P.strstart=y,P.lookahead=F-1,X(P)}return P.strstart+=P.lookahead,P.block_start=P.strstart,P.insert=P.lookahead,P.lookahead=0,P.match_length=P.prev_length=F-1,P.match_available=0,d.next_in=M,d.input=N,d.avail_in=L,P.wrap=C,c},t.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(s,e,t){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(s,e,t){"use strict";e.exports=function(i,n){var r,a,o,u,h,l,c,A,p,m,g,b,w,D,_,Z,R,O,F,j,Q,v,z,f,I;r=i.state,a=i.next_in,f=i.input,o=a+(i.avail_in-5),u=i.next_out,I=i.output,h=u-(n-i.avail_out),l=u+(i.avail_out-257),c=r.dmax,A=r.wsize,p=r.whave,m=r.wnext,g=r.window,b=r.hold,w=r.bits,D=r.lencode,_=r.distcode,Z=(1<<r.lenbits)-1,R=(1<<r.distbits)-1;e:do{w<15&&(b+=f[a++]<<w,w+=8,b+=f[a++]<<w,w+=8),O=D[b&Z];t:for(;;){if(b>>>=F=O>>>24,w-=F,(F=O>>>16&255)===0)I[u++]=65535&O;else{if(!(16&F)){if(!(64&F)){O=D[(65535&O)+(b&(1<<F)-1)];continue t}if(32&F){r.mode=12;break e}i.msg="invalid literal/length code",r.mode=30;break e}j=65535&O,(F&=15)&&(w<F&&(b+=f[a++]<<w,w+=8),j+=b&(1<<F)-1,b>>>=F,w-=F),w<15&&(b+=f[a++]<<w,w+=8,b+=f[a++]<<w,w+=8),O=_[b&R];r:for(;;){if(b>>>=F=O>>>24,w-=F,!(16&(F=O>>>16&255))){if(!(64&F)){O=_[(65535&O)+(b&(1<<F)-1)];continue r}i.msg="invalid distance code",r.mode=30;break e}if(Q=65535&O,w<(F&=15)&&(b+=f[a++]<<w,(w+=8)<F&&(b+=f[a++]<<w,w+=8)),c<(Q+=b&(1<<F)-1)){i.msg="invalid distance too far back",r.mode=30;break e}if(b>>>=F,w-=F,(F=u-h)<Q){if(p<(F=Q-F)&&r.sane){i.msg="invalid distance too far back",r.mode=30;break e}if(z=g,(v=0)===m){if(v+=A-F,F<j){for(j-=F;I[u++]=g[v++],--F;);v=u-Q,z=I}}else if(m<F){if(v+=A+m-F,(F-=m)<j){for(j-=F;I[u++]=g[v++],--F;);if(v=0,m<j){for(j-=F=m;I[u++]=g[v++],--F;);v=u-Q,z=I}}}else if(v+=m-F,F<j){for(j-=F;I[u++]=g[v++],--F;);v=u-Q,z=I}for(;2<j;)I[u++]=z[v++],I[u++]=z[v++],I[u++]=z[v++],j-=3;j&&(I[u++]=z[v++],1<j&&(I[u++]=z[v++]))}else{for(v=u-Q;I[u++]=I[v++],I[u++]=I[v++],I[u++]=I[v++],2<(j-=3););j&&(I[u++]=I[v++],1<j&&(I[u++]=I[v++]))}break}}break}}while(a<o&&u<l);a-=j=w>>3,b&=(1<<(w-=j<<3))-1,i.next_in=a,i.next_out=u,i.avail_in=a<o?o-a+5:5-(a-o),i.avail_out=u<l?l-u+257:257-(u-l),r.hold=b,r.bits=w}},{}],49:[function(s,e,t){"use strict";var i=s("../utils/common"),n=s("./adler32"),r=s("./crc32"),a=s("./inffast"),o=s("./inftrees"),u=1,h=2,l=0,c=-2,A=1,p=852,m=592;function g(v){return(v>>>24&255)+(v>>>8&65280)+((65280&v)<<8)+((255&v)<<24)}function b(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function w(v){var z;return v&&v.state?(z=v.state,v.total_in=v.total_out=z.total=0,v.msg="",z.wrap&&(v.adler=1&z.wrap),z.mode=A,z.last=0,z.havedict=0,z.dmax=32768,z.head=null,z.hold=0,z.bits=0,z.lencode=z.lendyn=new i.Buf32(p),z.distcode=z.distdyn=new i.Buf32(m),z.sane=1,z.back=-1,l):c}function D(v){var z;return v&&v.state?((z=v.state).wsize=0,z.whave=0,z.wnext=0,w(v)):c}function _(v,z){var f,I;return v&&v.state?(I=v.state,z<0?(f=0,z=-z):(f=1+(z>>4),z<48&&(z&=15)),z&&(z<8||15<z)?c:(I.window!==null&&I.wbits!==z&&(I.window=null),I.wrap=f,I.wbits=z,D(v))):c}function Z(v,z){var f,I;return v?(I=new b,(v.state=I).window=null,(f=_(v,z))!==l&&(v.state=null),f):c}var R,O,F=!0;function j(v){if(F){var z;for(R=new i.Buf32(512),O=new i.Buf32(32),z=0;z<144;)v.lens[z++]=8;for(;z<256;)v.lens[z++]=9;for(;z<280;)v.lens[z++]=7;for(;z<288;)v.lens[z++]=8;for(o(u,v.lens,0,288,R,0,v.work,{bits:9}),z=0;z<32;)v.lens[z++]=5;o(h,v.lens,0,32,O,0,v.work,{bits:5}),F=!1}v.lencode=R,v.lenbits=9,v.distcode=O,v.distbits=5}function Q(v,z,f,I){var q,T=v.state;return T.window===null&&(T.wsize=1<<T.wbits,T.wnext=0,T.whave=0,T.window=new i.Buf8(T.wsize)),I>=T.wsize?(i.arraySet(T.window,z,f-T.wsize,T.wsize,0),T.wnext=0,T.whave=T.wsize):(I<(q=T.wsize-T.wnext)&&(q=I),i.arraySet(T.window,z,f-I,q,T.wnext),(I-=q)?(i.arraySet(T.window,z,f-I,I,0),T.wnext=I,T.whave=T.wsize):(T.wnext+=q,T.wnext===T.wsize&&(T.wnext=0),T.whave<T.wsize&&(T.whave+=q))),0}t.inflateReset=D,t.inflateReset2=_,t.inflateResetKeep=w,t.inflateInit=function(v){return Z(v,15)},t.inflateInit2=Z,t.inflate=function(v,z){var f,I,q,T,Y,E,W,B,k,S,G,V,X,$,ee,re,se,ne,he,de,d,U,P,y,x=0,C=new i.Buf8(4),L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!v||!v.state||!v.output||!v.input&&v.avail_in!==0)return c;(f=v.state).mode===12&&(f.mode=13),Y=v.next_out,q=v.output,W=v.avail_out,T=v.next_in,I=v.input,E=v.avail_in,B=f.hold,k=f.bits,S=E,G=W,U=l;e:for(;;)switch(f.mode){case A:if(f.wrap===0){f.mode=13;break}for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(2&f.wrap&&B===35615){C[f.check=0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0),k=B=0,f.mode=2;break}if(f.flags=0,f.head&&(f.head.done=!1),!(1&f.wrap)||(((255&B)<<8)+(B>>8))%31){v.msg="incorrect header check",f.mode=30;break}if((15&B)!=8){v.msg="unknown compression method",f.mode=30;break}if(k-=4,d=8+(15&(B>>>=4)),f.wbits===0)f.wbits=d;else if(d>f.wbits){v.msg="invalid window size",f.mode=30;break}f.dmax=1<<d,v.adler=f.check=1,f.mode=512&B?10:12,k=B=0;break;case 2:for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(f.flags=B,(255&f.flags)!=8){v.msg="unknown compression method",f.mode=30;break}if(57344&f.flags){v.msg="unknown header flags set",f.mode=30;break}f.head&&(f.head.text=B>>8&1),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0)),k=B=0,f.mode=3;case 3:for(;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.head&&(f.head.time=B),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,C[2]=B>>>16&255,C[3]=B>>>24&255,f.check=r(f.check,C,4,0)),k=B=0,f.mode=4;case 4:for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.head&&(f.head.xflags=255&B,f.head.os=B>>8),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0)),k=B=0,f.mode=5;case 5:if(1024&f.flags){for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.length=B,f.head&&(f.head.extra_len=B),512&f.flags&&(C[0]=255&B,C[1]=B>>>8&255,f.check=r(f.check,C,2,0)),k=B=0}else f.head&&(f.head.extra=null);f.mode=6;case 6:if(1024&f.flags&&(E<(V=f.length)&&(V=E),V&&(f.head&&(d=f.head.extra_len-f.length,f.head.extra||(f.head.extra=new Array(f.head.extra_len)),i.arraySet(f.head.extra,I,T,V,d)),512&f.flags&&(f.check=r(f.check,I,V,T)),E-=V,T+=V,f.length-=V),f.length))break e;f.length=0,f.mode=7;case 7:if(2048&f.flags){if(E===0)break e;for(V=0;d=I[T+V++],f.head&&d&&f.length<65536&&(f.head.name+=String.fromCharCode(d)),d&&V<E;);if(512&f.flags&&(f.check=r(f.check,I,V,T)),E-=V,T+=V,d)break e}else f.head&&(f.head.name=null);f.length=0,f.mode=8;case 8:if(4096&f.flags){if(E===0)break e;for(V=0;d=I[T+V++],f.head&&d&&f.length<65536&&(f.head.comment+=String.fromCharCode(d)),d&&V<E;);if(512&f.flags&&(f.check=r(f.check,I,V,T)),E-=V,T+=V,d)break e}else f.head&&(f.head.comment=null);f.mode=9;case 9:if(512&f.flags){for(;k<16;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(B!==(65535&f.check)){v.msg="header crc mismatch",f.mode=30;break}k=B=0}f.head&&(f.head.hcrc=f.flags>>9&1,f.head.done=!0),v.adler=f.check=0,f.mode=12;break;case 10:for(;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}v.adler=f.check=g(B),k=B=0,f.mode=11;case 11:if(f.havedict===0)return v.next_out=Y,v.avail_out=W,v.next_in=T,v.avail_in=E,f.hold=B,f.bits=k,2;v.adler=f.check=1,f.mode=12;case 12:if(z===5||z===6)break e;case 13:if(f.last){B>>>=7&k,k-=7&k,f.mode=27;break}for(;k<3;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}switch(f.last=1&B,k-=1,3&(B>>>=1)){case 0:f.mode=14;break;case 1:if(j(f),f.mode=20,z!==6)break;B>>>=2,k-=2;break e;case 2:f.mode=17;break;case 3:v.msg="invalid block type",f.mode=30}B>>>=2,k-=2;break;case 14:for(B>>>=7&k,k-=7&k;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if((65535&B)!=(B>>>16^65535)){v.msg="invalid stored block lengths",f.mode=30;break}if(f.length=65535&B,k=B=0,f.mode=15,z===6)break e;case 15:f.mode=16;case 16:if(V=f.length){if(E<V&&(V=E),W<V&&(V=W),V===0)break e;i.arraySet(q,I,T,V,Y),E-=V,T+=V,W-=V,Y+=V,f.length-=V;break}f.mode=12;break;case 17:for(;k<14;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(f.nlen=257+(31&B),B>>>=5,k-=5,f.ndist=1+(31&B),B>>>=5,k-=5,f.ncode=4+(15&B),B>>>=4,k-=4,286<f.nlen||30<f.ndist){v.msg="too many length or distance symbols",f.mode=30;break}f.have=0,f.mode=18;case 18:for(;f.have<f.ncode;){for(;k<3;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.lens[L[f.have++]]=7&B,B>>>=3,k-=3}for(;f.have<19;)f.lens[L[f.have++]]=0;if(f.lencode=f.lendyn,f.lenbits=7,P={bits:f.lenbits},U=o(0,f.lens,0,19,f.lencode,0,f.work,P),f.lenbits=P.bits,U){v.msg="invalid code lengths set",f.mode=30;break}f.have=0,f.mode=19;case 19:for(;f.have<f.nlen+f.ndist;){for(;re=(x=f.lencode[B&(1<<f.lenbits)-1])>>>16&255,se=65535&x,!((ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(se<16)B>>>=ee,k-=ee,f.lens[f.have++]=se;else{if(se===16){for(y=ee+2;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(B>>>=ee,k-=ee,f.have===0){v.msg="invalid bit length repeat",f.mode=30;break}d=f.lens[f.have-1],V=3+(3&B),B>>>=2,k-=2}else if(se===17){for(y=ee+3;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}k-=ee,d=0,V=3+(7&(B>>>=ee)),B>>>=3,k-=3}else{for(y=ee+7;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}k-=ee,d=0,V=11+(127&(B>>>=ee)),B>>>=7,k-=7}if(f.have+V>f.nlen+f.ndist){v.msg="invalid bit length repeat",f.mode=30;break}for(;V--;)f.lens[f.have++]=d}}if(f.mode===30)break;if(f.lens[256]===0){v.msg="invalid code -- missing end-of-block",f.mode=30;break}if(f.lenbits=9,P={bits:f.lenbits},U=o(u,f.lens,0,f.nlen,f.lencode,0,f.work,P),f.lenbits=P.bits,U){v.msg="invalid literal/lengths set",f.mode=30;break}if(f.distbits=6,f.distcode=f.distdyn,P={bits:f.distbits},U=o(h,f.lens,f.nlen,f.ndist,f.distcode,0,f.work,P),f.distbits=P.bits,U){v.msg="invalid distances set",f.mode=30;break}if(f.mode=20,z===6)break e;case 20:f.mode=21;case 21:if(6<=E&&258<=W){v.next_out=Y,v.avail_out=W,v.next_in=T,v.avail_in=E,f.hold=B,f.bits=k,a(v,G),Y=v.next_out,q=v.output,W=v.avail_out,T=v.next_in,I=v.input,E=v.avail_in,B=f.hold,k=f.bits,f.mode===12&&(f.back=-1);break}for(f.back=0;re=(x=f.lencode[B&(1<<f.lenbits)-1])>>>16&255,se=65535&x,!((ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(re&&!(240&re)){for(ne=ee,he=re,de=se;re=(x=f.lencode[de+((B&(1<<ne+he)-1)>>ne)])>>>16&255,se=65535&x,!(ne+(ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}B>>>=ne,k-=ne,f.back+=ne}if(B>>>=ee,k-=ee,f.back+=ee,f.length=se,re===0){f.mode=26;break}if(32&re){f.back=-1,f.mode=12;break}if(64&re){v.msg="invalid literal/length code",f.mode=30;break}f.extra=15&re,f.mode=22;case 22:if(f.extra){for(y=f.extra;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.length+=B&(1<<f.extra)-1,B>>>=f.extra,k-=f.extra,f.back+=f.extra}f.was=f.length,f.mode=23;case 23:for(;re=(x=f.distcode[B&(1<<f.distbits)-1])>>>16&255,se=65535&x,!((ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(!(240&re)){for(ne=ee,he=re,de=se;re=(x=f.distcode[de+((B&(1<<ne+he)-1)>>ne)])>>>16&255,se=65535&x,!(ne+(ee=x>>>24)<=k);){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}B>>>=ne,k-=ne,f.back+=ne}if(B>>>=ee,k-=ee,f.back+=ee,64&re){v.msg="invalid distance code",f.mode=30;break}f.offset=se,f.extra=15&re,f.mode=24;case 24:if(f.extra){for(y=f.extra;k<y;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}f.offset+=B&(1<<f.extra)-1,B>>>=f.extra,k-=f.extra,f.back+=f.extra}if(f.offset>f.dmax){v.msg="invalid distance too far back",f.mode=30;break}f.mode=25;case 25:if(W===0)break e;if(V=G-W,f.offset>V){if((V=f.offset-V)>f.whave&&f.sane){v.msg="invalid distance too far back",f.mode=30;break}X=V>f.wnext?(V-=f.wnext,f.wsize-V):f.wnext-V,V>f.length&&(V=f.length),$=f.window}else $=q,X=Y-f.offset,V=f.length;for(W<V&&(V=W),W-=V,f.length-=V;q[Y++]=$[X++],--V;);f.length===0&&(f.mode=21);break;case 26:if(W===0)break e;q[Y++]=f.length,W--,f.mode=21;break;case 27:if(f.wrap){for(;k<32;){if(E===0)break e;E--,B|=I[T++]<<k,k+=8}if(G-=W,v.total_out+=G,f.total+=G,G&&(v.adler=f.check=f.flags?r(f.check,q,G,Y-G):n(f.check,q,G,Y-G)),G=W,(f.flags?B:g(B))!==f.check){v.msg="incorrect data check",f.mode=30;break}k=B=0}f.mode=28;case 28:if(f.wrap&&f.flags){for(;k<32;){if(E===0)break e;E--,B+=I[T++]<<k,k+=8}if(B!==(4294967295&f.total)){v.msg="incorrect length check",f.mode=30;break}k=B=0}f.mode=29;case 29:U=1;break e;case 30:U=-3;break e;case 31:return-4;case 32:default:return c}return v.next_out=Y,v.avail_out=W,v.next_in=T,v.avail_in=E,f.hold=B,f.bits=k,(f.wsize||G!==v.avail_out&&f.mode<30&&(f.mode<27||z!==4))&&Q(v,v.output,v.next_out,G-v.avail_out)?(f.mode=31,-4):(S-=v.avail_in,G-=v.avail_out,v.total_in+=S,v.total_out+=G,f.total+=G,f.wrap&&G&&(v.adler=f.check=f.flags?r(f.check,q,G,v.next_out-G):n(f.check,q,G,v.next_out-G)),v.data_type=f.bits+(f.last?64:0)+(f.mode===12?128:0)+(f.mode===20||f.mode===15?256:0),(S==0&&G===0||z===4)&&U===l&&(U=-5),U)},t.inflateEnd=function(v){if(!v||!v.state)return c;var z=v.state;return z.window&&(z.window=null),v.state=null,l},t.inflateGetHeader=function(v,z){var f;return v&&v.state&&2&(f=v.state).wrap?((f.head=z).done=!1,l):c},t.inflateSetDictionary=function(v,z){var f,I=z.length;return v&&v.state?(f=v.state).wrap!==0&&f.mode!==11?c:f.mode===11&&n(1,z,I,0)!==f.check?-3:Q(v,z,I,I)?(f.mode=31,-4):(f.havedict=1,l):c},t.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(s,e,t){"use strict";var i=s("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(u,h,l,c,A,p,m,g){var b,w,D,_,Z,R,O,F,j,Q=g.bits,v=0,z=0,f=0,I=0,q=0,T=0,Y=0,E=0,W=0,B=0,k=null,S=0,G=new i.Buf16(16),V=new i.Buf16(16),X=null,$=0;for(v=0;v<=15;v++)G[v]=0;for(z=0;z<c;z++)G[h[l+z]]++;for(q=Q,I=15;1<=I&&G[I]===0;I--);if(I<q&&(q=I),I===0)return A[p++]=20971520,A[p++]=20971520,g.bits=1,0;for(f=1;f<I&&G[f]===0;f++);for(q<f&&(q=f),v=E=1;v<=15;v++)if(E<<=1,(E-=G[v])<0)return-1;if(0<E&&(u===0||I!==1))return-1;for(V[1]=0,v=1;v<15;v++)V[v+1]=V[v]+G[v];for(z=0;z<c;z++)h[l+z]!==0&&(m[V[h[l+z]]++]=z);if(R=u===0?(k=X=m,19):u===1?(k=n,S-=257,X=r,$-=257,256):(k=a,X=o,-1),v=f,Z=p,Y=z=B=0,D=-1,_=(W=1<<(T=q))-1,u===1&&852<W||u===2&&592<W)return 1;for(;;){for(O=v-Y,j=m[z]<R?(F=0,m[z]):m[z]>R?(F=X[$+m[z]],k[S+m[z]]):(F=96,0),b=1<<v-Y,f=w=1<<T;A[Z+(B>>Y)+(w-=b)]=O<<24|F<<16|j|0,w!==0;);for(b=1<<v-1;B&b;)b>>=1;if(b!==0?(B&=b-1,B+=b):B=0,z++,--G[v]==0){if(v===I)break;v=h[l+m[z]]}if(q<v&&(B&_)!==D){for(Y===0&&(Y=q),Z+=f,E=1<<(T=v-Y);T+Y<I&&!((E-=G[T+Y])<=0);)T++,E<<=1;if(W+=1<<T,u===1&&852<W||u===2&&592<W)return 1;A[D=B&_]=q<<24|T<<16|Z-p|0}}return B!==0&&(A[Z+B]=v-Y<<24|64<<16|0),g.bits=q,0}},{"../utils/common":41}],51:[function(s,e,t){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(s,e,t){"use strict";var i=s("../utils/common"),n=0,r=1;function a(x){for(var C=x.length;0<=--C;)x[C]=0}var o=0,u=29,h=256,l=h+1+u,c=30,A=19,p=2*l+1,m=15,g=16,b=7,w=256,D=16,_=17,Z=18,R=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],O=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],F=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],j=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Q=new Array(2*(l+2));a(Q);var v=new Array(2*c);a(v);var z=new Array(512);a(z);var f=new Array(256);a(f);var I=new Array(u);a(I);var q,T,Y,E=new Array(c);function W(x,C,L,M,N){this.static_tree=x,this.extra_bits=C,this.extra_base=L,this.elems=M,this.max_length=N,this.has_stree=x&&x.length}function B(x,C){this.dyn_tree=x,this.max_code=0,this.stat_desc=C}function k(x){return x<256?z[x]:z[256+(x>>>7)]}function S(x,C){x.pending_buf[x.pending++]=255&C,x.pending_buf[x.pending++]=C>>>8&255}function G(x,C,L){x.bi_valid>g-L?(x.bi_buf|=C<<x.bi_valid&65535,S(x,x.bi_buf),x.bi_buf=C>>g-x.bi_valid,x.bi_valid+=L-g):(x.bi_buf|=C<<x.bi_valid&65535,x.bi_valid+=L)}function V(x,C,L){G(x,L[2*C],L[2*C+1])}function X(x,C){for(var L=0;L|=1&x,x>>>=1,L<<=1,0<--C;);return L>>>1}function $(x,C,L){var M,N,H=new Array(m+1),K=0;for(M=1;M<=m;M++)H[M]=K=K+L[M-1]<<1;for(N=0;N<=C;N++){var J=x[2*N+1];J!==0&&(x[2*N]=X(H[J]++,J))}}function ee(x){var C;for(C=0;C<l;C++)x.dyn_ltree[2*C]=0;for(C=0;C<c;C++)x.dyn_dtree[2*C]=0;for(C=0;C<A;C++)x.bl_tree[2*C]=0;x.dyn_ltree[2*w]=1,x.opt_len=x.static_len=0,x.last_lit=x.matches=0}function re(x){8<x.bi_valid?S(x,x.bi_buf):0<x.bi_valid&&(x.pending_buf[x.pending++]=x.bi_buf),x.bi_buf=0,x.bi_valid=0}function se(x,C,L,M){var N=2*C,H=2*L;return x[N]<x[H]||x[N]===x[H]&&M[C]<=M[L]}function ne(x,C,L){for(var M=x.heap[L],N=L<<1;N<=x.heap_len&&(N<x.heap_len&&se(C,x.heap[N+1],x.heap[N],x.depth)&&N++,!se(C,M,x.heap[N],x.depth));)x.heap[L]=x.heap[N],L=N,N<<=1;x.heap[L]=M}function he(x,C,L){var M,N,H,K,J=0;if(x.last_lit!==0)for(;M=x.pending_buf[x.d_buf+2*J]<<8|x.pending_buf[x.d_buf+2*J+1],N=x.pending_buf[x.l_buf+J],J++,M===0?V(x,N,C):(V(x,(H=f[N])+h+1,C),(K=R[H])!==0&&G(x,N-=I[H],K),V(x,H=k(--M),L),(K=O[H])!==0&&G(x,M-=E[H],K)),J<x.last_lit;);V(x,w,C)}function de(x,C){var L,M,N,H=C.dyn_tree,K=C.stat_desc.static_tree,J=C.stat_desc.has_stree,te=C.stat_desc.elems,ce=-1;for(x.heap_len=0,x.heap_max=p,L=0;L<te;L++)H[2*L]!==0?(x.heap[++x.heap_len]=ce=L,x.depth[L]=0):H[2*L+1]=0;for(;x.heap_len<2;)H[2*(N=x.heap[++x.heap_len]=ce<2?++ce:0)]=1,x.depth[N]=0,x.opt_len--,J&&(x.static_len-=K[2*N+1]);for(C.max_code=ce,L=x.heap_len>>1;1<=L;L--)ne(x,H,L);for(N=te;L=x.heap[1],x.heap[1]=x.heap[x.heap_len--],ne(x,H,1),M=x.heap[1],x.heap[--x.heap_max]=L,x.heap[--x.heap_max]=M,H[2*N]=H[2*L]+H[2*M],x.depth[N]=(x.depth[L]>=x.depth[M]?x.depth[L]:x.depth[M])+1,H[2*L+1]=H[2*M+1]=N,x.heap[1]=N++,ne(x,H,1),2<=x.heap_len;);x.heap[--x.heap_max]=x.heap[1],function(ae,ye){var Me,_e,Oe,pe,st,Bt,Ce=ye.dyn_tree,mr=ye.max_code,Ei=ye.stat_desc.static_tree,Bi=ye.stat_desc.has_stree,Ii=ye.stat_desc.extra_bits,gr=ye.stat_desc.extra_base,je=ye.stat_desc.max_length,at=0;for(pe=0;pe<=m;pe++)ae.bl_count[pe]=0;for(Ce[2*ae.heap[ae.heap_max]+1]=0,Me=ae.heap_max+1;Me<p;Me++)je<(pe=Ce[2*Ce[2*(_e=ae.heap[Me])+1]+1]+1)&&(pe=je,at++),Ce[2*_e+1]=pe,mr<_e||(ae.bl_count[pe]++,st=0,gr<=_e&&(st=Ii[_e-gr]),Bt=Ce[2*_e],ae.opt_len+=Bt*(pe+st),Bi&&(ae.static_len+=Bt*(Ei[2*_e+1]+st)));if(at!==0){do{for(pe=je-1;ae.bl_count[pe]===0;)pe--;ae.bl_count[pe]--,ae.bl_count[pe+1]+=2,ae.bl_count[je]--,at-=2}while(0<at);for(pe=je;pe!==0;pe--)for(_e=ae.bl_count[pe];_e!==0;)mr<(Oe=ae.heap[--Me])||(Ce[2*Oe+1]!==pe&&(ae.opt_len+=(pe-Ce[2*Oe+1])*Ce[2*Oe],Ce[2*Oe+1]=pe),_e--)}}(x,C),$(H,ce,x.bl_count)}function d(x,C,L){var M,N,H=-1,K=C[1],J=0,te=7,ce=4;for(K===0&&(te=138,ce=3),C[2*(L+1)+1]=65535,M=0;M<=L;M++)N=K,K=C[2*(M+1)+1],++J<te&&N===K||(J<ce?x.bl_tree[2*N]+=J:N!==0?(N!==H&&x.bl_tree[2*N]++,x.bl_tree[2*D]++):J<=10?x.bl_tree[2*_]++:x.bl_tree[2*Z]++,H=N,ce=(J=0)===K?(te=138,3):N===K?(te=6,3):(te=7,4))}function U(x,C,L){var M,N,H=-1,K=C[1],J=0,te=7,ce=4;for(K===0&&(te=138,ce=3),M=0;M<=L;M++)if(N=K,K=C[2*(M+1)+1],!(++J<te&&N===K)){if(J<ce)for(;V(x,N,x.bl_tree),--J!=0;);else N!==0?(N!==H&&(V(x,N,x.bl_tree),J--),V(x,D,x.bl_tree),G(x,J-3,2)):J<=10?(V(x,_,x.bl_tree),G(x,J-3,3)):(V(x,Z,x.bl_tree),G(x,J-11,7));H=N,ce=(J=0)===K?(te=138,3):N===K?(te=6,3):(te=7,4)}}a(E);var P=!1;function y(x,C,L,M){G(x,(o<<1)+(M?1:0),3),function(N,H,K,J){re(N),J&&(S(N,K),S(N,~K)),i.arraySet(N.pending_buf,N.window,H,K,N.pending),N.pending+=K}(x,C,L,!0)}t._tr_init=function(x){P||(function(){var C,L,M,N,H,K=new Array(m+1);for(N=M=0;N<u-1;N++)for(I[N]=M,C=0;C<1<<R[N];C++)f[M++]=N;for(f[M-1]=N,N=H=0;N<16;N++)for(E[N]=H,C=0;C<1<<O[N];C++)z[H++]=N;for(H>>=7;N<c;N++)for(E[N]=H<<7,C=0;C<1<<O[N]-7;C++)z[256+H++]=N;for(L=0;L<=m;L++)K[L]=0;for(C=0;C<=143;)Q[2*C+1]=8,C++,K[8]++;for(;C<=255;)Q[2*C+1]=9,C++,K[9]++;for(;C<=279;)Q[2*C+1]=7,C++,K[7]++;for(;C<=287;)Q[2*C+1]=8,C++,K[8]++;for($(Q,l+1,K),C=0;C<c;C++)v[2*C+1]=5,v[2*C]=X(C,5);q=new W(Q,R,h+1,l,m),T=new W(v,O,0,c,m),Y=new W(new Array(0),F,0,A,b)}(),P=!0),x.l_desc=new B(x.dyn_ltree,q),x.d_desc=new B(x.dyn_dtree,T),x.bl_desc=new B(x.bl_tree,Y),x.bi_buf=0,x.bi_valid=0,ee(x)},t._tr_stored_block=y,t._tr_flush_block=function(x,C,L,M){var N,H,K=0;0<x.level?(x.strm.data_type===2&&(x.strm.data_type=function(J){var te,ce=4093624447;for(te=0;te<=31;te++,ce>>>=1)if(1&ce&&J.dyn_ltree[2*te]!==0)return n;if(J.dyn_ltree[18]!==0||J.dyn_ltree[20]!==0||J.dyn_ltree[26]!==0)return r;for(te=32;te<h;te++)if(J.dyn_ltree[2*te]!==0)return r;return n}(x)),de(x,x.l_desc),de(x,x.d_desc),K=function(J){var te;for(d(J,J.dyn_ltree,J.l_desc.max_code),d(J,J.dyn_dtree,J.d_desc.max_code),de(J,J.bl_desc),te=A-1;3<=te&&J.bl_tree[2*j[te]+1]===0;te--);return J.opt_len+=3*(te+1)+5+5+4,te}(x),N=x.opt_len+3+7>>>3,(H=x.static_len+3+7>>>3)<=N&&(N=H)):N=H=L+5,L+4<=N&&C!==-1?y(x,C,L,M):x.strategy===4||H===N?(G(x,2+(M?1:0),3),he(x,Q,v)):(G(x,4+(M?1:0),3),function(J,te,ce,ae){var ye;for(G(J,te-257,5),G(J,ce-1,5),G(J,ae-4,4),ye=0;ye<ae;ye++)G(J,J.bl_tree[2*j[ye]+1],3);U(J,J.dyn_ltree,te-1),U(J,J.dyn_dtree,ce-1)}(x,x.l_desc.max_code+1,x.d_desc.max_code+1,K+1),he(x,x.dyn_ltree,x.dyn_dtree)),ee(x),M&&re(x)},t._tr_tally=function(x,C,L){return x.pending_buf[x.d_buf+2*x.last_lit]=C>>>8&255,x.pending_buf[x.d_buf+2*x.last_lit+1]=255&C,x.pending_buf[x.l_buf+x.last_lit]=255&L,x.last_lit++,C===0?x.dyn_ltree[2*L]++:(x.matches++,C--,x.dyn_ltree[2*(f[L]+h+1)]++,x.dyn_dtree[2*k(C)]++),x.last_lit===x.lit_bufsize-1},t._tr_align=function(x){G(x,2,3),V(x,w,Q),function(C){C.bi_valid===16?(S(C,C.bi_buf),C.bi_buf=0,C.bi_valid=0):8<=C.bi_valid&&(C.pending_buf[C.pending++]=255&C.bi_buf,C.bi_buf>>=8,C.bi_valid-=8)}(x)}},{"../utils/common":41}],53:[function(s,e,t){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(s,e,t){(function(i){(function(n,r){"use strict";if(!n.setImmediate){var a,o,u,h,l=1,c={},A=!1,p=n.document,m=Object.getPrototypeOf&&Object.getPrototypeOf(n);m=m&&m.setTimeout?m:n,a={}.toString.call(n.process)==="[object process]"?function(D){process.nextTick(function(){b(D)})}:function(){if(n.postMessage&&!n.importScripts){var D=!0,_=n.onmessage;return n.onmessage=function(){D=!1},n.postMessage("","*"),n.onmessage=_,D}}()?(h="setImmediate$"+Math.random()+"$",n.addEventListener?n.addEventListener("message",w,!1):n.attachEvent("onmessage",w),function(D){n.postMessage(h+D,"*")}):n.MessageChannel?((u=new MessageChannel).port1.onmessage=function(D){b(D.data)},function(D){u.port2.postMessage(D)}):p&&"onreadystatechange"in p.createElement("script")?(o=p.documentElement,function(D){var _=p.createElement("script");_.onreadystatechange=function(){b(D),_.onreadystatechange=null,o.removeChild(_),_=null},o.appendChild(_)}):function(D){setTimeout(b,0,D)},m.setImmediate=function(D){typeof D!="function"&&(D=new Function(""+D));for(var _=new Array(arguments.length-1),Z=0;Z<_.length;Z++)_[Z]=arguments[Z+1];var R={callback:D,args:_};return c[l]=R,a(l),l++},m.clearImmediate=g}function g(D){delete c[D]}function b(D){if(A)setTimeout(b,0,D);else{var _=c[D];if(_){A=!0;try{(function(Z){var R=Z.callback,O=Z.args;switch(O.length){case 0:R();break;case 1:R(O[0]);break;case 2:R(O[0],O[1]);break;case 3:R(O[0],O[1],O[2]);break;default:R.apply(r,O)}})(_)}finally{g(D),A=!1}}}}function w(D){D.source===n&&typeof D.data=="string"&&D.data.indexOf(h)===0&&b(+D.data.slice(h.length))}})(typeof self>"u"?i===void 0?this:i:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})});var Pt=ge(Ee=>{"use strict";var yr=":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD",Wi=yr+"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040",wr="["+yr+"]["+Wi+"]*",Vi=new RegExp("^"+wr+"$"),Mi=function(s,e){let t=[],i=e.exec(s);for(;i;){let n=[];n.startIndex=e.lastIndex-i[0].length;let r=i.length;for(let a=0;a<r;a++)n.push(i[a]);t.push(n),i=e.exec(s)}return t},Oi=function(s){let e=Vi.exec(s);return!(e===null||typeof e>"u")};Ee.isExist=function(s){return typeof s<"u"};Ee.isEmptyObject=function(s){return Object.keys(s).length===0};Ee.merge=function(s,e,t){if(e){let i=Object.keys(e),n=i.length;for(let r=0;r<n;r++)t==="strict"?s[i[r]]=[e[i[r]]]:s[i[r]]=e[i[r]]}};Ee.getValue=function(s){return Ee.isExist(s)?s:""};Ee.isName=Oi;Ee.getAllMatches=Mi;Ee.nameRegexp=wr});var Zt=ge(Er=>{"use strict";var Rt=Pt(),ji={allowBooleanAttributes:!1,unpairedTags:[]};Er.validate=function(s,e){e=Object.assign({},ji,e);let t=[],i=!1,n=!1;s[0]==="\\uFEFF"&&(s=s.substr(1));for(let r=0;r<s.length;r++)if(s[r]==="<"&&s[r+1]==="?"){if(r+=2,r=Dr(s,r),r.err)return r}else if(s[r]==="<"){let a=r;if(r++,s[r]==="!"){r=vr(s,r);continue}else{let o=!1;s[r]==="/"&&(o=!0,r++);let u="";for(;r<s.length&&s[r]!==">"&&s[r]!==" "&&s[r]!==" "&&s[r]!==`\n`&&s[r]!=="\\r";r++)u+=s[r];if(u=u.trim(),u[u.length-1]==="/"&&(u=u.substring(0,u.length-1),r--),!Ki(u)){let c;return u.trim().length===0?c="Invalid space after \'<\'.":c="Tag \'"+u+"\' is an invalid name.",fe("InvalidTag",c,Ae(s,r))}let h=Hi(s,r);if(h===!1)return fe("InvalidAttr","Attributes for \'"+u+"\' have open quote.",Ae(s,r));let l=h.value;if(r=h.index,l[l.length-1]==="/"){let c=r-l.length;l=l.substring(0,l.length-1);let A=Cr(l,e);if(A===!0)i=!0;else return fe(A.err.code,A.err.msg,Ae(s,c+A.err.line))}else if(o)if(h.tagClosed){if(l.trim().length>0)return fe("InvalidTag","Closing tag \'"+u+"\' can\'t have attributes or invalid starting.",Ae(s,a));{let c=t.pop();if(u!==c.tagName){let A=Ae(s,c.tagStartPos);return fe("InvalidTag","Expected closing tag \'"+c.tagName+"\' (opened in line "+A.line+", col "+A.col+") instead of closing tag \'"+u+"\'.",Ae(s,a))}t.length==0&&(n=!0)}}else return fe("InvalidTag","Closing tag \'"+u+"\' doesn\'t have proper closing.",Ae(s,r));else{let c=Cr(l,e);if(c!==!0)return fe(c.err.code,c.err.msg,Ae(s,r-l.length+c.err.line));if(n===!0)return fe("InvalidXml","Multiple possible root nodes found.",Ae(s,r));e.unpairedTags.indexOf(u)!==-1||t.push({tagName:u,tagStartPos:a}),i=!0}for(r++;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="!"){r++,r=vr(s,r);continue}else if(s[r+1]==="?"){if(r=Dr(s,++r),r.err)return r}else break;else if(s[r]==="&"){let c=Xi(s,r);if(c==-1)return fe("InvalidChar","char \'&\' is not expected.",Ae(s,r));r=c}else if(n===!0&&!_r(s[r]))return fe("InvalidXml","Extra text at the end",Ae(s,r));s[r]==="<"&&r--}}else{if(_r(s[r]))continue;return fe("InvalidChar","char \'"+s[r]+"\' is not expected.",Ae(s,r))}if(i){if(t.length==1)return fe("InvalidTag","Unclosed tag \'"+t[0].tagName+"\'.",Ae(s,t[0].tagStartPos));if(t.length>0)return fe("InvalidXml","Invalid \'"+JSON.stringify(t.map(r=>r.tagName),null,4).replace(/\\r?\\n/g,"")+"\' found.",{line:1,col:1})}else return fe("InvalidXml","Start tag expected.",1);return!0};function _r(s){return s===" "||s===" "||s===`\n`||s==="\\r"}function Dr(s,e){let t=e;for(;e<s.length;e++)if(s[e]=="?"||s[e]==" "){let i=s.substr(t,e-t);if(e>5&&i==="xml")return fe("InvalidXml","XML declaration allowed only at the start of the document.",Ae(s,e));if(s[e]=="?"&&s[e+1]==">"){e++;break}else continue}return e}function vr(s,e){if(s.length>e+5&&s[e+1]==="-"&&s[e+2]==="-"){for(e+=3;e<s.length;e++)if(s[e]==="-"&&s[e+1]==="-"&&s[e+2]===">"){e+=2;break}}else if(s.length>e+8&&s[e+1]==="D"&&s[e+2]==="O"&&s[e+3]==="C"&&s[e+4]==="T"&&s[e+5]==="Y"&&s[e+6]==="P"&&s[e+7]==="E"){let t=1;for(e+=8;e<s.length;e++)if(s[e]==="<")t++;else if(s[e]===">"&&(t--,t===0))break}else if(s.length>e+9&&s[e+1]==="["&&s[e+2]==="C"&&s[e+3]==="D"&&s[e+4]==="A"&&s[e+5]==="T"&&s[e+6]==="A"&&s[e+7]==="["){for(e+=8;e<s.length;e++)if(s[e]==="]"&&s[e+1]==="]"&&s[e+2]===">"){e+=2;break}}return e}var Yi=\'"\',$i="\'";function Hi(s,e){let t="",i="",n=!1;for(;e<s.length;e++){if(s[e]===Yi||s[e]===$i)i===""?i=s[e]:i!==s[e]||(i="");else if(s[e]===">"&&i===""){n=!0;break}t+=s[e]}return i!==""?!1:{value:t,index:e,tagClosed:n}}var qi=new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\'"])(([\\\\s\\\\S])*?)\\\\5)?`,"g");function Cr(s,e){let t=Rt.getAllMatches(s,qi),i={};for(let n=0;n<t.length;n++){if(t[n][1].length===0)return fe("InvalidAttr","Attribute \'"+t[n][2]+"\' has no space in starting.",qe(t[n]));if(t[n][3]!==void 0&&t[n][4]===void 0)return fe("InvalidAttr","Attribute \'"+t[n][2]+"\' is without value.",qe(t[n]));if(t[n][3]===void 0&&!e.allowBooleanAttributes)return fe("InvalidAttr","boolean attribute \'"+t[n][2]+"\' is not allowed.",qe(t[n]));let r=t[n][2];if(!Qi(r))return fe("InvalidAttr","Attribute \'"+r+"\' is an invalid name.",qe(t[n]));if(!i.hasOwnProperty(r))i[r]=1;else return fe("InvalidAttr","Attribute \'"+r+"\' is repeated.",qe(t[n]))}return!0}function Ji(s,e){let t=/\\d/;for(s[e]==="x"&&(e++,t=/[\\da-fA-F]/);e<s.length;e++){if(s[e]===";")return e;if(!s[e].match(t))break}return-1}function Xi(s,e){if(e++,s[e]===";")return-1;if(s[e]==="#")return e++,Ji(s,e);let t=0;for(;e<s.length;e++,t++)if(!(s[e].match(/\\w/)&&t<20)){if(s[e]===";")break;return-1}return e}function fe(s,e,t){return{err:{code:s,msg:e,line:t.line||t,col:t.col}}}function Qi(s){return Rt.isName(s)}function Ki(s){return Rt.isName(s)}function Ae(s,e){let t=s.substring(0,e).split(/\\r?\\n/);return{line:t.length,col:t[t.length-1].length+1}}function qe(s){return s.startIndex+s[1].length}});var Ir=ge(zt=>{var Br={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0},tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1},en=function(s){return Object.assign({},Br,s)};zt.buildOptions=en;zt.defaultOptions=Br});var Nr=ge((Ca,kr)=>{"use strict";var Lt=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){this.child.push({[e]:t})}addChild(e){e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,[":@"]:e[":@"]}):this.child.push({[e.tagname]:e.child})}};kr.exports=Lt});var Fr=ge((Ea,Sr)=>{function tn(s,e){let t={};if(s[e+3]==="O"&&s[e+4]==="C"&&s[e+5]==="T"&&s[e+6]==="Y"&&s[e+7]==="P"&&s[e+8]==="E"){e=e+9;let i=1,n=!1,r=!1,a=!1,o="";for(;e<s.length;e++)if(s[e]==="<"){if(n&&s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="N"&&s[e+4]==="T"&&s[e+5]==="I"&&s[e+6]==="T"&&s[e+7]==="Y")e+=7,r=!0;else if(n&&s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="L"&&s[e+4]==="E"&&s[e+5]==="M"&&s[e+6]==="E"&&s[e+7]==="N"&&s[e+8]==="T")e+=8;else if(n&&s[e+1]==="!"&&s[e+2]==="A"&&s[e+3]==="T"&&s[e+4]==="T"&&s[e+5]==="L"&&s[e+6]==="I"&&s[e+7]==="S"&&s[e+8]==="T")e+=8;else if(n&&s[e+1]==="!"&&s[e+2]==="N"&&s[e+3]==="O"&&s[e+4]==="T"&&s[e+5]==="A"&&s[e+6]==="T"&&s[e+7]==="I"&&s[e+8]==="O"&&s[e+9]==="N")e+=9;else if(s[e+1]==="!"&&s[e+2]==="-"&&s[e+3]==="-")a=!0;else throw new Error("Invalid DOCTYPE");i++,o=""}else if(s[e]===">"){if(a)if(s[e-1]==="-"&&s[e-2]==="-")a=!1;else throw new Error("Invalid XML comment in DOCTYPE");else r&&(nn(o,t),r=!1);if(i--,i===0)break}else s[e]==="["?n=!0:o+=s[e];if(i!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:t,i:e}}var rn=RegExp(`^\\\\s([a-zA-z0-0]+)[ ]([\'"])([^&]+)\\\\2`);function nn(s,e){let t=rn.exec(s);t&&(e[t[1]]={regx:RegExp(`&${t[1]};`,"g"),val:t[3]})}Sr.exports=tn});var Pr=ge((Ba,Tr)=>{var sn=/^[-+]?0x[a-fA-F0-9]+$/,an=/^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);var on={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function un(s,e={}){if(e=Object.assign({},on,e),!s||typeof s!="string")return s;let t=s.trim();if(e.skipLike!==void 0&&e.skipLike.test(t))return s;if(e.hex&&sn.test(t))return Number.parseInt(t,16);{let i=an.exec(t);if(i){let n=i[1],r=i[2],a=ln(i[3]),o=i[4]||i[6];if(!e.leadingZeros&&r.length>0&&n&&t[2]!==".")return s;if(!e.leadingZeros&&r.length>0&&!n&&t[1]!==".")return s;{let u=Number(t),h=""+u;return h.search(/[eE]/)!==-1||o?e.eNotation?u:s:t.indexOf(".")!==-1?h==="0"&&a===""||h===a||n&&h==="-"+a?u:s:r?a===h||n+a===h?u:s:t===h||t===n+h?u:s}}else return s}}function ln(s){return s&&s.indexOf(".")!==-1&&(s=s.replace(/0+$/,""),s==="."?s="0":s[0]==="."?s="0"+s:s[s.length-1]==="."&&(s=s.substr(0,s.length-1))),s}Tr.exports=un});var Zr=ge((ka,Rr)=>{"use strict";var Vt=Pt(),Je=Nr(),cn=Fr(),dn=Pr(),Ia="<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)".replace(/NAME/g,Vt.nameRegexp),Ut=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"\'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:\'"\'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\\xA2"},pound:{regex:/&(pound|#163);/g,val:"\\xA3"},yen:{regex:/&(yen|#165);/g,val:"\\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\\xA9"},reg:{regex:/&(reg|#174);/g,val:"\\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\\u20B9"}},this.addExternalEntities=hn,this.parseXml=bn,this.parseTextData=pn,this.resolveNameSpace=fn,this.buildAttributesMap=gn,this.isItStopNode=yn,this.replaceEntitiesValue=An,this.readStopNodeData=_n,this.saveTextToParentTag=xn}};function hn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:s[i]}}}function pn(s,e,t,i,n,r,a){if(s!==void 0&&(this.options.trimValues&&!i&&(s=s.trim()),s.length>0)){a||(s=this.replaceEntitiesValue(s));let o=this.options.tagValueProcessor(e,s,t,n,r);return o==null?s:typeof o!=typeof s||o!==s?o:this.options.trimValues?Wt(s,this.options.parseTagValue,this.options.numberParseOptions):s.trim()===s?Wt(s,this.options.parseTagValue,this.options.numberParseOptions):s}}function fn(s){if(this.options.removeNSPrefix){let e=s.split(":"),t=s.charAt(0)==="/"?"/":"";if(e[0]==="xmlns")return"";e.length===2&&(s=t+e[1])}return s}var mn=new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*([\'"])([\\\\s\\\\S]*?)\\\\3)?`,"gm");function gn(s,e){if(!this.options.ignoreAttributes&&typeof s=="string"){let t=Vt.getAllMatches(s,mn),i=t.length,n={};for(let r=0;r<i;r++){let a=this.resolveNameSpace(t[r][1]),o=t[r][4],u=this.options.attributeNamePrefix+a;if(a.length)if(o!==void 0){this.options.trimValues&&(o=o.trim()),o=this.replaceEntitiesValue(o);let h=this.options.attributeValueProcessor(a,o,e);h==null?n[u]=o:typeof h!=typeof o||h!==o?n[u]=h:n[u]=Wt(o,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[u]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){let r={};return r[this.options.attributesGroupName]=n,r}return n}}var bn=function(s){s=s.replace(/\\r\\n?/g,`\n`);let e=new Je("!xml"),t=e,i="",n="";for(let r=0;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="/"){let o=Ze(s,">",r,"Closing Tag is not closed."),u=s.substring(r+2,o).trim();if(this.options.removeNSPrefix){let h=u.indexOf(":");h!==-1&&(u=u.substr(h+1))}this.options.transformTagName&&(u=this.options.transformTagName(u)),t&&(i=this.saveTextToParentTag(i,t,n)),n=n.substr(0,n.lastIndexOf(".")),t=this.tagsNodeStack.pop(),i="",r=o}else if(s[r+1]==="?"){let o=Gt(s,r,!1,"?>");if(!o)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,t,n),!(this.options.ignoreDeclaration&&o.tagName==="?xml"||this.options.ignorePiTags)){let u=new Je(o.tagName);u.add(this.options.textNodeName,""),o.tagName!==o.tagExp&&o.attrExpPresent&&(u[":@"]=this.buildAttributesMap(o.tagExp,n)),t.addChild(u)}r=o.closeIndex+1}else if(s.substr(r+1,3)==="!--"){let o=Ze(s,"-->",r+4,"Comment is not closed.");if(this.options.commentPropName){let u=s.substring(r+4,o-2);i=this.saveTextToParentTag(i,t,n),t.add(this.options.commentPropName,[{[this.options.textNodeName]:u}])}r=o}else if(s.substr(r+1,2)==="!D"){let o=cn(s,r);this.docTypeEntities=o.entities,r=o.i}else if(s.substr(r+1,2)==="!["){let o=Ze(s,"]]>",r,"CDATA is not closed.")-2,u=s.substring(r+9,o);if(i=this.saveTextToParentTag(i,t,n),this.options.cdataPropName)t.add(this.options.cdataPropName,[{[this.options.textNodeName]:u}]);else{let h=this.parseTextData(u,t.tagname,n,!0,!1,!0);h==null&&(h=""),t.add(this.options.textNodeName,h)}r=o+2}else{let o=Gt(s,r,this.options.removeNSPrefix),u=o.tagName,h=o.tagExp,l=o.attrExpPresent,c=o.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),t&&i&&t.tagname!=="!xml"&&(i=this.saveTextToParentTag(i,t,n,!1)),u!==e.tagname&&(n+=n?"."+u:u);let A=t;if(A&&this.options.unpairedTags.indexOf(A.tagname)!==-1&&(t=this.tagsNodeStack.pop()),this.isItStopNode(this.options.stopNodes,n,u)){let p="";if(h.length>0&&h.lastIndexOf("/")===h.length-1)r=o.closeIndex;else if(this.options.unpairedTags.indexOf(u)!==-1)r=o.closeIndex;else{let g=this.readStopNodeData(s,u,c+1);if(!g)throw new Error(`Unexpected end of ${u}`);r=g.i,p=g.tagContent}let m=new Je(u);u!==h&&l&&(m[":@"]=this.buildAttributesMap(h,n)),p&&(p=this.parseTextData(p,u,n,!0,l,!0,!0)),n=n.substr(0,n.lastIndexOf(".")),m.add(this.options.textNodeName,p),t.addChild(m)}else{if(h.length>0&&h.lastIndexOf("/")===h.length-1){u[u.length-1]==="/"?(u=u.substr(0,u.length-1),h=u):h=h.substr(0,h.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));let p=new Je(u);u!==h&&l&&(p[":@"]=this.buildAttributesMap(h,n)),n=n.substr(0,n.lastIndexOf(".")),t.addChild(p)}else{let p=new Je(u);this.tagsNodeStack.push(t),u!==h&&l&&(p[":@"]=this.buildAttributesMap(h,n)),t.addChild(p),t=p}i="",r=c}}else i+=s[r];return e.child},An=function(s){if(this.options.processEntities){for(let e in this.docTypeEntities){let t=this.docTypeEntities[e];s=s.replace(t.regx,t.val)}for(let e in this.lastEntities){let t=this.lastEntities[e];s=s.replace(t.regex,t.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){let t=this.htmlEntities[e];s=s.replace(t.regex,t.val)}s=s.replace(this.ampEntity.regex,this.ampEntity.val)}return s};function xn(s,e,t,i){return s&&(i===void 0&&(i=Object.keys(e.child).length===0),s=this.parseTextData(s,e.tagname,t,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,i),s!==void 0&&s!==""&&e.add(this.options.textNodeName,s),s=""),s}function yn(s,e,t){let i="*."+t;for(let n in s){let r=s[n];if(i===r||e===r)return!0}return!1}function wn(s,e,t=">"){let i,n="";for(let r=e;r<s.length;r++){let a=s[r];if(i)a===i&&(i="");else if(a===\'"\'||a==="\'")i=a;else if(a===t[0])if(t[1]){if(s[r+1]===t[1])return{data:n,index:r}}else return{data:n,index:r};else a===" "&&(a=" ");n+=a}}function Ze(s,e,t,i){let n=s.indexOf(e,t);if(n===-1)throw new Error(i);return n+e.length-1}function Gt(s,e,t,i=">"){let n=wn(s,e+1,i);if(!n)return;let r=n.data,a=n.index,o=r.search(/\\s/),u=r,h=!0;if(o!==-1&&(u=r.substr(0,o).replace(/\\s\\s*$/,""),r=r.substr(o+1)),t){let l=u.indexOf(":");l!==-1&&(u=u.substr(l+1),h=u!==n.data.substr(l+1))}return{tagName:u,tagExp:r,closeIndex:a,attrExpPresent:h}}function _n(s,e,t){let i=t,n=1;for(;t<s.length;t++)if(s[t]==="<")if(s[t+1]==="/"){let r=Ze(s,">",t,`${e} is not closed`);if(s.substring(t+2,r).trim()===e&&(n--,n===0))return{tagContent:s.substring(i,t),i:r};t=r}else if(s[t+1]==="?")t=Ze(s,"?>",t+1,"StopNode is not closed.");else if(s.substr(t+1,3)==="!--")t=Ze(s,"-->",t+3,"StopNode is not closed.");else if(s.substr(t+1,2)==="![")t=Ze(s,"]]>",t,"StopNode is not closed.")-2;else{let r=Gt(s,t,">");r&&((r&&r.tagName)===e&&r.tagExp[r.tagExp.length-1]!=="/"&&n++,t=r.closeIndex)}}function Wt(s,e,t){if(e&&typeof s=="string"){let i=s.trim();return i==="true"?!0:i==="false"?!1:dn(s,t)}else return Vt.isExist(s)?s:""}Rr.exports=Ut});var Ur=ge(Lr=>{"use strict";function Dn(s,e){return zr(s,e)}function zr(s,e,t){let i,n={};for(let r=0;r<s.length;r++){let a=s[r],o=vn(a),u="";if(t===void 0?u=o:u=t+"."+o,o===e.textNodeName)i===void 0?i=a[o]:i+=""+a[o];else{if(o===void 0)continue;if(a[o]){let h=zr(a[o],e,u),l=En(h,e);a[":@"]?Cn(h,a[":@"],u,e):Object.keys(h).length===1&&h[e.textNodeName]!==void 0&&!e.alwaysCreateTextNode?h=h[e.textNodeName]:Object.keys(h).length===0&&(e.alwaysCreateTextNode?h[e.textNodeName]="":h=""),n[o]!==void 0&&n.hasOwnProperty(o)?(Array.isArray(n[o])||(n[o]=[n[o]]),n[o].push(h)):e.isArray(o,u,l)?n[o]=[h]:n[o]=h}}}return typeof i=="string"?i.length>0&&(n[e.textNodeName]=i):i!==void 0&&(n[e.textNodeName]=i),n}function vn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function Cn(s,e,t,i){if(e){let n=Object.keys(e),r=n.length;for(let a=0;a<r;a++){let o=n[a];i.isArray(o,t+"."+o,!0,!0)?s[o]=[e[o]]:s[o]=e[o]}}}function En(s,e){let t=Object.keys(s).length;return!!(t===0||t===1&&s[e.textNodeName])}Lr.prettify=Dn});var Wr=ge((Sa,Gr)=>{var{buildOptions:Bn}=Ir(),In=Zr(),{prettify:kn}=Ur(),Nn=Zt(),Mt=class{constructor(e){this.externalEntities={},this.options=Bn(e)}parse(e,t){if(typeof e!="string")if(e.toString)e=e.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(t){t===!0&&(t={});let r=Nn.validate(e,t);if(r!==!0)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}let i=new In(this.options);i.addExternalEntities(this.externalEntities);let n=i.parseXml(e);return this.options.preserveOrder||n===void 0?n:kn(n,this.options)}addEntity(e,t){if(t.indexOf("&")!==-1)throw new Error("Entity value can\'t have \'&\'");if(e.indexOf("&")!==-1||e.indexOf(";")!==-1)throw new Error("An entity must be set without \'&\' and \';\'. Eg. use \'#xD\' for \'
\'");if(t==="&")throw new Error("An entity with value \'&\' is not permitted");this.externalEntities[e]=t}};Gr.exports=Mt});var Yr=ge((Fa,jr)=>{var Sn=`\n`;function Fn(s,e){return Mr(s,e,"",0)}function Mr(s,e,t,i){let n="",r="";e.format&&e.indentBy.length>0&&(r=Sn+""+e.indentBy.repeat(i));for(let a=0;a<s.length;a++){let o=s[a],u=Tn(o),h="";if(t.length===0?h=u:h=`${t}.${u}`,u===e.textNodeName){let p=o[u];Pn(h,e)||(p=e.tagValueProcessor(u,p),p=Or(p,e)),n+=r+p;continue}else if(u===e.cdataPropName){n+=r+`<![CDATA[${o[u][0][e.textNodeName]}]]>`;continue}else if(u===e.commentPropName){n+=r+`<!--${o[u][0][e.textNodeName]}-->`;continue}else if(u[0]==="?"){let p=Vr(o[":@"],e),m=u==="?xml"?"":r,g=o[u][0][e.textNodeName];g=g.length!==0?" "+g:"",n+=m+`<${u}${g}${p}?>`;continue}let l=Vr(o[":@"],e),c=r+`<${u}${l}`,A=Mr(o[u],e,h,i+1);e.unpairedTags.indexOf(u)!==-1?e.suppressUnpairedNode?n+=c+">":n+=c+"/>":(!A||A.length===0)&&e.suppressEmptyNode?n+=c+"/>":n+=c+`>${A}${r}</${u}>`}return n}function Tn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function Vr(s,e){let t="";if(s&&!e.ignoreAttributes)for(let i in s){let n=e.attributeValueProcessor(i,s[i]);n=Or(n,e),n===!0&&e.suppressBooleanAttributes?t+=` ${i.substr(e.attributeNamePrefix.length)}`:t+=` ${i.substr(e.attributeNamePrefix.length)}="${n}"`}return t}function Pn(s,e){s=s.substr(0,s.length-e.textNodeName.length-1);let t=s.substr(s.lastIndexOf(".")+1);for(let i in e.stopNodes)if(e.stopNodes[i]===s||e.stopNodes[i]==="*."+t)return!0;return!1}function Or(s,e){if(s&&s.length>0&&e.processEntities)for(let t=0;t<e.entities.length;t++){let i=e.entities[t];s=s.replace(i.regex,i.val)}return s}jr.exports=Fn});var Jr=ge((Ta,qr)=>{"use strict";var Rn=Yr(),Zn={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("\'","g"),val:"'"},{regex:new RegExp(\'"\',"g"),val:"""}],processEntities:!0,stopNodes:[],transformTagName:!1};function Ot(s){this.options=Object.assign({},Zn,s),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Mn),this.processTextOrObjNode=Ln,this.options.format?(this.indentate=Vn,this.tagEndChar=`>\n`,this.newLine=`\n`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.suppressEmptyNode?(this.buildTextNode=Wn,this.buildObjNode=Un):(this.buildTextNode=Hr,this.buildObjNode=$r),this.buildTextValNode=Hr,this.buildObjectNode=$r,this.replaceEntitiesValue=Gn,this.buildAttrPairStr=zn}Ot.prototype.build=function(s){return this.options.preserveOrder?Rn(s,this.options):(Array.isArray(s)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(s={[this.options.arrayNodeName]:s}),this.j2x(s,0).val)};Ot.prototype.j2x=function(s,e){let t="",i="";for(let n in s)if(!(typeof s[n]>"u"))if(s[n]===null)n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar;else if(s[n]instanceof Date)i+=this.buildTextNode(s[n],n,"",e);else if(typeof s[n]!="object"){let r=this.isAttribute(n);if(r)t+=this.buildAttrPairStr(r,""+s[n]);else if(n===this.options.textNodeName){let a=this.options.tagValueProcessor(n,""+s[n]);i+=this.replaceEntitiesValue(a)}else i+=this.buildTextNode(s[n],n,"",e)}else if(Array.isArray(s[n])){let r=s[n].length;for(let a=0;a<r;a++){let o=s[n][a];typeof o>"u"||(o===null?n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar:typeof o=="object"?i+=this.processTextOrObjNode(o,n,e):i+=this.buildTextNode(o,n,"",e))}}else if(this.options.attributesGroupName&&n===this.options.attributesGroupName){let r=Object.keys(s[n]),a=r.length;for(let o=0;o<a;o++)t+=this.buildAttrPairStr(r[o],""+s[n][r[o]])}else i+=this.processTextOrObjNode(s[n],n,e);return{attrStr:t,val:i}};function zn(s,e){return e=this.options.attributeValueProcessor(s,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&e==="true"?" "+s:" "+s+\'="\'+e+\'"\'}function Ln(s,e,t){let i=this.j2x(s,t+1);return s[this.options.textNodeName]!==void 0&&Object.keys(s).length===1?this.buildTextNode(s[this.options.textNodeName],e,i.attrStr,t):this.buildObjNode(i.val,e,i.attrStr,t)}function $r(s,e,t,i){let n="</"+e+this.tagEndChar,r="";return e[0]==="?"&&(r="?",n=""),t&&s.indexOf("<")===-1?this.indentate(i)+"<"+e+t+r+">"+s+n:this.options.commentPropName!==!1&&e===this.options.commentPropName&&r.length===0?this.indentate(i)+`<!--${s}-->`+this.newLine:this.indentate(i)+"<"+e+t+r+this.tagEndChar+s+this.indentate(i)+n}function Un(s,e,t,i){return s!==""?this.buildObjectNode(s,e,t,i):e[0]==="?"?this.indentate(i)+"<"+e+t+"?"+this.tagEndChar:this.indentate(i)+"<"+e+t+"/"+this.tagEndChar}function Hr(s,e,t,i){if(this.options.cdataPropName!==!1&&e===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${s}]]>`+this.newLine;if(this.options.commentPropName!==!1&&e===this.options.commentPropName)return this.indentate(i)+`<!--${s}-->`+this.newLine;{let n=this.options.tagValueProcessor(e,s);return n=this.replaceEntitiesValue(n),n===""&&this.options.unpairedTags.indexOf(e)!==-1?this.options.suppressUnpairedNode?this.indentate(i)+"<"+e+this.tagEndChar:this.indentate(i)+"<"+e+"/"+this.tagEndChar:this.indentate(i)+"<"+e+t+">"+n+"</"+e+this.tagEndChar}}function Gn(s){if(s&&s.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){let t=this.options.entities[e];s=s.replace(t.regex,t.val)}return s}function Wn(s,e,t,i){return s===""&&this.options.unpairedTags.indexOf(e)!==-1?this.options.suppressUnpairedNode?this.indentate(i)+"<"+e+this.tagEndChar:this.indentate(i)+"<"+e+"/"+this.tagEndChar:s!==""?this.buildTextValNode(s,e,t,i):e[0]==="?"?this.indentate(i)+"<"+e+t+"?"+this.tagEndChar:this.indentate(i)+"<"+e+t+"/"+this.tagEndChar}function Vn(s){return this.options.indentBy.repeat(s)}function Mn(s){return s.startsWith(this.options.attributeNamePrefix)?s.substr(this.attrPrefixLen):!1}qr.exports=Ot});var dt=ge((Pa,Xr)=>{"use strict";var On=Zt(),jn=Wr(),Yn=Jr();Xr.exports={XMLParser:jn,XMLValidator:On,XMLBuilder:Yn}});var Su=Fe(ut()),vi=Fe(Nt());var lt=s=>{let e=Math.floor((s-5)/7*100+.5)/100;return Math.floor((e*7+5)/7*256)/256},St=s=>Math.floor((256*s+Math.floor(18.285714285714285))/256*7);var Ar="UEsDBAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxEZWZhdWx0IEV4dGVuc2lvbj0ieG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya2Jvb2sueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvdGhlbWUvdGhlbWUxLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZSt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC9zdHlsZXMueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3NoYXJlZFN0cmluZ3MueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9jb3JlLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9hcHAueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIi8+PC9UeXBlcz5QSwMECgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9hcHAueG1sIi8+PFJlbGF0aW9uc2hpcCBJZD0icklkMiIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9jb3JlLnhtbCIvPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQKAAAAAAAAACEAunCeZsoGAADKBgAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE1IHhyIHhyNiB4cjEwIHhyMiIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiIgeG1sbnM6eHI2PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb242IiB4bWxuczp4cjEwPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb24xMCIgeG1sbnM6eHIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvcmV2aXNpb24yIj48ZmlsZVZlcnNpb24gYXBwTmFtZT0ieGwiIGxhc3RFZGl0ZWQ9IjciIGxvd2VzdEVkaXRlZD0iNyIgcnVwQnVpbGQ9IjIxMTI2Ii8+PHdvcmtib29rUHIgZGVmYXVsdFRoZW1lVmVyc2lvbj0iMTY2OTI1Ii8+PG1jOkFsdGVybmF0ZUNvbnRlbnQgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2Ij48bWM6Q2hvaWNlIFJlcXVpcmVzPSJ4MTUiPjx4MTVhYzphYnNQYXRoIHVybD0iSDpcVFJFQlx0cmViLWV4cG9ydFx0ZW1wbGF0ZVwiIHhtbG5zOngxNWFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvYWMiLz48L21jOkNob2ljZT48L21jOkFsdGVybmF0ZUNvbnRlbnQ+PHhyOnJldmlzaW9uUHRyIHJldklETGFzdFNhdmU9IjAiIGRvY3VtZW50SWQ9Ijhfe0Q4NThGOUY3LTBEOTItNEFFNC04QTQyLTQ4MENCMzU5QjYyRH0iIHhyNjpjb2F1dGhWZXJzaW9uTGFzdD0iNDAiIHhyNjpjb2F1dGhWZXJzaW9uTWF4PSI0MCIgeHIxMDp1aWRMYXN0U2F2ZT0iezAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMH0iLz48Ym9va1ZpZXdzPjx3b3JrYm9va1ZpZXcgeFdpbmRvdz0iMCIgeVdpbmRvdz0iMCIgd2luZG93V2lkdGg9IjI0NTcwIiB3aW5kb3dIZWlnaHQ9IjExMTMwIiB4cjI6dWlkPSJ7REU0RTdEMzUtNDkyRC00MEQ3LTk5MjUtNDY0N0Y1ODdFMURFfSIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9IlNoZWV0MSIgc2hlZXRJZD0iMSIgcjppZD0icklkMSIvPjwvc2hlZXRzPjxjYWxjUHIgY2FsY0lkPSIxOTEwMjkiLz48ZXh0THN0PjxleHQgdXJpPSJ7MTQwQTcwOTQtMEUzNS00ODkyLTg0MzItQzREMkU1N0VERUI1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp3b3JrYm9va1ByIGNoYXJ0VHJhY2tpbmdSZWZCYXNlPSIxIi8+PC9leHQ+PC9leHRMc3Q+PC93b3JrYm9vaz5QSwMECgAAAAAAAAAhAIE+lJe6AgAAugIAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIiBUYXJnZXQ9InN0eWxlcy54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIiBUYXJnZXQ9InRoZW1lL3RoZW1lMS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQ0IiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiIFRhcmdldD0ic2hhcmVkU3RyaW5ncy54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMgeHIgeHIyIHhyMyIgeG1sbnM6eDE0YWM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIiB4bWxuczp4cj0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE0L3JldmlzaW9uIiB4bWxuczp4cjI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNS9yZXZpc2lvbjIiIHhtbG5zOnhyMz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE2L3JldmlzaW9uMyIgeHI6dWlkPSJ7MEQ4RTVDQTItNUM5RS00RDRCLTk0QzUtRjM1QzA0MUYzOUJEfSI+PGRpbWVuc2lvbiByZWY9IkExIi8+PHNoZWV0Vmlld3M+PHNoZWV0VmlldyB0YWJTZWxlY3RlZD0iMSIgd29ya2Jvb2tWaWV3SWQ9IjAiLz48L3NoZWV0Vmlld3M+PHNoZWV0Rm9ybWF0UHIgZGVmYXVsdFJvd0hlaWdodD0iMTUiIHgxNGFjOmR5RGVzY2VudD0iMC4yNSIvPjxzaGVldERhdGEvPjxwYWdlTWFyZ2lucyBsZWZ0PSIwLjciIHJpZ2h0PSIwLjciIHRvcD0iMC43NSIgYm90dG9tPSIwLjc1IiBoZWFkZXI9IjAuMyIgZm9vdGVyPSIwLjMiLz48L3dvcmtzaGVldD5QSwMECgAAAAAAAAAhAMEXEL7GIAAAxiAAABMAAAB4bC90aGVtZS90aGVtZTEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+PGE6dGhlbWVFbGVtZW50cz48YTpjbHJTY2hlbWUgbmFtZT0iT2ZmaWNlIj48YTpkazE+PGE6c3lzQ2xyIHZhbD0id2luZG93VGV4dCIgbGFzdENscj0iMDAwMDAwIi8+PC9hOmRrMT48YTpsdDE+PGE6c3lzQ2xyIHZhbD0id2luZG93IiBsYXN0Q2xyPSJGRkZGRkYiLz48L2E6bHQxPjxhOmRrMj48YTpzcmdiQ2xyIHZhbD0iNDQ1NDZBIi8+PC9hOmRrMj48YTpsdDI+PGE6c3JnYkNsciB2YWw9IkU3RTZFNiIvPjwvYTpsdDI+PGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD0iNDQ3MkM0Ii8+PC9hOmFjY2VudDE+PGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD0iRUQ3RDMxIi8+PC9hOmFjY2VudDI+PGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD0iQTVBNUE1Ii8+PC9hOmFjY2VudDM+PGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD0iRkZDMDAwIi8+PC9hOmFjY2VudDQ+PGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD0iNUI5QkQ1Ii8+PC9hOmFjY2VudDU+PGE6YWNjZW50Nj48YTpzcmdiQ2xyIHZhbD0iNzBBRDQ3Ii8+PC9hOmFjY2VudDY+PGE6aGxpbms+PGE6c3JnYkNsciB2YWw9IjA1NjNDMSIvPjwvYTpobGluaz48YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD0iOTU0RjcyIi8+PC9hOmZvbEhsaW5rPjwvYTpjbHJTY2hlbWU+PGE6Zm9udFNjaGVtZSBuYW1lPSJPZmZpY2UiPjxhOm1ham9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSBMaWdodCIgcGFub3NlPSIwMjBGMDMwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8gTGlnaHQiLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyBMaWdodCIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz48YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPjxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+PGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5cGVmYWNlPSJOeWFsYSIvPjxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+PGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz48YTpmb250IHNjcmlwdD0iS2htciIgdHlwZWZhY2U9Ik1vb2xCb3JhbiIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+PGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+PGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+PGE6Zm9udCBzY3JpcHQ9IkFybW4iIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJCdWdpIiB0eXBlZmFjZT0iTGVlbGF3YWRlZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJCb3BvIiB0eXBlZmFjZT0iTWljcm9zb2Z0IEpoZW5nSGVpIi8+PGE6Zm9udCBzY3JpcHQ9IkphdmEiIHR5cGVmYWNlPSJKYXZhbmVzZSBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ikxpc3UiIHR5cGVmYWNlPSJTZWdvZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJNeW1yIiB0eXBlZmFjZT0iTXlhbm1hciBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ik5rb28iIHR5cGVmYWNlPSJFYnJpbWEiLz48YTpmb250IHNjcmlwdD0iT2xjayIgdHlwZWZhY2U9Ik5pcm1hbGEgVUkiLz48YTpmb250IHNjcmlwdD0iT3NtYSIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJQaGFnIiB0eXBlZmFjZT0iUGhhZ3NwYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJuIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyaiIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmUiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTb3JhIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJUYWxlIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFRhaSBMZSIvPjxhOmZvbnQgc2NyaXB0PSJUYWx1IiB0eXBlZmFjZT0iTWljcm9zb2Z0IE5ldyBUYWkgTHVlIi8+PGE6Zm9udCBzY3JpcHQ9IlRmbmciIHR5cGVmYWNlPSJFYnJpbWEiLz48L2E6bWFqb3JGb250PjxhOm1pbm9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSIgcGFub3NlPSIwMjBGMDUwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8iLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPjxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz48YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPjxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+PGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz48YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz48YTpmb250IHNjcmlwdD0iQXJtbiIgdHlwZWZhY2U9IkFyaWFsIi8+PGE6Zm9udCBzY3JpcHQ9IkJ1Z2kiIHR5cGVmYWNlPSJMZWVsYXdhZGVlIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IkJvcG8iIHR5cGVmYWNlPSJNaWNyb3NvZnQgSmhlbmdIZWkiLz48YTpmb250IHNjcmlwdD0iSmF2YSIgdHlwZWZhY2U9IkphdmFuZXNlIFRleHQiLz48YTpmb250IHNjcmlwdD0iTGlzdSIgdHlwZWZhY2U9IlNlZ29lIFVJIi8+PGE6Zm9udCBzY3JpcHQ9Ik15bXIiIHR5cGVmYWNlPSJNeWFubWFyIFRleHQiLz48YTpmb250IHNjcmlwdD0iTmtvbyIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJPbGNrIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJPc21hIiB0eXBlZmFjZT0iRWJyaW1hIi8+PGE6Zm9udCBzY3JpcHQ9IlBoYWciIHR5cGVmYWNlPSJQaGFnc3BhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cm4iIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJqIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyZSIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlNvcmEiIHR5cGVmYWNlPSJOaXJtYWxhIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbGUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgVGFpIExlIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbHUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgTmV3IFRhaSBMdWUiLz48YTpmb250IHNjcmlwdD0iVGZuZyIgdHlwZWZhY2U9IkVicmltYSIvPjwvYTptaW5vckZvbnQ+PC9hOmZvbnRTY2hlbWU+PGE6Zm10U2NoZW1lIG5hbWU9Ik9mZmljZSI+PGE6ZmlsbFN0eWxlTHN0PjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj48YTpnc0xzdD48YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMTAwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48YTp0aW50IHZhbD0iNjcwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6bHVtTW9kIHZhbD0iMTA1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6dGludCB2YWw9IjczMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMDUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDkwMDAiLz48YTp0aW50IHZhbD0iODEwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+PGE6Z3NMc3Q+PGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6bHVtTW9kIHZhbD0iMTAyMDAwIi8+PGE6dGludCB2YWw9Ijk0MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSI1MDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNhdE1vZCB2YWw9IjExMDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSI5OTAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjxhOnNoYWRlIHZhbD0iNzgwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjwvYTpmaWxsU3R5bGVMc3Q+PGE6bG5TdHlsZUxzdD48YTpsbiB3PSI2MzUwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48YTptaXRlciBsaW09IjgwMDAwMCIvPjwvYTpsbj48YTpsbiB3PSIxMjcwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PGE6bWl0ZXIgbGltPSI4MDAwMDAiLz48L2E6bG4+PGE6bG4gdz0iMTkwNTAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjxhOm1pdGVyIGxpbT0iODAwMDAwIi8+PC9hOmxuPjwvYTpsblN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdD48YTpvdXRlclNoZHcgYmx1clJhZD0iNTcxNTAiIGRpc3Q9IjE5MDUwIiBkaXI9IjU0MDAwMDAiIGFsZ249ImN0ciIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjYzMDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz48L2E6ZWZmZWN0THN0PjwvYTplZmZlY3RTdHlsZT48L2E6ZWZmZWN0U3R5bGVMc3Q+PGE6YmdGaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5NTAwMCIvPjxhOnNhdE1vZCB2YWw9IjE3MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPjxhOmdzTHN0PjxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjE1MDAwMCIvPjxhOnNoYWRlIHZhbD0iOTgwMDAiLz48YTpsdW1Nb2QgdmFsPSIxMDIwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9Ijk4MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PGE6c2hhZGUgdmFsPSI5MDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMzAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSI2MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjwvYTpnc0xzdD48YTpsaW4gYW5nPSI1NDAwMDAwIiBzY2FsZWQ9IjAiLz48L2E6Z3JhZEZpbGw+PC9hOmJnRmlsbFN0eWxlTHN0PjwvYTpmbXRTY2hlbWU+PC9hOnRoZW1lRWxlbWVudHM+PGE6b2JqZWN0RGVmYXVsdHMvPjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz48YTpleHRMc3Q+PGE6ZXh0IHVyaT0iezA1QTRDMjVDLTA4NUUtNDM0MC04NUEzLUE1NTMxRTUxMERCMn0iPjx0aG0xNTp0aGVtZUZhbWlseSB4bWxuczp0aG0xNT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvdGhlbWVtbC8yMDEyL21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSIgaWQ9Ins2MkY5MzlCNi05M0FGLTREQjgtOUM2Qi1ENkM3REZEQzU4OUZ9IiB2aWQ9Ins0QTNDNDZFOC02MUNDLTQ2MDMtQTU4OS03NDIyQTQ3QThFNEF9Ii8+PC9hOmV4dD48L2E6ZXh0THN0PjwvYTp0aGVtZT5QSwMECgAAAAAAAAAhAHmhgGxSBgAAUgYAAA0AAAB4bC9zdHlsZXMueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHN0eWxlU2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIHgxNnIyIHhyIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiIHhtbG5zOngxNnIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvMDIvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiI+PGZvbnRzIGNvdW50PSIxIiB4MTRhYzprbm93bkZvbnRzPSIxIj48Zm9udD48c3ogdmFsPSIxMSIvPjxjb2xvciB0aGVtZT0iMSIvPjxuYW1lIHZhbD0iQ2FsaWJyaSIvPjxmYW1pbHkgdmFsPSIyIi8+PHNjaGVtZSB2YWw9Im1pbm9yIi8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSIyIj48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJncmF5MTI1Ii8+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjEiPjxib3JkZXI+PGxlZnQvPjxyaWdodC8+PHRvcC8+PGJvdHRvbS8+PGRpYWdvbmFsLz48L2JvcmRlcj48L2JvcmRlcnM+PGNlbGxTdHlsZVhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIHhmSWQ9IjAiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9IjEiPjxjZWxsU3R5bGUgbmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiLz48L2NlbGxTdHlsZXM+PGR4ZnMgY291bnQ9IjAiLz48dGFibGVTdHlsZXMgY291bnQ9IjAiIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtMiIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVMaWdodDE2Ii8+PGV4dExzdD48ZXh0IHVyaT0ie0VCNzlERUYyLTgwQjgtNDNlNS05NUJELTU0Q0JEREY5MDIwQ30iIHhtbG5zOngxND0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvbWFpbiI+PHgxNDpzbGljZXJTdHlsZXMgZGVmYXVsdFNsaWNlclN0eWxlPSJTbGljZXJTdHlsZUxpZ2h0MSIvPjwvZXh0PjxleHQgdXJpPSJ7OTI2MEE1MTAtRjMwMS00NmE4LTg2MzUtRjUxMkQ2NEJFNUY1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp0aW1lbGluZVN0eWxlcyBkZWZhdWx0VGltZWxpbmVTdHlsZT0iVGltZVNsaWNlclN0eWxlTGlnaHQxIi8+PC9leHQ+PC9leHRMc3Q+PC9zdHlsZVNoZWV0PlBLAwQKAAAAAAAAACEA0IywC4EAAACBAAAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHNzdCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIi8+UEsDBAoAAAAAAAAAIQDcCx83XQIAAF0CAAARAAAAZG9jUHJvcHMvY29yZS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8Y3A6Y29yZVByb3BlcnRpZXMgeG1sbnM6Y3A9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmRjdGVybXM9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIHhtbG5zOmRjbWl0eXBlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48ZGM6Y3JlYXRvcj5kdW5jYW48L2RjOmNyZWF0b3I+PGNwOmxhc3RNb2RpZmllZEJ5PmR1bmNhbjwvY3A6bGFzdE1vZGlmaWVkQnk+PGRjdGVybXM6Y3JlYXRlZCB4c2k6dHlwZT0iZGN0ZXJtczpXM0NEVEYiPjIwMTktMDEtMzFUMTY6NDg6MDNaPC9kY3Rlcm1zOmNyZWF0ZWQ+PGRjdGVybXM6bW9kaWZpZWQgeHNpOnR5cGU9ImRjdGVybXM6VzNDRFRGIj4yMDE5LTAxLTMxVDE2OjQ4OjI4WjwvZGN0ZXJtczptb2RpZmllZD48L2NwOmNvcmVQcm9wZXJ0aWVzPlBLAwQKAAAAAAAAACEAYUkJEBEDAAARAwAAEAAAAGRvY1Byb3BzL2FwcC54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8UHJvcGVydGllcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZXh0ZW5kZWQtcHJvcGVydGllcyIgeG1sbnM6dnQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzIj48QXBwbGljYXRpb24+TWljcm9zb2Z0IEV4Y2VsPC9BcHBsaWNhdGlvbj48RG9jU2VjdXJpdHk+MDwvRG9jU2VjdXJpdHk+PFNjYWxlQ3JvcD5mYWxzZTwvU2NhbGVDcm9wPjxIZWFkaW5nUGFpcnM+PHZ0OnZlY3RvciBzaXplPSIyIiBiYXNlVHlwZT0idmFyaWFudCI+PHZ0OnZhcmlhbnQ+PHZ0Omxwc3RyPldvcmtzaGVldHM8L3Z0Omxwc3RyPjwvdnQ6dmFyaWFudD48dnQ6dmFyaWFudD48dnQ6aTQ+MTwvdnQ6aTQ+PC92dDp2YXJpYW50PjwvdnQ6dmVjdG9yPjwvSGVhZGluZ1BhaXJzPjxUaXRsZXNPZlBhcnRzPjx2dDp2ZWN0b3Igc2l6ZT0iMSIgYmFzZVR5cGU9Imxwc3RyIj48dnQ6bHBzdHI+U2hlZXQxPC92dDpscHN0cj48L3Z0OnZlY3Rvcj48L1RpdGxlc09mUGFydHM+PENvbXBhbnk+PC9Db21wYW55PjxMaW5rc1VwVG9EYXRlPmZhbHNlPC9MaW5rc1VwVG9EYXRlPjxTaGFyZWREb2M+ZmFsc2U8L1NoYXJlZERvYz48SHlwZXJsaW5rc0NoYW5nZWQ+ZmFsc2U8L0h5cGVybGlua3NDaGFuZ2VkPjxBcHBWZXJzaW9uPjE2LjAzMDA8L0FwcFZlcnNpb24+PC9Qcm9wZXJ0aWVzPlBLAQIUAAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAhQACgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAAAAAAAAAAAAAAAAwQQAAF9yZWxzLy5yZWxzUEsBAhQACgAAAAAAAAAhALpwnmbKBgAAygYAAA8AAAAAAAAAAAAAAAAANgcAAHhsL3dvcmtib29rLnhtbFBLAQIUAAoAAAAAAAAAIQCBPpSXugIAALoCAAAaAAAAAAAAAAAAAAAAAC0OAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc1BLAQIUAAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAAAAAAAAAAAAAAB8RAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWxQSwECFAAKAAAAAAAAACEAwRcQvsYgAADGIAAAEwAAAAAAAAAAAAAAAAD5FAAAeGwvdGhlbWUvdGhlbWUxLnhtbFBLAQIUAAoAAAAAAAAAIQB5oYBsUgYAAFIGAAANAAAAAAAAAAAAAAAAAPA1AAB4bC9zdHlsZXMueG1sUEsBAhQACgAAAAAAAAAhANCMsAuBAAAAgQAAABQAAAAAAAAAAAAAAAAAbTwAAHhsL3NoYXJlZFN0cmluZ3MueG1sUEsBAhQACgAAAAAAAAAhANwLHzddAgAAXQIAABEAAAAAAAAAAAAAAAAAID0AAGRvY1Byb3BzL2NvcmUueG1sUEsBAhQACgAAAAAAAAAhAGFJCRARAwAAEQMAABAAAAAAAAAAAAAAAAAArD8AAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAAAAoACgCAAgAA60IAAAAA";var xr=s=>typeof s=="object"&&typeof s.row<"u"&&typeof s.column<"u";var ue=class{start_;end_;constructor(e,t=e,i=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),i&&this.Normalize()}static FromColumn(e){return new ue({row:1/0,column:e})}static FromRow(e){return new ue({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let i=new ue(e.start,e.end);for(let n of t)n&&(i.ConsumeAddress(n.start),i.ConsumeAddress(n.end));return i}static Bleed(e,t=1){return new ue({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new ue(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can\'t convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,i=0;for(let n=this.start_.row;n<=this.end_.row;n++)for(let r=this.start_.column;r<=this.end_.column;r++)e[i++]={row:n,column:r,sheet_id:t};return e}get left(){let e=new ue(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new ue(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new ue(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new ue(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don\'t iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let i=this.start_.row;i<=this.end_.row;i++)e({column:t,row:i,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=ue.ColumnToLabel(this.start_.column),e+=":"+ue.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=ue.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+ue.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var Zi=s=>typeof s=="object"&&!!s&&typeof s.real=="number"&&typeof s.imaginary=="number";var Ft=s=>typeof s=="object"&&!!s&&typeof s.value=="number"&&typeof s.unit=="string";var Re=s=>{switch(typeof s){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return s===null?0:Zi(s)?7:Ft(s)?9:5;case"string":return s[0]==="="?1:2;default:return 6}};var be=class{static StringToColumn(e){let t=0;e=e.toUpperCase();for(let i=0;i<e.length;i++)t*=26,t+=e.charCodeAt(i)-64;return t-1}value;type=0;calculated;calculated_type;formatted;rendered_type;style;area;merge_area;table;renderer_data;render_clean=[];note;hyperlink;editing;render_function;click_function;validation;constructor(e,t){typeof e<"u"&&this.Set(e,t)}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=Re(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=Re(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=Re(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var zi=s=>!s.cells,Li=s=>!!s[0]&&zi(s[0]),Ui=s=>!!s[0]&&s[0].row!==void 0,ct=class{data=[];rows_=0;columns_=0;get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let i=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(n=>{if(n.length>=e){let r=n.slice(0,e),a=e+t,o=n.slice(e);for(let u=0;u<o.length;u++)r[a++]=o[u];return r}return n}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(i=>i.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let i=[e,0,[]];for(let n=1;n<t;n++)i.push([]);Array.prototype.splice.apply(this.data,i),this.rows_+=t}GetCell(e,t){let{row:i,column:n}=e;if(!this.data[i])if(t)this.data[i]=[],this.rows_=Math.max(this.rows_,i+1);else return;return this.data[i][n]||t&&(this.data[i][n]=new be,this.columns_=Math.max(this.columns_,n+1)),this.data[i][n]}EnsureCell(e){let{row:t,column:i}=e,n=this.data[t];n||(this.data[t]=n=[],this.rows_=Math.max(this.rows_,t+1));let r=n[i];return r||(r=n[i]=new be,this.columns_=Math.max(this.columns_,i+1)),r}FromArray(e=[],t=!1){this.data=[];let i=0,n=0;if(t){n=e.length;for(let r=0;r<n;r++){let a=e[r];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)this.data[o]||(this.data[o]=[]),this.data[o][r]=new be(a[o])}}else{i=e.length;for(let r=0;r<i;r++){let a=[],o=e[r];n=Math.max(n,o.length);for(let u=0;u<o.length;u++)a[u]=new be(o[u]);this.data[r]=a}}this.rows_=i,this.columns_=n}FromJSON(e=[],t){if(this.data=[],!Li(e)){let n=[];if(Ui(e))for(let r of e)for(let a of r.cells)n.push({...a,row:r.row});else for(let r of e)for(let a of r.cells)n.push({...a,column:r.column});e=n}let i=[];for(let n of e){this.data[n.row]||(this.data[n.row]=[]);let r=new be(n.value);if(typeof n.calculated<"u"&&r.SetCalculatedValue(n.calculated,n.calculated_type),t&&typeof n.style_ref<"u"&&(r.style=t[n.style_ref]),typeof n.note<"u"&&(r.note=n.note),typeof n.hyperlink<"u"&&(r.hyperlink=n.hyperlink),this.data[n.row][n.column]&&this.data[n.row][n.column].area&&(r.area=this.data[n.row][n.column].area),this.data[n.row][n.column]=r,n.area){let a=new ue(n.area.start,n.area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let u=a.start.column;u<=a.end.column;u++)this.data[o]||(this.data[o]=[]),this.data[o][u]||(this.data[o][u]=new be),this.data[o][u].area=a}if(n.table&&i.push({...n.table}),n.merge_area){let a=new ue(n.merge_area.start,n.merge_area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let u=a.start.column;u<=a.end.column;u++)this.data[o]||(this.data[o]=[]),this.data[o][u]||(this.data[o][u]=new be),this.data[o][u].merge_area=a}n.validation&&(r.validation=n.validation)}for(let n of i)for(let r=n.area.start.row;r<=n.area.end.row;r++)for(let a=n.area.start.column;a<=n.area.end.column;a++)this.data[r]||(this.data[r]=[]),this.data[r][a]||(this.data[r][a]=new be),this.data[r][a].table=n;this.rows_=this.data.length,this.columns_=this.data.reduce((n,r)=>Math.max(n,r.length),0)}toJSON(e={}){let t=0,i=0,n=this.data.length-1,r;e.subset&&(t=e.subset.start.column,i=e.subset.start.row,n=e.subset.end.row);let a=[],o=-1,u=-1,h={},l={};for(let c=i;c<=n;c++)if(this.data[c]){let A=this.data[c];r=A.length-1,e.subset&&(r=e.subset.end.column);for(let p=t;p<=r;p++){let m=A[p],g=m&&m.merge_area&&m.merge_area.start.row===c&&m.merge_area.start.column===p,b=m&&m.area&&m.area.start.row===c&&m.area.start.column===p,w=m&&m.table&&m.table.area.start.row===c&&m.table.area.start.column===p,D=m?m.type===2&&!m.value:!0;if(m&&(!D||e.preserve_empty_strings)&&(g||m.type||m.calculated_type&&e.expand_arrays||m.calculated_type&&e.calculated_value||m.validation||e.decorated_cells&&m.style&&(m.style.fill||m.style.border_bottom||m.style.border_top||m.style.border_left||m.style.border_right))){let _={row:c,column:p,value:m.value};m.note&&(_.note=m.note),m.hyperlink&&(_.hyperlink=m.hyperlink),e.preserve_type&&(_.type=m.type),e.sheet_id&&(_.sheet_id=e.sheet_id),e.calculated_value&&typeof m.calculated<"u"&&(_.calculated=m.calculated,(e.preserve_type||m.calculated_type===6)&&(_.calculated_type=m.calculated_type)),m.table&&w&&e.tables&&(_.table=JSON.parse(JSON.stringify(m.table))),m.area&&b&&(_.area=m.area.toJSON()),m.merge_area&&(_.merge_area=m.merge_area.toJSON()),m.validation&&(_.validation=m.validation),e.cell_style_refs&&e.cell_style_refs[p]&&e.cell_style_refs[p][c]&&(_.style_ref=e.cell_style_refs[p][c],e.cell_style_refs[p][c]=0),h[c]=c,l[p]=p,o=Math.max(c,o),u=Math.max(p,u),a.push(_)}}}if(e.nested){let c=Object.keys(h),A=Object.keys(l);if(c.length<=A.length&&c.length){let p={},m=[];for(let g of a){let{row:b,...w}=g;p[g.row]||(p[g.row]=[]),p[g.row].push(w)}for(let g of c){let b=Number(g);m.push({row:b,cells:p[b]})}return{data:m,rows:o,columns:u+1}}else if(A.length){let p={},m=[];for(let g of a){let{column:b,...w}=g;p[g.column]||(p[g.column]=[]),p[g.column].push(w)}for(let g of A){let b=Number(g);m.push({column:b,cells:p[b]})}return{data:m,rows:o,columns:u+1}}}return{data:a,rows:o+1,columns:u+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let i=[],n=this.data.slice(e.row,t.row+1),r=e.column,a=t.column+1;for(let o of n){let u=[];for(let h=r,l=0;h<a;h++,l++){let c=o[h];u.push(c?c.value:void 0)}i.push(u)}return i}GetRange(e,t,i=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue()):a.push(void 0);n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue()):a.push(void 0);n.push(a)}return n}GetRange4(e,t=e,i=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue4()):a.push({type:0});n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue4()):a.push({type:0});n.push(a)}return{type:8,value:n}}Apply(e,t,i=!1){if(xr(e)&&(e=new ue(e)),e.entire_column||e.entire_row)throw new Error("don\'t iterate infinite cells");let n=e.start,r=e.end;if(i)for(let a=n.row;a<=r.row;a++){this.data[a]||(this.data[a]=[]);let o=this.data[a];for(let u=n.column;u<=r.column;u++)o[u]||(o[u]=new be),t(o[u],u,a)}else for(let a=n.row;a<=r.row;a++)if(this.data[a]){let o=this.data[a];for(let u=n.column;u<=r.column;u++)o[u]&&t(o[u],u,a)}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let i=e.start.row,n=0;i<=e.end.row;i++,n++){this.data[i]||(this.data[i]=[]);let r=this.data[i];if(t[n])for(let a=e.start.column,o=0;a<=e.end.column;a++,o++)r[a]||(r[a]=new be),r[a].Set(t[n][o])}else{let i=Re(t);for(let n=e.start.row;n<=e.end.row;n++){this.data[n]||(this.data[n]=[]);let r=this.data[n];for(let a=e.start.column;a<=e.end.column;a++)r[a]||(r[a]=new be),r[a].Set(t,i)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let i of t)i&&e(i)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var le=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let n=self?.document?.location;if(n&&n.search&&/locale=([^?&]+?)(?:\\?|$|&)/.test(n.search)){let r=n.search.match(/locale=(.*?)(?:\\?|$|&)/);r&&(this.locale=r[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let i=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,i),i=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,i),i=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,i),i=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,i),i=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,i),i=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,i),i=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,i),i=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,i),i=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,i),i=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,i),i=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,i),i=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,i)}static UpdateDateComponent(e,t,i){t>=0&&(this.date_components.short_days[t]=i.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=i.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=i.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=i.toLocaleString(this.locale,{month:"long"}))}};ie(le,"locale","en-us"),ie(le,"decimal_separator","."),ie(le,"argument_separator",","),ie(le,"grouping_separator",","),ie(le,"date_components",{short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]});le.UpdateLocale();var me;(p=>{let s=JSON.stringify({}),e;(D=>(D.None="",D.Left="left",D.Center="center",D.Right="right"))(e=p.HorizontalAlign||={});let t;(D=>(D.None="",D.Top="top",D.Bottom="bottom",D.Middle="middle"))(t=p.VerticalAlign||={}),p.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},p.CompositeBorders=m=>({top:{width:m.border_top||0,color:m.border_top_fill||{}},left:{width:m.border_left||0,color:m.border_left_fill||{}},right:{width:m.border_right||0,color:m.border_right_fill||{}},bottom:{width:m.border_bottom||0,color:m.border_bottom_fill||{}}}),p.Merge=(m,g,b=!0)=>{let w=b?{...m,...g}:{...g};return JSON.parse(JSON.stringify(w))},p.Composite=m=>JSON.parse(JSON.stringify(m.reduce((g,b)=>({...g,...b}),{}))),p.Empty=m=>JSON.stringify(m)===s,p.ValidColor=m=>!!(m&&!m.none&&(m.text||m.theme||m.theme===0)),p.ParseFontSize=(m="",g="em")=>{let b=m.match(/(-*[\\d.]+)\\s*(\\S*)/);if(b){let w=Number(b[1]);if(!w||isNaN(w)||w<0)return{};let D=b[2].toLowerCase()||g;if(D==="pt"||D==="em"||D==="%"||D==="px")return{font_size:{unit:D,value:w}}}return{}},p.RelativeFontSize=(m,g)=>{let b=12,w=12;switch(m.font_size?.unit){case"pt":if(!m.font_size.value)return 1;w=m.font_size.value;break;case"px":if(!m.font_size.value)return 1;w=Math.round(m.font_size.value*300/4)/100;break;case"em":return m.font_size.value||1;case"%":return(m.font_size.value||100)/100;default:return 1}switch(g.font_size?.unit){case"pt":if(!g.font_size.value)return 1;b=g.font_size.value;break;case"px":if(!g.font_size.value)return 1;b=Math.round(g.font_size.value*300/4)/100;break;default:return 1}return w/b},p.FontSize=(m,g=!0)=>{let b=m.font_size?.value;switch(m.font_size?.unit){case"pt":return(b||12)+"pt";case"px":return g?Math.round((b||16)*300/4)/100+"pt":(b||16)+"px";case"em":return(b||1)+"em";case"%":return(b||100)+"%"}return""},p.Font=(m,g=1)=>{let b=[];return m.bold&&b.push("bold"),m.italic&&b.push("italic"),b.push(((m.font_size?.value||0)*g).toFixed(2)+(m.font_size?.unit||"pt")),b.push(m.font_face||""),b.join(" ")}})(me||={});var Tt=class{Darken(e,t,i,n,r=!1){let{h:a,s:o,l:u}=this.RGBToHSL(e,t,i);return r?u-=u*n/100:u-=n/100,u=Math.max(0,Math.min(1,u)),this.HSLToRGB(a,o,u)}Lighten(e,t,i,n,r=!1){let{h:a,s:o,l:u}=this.RGBToHSL(e,t,i);return r?u+=u*n/100:u+=n/100,u=Math.max(0,Math.min(1,u)),this.HSLToRGB(a,o,u)}RGBToHSL(e,t,i){e/=255,t/=255,i/=255;let n=Math.max(e,t,i),r=Math.min(e,t,i),a=0,o=0,u=(n+r)/2;if(n===r)a=o=0;else{let h=n-r;switch(o=u>.5?h/(2-n-r):h/(n+r),n){case e:a=(t-i)/h+(t<i?6:0);break;case t:a=(i-e)/h+2;break;case i:a=(e-t)/h+4;break}a/=6}return{h:a*360,s:o,l:u}}HSLToRGB(e,t,i){let n,r,a;if(t===0)n=r=a=i;else{e=e/360;let o=i<.5?i*(1+t):i+t-i*t,u=2*i-o;n=this.HueToRGB(u,o,e+1/3),r=this.HueToRGB(u,o,e),a=this.HueToRGB(u,o,e-1/3)}return{r:Math.round(n*255),g:Math.round(r*255),b:Math.round(a*255)}}HueToRGB(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<1/2?t:i<2/3?e+(t-e)*(2/3-i)*6:e}},Gi=new Tt;var wt=Fe(dt());var Qr=Fe(ut()),Ra=Fe(dt()),Kr=(s,e)=>Qr.decode(e),ei={ignoreAttributes:!1,attributeNamePrefix:"__",trimValues:!1,textNodeName:"text__",tagValueProcessor:Kr,ignoreDeclaration:!0},ht={ignoreAttributes:!1,attributesGroupName:"a$",attributeNamePrefix:"",textNodeName:"t$",trimValues:!1,ignoreDeclaration:!0,isArray:(s,e,t,i)=>/Relationship$/.test(s),tagValueProcessor:Kr},oe=class{static FindChild(e={},t){let i=t.split("/");for(let n of i)if(e=e[n],!e)return;return e}static FindAll(e={},t){let i=t.split("/");if(i[0]==="."&&i.shift(),i[0]==="..")throw new Error("invalid path (no access to parent)");if(i[0]==="")throw new Error("invalid path (no access to root)");if(i[0]==="**")throw new Error("ENOTIMPL");return this.FindAllTail(e,i)}static FindAllTail(e,t){if(Array.isArray(e))return e.reduce((i,n)=>i.concat(this.FindAllTail(n,t)),[]);for(let i=0;i<t.length;i++){let n=t[i];if(n==="*"?e=Object.keys(e).filter(r=>r!=="a$"&&r!=="t$").map(r=>e[r]):e=e[n],!e)return[];if(Array.isArray(e)){if(i===t.length-1||e.length===0)return e;let r=t.slice(1);return e.reduce((a,o)=>a.concat(this.FindAllTail(o,r)),[])}}return[e]}};var Ue=class{strings=[];reverse={};FromXML(e){this.strings=[],this.reverse={};let t=0;for(let i of oe.FindAll(e,"sst/si")){if(i.t){let n="";typeof i.t=="string"?n=i.t:i.t.t$&&(n=i.t.t$),this.strings[t]=n,this.reverse[n]=t}else if(i.r){let r=oe.FindAll(i.r,"t").map(a=>typeof a=="string"?a:a.t$||"").join("");this.strings[t]=r,this.reverse[r]=t}else console.warn(` ** unexpected shared string @ ${t}`),console.info(i);t++}}Get(e){return this.strings[e]}Ensure(e){e[0]==="\'"&&(e=e.substring(1));let t=this.reverse[e];return typeof t=="number"||(t=this.strings.length,this.strings.push(e),this.reverse[e]=t),t}};var jt=class{colors={};FromXML(e){let t=Object.keys(e)[0],i="",n=t.toString().match(/^(.*?):/);if(n&&(i=n[1]+":"),e[t]&&e[t][`${i}themeElements`]){let r=e[t][`${i}themeElements`][`${i}clrScheme`];for(let a of jt.color_map){let o=r[`${i}${a}`],u,h="rgb";o[`${i}srgbClr`]?(h="rgb",u=o[`${i}srgbClr`].a$.val||""):o[`${i}sysClr`]&&(h="system",u=o[`${i}sysClr`].a$.lastClr||""),this.colors[a]={name:a,value:u,type:h}}}}},Be=jt;ie(Be,"color_map",["lt1","dk1","lt2","dk2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink"]);var Ie=class{date_format=!1;string_format=!1;fraction_format=!1;twelve_hour=!1;fraction_denominator=0;fraction_integer=!0;fraction_align=0;fraction_denominator_digits=0;integer_min_digits=0;decimal_min_digits=0;decimal_max_digits=0;grouping=!1;has_number_format=!1;prefix=[{text:""}];suffix=[{text:""}];scaling=0;percent=!1;exponential=!1;has_asterisk=!1};var ti=42,ri=95,Yt=63,pt=48,ii=46,$t=44,ni=37,Ht=34,Xe=35,si=59,ft=92,ai=64,Hn=91,qn=93,oi=69,ui=101,Jn=72,Xn=104,Qn=77,Kn=109,es=83,ts=115,rs=68,is=100,ns=89,ss=121,as=65,os=97;var xe=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new Ie,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new Ie,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case ft:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case Ht:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case ft:throw new Error("invalid escape character in formatting block");case qn:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\\/([#?0-9]+)(?:$|[^#?0-9])/,i=this.pattern.substr(this.char_index).match(e);if(!i)return!1;let n=(i[1]||"").length+i[2].length+i[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!i[1];let r=Number(i[3]);return isNaN(r)||(this.current_section.fraction_denominator=r),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=i[3].length,this.char_index+=n,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let i=!1;for(let n=this.char_index+1;!i&&n<this.characters.length;n++){let r=this.characters[n];if(r===this.decimal_mark||r===Xe||r===pt)i=!0;else if(r!==$t)break}if(i){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case Xe:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case pt:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===Yt||e===Xe)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case si:this.char_index++,this.current_section=new Ie,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case ai:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case pt:case Xe:case ii:case $t:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case Hn:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case Ht:this.AppendString(this.ConsumeString());break;case Yt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case ri:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case ti:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case ui:case oi:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case ni:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case ft:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let i=t-1;i;i--){let n=this.sections[0].prefix[i];if(n.flag===3){/h/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let i=t+1;i<this.sections[0].prefix.length;i++){let n=this.sections[0].prefix[i];if(n.flag===3){/s/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),i={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)i.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(i.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)i.text+=this.pattern[this.char_index++];return i}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case si:this.char_index=this.characters.length;break;case pt:case Xe:case ui:case oi:case ni:case ai:this.date_pattern=!1;break;case Jn:case Xn:case Qn:case Kn:case es:case ts:case rs:case is:case ns:case ss:this.AppendTextPart(this.ConsumeDatePart());break;case as:case os:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case Ht:this.AppendString(this.ConsumeString());break;case Yt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case ri:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case ti:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case ft:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};ie(xe,"date_pattern",!1),ie(xe,"pattern",""),ie(xe,"char_index",0),ie(xe,"characters",[]),ie(xe,"sections",[]),ie(xe,"current_section",new Ie),ie(xe,"preserve_formatting_characters",!1),ie(xe,"decimal_mark",ii),ie(xe,"group_separator",$t);var us=s=>(s>=60&&s--,new Date(-22090752e5+864e5*s)),li=(s,e=!0)=>{if(e){let t=new Date(s),i=new Date;i.setUTCMilliseconds(t.getUTCMilliseconds()),i.setUTCSeconds(t.getUTCSeconds()),i.setUTCMinutes(t.getUTCMinutes()),i.setUTCHours(t.getHours()),i.setUTCDate(t.getDate()),i.setUTCMonth(t.getMonth()),i.setUTCFullYear(t.getFullYear()),s=i.getTime()}return s=(s+22090752e5)/864e5,s>=60&&s++,s},ke=class{magic_decimal=!1;transform_value;_pattern="";sections;decimal_zero_regexp=[];cloned=[];get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}constructor(e){if(this._pattern=e,this.sections=xe.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new Ie),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}static FormatPartsAsText(e,t=0){let i=-1,n=e.map((r,a)=>{switch(r.flag){case 2:return i=a,r.text;case 1:return r.text.replace(/./g," ");case 6:return"";default:return r.text}});if(i>=0&&t){let r=n.reduce((o,u,h)=>h===i?o:o+u.length,0),a="";for(let o=0;o<t-r;o++)a+=n[i];n[i]=a}return n.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",i=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let n="";for(let r=0;r<e.fraction_denominator_digits;r++)n+="#";t+=n,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=n}else if(e.has_number_format){for(i=0;i<e.integer_min_digits;i++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\\d#]{1,3}(?=([\\d#]{3})+(?![\\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",i=0;i<e.decimal_min_digits;i++)t+="0";for(;i<e.decimal_max_digits;i++)t+="#"}if(e.scaling){let n=Math.log10(e.scaling)/3;for(i=0;i<n;i++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.flag===6?"["+n.text+"]":n.text).join("")+t+e.suffix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let i=this.transform_value(e);if(Ft(i))e=i;else return typeof i=="string"?i:this.FormatParts(i)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],i=[],n=!1,r=!!e.imaginary;r&&(t=this.FormatParts(e.imaginary),r=t.some(u=>/[1-9]/.test(u.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",n=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",n=!0));let a=!!e.real;a&&(i=this.FormatParts(e.real),a=i.some(u=>/[1-9]/.test(u.text)));let o=[];if(a||!a&&!r){if(o.push(...i),r){let u=Math.abs(e.imaginary);o.push({text:e.imaginary<0?` ${ke.minus_character} `:" + "});let h=n?[]:this.FormatParts(Math.abs(e.imaginary));o.push(...h,{text:ke.imaginary_character})}}else r&&o.push(...t,{text:ke.imaginary_character});return o}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:i}=this.BaseFormat(e),n=[];if(i.date_format||i.string_format)for(let r of t)typeof r=="string"?n.push({text:r}):n.push(r);else this.magic_decimal&&t[1]===""&&t.splice(1,1),n=[...i.prefix.map(r=>({...r})),{text:i.has_number_format?t.join(le.decimal_separator):""},...i.suffix.map(r=>({...r}))];for(let r=1;r<n.length;r++)n[r].flag===n[r-1].flag&&(n[r].text=n[r-1].text+n[r].text,n[r-1].text="");return n.filter(r=>r.text)}Format(e,t=0){return ke.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=us(e),i=this.sections[0],n=t.getUTCHours();return i.twelve_hour&&(n>12&&(n-=12),n===0&&(n=12)),{parts:i.prefix.map(a=>{if(a.flag===4)return a.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(a.flag===3){switch(a.text.toLowerCase()){case"am/pm":case"a/p":{let u=a.text.split("/");return{text:t.getUTCHours()>12?u[1]:u[0]}}case"mmmmm":return{text:le.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return a.text==="MMMM"?{text:le.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.long_months[t.getUTCMonth()]};case"mmm":return a.text==="MMM"?{text:le.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return a.text==="DDDDD"||a.text==="DDDD"?{text:le.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.long_days[t.getUTCDay()]};case"ddd":return a.text==="DDD"?{text:le.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(n.toString(),2)};case"h":return{text:this.ZeroPad(n.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let o=a.text.match(/^(s+)\\.(0+)$/);if(o)return{text:this.ZeroPad(t.getUTCSeconds().toString(),o[1].length)+le.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(o[2].length).substr(2)}}return{...a}}),section:i}}StringFormat(e,t){let i=[];for(let n of t.prefix)n.flag===5?i.push({text:e}):i.push({...n});return{parts:i,section:t}}Round2(e,t){let i=Math.pow(10,t);return Math.round(i*e)/i}FormatFraction(e,t){t.percent&&(e*=100);let i={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)i.denominator=t.fraction_denominator,i.numerator=Math.round(e*i.denominator);else if(i.error){let r=ke.fraction_limits[t.fraction_denominator_digits-1]||ke.fraction_limits[0];for(let a=2;a<=r;a++){let o=Math.round(e*a),u=Math.abs(o/a-e);if(u<i.error&&(i={numerator:o,denominator:a,error:u},!u))break}}let n=[];if(t.fraction_integer){let r=Math.floor(i.numerator/i.denominator);i.numerator%=i.denominator,(r||!i.numerator)&&(n.push(r.toString()),i.numerator&&n.push(" "))}else i.numerator||n.push("0");return i.numerator&&(n.push(i.numerator.toString()),n.push("/"),n.push(i.denominator.toString())),n.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],i=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let n=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,r=Math.pow(10,-n)/2,a=Math.abs(e);if(a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2]),t.scaling&&(a/=t.scaling,a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let o="";if(t.fraction_format)return{parts:[this.FormatFraction(a,t)],section:t};t.exponential?o=a.toExponential(t.decimal_max_digits):(t.percent&&(a*=100),o=this.Round2(a,t.decimal_max_digits).toFixed(t.decimal_max_digits)),i&&(o=o.replace(i,""));let u=o.split(".");for(;u[0].length<t.integer_min_digits;)u[0]=("0000000000000000"+u[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&u[0]==="0"&&(u[0]=""),t.grouping&&(u[0]=u[0].replace(ke.grouping_regexp,"$&"+le.grouping_separator)),{parts:u,section:t}}},De=ke;ie(De,"grouping_regexp",/\\d{1,3}(?=(\\d{3})+(?!\\d))/g),ie(De,"fraction_limits",[9,99,999,9999]),ie(De,"imaginary_character","\\u{1D456}"),ie(De,"minus_character","-");var ve=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let i=this.symbolc_name_map[e.toLowerCase()],n=this.cache[i||e];return n||(n=new De(e),this.cache[e]=n),n}static Equals(e,t){if(e===t)return!0;let i=this.Get(e),n=this.Get(t);return i.pattern===n.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new De(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new De("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};ie(ve,"cache",{}),ie(ve,"complex_general"),ie(ve,"symbolc_name_map",{}),ie(ve,"base_formats",{Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"}),ie(ve,"aliases",{Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"});ve.InitCache();var ci=new Date().getUTCFullYear(),qt=class{compare_day;compare_month;TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let i=new Date(t),r=e.replace(/[\\d\\-\\\\/,.\\s]+/g," ").toLocaleLowerCase().split(/\\s+/).map(u=>u.trim()).filter(u=>!!u);if(!r.length)return t;if(!this.compare_month){this.compare_month={};for(let u=0;u<12;u++)this.compare_month[le.date_components.long_months[u].toLocaleLowerCase().replace(/\\./,"")]=u,this.compare_month[le.date_components.short_months[u].toLocaleLowerCase().replace(/\\./,"")]=u}if(!this.compare_day){this.compare_day={};for(let u=0;u<7;u++)this.compare_day[le.date_components.long_days[u].toLocaleLowerCase().replace(/\\./,"")]=u,this.compare_day[le.date_components.short_days[u].toLocaleLowerCase().replace(/\\./,"")]=u}let a=!1,o=!1;for(let u of r){let h=!1;for(let[l,c]of Object.entries(this.compare_month))if(u===l){if(a||i.getUTCMonth()!==c)return!1;h=!0,a=!0}if(!h){for(let[l,c]of Object.entries(this.compare_day))if(u===l){if(o||i.getUTCDay()!==c)return!1;h=!0,o=!0}}if(!h)return!1}return o&&!a?!1:t}TryParse(e=""){let t=0;if(e[0]==="\'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let i=e.trim(),n=i.match(/^[$](.*?)$/);n&&(i=n[1],t|=8);let r=i.match(/^\\((.*?)\\)$/);r&&(i=r[1],t|=32);let a=i.match(/^(.*?)%\\s*$/);a&&(i=a[1],t|=4),le.decimal_separator==="."?/,/.test(i)&&(i=i.replace(/,/g,""),t|=16):(i=i.replace(/(\\d)\\s+/g,"$1"),i=i.replace(/\\./g,""),i=i.replace(/,/,"."));let o=Number(i);if(o===null||isNaN(o)){let u=e.toLowerCase();if(u==="false")return{value:!1,type:4};if(u==="true")return{value:!0,type:4};let h=this.TestDate(e);if(h!==!1&&!isNaN(h)){let l=new Date(h),c=l.getUTCFullYear();if(c>=ci-200&&c<=ci+200)return t=64,(l.getHours()||l.getMinutes()||l.getSeconds())&&(t|=128),{value:li(h),type:3,hints:t}}return{value:e,type:2}}if(r&&(o=-o),a){let u=o<0?-1:1,h=(u*o).toString().split(".");h[0]=("00"+h[0]).replace(/(\\d\\d)$/,".$1"),o=Number(h.join(""))*u}return/e/.test(e)&&(t|=2),{value:o,type:3,hints:t}}},ho=new qt;var di=Fe(ut());var Jt={top:{},left:{},bottom:{},right:{},diagonal:{}},mt=class{theme=new Be;cell_xfs=[];fonts=[];borders=[];fills=[];number_formats=[];base_number_format_id=200;modified=!1;Clamp(e,t,i){return Math.max(t,Math.min(e,i))}TintColor(e,t){let i=parseInt(e.substr(0,2),16),n=parseInt(e.substr(2,2),16),r=parseInt(e.substr(4,2),16);return t<0?(i=Math.round(i*t+i),n=Math.round(n*t+n),r=Math.round(r*t+r)):(i=Math.round((255-i)*t+i),n=Math.round((255-n)*t+n),r=Math.round((255-r)*t+r)),[i,n,r].map(a=>{let o=this.Clamp(a,0,255).toString(16);return o.length<2?"0"+o:o}).join("")}StyleOptionsFromProperties(e){let t=JSON.parse(JSON.stringify(e));for(let h of Object.keys(t))t[h]==="none"&&delete t[h];let i={},n={pattern_type:"none"},r=JSON.parse(JSON.stringify(Jt)),a={font:i,border:r};t.number_format&&(a.number_format={format:ve.Translate(t.number_format),symbolic_name:t.number_format}),t.font_size?.unit&&t.font_size.value&&(t.font_size.unit!=="pt"?console.warn("can\'t handle non-point font (FIXME)"):i.size=t.font_size.value),t.bold&&(i.bold=!0),t.italic&&(i.italic=!0),t.underline&&(i.underline=!0),t.text&&(t.text.text?i.color_argb=t.text.text:typeof t.text.theme=="number"&&(i.color_theme=t.text.theme,t.text.tint&&(i.color_tint=t.text.tint)));let o=(h,l)=>{h.width&&(l.style="thin",h.color.text?l.rgba=h.color.text:typeof h.color.theme=="number"?(l.theme=h.color.theme,h.color.tint&&(l.tint=h.color.tint)):l.color=64)},u=me.CompositeBorders(t);switch(o(u.top,r.top),o(u.left,r.left),o(u.right,r.right),o(u.bottom,r.bottom),t.vertical_align){case me.VerticalAlign.Top:a.vertical_alignment="top";break;case me.VerticalAlign.Middle:a.vertical_alignment="center";break}switch(t.horizontal_align){case me.HorizontalAlign.Center:a.horizontal_alignment="center";break;case me.HorizontalAlign.Left:a.horizontal_alignment="left";break;case me.HorizontalAlign.Right:a.horizontal_alignment="right";break}return t.fill&&(n.pattern_type="solid",t.fill.text?n.fg_color={argb:t.fill.text}:typeof t.fill.theme=="number"?(n.fg_color={theme:t.fill.theme},t.fill.tint&&(n.fg_color.tint=t.fill.tint)):n.fg_color={theme:1},a.fill=n),t.wrap&&(a.wrap=!0),a}CellXfToStyle(e){let t={},i=mt.default_styles[e.number_format];if(!i){for(let u of this.number_formats)if(u.id===e.number_format&&u.format){i=u.format;break}}if(i){let u=/\\[\\$(.)-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(u,"$1");let h=/\\[\\$-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(h,""),t.number_format=i}let n=this.fonts[0],r=this.fonts[e.font||0];r&&(r.bold&&(t.bold=!0),r.italic&&(t.italic=!0),r.underline&&(t.underline=!0),r.strike&&(t.strike=!0),n&&n.size&&r.size&&n.size!==r.size&&(t.font_size={value:100*r.size/n.size,unit:"%"}),r.color_argb?t.text={text:"#"+(r.color_argb.length>6?r.color_argb.substr(r.color_argb.length-6):r.color_argb)}:typeof r.color_theme=="number"&&(t.text={theme:r.color_theme}));let a=this.fills[e.fill||0];if(a&&a.pattern_type!=="none"){if(a.pattern_type==="gray"){let u=Math.round((a.pattern_gray||0)/1e3*255);t.fill={text:`rgb(${u}, ${u}, ${u})`}}a.pattern_type==="solid"&&a.fg_color&&(a.fg_color.argb?t.fill={text:"#"+(a.fg_color.argb.length>6?a.fg_color.argb.substr(a.fg_color.argb.length-6):a.fg_color.argb)}:typeof a.fg_color.theme=="number"&&(t.fill={theme:a.fg_color.theme},a.fg_color.tint&&(t.fill.tint=Math.round(a.fg_color.tint*1e3)/1e3)))}switch(e.horizontal_alignment){case"center":t.horizontal_align=me.HorizontalAlign.Center;break;case"right":t.horizontal_align=me.HorizontalAlign.Right;break;case"left":t.horizontal_align=me.HorizontalAlign.Left;break}switch(e.vertical_alignment){case"center":t.vertical_align=me.VerticalAlign.Middle;break;case"top":t.vertical_align=me.VerticalAlign.Top;break;case"bottom":t.vertical_align=me.VerticalAlign.Bottom;break}e.wrap_text&&(t.wrap=!0);let o=this.borders[e.border||0];return o&&(o.bottom.style&&(o.bottom.style==="double"?t.border_bottom=2:t.border_bottom=1),o.left.style&&(t.border_left=1),o.top.style&&(t.border_top=1),o.right.style&&(t.border_right=1)),t}CellXfToStyles(){return this.cell_xfs.map(e=>this.CellXfToStyle(e))}EnsureNumberFormat(e){if(typeof e.format>"u"||e.symbolic_name&&/^general$/i.test(e.symbolic_name))return 0;for(let i=0;i<100;i++){let n=mt.default_styles[i];if(n&&n===e.format)return i}for(let i of this.number_formats)if(i.format===e.format)return i.id||0;this.modified=!0;let t={id:this.base_number_format_id++,format:e.format};return this.number_formats.push(t),t.id}CompareBorderEdge(e,t){return e.color===t.color&&e.rgba===t.rgba&&e.style===t.style&&e.theme===t.theme&&e.tint===t.tint}CompareBorder(e,t){return this.CompareBorderEdge(e.top,t.top)&&this.CompareBorderEdge(e.left,t.left)&&this.CompareBorderEdge(e.bottom,t.bottom)&&this.CompareBorderEdge(e.right,t.right)&&this.CompareBorderEdge(e.diagonal,t.diagonal)}EnsureBorder(e){for(let i=0;i<this.borders.length;i++){let n=this.borders[i];if(this.CompareBorder(n,e))return i}this.modified=!0;let t=JSON.parse(JSON.stringify(e));return this.borders.push(t),this.borders.length-1}MatchColor(e,t){return!e&&!t?!0:!e||!t?!1:e.argb===t.argb&&e.indexed===t.indexed&&e.theme===t.theme&&e.tint===t.tint}EnsureFill(e){for(let i=0;i<this.fills.length;i++){let n=this.fills[i];if(this.MatchColor(e.bg_color,n.bg_color)&&this.MatchColor(e.fg_color,n.fg_color)&&e.pattern_gray===n.pattern_gray&&e.pattern_type===n.pattern_type)return i}this.modified=!0;let t={...e};return this.fills.push(t),this.fills.length-1}EnsureFont(e){let t={...this.fonts[0],...e};for(let i=0;i<this.fonts.length;i++){let n=this.fonts[i];if(n.bold===t.bold&&n.italic===t.italic&&n.underline===t.underline&&n.size===t.size&&n.strike===t.strike&&n.color_argb===t.color_argb&&n.color_theme===t.color_theme&&n.color_tint===t.color_tint&&n.family===t.family)return i}return this.modified=!0,this.fonts.push(t),this.fonts.length-1}EnsureStyle(e){let t=this.EnsureFont(e.font||{}),i=this.EnsureBorder(e.border||Jt),n=this.EnsureNumberFormat(e.number_format||{}),r=this.EnsureFill(e.fill||{pattern_type:"none"});for(let o=0;o<this.cell_xfs.length;o++){let u=this.cell_xfs[o];if(u.font===t&&u.fill===r&&u.border===i&&u.number_format===n&&!!u.wrap_text==!!e.wrap&&(!e.horizontal_alignment&&!u.horizontal_alignment||e.horizontal_alignment===u.horizontal_alignment)&&(!e.vertical_alignment&&!u.vertical_alignment||e.vertical_alignment===u.vertical_alignment))return o}this.modified=!0;let a={font:t,fill:r,border:i,number_format:n};return e.horizontal_alignment&&(a.horizontal_alignment=e.horizontal_alignment),e.vertical_alignment&&(a.vertical_alignment=e.vertical_alignment),e.wrap&&(a.wrap_text=!0),this.cell_xfs.push(a),this.cell_xfs.length-1}FromXML(e,t){let i=oe.FindAll.bind(oe,e);this.theme=t;let n=i("styleSheet/numFmts/numFmt");this.number_formats=n.map(r=>({id:Number(r.a$?.numFmtId||0),format:di.decode(r.a$?.formatCode||"")})),n=i("styleSheet/borders/border"),this.borders=n.map(r=>{let a=JSON.parse(JSON.stringify(Jt));return r.left&&(a.left.style=r.left.a$.style,a.left.color=Number(r.left.color?.a$?.indexed)),r.right&&(a.right.style=r.right.a$.style,a.right.color=Number(r.right.color?.a$?.indexed)),r.top&&(a.top.style=r.top.a$.style,a.top.color=Number(r.top.color?.a$?.indexed)),r.bottom&&(a.bottom.style=r.bottom.a$.style,a.bottom.color=Number(r.bottom.color?.a$?.indexed)),a}),n=i("styleSheet/cellXfs/xf"),this.cell_xfs=n.map(r=>{let a={number_format:Number(r.a$.numFmtId),font:Number(r.a$.fontId),fill:Number(r.a$.fillId),border:Number(r.a$.borderId),xfid:Number(r.a$.xfId)};return r.alignment&&(a.horizontal_alignment=r.alignment.a$.horizontal,a.vertical_alignment=r.alignment.a$.vertical,a.wrap_text=!!r.alignment.a$.wrapText),a}),n=i("styleSheet/fills/fill"),this.fills=n.map(r=>{let a={pattern_type:"none"};if(r.patternFill){let o=r.patternFill.a$?.patternType;switch(o){case"none":case void 0:break;case"solid":a.pattern_type="solid",r.patternFill.fgColor&&(a.fg_color={theme:r.patternFill.fgColor.a$?.theme?Number(r.patternFill.fgColor.a$.theme):void 0,indexed:r.patternFill.fgColor.a$?.indexed?Number(r.patternFill.fgColor.a$.indexed):void 0,tint:r.patternFill.fgColor.a$?.tint?Number(r.patternFill.fgColor.a$.tint):void 0,argb:r.patternFill.fgColor.a$?.rgb});break;default:{let u=o?.match(/^gray(\\d+)$/);if(u){a.pattern_type="gray",a.pattern_gray=Number(u[1]);break}}}}return a}),n=i("styleSheet/fonts/font"),this.fonts=n.map(r=>{let a={};return a.italic=typeof r.i<"u",a.bold=typeof r.b<"u",a.underline=typeof r.u<"u",a.strike=typeof r.strike<"u",r.sz&&(a.size=Number(r.sz.a$.val)),r.scheme&&(a.scheme=r.scheme.a$.val),r.name&&(a.name=r.name.a$.val),r.family&&(a.family=Number(r.family.a$.val)),r.color&&(r.color.a$?.theme&&(a.color_theme=Number(r.color.a$.theme)),r.color.a$?.tint&&(a.color_tint=Number(r.color.a$.tint)),r.color.a$?.rgb&&(a.color_argb=r.color.a$.rgb)),a})}},ze=mt;ie(ze,"default_styles",{0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"mm-dd-yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@"});var we=(s,e,t,i)=>{let r=`rId${Object.keys(s).length+1}`;return s[r]={id:r,type:e,target:t,mode:i},r};var ar=/[\\s-+=<>!()]/;var Xt=34,Qt=39,ls=160,hi=32,cs=9,ds=10,hs=13,Ne=48,Qe=57,Kt=46,er=43,Ke=45,pi=40,tr=41,et=44,ps=37,rr=95,gt=36,fs=123,ms=125,tt=91,fi=93,gs=33,mi=59,bs=35,As=64,Ge=65,rt=97,xs=69,ys=101,bt=90,At=122,ws=105;var ir=192,nr=312,sr={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},_s=Object.keys(sr).sort((s,e)=>e.length-s.length),Ds={"-":100,"+":100},We=class{argument_separator=",";decimal_mark=".";flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};r1c1_regex=/[rR]((?:\\[[-+]{0,1}\\d+\\]|\\d+))[cC]((?:\\[[-+]{0,1}\\d+\\]|\\d+))$/;argument_separator_char=et;decimal_mark_char=Kt;imaginary_char=ws;imaginary_number="i";id_counter=0;expression="";data=[];index=0;length=0;valid=!0;error_position;error;dependencies={addresses:{},ranges:{}};address_refcount={};full_reference_list=[];Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(i=>this.Walk(i,t));return;case"call":t(e)&&e.args.forEach(i=>this.Walk(i,t))}}Transpose(e){let t=e.length,i=[],n=0;for(let r=0;r<t;r++)Array.isArray(e[r])&&(n=Math.max(n,e[r].length));for(let r=0;r<n;r++){i[r]=[];for(let a=0;a<t;a++)i[r][a]=e[a][r]}return i}Render(e,t={}){let i=t.offset||{rows:0,columns:0},n=t.missing??"(missing)",{convert_decimal:r,convert_argument_separator:a,convert_imaginary_number:o,long_structured_references:u,table_name:h}=t,l=this.argument_separator+" ";a===","?l=", ":a===";"&&(l="; ");let c=this.imaginary_number;o&&(c=o);let A=r===","?",":".",p=this.decimal_mark===","?/,/:/\\./,m=this.decimal_mark===","?/,/g:/\\./g;switch(e.type){case"address":return this.AddressLabel(e,i);case"range":return this.AddressLabel(e.start,i)+":"+this.AddressLabel(e.end,i);case"missing":return n;case"array":return"{"+this.Transpose(e.values).map(g=>g.map(b=>typeof b=="string"?\'"\'+b+\'"\':b).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return r?e.text.replace(m,A):e.text;{let g=Math.abs(e.imaginary).toString();if((r===","||this.decimal_mark===",")&&(g=g.replace(/\\./,",")),e.real){let b=e.real.toString();(r===","||this.decimal_mark===",")&&(b=b.replace(/\\./,","));let w=Math.abs(e.imaginary);return`${b}${e.imaginary<0?" - ":" + "}${w===1?"":g}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${g}i`}break;case"literal":if(typeof e.value=="string")return\'"\'+e.value.replace(/"/g,\'""\')+\'"\';if(r&&typeof e.value=="number")if(e.text){let g=e.text;return r===","&&this.decimal_mark==="."&&(g=g.replace(/,/g,"")),g.replace(p,A)}else return e.value.toString().replace(/\\./,A);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(g=>this.Render(g,t)).join(l)+")":e.elements.map(g=>this.Render(g,t)).join(l);case"call":return e.name+"("+e.args.map(g=>this.Render(g,t)).join(l)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let g=e.column;/[^A-Za-z]/.test(g)&&(g="["+g+"]");let b=e.table;switch(!b&&u&&h&&(b=h),e.scope){case"all":return`${b}[[#all],${g}]`;case"row":return u?`${b}[[#this row],${g}]`:`${b}[@${g}]`;case"column":return`${b}[${g}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=mi;break;default:this.argument_separator_char=et;break}switch(this.decimal_mark){case",":this.decimal_mark_char=et;break;default:this.decimal_mark_char=Kt;break}for(let n=0;n<this.length;n++)this.data[n]=e.charCodeAt(n);let t=this.ParseGeneric(),i={};for(let n of Object.keys(this.dependencies.addresses))this.address_refcount[n]&&(i[n]=this.dependencies.addresses[n]);return this.dependencies.addresses=i,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let i=e.column;!e.absolute_column&&e.column!==1/0&&(i+=t.columns);let n=e.row;if(!e.absolute_row&&e.row!==1/0&&(n+=t.rows),n<0||i<0||n===1/0&&i===1/0)return"#REF";let r="";return e.sheet&&(r=(ar.test(e.sheet)?"\'"+e.sheet+"\'":e.sheet)+"!"),n===1/0?r+(e.absolute_column?"$":"")+this.ColumnLabel(i):i===1/0?r+(e.absolute_row?"$":"")+(n+1):r+(e.absolute_column?"$":"")+this.ColumnLabel(i)+(e.absolute_row?"$":"")+(n+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let i=this.ParseNext(t.length===0);if(typeof i=="number"){if(e.some(n=>i===n))break;if(i===pi){this.index++;let n=this.ParseGeneric([tr]);this.index++,n&&t.push({type:"group",id:this.id_counter++,elements:[n],explicit:!0})}else{let n=this.ConsumeOperator();n?t.push(n):(this.error=`unexpected character [1]: ${String.fromCharCode(i)}, 0x${i.toString(16)}`,this.valid=!1,this.index++)}}else t.push(i)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let i=[],n=a=>a.type==="literal"&&typeof a.value=="number"&&a.value%1===0,r=0;for(;r<t.length-3;r++)if(n(t[r])&&n(t[r+1])&&t[r+2].type==="operator"&&t[r+2].operator==="/"&&n(t[r+3])){let a=t[r],o=t[r+1],u=t[r+3],h=(a.value<0?-1:1)*(o.value/u.value);r+=3,i.push({id:t[r].id,type:"literal",text:this.expression.substring(a.position,u.position+1),value:a.value+h,position:a.position})}else i.push(t[r]);for(;r<t.length;r++)i.push(t[r]);t=i}if(t=t.map(i=>i.type==="identifier"&&i.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:i.position,text:i.name,id:this.id_counter++}:i),this.flags.dimensioned_quantities){let i=[],n;for(let r=0;r<t.length;r++){let a=t[r];if(!n)n=a;else if(a.type==="identifier"&&(n.type==="literal"||n.type==="group"||n.type==="call")){let o=a;for(;t[r+1]?.type==="identifier";)o.name+=" "+t[++r].name;i.push({type:"dimensioned",expression:n,unit:a,id:this.id_counter++}),n=void 0}else i.push(n),n=a}n&&i.push(n),t=i}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,i=e.name,n=i.split("!");if(n.length>1&&(t=n.slice(0,n.length-1).join("!"),i=i.substr(t.length+1),t[0]==="\'"))if(t.length>1&&t[t.length-1]==="\'")t=t.substr(1,t.length-2);else return;let r=i[0]==="$";i=(r?i.substr(1):i).toUpperCase();let a=Number(i);if(isNaN(a)){if(/[A-Z]{1,3}/.test(i)){let o=-1;for(let u=0;u<i.length;u++){let h=i[u].charCodeAt(0);o=26*(1+o)+(h-Ge)}return{type:"address",position:e.position,absolute_column:r,label:e.name,column:o,id:this.id_counter++,row:1/0,sheet:t}}}else if(a>0&&a!==1/0&&!/\\./.test(i))return{type:"address",position:e.position,absolute_row:r,label:e.name,row:a-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let i=0;i<e.length;i++){let n=e[i],r=e[i+1],a=e[i+2],o,u="",h;if(n&&r&&a&&r.type==="operator"&&r.operator===":"){if(n.type==="address"&&a.type==="address"){let l=n.position+n.label.length,c=a.position;o={type:"range",id:this.id_counter++,position:n.position,start:n,end:a,label:n.label+this.expression.substring(l,c)+a.label},u=o.start.label+":"+o.end.label,this.address_refcount[o.start.label]--,this.address_refcount[o.end.label]--;let A=[n.position,a.position];this.full_reference_list=this.full_reference_list.filter(p=>p.position!==A[0]&&p.position!==A[1])}else if((n.type==="literal"||n.type==="identifier")&&(a.type==="literal"||a.type==="identifier")){let l=this.UnitToAddress(n);if(!l&&n.type==="literal"&&typeof n.value=="number"&&n.value<0){let A={...n,text:(n.text||"").replace(/^-/,""),position:n.position+1,value:-n.value};l=this.UnitToAddress(A),l&&(h={type:"operator",operator:"-",position:n.position,id:this.id_counter++})}let c=this.UnitToAddress(a);l&&c&&(l.column===1/0&&c.column===1/0||l.row===1/0&&c.row===1/0)&&(u=l.label+":"+c.label,o={type:"range",id:this.id_counter++,position:l.position,start:l,end:c,label:u})}}o?(h&&t.push(h),t.push(o),this.dependencies.ranges[u]=o,this.full_reference_list.push(o),i+=2):t.push(n)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let i=e.right.imaginary;return e.operator==="-"&&(i=-i),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:i,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,i="";if(e.left.type==="address"&&e.right.type==="address"){let n=e.left.position+e.left.label.length,r=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(n,r)+e.right.label},i=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let a=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(o=>o.position!==a[0]&&o.position!==a[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let n=this.UnitToAddress(e.left),r=this.UnitToAddress(e.right);n&&r&&(n.column===1/0&&r.column===1/0||n.row===1/0&&r.row===1/0)&&(i=n.label+":"+r.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:n,end:r,label:i})}if(t)return this.dependencies.ranges[i]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let i=0;i<e.length;i++){let n=e[i];if(n.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(Ds[n.operator]){let r=this.BinaryToComplex(this.ArrangeUnits(e.slice(i+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};r.type==="binary"?(r.left={type:"unary",id:this.id_counter++,operator:n.operator,operand:r.left,position:n.position},n=r):n={type:"unary",id:this.id_counter++,operator:n.operator,operand:r,position:n.position},i=e.length}else return this.error=`unexpected character [2]: ${n.operator}`,this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(n);continue}if(t.length<2)t.push(n);else if(t[t.length-1].type==="operator"){let r=t[t.length-2],a=t[t.length-1],o=a.operator,u={type:"binary",id:this.id_counter++,left:r,operator:o,position:a.position,right:n};r.type==="binary"&&sr[o]>sr[r.operator]&&(u.left=r.left,u.operator=r.operator,u.position=r.position,u.right={type:"binary",id:this.id_counter++,left:r.right,right:n,operator:o,position:a.position}),t.splice(-2,2,u)}else return this.error="multiple expressions",this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===Xt)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=Ne&&t<=Qe||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===fs)return this.ConsumeArray();if(e&&(t===Ke||t===er)){let i=this.data[this.index+1];if(i>=Ne&&i<=Qe||i===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=Ge&&t<=bt||t>=rt&&t<=At||t===rr||t===bs||t===Qt||t===gt||t===tt||t>=ir&&t<=nr)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,i=0;for(;this.index<this.length;){let n=this.ParseNext(),r=this.index;if(typeof n=="number")switch(this.index++,n){case mi:i++,t=0;break;case et:t++;break;case ms:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=r,this.valid=!1);break}else switch(n.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][i]=n.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=r,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of _s)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let i=this.ParseGeneric([this.argument_separator_char,tr]);i!==null&&t.push(i);let n=this.data[this.index];if(n===this.argument_separator_char){this.index++,e++;for(let r=t.length;r<e;r++)t.push({type:"missing",id:this.id_counter++})}else if(n===tr)return this.index++,t}return t}ConsumeToken(e){let t=[e],i=this.index,n=e===Qt,r=0,a=!1;for(e===tt&&(r=1,a=!0),++this.index;this.index<this.length;this.index++){let l=this.data[this.index];if(l>=Ge&&l<=bt||l>=rt&&l<=At||l>=ir&&l<=nr||l===rr||l===gt||l===Kt||l===gs||n||l>=Ne&&l<=Qe||l===tt||r>0&&l===fi||l===Ke&&this.flags.r1c1&&r===1||r>0&&l===As&&this.data[this.index-1]===tt||r===1&&(l===et||l===hi)||r>1)t.push(l),l===tt&&(r++,a=!0),l===fi&&r--,l===Qt&&(n=!1);else break}let o=t.map(l=>String.fromCharCode(l)).join("");if(n)return this.error="unbalanced single quote",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(r)return this.error="unbalanced square bracket",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(o.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:i};if(o.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:i};if(this.ConsumeWhiteSpace(),this.data[this.index]===pi){let l=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:o,args:l,position:i}}if(this.flags.spreadsheet_semantics){let l=this.ConsumeAddress(o,i);if(l)return l;if(a){let c=this.ConsumeStructuredReference(o,i);if(c)return c}}let h={type:"identifier",id:this.id_counter++,name:o,position:i};return this.full_reference_list.push(h),h}ConsumeStructuredReference(e,t){let i=t,n=e.length,r=e,a="",o=0;for(;o<n;o++){if(e[o]==="["){e=e.substring(o);break}a+=e[o]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let u=e.split(",").map(A=>A.trim()),h="column",l="";if(u.length>2)return;u.length===2?(/\\[#this row\\]/i.test(u[0])?h="row":/\\[#all\\]/i.test(u[0])&&(h="all"),l=u[1]):(l=u[0],l[0]==="@"&&(h="row",l=l.substring(1,l.length))),l[0]==="["&&l[l.length-1]==="]"&&(l=l.substring(1,l.length-1));let c={type:"structured-reference",id:this.id_counter++,label:r,position:t,scope:h,column:l,table:a};return this.full_reference_list.push(c),c}ConsumeAddress(e,t){let i=t,n=e.length,r,a=e.split("!");if(a.length>1&&(r=a.slice(0,a.length-1).join("!"),t+=r.length+1),this.flags.r1c1){let c=a[a.length-1].match(this.r1c1_regex);if(c){let A={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:i,sheet:r,r1c1:!0};return c[1][0]==="["?(A.offset_row=!0,A.row=Number(c[1].substring(1,c[1].length-1))):A.row=Number(c[1])-1,c[2][0]==="["?(A.offset_column=!0,A.column=Number(c[2].substring(1,c[2].length-1))):A.column=Number(c[2])-1,A}}let o=this.ConsumeAddressColumn(t);if(!o)return null;t=o.position;let u=this.ConsumeAddressRow(t);if(!u)return null;t=u.position;let h=r?r+e.substr(r.length,t-i).toUpperCase():e.substr(0,t-i).toUpperCase();r&&r[0]==="\'"&&(r=r.substr(1,r.length-2));let l={type:"address",id:this.id_counter++,label:h,row:u.row,column:o.column,absolute_row:u.absolute,absolute_column:o.absolute,position:i,sheet:r};return n!==t-i?null:(this.dependencies.addresses[l.label]=l,this.address_refcount[l.label]=(this.address_refcount[l.label]||0)+1,this.full_reference_list.push(l),l)}ConsumeAddressRow(e){let t=this.data[e]===gt;t&&e++;let i=e,n=0;for(;;e++){let r=this.data[e];if(r>=Ne&&r<=Qe)n*=10,n+=r-Ne;else break}return i===e?!1:{absolute:t,row:n-1,position:e}}ConsumeAddressColumn(e){let t=-1,i=0,n=this.data[e]===gt;for(n&&e++;;e++,i++){if(i>=4)return!1;let r=this.data[e];if(r>=Ge&&r<=bt)t=26*(1+t)+(r-Ge);else if(r>=rt&&r<=At)t=26*(1+t)+(r-rt);else break}return t<0?!1:{absolute:n,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,i=!1,n=!1,r=0,a=0,o=0,u="integer",h=0,l=!1,c=this.index;for(;this.index<this.length;this.index++,h++){let p=this.data[this.index];if(p===this.decimal_mark_char)if(u==="integer")u="fraction";else break;else if(p===ps){r/=100,o/=100,this.index++;break}else if(p===er||p===Ke)if(h===0)p===Ke&&(n=!0);else break;else if(p===xs||p===ys)if(u==="integer"||u==="fraction")u="exponent",this.index<this.length-1&&(this.data[this.index+1]===er?this.index++:this.data[this.index+1]===Ke&&(this.index++,i=!0));else break;else if(p===this.imaginary_char){let m=this.data[this.index+1];if(m>=Ge&&m<=bt||m>=rt&&m<=At||m>=ir&&m<=nr||m===rr)break;if(u==="integer"||u==="fraction"){this.index++,l=!0;break}}else if(p>=Ne&&p<=Qe)switch(u){case"integer":r=r*10+(p-Ne);break;case"fraction":o=o*10+(p-Ne),a++;break;case"exponent":t=t*10+(p-Ne);break}else break}let A=r+o/Math.pow(10,a);return u==="exponent"&&(A=A*Math.pow(10,(i?-1:1)*t)),l?{type:"complex",id:this.id_counter++,position:e,imaginary:n?-A:A,real:0,text:this.expression.substring(c,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:n?-A:A,text:this.expression.substring(c,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===Xt&&(this.index++,this.index>=this.length||this.data[this.index]!==Xt))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===hi||e===cs||e===ds||e===hs||e===ls)this.index++;else return}}};var ur=class{constructor(){}static get instance(){return this._instance}HTML(e){let t=[];for(let i of e){let n=[];for(let r of i)r.pre&&n.push("<pre>"),r.emphasis&&n.push("<em>"),r.strong&&n.push("<strong>"),r.strike&&n.push("<strike>"),n.push(r.text),r.strike&&n.push("</strike>"),r.strong&&n.push("</strong>"),r.emphasis&&n.push("</em>"),r.pre&&n.push("</pre>");t.push(n.join(""))}return t.join(`<br/>\n`)}Dummy(e=""){return e.split(/\\n/).map(t=>[{text:t}])}Parse(e=""){let t=this.Tokenize(e);for(let i=0;i<t.length;i++){let n=t[i];if(n.type==="delimeter"){let r=t[i-1],a=t[i+1],o=!r||r.type==="whitespace"||r.type==="newline",u=r&&r.type==="text"&&/[^\\w\\d]$/.test(r.text),h=!a||a.type==="whitespace"||a.type==="newline",l=a&&a.type==="text"&&/^[^\\w\\d]/.test(a.text);n.left_flanking=!h&&(!l||o),n.right_flanking=!o&&(!u||h)}}return this.ApplyFormatting(t),this.Consolidate(t)}IsWhitespace(e){return e===" "||e===" "}IsNewline(e){return e==="\\r"||e===`\n`}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],i={},n=[],r={type:"text",text:""};for(let a of e)if(a.type==="newline")r.text.length&&n.push(r),r={...i,text:"",type:"text"},t.push(n),n=[];else switch((!!i.strong!=!!a.strong||!!i.emphasis!=!!a.emphasis||!!i.strike!=!!a.strike)&&(i.strong=!!a.strong,i.emphasis=!!a.emphasis,i.strike=!!a.strike,r.text.length&&n.push(r),r={...i,text:"",type:"text"}),a.type){case"text":case"whitespace":r.text+=a.text;break;case"delimeter":for(let o=0;o<a.length;o++)r.text+=a.char;break}return r.text.length&&n.push(r),n.length&&t.push(n),t}ApplyFormatting(e,t){let i=0,n=e.length;for(i=0;i<n;i++){let r=e[i];if(r.type==="delimeter"){if(t&&r.right_flanking&&t.char===r.char&&r.length>0)return{index:i,token:r};if(r.left_flanking){let a=this.ApplyFormatting(e.slice(i+1),r);if(a.token){let o=Math.min(a.token.length,r.length),u=r.char==="~",h=!u&&!!(o%2),l=!u&&o>=2;for(let c=i+1;c<=i+a.index;c++)e[c].strong=!!e[c].strong||l,e[c].emphasis=!!e[c].emphasis||h,e[c].strike=!!e[c].strike||u;a.token.length-=o,r.length-=o,r.length>0?i--:i+=a.index}}}}return{index:i}}Tokenize(e=""){let t=[],i=e.length,n=0,r=!1,a="";for(n=0;n<i;n++){let o=e[n];if(this.IsWhitespace(o)){a&&t.push({type:"text",text:a});let u=o;for(;;){let h=e[n+1];if(this.IsWhitespace(h))u+=h,n++;else break}t.push({type:"whitespace",text:u}),r=!1,a=""}else if(this.IsNewline(o)){a&&t.push({type:"text",text:a});let u=o;for(;;){let h=e[n+1];if(this.IsNewline(h))u+=h,n++;else break}t.push({type:"newline",text:u}),r=!1,a=""}else if(r)a+=o,r=!1;else if(this.IsDelimeter(o)){a&&t.push({type:"text",text:a});let u=o;for(;;){let h=e[n+1];if(h===o)u+=h,n++;else break}t.push({type:"delimeter",text:u,char:o,length:u.length}),r=!1,a=""}else o==="\\\\"?r=!0:a+=o}return a&&t.push({type:"text",text:a}),t}},or=ur;ie(or,"_instance",new ur);var gi={"c:tx":{"c:strRef":{"c:f":"","c:strCache":{"c:ptCount":{a$:{val:"1"}},"c:pt":{a$:{idx:"0"},"c:v":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},bi={"c:tx":{"c:rich":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:r":{"a:rPr":{a$:{lang:""}},"a:t":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},xt={"c:chartSpace":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:c16r2":"http://schemas.microsoft.com/office/drawing/2015/06/chart"},"c:date1904":{a$:{val:"0"}},"c:lang":{a$:{val:"en-US"}},"c:roundedCorners":{a$:{val:"0"}},"mc:AlternateContent":{a$:{"xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006"},"mc:Choice":{a$:{Requires:"c14","xmlns:c14":"http://schemas.microsoft.com/office/drawing/2007/8/2/chart"},"c14:style":{a$:{val:"102"}}},"mc:Fallback":{"c:style":{a$:{val:"2"}}}},"c:chart":{},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"bg1"}}},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:printSettings":{"c:headerFooter":{},"c:pageMargins":{a$:{b:"0.75",l:"0.7",r:"0.7",t:"0.75",header:"0.3",footer:"0.3"}},"c:pageSetup":{}}}};var Ai={"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:invertIfNegative":{a$:{val:"0"}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-F52E-47BC-822F-A046A80610BE}"}}}}},xi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:barChart":{"c:barDir":{a$:{val:"col"}},"c:grouping":{a$:{val:"clustered"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:gapWidth":{a$:{val:"219"}},"c:overlap":{a$:{val:"-27"}},"c:axId":[{a$:{val:"47003664"}},{a$:{val:"1789284464"}}]},"c:catAx":{"c:axId":{a$:{val:"47003664"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"1789284464"}},"c:crosses":{a$:{val:"autoZero"}},"c:auto":{a$:{val:"1"}},"c:lblAlgn":{a$:{val:"ctr"}},"c:lblOffset":{a$:{val:"100"}},"c:noMultiLvlLbl":{a$:{val:"0"}}},"c:valAx":{"c:axId":{a$:{val:"1789284464"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"General",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"47003664"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"between"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var yi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:doughnutChart":{"c:varyColors":{a$:{val:"1"}},"c:ser":{"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:dPt":{"c:idx":{a$:{val:"3"}},"c:bubble3D":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent4"}}},"a:ln":{a$:{w:"19050"},"a:solidFill":{"a:schemeClr":{a$:{val:"lt1"}}}},"a:effectLst":{}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000007-E886-49A6-AE6D-C67D8A27530F}"}}}}},"c:cat":{"c:strRef":{"c:f":""}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-3689-4BB4-A84F-05B9F3BBE577}"}}}}},"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}},"c:showLeaderLines":{a$:{val:"1"}}},"c:firstSliceAng":{a$:{val:"0"}},"c:holeSize":{a$:{val:"75"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:legend":{"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{a$:{rtl:"0"},"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var wi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:scatterChart":{"c:scatterStyle":{a$:{val:"lineMarker"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:axId":[{a$:{val:"2028657983"}},{a$:{val:"2023395087"}}]},"c:valAx":[{"c:axId":{a$:{val:"2028657983"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2023395087"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}},{"c:axId":{a$:{val:"2023395087"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"0.00",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2028657983"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}}],"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}},_i={"c:spPr":{"a:ln":{a$:{w:"19050",cap:"rnd"},"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:round":{}},"a:effectLst":{}},"c:marker":{"c:symbol":{a$:{val:"none"}}},"c:xVal":{"c:numRef":{"c:f":""}},"c:yVal":{"c:numRef":{"c:f":""}},"c:smooth":{a$:{val:"0"}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-1F6C-44A9-AA4F-6706F20CC72E}"}}}}};var lr=class{constructor(e,t=lr.next_chart_index++){this.options=e;this.index=t}relationships={};UpdateChartTitle(e){let t=this.options.title||{type:"literal",value:""};if(t&&t.type==="literal"){let i=JSON.parse(JSON.stringify(bi)),n=i["c:tx"]["c:rich"]["a:p"];n["a:r"]={"a:rPr":{a$:{lang:le.locale}},"a:t":t.value},e["c:title"]=i}else if(t){let i=JSON.parse(JSON.stringify(gi));i["c:tx"]["c:strRef"]["c:f"]=t.label,e["c:title"]=i}}toJSON(){switch(this.options.type){case"column":case"bar":return this.CreateBarChart();case"scatter":case"scatter2":return this.CreateScatterChart();case"donut":return this.CreateDonutChart();default:console.info("unhandled chart type",this.options.type)}return this.CreateBarChart()}CreateScatterChart(){let e=JSON.parse(JSON.stringify(xt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(wi));this.options.smooth&&(i["c:plotArea"]["c:scatterChart"]["c:scatterStyle"].a$.val="smoothMarker"),t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=t["c:chart"]["c:plotArea"]["c:scatterChart"]["c:ser"],r=!1;for(let a=0;a<this.options.data.length;a++){let o=JSON.parse(JSON.stringify(_i));if(o["c:idx"]={a$:{val:a.toString()}},o["c:order"]={a$:{val:a.toString()}},this.options.names&&this.options.names[a]){let u=this.options.names[a];switch(u.type){case"literal":o["c:tx"]={"c:v":u.value.toString()},r=!0;break;case"range":case"address":o["c:tx"]={"c:strRef":{"c:f":u.label}},r=!0;break}}o["c:spPr"]["a:ln"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${a+1}`,o["c:yVal"]["c:numRef"]["c:f"]=this.options.data[a]?.label,this.options.labels2&&this.options.labels2[a]&&(o["c:xVal"]["c:numRef"]["c:f"]=this.options.labels2[a]?.label),this.options.smooth&&(o["c:smooth"]={a$:{val:1}}),n.push(o)}return r&&(t["c:chart"]["c:legend"]={"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}}}),e}CreateDonutChart(){let e=JSON.parse(JSON.stringify(xt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(yi));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:doughnutChart"];return n&&(n["c:ser"]["c:cat"]["c:strRef"]["c:f"]=this.options.labels?.label||"",n["c:ser"]["c:val"]["c:numRef"]["c:f"]=this.options.data[0]?.label||""),e}CreateBarChart(){let e=JSON.parse(JSON.stringify(xt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(xi));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:barChart"];if(n){let r=n["c:barDir"];r&&(r.a$.val=this.options.type==="bar"?"bar":"col");let a=n["c:ser"];for(let o=0;o<this.options.data.length;o++){let u=JSON.parse(JSON.stringify(Ai));u["c:idx"]={a$:{val:o.toString()}},u["c:order"]={a$:{val:o.toString()}},u["c:spPr"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${o+1}`,!o&&this.options.labels&&(u["c:cat"]={"c:strRef":{"c:f":this.options.labels.label}}),u["c:val"]["c:numRef"]["c:f"]=this.options.data[o]?.label,a.push(u)}}return e}},Le=lr;ie(Le,"next_chart_index",1);var cr=class{constructor(e,t=cr.next_image_index++){this.options=e;this.index=t;switch(e.mimetype){case"svg+xml":this.extension="svg";break;case"image/png":this.extension="png";break;case"jpg":this.extension="jpeg";break;case"svg":case"png":case"jpeg":case"gif":this.extension=e.mimetype;break;default:console.warn("unhandled mime type",e.mimetype);break}}extension=""},it=cr;ie(it,"next_image_index",1);var Di=9525,dr=class{constructor(e=dr.next_drawing_index++){this.index=e}sheet_drawing_relationship=0;charts=[];images=[];relationships={};AddImage(e,t){let i=new it(e);if(i.extension){let n=we(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`../media/image${i.index}.${i.extension}`);this.images.push({image:i,relationship:n,anchor:t})}}AddChart(e,t){let i=new Le(e),n=we(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",`../charts/chart${i.index}.xml`);this.charts.push({chart:i,anchor:t,relationship:n})}CornerToJSON(e){return{"xdr:col":e.column,"xdr:colOff":(e.column_offset||0)*Di,"xdr:row":e.row,"xdr:rowOff":(e.row_offset||0)*Di}}AnchorToJSON(e){return{"xdr:from":{...this.CornerToJSON(e.from)},"xdr:to":{...this.CornerToJSON(e.to)}}}toJSON(){let e=this.images.map(n=>({a$:{editAs:"oneCell"},...this.AnchorToJSON(n.anchor),"xdr:pic":{"xdr:nvPicPr":{"xdr:cNvPr":{a$:{id:n.image.index+1,name:"Image "+n.image.index}},"xdr:cNvPicPr":{"a:picLocks":{a$:{noChangeAspect:1}}}},"xdr:blipFill":{"a:blip":{a$:n.image.extension==="svg"?{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships"}:{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":n.relationship},"a:extLst":{"a:ext":[{a$:{uri:"{28A0092B-C50C-407E-A947-70E740481C1C}"},"a14:useLocalDpi":{a$:{"xmlns:a14":"http://schemas.microsoft.com/office/drawing/2010/main",val:0}}},n.image.extension==="svg"?{a$:{uri:"{96DAC541-7B7A-43D3-8B79-37D633B846F1}"},"asvg:svgBlip":{a$:{"xmlns:asvg":"http://schemas.microsoft.com/office/drawing/2016/SVG/main","r:embed":n.relationship}}}:void 0]}},"a:stretch":{"a:fillRect":{}}},"xdr:spPr":{"a:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:4057650,cy:6172200}}},"a:prstGeom":{a$:{prst:"rect"},"a:avLst":{}}}},"xdr:clientData":{}})),t=this.charts.map(n=>({...this.AnchorToJSON(n.anchor),"xdr:graphicFrame":{a$:{macro:""},"xdr:nvGraphicFramePr":{"xdr:cNvPr":{a$:{id:n.chart.index+1,name:`Chart ${n.chart.index}`}},"xdr:cNvGraphicFramePr":{}},"xdr:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:0,cy:0}}},"a:graphic":{"a:graphicData":{a$:{uri:"http://schemas.openxmlformats.org/drawingml/2006/chart"},"c:chart":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":n.relationship}}}}},"xdr:clientData":{}}));return{"xdr:wsDr":{a$:{"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},"xdr:twoCellAnchor":[...t,...e]}}}},Ve=dr;ie(Ve,"next_drawing_index",1);var Se=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n`,yt=class{zip;xmloptions={format:!0,attributesGroupName:"a$",textNodeName:"t$",ignoreAttributes:!1,suppressEmptyNode:!0};xmlbuilder1=new wt.XMLBuilder(this.xmloptions);xmlparser2=new wt.XMLParser(ht);parser=new We;decorated_functions={};async Init(e={}){for(let t of Object.keys(e))this.decorated_functions[t.toLowerCase()]=e[t];this.zip=await new vi.default().loadAsync(Ar,{base64:!0})}async WriteRels(e,t,i=!1){if(!this.zip)throw new Error("missing zip");let n=Object.keys(e),r={Relationships:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},Relationship:n.map(o=>{let u=e[o],h={Id:u.id,Target:u.target,Type:u.type};return u.mode&&(h.TargetMode=u.mode),{a$:h}})}},a=Se+this.xmlbuilder1.build(r);i&&console.info(a),await this.zip?.file(t,a)}async WriteStyleCache(e){if(!this.zip)throw new Error("missing zip");let t=l=>{let c={};return l.indexed!==void 0&&(c.indexed=l.indexed),l.theme!==void 0&&(c.theme=l.theme),l.tint!==void 0&&(c.tint=l.tint),l.argb!==void 0&&(c.rgb=l.argb),c},i=e.cell_xfs.map(l=>{let c={a$:{numFmtId:l.number_format,fontId:l.font,fillId:l.fill,borderId:l.border}};return(l.horizontal_alignment||l.vertical_alignment||l.wrap_text)&&(c.alignment={a$:{}},l.horizontal_alignment&&(c.alignment.a$.horizontal=l.horizontal_alignment),l.vertical_alignment&&(c.alignment.a$.vertical=l.vertical_alignment),l.wrap_text&&(c.alignment.a$.wrapText=1)),c}),n=l=>{if(l.color)return{indexed:l.color};if(l.rgba)return{rgb:l.rgba};if(l.theme){let c={theme:l.theme};return l.tint&&(c.tint=l.tint),c}},r=e.borders.map(l=>{let c={left:{},right:{},top:{},bottom:{},diagonal:{}};if(l.top.style){c.top.a$={style:l.top.style};let A=n(l.top);A&&(c.top.color={a$:A})}if(l.left.style){c.left.a$={style:l.left.style};let A=n(l.left);A&&(c.left.color={a$:A})}if(l.bottom.style){c.bottom.a$={style:l.bottom.style};let A=n(l.bottom);A&&(c.bottom.color={a$:A})}if(l.right.style){c.right.a$={style:l.right.style};let A=n(l.right);A&&(c.right.color={a$:A})}if(l.diagonal.style){c.diagonal.a$={style:l.diagonal.style};let A=n(l.diagonal);A&&(c.diagonal.color={a$:A})}return c}),a=e.fills.map(l=>{let c={a$:{patternType:l.pattern_type}};return l.pattern_gray!==void 0&&(c.a$.patternType=`gray${l.pattern_gray}`),l.bg_color&&(c.bgColor={a$:t(l.bg_color)}),l.fg_color&&(c.fgColor={a$:t(l.fg_color)}),{patternFill:c}}),o=e.fonts.map(l=>{let c={};return l.bold&&(c.b=""),l.italic&&(c.i=""),l.underline&&(c.u=""),l.strike&&(c.strike=""),l.size!==void 0&&(c.sz={a$:{val:l.size}}),l.family!==void 0&&(c.family={a$:{val:l.family}}),l.name!==void 0&&(c.name={a$:{val:l.name}}),l.scheme!==void 0&&(c.scheme={a$:{val:l.scheme}}),l.color_argb!==void 0?c.color={a$:{rgb:l.color_argb}}:l.color_theme!==void 0&&(c.color={a$:{theme:l.color_theme}},l.color_tint&&(c.color.a$.tint=l.color_tint)),c}),u={styleSheet:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2 xr","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision"}}};e.number_formats.length&&(u.styleSheet.numFmts={a$:{count:e.number_formats.length},numFmt:e.number_formats.map(l=>({a$:{numFmtId:l.id,formatCode:l.format}}))}),o.length&&(u.styleSheet.fonts={a$:{count:o.length},font:o}),a.length&&(u.styleSheet.fills={a$:{count:a.length},fill:a}),r.length&&(u.styleSheet.borders={a$:{count:r.length},border:r}),i.length&&(u.styleSheet.cellXfs={a$:{count:i.length},xf:i});let h=Se+this.xmlbuilder1.build(u);await this.zip?.file("xl/styles.xml",h)}async WriteSharedStrings(e){if(!this.zip)throw new Error("missing zip");let t={sst:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:e.strings.length,uniqueCount:e.strings.length},si:[...e.strings.map(n=>({t:n}))]}},i=Se+this.xmlbuilder1.build(t);await this.zip?.file("xl/sharedStrings.xml",i)}StyleFromCell(e,t,i,n,r={}){let a=e.styles||e.cell_style_refs||[],o=[e.sheet_style];if(e.row_pattern&&e.row_pattern.length&&o.push(e.row_pattern[i%e.row_pattern.length]),e.row_style){let h=e.row_style[i];typeof h=="number"&&(h=a[h]),h&&o.push(h)}if(e.column_style){let h=e.column_style[n];typeof h=="number"&&(h=a[h]),h&&o.push(h)}o.push(r);let u=t.StyleOptionsFromProperties(me.Composite(o));return t.EnsureStyle(u)}NormalizeAddress(e,t){let i=e.type==="address"?[e]:[e.start,e.end];for(let n of i)n.absolute_row=!0,n.absolute_column=!0,n.sheet||(n.sheet=t.name);return e.type==="range"&&(e.end.sheet=void 0),e.label=this.parser.Render(e),e}AnnotationLayoutToAnchor(e,t){let i=n=>{let r=t.column_width&&t.column_width[n.address.column]?t.column_width[n.address.column]:t.default_column_width||100,a=t.row_height&&t.row_height[n.address.row]?t.row_height[n.address.row]:t.default_row_height||20;return{...n.address,row_offset:Math.round(n.offset.y*a),column_offset:Math.round(n.offset.x*r)}};return{from:i(e.tl),to:i(e.br)}}AnnotationRectToAnchor(e,t){let i={from:{row:-1,column:-1},to:{row:-1,column:-1}},n={...e,right:e.left+e.width,bottom:e.top+e.height};for(let r=0,a=0;a<1e3;a++){let o=t.column_width&&t.column_width[a]?t.column_width[a]:t.default_column_width||100;if(i.from.column<0&&n.left<=r+o&&(i.from.column=a,i.from.column_offset=n.left-r),i.to.column<0&&n.right<=r+o){i.to.column=a,i.to.column_offset=n.right-r;break}r+=o}for(let r=0,a=0;a<1e3;a++){let o=t.row_height&&t.row_height[a]?t.row_height[a]:t.default_row_height||20;if(i.from.row<0&&n.top<=r+o&&(i.from.row=a,i.from.row_offset=n.top-r),i.to.row<0&&n.bottom<=r+o){i.to.row=a,i.to.row_offset=n.bottom-r;break}r+=o}return i}ParseImages(e){let t=[];for(let i of e.annotations||[])if(i.type==="image"&&i.data?.src){let n=i.data.src,r=n.match(/^data:image\\/([^;]*?);base64,/);if(r){let a=n.substr(r[0].length),o=r[1],u={data:a,mimetype:o,encoding:"base64"};switch(o){case"svg+xml":case"webp":case"jpeg":case"jpg":case"image/png":case"png":case"gif":i.rect?t.push({anchor:this.AnnotationRectToAnchor(i.rect,e),options:u}):i.layout?t.push({anchor:this.AnnotationLayoutToAnchor(i.layout,e),options:u}):console.warn("annotation missing layout");break;default:console.info("unhandled image type",o);break}}}return t}ParseCharts(e){let t=[],i=(n,r,a)=>{if(n.type==="range")r.data.push(this.NormalizeAddress(n,e));else if(n.type==="call"){if(/group/i.test(n.name))for(let o of n.args||[])i(o,r,a?a+" (recurse)":void 0);else if(/series/i.test(n.name)){let[o,u,h]=n.args;h&&h.type==="range"?(r.data.push(this.NormalizeAddress(h,e)),o&&(r.names||(r.names=[]),o.type==="address"&&this.NormalizeAddress(o,e),o.type==="range"?(this.NormalizeAddress(o.start,e),r.names[r.data.length-1]=o.start):r.names[r.data.length-1]=o),r.labels2||(r.labels2=[]),u&&u.type==="range"&&(r.labels2[r.data.length-1]=this.NormalizeAddress(u,e))):console.info("invalid series missing Y",{y:h,arg:n,ref:a})}}};for(let n of e.annotations||[]){let r=this.parser.Parse(n.formula||"");if(r.expression&&r.expression.type==="call"){let a="";switch(r.expression.name.toLowerCase()){case"line.chart":a="scatter";break;case"scatter.line":a="scatter2";break;case"donut.chart":a="donut";break;case"bar.chart":a="bar";break;case"column.chart":a="column";break}if(a==="column"||a==="donut"||a==="bar"||a==="scatter"||a==="scatter2"){let o={type:a,data:[]},u=a==="scatter2"?1:2,h=r.expression.args[u];if(h&&h.type==="literal"?o.title=h:h&&h.type==="address"&&(o.title=this.NormalizeAddress(h,e)),r.expression.args[0]){let l=r.expression.args[0];if(a==="scatter2"||a==="bar"||a==="column"||a==="scatter")i(l,o,e.name);else if(l.type==="range")o.data.push(this.NormalizeAddress(l,e));else if(l.type==="call"&&/group/i.test(l.name))for(let c of l.args)c.type==="range"?o.data.push(this.NormalizeAddress(c,e)):c.type==="call"&&/series/i.test(c.name)&&c.args[2]&&c.args[2].type==="range"&&o.data.push(this.NormalizeAddress(c.args[2],e));else l.type==="call"&&/series/i.test(l.name)&&l.args[2]&&l.args[2].type==="range"&&o.data.push(this.NormalizeAddress(l.args[2],e))}a!=="scatter2"&&r.expression.args[1]&&r.expression.args[1].type==="range"&&(o.labels=this.NormalizeAddress(r.expression.args[1],e)),(a==="scatter"&&r.expression.args[4]&&r.expression.args[4].type==="literal"&&r.expression.args[4].value.toString().toLowerCase()==="smooth"||a==="scatter2"&&r.expression.args[2]&&r.expression.args[2].type==="literal"&&/smooth/i.test(r.expression.args[2].value.toString()))&&(o.smooth=!0),n.rect?t.push({anchor:this.AnnotationRectToAnchor(n.rect,e),options:o}):n.layout?t.push({anchor:this.AnnotationLayoutToAnchor(n.layout,e),options:o}):console.warn("annotation missing layout")}}}return t}FormulaText(e,t){if(e[0]!=="=")return e;let i=this.parser.Parse(e);if(i.expression){this.parser.Walk(i.expression,r=>{if(r.type==="call"){let a=r.name.toLowerCase();this.decorated_functions[a]&&(r.name=this.decorated_functions[a]+"."+r.name)}return!0});let n=t.table?.name||"";return this.parser.Render(i.expression,{missing:"",long_structured_references:!0,table_name:n})}else return console.warn("parsing function failed"),console.warn(e),e.substring(1)}async Export(e){let t=0,i=[];for(let D=0;D<e.sheet_data.length;D++){let _=e.sheet_data[D],Z=_.id||0;Z&&(i[Z]=_.name||""),Z===e.active_sheet&&(t=D)}let n=new Ue,r=new ze,a=new Be,o=await this.zip?.file("xl/theme/theme1.xml")?.async("text");a.FromXML(this.xmlparser2.parse(o||"")),o=await this.zip?.file("xl/styles.xml")?.async("text"),r.FromXML(this.xmlparser2.parse(o||""),a),Ve.next_drawing_index=1,Le.next_chart_index=1;let u=[],h=[];for(let D=0;D<e.sheet_data.length;D++){let _=e.sheet_data[D],Z={},R={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac xr xr2 xr3","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3","xr:uid":"{D37933E2-499F-4789-8D13-194E11B743FC}"},O=_.default_row_height?_.default_row_height/20*15:15,F={worksheet:{a$:{...R},dimension:{a$:{ref:"A1"}},sheetViews:{sheetView:{a$:{workbookViewId:0}}},sheetFormatPr:{a$:O===15?{"x14ac:dyDescent":.25}:{defaultRowHeight:O,customHeight:1,"x14ac:dyDescent":.25}},cols:{},sheetData:{},mergeCells:{a$:{count:0}},dataValidations:{},hyperlinks:{},pageMargins:{a$:{left:.7,right:.7,top:.75,bottom:.75,header:.3,footer:.3}},drawing:{},tableParts:{a$:{count:0}},extLst:{ext:{a$:{uri:"{05C60535-1F16-4fd2-B633-F4F36F0B64E0}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}}}}},j=_.styles||_.cell_style_refs||[],Q=new ct;Q.FromJSON(_.data,j);for(let S of _.cell_styles){let G=Q.EnsureCell(S);G.style||(G.style=j[S.ref])}let v={start:{row:Q.rows+1,column:Q.columns+1},end:{row:Q.rows+1,column:Q.columns+1}},z={row:[]},f=[],I=[],q=[],T=[],Y=[];for(let S=0;S<Q.data.length;S++)if(Q.data[S]&&Q.data[S].length){S<v.start.row&&(v.start.row=S);let G={start:-1,end:-1},V=[];for(let X=0;X<Q.data[S].length;X++){let $=Q.data[S][X];if($){if($.table&&$.table.area.start.row===S&&$.table.area.start.column===X){let de=new ue($.table.area.start,$.table.area.end),d=h.length+1,U=`../tables/table${d}.xml`,P=[];for(let C=0;C<de.columns;C++){let L=Q.data[S][X+C],M="";L.type!==2?(typeof L.calculated<"u"?M=L.calculated.toString():typeof L.value<"u"&&(M=L.value.toString()),L.type=2,L.value=M):M=L.value||"",M||(M=`Column${C+1}`);let N=M,H=!1,K=1;for(;!H;){H=!0;e:for(let J of P)if(J.toLowerCase()===N.toLowerCase()){H=!1,N=`${M}${++K}`;break e}}L.value=N,P.push(N)}let y;if($.table.totals_row){y=[];for(let C=0;C<de.columns;C++){let L=Q.data[de.end.row][de.start.column+C];L.type&&(L.type===1?y[C]={type:"formula",value:(L.value||"").toString().substring(1)}:(L.type!==2&&(L.type=2,L.value=L.value?.toString()||""),y[C]={type:"label",value:L.value}))}}let x={rel:we(Z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table",U),index:d,ref:de.spreadsheet_label,name:`Table${d}`,display_name:`Table${d}`,totals_row_shown:0,totals_row_count:$.table?.totals_row?1:0,columns:P,footers:y};if($.table.totals_row){let C=new ue(de.start,{row:de.end.row-1,column:de.end.column});x.filterRef=C.spreadsheet_label}T.push(x),h.push(x)}if($.merge_area&&$.merge_area.start.row===S&&$.merge_area.start.column===X&&q.push(new ue($.merge_area.start,$.merge_area.end)),$.hyperlink){let de=we(Z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",$.hyperlink,"External");f.push({rel:de,target:$.hyperlink,address:{row:S,column:X}})}if($.validation&&($.validation.type===0||$.validation.type===2)&&Y.push({address:{row:S,column:X},validation:$.validation}),$.type===1&&/^=?sparkline\\./i.test($.value)){I.push({address:{row:S,column:X},formula:$.value,style:$.style});continue}X<v.start.column&&(v.start.column=X),G.start<0&&(G.start=X),G.end=X;let ee=this.StyleFromCell(_,r,S,X,$.style),re,se,ne;switch($.type){case 1:switch(ne=this.FormulaText($.value,$),$.calculated_type){case 2:re=$.calculated,se="str";break;case 3:re=$.calculated;break;case 4:re=$.calculated?1:0,se="b";break}break;case 2:re=n.Ensure($.value),se="s";break;case 3:re=$.value;break;case 4:re=$.value?1:0,se="b";break}$.area&&$.area.start.row===S&&$.area.start.column===X&&typeof ne=="string"&&(ne={t$:ne,a$:{t:"array",ref:$.area.spreadsheet_label}});let he={a$:{r:ue.CellAddressToLabel({row:S,column:X})}};se!==void 0&&(he.a$.t=se),ee!==void 0&&(he.a$.s=ee),ne!==void 0&&(he.f=ne),re!==void 0&&(he.v=re),V.push(he)}}if(V.length){let X={a$:{r:S+1,spans:`${G.start+1}:${G.end+1}`},c:V};_.row_height&&typeof _.row_height[S]=="number"&&_.row_height[S]!==_.default_row_height&&(X.a$.customHeight=1,X.a$.ht=_.row_height[S]*3/4),z.row.push(X)}}let E=[];_.default_column_width&&(F.worksheet.sheetFormatPr.a$.defaultColWidth=lt(_.default_column_width));for(let S=0;S<_.columns;S++){let G={index:S};_.column_width&&_.default_column_width&&typeof _.column_width[S]=="number"&&_.column_width[S]!==_.default_column_width&&(G.width=lt(_.column_width[S]));let V=_.column_style[S];typeof V=="number"&&(V=j[V]),V&&(G.style=r.EnsureStyle(r.StyleOptionsFromProperties(V))),(G.style!==void 0||G.width!==void 0)&&(E[S]=G)}if(E.length)for(let S of E)F.worksheet.cols.col=E.map(G=>{let V={min:G.index+1,max:G.index+1};return G.style!==void 0&&(V.style=G.style),G.width!==void 0?(V.width=G.width,V.customWidth=1):V.width=lt(_.default_column_width||90),{a$:V}});else delete F.worksheet.cols;Y.length?F.worksheet.dataValidations={a$:{count:Y.length},dataValidation:Y.map(S=>{let G={a$:{type:"list",allowBlank:1,showInputMessage:1,showErrorMessage:1,sqref:new ue(S.address).spreadsheet_label}};if(S.validation.type===2){let V=new ue({...S.validation.area.start,absolute_column:!0,absolute_row:!0},{...S.validation.area.end,absolute_column:!0,absolute_row:!0});G.formula1=`${V.spreadsheet_label}`}else S.validation.type===0&&(G.formula1=`"${S.validation.list.join(",")}"`);return G})}:delete F.worksheet.dataValidations,T.length?(F.worksheet.tableParts.a$.count=T.length,F.worksheet.tableParts.tablePart=T.map(S=>({a$:{"r:id":S.rel||""}}))):delete F.worksheet.tableParts;for(let S of T){let G={};S.totals_row_count&&(G.totalsRowCount=1);let V={a$:{count:(S.columns||[]).length},tableColumn:[]};if(S.columns)for(let ee=0;ee<S.columns.length;ee++){let re=S.columns[ee],se=(S.footers||[])[ee],ne={a$:{id:ee+1,name:re||`Column${ee+1}`}};se&&(se.type==="label"?ne.a$.totalsRowLabel=se.value:se.type==="formula"&&(ne.a$.totalsRowFunction="custom",ne.totalsRowFormula=se.value)),V.tableColumn.push(ne)}let X={table:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3",id:S.index||0,name:S.name,displayName:S.display_name,...G,ref:S.ref},autoFilter:{a$:{ref:S.filterRef||S.ref}},tableColumns:V,tableStyleInfo:{a$:{name:"TableStyleMedium2",showFirstColumn:0,showLastColumn:0,showRowStripes:1,showColumnStripes:0}}}},$=Se+this.xmlbuilder1.build(X);await this.zip?.file(`xl/tables/table${S.index}.xml`,$)}q.length?(F.worksheet.mergeCells.a$.count=q.length,F.worksheet.mergeCells.mergeCell=q.map(S=>({a$:{ref:S.spreadsheet_label}}))):delete F.worksheet.mergeCells,f.length?F.worksheet.hyperlinks.hyperlink=f.map(S=>({a$:{"r:id":S.rel,ref:new ue(S.address).spreadsheet_label,"xr:uid":"{0C6B7792-7EA0-4932-BF15-D49C453C565D}"}})):delete F.worksheet.hyperlinks,I.length?F.worksheet.extLst.ext["x14:sparklineGroups"]={a$:{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"},"x14:sparklineGroup":I.map(S=>{let G=this.parser.Parse(S.formula),V="";if(G.expression&&G.expression.type==="call"&&G.expression.args.length>0){let $=G.expression.args[0];if($.type==="range"||$.type==="address"){let ee=$.type==="range"?$.start:$;ee.sheet||(typeof ee.sheet_id<"u"?ee.sheet=i[ee.sheet_id]:ee.sheet=_.name),V=this.parser.Render($)}}let X={displayEmptyCellsAs:"gap"};return/column/i.test(S.formula)&&(X.type="column"),{a$:X,"x14:colorSeries":{a$:{rgb:"FF376092"}},"x14:sparklines":{"x14:sparkline":{"xm:f":V,"xm:sqref":new ue(S.address).spreadsheet_label}}}})}:delete F.worksheet.extLst,F.worksheet.sheetData=z;let W=this.ParseCharts(_),B=this.ParseImages(_);if(W.length||B.length){let S=new Ve;for(let X of W)S.AddChart(X.options,X.anchor);for(let X of B)S.AddImage(X.options,X.anchor);for(let{image:X}of S.images)await this.zip?.file(`xl/media/image${X.index}.${X.extension}`,X.options.data||"",{base64:X.options.encoding==="base64"});for(let{chart:X}of S.charts){let $=X.toJSON(),ee=Se+this.xmlbuilder1.build($);await this.zip?.file(`xl/charts/chart${X.index}.xml`,ee),await this.WriteRels(X.relationships,`xl/charts/_rels/chart${X.index}.xml.rels`)}await this.WriteRels(S.relationships,`xl/drawings/_rels/drawing${S.index}.xml.rels`);let G=Se+this.xmlbuilder1.build(S.toJSON());await this.zip?.file(`xl/drawings/drawing${S.index}.xml`,G),u.push(S);let V=we(Z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",`../drawings/drawing${S.index}.xml`);F.worksheet.drawing={a$:{"r:id":V}}}else delete F.worksheet.drawing;F.worksheet.dimension.a$.ref=new ue(v.start,v.end).spreadsheet_label;let k=Se+this.xmlbuilder1.build(F);await this.zip?.file(`xl/worksheets/sheet${D+1}.xml`,k),Object.keys(Z).length&&this.WriteRels(Z,`xl/worksheets/_rels/sheet${D+1}.xml.rels`)}await this.WriteSharedStrings(n),await this.WriteStyleCache(r);let l={};we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"),we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme","theme/theme1.xml"),we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings","sharedStrings.xml");let c=e.sheet_data.map((D,_)=>we(l,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",`worksheets/sheet${_+1}.xml`));await this.WriteRels(l,"xl/_rels/workbook.xml.rels");let A={definedName:[]};if(e.named_ranges){let D=Object.keys(e.named_ranges);for(let _ of D){let Z="",R=new ue(e.named_ranges[_].start,e.named_ranges[_].end);if(R.start.absolute_column=R.start.absolute_row=!0,R.end.absolute_column=R.end.absolute_row=!0,R.start.sheet_id){for(let O of e.sheet_data)if(O.id===R.start.sheet_id){Z=O.name||"";break}}Z&&(ar.test(Z)&&(Z=`\'${Z}\'`),Z+="!"),A.definedName.push({a$:{name:_},t$:Z+R.spreadsheet_label})}}if(e.named_expressions)for(let D of e.named_expressions)A.definedName.push({a$:{name:D.name},t$:D.expression});A.definedName.length||(A=void 0);let p={workbook:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15 xr xr6 xr10 xr2","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr6":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision6","xmlns:xr10":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision10","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2"},workbookPr:{a$:{defaultThemeVersion:"166925"}},bookViews:{workbookView:{a$:{activeTab:t||0}}},sheets:{sheet:e.sheet_data.map((D,_)=>{let Z={name:D.name||`Sheet${_+1}`,sheetId:_+1,"r:id":c[_]};return D.visible===!1&&(Z.state="hidden"),{a$:Z}})},definedNames:A}},m=Se+this.xmlbuilder1.build(p);await this.zip?.file("xl/workbook.xml",m);let g={};for(let D of u)for(let _ of D.images)switch(_.image.extension){case"gif":case"png":case"jpeg":g[_.image.extension]="image/"+_.image.extension;break;case"svg":g.svg="image/svg+xml";break}let b={Types:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},Default:[{a$:{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}},{a$:{Extension:"xml",ContentType:"application/xml"}},...Object.keys(g).map(D=>({a$:{Extension:D,ContentType:g[D]}}))],Override:[{a$:{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}},...e.sheet_data.map((D,_)=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",PartName:`/xl/worksheets/sheet${_+1}.xml`}})),...u.reduce((D,_)=>D.concat([..._.charts.map(Z=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawingml.chart+xml",PartName:`/xl/charts/chart${Z.chart.index}.xml`}})),{a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml",PartName:`/xl/drawings/drawing${_.index}.xml`}}]),[]),{a$:{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}},{a$:{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"}},{a$:{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}},...h.map(D=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml",PartName:`/xl/tables/table${D.index||0}.xml`}})),{a$:{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}},{a$:{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}}]}},w=Se+this.xmlbuilder1.build(b);await this.zip?.file("[Content_Types].xml",w)}async AsBinaryString(e){if(!this.zip)throw new Error("missing zip");let t={type:"binarystring"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}async AsBlob(e){if(!this.zip)throw new Error("missing zip");let t={type:"blob"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}};var Ci=Fe(Nt());var pr=Fe(dt());var nt=s=>"row"in s&&"col"in s,Te=s=>"from"in s&&"to"in s&&nt(s.from)&&nt(s.to),_t=(s,e)=>e.sheet===s.sheet&&e.row>=s.from.row&&e.row<=s.to.row&&e.col>=s.from.col&&e.col<=s.to.col,hr=(s,e=0,t=0)=>({from:{row:s.from.row+e,col:s.from.col+t,sheet:s.from.sheet},to:{row:s.to.row+e,col:s.to.col+t,sheet:s.to.sheet}});var Dt=class{constructor(e={}){this.options=e}path;rels_path;rels={};sheet_data={};shared_strings;extent;visible_state;tab_selected=!1;default_width=0;drawings=[];TranslateAddress(e){e=e.toUpperCase();let t=e.match(/([A-Z]+\\d+):([A-Z]+\\d+)/);if(t)return{from:this.TranslateAddress(t[1]),to:this.TranslateAddress(t[2])};let i=0,n=0;if(t=e.match(/^([A-Z]+)(\\d+)$/),t){i=Number(t[2]),n=0;let r=t[1].length;for(let a=0;a<r;a++){let o=t[1].charCodeAt(a)-64;n=n*26+o}}return{row:i,col:n}}Address(e,t=!1){if(Te(e))return this.Address(e.from,t)+":"+this.Address(e.to,t);let i="",n=e.col;for(;n>0;){let a=(n-1)%26+1;i=String.fromCharCode(64+a)+i,n=(n-a)/26}let r=e.sheet?`\'${e.sheet}\'!`:"";return t?`${r}$${i}$${e.row}`:r+i+e.row}NormalizeAddress(e){let t,i;return typeof e=="string"?(t=e.toUpperCase(),i=this.TranslateAddress(t)):(i=e,t=this.Address(i)),{a:t,rc:i}}Parse(){let e=this.sheet_data.worksheet?.dimension?.a$?.ref,t=this.TranslateAddress(e||"");Te(t)?this.extent=JSON.parse(JSON.stringify(t)):this.extent={from:JSON.parse(JSON.stringify(t)),to:JSON.parse(JSON.stringify(t))}}};var Es=new pr.XMLParser(ei),Pe=new pr.XMLParser(ht);var vt=class{constructor(e){this.zip=e}xml={};shared_strings=new Ue;style_cache=new ze;theme=new Be;defined_names={};rels={};sheets=[];active_tab=0;get sheet_count(){return this.sheets.length}async ReadRels(e){let t={},i=await this.zip.file(e)?.async("text"),n=Pe.parse(i||"");for(let r of n.Relationships?.Relationship||[]){let a=r.a$.Id;t[a]={id:a,type:r.a$.Type,target:r.a$.Target}}return t}async Init(){this.rels=await this.ReadRels("xl/_rels/workbook.xml.rels");let e=await this.zip.file("xl/sharedStrings.xml")?.async("text"),t=Pe.parse(e||"");this.shared_strings.FromXML(t),e=await this.zip.file("xl/theme/theme1.xml")?.async("text"),t=Pe.parse(e),this.theme.FromXML(t),e=await this.zip.file("xl/styles.xml")?.async("text"),t=Pe.parse(e),this.style_cache.FromXML(t,this.theme),console.info({c:this.style_cache}),e=await this.zip.file("xl/workbook.xml")?.async("text"),t=Pe.parse(e),this.defined_names={};let i=oe.FindAll(t,"workbook/definedNames/definedName");for(let a of i){let o=a.a$?.name,u=a.t$||"";o&&u&&(this.defined_names[o]=u)}let n=oe.FindAll(t,"workbook/bookViews/workbookView");n[0]?.a$?.activeTab&&(this.active_tab=Number(n[0].a$.activeTab)||0);let r=oe.FindAll(t,"workbook/sheets/sheet");for(let a of r){let o=a.a$?.name;if(o){let u=a.a$.state,h=a.a$["r:id"],l=new Dt({name:o,rid:h,id:Number(a.a$.sheetId)});u==="hidden"?l.visible_state=1:u==="veryHidden"&&(l.visible_state=2),l.shared_strings=this.shared_strings,l.path=`xl/${this.rels[h].target}`,l.rels_path=l.path.replace("worksheets","worksheets/_rels")+".rels",e=await this.zip.file(l.path)?.async("text"),l.sheet_data=Pe.parse(e||""),l.rels=await this.ReadRels(l.rels_path),l.Parse(),this.sheets.push(l)}}}async ReadTable(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Pe.parse(t),n=i.table?.a$?.name||"";return{name:n,display_name:i.table?.a$?.displayName||n,ref:i.table?.a$.ref||"",totals_row_shown:Number(i.table?.a$.totalsRowShown||"0")||0,totals_row_count:Number(i.table?.a$.totalsRowCount||"0")||0}}async ReadDrawing(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Pe.parse(t),n=await this.ReadRels(e.replace(/^..\\/drawings/,"xl/drawings/_rels")+".rels"),r=[],a=oe.FindAll(i,"xdr:wsDr/xdr:twoCellAnchor"),o=(u={})=>({column:u["xdr:col"]||0,column_offset:u["xdr:colOff"]||0,row:u["xdr:row"]||0,row_offset:u["xdr:rowOff"]||0});for(let u of a){let l={anchor:{from:o(u["xdr:from"]),to:o(u["xdr:to"])}},c=oe.FindAll(u,"xdr:graphicFrame/a:graphic/a:graphicData/c:chart")[0];if(c&&c.a$&&c.a$["r:id"]){let A=n[c.a$["r:id"]];A&&A.target&&(l.chart=await this.ReadChart(A.target))}r.push(l)}return r}async ReadChart(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Es.parse(t),n={type:0},r=oe.FindChild(i,"c:chartSpace/c:chart/c:title");if(r){let u=oe.FindChild(r,"c:tx/c:strRef/c:f");if(u)typeof u=="string"?n.title=u:u.text__&&(n.title=u.text__);else{let h=oe.FindAll(r,"c:tx/c:rich/a:p/a:r/a:t");n.title=\'"\'+h.join("")+\'"\'}}let a=(u,h=!1)=>{let l=[],c=u["c:ser"]||[];Array.isArray(c)||(c=[c]);for(let A of c){let p=l.length,m=A["c:order"];m&&(p=Number(m.__val||0)||0);let g={},b=oe.FindChild(A,"c:tx/c:v");if(b){let w=b;w&&(g.title=`"${w}"`)}else b=oe.FindChild(A,"c:tx/c:strRef/c:f"),b&&(g.title=b);if(h){let w=oe.FindChild(A,"c:xVal/c:numRef/c:f");w&&(g.categories=w);let D=oe.FindChild(A,"c:yVal/c:numRef/c:f");D&&(g.values=D)}else{let w=oe.FindChild(A,"c:val/c:numRef/c:f");w&&(g.values=w);let D=oe.FindChild(A,"c:cat/c:strRef/c:f");D||(D=oe.FindChild(A,"c:cat/c:numRef/c:f")),D&&(g.categories=D)}l[p]=g}return l},o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:barChart");return o&&(n.type=2,o["c:barDir"]&&o["c:barDir"].__val==="col"&&(n.type=1),n.series=a(o)),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:lineChart"),o&&(n.type=3,n.series=a(o))),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:doughnutChart"),o&&(n.type=5,n.series=a(o))),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:pieChart"),o&&(n.type=6,n.series=a(o))),o||(o=oe.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:scatterChart"),o&&(n.type=4,n.series=a(o,!0))),n}GetNamedRanges(){return this.defined_names}};var Ct=class{parser=new We;workbook;archive;async Init(e){typeof e=="string"?this.archive=await(0,Ci.default)().loadAsync(e):this.archive=e,this.archive&&(this.workbook=new vt(this.archive),await this.workbook.Init())}SheetCount(){return this.workbook?.sheet_count||0}ParseCell(e,t,i,n,r,a,o){let u=t.a$?.r;if(!u){console.warn("cell missing address");return}let h=e.TranslateAddress(u);if(Te(h)){console.warn("cell has range address");return}let l,c=0,A,p=0;if(t.a$?.t&&t.a$.t==="s"){if(c=2,typeof t.v!==void 0){let b=Number(t.v);!isNaN(b)&&e.shared_strings&&(l=e.shared_strings.Get(b)||"",l[0]==="="&&(l="\'"+l))}}else if(typeof t.f<"u"){c=1;let b=(typeof t.f=="string"?t.f:t.f.t$)||"";if(b){l="="+b.replace(/^_xll\\./g,"");let w=this.parser.Parse(b);w.expression&&(this.parser.Walk(w.expression,D=>(D.type==="call"&&/^_xll\\./.test(D.name)&&(D.name=D.name.substr(5)),!0)),l="="+this.parser.Render(w.expression,{missing:""})),typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si&&(i[t.f.a$.si]={row:h.row-1,column:h.col-1,formula:l,parse_result:this.parser.Parse(l)})}else if(typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si){let w=i[t.f.a$.si];w&&(w.parse_result.expression?l="="+this.parser.Render(w.parse_result.expression,{offset:{rows:h.row-1-w.row,columns:h.col-1-w.column},missing:""}):l=w.formula)}if(typeof t.f!="string"&&t.f.a$?.t==="array"){let w=e.TranslateAddress(t.f.a$.ref||"");Te(w)&&n.push(hr(w,-1,-1))}if(typeof t.v<"u"){let w=Number(t.v.toString());isNaN(w)?(p=2,A=t.v.toString()):(p=3,A=w)}}else if(typeof t.v<"u"){let b=Number(t.v.toString());isNaN(b)?(c=2,l=t.v.toString()):(c=3,l=b)}let m={row:h.row-1,col:h.col-1};for(let b of n)_t(b,m)&&(m.row!==b.from.row||m.col!==b.from.col)&&(p=c,A=l,l=void 0,c=0);let g={row:m.row,column:m.col,value:l,type:c};typeof A<"u"&&(g.calculated_type=p,g.calculated=A),t.a$?.s&&(g.style_ref=Number(t.a$.s));for(let b of a)b.address.row===h.row&&b.address.col===h.col&&(g.hyperlink=b.reference);for(let b of o)if(b.address.row===m.row&&b.address.column===m.col){g.validation=b.validation;break}for(let b of r)_t(b,m)&&(g.merge_area={start:{row:b.from.row,column:b.from.col},end:{row:b.to.row,column:b.to.col}});for(let b of n)_t(b,m)&&(g.area={start:{row:b.from.row,column:b.from.col},end:{row:b.to.row,column:b.to.col}});return g}async GetSheet(e=0){if(!this.workbook)throw new Error("missing workbook");let t=this.workbook.sheets[e],i=[],n={},r=[],a=[],o=[],u=[],h=[],l=oe.FindAll.bind(oe,t.sheet_data),c=l("worksheet/mergeCells/mergeCell");for(let I of c)if(I.a$.ref){let q=t.TranslateAddress(I.a$.ref);Te(q)&&a.push(hr(q,-1,-1))}let A=l("worksheet/dataValidations/dataValidation");for(let I of A){let q=I.a$?.type,T=I.a$?.sqref,Y=I.formula1;if(T&&Y&&q==="list"){let E,W,B=this.parser.Parse(T);B.expression&&(B.expression.type==="address"?E=B.expression:B.expression.type==="range"&&(E=B.expression.start)),B=this.parser.Parse(Y),B.expression&&(B.expression.type==="range"?W={type:2,area:B.expression}:B.expression.type==="literal"&&(W={type:0,list:B.expression.value.toString().split(/,/).map(k=>{let S=this.parser.Parse(k);if(S.expression?.type==="group"&&/\\s/.test(k))return k;if(S.expression?.type==="literal")return S.expression.value;if(S.expression?.type==="identifier")return S.expression.name})})),E&&W&&u.push({address:E,validation:W})}}let p=l("worksheet/hyperlinks/hyperlink");for(let I of p){let q=t.TranslateAddress(I.a$?.ref||"");Te(q)&&(q=q.from);let T="",Y="";if(I.a$&&I.a$["r:id"]){T="remote link";let E=t.rels[I.a$["r:id"]];E&&(Y=E.target||"")}else Y=I.__location||"",T=I.__display||"";o.push({address:q,reference:Y,text:T})}let m=21,g=100,b=t.sheet_data.worksheet?.sheetFormatPr;if(b){if(b.a$?.defaultColWidth){let I=Number(b.a$.defaultColWidth);isNaN(I)||(g=St(I))}if(b.a$?.defaultRowHeight){let I=Number(b.a$.defaultRowHeight);isNaN(I)||(m=Math.round(I*4/3))}}let w=[],D=l("worksheet/sheetData/row");for(let I of D){let q=I.a$?.r?Number(I.a$.r):1,T=m;if(I.a$?.ht){let E=Number(I.a$.ht);isNaN(E)||(T=Math.round(E*4/3))}T!==m&&(w[q-1]=T);let Y=I.c||[];Array.isArray(Y)||(Y=[Y]);for(let E of Y){let W=this.ParseCell(t,E,n,r,a,o,u);W&&i.push(W)}}let _=[],Z=-1,R=[],O=l("worksheet/cols/col");for(let I of O){let q=Number(I.a$?.min),T=Number(I.a$?.max);if(I.a$?.style){let Y=Number(I.a$.style);if(!isNaN(q)&&!isNaN(T)&&!isNaN(Y))if(t.extent&&T>=t.extent.to.col||T-q>100)Z=Y;else for(let E=q;E<=T;E++)_[E]=Y}if(I.a$?.customWidth){let Y=Number(I.a$.width);if(!isNaN(q)&&!isNaN(T)&&!isNaN(Y)&&T!==16384){Y=St(Y);for(let E=q;E<=T;E++)R[E-1]=Y}}}let F=l("worksheet/tableParts/tablePart");for(let I of F){let q=I.a$?I.a$["r:id"]:void 0;if(q){let T="",Y=t.rels[q];if(Y){T=Y.target||"";let E=await this.workbook.ReadTable(T);if(E){let W=t.TranslateAddress(E.ref),B=nt(W)?{start:{row:W.row-1,column:W.col-1},end:{row:W.row-1,column:W.col-1}}:{start:{row:W.from.row-1,column:W.from.col-1},end:{row:W.to.row-1,column:W.to.col-1}};for(let k of i)if(k.row===B.start.row&&k.column===B.start.column){k.table={area:B,name:E.name,totals_row:!!E.totals_row_count};break}}}}}let j=l("worksheet/drawing"),Q=[];for(let I of j){let q=I.a$?I.a$["r:id"]:void 0;if(q){let T="",Y=t.rels[q];if(Y&&(T=Y.target||""),T){let E=await this.workbook.ReadDrawing(T);E&&E.length&&Q.push(...E)}}}let v=I=>{let q={address:{row:I.row,column:I.column},offset:{x:0,y:0}};if(I.row_offset){let T=w[I.row];T===void 0&&(T=m),q.offset.y=I.row_offset/9525/T}if(I.column_offset){let T=R[I.column];T===void 0&&(T=g),q.offset.x=I.column_offset/9525/T}return q};for(let I of Q)if(I&&I.chart){let q={tl:v(I.anchor.from),br:v(I.anchor.to)},T,Y=[],E="",W=I.chart?.series;switch(I.chart.type){case 4:T="treb-chart",E="Scatter.Line",W&&W.length&&(Y[0]=`Group(${W.map(k=>`Series(${k.title||""},${k.categories||""},${k.values||""})`||"").join(", ")})`),Y[1]=I.chart.title;break;case 5:case 6:E=I.chart.type===5?"Donut.Chart":"Pie.Chart",T="treb-chart",W&&W[0]&&(Y[0]=W[0].values,Y[1]=W[0]?.categories||""),Y[2]=I.chart.title;break;case 2:case 1:case 3:switch(Y[2]=I.chart.title,T="treb-chart",I.chart.type){case 2:E="Bar.Chart";break;case 1:E="Column.Chart";break;default:E="Line.Chart"}W&&(W.length>1?Y[0]=`Group(${W.map(k=>`Series(${k.title||""},,${k.values||""})`||"").join(", ")})`:W.length===1&&(W[0].title?Y[0]=`Series(${W[0].title||""},,${W[0].values||""})`:Y[0]=W[0].values),Y[1]=W[0]?.categories||"");break}let B=`=${E}(${Y.join(", ")})`;T&&B&&h.push({layout:q,type:T,formula:B})}let z=l("worksheet/extLst/ext");for(let I of z){let q="";for(let Y of Object.keys(I?.a$||{})){let E=Y.match(/^xmlns:(.*)$/);if(E){q=E[1];break}}let T=oe.FindAll(I,`${q}:sparklineGroups/${q}:sparklineGroup`);for(let Y of T){let E="Sparkline.line",W="",B="";Y.a$?.type==="column"&&(E="Sparkline.column");let k=oe.FindAll(Y,`${q}:sparklines/${q}:sparkline`);for(let S of k)for(let G of Object.keys(S))/:f$/.test(G)?B=S[G]:/:sqref$/.test(G)&&(W=S[G]);if(B&&W){let S=`=${E}(${B})`,G=t.TranslateAddress(W);if(nt(G)){let V={row:G.row-1,column:G.col-1,value:S,type:1},X=!1;for(let $ of i)if($.row===V.row&&$.column===V.column){X=!0,$.type=1,$.value=S;break}X||i.push(V)}}}}let f={name:t.options.name,cells:i,default_column_width:g,column_widths:R,row_heights:w,annotations:h,styles:this.workbook?.style_cache?.CellXfToStyles()||[]};return(t.visible_state===1||t.visible_state===2)&&(f.hidden=!0),Z>=0&&(f.sheet_style=Z),_.length&&(f.column_styles=_),f}};var Et=self,fr=new yt,Bs=async s=>{if(s.sheet){await fr.Init(s.decorated||[]),await fr.Export(s.sheet);let e=await fr.AsBlob(1),t=e.slice(0,e.size,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");Et.postMessage({status:"complete",blob:t})}},Is=async s=>{let e=new Ct;try{await e.Init(s.data);let t=e.SheetCount(),i={sheets:[],names:e.workbook?.GetNamedRanges(),active_tab:e.workbook?.active_tab};for(let n=0;n<t;n++){let r=await e.GetSheet(n);r&&i.sheets.push(r)}Et.postMessage({status:"complete",results:i})}catch(t){console.warn("error importing xlsx file"),console.info(t),Et.postMessage({status:"error",data:t})}};Et.addEventListener("message",s=>{s.data&&s.data.command==="export"?Bs(s.data):s.data&&s.data.command==="import"&&Is(s.data)});})();\n/*! Bundled license information:\n\nhe/he.js:\n (*! https://mths.be/he v1.2.0 by @mathias | MIT license *)\n\njszip/dist/jszip.min.js:\n (*!\n \n JSZip v3.10.1 - A JavaScript class for generating and reading zip files\n <http://stuartk.com/jszip>\n \n (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\n Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n \n JSZip uses the library pako released under the MIT license :\n https://github.com/nodeca/pako/blob/main/LICENSE\n *)\n*/\n';is&&(oe.export_worker_text=is);var j_={version:"23.5.1",CreateSpreadsheet:c=>wt.Create(oe,c).sheet,SetScriptPath:c=>{oe.treb_base_path=c}};oe.BuildPath();export{j_ as TREB};
|