@gisatcz/deckgl-geolib 2.6.0-dev.4 → 2.6.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +261 -23
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +2 -2
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/esm/index.js +261 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +2 -2
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/types/core/CogTiles.d.ts +1 -0
- package/dist/esm/types/core/GeoImage.d.ts +4 -2
- package/dist/esm/types/core/lib/TerrainGenerator.d.ts +2 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/workers/TerrainWorkerPool.d.ts +58 -0
- package/dist/esm/types/workers/terrain.worker.d.ts +5 -0
- package/package.json +1 -1
package/dist/esm/index.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{CompositeLayer as A,log as g,COORDINATE_SYSTEM as I}from"@deck.gl/core";import{TileLayer as e}from"@deck.gl/geo-layers";import{BitmapLayer as i}from"@deck.gl/layers";import{_TerrainExtension as t}from"@deck.gl/extensions";import B from"chroma-js";import{getMeshBoundingBox as C}from"@loaders.gl/schema";import{concatenateTypedArrays as Q}from"@loaders.gl/loader-utils";import{SimpleMeshLayer as E}from"@deck.gl/mesh-layers";let s=!1;function a(){"undefined"==typeof window||s||(window.addEventListener("unhandledrejection",A=>{A.reason&&"AbortError"===A.reason.name&&A.preventDefault()}),s=!0)}function o(A){return(g,...I)=>n(A,g,I)}function r(A,g){return o(h(A,g).get)}const{apply:n,getOwnPropertyDescriptor:h,getPrototypeOf:l,ownKeys:c}=Reflect,{iterator:D,toStringTag:w}=Symbol,d=Object,{create:y,defineProperty:f}=d,u=Array.prototype[D],S=o(u),G=ArrayBuffer;r(G.prototype,"byteLength");const N="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;N&&r(N.prototype,"byteLength");const F=l(Uint8Array);F.from;const k=F.prototype;k[D],o(k.keys),o(k.values),o(k.entries),o(k.set),o(k.reverse),o(k.fill),o(k.copyWithin),o(k.sort),o(k.slice),o(k.subarray),r(k,"buffer"),r(k,"byteOffset"),r(k,"length"),r(k,w);const R=Uint8Array,U=Uint16Array,L=Uint32Array,p=Float32Array,M=l([][D]()),Y=o(M.next),m=o(function*(){}().next),K=l(M),H=o(DataView.prototype.getUint16),J=WeakMap,b=J.prototype,q=o(b.get),x=o(b.set),T=new J,O=y(null,{next:{value:function(){const A=q(T,this);return Y(A)}},[D]:{value:function(){return this}}});const P=new J,v=y(K,{next:{value:function(){const A=q(P,this);return m(A)},writable:!0,configurable:!0}});for(const A of c(M))"next"!==A&&f(v,A,h(M,A));const V=new G(4),Z=new p(V),z=new L(V),j=new U(512),W=new R(512);for(let A=0;A<256;++A){const g=A-127;g<-24?(j[A]=0,j[256|A]=32768,W[A]=24,W[256|A]=24):g<-14?(j[A]=1024>>-g-14,j[256|A]=1024>>-g-14|32768,W[A]=-g-1,W[256|A]=-g-1):g<=15?(j[A]=g+15<<10,j[256|A]=g+15<<10|32768,W[A]=13,W[256|A]=13):g<128?(j[A]=31744,j[256|A]=64512,W[A]=24,W[256|A]=24):(j[A]=31744,j[256|A]=64512,W[A]=13,W[256|A]=13)}const _=new L(2048);for(let A=1;A<1024;++A){let g=A<<13,I=0;for(;!(8388608&g);)g<<=1,I-=8388608;g&=-8388609,I+=947912704,_[A]=g|I}for(let A=1024;A<2048;++A)_[A]=939524096+(A-1024<<13);const X=new L(64);for(let A=1;A<31;++A)X[A]=A<<23;X[31]=1199570944,X[32]=2147483648;for(let A=33;A<63;++A)X[A]=2147483648+(A-32<<23);X[63]=3347054592;const $=new U(64);for(let A=1;A<64;++A)32!==A&&($[A]=1024);function AA(A,g,...I){return function(A){const g=A>>10;return z[0]=_[$[g]+(1023&A)]+X[g],Z[0]}(H(A,g,...function(A){if(A[D]===u&&M.next===Y)return A;const g=y(O);return x(T,g,S(A)),g}(I)))}function gA(A,g,I){const e="object"==typeof A?A.outer:A,i=e.slice(0,e.indexOf(">")+1),t=['"',"'"];for(let A=0;A<t.length;A++){const I=t[A],e=new RegExp(g+"\\="+I+"([^"+I+"]*)"+I).exec(i);if(e)return e[1]}}function IA(A,g,I){const e=new RegExp(g).exec(A.slice(I));return e?I+e.index+e[0].length-1:-1}function eA(A,g){const I=new RegExp(g,"g"),e=A.match(I);return e?e.length:0}function iA(A,g,I){const e=I&&I.debug||!1,i=!(I&&!1===typeof I.nested),t=I&&I.startIndex||0;e&&console.log("[xml-utils] starting findTagByName with",g," and ",I);const B=function(A,g,I){const e=new RegExp(g).exec(A.slice(I));return e?I+e.index:-1}(A,`<${g}[ \n>/]`,t);if(e&&console.log("[xml-utils] start:",B),-1===B)return;const C=A.slice(B+g.length);let Q=IA(C,"^[^<]*[ /]>",0);const E=-1!==Q&&"/"===C[Q-1];if(e&&console.log("[xml-utils] selfClosing:",E),!1===E)if(i){let A=0,I=1,e=0;for(;-1!==(Q=IA(C,"[ /]"+g+">",A));){const i=C.substring(A,Q+1);if(I+=eA(i,"<"+g+"[ \n\t>]"),e+=eA(i,"</"+g+">"),e>=I)break;A=Q}}else Q=IA(C,"[ /]"+g+">",0);const s=B+g.length+Q+1;if(e&&console.log("[xml-utils] end:",s),-1===s)return;const a=A.slice(B,s);let o;return o=E?null:a.slice(a.indexOf(">")+1,a.lastIndexOf("<")),{inner:o,outer:a,start:B,end:s}}const tA={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,SBYTE:6,UNDEFINED:7,SSHORT:8,SLONG:9,SRATIONAL:10,FLOAT:11,DOUBLE:12,IFD:13,LONG8:16,SLONG8:17,IFD8:18},BA={[tA.BYTE]:1,[tA.ASCII]:1,[tA.SBYTE]:1,[tA.UNDEFINED]:1,[tA.SHORT]:2,[tA.SSHORT]:2,[tA.LONG]:4,[tA.SLONG]:4,[tA.FLOAT]:4,[tA.IFD]:4,[tA.RATIONAL]:8,[tA.SRATIONAL]:8,[tA.DOUBLE]:8,[tA.LONG8]:8,[tA.SLONG8]:8,[tA.IFD8]:8};function CA(A){const g=BA[A];if(void 0===g)throw new RangeError(`Invalid field type: ${A}`);return g}const QA={NewSubfileType:{tag:254,type:tA.LONG,eager:!0},SubfileType:{tag:255,type:tA.SHORT,eager:!0},ImageWidth:{tag:256,type:tA.SHORT,eager:!0},ImageLength:{tag:257,type:tA.SHORT,eager:!0},BitsPerSample:{tag:258,type:tA.SHORT,isArray:!0,eager:!0},Compression:{tag:259,type:tA.SHORT,eager:!0},PhotometricInterpretation:{tag:262,type:tA.SHORT,eager:!0},Threshholding:{tag:263,type:tA.SHORT},CellWidth:{tag:264,type:tA.SHORT},CellLength:{tag:265,type:tA.SHORT},FillOrder:{tag:266,type:tA.SHORT},DocumentName:{tag:269,type:tA.ASCII},ImageDescription:{tag:270,type:tA.ASCII},Make:{tag:271,type:tA.ASCII},Model:{tag:272,type:tA.ASCII},StripOffsets:{tag:273,type:tA.SHORT,isArray:!0},Orientation:{tag:274,type:tA.SHORT},SamplesPerPixel:{tag:277,type:tA.SHORT,eager:!0},RowsPerStrip:{tag:278,type:tA.SHORT,eager:!0},StripByteCounts:{tag:279,type:tA.LONG,isArray:!0},MinSampleValue:{tag:280,type:tA.SHORT,isArray:!0},MaxSampleValue:{tag:281,type:tA.SHORT,isArray:!0},XResolution:{tag:282,type:tA.RATIONAL},YResolution:{tag:283,type:tA.RATIONAL},PlanarConfiguration:{tag:284,type:tA.SHORT,eager:!0},PageName:{tag:285,type:tA.ASCII},XPosition:{tag:286,type:tA.RATIONAL},YPosition:{tag:287,type:tA.RATIONAL},FreeOffsets:{tag:288,type:tA.LONG},FreeByteCounts:{tag:289,type:tA.LONG},GrayResponseUnit:{tag:290,type:tA.SHORT},GrayResponseCurve:{tag:291,type:tA.SHORT,isArray:!0},T4Options:{tag:292,type:tA.LONG},T6Options:{tag:293,type:tA.LONG},ResolutionUnit:{tag:296,type:tA.SHORT},PageNumber:{tag:297,type:tA.SHORT,isArray:!0},TransferFunction:{tag:301,type:tA.SHORT,isArray:!0},Software:{tag:305,type:tA.ASCII},DateTime:{tag:306,type:tA.ASCII},Artist:{tag:315,type:tA.ASCII},HostComputer:{tag:316,type:tA.ASCII},Predictor:{tag:317,type:tA.SHORT},WhitePoint:{tag:318,type:tA.RATIONAL,isArray:!0},PrimaryChromaticities:{tag:319,type:tA.RATIONAL,isArray:!0},ColorMap:{tag:320,type:tA.SHORT,isArray:!0},HalftoneHints:{tag:321,type:tA.SHORT,isArray:!0},TileWidth:{tag:322,type:tA.SHORT,eager:!0},TileLength:{tag:323,type:tA.SHORT,eager:!0},TileOffsets:{tag:324,type:tA.LONG,isArray:!0},TileByteCounts:{tag:325,type:tA.SHORT,isArray:!0},InkSet:{tag:332,type:tA.SHORT},InkNames:{tag:333,type:tA.ASCII},NumberOfInks:{tag:334,type:tA.SHORT},DotRange:{tag:336,type:tA.BYTE,isArray:!0},TargetPrinter:{tag:337,type:tA.ASCII},ExtraSamples:{tag:338,type:tA.BYTE,isArray:!0,eager:!0},SampleFormat:{tag:339,type:tA.SHORT,isArray:!0,eager:!0},SMinSampleValue:{tag:340,isArray:!0},SMaxSampleValue:{tag:341,isArray:!0},TransferRange:{tag:342,type:tA.SHORT,isArray:!0},JPEGProc:{tag:512,type:tA.SHORT},JPEGInterchangeFormat:{tag:513,type:tA.LONG},JPEGInterchangeFormatLngth:{tag:514,type:tA.LONG},JPEGRestartInterval:{tag:515,type:tA.SHORT},JPEGLosslessPredictors:{tag:517,type:tA.SHORT,isArray:!0},JPEGPointTransforms:{tag:518,type:tA.SHORT,isArray:!0},JPEGQTables:{tag:519,type:tA.LONG,isArray:!0},JPEGDCTables:{tag:520,type:tA.LONG,isArray:!0},JPEGACTables:{tag:521,type:tA.LONG,isArray:!0},YCbCrCoefficients:{tag:529,type:tA.RATIONAL,isArray:!0},YCbCrSubSampling:{tag:530,type:tA.SHORT,isArray:!0},YCbCrPositioning:{tag:531,type:tA.SHORT},ReferenceBlackWhite:{tag:532,type:tA.LONG,isArray:!0},Copyright:{tag:33432,type:tA.ASCII},BadFaxLines:{tag:326},CleanFaxData:{tag:327},ClipPath:{tag:343},ConsecutiveBadFaxLines:{tag:328},Decode:{tag:433},DefaultImageColor:{tag:434},Indexed:{tag:346},JPEGTables:{tag:347,isArray:!0,eager:!0},StripRowCounts:{tag:559,isArray:!0},SubIFDs:{tag:330,isArray:!0},XClipPathUnits:{tag:344},YClipPathUnits:{tag:345},ApertureValue:{tag:37378},ColorSpace:{tag:40961},DateTimeDigitized:{tag:36868},DateTimeOriginal:{tag:36867},ExifIFD:{tag:34665,name:"Exif IFD",type:tA.LONG},ExifVersion:{tag:36864},ExposureTime:{tag:33434},FileSource:{tag:41728},Flash:{tag:37385},FlashpixVersion:{tag:40960},FNumber:{tag:33437},ImageUniqueID:{tag:42016},LightSource:{tag:37384},MakerNote:{tag:37500},ShutterSpeedValue:{tag:37377},UserComment:{tag:37510},IPTC:{tag:33723},CZ_LSMINFO:{tag:34412},ICCProfile:{tag:34675,name:"ICC Profile"},XMP:{tag:700},GDAL_METADATA:{tag:42112},GDAL_NODATA:{tag:42113,type:tA.ASCII,eager:!0},Photoshop:{tag:34377},ModelPixelScale:{tag:33550,type:tA.DOUBLE,isArray:!0,eager:!0},ModelTiepoint:{tag:33922,type:tA.DOUBLE,isArray:!0,eager:!0},ModelTransformation:{tag:34264,type:tA.DOUBLE,isArray:!0,eager:!0},GeoKeyDirectory:{tag:34735,type:tA.SHORT,isArray:!0,eager:!0},GeoDoubleParams:{tag:34736,type:tA.DOUBLE,isArray:!0,eager:!0},GeoAsciiParams:{tag:34737,type:tA.ASCII,eager:!0},LercParameters:{tag:50674,eager:!0}},EA={},sA={};function aA(A,g,I,e=!1,i=!1){EA[g]=A,sA[A]={tag:A,name:g,type:"string"==typeof I?tA[I]:I,isArray:e,eager:i}}for(const[A,g]of Object.entries(QA)){const I=g;aA(I.tag,I.name||A,I.type,I.isArray,I.eager)}function oA(A){return"number"==typeof A?A:EA[A]}const rA=0,nA=1,hA=2,lA=3,cA=5,DA=6,wA=8,dA=0,yA=1,fA=0,uA=1,SA=2,GA={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};for(const[A,g]of Object.entries(GA));const NA=new Map;async function FA(A){const g=!A.hasTag("StripOffsets");return{tileWidth:g?await A.loadValue("TileWidth"):await A.loadValue("ImageWidth"),tileHeight:g?await A.loadValue("TileLength"):await A.loadValue("RowsPerStrip")||await A.loadValue("ImageLength"),planarConfiguration:await A.loadValue("PlanarConfiguration"),bitsPerSample:await A.loadValue("BitsPerSample"),predictor:await A.loadValue("Predictor")||1}}function kA(A,g,I=FA,e=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{NA.set(A,{importFn:g,decoderParameterFn:I,preferWorker:e})})}const RA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return iI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return CI}).then(A=>A.default)},{cases:6,importFn:()=>{throw new Error("old style JPEG compression is not supported.")}},{cases:7,importFn:()=>Promise.resolve().then(function(){return yI}).then(A=>A.default),decoderParameterFn:async A=>({...await FA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return Je}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return be}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return Xe}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await FA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return Bi}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return Ci}).then(A=>A.default),decoderParameterFn:async A=>({...await FA(A),samplesPerPixel:Number(await A.loadValue("SamplesPerPixel"))||4}),preferWorker:!1}];for(const A of RA){const{cases:g,importFn:I,decoderParameterFn:e,preferWorker:i}=A;kA(g,I,e,i)}function UA(A,g,I,e=1){return new(Object.getPrototypeOf(A).constructor)(g*I*e)}function LA(A,g,I){return(1-I)*A+I*g}function pA(A,g,I,e,i,t="nearest"){switch(t.toLowerCase()){case"nearest":return function(A,g,I,e,i){const t=g/e,B=I/i;return A.map(A=>{const C=UA(A,e,i);for(let Q=0;Q<i;++Q){const i=Math.min(Math.round(B*Q),I-1);for(let I=0;I<e;++I){const B=Math.min(Math.round(t*I),g-1),E=A[i*g+B];C[Q*e+I]=E}}return C})}(A,g,I,e,i);case"bilinear":case"linear":return function(A,g,I,e,i){const t=g/e,B=I/i;return A.map(A=>{const C=UA(A,e,i);for(let Q=0;Q<i;++Q){const i=B*Q,E=Math.floor(i),s=Math.min(Math.ceil(i),I-1);for(let I=0;I<e;++I){const B=t*I,a=B%1,o=Math.floor(B),r=Math.min(Math.ceil(B),g-1),n=A[E*g+o],h=A[E*g+r],l=A[s*g+o],c=A[s*g+r],D=LA(LA(n,h,a),LA(l,c,a),i%1);C[Q*e+I]=D}}return C})}(A,g,I,e,i);default:throw new Error(`Unsupported resampling method: '${t}'`)}}function MA(A,g,I,e,i,t,B="nearest"){switch(B.toLowerCase()){case"nearest":return function(A,g,I,e,i,t){const B=g/e,C=I/i,Q=UA(A,e,i,t);for(let E=0;E<i;++E){const i=Math.min(Math.round(C*E),I-1);for(let I=0;I<e;++I){const C=Math.min(Math.round(B*I),g-1);for(let B=0;B<t;++B){const s=A[i*g*t+C*t+B];Q[E*e*t+I*t+B]=s}}}return Q}(A,g,I,e,i,t);case"bilinear":case"linear":return function(A,g,I,e,i,t){const B=g/e,C=I/i,Q=UA(A,e,i,t);for(let E=0;E<i;++E){const i=C*E,s=Math.floor(i),a=Math.min(Math.ceil(i),I-1);for(let I=0;I<e;++I){const C=B*I,o=C%1,r=Math.floor(C),n=Math.min(Math.ceil(C),g-1);for(let B=0;B<t;++B){const C=A[s*g*t+r*t+B],h=A[s*g*t+n*t+B],l=A[a*g*t+r*t+B],c=A[a*g*t+n*t+B],D=LA(LA(C,h,o),LA(l,c,o),i%1);Q[E*e*t+I*t+B]=D}}}return Q}(A,g,I,e,i,t);default:throw new Error(`Unsupported resampling method: '${B}'`)}}function YA(A,g,I){let e=0;for(let i=g;i<I;++i)e+=A[i];return e}function mA(A,g,I){let e;switch(A){case 1:g<=8?e=Uint8Array:g<=16?e=Uint16Array:g<=32&&(e=Uint32Array);break;case 2:8===g?e=Int8Array:16===g?e=Int16Array:32===g&&(e=Int32Array);break;case 3:switch(g){case 16:case 32:e=Float32Array;break;case 64:e=Float64Array}}if(e){if("number"==typeof I)return new e(I);if(I instanceof ArrayBuffer)return new e(I)}throw Error("Unsupported data format/bitsPerSample")}class KA{constructor(A,g,I,e){this.fileDirectory=A,this.littleEndian=g,this.tiles=I?[]:null,this.isTiled=!A.hasTag("StripOffsets");const i=A.getValue("PlanarConfiguration")??1;if(1!==i&&2!==i)throw new Error("Invalid planar configuration.");this.planarConfiguration=i,this.source=e}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")||0}getHeight(){return this.fileDirectory.getValue("ImageLength")||0}getSamplesPerPixel(){return this.fileDirectory.getValue("SamplesPerPixel")??1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth")||0:this.getWidth()}getTileHeight(){if(this.isTiled)return this.fileDirectory.getValue("TileLength")||0;const A=this.fileDirectory.hasTag("RowsPerStrip")&&this.fileDirectory.getValue("RowsPerStrip");return A?Math.min(A,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;++I)A+=this.getSampleByteSize(I);return A}getSampleByteSize(A){const g=this.fileDirectory.getValue("BitsPerSample")||[];if(A>=g.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(g[A]/8)}getReaderForSample(A){const g=this.fileDirectory.getValue("SampleFormat"),I=g?g[A]:1,e=(this.fileDirectory.getValue("BitsPerSample")||[])[A];switch(I){case 1:if(e<=8)return DataView.prototype.getUint8;if(e<=16)return DataView.prototype.getUint16;if(e<=32)return DataView.prototype.getUint32;break;case 2:if(e<=8)return DataView.prototype.getInt8;if(e<=16)return DataView.prototype.getInt16;if(e<=32)return DataView.prototype.getInt32;break;case 3:switch(e){case 16:return function(A,g){return AA(this,A,g)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){const g=this.fileDirectory.getValue("SampleFormat");return g?g[A]:1}getBitsPerSample(A=0){const g=this.fileDirectory.getValue("BitsPerSample");return g?g[A]:0}getArrayForSample(A,g){return mA(this.getSampleFormat(A),this.getBitsPerSample(A),g)}async getTileOrStrip(A,g,I,e,i){const t=Math.ceil(this.getWidth()/this.getTileWidth()),B=Math.ceil(this.getHeight()/this.getTileHeight());let C;const{tiles:Q}=this;if(1===this.planarConfiguration?C=g*t+A:2===this.planarConfiguration&&(C=I*t*B+g*t+A),void 0===C)throw new Error("Could not determine tile or strip index.");let E,s;if(this.isTiled?(E=Number(await this.fileDirectory.loadValueIndexed("TileOffsets",C)),s=Number(await this.fileDirectory.loadValueIndexed("TileByteCounts",C))):(E=Number(await this.fileDirectory.loadValueIndexed("StripOffsets",C)),s=Number(await this.fileDirectory.loadValueIndexed("StripByteCounts",C))),0===s){const e=this.getBlockHeight(g)*this.getTileWidth(),i=2===this.planarConfiguration?this.getSampleByteSize(I):this.getBytesPerPixel(),t=new ArrayBuffer(e*i);return this.getArrayForSample(I,t).fill(this.getGDALNoData()||0),{x:A,y:g,sample:I,data:t}}const a=(await this.source.fetch([{offset:E,length:s}],i))[0];let o;return null!==Q&&Q[C]?o=Q[C]:(o=(async()=>{let A=await e.decode(a);const I=this.getSampleFormat(),i=this.getBitsPerSample();return function(A,g){return(1!==A&&2!==A||!(g<=32)||g%8!=0)&&(3!==A||16!==g&&32!==g&&64!==g)}(I,i)&&(A=function(A,g,I,e,i,t,B){const C=new DataView(A),Q=2===I?1:e,E=mA(g,i,2===I?B*t:B*t*e),s=parseInt("1".repeat(i),2);if(1===g){let A;A=1===I?e*i:i;let g=t*A;7&g&&(g=g+7&-8);for(let A=0;A<B;++A){const I=A*g;for(let g=0;g<t;++g){const e=I+g*Q*i;for(let I=0;I<Q;++I){const B=e+I*i,a=(A*t+g)*Q+I,o=Math.floor(B/8),r=B%8;if(r+i<=8)E[a]=C.getUint8(o)>>8-i-r&s;else if(r+i<=16)E[a]=C.getUint16(o)>>16-i-r&s;else if(r+i<=24){const A=C.getUint16(o)<<8|C.getUint8(o+2);E[a]=A>>24-i-r&s}else E[a]=C.getUint32(o)>>32-i-r&s}}}}return E.buffer}(A,I,this.planarConfiguration,this.getSamplesPerPixel(),i,this.getTileWidth(),this.getBlockHeight(g))),A})(),null!==Q&&(Q[C]=o)),{x:A,y:g,sample:I,data:await o}}async _readRaster(A,g,I,e,i,t,B,C,Q){const E=this.getTileWidth(),s=this.getTileHeight(),a=this.getWidth(),o=this.getHeight(),r=Math.max(Math.floor(A[0]/E),0),n=Math.min(Math.ceil(A[2]/E),Math.ceil(a/E)),h=Math.max(Math.floor(A[1]/s),0),l=Math.min(Math.ceil(A[3]/s),Math.ceil(o/s)),c=A[2]-A[0];let D=this.getBytesPerPixel();const w=[],d=[];for(let A=0;A<g.length;++A){if(1===this.planarConfiguration){const I=await this.fileDirectory.loadValue("BitsPerSample");if("object"!=typeof I)throw new Error("Expected BitsPerSample to be an array or typed array.");w.push(YA(I,0,g[A])/8)}else w.push(0);d.push(this.getReaderForSample(g[A]))}const y=[],{littleEndian:f}=this;for(let t=h;t<l;++t)for(let B=r;B<n;++B){let C;1===this.planarConfiguration&&(C=this.getTileOrStrip(B,t,0,i,Q));for(let r=0;r<g.length;++r){const n=r,h=g[r];if(2===this.planarConfiguration&&(D=this.getSampleByteSize(h),C=this.getTileOrStrip(B,t,h,i,Q)),!C)throw new Error("Could not get tile or strip data.");const l=C.then(i=>{const t=i.data,B=new DataView(t),C=this.getBlockHeight(i.y),Q=i.y*s,r=i.x*E,h=Q+C,l=(i.x+1)*E,y=d[n],u=Math.min(C,C-(h-A[3]),o-Q),S=Math.min(E,E-(l-A[2]),a-r);for(let i=Math.max(0,A[1]-Q);i<u;++i)for(let t=Math.max(0,A[0]-r);t<S;++t){const C=(i*E+t)*D,s=y.call(B,C+w[n],f);let a;e?(a=(i+Q-A[1])*c*g.length+(t+r-A[0])*g.length+n,I[a]=s):(a=(i+Q-A[1])*c+t+r-A[0],I[n][a]=s)}});y.push(l)}}if(await Promise.all(y),t&&A[2]-A[0]!==t||B&&A[3]-A[1]!==B){let i;i=e?MA(I,A[2]-A[0],A[3]-A[1],t,B,g.length,C):pA(I,A[2]-A[0],A[3]-A[1],t,B,C);const Q=i;return Q.width=t??A[2]-A[0],Q.height=B??A[3]-A[1],Q}const u=I;return u.width=t||A[2]-A[0],u.height=B||A[3]-A[1],u}async readRasters(A={}){const{window:g,samples:I=[],pool:e=null,width:i,height:t,resampleMethod:B,fillValue:C,signal:Q}=A,E="interleave"in A&&A.interleave,s=g||[0,0,this.getWidth(),this.getHeight()];if(s[0]>s[2]||s[1]>s[3])throw new Error("Invalid subsets");const a=(s[2]-s[0])*(s[3]-s[1]),o=this.getSamplesPerPixel();if(I&&I.length){for(let A=0;A<I.length;++A)if(I[A]>=o)return Promise.reject(new RangeError(`Invalid sample index '${I[A]}'.`))}else for(let A=0;A<o;++A)I.push(A);let r;if(E){const{fileDirectory:A}=this,g=A.getValue("SampleFormat"),e=g?Math.max.apply(null,Array.from(g)):1;if(1!==e&&2!==e&&3!==e)throw new Error("Unsupported sample format for interleaved data. Must be 1, 2, or 3.");const i=A.getValue("BitsPerSample");if(r=mA(e,i?Math.max.apply(null,Array.from(i)):8,a*I.length),C){if(Array.isArray(C))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(C)}}else{r=[];for(let A=0;A<I.length;++A){const g=this.getArrayForSample(I[A],a);Array.isArray(C)&&A<C.length?g.fill(C[A]):C&&!Array.isArray(C)&&g.fill(C),r.push(g)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,g){if(!NA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:I}=NA.get(A);return I(g)}(n,this.fileDirectory),l=e?e.bindParameters(n,h):await async function(A,g){if(!NA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:I}=NA.get(A);return new(await I())(g)}(n,h);return await this._readRaster(s,I,r,E,l,i,t,B,Q)}async readRGB(A={}){const{window:g,pool:I=null,width:e,height:i,resampleMethod:t,enableAlpha:B=!1,signal:C}=A,Q=("interleave"in A&&A.interleave)??!1,E=g||[0,0,this.getWidth(),this.getHeight()];if(E[0]>E[2]||E[1]>E[3])throw new Error("Invalid subsets");const s=this.fileDirectory.getValue("PhotometricInterpretation");if(s===hA){let A=[0,1,2];const E=this.fileDirectory.getValue("ExtraSamples");if(E&&E[0]!==dA&&B){A=[];const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;I+=1)A.push(I)}return this.readRasters({window:g,interleave:Q,samples:A,pool:I,width:e,height:i,resampleMethod:t,signal:C})}let a;switch(s){case rA:case nA:case lA:a=[0];break;case cA:a=[0,1,2,3];break;case DA:case wA:a=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const o={window:E,interleave:!0,samples:a,pool:I,width:e,height:i,resampleMethod:t,signal:C},{fileDirectory:r}=this,n=await this.readRasters(o),h=2**this.getBitsPerSample(0);let l;switch(s){case rA:l=function(A,g){const{width:I,height:e}=A,i=new Uint8Array(I*e*3);let t;for(let I=0,e=0;I<A.length;++I,e+=3)t=256-A[I]/g*256,i[e]=t,i[e+1]=t,i[e+2]=t;return i}(n,h);break;case nA:l=function(A,g){const{width:I,height:e}=A,i=new Uint8Array(I*e*3);let t;for(let I=0,e=0;I<A.length;++I,e+=3)t=A[I]/g*256,i[e]=t,i[e+1]=t,i[e+2]=t;return i}(n,h);break;case lA:l=function(A,g){const{width:I,height:e}=A,i=new Uint8Array(I*e*3),t=g.length/3,B=g.length/3*2;for(let I=0,e=0;I<A.length;++I,e+=3){const C=A[I];i[e]=g[C]/65536*256,i[e+1]=g[C+t]/65536*256,i[e+2]=g[C+B]/65536*256}return i}(n,await r.loadValue("ColorMap"));break;case cA:l=function(A){const{width:g,height:I}=A,e=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=4,I+=3){const i=A[g],t=A[g+1],B=A[g+2],C=A[g+3];e[I]=(255-i)/256*255*((255-C)/256),e[I+1]=(255-t)/256*255*((255-C)/256),e[I+2]=(255-B)/256*255*((255-C)/256)}return e}(n);break;case DA:l=function(A){const{width:g,height:I}=A,e=new Uint8ClampedArray(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){const i=A[g],t=A[g+1],B=A[g+2];e[I]=i+1.402*(B-128),e[I+1]=i-.34414*(t-128)-.71414*(B-128),e[I+2]=i+1.772*(t-128)}return e}(n);break;case wA:l=function(A){const{width:g,height:I}=A,e=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){let i,t,B,C=(A[g+0]+16)/116,Q=(A[g+1]<<24>>24)/500+C,E=C-(A[g+2]<<24>>24)/200;Q=.95047*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),C=1*(C*C*C>.008856?C*C*C:(C-16/116)/7.787),E=1.08883*(E*E*E>.008856?E*E*E:(E-16/116)/7.787),i=3.2406*Q+-1.5372*C+-.4986*E,t=-.9689*Q+1.8758*C+.0415*E,B=.0557*Q+-.204*C+1.057*E,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,t=t>.0031308?1.055*t**(1/2.4)-.055:12.92*t,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,e[I]=255*Math.max(0,Math.min(1,i)),e[I+1]=255*Math.max(0,Math.min(1,t)),e[I+2]=255*Math.max(0,Math.min(1,B))}return e}(n);break;default:throw new Error("Unsupported photometric interpretation.")}if(!Q){const A=new Uint8Array(l.length/3),g=new Uint8Array(l.length/3),I=new Uint8Array(l.length/3);for(let e=0,i=0;e<l.length;e+=3,++i)A[i]=l[e],g[i]=l[e+1],I[i]=l[e+2];l=[A,g,I]}const c=l;return c.width=n.width,c.height=n.height,c}async getTiePoints(){if(!this.fileDirectory.hasTag("ModelTiepoint"))return[];const A=await this.fileDirectory.loadValue("ModelTiepoint");if("object"!=typeof A)throw new Error("Expected ModelTiepoint to be an array or typed array.");const g=[];for(let I=0;I<A.length;I+=6)g.push({i:A[I],j:A[I+1],k:A[I+2],x:A[I+3],y:A[I+4],z:A[I+5]});return g}async getGDALMetadata(A=null){const g={};if(!this.fileDirectory.hasTag("GDAL_METADATA"))return null;let I=function(A,g){const I=[];let e,i=0;for(;e=iA(A,g,{debug:!1,startIndex:i});)i=e.start+1+g.length,I.push(e);return I}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");I=null===A?I.filter(A=>void 0===gA(A,"sample")):I.filter(g=>Number(gA(g,"sample"))===A);for(let A=0;A<I.length;++A){const e=I[A];g[gA(e,"name")]=e.inner}return g}getGDALNoData(){const A=this.fileDirectory.hasTag("GDAL_NODATA")&&this.fileDirectory.getValue("GDAL_NODATA");return A?Number(A.substring(0,A.length-1)):null}getOrigin(){const A=this.fileDirectory.getValue("ModelTiepoint"),g=this.fileDirectory.getValue("ModelTransformation");if(A&&6===A.length)return[A[3],A[4],A[5]];if(g)return[g[3],g[7],g[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const g=this.fileDirectory.getValue("ModelPixelScale"),I=this.fileDirectory.getValue("ModelTransformation");if(g)return[g[0],-g[1],g[2]];if(I)return 0===I[1]&&0===I[4]?[I[0],-I[5],I[10]]:[Math.sqrt(I[0]*I[0]+I[4]*I[4]),-Math.sqrt(I[1]*I[1]+I[5]*I[5]),I[10]];if(A){const[g,I,e]=A.getResolution();return[g*A.getWidth()/this.getWidth(),I*A.getHeight()/this.getHeight(),e*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.getGeoKeys()?.GTRasterTypeGeoKey}getBoundingBox(A=!1){const g=this.getHeight(),I=this.getWidth(),e=this.fileDirectory.getValue("ModelTransformation");if(e&&!A){const[A,i,,t,B,C,,Q]=e,E=[[0,0],[0,g],[I,0],[I,g]].map(([g,I])=>[t+A*g+i*I,Q+B*g+C*I]),s=E.map(A=>A[0]),a=E.map(A=>A[1]);return[Math.min(...s),Math.min(...a),Math.max(...s),Math.max(...a)]}{const A=this.getOrigin(),e=this.getResolution(),i=A[0],t=A[1],B=i+e[0]*I,C=t+e[1]*g;return[Math.min(i,B),Math.min(t,C),Math.max(i,B),Math.max(t,C)]}}}class HA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,g){const I=this.getUint32(A,g),e=this.getUint32(A+4,g);let i;if(g){if(i=I+2**32*e,!Number.isSafeInteger(i))throw new Error(`${i} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return i}if(i=2**32*I+e,!Number.isSafeInteger(i))throw new Error(`${i} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return i}getInt64(A,g){let I=0;const e=(128&this._dataView.getUint8(A+(g?7:0)))>0;let i=!0;for(let t=0;t<8;t++){let B=this._dataView.getUint8(A+(g?t:7-t));e&&(i?0!==B&&(B=255&~(B-1),i=!1):B=255&~B),I+=B*256**t}return e&&(I=-I),I}getUint8(A){return this._dataView.getUint8(A)}getInt8(A){return this._dataView.getInt8(A)}getUint16(A,g){return this._dataView.getUint16(A,g)}getInt16(A,g){return this._dataView.getInt16(A,g)}getUint32(A,g){return this._dataView.getUint32(A,g)}getInt32(A,g){return this._dataView.getInt32(A,g)}getFloat16(A,g){return AA(this._dataView,A,g)}getFloat32(A,g){return this._dataView.getFloat32(A,g)}getFloat64(A,g){return this._dataView.getFloat64(A,g)}}class JA{constructor(A,g,I,e){this._dataView=new DataView(A),this._sliceOffset=g,this._littleEndian=I,this._bigTiff=e}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,g){return this.sliceOffset<=A&&this.sliceTop>=A+g}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const g=this.readUint32(A),I=this.readUint32(A+4);let e;if(this._littleEndian){if(e=g+2**32*I,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*g+I,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}readInt64(A){let g=0;const I=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let e=!0;for(let i=0;i<8;i++){let t=this._dataView.getUint8(A+(this._littleEndian?i:7-i));I&&(e?0!==t&&(t=255&~(t-1),e=!1):t=255&~t),g+=t*256**i}return I&&(g=-g),g}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const bA="\r\n\r\n";function qA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const g={};for(const[I,e]of A)g[I.toLowerCase()]=e;return g}function xA(A){return qA(A.split("\r\n").map(A=>{const g=A.split(":").map(A=>A.trim());return g[0]=g[0].toLowerCase(),g}))}function TA(A){let g=NaN,I=NaN,e=NaN;return A&&([,g,I,e]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:g,end:I,total:e}}class OA{async fetch(A,g){return Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data))}async fetchSlice(A,g){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class PA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[g,I]of A)this.onEviction(g,I.value)}_deleteIfExpired(A,g){return"number"==typeof g.expiry&&g.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,g.value),this.delete(A))}_getOrDeleteIfExpired(A,g){if(!1===this._deleteIfExpired(A,g))return g.value}_getItemValue(A,g){return g.expiry?this._getOrDeleteIfExpired(A,g):g.value}_peek(A,g){const I=g.get(A);return this._getItemValue(A,I)}_set(A,g){this.cache.set(A,g),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,g){this.oldCache.delete(A),this._set(A,g)}*_entriesAscending(){for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield A)}}for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield A)}}get(A){if(this.cache.has(A)){const g=this.cache.get(A);return this._getItemValue(A,g)}if(this.oldCache.has(A)){const g=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,g))return this._moveToRecent(A,g),g.value}}set(A,g,{maxAge:I=this.maxAge}={}){const e="number"==typeof I&&I!==Number.POSITIVE_INFINITY?Date.now()+I:void 0;return this.cache.has(A)?this.cache.set(A,{value:g,expiry:e}):this._set(A,{value:g,expiry:e}),this}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const g=this.cache.delete(A);return g&&this._size--,this.oldCache.delete(A)||g}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const g=[...this._entriesAscending()],I=g.length-A;I<0?(this.cache=new Map(g),this.oldCache=new Map,this._size=g.length):(I>0&&this._emitEvictions(g.slice(0,I)),this.oldCache=new Map(g.slice(I)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}}}*entriesDescending(){let A=[...this.cache];for(let g=A.length-1;g>=0;--g){const I=A[g],[e,i]=I;!1===this._deleteIfExpired(e,i)&&(yield[e,i.value])}A=[...this.oldCache];for(let g=A.length-1;g>=0;--g){const I=A[g],[e,i]=I;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,i)&&(yield[e,i.value])}}}*entriesAscending(){for(const[A,g]of this._entriesAscending())yield[A,g.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const g of this.oldCache.keys())this.cache.has(g)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,g=this){for(const[I,e]of this.entriesAscending())A.call(g,e,I,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class vA extends Error{constructor(...A){super(...A),Error.captureStackTrace&&Error.captureStackTrace(this,vA),this.name="AbortError",this.signal=void 0}}class VA extends Error{constructor(A,g){super(g),this.errors=A,this.message=g,this.name="AggregateError"}}const ZA=VA;class zA{constructor(A,g,I){this.offset=A,this.length=g,this.data=I}get top(){return this.offset+this.length}}class jA{constructor(A,g,I){this.offset=A,this.length=g,this.blockIds=I}}class WA extends OA{constructor(A,{blockSize:g=65536,cacheSize:I=100}={}){super(),this.source=A,this.blockSize=g,this.blockCache=new PA({maxSize:I,onEviction:(A,g)=>{this.evictedBlocks.set(A,g)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,g){const I=[],e=[],i=[];this.evictedBlocks.clear();for(const{offset:g,length:t}of A){let A=g+t;const{fileSize:B}=this;null!==B&&(A=Math.min(A,B));for(let t=Math.floor(g/this.blockSize)*this.blockSize;t<A;t+=this.blockSize){const A=Math.floor(t/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),e.push(A)),this.blockRequests.has(A)&&I.push(this.blockRequests.get(A)),i.push(A)}}await async function(A){return new Promise(g=>setTimeout(g,A))}(),this.fetchBlocks(g);const t=[];for(const A of e)this.blockRequests.has(A)&&t.push(this.blockRequests.get(A));await Promise.allSettled(I),await Promise.allSettled(t);const B=[],C=i.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(C.forEach(A=>this.blockIdsToFetch.add(A)),C.length>0&&g&&!g.aborted){this.fetchBlocks();for(const A of C){const g=this.blockRequests.get(A);if(!g)throw new Error(`Block ${A} is not in the block requests`);B.push(g)}await Promise.allSettled(B)}if(g&&g.aborted)throw new vA("Request was aborted");const Q=i.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),E=Q.filter(A=>!A);if(E.length)throw new ZA(E,"Request failed");const s=new Map(function(A,g){const I=Array.isArray(A)?A:Array.from(A),e=Array.isArray(g)?g:Array.from(g);return I.map((A,g)=>[A,e[g]])}(i,Q));return this.readSliceData(A,s)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const g=this.groupBlocks(this.blockIdsToFetch),I=g.map(async g=>({...g,...await this.source.fetchSlice(g,A)}));for(let e=0;e<g.length;++e){const i=g[e];for(const g of i.blockIds)this.blockRequests.set(g,(async()=>{try{const A=(await Promise.all(I))[e],i=g*this.blockSize,t=i-A.offset,B=Math.min(t+this.blockSize,A.data.byteLength),C=A.data.slice(t,B),Q=new zA(i,C.byteLength,C);this.blockCache.set(g,Q),this.abortedBlockIds.delete(g)}catch(I){if(!(I instanceof vA&&"AbortError"===I.name))throw I;I.signal=A,this.blockCache.delete(g),this.abortedBlockIds.add(g)}finally{this.blockRequests.delete(g)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const g=Array.from(A).sort((A,g)=>A-g);if(0===g.length)return[];let I=[],e=null;const i=[];for(const A of g)null===e||e+1===A?(I.push(A),e=A):(i.push(new jA(I[0]*this.blockSize,I.length*this.blockSize,I)),I=[A],e=A);return i.push(new jA(I[0]*this.blockSize,I.length*this.blockSize,I)),i}readSliceData(A,g){return A.map(A=>{let I=A.offset+A.length;null!==this.fileSize&&(I=Math.min(this.fileSize,I));const e=Math.floor(A.offset/this.blockSize),i=Math.floor((I-1)/this.blockSize),t=new ArrayBuffer(A.length),B=new Uint8Array(t);for(let t=e;t<=i;++t){const e=g.get(t);if(!e)continue;const i=e.offset-A.offset;let C,Q=0,E=0;i<0?Q=-i:i>0&&(E=i),C=e.top-I<0?e.length-Q:I-e.offset-Q;const s=new Uint8Array(e.data,Q,C);B.set(s,E)}return t})}}class _A{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class XA{constructor(A){this.url=A}async request(A){throw new Error("request is not implemented")}}class $A extends _A{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)||void 0}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class Ag extends XA{constructor(A,g){super(A),this.credentials=g}async request({headers:A,signal:g}={}){const I=await fetch(this.url,{headers:A,credentials:this.credentials,signal:g});return new $A(I)}}class gg extends _A{constructor(A,g){super(),this.xhr=A,this.data=g}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)||void 0}async getData(){return this.data}}class Ig extends XA{constructRequest(A,g){return new Promise((I,e)=>{const i=new XMLHttpRequest;i.open("GET",this.url),i.responseType="arraybuffer";for(const[g,I]of Object.entries(A))i.setRequestHeader(g,I);i.onload=()=>{const A=i.response;I(new gg(i,A))},i.onerror=e,i.onabort=()=>e(new vA("Request aborted")),i.send(),g&&(g.aborted&&i.abort(),g.addEventListener("abort",()=>i.abort()))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}var eg={};class ig extends _A{constructor(A,g){super(),this.response=A,this.dataPromise=g}get status(){return this.response.statusCode}getHeader(A){const g=this.response.headers[A];return Array.isArray(g)?g.join(", "):g}async getData(){return await this.dataPromise}}class tg extends XA{constructor(A){super(A),this.parsedUrl=eg.parse(this.url),this.httpApi=(this.parsedUrl.protocol,eg)}constructRequest(A,g){return new Promise((I,e)=>{const i=this.httpApi.get({...this.parsedUrl,headers:A},A=>{const g=new Promise(g=>{const I=[];A.on("data",A=>{I.push(A)}),A.on("end",()=>{const A=Buffer.concat(I).buffer;g(A)}),A.on("error",e)});I(new ig(A,g))});i.on("error",e),g&&(g.aborted&&i.destroy(new vA("Request aborted")),g.addEventListener("abort",()=>i.destroy(new vA("Request aborted"))))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}class Bg extends OA{constructor(A,{headers:g,maxRanges:I=0,allowFullFile:e}={}){super(),this.client=A,this.headers=g,this.maxRanges=I,this.allowFullFile=e,this._fileSize=null}async fetch(A,g){return this.maxRanges>=A.length?this.fetchSlices(A,g).then(A=>A.map(A=>A.data)):(this.maxRanges>0&&A.length,Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data)))}async fetchSlices(A,g){const I=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:g})=>`${A}-${A+g-1}`).join(",")}`},signal:g});if(I.ok){if(206===I.status){const{type:e,params:i}=function(A){if(!A)return{type:null,params:{}};const[g,...I]=A.split(";").map(A=>A.trim());return{type:g,params:qA(I.map(A=>A.split("=")))}}(I.getHeader("content-type"));if("multipart/byteranges"===e){const A=function(A,g){let I=-1;const e=new TextDecoder("ascii"),i=[],t=`--${g}`,B=`${t}--`;for(let g=0;g<10;++g)e.decode(new Uint8Array(A,g,t.length))===t&&(I=g);if(-1===I)throw new Error("Could not find initial boundary");for(;I<A.byteLength;){const g=e.decode(new Uint8Array(A,I,Math.min(t.length+1024,A.byteLength-I)));if(0===g.length||g.startsWith(B))break;if(!g.startsWith(t))throw new Error("Part does not start with boundary");const C=g.substr(t.length+2);if(0===C.length)break;const Q=C.indexOf(bA),E=xA(C.substr(0,Q)),{start:s,end:a,total:o}=TA(E["content-range"]),r=I+t.length+Q+4,n=a+1-s;i.push({headers:E,data:A.slice(r,r+n),offset:s,length:n,fileSize:o}),I=r+n+4}return i}(await I.getData(),i.boundary);return this._fileSize=A[0].fileSize||null,A}const t=await I.getData(),{start:B,end:C,total:Q}=TA(I.getHeader("content-range"));this._fileSize=Q||null;const E=[{data:t,offset:B,length:C+1-B}];if(A.length>1){const I=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,g)));return E.concat(I)}return E}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await I.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,g){const{offset:I,length:e}=A,i=await this.client.request({headers:{...this.headers,Range:`bytes=${I}-${I+e-1}`},signal:g});if(i.ok){if(206===i.status){const A=await i.getData(),{total:g}=TA(i.getHeader("content-range"));return this._fileSize=g||null,{data:A,offset:I,length:e}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await i.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function Cg(A,{blockSize:g,cacheSize:I}){return void 0===g?A:new WA(A,{blockSize:g,cacheSize:I})}function Qg(A,{forceXHR:g=!1,...I}={}){return"function"!=typeof fetch||g?"undefined"!=typeof XMLHttpRequest?function(A,{headers:g={},maxRanges:I=0,allowFullFile:e=!1,...i}={}){const t=new Ig(A);return Cg(new Bg(t,{headers:g,maxRanges:I,allowFullFile:e}),i)}(A,I):function(A,{headers:g={},maxRanges:I=0,allowFullFile:e=!1,...i}={}){const t=new tg(A);return Cg(new Bg(t,{headers:g,maxRanges:I,allowFullFile:e}),i)}(A,I):function(A,{headers:g={},credentials:I,maxRanges:e=0,allowFullFile:i=!1,...t}={}){const B=new Ag(A,I);return Cg(new Bg(B,{headers:g,maxRanges:e,allowFullFile:i}),t)}(A,I)}class Eg extends OA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,g){if(g&&g.aborted)throw new vA("Request aborted");return Promise.resolve({data:this.arrayBuffer.slice(A.offset,A.offset+A.length),offset:A.offset,length:A.length})}}function sg(A,g){switch(A){case tA.BYTE:case tA.ASCII:case tA.UNDEFINED:return new Uint8Array(g);case tA.SBYTE:return new Int8Array(g);case tA.SHORT:return new Uint16Array(g);case tA.SSHORT:return new Int16Array(g);case tA.LONG:case tA.IFD:return new Uint32Array(g);case tA.SLONG:return new Int32Array(g);case tA.LONG8:case tA.IFD8:case tA.SLONG8:return new Array(g);case tA.RATIONAL:return new Uint32Array(2*g);case tA.SRATIONAL:return new Int32Array(2*g);case tA.FLOAT:return new Float32Array(g);case tA.DOUBLE:return new Float64Array(g);default:throw new RangeError(`Invalid field type: ${A}`)}}function ag(A,g){switch(g){case tA.BYTE:case tA.ASCII:case tA.UNDEFINED:return A.readUint8;case tA.SBYTE:return A.readInt8;case tA.SHORT:return A.readUint16;case tA.SSHORT:return A.readInt16;case tA.LONG:case tA.IFD:return A.readUint32;case tA.SLONG:return A.readInt32;case tA.LONG8:case tA.IFD8:return A.readUint64;case tA.SLONG8:return A.readInt64;case tA.RATIONAL:return A.readUint32;case tA.SRATIONAL:return A.readInt32;case tA.FLOAT:return A.readFloat32;case tA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${g}`)}}function og(A=null,g,I,e,i,t,B=!1){const C=CA(e),Q=A||sg(e,i),E=e===tA.RATIONAL||e===tA.SRATIONAL;if(E)for(let A=0;A<i;A+=2)Q[A]=g.call(I,t+A*C),Q[A+1]=g.call(I,t+(A*C+4));else for(let A=0;A<i;++A)Q[A]=g.call(I,t+A*C);return e===tA.ASCII?new TextDecoder("utf-8").decode(Q):1!==i||B||E?Q:Q[0]}class rg{constructor(A,g,I,e,i){this.source=A,this.arrayOffset=g,this.littleEndian=I,this.fieldType=e,this.length=i,this.data=sg(e,i),this.itemSize=CA(e),this.maskBitmap=new Uint8Array(Math.ceil(i/8)),this.fetchIndexPromises=new Map,this.fullFetchPromise=null}async loadAll(){return this.fullFetchPromise||(this.fullFetchPromise=this.source.fetch([{offset:this.arrayOffset,length:this.itemSize*this.length}]).then(A=>{const g=new JA(A[0],this.arrayOffset,!0,!1),I=og(this.data,ag(g,this.fieldType),g,this.fieldType,this.length,this.arrayOffset,!0);return this.maskBitmap.fill(255),this.fetchIndexPromises.clear(),I})),this.fullFetchPromise}async get(A){if(A<0||A>=this.data.length)throw new RangeError(`Index ${A} out of bounds for length ${this.data.length}`);const g=Math.floor(A/8),I=1<<A%8,e=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[g]&I)){if(!this.fetchIndexPromises.has(A)){const i=this.source.fetch([{offset:e,length:this.itemSize}]).then(i=>{const t=new JA(i[0],this.arrayOffset+A*this.itemSize,!0,!1),B=ag(t,this.fieldType).call(t,e);return this.data[A]=B,this.maskBitmap[g]|=I,this.fetchIndexPromises.delete(A),B});this.fetchIndexPromises.set(A,i)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class ng{constructor(A,g,I,e){this.actualizedFields=A,this.deferredFields=g,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=I,this.nextIFDByteOffset=e}hasTag(A){const g=oA(A);return this.actualizedFields.has(g)||this.deferredFields.has(g)||this.deferredArrays.has(g)}getValue(A){const g=oA(A);if(this.deferredFields.has(g)||this.deferredArrays.has(g)){const A=sA[g];throw new Error(`Field '${A?.name||`Tag${g}`}' (${g}) is deferred. Use loadValue() to load it asynchronously.`)}if(this.actualizedFields.has(g))return this.actualizedFields.get(g)}async loadValue(A){const g=oA(A);if(this.actualizedFields.has(g))return this.actualizedFields.get(g);if(this.deferredFieldsBeingResolved.has(g))return this.deferredFieldsBeingResolved.get(g);const I=this.deferredFields.get(g);if(I){this.deferredFields.delete(g);const A=(async()=>{try{const A=await I();return this.actualizedFields.set(g,A),A}finally{this.deferredFieldsBeingResolved.delete(g)}})();return this.deferredFieldsBeingResolved.set(g,A),A}const e=this.deferredArrays.get(g);return e?e.loadAll():void 0}async loadValueIndexed(A,g){const I=oA(A);if(this.actualizedFields.has(I)){return this.actualizedFields.get(I)[g]}if(this.deferredArrays.has(I)){return this.deferredArrays.get(I).get(g)}if(this.hasTag(I)){const A=await this.loadValue(I);if(A&&"number"!=typeof A)return A[g]}}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const g={};for(let I=4;I<=4*A[3];I+=4){const e=GA[A[I]],i=A[I+1]||null,t=A[I+2],B=A[I+3];let C=null;if(i){if(C=this.getValue(i),null==C)throw new Error(`Could not get value of geoKey '${e}'.`);"string"==typeof C?C=C.substring(B,B+t-1):C.subarray&&(C=C.subarray(B,B+t),1===t&&(C=C[0]))}else C=B;g[e]=C}return g}toObject(){const A={};for(const[g,I]of this.actualizedFields.entries()){const e="number"==typeof g?sA[g]:void 0;A[e?e.name:`Tag${g}`]=I}return A}}class hg{constructor(A,g,I,e=!1){this.source=A,this.littleEndian=g,this.bigTiff=I,this.eager=e}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new JA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const g=this.bigTiff?20:12,I=this.bigTiff?8:2;let e=await this.getSlice(A);const i=this.bigTiff?e.readUint64(A):e.readUint16(A),t=i*(g+(this.bigTiff?16:6));e.covers(A,t)||(e=await this.getSlice(A,t));const B=new Map,C=new Map,Q=new Map;let E=A+(this.bigTiff?8:2);for(let A=0;A<i;E+=g,++A){const A=e.readUint16(E),g=e.readUint16(E+2),I=this.bigTiff?e.readUint64(E+4):e.readUint32(E+4);let i=null,t=null,s=null;const a=CA(g),o=E+(this.bigTiff?12:8),r=sA[A]?.isArray,n=sA[A]?.eager||this.eager;if(a*I<=(this.bigTiff?8:4))i=og(sg(g,I),ag(e,g),e,g,I,o,r);else{const A=e.readOffset(o),B=CA(g)*I;if(e.covers(A,B))i=og(sg(g,I),ag(e,g),e,g,I,A,r);else if(n){const e=await this.getSlice(A,B);i=og(sg(g,I),ag(e,g),e,g,I,A,r)}else r?s=new rg(this.source,A,this.littleEndian,g,I):t=async()=>{const e=await this.getSlice(A,B);return og(sg(g,I),ag(e,g),e,g,I,A,r)}}null!==i?B.set(A,i):null!==t?C.set(A,t):null!==s&&Q.set(A,s)}const s=e.readOffset(A+I+g*i);return new ng(B,C,Q,s)}}function lg(A,g){let I=A.length-g,e=0;do{for(let I=g;I>0;I--)A[e+g]+=A[e],e++;I-=g}while(I>0)}function cg(A,g,I){let e=0,i=A.length;const t=i/I;for(;i>g;){for(let I=g;I>0;--I)A[e+g]+=A[e],++e;i-=g}const B=A.slice();for(let g=0;g<t;++g)for(let e=0;e<I;++e)A[I*g+e]=B[(I-e-1)*t+g]}class Dg{constructor(A){this.parameters=A}decodeBlock(A){throw new Error("decodeBlock not implemented")}async decode(A){const g=await this.decodeBlock(A),{tileWidth:I,tileHeight:e,predictor:i,bitsPerSample:t,planarConfiguration:B}=this.parameters;if(1!==i){return function(A,g,I,e,i,t){if(!g||1===g)return A;for(let A=0;A<i.length;++A){if(i[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(i[A]!==i[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const B=i[0]/8,C=2===t?1:i.length;for(let t=0;t<e&&!(t*C*I*B>=A.byteLength);++t){let e;if(2===g){switch(i[0]){case 8:e=new Uint8Array(A,t*C*I*B,C*I*B);break;case 16:e=new Uint16Array(A,t*C*I*B,C*I*B/2);break;case 32:e=new Uint32Array(A,t*C*I*B,C*I*B/4);break;default:throw new Error(`Predictor 2 not allowed with ${i[0]} bits per sample.`)}lg(e,C)}else 3===g&&(e=new Uint8Array(A,t*C*I*B,C*I*B),cg(e,C,B))}return A}(g,i,I,e,Array.isArray(t)||ArrayBuffer.isView(t)?Array.from(t):[t],B)}return g}}function wg(A,g,I,e){let i=null,t=null;const B=CA(g);switch(g){case tA.BYTE:case tA.ASCII:case tA.UNDEFINED:i=new Uint8Array(I),t=A.readUint8;break;case tA.SBYTE:i=new Int8Array(I),t=A.readInt8;break;case tA.SHORT:i=new Uint16Array(I),t=A.readUint16;break;case tA.SSHORT:i=new Int16Array(I),t=A.readInt16;break;case tA.LONG:case tA.IFD:i=new Uint32Array(I),t=A.readUint32;break;case tA.SLONG:i=new Int32Array(I),t=A.readInt32;break;case tA.LONG8:case tA.IFD8:i=new Array(I),t=A.readUint64;break;case tA.SLONG8:i=new Array(I),t=A.readInt64;break;case tA.RATIONAL:i=new Uint32Array(2*I),t=A.readUint32;break;case tA.SRATIONAL:i=new Int32Array(2*I),t=A.readInt32;break;case tA.FLOAT:i=new Float32Array(I),t=A.readFloat32;break;case tA.DOUBLE:i=new Float64Array(I),t=A.readFloat64}if(null===i||null===t)throw new RangeError(`Invalid field type: ${g}`);for(let g=0;g<I;++g)i[g]=t.call(A,e+g*B);return new TextDecoder("utf-8").decode(i)}class dg extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class yg{async getImage(A=0){throw new Error("Not implemented")}async getImageCount(){throw new Error("Not implemented")}async readRasters(A={}){const{window:g,width:I,height:e}=A;let{resX:i,resY:t,bbox:B}=A;const C=await this.getImage();let Q=C;const E=await this.getImageCount(),s=C.getBoundingBox();if(g&&B)throw new Error('Both "bbox" and "window" passed.');if(I||e){if(g){const[A,I]=C.getOrigin(),[e,i]=C.getResolution();B=[A+g[0]*e,I+g[1]*i,A+g[2]*e,I+g[3]*i]}const A=B||s;if(I){if(i)throw new Error("Both width and resX passed");i=(A[2]-A[0])/I}if(e){if(t)throw new Error("Both width and resY passed");t=(A[3]-A[1])/e}}if(i||t){const A=[];for(let g=0;g<E;++g){const I=await this.getImage(g),e=I.fileDirectory.getValue("SubfileType"),i=I.fileDirectory.getValue("NewSubfileType");(0===g||2===e||1&(i||0))&&A.push(I)}A.sort((A,g)=>A.getWidth()-g.getWidth());for(let g=0;g<A.length;++g){const I=A[g],e=(s[2]-s[0])/I.getWidth(),B=(s[3]-s[1])/I.getHeight();if(Q=I,i&&i>e||t&&t>B)break}}let a=g;if(B){const[A,g]=C.getOrigin(),[I,e]=Q.getResolution(C);a=[Math.round((B[0]-A)/I),Math.round((B[1]-g)/e),Math.round((B[2]-A)/I),Math.round((B[3]-g)/e)],a=[Math.min(a[0],a[2]),Math.min(a[1],a[3]),Math.max(a[0],a[2]),Math.max(a[1],a[3])]}return Q.readRasters({...A,window:a})}}class fg extends yg{constructor(A,g,I,e,i={}){super(),this.source=A,this.parser=new hg(A,g,I,!1),this.littleEndian=g,this.bigTiff=I,this.firstIFDOffset=e,this.cache=i.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new JA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parser.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(g){if(g instanceof dg)throw new dg(A);throw g}return this.ifdRequests[A]=(async()=>{const g=this.ifdRequests[A-1];if(!g)throw new Error("Previous IFD request missing");const I=await g;if(0===I.nextIFDByteOffset)throw new dg(A);return this.parser.parseFileDirectoryAt(I.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new KA(await this.requestIFD(A),this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,g=!0;for(;g;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof dg))throw A;g=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(null!==this.ghostValues)return this.ghostValues;const g="GDAL_STRUCTURAL_METADATA_SIZE=";let I=await this.getSlice(A,130);if(g===wg(I,tA.ASCII,30,A)){const g=wg(I,tA.ASCII,130,A).split("\n")[0],e=Number(g.split("=")[1].split(" ")[0])+g.length;e>130&&(I=await this.getSlice(A,e));const i=wg(I,tA.ASCII,e,A),t={};i.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,g])=>{t[A]=g}),this.ghostValues=t}return this.ghostValues}static async fromSource(A,g,I){const e=(await A.fetch([{offset:0,length:1024}],I))[0],i=new HA(e),t=i.getUint16(0,!1);let B;if(18761===t)B=!0;else{if(19789!==t)throw new TypeError("Invalid byte order value.");B=!1}const C=i.getUint16(2,B);let Q;if(42===C)Q=!1;else{if(43!==C)throw new TypeError("Invalid magic number.");Q=!0;if(8!==i.getUint16(4,B))throw new Error("Unsupported offset byte-size.")}const E=Q?i.getUint64(8,B):i.getUint32(4,B);return new fg(A,B,Q,E,g)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function ug(A,g){return fg.fromSource(function(A){return new Eg(A)}(A),void 0,g)}const Sg={type:"image",blockSize:65536,format:void 0,useChannel:null,useChannelIndex:null,noDataValue:void 0,multiplier:1,verticalExaggeration:1,numOfChannels:void 0,planarConfig:void 0,tesselator:"martini",terrainColor:[200,200,200,255],terrainSkirtHeight:100,terrainMinValue:0,useHeatMap:!0,useColorsBasedOnValues:!1,useColorClasses:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,blurredTexture:!0,skipTexture:!1,noDataCheck:"full",clipLow:null,clipHigh:null,color:[255,0,255,255],colorScale:B.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:void 0,colorClasses:void 0,alpha:100,maxGlazeAlpha:128,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],useSlope:!1,useHillshade:!1,hillshadeAzimuth:315,hillshadeAltitude:45,zFactor:1,useSwissRelief:!1,swissSlopeWeight:.5,useReliefGlaze:!1,disableLighting:!1,cacheAllBands:!1};class Gg{constructor(A=257){this.gridSize=A;const g=A-1;if(g&g-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=g*g*2-2,this.numParentTriangles=this.numTriangles-g*g,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let I=A+2,e=0,i=0,t=0,B=0,C=0,Q=0;for(1&I?t=B=C=g:e=i=Q=g;(I>>=1)>1;){const A=e+t>>1,g=i+B>>1;1&I?(t=e,B=i,e=C,i=Q):(e=t,i=B,t=C,B=Q),C=A,Q=g}const E=4*A;this.coords[E+0]=e,this.coords[E+1]=i,this.coords[E+2]=t,this.coords[E+3]=B}}createTile(A){return new Ng(A,this)}}class Ng{constructor(A,g){const I=g.gridSize;if(A.length!==I*I)throw new Error(`Expected terrain data of length ${I*I} (${I} x ${I}), got ${A.length}.`);this.terrain=A,this.martini=g,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:g,coords:I,gridSize:e}=this.martini,{terrain:i,errors:t}=this;for(let B=A-1;B>=0;B--){const A=4*B,C=I[A+0],Q=I[A+1],E=I[A+2],s=I[A+3],a=C+E>>1,o=Q+s>>1,r=a+o-Q,n=o+C-a,h=(i[Q*e+C]+i[s*e+E])/2,l=o*e+a,c=Math.abs(h-i[l]);if(t[l]=Math.max(t[l],c),B<g){const A=(Q+n>>1)*e+(C+r>>1),g=(s+n>>1)*e+(E+r>>1);t[l]=Math.max(t[l],t[A],t[g])}}}getMesh(A=0){const{gridSize:g,indices:I}=this.martini,{errors:e}=this;let i=0,t=0;const B=g-1;function C(B,Q,E,s,a,o){const r=B+E>>1,n=Q+s>>1;Math.abs(B-a)+Math.abs(Q-o)>1&&e[n*g+r]>A?(C(a,o,B,Q,r,n),C(E,s,a,o,r,n)):(I[Q*g+B]=I[Q*g+B]||++i,I[s*g+E]=I[s*g+E]||++i,I[o*g+a]=I[o*g+a]||++i,t++)}I.fill(0),C(0,0,B,B,B,0),C(B,B,0,0,0,B);const Q=new Uint16Array(2*i),E=new Uint32Array(3*t);let s=0;function a(i,t,B,C,o,r){const n=i+B>>1,h=t+C>>1;if(Math.abs(i-o)+Math.abs(t-r)>1&&e[h*g+n]>A)a(o,r,i,t,n,h),a(B,C,o,r,n,h);else{const A=I[t*g+i]-1,e=I[C*g+B]-1,a=I[r*g+o]-1;Q[2*A]=i,Q[2*A+1]=t,Q[2*e]=B,Q[2*e+1]=C,Q[2*a]=o,Q[2*a+1]=r,E[s++]=A,E[s++]=e,E[s++]=a}}return a(0,0,B,B,B,0),a(B,B,0,0,0,B),{vertices:Q,triangles:E}}}function Fg(A,g,I,e,i,t){return(I-i)*(g-t)-(e-t)*(A-i)}class kg{constructor(A,g,I=g){this.data=A,this.width=g,this.height=I,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;const e=g-1,i=I-1,t=this._addPoint(0,0),B=this._addPoint(e,0),C=this._addPoint(0,i),Q=this._addPoint(e,i),E=this._addTriangle(Q,t,C,-1,-1,-1);this._addTriangle(t,Q,B,E,-1,-1),this._flush()}run(A=1){for(;this.getMaxError()>A;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(A,g){return this.data[this.width*g+A]}_flush(){const{coords:A}=this;for(let g=0;g<this._pendingLen;g++){const I=this._pending[g],e=2*this.triangles[3*I+0],i=2*this.triangles[3*I+1],t=2*this.triangles[3*I+2];this._findCandidate(A[e],A[e+1],A[i],A[i+1],A[t],A[t+1],I)}this._pendingLen=0}_findCandidate(A,g,I,e,i,t,B){const C=Math.min(A,I,i),Q=Math.min(g,e,t),E=Math.max(A,I,i),s=Math.max(g,e,t);let a=Fg(I,e,i,t,C,Q),o=Fg(i,t,A,g,C,Q),r=Fg(A,g,I,e,C,Q);const n=e-g,h=A-I,l=t-e,c=I-i,D=g-t,w=i-A,d=Fg(A,g,I,e,i,t),y=this.heightAt(A,g)/d,f=this.heightAt(I,e)/d,u=this.heightAt(i,t)/d;let S=0,G=0,N=0,F=0;for(let A=Q;A<=s;A++){let g=0;a<0&&0!==l&&(g=Math.max(g,Math.floor(-a/l))),o<0&&0!==D&&(g=Math.max(g,Math.floor(-o/D))),r<0&&0!==n&&(g=Math.max(g,Math.floor(-r/n)));let I=a+l*g,e=o+D*g,i=r+n*g,t=!1;for(let B=C+g;B<=E;B++){if(I>=0&&e>=0&&i>=0){t=!0;const g=y*I+f*e+u*i,C=Math.abs(g-this.heightAt(B,A));F+=C*C,C>S&&(S=C,G=B,N=A)}else if(t)break;I+=l,e+=D,i+=n}a+=c,o+=w,r+=h}(G===A&&N===g||G===I&&N===e||G===i&&N===t)&&(S=0),this._candidates[2*B]=G,this._candidates[2*B+1]=N,this._rms[B]=F,this._queuePush(B,S,F)}_step(){const A=this._queuePop(),g=3*A+0,I=3*A+1,e=3*A+2,i=this.triangles[g],t=this.triangles[I],B=this.triangles[e],C=this.coords[2*i],Q=this.coords[2*i+1],E=this.coords[2*t],s=this.coords[2*t+1],a=this.coords[2*B],o=this.coords[2*B+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===Fg(C,Q,E,s,r,n))this._handleCollinear(h,g);else if(0===Fg(E,s,a,o,r,n))this._handleCollinear(h,I);else if(0===Fg(a,o,C,Q,r,n))this._handleCollinear(h,e);else{const A=this._halfedges[g],C=this._halfedges[I],Q=this._halfedges[e],E=this._addTriangle(i,t,h,A,-1,-1,g),s=this._addTriangle(t,B,h,C,-1,E+1),a=this._addTriangle(B,i,h,Q,E+2,s+1);this._legalize(E),this._legalize(s),this._legalize(a)}}_addPoint(A,g){const I=this.coords.length>>1;return this.coords.push(A,g),I}_addTriangle(A,g,I,e,i,t,B=this.triangles.length){const C=B/3;return this.triangles[B+0]=A,this.triangles[B+1]=g,this.triangles[B+2]=I,this._halfedges[B+0]=e,this._halfedges[B+1]=i,this._halfedges[B+2]=t,e>=0&&(this._halfedges[e]=B+0),i>=0&&(this._halfedges[i]=B+1),t>=0&&(this._halfedges[t]=B+2),this._candidates[2*C+0]=0,this._candidates[2*C+1]=0,this._queueIndices[C]=-1,this._rms[C]=0,this._pending[this._pendingLen++]=C,B}_legalize(A){const g=this._halfedges[A];if(g<0)return;const I=A-A%3,e=g-g%3,i=I+(A+1)%3,t=I+(A+2)%3,B=e+(g+2)%3,C=e+(g+1)%3,Q=this.triangles[t],E=this.triangles[A],s=this.triangles[i],a=this.triangles[B],{coords:o}=this;if(!function(A,g,I,e,i,t,B,C){const Q=A-B,E=g-C,s=I-B,a=e-C,o=i-B,r=t-C,n=s*s+a*a,h=o*o+r*r;return Q*(a*h-n*r)-E*(s*h-n*o)+(Q*Q+E*E)*(s*r-a*o)<0}(o[2*Q],o[2*Q+1],o[2*E],o[2*E+1],o[2*s],o[2*s+1],o[2*a],o[2*a+1]))return;const r=this._halfedges[i],n=this._halfedges[t],h=this._halfedges[B],l=this._halfedges[C];this._queueRemove(I/3),this._queueRemove(e/3);const c=this._addTriangle(Q,a,s,-1,h,r,I),D=this._addTriangle(a,Q,E,c,n,l,e);this._legalize(c+1),this._legalize(D+2)}_handleCollinear(A,g){const I=g-g%3,e=I+(g+1)%3,i=I+(g+2)%3,t=this.triangles[i],B=this.triangles[g],C=this.triangles[e],Q=this._halfedges[e],E=this._halfedges[i],s=this._halfedges[g];if(s<0){const g=this._addTriangle(A,t,B,-1,E,-1,I),e=this._addTriangle(t,A,C,g,-1,Q);return this._legalize(g+1),void this._legalize(e+2)}const a=s-s%3,o=a+(s+2)%3,r=a+(s+1)%3,n=this.triangles[o],h=this._halfedges[o],l=this._halfedges[r];this._queueRemove(a/3);const c=this._addTriangle(t,B,A,E,-1,-1,I),D=this._addTriangle(B,n,A,l,-1,c+1,a),w=this._addTriangle(n,C,A,h,-1,D+1),d=this._addTriangle(C,t,A,Q,c+2,w+1);this._legalize(c),this._legalize(D),this._legalize(w),this._legalize(d)}_queuePush(A,g,I){const e=this._queue.length;this._queueIndices[A]=e,this._queue.push(A),this._errors.push(g),this._rmsSum+=I,this._queueUp(e)}_queuePop(){const A=this._queue.length-1;return this._queueSwap(0,A),this._queueDown(0,A),this._queuePopBack()}_queuePopBack(){const A=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[A],this._queueIndices[A]=-1,A}_queueRemove(A){const g=this._queueIndices[A];if(g<0){const g=this._pending.indexOf(A);if(-1===g)throw new Error("Broken triangulation (something went wrong).");return void(this._pending[g]=this._pending[--this._pendingLen])}const I=this._queue.length-1;I!==g&&(this._queueSwap(g,I),this._queueDown(g,I)||this._queueUp(g)),this._queuePopBack()}_queueLess(A,g){return this._errors[A]>this._errors[g]}_queueSwap(A,g){const I=this._queue[A],e=this._queue[g];this._queue[A]=e,this._queue[g]=I,this._queueIndices[I]=g,this._queueIndices[e]=A;const i=this._errors[A];this._errors[A]=this._errors[g],this._errors[g]=i}_queueUp(A){let g=A;for(;;){const A=g-1>>1;if(A===g||!this._queueLess(g,A))break;this._queueSwap(A,g),g=A}}_queueDown(A,g){let I=A;for(;;){const A=2*I+1;if(A>=g||A<0)break;const e=A+1;let i=A;if(e<g&&this._queueLess(e,A)&&(i=e),!this._queueLess(i,I))break;this._queueSwap(I,i),I=i}return I>A}}function Rg(A,g,I,e){const i=function(A){const g=new Map,I=(A,I)=>{const e=Math.min(A,I),i=Math.max(A,I),t=BigInt(e)<<32n|BigInt(i);g.has(t)?g.delete(t):g.set(t,[A,I])};for(let g=0;g<A.length;g+=3){const e=A[g],i=A[g+1],t=A[g+2];I(e,i),I(i,t),I(t,e)}return Array.from(g.values())}(g),t=new A.POSITION.value.constructor(6*i.length),B=new A.TEXCOORD_0.value.constructor(4*i.length),C=new g.constructor(6*i.length);for(let g=0;g<i.length;g++){Ug({edge:i[g],edgeIndex:g,attributes:A,skirtHeight:I,newPosition:t,newTexcoord0:B,newTriangles:C})}A.POSITION.value=Q(A.POSITION.value,t),A.TEXCOORD_0.value=Q(A.TEXCOORD_0.value,B);return{attributes:A,triangles:g instanceof Array?g.concat(C):Q(g,C)}}function Ug({edge:A,edgeIndex:g,attributes:I,skirtHeight:e,newPosition:i,newTexcoord0:t,newTriangles:B}){const C=I.POSITION.value.length,Q=2*g,E=2*g+1;i.set(I.POSITION.value.subarray(3*A[0],3*A[0]+3),3*Q),i[3*Q+2]=i[3*Q+2]-e,i.set(I.POSITION.value.subarray(3*A[1],3*A[1]+3),3*E),i[3*E+2]=i[3*E+2]-e,t.set(I.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*Q),t.set(I.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*E);const s=2*g*3;B[s]=A[0],B[s+1]=C/3+E,B[s+2]=A[1],B[s+3]=C/3+E,B[s+4]=A[0],B[s+5]=C/3+Q}function Lg(A,g,I,e,i){return I===g?e:(A-g)*(i-e)/(I-g)+e}function pg(A){return Math.fround(A)}function Mg(A,g){if(null==g)return!1;const I=pg(A),e=pg(g);return Number.isNaN(e)?Number.isNaN(I):I===e}class Yg{static _swissColorLUTCache=new Map;static _8bitLUTCache=new Map;static _floatLUTCache=new Map;static getLUTCacheKey(A,g,I,e){return`${g}_${I}_${e}_${JSON.stringify(A.colorScale)}_${A.useSingleColor}_${JSON.stringify(A.color)}_${A.useColorClasses}_${JSON.stringify(A.colorClasses)}_${A.useColorsBasedOnValues}_${JSON.stringify(A.colorsBasedOnValues)}_${A.useHeatMap}_${A.clipLow??""}_${A.clipHigh??""}_${JSON.stringify(A.clippedColor)}_${JSON.stringify(A.nullColor)}_${JSON.stringify(A.unidentifiedColor)}`}static async generate(A,g){const I={...g},{rasters:e,width:i,height:t}=A,B=1===e.length,C=document.createElement("canvas");C.width=i,C.height=t;const Q=C.getContext("2d"),E=Q.createImageData(i,t),s=i*t*4,a=Math.floor(2.55*I.alpha);I.unidentifiedColor=this.getColorFromChromaType(I.unidentifiedColor,a),I.nullColor=this.getColorFromChromaType(I.nullColor,a),I.clippedColor=this.getColorFromChromaType(I.clippedColor,a),I.color=this.getColorFromChromaType(I.color,a),I.useChannelIndex??=null==I.useChannel?null:I.useChannel-1;const o=I.numOfChannels??(1===e.length?e[0].length/(i*t):e.length);if(I.useReliefGlaze)if(e.length>=1)E.data.set(this.getReliefGlazeRGBA(e,I,s));else{const A=new Uint8ClampedArray(s);A.fill(0),E.data.set(A)}else if(I.useSwissRelief)if(2===e.length)E.data.set(this.getColorValue(e,I,s));else{this.getDefaultColor(s,I.nullColor).forEach((A,g)=>{E.data[g]=A})}else if(null==I.useChannelIndex)if(B){const A=e[0].length/(i*t);if(1===A)I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(e[0],I)),E.data.set(this.getColorValue(e[0],I,s));else if(3===A||4===A){let g=0;for(let i=0;i<s;i+=4){const t=[e[0][g],e[0][g+1],e[0][g+2]],B=this.hasPixelsNoData(t,I.noDataValue);E.data[i]=B?I.nullColor[0]:t[0],E.data[i+1]=B?I.nullColor[1]:t[1],E.data[i+2]=B?I.nullColor[2]:t[2],E.data[i+3]=B?I.nullColor[3]:4===A?e[0][g+3]:a,g+=A}}}else{let A=0;for(let g=0;g<s;g+=4)E.data[g]=e[0][A],E.data[g+1]=e[1][A],E.data[g+2]=e[2][A],E.data[g+3]=4===e.length?e[3][A]:a,A++}else if(I.useChannelIndex<o&&I.useChannelIndex>=0){const A=1===e.length&&o>1,g=A?e[0]:e[I.useChannelIndex]??e[0],i=A?o:1;I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(g,I,i)),E.data.set(this.getColorValue(g,I,s,i))}else{console.log(`Defined channel(${g.useChannel}) or channel index(${g.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(s,I.nullColor).forEach((A,g)=>{E.data[g]=A})}Q.putImageData(E,0,0);return{map:await createImageBitmap(C),raw:e[0],width:i,height:t}}static getColorValue(A,g,I,e=1){const i=B.scale(g.colorScale?.map(A=>Array.isArray(A)?B(A):A)).domain(g.colorScaleValueRange??[0,255]),t=new Uint8ClampedArray(I),C=Math.floor(2.55*(g.alpha??100)),Q=g.colorScaleValueRange?.[0]??0,E=g.colorScaleValueRange?.[1]??255,s=Array.isArray(A),a=s?A[0]:A,o=g.useSwissRelief&&s&&A.length>=2,r=a instanceof Uint8Array||a instanceof Uint8ClampedArray,n=!r&&(a instanceof Float32Array||a instanceof Uint16Array||a instanceof Int16Array);if(o){const B=A[1],s=E-Q||1;let o=null;if(g.useHeatMap){const A=1024,I=`${Q}_${E}_${C}_${JSON.stringify(g.colorScale)}`;if(o=this._swissColorLUTCache.get(I)||null,!o){o=new Uint8ClampedArray(4*A);for(let g=0;g<A;g++){const I=i(Q+g/(A-1)*s).rgb();o[4*g]=I[0],o[4*g+1]=I[1],o[4*g+2]=I[2],o[4*g+3]=C}this._swissColorLUTCache.set(I,o)}}for(let A=0,E=g.useChannelIndex??0;A<I;A+=4,E+=e){const I=a[E],e=Mg(I,g.noDataValue);if(Number.isNaN(I)||e){t.set(g.nullColor,A);continue}let r;if(o){const A=(I-Q)/s,g=4*Math.min(1023,Math.max(0,Math.floor(1023*A)));r=[o[g],o[g+1],o[g+2],o[g+3]]}else r=this.calculateSingleColor(I,i,g,C);const n=.4+B[E]/255*.6;t[A]=Math.floor(r[0]*n),t[A+1]=Math.floor(r[1]*n),t[A+2]=Math.floor(r[2]*n),t[A+3]=r[3]}return t}if(r&&!g.useDataForOpacity){const A=g.useAutoRange?null:this.getLUTCacheKey(g,Q,E,C);let B=A?this._8bitLUTCache.get(A)??null:null;if(!B){B=new Uint8ClampedArray(1024);for(let A=0;A<256;A++)null!=g.clipLow&&A<=g.clipLow||null!=g.clipHigh&&A>=g.clipHigh?B.set(g.clippedColor,4*A):B.set(this.calculateSingleColor(A,i,g,C),4*A);A&&this._8bitLUTCache.set(A,B)}for(let A=0,i=g.useChannelIndex??0;A<I;A+=4,i+=e){const g=4*a[i];t[A]=B[g],t[A+1]=B[g+1],t[A+2]=B[g+2],t[A+3]=B[g+3]}return t}if(n&&g.useHeatMap&&!g.useSingleColor&&!g.useColorClasses&&!g.useColorsBasedOnValues&&!g.useDataForOpacity){const A=1024,B=E-Q||1,s=g.useAutoRange?null:this.getLUTCacheKey(g,Q,E,C);let o=s?this._floatLUTCache.get(s)??null:null;if(!o){o=new Uint8ClampedArray(4*A);for(let I=0;I<A;I++){const e=Q+I/(A-1)*B;if(null!=g.clipLow&&e<=g.clipLow||null!=g.clipHigh&&e>=g.clipHigh)o.set(g.clippedColor,4*I);else{const A=i(e).rgb();o[4*I]=A[0],o[4*I+1]=A[1],o[4*I+2]=A[2],o[4*I+3]=C}}s&&this._floatLUTCache.set(s,o)}for(let i=0,C=g.useChannelIndex??0;i<I;i+=4,C+=e){const I=a[C];if(this.isInvalid(I,g))t.set(this.getInvalidColor(I,g),i);else{const g=(I-Q)/B,e=4*Math.min(A-1,Math.max(0,Math.floor(g*(A-1))));t[i]=o[e],t[i+1]=o[e+1],t[i+2]=o[e+2],t[i+3]=o[e+3]}}return t}let h=g.useChannelIndex??0;for(let A=0;A<I;A+=4){const I=a[h];let B;B=null!=g.clipLow&&I<=g.clipLow||null!=g.clipHigh&&I>=g.clipHigh?g.clippedColor:this.calculateSingleColor(I,i,g,C),g.useDataForOpacity&&!this.isInvalid(I,g)&&(B[3]=Lg(I,Q,E,0,255)),t.set(B,A),h+=e}return t}static getReliefGlazeRGBA(A,g,I){const e=A[0],i=(g.maxGlazeAlpha??128)/255,t=new Uint8Array(256);for(let A=0;A<256;A++)if(0===A)t[A]=0;else{const g=Math.abs(A-128)/128,I=A<128?.6:.8;t[A]=Math.floor(255*Math.pow(g,I)*i)}const B=new Uint8ClampedArray(I);let C=0;for(let A=0;A<I;A+=4){const g=e[C],I=g<128?0:255,i=t[g];B[A]=I,B[A+1]=I,B[A+2]=I,B[A+3]=i,C++}return B}static calculateSingleColor(A,g,I,e){if(this.isInvalid(A,I))return I.nullColor;if(I.useSingleColor)return I.color;if(I.useColorClasses){const g=this.findClassIndex(A,I);return g>-1?[...B(Array.isArray(I.colorClasses[g][0])?B(I.colorClasses[g][0]):I.colorClasses[g][0]).rgb(),e]:I.unidentifiedColor}if(I.useColorsBasedOnValues){const g=I.colorsBasedOnValues?.find(([g])=>g===A);return g?[...B(Array.isArray(g[1])?B(g[1]):g[1]).rgb(),e]:I.unidentifiedColor}return I.useHeatMap?[...g(A).rgb(),e]:I.unidentifiedColor}static findClassIndex(A,g){if(!g.colorClasses)return-1;for(let I=0;I<g.colorClasses.length;I++){const[,[e,i],t]=g.colorClasses[I],[B,C]=t||(I===g.colorClasses.length-1?[!0,!0]:[!0,!1]);if((B?A>=e:A>e)&&(C?A<=i:A<i))return I}return-1}static getDefaultColor(A,g){const I=new Uint8ClampedArray(A);for(let e=0;e<A;e+=4)[I[e],I[e+1],I[e+2],I[e+3]]=g;return I}static isInvalid(A,g){return Number.isNaN(A)||Mg(A,g.noDataValue)}static getInvalidColor(A,g){return g.nullColor}static getMinMax(A,g,I=1){let e=-1/0,i=1/0;for(let t=g.useChannelIndex??0;t<A.length;t+=I){const I=A[t];this.isInvalid(I,g)||(I>e&&(e=I),I<i&&(i=I))}return e===-1/0?g.colorScaleValueRange||[0,255]:[i,e]}static getColorFromChromaType(A,g=255){return Array.isArray(A)&&4===A.length?A:[...B(A).rgb(),g]}static hasPixelsNoData(A,g){return void 0!==g&&A.every(A=>Mg(A,g))}}class mg{static computeGradients(A,g,I,e,i,t,B,C,Q,E=!0){return{dzdx:(I+2*i+C-(A+2*e+t))*Q,dzdy:E?(A+2*g+I-(t+2*B+C))*Q:(t+2*B+C-(A+2*g+I))*Q}}static calculateSlope(A,g,I=1,e){const i=256,t=258,B=new Float32Array(65536),C=1/(8*g),Q=180/Math.PI;for(let g=0;g<i;g++)for(let E=0;E<i;E++){const s=g*t+E;if(Mg(A[s+t+1],e)){B[g*i+E]=NaN;continue}const a=A[s],o=A[s+1],r=A[s+2],n=A[s+t],h=A[s+t+2],l=A[s+516],c=A[s+516+1],D=A[s+516+2],{dzdx:w,dzdy:d}=this.computeGradients(a,o,r,n,h,l,c,D,C,!1),y=Math.atan(I*Math.sqrt(w*w+d*d));B[g*i+E]=y*Q}return B}static calculateHillshade(A,g,I=315,e=45,i=1,t){const B=256,C=258,Q=new Float32Array(65536),E=(90-e)*(Math.PI/180);let s=360-I+90;s>=360&&(s-=360);const a=s*(Math.PI/180),o=1/(8*g);for(let g=0;g<B;g++)for(let I=0;I<B;I++){const e=g*C+I;if(Mg(A[e+C+1],t)){Q[g*B+I]=NaN;continue}const s=A[e],r=A[e+1],n=A[e+2],h=A[e+C],l=A[e+C+2],c=A[e+516],D=A[e+516+1],w=A[e+516+2],{dzdx:d,dzdy:y}=this.computeGradients(s,r,n,h,l,c,D,w,o,!0),f=Math.atan(i*Math.sqrt(d*d+y*y)),u=Math.atan2(y,-d),S=255*(Math.cos(E)*Math.cos(f)+Math.sin(E)*Math.sin(f)*Math.cos(a-u));Q[g*B+I]=Math.max(0,Math.min(255,S))}return Q}static calculateMultiHillshade(A,g,I=1,e){const i=256,t=258,B=new Float32Array(65536),C=1/(8*g),Q=[{az:315,alt:45,weight:.6},{az:225,alt:35,weight:.25},{az:0,alt:35,weight:.15}].map(A=>{const g=(90-A.alt)*(Math.PI/180);let I=360-A.az+90;return I>=360&&(I-=360),{zCos:Math.cos(g),zSin:Math.sin(g),aRad:I*(Math.PI/180),w:A.weight}});for(let g=0;g<i;g++)for(let E=0;E<i;E++){const s=g*t+E;if(Mg(A[s+t+1],e)){B[g*i+E]=NaN;continue}const a=A[s],o=A[s+1],r=A[s+2],n=A[s+t],h=A[s+t+2],l=A[s+516],c=A[s+516+1],D=A[s+516+2],{dzdx:w,dzdy:d}=this.computeGradients(a,o,r,n,h,l,c,D,C,!0),y=Math.atan(I*Math.sqrt(w*w+d*d)),f=Math.atan2(d,-w),u=Math.cos(y),S=Math.sin(y);let G=0;for(const A of Q){const g=A.zCos*u+A.zSin*S*Math.cos(A.aRad-f);G+=Math.max(0,g)*A.w}B[g*i+E]=Math.min(255,255*G)}return B}}class Kg{static _swissReliefLUT=null;static _lastWeight=null;static getSwissReliefLUT(A=.5){if(this._swissReliefLUT&&this._lastWeight===A)return this._swissReliefLUT;const g=new Float32Array(65536);for(let I=0;I<256;I++){const e=I/255;for(let i=0;i<256;i++){const t=1-i/255*A;g[I<<8|i]=Math.max(.01,e*t)}}return this._swissReliefLUT=g,this._lastWeight=A,g}static composeSwissRelief(A,g,I,e,i){const t=g.swissSlopeWeight??.5,B=mg.calculateSlope(A,I,g.zFactor??1,g.noDataValue),C=mg.calculateMultiHillshade(A,I,g.zFactor??1,g.noDataValue),Q=this.getSwissReliefLUT(t),E=new Uint8ClampedArray(e*i),s=255/90;for(let A=0;A<e*i;A++){if(isNaN(B[A])){E[A]=0;continue}const g=Math.max(0,Math.min(255,B[A]*s|0)),I=0|Math.max(0,Math.min(255,C[A]));E[A]=Math.max(1,255*Q[I<<8|g]|0)}return E}}class Hg{static async generate(A,g,I){const{width:e,height:i}=A,t=258===e,B=this.computeTerrainData(A,g),Q=t?this.extractMeshRaster(B):B,E=t?257:e,s=t?257:i,{terrainSkirtHeight:a,verticalExaggeration:o=1}=g;let r;switch(g.tesselator){case"martini":default:r=this.getMartiniTileMesh(I,E,Q);break;case"delatin":r=this.getDelatinTileMesh(I,E,s,Q)}const{vertices:n}=r;let{triangles:h}=r,l=this.getMeshAttributes(n,Q,E,s,A.bounds,o);const c=C(l);if(a){const A=a*o;if(A>0){const{attributes:g,triangles:I}=Rg(l,h,A);l=g,h=I}}const D=257===E?257:E+1,w=257===s?257:s+1,d={map:{loaderData:{header:{}},header:{vertexCount:h.length,boundingBox:c},mode:4,indices:{value:Uint32Array.from(h),size:1},attributes:l},raw:Q,width:D,height:w},y=!!g.skipTexture;if(t&&g.useSwissRelief){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,e=this.preserveNoDataForKernel(B,A.rasters[0],g.noDataValue),i=Kg.composeSwissRelief(e,g,I,256,256);if(d.rawDerived=i,!y&&this.hasVisualizationOptions(g)){const A=this.cropRaster(Q,D,w,256,256),I=await Yg.generate({width:256,height:256,rasters:[A,i]},{...g,type:"image"});d.texture=I.map}}else if(t&&(g.useSlope||g.useHillshade)){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,e=g.zFactor??1;g.useSlope&&g.useHillshade&&console.warn("[TerrainGenerator] useSlope and useHillshade are mutually exclusive; useSlope takes precedence.");const i=this.preserveNoDataForKernel(B,A.rasters[0],g.noDataValue);let t;if(t=g.useSlope?mg.calculateSlope(i,I,e,g.noDataValue):mg.calculateHillshade(i,I,g.hillshadeAzimuth??315,g.hillshadeAltitude??45,e,g.noDataValue),d.rawDerived=t,!y&&this.hasVisualizationOptions(g)){const A=await Yg.generate({width:256,height:256,rasters:[t]},{...g,type:"image"});d.texture=A.map}}else if(!y&&this.hasVisualizationOptions(g)){const I=g.multiplier??1,e=g.noDataValue,i=A.rasters[0],t=A.width,B=A.height,C=Math.max(1,Math.round(i.length/(t*B))),Q=g.useChannelIndex??(null!=g.useChannel?g.useChannel-1:0),E=new Float32Array(65536);for(let A=0;A<256;A++)for(let g=0;g<256;g++){const s=Math.min(g,t-1),a=i[(Math.min(A,B-1)*t+s)*C+Q],o=Mg(a,e);E[256*A+g]=o?e*I:a*I}const s={...g,type:"image",useChannelIndex:0,numOfChannels:1,noDataValue:void 0!==e?e*I:void 0},a=await Yg.generate({width:256,height:256,rasters:[E]},s);d.texture=a.map}return d}static extractMeshRaster(A){const g=257,I=new Float32Array(66049);for(let e=0;e<g;e++)for(let i=0;i<g;i++)I[e*g+i]=A[258*(e+1)+(i+1)];return I}static hasVisualizationOptions(A){return!!(A.useSingleColor||A.useHeatMap||A.useSwissRelief||A.useColorsBasedOnValues||A.useColorClasses)}static preserveNoDataForKernel(A,g,I){const e=new Float32Array(A.length);if(null!=I&&g&&g.length===A.length)for(let i=0;i<A.length;i++){const t=Mg(g[i],I);e[i]=t?I:A[i]}else e.set(A);return e}static cropRaster(A,g,I,e,i){const t=new Float32Array(e*i);for(let I=0;I<i;I++)for(let i=0;i<e;i++)t[I*e+i]=A[I*g+i];return t}static computeTerrainData(A,g){const{width:I,height:e,rasters:i}=A,t={...g};t.useChannelIndex??=null==t.useChannel?null:t.useChannel-1;const B=i.length>1,C=B?i[t.useChannelIndex??0]??i[0]:i[0],Q=258===I,E=257===I,s=new Float32Array((Q?258:E?257:I+1)*(Q?258:E?257:e+1)),a=B?1:C.length/(I*e);let o=B?0:t.useChannelIndex??0;const r=g.terrainMinValue??0;for(let A=0;A<e;A++)for(let e=0;e<I;e++){const i=g.multiplier??1;let t=Mg(C[o],g.noDataValue)?r:C[o]*i;(Number.isNaN(t)||t<-34e37||t>34e37)&&(t=r);s[Q||E?A*I+e:A*(I+1)+e]=t,o+=a}if(!Q&&!E){for(let A=(I+1)*I,g=0;g<I;g++,A++)s[A]=s[A-I-1];for(let A=e,g=0;g<e+1;g++,A+=e+1)s[A]=s[A-1]}return s}static getMartiniTileMesh(A,g,I){const e=new Gg(257===g?257:g+1).createTile(I),{vertices:i,triangles:t}=e.getMesh(A);return{vertices:i,triangles:t}}static getDelatinTileMesh(A,g,I,e){const i=new kg(e,257===g?257:g+1,257===I?257:I+1);i.run(A);const{coords:t,triangles:B}=i;return{vertices:t,triangles:B}}static getMeshAttributes(A,g,I,e,i,t=1){const B=257===I?257:I+1,C=A.length/2,Q=new Float32Array(3*C),E=new Float32Array(2*C),[s,a,o,r]=i||[0,0,I,e],n=257===I?I-1:I,h=257===e?e-1:e,l=(o-s)/n,c=(r-a)/h;for(let I=0;I<C;I++){const e=A[2*I],i=A[2*I+1],C=i*B+e;Q[3*I]=e*l+s,Q[3*I+1]=-i*c+r,Q[3*I+2]=g[C]*t,E[2*I]=e/n,E[2*I+1]=i/h}return{POSITION:{value:Q,size:3},TEXCOORD_0:{value:E,size:2}}}}class Jg{data;async setUrl(A){const g=await fetch(A),I=await g.arrayBuffer(),e=await ug(I),i=await e.getImage(0);this.data=i}async getMap(A,g,I){const e=Jg.resolveVisualizationMode({...Sg,...g},g);switch(e.type){case"image":return this.getBitmap(A,e);case"terrain":return this.getHeightmap(A,e,I);default:return null}}static resolveVisualizationMode(A,g){const I=["useSingleColor","useColorClasses","useColorsBasedOnValues","useHeatMap"],e=I.filter(A=>!0===g[A]),i={...A};if(e.length>0){for(const A of I)i[A]=!1;for(const A of e)i[A]=!0}else if("terrain"===A.type){(g.useSwissRelief||g.useSlope||g.useHillshade)&&!A.skipTexture||(i.useHeatMap=!1,i.useSingleColor=!0,i.color=A.terrainColor)}return i}async getHeightmap(A,g,I){let e,i,t,B,C=[];return"string"==typeof A?(await this.setUrl(A),C=await this.data.readRasters(),e=this.data.getWidth(),i=this.data.getHeight(),t=this.data.getBoundingBox()):(C=A.rasters,e=A.width,i=A.height,t=A.bounds,B=A.cellSizeMeters),await Hg.generate({width:e,height:i,rasters:C,bounds:t,cellSizeMeters:B},g,I)}async getBitmap(A,g){let I,e,i=[];return"string"==typeof A?(await this.setUrl(A),i=await this.data.readRasters(),I=this.data.getWidth(),e=this.data.getHeight()):(i=A.rasters,I=A.width,e=A.height),Yg.generate({width:I,height:e,rasters:i},g)}}const bg=2*Math.PI*6378137,qg=bg/2,xg=[-20037508.342789244,20037508.342789244];function Tg(A){const g=A[0],I=A[1],e=g/qg*180;let i=I/qg*180;return i=180/Math.PI*(2*Math.atan(Math.exp(i*Math.PI/180))-Math.PI/2),[e,i]}function Og(A,g,I){const e=function(A,g){return Math.round(Math.log2(bg/(g*A)))}(A,g);return[e-(I-1),e]}class Pg{tileResultCache=new Map;tileResultCacheMaxSize;rasterCache=new Map;rasterCacheMaxSize;reliefMaskCache=new Map;reliefMaskCacheMaxSize;imageCache=new Map;constructor(A){this.tileResultCacheMaxSize=A?.tileResultCacheMaxSize??32,this.rasterCacheMaxSize=A?.rasterCacheMaxSize??64,this.reliefMaskCacheMaxSize=A?.reliefMaskCacheMaxSize??64}getTileResultCacheKey(A,g,I,e,i){return`${I}/${A}/${g}/${e}/${i?"1":"0"}`}getTileCacheKey(A,g,I){return`${I}/${A}/${g}`}getTileResult(A){const g=this.tileResultCache.get(A);if(g)return this.tileResultCache.delete(A),this.tileResultCache.set(A,g),g}setTileResult(A,g){if(this.tileResultCache.set(A,g),this.tileResultCache.size>this.tileResultCacheMaxSize){const A=this.tileResultCache.keys().next().value;if(A){const g=this.tileResultCache.get(A);g&&!g.settled&&g.controller.abort(),this.tileResultCache.delete(A)}}}deleteTileResult(A){return this.tileResultCache.delete(A)}clearTileResultCache(){for(const A of this.tileResultCache.values())A.settled||A.controller.abort();this.tileResultCache.clear()}getRaster(A){const g=this.rasterCache.get(A);if(g)return this.rasterCache.delete(A),this.rasterCache.set(A,g),g}setRaster(A,g){if(this.rasterCache.set(A,g),g.catch(()=>this.rasterCache.delete(A)),this.rasterCache.size>this.rasterCacheMaxSize){const A=this.rasterCache.keys().next().value;A&&this.rasterCache.delete(A)}}deleteRaster(A){return this.rasterCache.delete(A)}clearRasterCache(){this.rasterCache.clear()}getReliefMask(A){const g=this.reliefMaskCache.get(A);if(g)return this.reliefMaskCache.delete(A),this.reliefMaskCache.set(A,g),g}setReliefMask(A,g){if(this.reliefMaskCache.set(A,g),g.catch(()=>this.reliefMaskCache.delete(A)),this.reliefMaskCache.size>this.reliefMaskCacheMaxSize){const A=this.reliefMaskCache.keys().next().value;A&&this.reliefMaskCache.delete(A)}}deleteReliefMask(A){return this.reliefMaskCache.delete(A)}clearReliefMaskCache(){this.reliefMaskCache.clear()}getImage(A){return this.imageCache.get(A)}setImage(A,g){this.imageCache.set(A,g)}deleteImage(A){return this.imageCache.delete(A)}clearImageCache(){this.imageCache.clear()}clearAll(){this.clearTileResultCache(),this.clearRasterCache(),this.clearReliefMaskCache(),this.clearImageCache()}}class vg{options;tileSize;constructor(A){this.options=A.options,this.tileSize=A.tileSize}createEmptyTile(A){const g=A||this.tileSize,I=this.options.numOfChannels||1,e=new Float32Array(g*g*I);return void 0!==this.options.noDataValue&&e.fill(this.options.noDataValue),e}createTileBuffer(A,g,I=1){const e=g*g*I;switch(A){case"UInt8":return new Uint8Array(e);case"Int8":return new Int8Array(e);case"UInt16":return new Uint16Array(e);case"Int16":return new Int16Array(e);case"UInt32":return new Uint32Array(e);case"Int32":return new Int32Array(e);case"Float32":return new Float32Array(e);case"Float64":return new Float64Array(e);default:return console.warn(`Unsupported data type: ${A}, defaulting to Float32`),new Float32Array(e)}}}const Vg=new Map,Zg={blurredTexture:!0,debugTileStats:!1};class zg{cog;cogZoomLookup=[];cogResolutionLookup=[];cogMeshMaxErrorLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize=256;bounds=[0,0,0,0];bandDescriptions=[];geo=new Jg;options;cache=new Pg;tileReader;initializePromise;lastInitializedUrl;constructor(A){this.options={...Zg,...A}}async initializeCog(A){if(this.initializePromise&&(!this.cog||this.lastInitializedUrl===A))return this.initializePromise;if(void 0!==this.lastInitializedUrl&&this.lastInitializedUrl!==A){this.cache.clearAll();const A=[];Vg.forEach((g,I)=>{I.startsWith(this.lastInitializedUrl)&&A.push(I)}),A.forEach(A=>Vg.delete(A)),this.cog=void 0,this.cogOrigin=[0,0],this.cogZoomLookup=[],this.cogResolutionLookup=[],this.cogMeshMaxErrorLookup=[],this.tileSize=256,this.zoomRange=[0,0],this.bounds=[0,0,0,0],this.bandDescriptions=[],this.initializePromise=void 0,this.lastInitializedUrl=void 0}return this.cog&&this.lastInitializedUrl===A?this.initializePromise??Promise.resolve():(this.initializePromise=(async()=>{try{const g=this.options.blockSize??65536;this.cog=await async function(A,g={},I){return fg.fromSource(Qg(A,g),void 0,I)}(A,{blockSize:g});const I=this.cog.getImage();this.cache.setImage(0,I);const e=await I,i=e.fileDirectory;this.cogOrigin=e.getOrigin(),this.options.noDataValue??=function(A){const g=A.getGDALNoData();if(null==g)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const I=String(g).replace(/\0/g,"").trim();if(""===I)return void console.warn("noData value is an empty string after cleanup.");const e=Number(I);return"nan"===I.toLowerCase()?NaN:Number.isNaN(e)?void console.warn(`Failed to parse numeric noData value: '${I}'`):e}(e),this.options.format??=await async function(A){const g=A.hasTag("SampleFormat"),I=A.hasTag("BitsPerSample");if(!g||!I)return console.warn("Missing SampleFormat or BitsPerSample tags, defaulting to UInt8"),"UInt8";const e=A.getValue("SampleFormat"),i=A.getValue("BitsPerSample"),t=e&&"number"==typeof e.length&&e.length>0?e[0]:e;let B;return B=1===t?"UInt":2===t?"Int":3===t?"Float":"Unknown",`${B}${i&&"number"==typeof i.length&&i.length>0?i[0]:i}`}(i),this.options.numOfChannels=i.getValue("SamplesPerPixel"),this.options.planarConfig=i.getValue("PlanarConfiguration");const t=this.options.numOfChannels??1,B=Array(t).fill("");if(e.fileDirectory.hasTag("GDAL_METADATA")){const A=await e.fileDirectory.loadValue("GDAL_METADATA"),g=/<Item[^>]*name="DESCRIPTION"[^>]*sample="(\d+)"[^>]*>([^<]*)<\/Item>/g;let I;for(;null!==(I=g.exec(A));){const A=parseInt(I[1],10),g=I[2];A<t&&(B[A]=g)}B.every(A=>""===A)&&console.debug("[CogTiles] GDAL_METADATA present but no DESCRIPTION items found")}if(this.bandDescriptions=B,[this.cogZoomLookup,this.cogResolutionLookup]=await async function(A){const g=await A.getImageCount(),I=await A.getImage(0),e=I.getResolution()[0],i=I.getWidth(),t=[],B=[];for(let I=0;I<g;I++){const g=e*(i/(await A.getImage(I)).getWidth()),C=Math.round(Math.log2(156543.03125/g));t[I]=C,B[I]=g}return[t,B]}(this.cog),"terrain"===this.options.type&&this.computeMeshMaxErrorLookup(),this.tileSize=e.getTileWidth(),!this.tileSize||!e.getTileHeight())throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');this.zoomRange=Og(this.tileSize,e.getResolution()[0],await this.cog.getImageCount()),this.bounds=function(A){const g=Math.min(A[0],A[2]),I=Math.max(A[0],A[2]),e=Math.min(A[1],A[3]),i=Math.max(A[1],A[3]),t=Tg([g,e]),B=Tg([I,i]);return[t[0],t[1],B[0],B[1]]}(e.getBoundingBox()),this.tileReader=new vg({options:this.options,tileSize:this.tileSize}),this.lastInitializedUrl=A}catch(g){throw this.initializePromise=void 0,console.error(`[CogTiles] Failed to initialize COG from ${A}:`,g),g}})(),this.initializePromise)}getZoomRange(){return this.zoomRange}getBoundsAsLatLon(){return this.bounds}getNumChannels(){return this.options.numOfChannels||1}getBandDescriptions(){return this.bandDescriptions}getMeshMaxErrorForImageIndex(A){return this.cogMeshMaxErrorLookup[A]}computeMeshMaxErrorLookup(){const A=this.cogZoomLookup[this.cogZoomLookup.length-1],g=this.cogZoomLookup[0];this.cogMeshMaxErrorLookup=this.cogResolutionLookup.map((I,e)=>function(A,g,I,e){const i=function(A,g,I){return A>=I?.5:A<=g?3:3-(A-g)/(I-g)*2.5}(A,I,e),t=g*i;return Math.round(Math.max(.5,Math.min(100,t)))}(this.cogZoomLookup[e],I,A,g))}getImageIndexForZoomLevel(A){return function(A,g){const I=g[g.length-1];if(A>g[0])return 0;if(A<I)return g.length-1;const e=g.indexOf(A);if(-1!==e)return e;let i=0,t=Math.abs(g[0]-A);for(let I=1;I<g.length;I+=1){const e=Math.abs(g[I]-A);e<t&&(t=e,i=I)}return i}(A,this.cogZoomLookup)}async getTileFromImage(A,g,I,e,i){const t=new AbortController;i&&!i.aborted&&i.addEventListener("abort",()=>t.abort(),{once:!0});const B=t.signal;try{const i=this.getImageIndexForZoomLevel(I);let t=this.cache.getImage(i);t||(t=this.cog.getImage(i),this.cache.setImage(i,t));const C=await t,Q=this.cogResolutionLookup[i],E=C.getHeight(),s=C.getWidth(),[a,o]=this.cogOrigin,r=this.tileSize,n=bg/r/2**I,h=(xg[0]+A*r*n-a)/Q,l=(o-(xg[1]-g*r*n))/Q,c=e||r,D=Math.round(h),w=Math.round(l),d=D+c,y=w+c,f=Math.max(0,D),u=Math.max(0,w),S=Math.min(s,d),G=Math.min(E,y),N=S-f,F=G-u;if(N<=0||F<=0)return[this.tileReader.createEmptyTile(c)];const k=f-D,R=u-w,U=[f,u,S,G];if(k>0||R>0||N<c||F<c){const A=this.options.numOfChannels||1,g=this.tileReader.createTileBuffer(this.options.format||"Float32",c,A);void 0!==this.options.noDataValue&&g.fill(this.options.noDataValue);const I=await C.readRasters({window:U,signal:B});for(let e=0;e<I.length;e+=1){const i=this.tileReader.createTileBuffer(this.options.format||"Float32",c);void 0!==this.options.noDataValue&&i.fill(this.options.noDataValue);for(let A=0;A<F;A+=1){const g=R+A,t=g*c,B=A*I.width;for(let A=0;A<N;A+=1){const C=k+A;g<c&&C<c?i[t+C]=I[e][B+A]:console.error(`[CogTiles] tile buffer bounds exceeded: destRow ${g}, destCol ${C}, FETCH_SIZE ${c}`)}}for(let I=0;I<i.length;I+=1)g[I*A+e]=i[I]}return[g]}return[await C.readRasters({window:U,interleave:!0,signal:B})]}catch(A){if(A instanceof AggregateError&&1===A.errors.length){const g=A.errors[0];if(g instanceof DOMException&&"AbortError"===g.name)throw g;if(g instanceof Error&&"Request was aborted"===g.message)throw new DOMException("Tile request aborted","AbortError");throw g}if(B.aborted||A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message)throw new DOMException("Tile request aborted","AbortError");if(A instanceof AggregateError){if(A.errors.some(A=>A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message))throw new DOMException("Tile request aborted","AbortError")}throw A}}async getTile(A,g,I,e,i,t,B){const C=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),Q=bg/Math.pow(2,I)*Math.cos(C)/this.tileSize,E="terrain"===this.options.type,s="image"===this.options.type&&this.options.useReliefGlaze;let a=i;if(!E||i&&0!==i)a=i??4;else{const A=this.getImageIndexForZoomLevel(I);a=this.getMeshMaxErrorForImageIndex(A)??4}return E?this.getTerrainTile(A,g,I,e,a,Q,t,B):s?this.getGlazeTile(A,g,I,e,Q,i,t):this.getBitmapTile(A,g,I,e,Q,i,t)}async getTerrainTile(A,g,I,e,i,t,B,C){const Q=C??this.options.skipTexture??!1;if(this.options.cacheAllBands){if(B?.aborted)return null;const t=this.options.useChannel||1,C=`${this.lastInitializedUrl}_${I}_${A}_${g}_${i}_${Q}_band_${t}`;if(Vg.has(C)){const A=Vg.get(C);if(A)return A}try{const C=await this.getTileAllBands(A,g,I,i,void 0,e);if(C&&C.length>0){if(B?.aborted)return null;C.forEach((e,t)=>{const B=t+1,C=`${this.lastInitializedUrl}_${I}_${A}_${g}_${i}_${Q}_band_${B}`;Vg.set(C,e)});const e=(t||1)-1;return e<0||e>=C.length?(console.error(`[CogTiles] Requested band index ${e} out of range (0-${C.length-1})`),null):C[e]}}catch(A){console.warn("[CogTiles] Multi-band fetch failed, falling back to single-band:",A)}}const E=this.cache.getTileResultCacheKey(A,g,I,i,Q),s=this.cache.getTileResult(E);if(s){if(s.settled)return B?.aborted?null:s.promise;s.callerCount+=1,B&&!B.aborted&&B.addEventListener("abort",()=>{s.callerCount-=1,s.callerCount<=0&&!s.settled&&s.controller.abort()},{once:!0});const A=await s.promise;return B?.aborted?null:A}const a=new AbortController,o=(async()=>{const B=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,C=this.tileSize+(B?2:1),s=await this.getTileFromImage(A,g,I,C,a.signal),o=s[0],r=this.options.noDataValue;if(void 0!==r&&o){const A=this.options.numOfChannels||1;let g=this.options.useChannelIndex??(this.options.useChannel?this.options.useChannel-1:0);null==g&&(g=0);const I=this.options.noDataCheck??"full",e=C,i=C,t=A=>Mg(A,r);let B=!0;if("full"===I)if(A>1)for(let I=g;I<o.length;I+=A){if(!t(o[I])){B=!1;break}}else for(let A=0;A<o.length;A++){if(!t(o[A])){B=!1;break}}else if("border+center"===I){const I=A;for(let A=0;A<e;A++){if(!t(o[A*I+g])){B=!1;break}}if(B)for(let A=0;A<e;A++){if(!t(o[((i-1)*e+A)*I+g])){B=!1;break}}if(B)for(let A=1;A<i-1;A++){const i=(A*e+(e-1))*I+g,C=o[A*e*I+g],Q=o[i];if(!t(C)||!t(Q)){B=!1;break}}if(B){const A=[[Math.floor(e/2),Math.floor(i/2)],[Math.floor(e/4),Math.floor(i/4)],[Math.floor(3*e/4),Math.floor(i/4)],[Math.floor(e/4),Math.floor(3*i/4)],[Math.floor(3*e/4),Math.floor(3*i/4)]];for(const[i,C]of A){if(!t(o[(C*e+i)*I+g])){B=!1;break}}}}else for(let A=0;A<o.length;A++){if(!t(o[A])){B=!1;break}}if(B)return this.cache.deleteTileResult(E),null}const n={...this.options,skipTexture:Q};return this.geo.getMap({rasters:[s[0]],width:C,height:C,bounds:e??[0,0,0,0],cellSizeMeters:t},n,i)})(),r={promise:o,controller:a,callerCount:1,settled:!1};B&&!B.aborted&&B.addEventListener("abort",()=>{r.callerCount-=1,r.callerCount<=0&&!r.settled&&r.controller.abort()},{once:!0}),r.promise=o,this.cache.setTileResult(E,r);try{const A=await o;return r.settled=!0,B?.aborted?null:A}catch(A){throw r.settled=!0,this.cache.deleteTileResult(E),A}}async getGlazeTile(A,g,I,e,i,t,B){const C=this.cache.getTileCacheKey(A,g,I);let Q=this.cache.getReliefMask(C);if(!Q){const e=new AbortController;Q=(async()=>{const t=await this.getTileFromImage(A,g,I,this.tileSize+2,e.signal);return Kg.composeSwissRelief(t[0],this.options,i,this.tileSize,this.tileSize)})(),this.cache.setReliefMask(C,Q),Q.catch(()=>this.cache.deleteReliefMask(C))}if(B?.aborted)return null;const E=await Q;return B?.aborted?null:this.geo.getMap({rasters:[E],width:this.tileSize,height:this.tileSize,bounds:e??[0,0,0,0],cellSizeMeters:i},this.options,t??4)}async getBitmapTile(A,g,I,e,i,t,B){const C=this.cache.getTileCacheKey(A,g,I);let Q=this.cache.getRaster(C);if(!Q){const e=new AbortController;Q=this.getTileFromImage(A,g,I,this.tileSize,e.signal),this.cache.setRaster(C,Q),Q.catch(()=>this.cache.deleteRaster(C))}if(B?.aborted)return null;const E=await Q;return B?.aborted?null:this.geo.getMap({rasters:[E[0]],width:this.tileSize,height:this.tileSize,bounds:e??[0,0,0,0],cellSizeMeters:i},this.options,t??4)}async getTileAllBands(A,g,I,e,i,t){if(!this.cog)return[];const B=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),C=bg/Math.pow(2,I)*Math.cos(B)/this.tileSize;let Q;if(e&&0!==e)Q=e;else{const A=this.getImageIndexForZoomLevel(I);Q=this.getMeshMaxErrorForImageIndex(A)??4}const E=new AbortController;i&&!i.aborted&&i.addEventListener("abort",()=>E.abort(),{once:!0});const s=E.signal;try{const e=this.getImageIndexForZoomLevel(I);let B=this.cache.getImage(e);B||(B=this.cog.getImage(e),this.cache.setImage(e,B));const E=await B,a=this.cogResolutionLookup[e],o=E.getHeight(),r=E.getWidth(),[n,h]=this.cogOrigin,l=this.tileSize,c=xg[0],D=xg[1],w=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,d=this.tileSize+(w?2:1),y=bg/l/2**I,f=(c+A*l*y-n)/a,u=(h-(D-g*l*y))/a,S=Math.round(f),G=Math.round(u),N=S+d,F=G+d,k=Math.max(0,S),R=Math.max(0,G),U=Math.min(r,N),L=Math.min(o,F),p=U-k,M=L-R;if(p<=0||M<=0)return[];const Y=k-S,m=R-G,K=[k,R,U,L],H=await E.readRasters({window:K,signal:s});if(i?.aborted)return[];const J=[],b=H.length;for(let A=0;A<b;A+=1){const g=H[A],I=this.tileReader.createTileBuffer(this.options.format||"Float32",d);void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue);for(let A=0;A<M;A+=1){const e=m+A,i=e*d,t=A*p;for(let A=0;A<p;A+=1){const B=Y+A;e<d&&B<d&&(I[i+B]=g[t+A])}}const e={...this.options,useChannel:1,useChannelIndex:0,numOfChannels:1},i=await this.geo.getMap({rasters:[I],width:d,height:d,bounds:t??[0,0,0,0],cellSizeMeters:C},e,Q);i&&J.push(i)}return J}catch(A){return i?.aborted||console.error("[CogTiles.getTileAllBands] Error fetching all bands:",A),[]}}clearTileResultCache(){this.cache.clearTileResultCache()}}const jg={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let e=0;e<I;e++)if(A[e]!==g[e])return!1;return!0}},Wg={...e.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:jg,clampToTerrain:!1,workerUrl:""};class _g extends A{static defaultProps=Wg;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new zg(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:A,oldProps:I}){const e=A.rasterData!==I.rasterData;if(e){const{rasterData:g}=A,I=g&&(Array.isArray(g)||g.includes("{x}")&&g.includes("{y}")||this.props.isTiled);this.setState({isTiled:I})}e||(A.bounds,I.bounds);this.state.isTiled,A?.cogBitmapOptions?.useChannel!==I.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=A.cogBitmapOptions.useChannel,this.state.bitmapCogTiles.options.useChannelIndex=null),A.workerUrl&&g.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){let g;try{g=await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z,void 0,void 0,A.signal)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return g&&!this.props.pickable&&(g.raw=null),g}renderSubLayers(A){const g=this.getSubLayerClass("image",i),{blurredTexture:I}=this.state.bitmapCogTiles.options,{clampToTerrain:e}=this.props,B="object"==typeof e&&null!==e&&"terrainDrawMode"in e,{data:C}=A;if(!C)return null;const{bbox:{west:Q,south:E,east:s,north:a}}=A.tile;return new g({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:[1],image:C.map,_instanced:!1,pickable:A.pickable,bounds:[Q,E,s,a],textureParameters:{minFilter:I?"linear":"nearest",magFilter:I?"linear":"nearest"},extensions:e?[new t]:[],...B?{terrainDrawMode:e.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:g,onTileLoad:I,onTileUnload:i,onTileError:t,maxCacheSize:B,maxCacheByteSize:C,refinementStrategy:Q,cogBitmapOptions:E}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:s}=this.state.bitmapCogTiles;return new e(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:[A,E.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:s,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:g,onTileLoad:I,onTileUnload:i,onTileError:t,maxCacheSize:B,maxCacheByteSize:C,refinementStrategy:Q})}return null}}const Xg={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let e=0;e<I;e++)if(A[e]!==g[e])return!1;return!0}},$g=[1],AI={...e.defaultProps,elevationData:Xg,texture:{...Xg,optional:!0},meshMaxError:{type:"object",value:"auto",validate:A=>"number"==typeof A||"auto"===A,equal:(A,g)=>A===g},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0};class gI extends A{static defaultProps=AI;static layerName="CogTerrainLayer";terrainUrl="";async initializeState(A){super.initializeState(A);const g=this.props.cogTiles||new zg(this.props.terrainOptions);if(this.setState({terrainCogTiles:g,initialized:!1}),g.cog){const A=g.getZoomRange(),[I,e]=A;this.setState({initialized:!0,minZoom:I,maxZoom:e})}else await this.init()}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:A,oldProps:I}){const e=A.elevationData!==I.elevationData;if(e){const{elevationData:g}=A,I=g&&(Array.isArray(g)||g.includes("{x}")&&g.includes("{y}"))||this.props.isTiled;this.setState({isTiled:I})}e||A.meshMaxError!==I.meshMaxError||A.elevationDecoder!==I.elevationDecoder||(A.bounds,I.bounds);A.meshMaxError!==I.meshMaxError&&this.state.terrainCogTiles&&this.state.terrainCogTiles.clearTileResultCache(),this.state.isTiled,A?.terrainOptions?.useChannel!==I.terrainOptions?.useChannel&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.useChannel=A.terrainOptions.useChannel,this.state.terrainCogTiles.options.useChannelIndex=null,this.state.terrainCogTiles.clearTileResultCache());const i=!(!A?.wireframe&&"terrain"!==A?.operation&&!A?.disableTexture);i!==!(!I?.wireframe&&"terrain"!==I?.operation&&!I?.disableTexture)&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.skipTexture=i,this.state.terrainCogTiles.clearTileResultCache()),A.cogTiles&&A.cogTiles!==I.cogTiles&&this.setState({terrainCogTiles:A.cogTiles}),A.workerUrl&&g.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:g,elevationDecoder:I,meshMaxError:e,signal:i}){if(!A)return null;let t=this.getLoadOptions();t={...t,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*e:0,...t?.terrain,bounds:g,meshMaxError:e,elevationDecoder:I}};const{fetch:B}=this.props;return B(A,{propName:"elevationData",layer:this,loadOptions:t,signal:i,loaders:[]})}async getTiledTerrainData(A){const{viewport:g}=this.context;let I=[0,0],e=[0,0];if(g.isGeospatial){const i=A.bbox;I=g.projectFlat([i.west,i.south]),e=g.projectFlat([i.east,i.north])}else{const g=A.bbox;I=[g.left,g.bottom],e=[g.right,g.top]}const i=[I[0],I[1],e[0],e[1]];let t=null;try{const g=!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),I="auto"===this.props.meshMaxError?void 0:this.props.meshMaxError;t=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,i,I,A.signal,g)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return t&&!this.props.pickable&&(t.raw=null),t?[t,null]:null}renderSubLayers(A){const g=this.getSubLayerClass("mesh",E),{color:e,wireframe:i,terrainOptions:t}=this.props,{data:B}=A;if(!B)return null;const[C]=B,Q=!this.props.disableTexture&&C?.texture?C.texture:null,s=t?.useSwissRelief,a=t?.disableLighting,o=s||a?{material:{ambient:1,diffuse:0,shininess:0,specularColor:[0,0,0]}}:{material:this.props.material};return new g({...A,tileSize:A.tileSize},{...o,data:$g,mesh:C?.map,texture:Q,_instanced:!1,pickable:A.pickable,coordinateSystem:I.CARTESIAN,getColor:Q?[255,255,255]:e,wireframe:i})}onViewportLoad(A){if(!A)return;const{zRange:g}=this.state,I=A.map(A=>A.content).filter(A=>!!A&&!!A[0]).map(A=>{if(!A||!A[0])return;const g=A[0]?.map?.header?.boundingBox;return g?.map(A=>A[2])}).filter(A=>void 0!==A);if(0===I.length)return;const e=Math.min(...I.map(A=>A?.[0]??0).filter(A=>Number.isFinite(A))),i=Math.max(...I.map(A=>A?.[1]??0).filter(A=>Number.isFinite(A)));if(!g||e<g[0]||i>g[1]){const A=[Number.isFinite(e)?e:0,Number.isFinite(i)?i:0];this.setState({zRange:A}),this.props.onZRangeUpdate?.(A)}}renderLayers(){const{elevationData:A,meshMaxError:g,elevationDecoder:I,tileSize:i,extent:t,maxRequests:B,onTileLoad:C,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:a,refinementStrategy:o}=this.props;return this.state.isTiled&&this.state.initialized?new e(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:{elevationData:(r=A,Array.isArray(r)?r.join(";"):r||""),meshMaxError:g,elevationDecoder:I,terrainCogTiles:this.state.terrainCogTiles,skipTexture:!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),useChannel:this.props.terrainOptions?.useChannel},renderSubLayers:{disableTexture:this.props.disableTexture,terrainOptions:this.props.terrainOptions}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:i,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:t,maxRequests:B,onTileLoad:C,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:a,refinementStrategy:o}):null;var r}}function II(A){try{if(!A?.coordinate||A.coordinate.length<3)return null;const[g,I,e]=A.coordinate;return void 0===g||void 0===I||void 0===e?null:{longitude:g,latitude:I,elevation:e}}catch{return null}}function eI(A,g=3){try{if(!A?.tile?.content)return[];const I=A.tile.content[0];if(!I?.raw)return[];const{raw:e,width:i,height:t}=I,B=A.tile.bbox;if(!B)return[];const C=B.west??B[0],Q=B.south??B[1],E=B.east??B[2],s=B.north??B[3];if(void 0===C||void 0===Q||void 0===E||void 0===s)return[];const a=A.coordinate;if(!a||a.length<2)return[];const[o,r]=a,n=Math.floor(g/2),h=(o-C)/(E-C),l=r*Math.PI/180,c=s*Math.PI/180,D=Q*Math.PI/180,w=Math.log(Math.tan(Math.PI/4+l/2)),d=Math.log(Math.tan(Math.PI/4+c/2)),y=Math.log(Math.tan(Math.PI/4+D/2)),f=(d-w)/(d-y),u=Math.floor(h*(i-1)),S=Math.floor(f*(t-1)),G=[];for(let A=-n;A<=n;A++)for(let g=-n;g<=n;g++){const I=u+g,B=S+A;if(I<0||I>=i||B<0||B>=t)continue;const Q=e[B*i+I];if(null==Q)continue;const s=C+I/(i-1)*(E-C),a=d-B/(t-1)*(d-y),o=180*(2*Math.atan(Math.exp(a))-Math.PI/2)/Math.PI;G.push({longitude:s,latitude:o,elevation:Q})}return G}catch{return[]}}a();var iI=Object.freeze({__proto__:null,default:class extends Dg{decodeBlock(A){return A}}});function tI(A,g){for(let I=g.length-1;I>=0;I--)A.push(g[I]);return A}function BI(A){const g=new Uint16Array(4093),I=new Uint8Array(4093);for(let A=0;A<=257;A++)g[A]=4096,I[A]=A;let e=258,i=9,t=0;function B(){e=258,i=9}function C(A){const g=function(A,g,I){const e=g%8,i=Math.floor(g/8),t=8-e,B=g+I-8*(i+1);let C=8*(i+2)-(g+I);const Q=8*(i+2)-g;if(C=Math.max(0,C),i>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let E=A[i]&2**(8-e)-1;E<<=I-t;let s=E;if(i+1<A.length){let g=A[i+1]>>>C;g<<=Math.max(0,I-Q),s+=g}if(B>8&&i+2<A.length){const e=8*(i+3)-(g+I);s+=A[i+2]>>>e}return s}(A,t,i);return t+=i,g}function Q(A,i){return I[e]=i,g[e]=A,e++,e-1}function E(A){const e=[];for(let i=A;4096!==i;i=g[i])e.push(I[i]);return e}const s=[];B();const a=new Uint8Array(A);let o,r=C(a);for(;257!==r;){if(256===r){for(B(),r=C(a);256===r;)r=C(a);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);tI(s,E(r)),o=r}else if(r<e){const A=E(r);tI(s,A),void 0!==o&&Q(o,A[A.length-1]),o=r}else{if(void 0===o)throw new Error(`Invalid LZW code: ${r} with no previous code`);const A=E(o);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${o} / ${e}, position: ${t}`);tI(s,A),s.push(A[A.length-1]),Q(o,A[A.length-1]),o=r}e+1>=2**i&&(12===i?o=void 0:i++),r=C(a)}return new Uint8Array(s)}var CI=Object.freeze({__proto__:null,default:class extends Dg{decodeBlock(A){return BI(A).buffer}}});const QI=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),EI=4017,sI=799,aI=3406,oI=2276,rI=1567,nI=3784,hI=5793,lI=2896;function cI(A,g){let I=0;const e=[];let i=16;for(;i>0&&!A[i-1];)--i;e.push({children:[],index:0});let t,B=e[0];for(let C=0;C<i;C++){for(let i=0;i<A[C];i++){if(B=e.pop(),!B)throw new Error("buildHuffmanTable: codeLength mismatch");for(B.children[B.index]=g[I];B.index>0;)if(B=e.pop(),!B)throw new Error("buildHuffmanTable: codeLength mismatch");for(B.index++,e.push(B);e.length<=C;)e.push(t={children:[],index:0}),B.children[B.index]=t.children,B=t;I++}C+1<i&&(e.push(t={children:[],index:0}),B.children[B.index]=t.children,B=t)}return e[0].children}function DI(A,g,I,e,i,t,B,C,Q){const{mcusPerLine:E,progressive:s}=I;if(e.length>1&&(void 0===E||void 0===I.mcusPerColumn))throw new Error("Missing MCU dimensions");if(1===e.length&&(void 0===e[0].blocksPerLine||void 0===e[0].blocksPerColumn))throw new Error("Missing block dimensions");const a=g;let o=g,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[o++],255===r){const g=A[o++];if(g)throw new Error(`unexpected marker: ${(r<<8|g).toString(16)}`)}return n=7,r>>>7}function l(A){if(!A)throw new Error("Huffman table not found");let g,I=A;for(;null!==(g=h());){const A=I[g];if("number"==typeof A)return A;if("object"!=typeof A)throw new Error("invalid huffman sequence");I=A}return null}function c(A){let g=A,I=0;for(;g>0;){const A=h();if(null===A)return;I=I<<1|A,--g}return I}function D(A){const g=c(A);if(void 0!==g)return g>=1<<A-1?g:g+(-1<<A)+1}let w=0;let d,y=0;function f(A,g,I,e,i){const t=I%E,B=(I/E|0)*A.v+e,C=t*A.h+i;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[B][C])}function u(A,g,I){const e=I/A.blocksPerLine|0,i=I%A.blocksPerLine;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[e][i])}const S=e.length;let G,N,F,k,R,U;U=s?0===t?0===C?function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const e=D(I);if(void 0===e)throw new Error("Unexpected end of data in DC coefficient decoding");const i=0===I?0:e<<Q;void 0===A.pred&&(A.pred=0),A.pred+=i,g[0]=A.pred}:function(A,g){const I=h();if(null===I)throw new Error("Unexpected end of data in DC coefficient decoding");g[0]|=I<<Q}:0===C?function(A,g){if(w>0)return void w--;let I=t;const e=B;for(;I<=e;){const e=l(A.huffmanTableAC);if(null===e)throw new Error("Unexpected end of data in AC coefficient decoding");const i=15&e,t=e>>4;if(0===i){if(t<15){const A=c(t);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");w=A+(1<<t)-1;break}I+=16}else{I+=t;const A=QI[I],e=D(i);if(void 0===e)throw new Error("Unexpected end of data in AC coefficient decoding");g[A]=e*(1<<Q),I++}}}:function(A,g){let I=t;const e=B;let i=0;for(;I<=e;){const e=QI[I],t=g[e]<0?-1:1;switch(y){case 0:{const g=l(A.huffmanTableAC);if(null===g)throw new Error("Unexpected end of data in AC coefficient decoding");const I=15&g;if(i=g>>4,0===I)if(i<15){const A=c(i);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");w=A+(1<<i),y=4}else i=16,y=1;else{if(1!==I)throw new Error("invalid ACn encoding");const A=D(I);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");d=A,y=i?2:3}continue}case 1:case 2:if(g[e]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[e]+=(A<<Q)*t}else i--,0===i&&(y=2===y?3:0);break;case 3:if(g[e]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[e]+=(A<<Q)*t}else g[e]=d<<Q,y=0;break;case 4:if(g[e]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[e]+=(A<<Q)*t}}I++}4===y&&(w--,0===w&&(y=0))}:function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const e=0===I?0:D(I);if(void 0===e)throw new Error("Unexpected end of stream");void 0===A.pred&&(A.pred=0),A.pred+=e,g[0]=A.pred;let i=1;for(;i<64;){const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&I,t=I>>4;if(0===e){if(t<15)break;i+=16}else{i+=t;const A=QI[i],I=D(e);if(void 0===I)throw new Error("Unexpected end of stream");g[A]=I,i++}}};let L,p,M=0;p=1===S?e[0].blocksPerLine*e[0].blocksPerColumn:E*I.mcusPerColumn;const Y=i||p;for(;M<p;){for(N=0;N<S;N++)e[N].pred=0;if(w=0,1===S)for(G=e[0],R=0;R<Y;R++)u(G,U,M),M++;else for(R=0;R<Y;R++){for(N=0;N<S;N++){G=e[N];const{h:A,v:g}=G;for(F=0;F<g;F++)for(k=0;k<A;k++)f(G,U,M,F,k)}if(M++,M===p)break}if(n=0,L=A[o]<<8|A[o+1],L<65280)throw new Error("marker was not found");if(!(L>=65488&&L<=65495))break;o+=2}return o-a}function wI(A){const g=[],{blocksPerLine:I,blocksPerColumn:e}=A;if(!I||!e||!A.blocks)throw new Error("Missing component data");const i=I<<3,t=new Int32Array(64),B=new Uint8Array(64);function C(g,I,e){const i=A.quantizationTable;if(!i)throw new Error("No quantization table found");let t,B,C,Q,E,s,a,o,r;const n=e;let h;for(h=0;h<64;h++)n[h]=g[h]*i[h];for(h=0;h<8;++h){const A=8*h;0!==n[1+A]||0!==n[2+A]||0!==n[3+A]||0!==n[4+A]||0!==n[5+A]||0!==n[6+A]||0!==n[7+A]?(t=hI*n[0+A]+128>>8,B=hI*n[4+A]+128>>8,C=n[2+A],Q=n[6+A],E=lI*(n[1+A]-n[7+A])+128>>8,o=lI*(n[1+A]+n[7+A])+128>>8,s=n[3+A]<<4,a=n[5+A]<<4,r=t-B+1>>1,t=t+B+1>>1,B=r,r=C*nI+Q*rI+128>>8,C=C*rI-Q*nI+128>>8,Q=r,r=E-a+1>>1,E=E+a+1>>1,a=r,r=o+s+1>>1,s=o-s+1>>1,o=r,r=t-Q+1>>1,t=t+Q+1>>1,Q=r,r=B-C+1>>1,B=B+C+1>>1,C=r,r=E*oI+o*aI+2048>>12,E=E*aI-o*oI+2048>>12,o=r,r=s*sI+a*EI+2048>>12,s=s*EI-a*sI+2048>>12,a=r,n[0+A]=t+o,n[7+A]=t-o,n[1+A]=B+a,n[6+A]=B-a,n[2+A]=C+s,n[5+A]=C-s,n[3+A]=Q+E,n[4+A]=Q-E):(r=hI*n[0+A]+512>>10,n[0+A]=r,n[1+A]=r,n[2+A]=r,n[3+A]=r,n[4+A]=r,n[5+A]=r,n[6+A]=r,n[7+A]=r)}for(h=0;h<8;++h){const A=h;0!==n[8+A]||0!==n[16+A]||0!==n[24+A]||0!==n[32+A]||0!==n[40+A]||0!==n[48+A]||0!==n[56+A]?(t=hI*n[0+A]+2048>>12,B=hI*n[32+A]+2048>>12,C=n[16+A],Q=n[48+A],E=lI*(n[8+A]-n[56+A])+2048>>12,o=lI*(n[8+A]+n[56+A])+2048>>12,s=n[24+A],a=n[40+A],r=t-B+1>>1,t=t+B+1>>1,B=r,r=C*nI+Q*rI+2048>>12,C=C*rI-Q*nI+2048>>12,Q=r,r=E-a+1>>1,E=E+a+1>>1,a=r,r=o+s+1>>1,s=o-s+1>>1,o=r,r=t-Q+1>>1,t=t+Q+1>>1,Q=r,r=B-C+1>>1,B=B+C+1>>1,C=r,r=E*oI+o*aI+2048>>12,E=E*aI-o*oI+2048>>12,o=r,r=s*sI+a*EI+2048>>12,s=s*EI-a*sI+2048>>12,a=r,n[0+A]=t+o,n[56+A]=t-o,n[8+A]=B+a,n[48+A]=B-a,n[16+A]=C+s,n[40+A]=C-s,n[24+A]=Q+E,n[32+A]=Q-E):(r=hI*e[h+0]+8192>>14,n[0+A]=r,n[8+A]=r,n[16+A]=r,n[24+A]=r,n[32+A]=r,n[40+A]=r,n[48+A]=r,n[56+A]=r)}for(h=0;h<64;++h){const A=128+(n[h]+8>>4);I[h]=A<0?0:A>255?255:A}}for(let Q=0;Q<e;Q++){const e=Q<<3;for(let A=0;A<8;A++)g.push(new Uint8Array(i));for(let i=0;i<I;i++){C(A.blocks[Q][i],B,t);let I=0;const E=i<<3;for(let A=0;A<8;A++){const i=g[e+A];for(let A=0;A<8;A++)i[E+A]=B[I++]}}}return g}class dI{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(A){let g=0;function I(){const I=A[g]<<8|A[g+1];return g+=2,I}function e(){const e=I(),i=A.subarray(g,g+e-2);return g+=i.length,i}function i(A){let g,I,e=0,i=0;for(I in A.components)A.components.hasOwnProperty(I)&&(g=A.components[I],e<g.h&&(e=g.h),i<g.v&&(i=g.v));const t=Math.ceil(A.samplesPerLine/8/e),B=Math.ceil(A.scanLines/8/i);for(I in A.components)if(A.components.hasOwnProperty(I)){g=A.components[I];const C=Math.ceil(Math.ceil(A.samplesPerLine/8)*g.h/e),Q=Math.ceil(Math.ceil(A.scanLines/8)*g.v/i),E=t*g.h,s=B*g.v,a=[];for(let A=0;A<s;A++){const A=[];for(let g=0;g<E;g++)A.push(new Int32Array(64));a.push(A)}g.blocksPerLine=C,g.blocksPerColumn=Q,g.blocks=a}A.maxH=e,A.maxV=i,A.mcusPerLine=t,A.mcusPerColumn=B}let t=I();if(65496!==t)throw new Error("SOI not found");for(t=I();65497!==t;){switch(t){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=e();65504===t&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===t&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const e=I()+g-2;for(;g<e;){const e=A[g++],i=new Int32Array(64);if(e>>4){if(e>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){i[QI[A]]=I()}}else for(let I=0;I<64;I++){i[QI[I]]=A[g++]}this.quantizationTables[15&e]=i}break}case 65472:case 65473:case 65474:{I();const e={extended:65473===t,progressive:65474===t,precision:A[g++],scanLines:I(),samplesPerLine:I(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},B=A[g++];let C;for(let I=0;I<B;I++){C=A[g];const I=A[g+1]>>4,i=15&A[g+1],t=A[g+2];e.componentsOrder.push(C),e.components[C]={h:I,v:i,quantizationIdx:t,blocksPerLine:0,blocksPerColumn:0,blocks:[]},g+=3}i(e),this.frames.push(e);break}case 65476:{const e=I();for(let I=2;I<e;){const e=A[g++],i=new Uint8Array(16);let t=0;for(let I=0;I<16;I++,g++)i[I]=A[g],t+=i[I];const B=new Uint8Array(t);for(let I=0;I<t;I++,g++)B[I]=A[g];I+=17+t,e>>4?this.huffmanTablesAC[15&e]=cI(i,B):this.huffmanTablesDC[15&e]=cI(i,B)}break}case 65501:I(),this.resetInterval=I();break;case 65498:{I();const e=A[g++],i=[],t=this.frames[0];for(let I=0;I<e;I++){const I=t.components[A[g++]],e=A[g++];I.huffmanTableDC=this.huffmanTablesDC[e>>4],I.huffmanTableAC=this.huffmanTablesAC[15&e],i.push(I)}const B=A[g++],C=A[g++],Q=A[g++],E=DI(A,g,t,i,this.resetInterval,B,C,Q>>4,15&Q);g+=E;break}case 65535:255!==A[g]&&g--;break;default:if(255===A[g-3]&&A[g-2]>=192&&A[g-2]<=254){g-=3;break}throw new Error(`unknown JPEG marker ${t.toString(16)}`)}t=I()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const g=this.frames[A].components;for(const A of Object.keys(g)){const I=g[A].quantizationIdx;"number"==typeof I&&(g[A].quantizationTable=this.quantizationTables[I],delete g[A].quantizationIdx)}}const g=A[0];if(!g.maxH||!g.maxV)throw new Error("Invalid frame dimensions");const{components:I,componentsOrder:e}=g,i=[],t=g.samplesPerLine,B=g.scanLines;for(let A=0;A<e.length;A++){const t=I[e[A]];i.push({lines:wI(t),scaleX:t.h/g.maxH,scaleY:t.v/g.maxV})}const C=new Uint8Array(t*B*i.length);let Q=0;for(let A=0;A<B;++A)for(let g=0;g<t;++g)for(let I=0;I<i.length;++I){const e=i[I];C[Q]=e.lines[0|A*e.scaleY][0|g*e.scaleX],++Q}return C}}var yI=Object.freeze({__proto__:null,default:class extends Dg{constructor(A){super(A),this.reader=new dI,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});function fI(A){let g=A.length;for(;--g>=0;)A[g]=0}fI(new Array(576));fI(new Array(60));fI(new Array(512));fI(new Array(256));fI(new Array(29));fI(new Array(30));var uI=(A,g,I,e)=>{let i=65535&A,t=A>>>16&65535,B=0;for(;0!==I;){B=I>2e3?2e3:I,I-=B;do{i=i+g[e++]|0,t=t+i|0}while(--B);i%=65521,t%=65521}return i|t<<16};const SI=new Uint32Array((()=>{let A,g=[];for(var I=0;I<256;I++){A=I;for(var e=0;e<8;e++)A=1&A?3988292384^A>>>1:A>>>1;g[I]=A}return g})());var GI=(A,g,I,e)=>{const i=SI,t=e+I;A^=-1;for(let I=e;I<t;I++)A=A>>>8^i[255&(A^g[I])];return-1^A},NI={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"},FI={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const kI=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);var RI=function(A){const g=Array.prototype.slice.call(arguments,1);for(;g.length;){const I=g.shift();if(I){if("object"!=typeof I)throw new TypeError(I+"must be non-object");for(const g in I)kI(I,g)&&(A[g]=I[g])}}return A},UI=A=>{let g=0;for(let I=0,e=A.length;I<e;I++)g+=A[I].length;const I=new Uint8Array(g);for(let g=0,e=0,i=A.length;g<i;g++){let i=A[g];I.set(i,e),e+=i.length}return I};let LI=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){LI=!1}const pI=new Uint8Array(256);for(let A=0;A<256;A++)pI[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;pI[254]=pI[254]=1;var MI=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let g,I,e,i,t,B=A.length,C=0;for(i=0;i<B;i++)I=A.charCodeAt(i),55296==(64512&I)&&i+1<B&&(e=A.charCodeAt(i+1),56320==(64512&e)&&(I=65536+(I-55296<<10)+(e-56320),i++)),C+=I<128?1:I<2048?2:I<65536?3:4;for(g=new Uint8Array(C),t=0,i=0;t<C;i++)I=A.charCodeAt(i),55296==(64512&I)&&i+1<B&&(e=A.charCodeAt(i+1),56320==(64512&e)&&(I=65536+(I-55296<<10)+(e-56320),i++)),I<128?g[t++]=I:I<2048?(g[t++]=192|I>>>6,g[t++]=128|63&I):I<65536?(g[t++]=224|I>>>12,g[t++]=128|I>>>6&63,g[t++]=128|63&I):(g[t++]=240|I>>>18,g[t++]=128|I>>>12&63,g[t++]=128|I>>>6&63,g[t++]=128|63&I);return g},YI=(A,g)=>{const I=g||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,g));let e,i;const t=new Array(2*I);for(i=0,e=0;e<I;){let g=A[e++];if(g<128){t[i++]=g;continue}let B=pI[g];if(B>4)t[i++]=65533,e+=B-1;else{for(g&=2===B?31:3===B?15:7;B>1&&e<I;)g=g<<6|63&A[e++],B--;B>1?t[i++]=65533:g<65536?t[i++]=g:(g-=65536,t[i++]=55296|g>>10&1023,t[i++]=56320|1023&g)}}return((A,g)=>{if(g<65534&&A.subarray&&LI)return String.fromCharCode.apply(null,A.length===g?A:A.subarray(0,g));let I="";for(let e=0;e<g;e++)I+=String.fromCharCode(A[e]);return I})(t,i)},mI=(A,g)=>{(g=g||A.length)>A.length&&(g=A.length);let I=g-1;for(;I>=0&&128==(192&A[I]);)I--;return I<0||0===I?g:I+pI[A[I]]>g?I:g};var KI=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};const HI=16209;var JI=function(A,g){let I,e,i,t,B,C,Q,E,s,a,o,r,n,h,l,c,D,w,d,y,f,u,S,G;const N=A.state;I=A.next_in,S=A.input,e=I+(A.avail_in-5),i=A.next_out,G=A.output,t=i-(g-A.avail_out),B=i+(A.avail_out-257),C=N.dmax,Q=N.wsize,E=N.whave,s=N.wnext,a=N.window,o=N.hold,r=N.bits,n=N.lencode,h=N.distcode,l=(1<<N.lenbits)-1,c=(1<<N.distbits)-1;A:do{r<15&&(o+=S[I++]<<r,r+=8,o+=S[I++]<<r,r+=8),D=n[o&l];g:for(;;){if(w=D>>>24,o>>>=w,r-=w,w=D>>>16&255,0===w)G[i++]=65535&D;else{if(!(16&w)){if(64&w){if(32&w){N.mode=16191;break A}A.msg="invalid literal/length code",N.mode=HI;break A}D=n[(65535&D)+(o&(1<<w)-1)];continue g}for(d=65535&D,w&=15,w&&(r<w&&(o+=S[I++]<<r,r+=8),d+=o&(1<<w)-1,o>>>=w,r-=w),r<15&&(o+=S[I++]<<r,r+=8,o+=S[I++]<<r,r+=8),D=h[o&c];;){if(w=D>>>24,o>>>=w,r-=w,w=D>>>16&255,16&w){if(y=65535&D,w&=15,r<w&&(o+=S[I++]<<r,r+=8,r<w&&(o+=S[I++]<<r,r+=8)),y+=o&(1<<w)-1,y>C){A.msg="invalid distance too far back",N.mode=HI;break A}if(o>>>=w,r-=w,w=i-t,y>w){if(w=y-w,w>E&&N.sane){A.msg="invalid distance too far back",N.mode=HI;break A}if(f=0,u=a,0===s){if(f+=Q-w,w<d){d-=w;do{G[i++]=a[f++]}while(--w);f=i-y,u=G}}else if(s<w){if(f+=Q+s-w,w-=s,w<d){d-=w;do{G[i++]=a[f++]}while(--w);if(f=0,s<d){w=s,d-=w;do{G[i++]=a[f++]}while(--w);f=i-y,u=G}}}else if(f+=s-w,w<d){d-=w;do{G[i++]=a[f++]}while(--w);f=i-y,u=G}for(;d>2;)G[i++]=u[f++],G[i++]=u[f++],G[i++]=u[f++],d-=3;d&&(G[i++]=u[f++],d>1&&(G[i++]=u[f++]))}else{f=i-y;do{G[i++]=G[f++],G[i++]=G[f++],G[i++]=G[f++],d-=3}while(d>2);d&&(G[i++]=G[f++],d>1&&(G[i++]=G[f++]))}break}if(64&w){A.msg="invalid distance code",N.mode=HI;break A}D=h[(65535&D)+(o&(1<<w)-1)]}}break}}while(I<e&&i<B);d=r>>3,I-=d,r-=d<<3,o&=(1<<r)-1,A.next_in=I,A.next_out=i,A.avail_in=I<e?e-I+5:5-(I-e),A.avail_out=i<B?B-i+257:257-(i-B),N.hold=o,N.bits=r};const bI=15,qI=new Uint16Array([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]),xI=new Uint8Array([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]),TI=new Uint16Array([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]),OI=new Uint8Array([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]);var PI=(A,g,I,e,i,t,B,C)=>{const Q=C.bits;let E,s,a,o,r,n,h=0,l=0,c=0,D=0,w=0,d=0,y=0,f=0,u=0,S=0,G=null;const N=new Uint16Array(16),F=new Uint16Array(16);let k,R,U,L=null;for(h=0;h<=bI;h++)N[h]=0;for(l=0;l<e;l++)N[g[I+l]]++;for(w=Q,D=bI;D>=1&&0===N[D];D--);if(w>D&&(w=D),0===D)return i[t++]=20971520,i[t++]=20971520,C.bits=1,0;for(c=1;c<D&&0===N[c];c++);for(w<c&&(w=c),f=1,h=1;h<=bI;h++)if(f<<=1,f-=N[h],f<0)return-1;if(f>0&&(0===A||1!==D))return-1;for(F[1]=0,h=1;h<bI;h++)F[h+1]=F[h]+N[h];for(l=0;l<e;l++)0!==g[I+l]&&(B[F[g[I+l]]++]=l);if(0===A?(G=L=B,n=20):1===A?(G=qI,L=xI,n=257):(G=TI,L=OI,n=0),S=0,l=0,h=c,r=t,d=w,y=0,a=-1,u=1<<w,o=u-1,1===A&&u>852||2===A&&u>592)return 1;for(;;){k=h-y,B[l]+1<n?(R=0,U=B[l]):B[l]>=n?(R=L[B[l]-n],U=G[B[l]-n]):(R=96,U=0),E=1<<h-y,s=1<<d,c=s;do{s-=E,i[r+(S>>y)+s]=k<<24|R<<16|U}while(0!==s);for(E=1<<h-1;S&E;)E>>=1;if(0!==E?(S&=E-1,S+=E):S=0,l++,0===--N[h]){if(h===D)break;h=g[I+B[l]]}if(h>w&&(S&o)!==a){for(0===y&&(y=w),r+=c,d=h-y,f=1<<d;d+y<D&&(f-=N[d+y],!(f<=0));)d++,f<<=1;if(u+=1<<d,1===A&&u>852||2===A&&u>592)return 1;a=S&o,i[a]=w<<24|d<<16|r-t}}return 0!==S&&(i[r+S]=h-y<<24|64<<16),C.bits=w,0};const{Z_FINISH:vI,Z_BLOCK:VI,Z_TREES:ZI,Z_OK:zI,Z_STREAM_END:jI,Z_NEED_DICT:WI,Z_STREAM_ERROR:_I,Z_DATA_ERROR:XI,Z_MEM_ERROR:$I,Z_BUF_ERROR:Ae,Z_DEFLATED:ge}=FI,Ie=16180,ee=16190,ie=16191,te=16192,Be=16194,Ce=16199,Qe=16200,Ee=16206,se=16209,ae=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function oe(){this.strm=null,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 Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const re=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.mode<Ie||g.mode>16211?1:0},ne=A=>{if(re(A))return _I;const g=A.state;return A.total_in=A.total_out=g.total=0,A.msg="",g.wrap&&(A.adler=1&g.wrap),g.mode=Ie,g.last=0,g.havedict=0,g.flags=-1,g.dmax=32768,g.head=null,g.hold=0,g.bits=0,g.lencode=g.lendyn=new Int32Array(852),g.distcode=g.distdyn=new Int32Array(592),g.sane=1,g.back=-1,zI},he=A=>{if(re(A))return _I;const g=A.state;return g.wsize=0,g.whave=0,g.wnext=0,ne(A)},le=(A,g)=>{let I;if(re(A))return _I;const e=A.state;return g<0?(I=0,g=-g):(I=5+(g>>4),g<48&&(g&=15)),g&&(g<8||g>15)?_I:(null!==e.window&&e.wbits!==g&&(e.window=null),e.wrap=I,e.wbits=g,he(A))},ce=(A,g)=>{if(!A)return _I;const I=new oe;A.state=I,I.strm=A,I.window=null,I.mode=Ie;const e=le(A,g);return e!==zI&&(A.state=null),e};let De,we,de=!0;const ye=A=>{if(de){De=new Int32Array(512),we=new Int32Array(32);let g=0;for(;g<144;)A.lens[g++]=8;for(;g<256;)A.lens[g++]=9;for(;g<280;)A.lens[g++]=7;for(;g<288;)A.lens[g++]=8;for(PI(1,A.lens,0,288,De,0,A.work,{bits:9}),g=0;g<32;)A.lens[g++]=5;PI(2,A.lens,0,32,we,0,A.work,{bits:5}),de=!1}A.lencode=De,A.lenbits=9,A.distcode=we,A.distbits=5},fe=(A,g,I,e)=>{let i;const t=A.state;return null===t.window&&(t.wsize=1<<t.wbits,t.wnext=0,t.whave=0,t.window=new Uint8Array(t.wsize)),e>=t.wsize?(t.window.set(g.subarray(I-t.wsize,I),0),t.wnext=0,t.whave=t.wsize):(i=t.wsize-t.wnext,i>e&&(i=e),t.window.set(g.subarray(I-e,I-e+i),t.wnext),(e-=i)?(t.window.set(g.subarray(I-e,I),0),t.wnext=e,t.whave=t.wsize):(t.wnext+=i,t.wnext===t.wsize&&(t.wnext=0),t.whave<t.wsize&&(t.whave+=i))),0};var ue={inflateReset:he,inflateReset2:le,inflateResetKeep:ne,inflateInit:A=>ce(A,15),inflateInit2:ce,inflate:(A,g)=>{let I,e,i,t,B,C,Q,E,s,a,o,r,n,h,l,c,D,w,d,y,f,u,S=0;const G=new Uint8Array(4);let N,F;const k=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(re(A)||!A.output||!A.input&&0!==A.avail_in)return _I;I=A.state,I.mode===ie&&(I.mode=te),B=A.next_out,i=A.output,Q=A.avail_out,t=A.next_in,e=A.input,C=A.avail_in,E=I.hold,s=I.bits,a=C,o=Q,u=zI;A:for(;;)switch(I.mode){case Ie:if(0===I.wrap){I.mode=te;break}for(;s<16;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(2&I.wrap&&35615===E){0===I.wbits&&(I.wbits=15),I.check=0,G[0]=255&E,G[1]=E>>>8&255,I.check=GI(I.check,G,2,0),E=0,s=0,I.mode=16181;break}if(I.head&&(I.head.done=!1),!(1&I.wrap)||(((255&E)<<8)+(E>>8))%31){A.msg="incorrect header check",I.mode=se;break}if((15&E)!==ge){A.msg="unknown compression method",I.mode=se;break}if(E>>>=4,s-=4,f=8+(15&E),0===I.wbits&&(I.wbits=f),f>15||f>I.wbits){A.msg="invalid window size",I.mode=se;break}I.dmax=1<<I.wbits,I.flags=0,A.adler=I.check=1,I.mode=512&E?16189:ie,E=0,s=0;break;case 16181:for(;s<16;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(I.flags=E,(255&I.flags)!==ge){A.msg="unknown compression method",I.mode=se;break}if(57344&I.flags){A.msg="unknown header flags set",I.mode=se;break}I.head&&(I.head.text=E>>8&1),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=GI(I.check,G,2,0)),E=0,s=0,I.mode=16182;case 16182:for(;s<32;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}I.head&&(I.head.time=E),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,G[2]=E>>>16&255,G[3]=E>>>24&255,I.check=GI(I.check,G,4,0)),E=0,s=0,I.mode=16183;case 16183:for(;s<16;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}I.head&&(I.head.xflags=255&E,I.head.os=E>>8),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=GI(I.check,G,2,0)),E=0,s=0,I.mode=16184;case 16184:if(1024&I.flags){for(;s<16;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}I.length=E,I.head&&(I.head.extra_len=E),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=GI(I.check,G,2,0)),E=0,s=0}else I.head&&(I.head.extra=null);I.mode=16185;case 16185:if(1024&I.flags&&(r=I.length,r>C&&(r=C),r&&(I.head&&(f=I.head.extra_len-I.length,I.head.extra||(I.head.extra=new Uint8Array(I.head.extra_len)),I.head.extra.set(e.subarray(t,t+r),f)),512&I.flags&&4&I.wrap&&(I.check=GI(I.check,e,r,t)),C-=r,t+=r,I.length-=r),I.length))break A;I.length=0,I.mode=16186;case 16186:if(2048&I.flags){if(0===C)break A;r=0;do{f=e[t+r++],I.head&&f&&I.length<65536&&(I.head.name+=String.fromCharCode(f))}while(f&&r<C);if(512&I.flags&&4&I.wrap&&(I.check=GI(I.check,e,r,t)),C-=r,t+=r,f)break A}else I.head&&(I.head.name=null);I.length=0,I.mode=16187;case 16187:if(4096&I.flags){if(0===C)break A;r=0;do{f=e[t+r++],I.head&&f&&I.length<65536&&(I.head.comment+=String.fromCharCode(f))}while(f&&r<C);if(512&I.flags&&4&I.wrap&&(I.check=GI(I.check,e,r,t)),C-=r,t+=r,f)break A}else I.head&&(I.head.comment=null);I.mode=16188;case 16188:if(512&I.flags){for(;s<16;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(4&I.wrap&&E!==(65535&I.check)){A.msg="header crc mismatch",I.mode=se;break}E=0,s=0}I.head&&(I.head.hcrc=I.flags>>9&1,I.head.done=!0),A.adler=I.check=0,I.mode=ie;break;case 16189:for(;s<32;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}A.adler=I.check=ae(E),E=0,s=0,I.mode=ee;case ee:if(0===I.havedict)return A.next_out=B,A.avail_out=Q,A.next_in=t,A.avail_in=C,I.hold=E,I.bits=s,WI;A.adler=I.check=1,I.mode=ie;case ie:if(g===VI||g===ZI)break A;case te:if(I.last){E>>>=7&s,s-=7&s,I.mode=Ee;break}for(;s<3;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}switch(I.last=1&E,E>>>=1,s-=1,3&E){case 0:I.mode=16193;break;case 1:if(ye(I),I.mode=Ce,g===ZI){E>>>=2,s-=2;break A}break;case 2:I.mode=16196;break;case 3:A.msg="invalid block type",I.mode=se}E>>>=2,s-=2;break;case 16193:for(E>>>=7&s,s-=7&s;s<32;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if((65535&E)!=(E>>>16^65535)){A.msg="invalid stored block lengths",I.mode=se;break}if(I.length=65535&E,E=0,s=0,I.mode=Be,g===ZI)break A;case Be:I.mode=16195;case 16195:if(r=I.length,r){if(r>C&&(r=C),r>Q&&(r=Q),0===r)break A;i.set(e.subarray(t,t+r),B),C-=r,t+=r,Q-=r,B+=r,I.length-=r;break}I.mode=ie;break;case 16196:for(;s<14;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(I.nlen=257+(31&E),E>>>=5,s-=5,I.ndist=1+(31&E),E>>>=5,s-=5,I.ncode=4+(15&E),E>>>=4,s-=4,I.nlen>286||I.ndist>30){A.msg="too many length or distance symbols",I.mode=se;break}I.have=0,I.mode=16197;case 16197:for(;I.have<I.ncode;){for(;s<3;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}I.lens[k[I.have++]]=7&E,E>>>=3,s-=3}for(;I.have<19;)I.lens[k[I.have++]]=0;if(I.lencode=I.lendyn,I.lenbits=7,N={bits:I.lenbits},u=PI(0,I.lens,0,19,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid code lengths set",I.mode=se;break}I.have=0,I.mode=16198;case 16198:for(;I.have<I.nlen+I.ndist;){for(;S=I.lencode[E&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,D=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(D<16)E>>>=l,s-=l,I.lens[I.have++]=D;else{if(16===D){for(F=l+2;s<F;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(E>>>=l,s-=l,0===I.have){A.msg="invalid bit length repeat",I.mode=se;break}f=I.lens[I.have-1],r=3+(3&E),E>>>=2,s-=2}else if(17===D){for(F=l+3;s<F;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}E>>>=l,s-=l,f=0,r=3+(7&E),E>>>=3,s-=3}else{for(F=l+7;s<F;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}E>>>=l,s-=l,f=0,r=11+(127&E),E>>>=7,s-=7}if(I.have+r>I.nlen+I.ndist){A.msg="invalid bit length repeat",I.mode=se;break}for(;r--;)I.lens[I.have++]=f}}if(I.mode===se)break;if(0===I.lens[256]){A.msg="invalid code -- missing end-of-block",I.mode=se;break}if(I.lenbits=9,N={bits:I.lenbits},u=PI(1,I.lens,0,I.nlen,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid literal/lengths set",I.mode=se;break}if(I.distbits=6,I.distcode=I.distdyn,N={bits:I.distbits},u=PI(2,I.lens,I.nlen,I.ndist,I.distcode,0,I.work,N),I.distbits=N.bits,u){A.msg="invalid distances set",I.mode=se;break}if(I.mode=Ce,g===ZI)break A;case Ce:I.mode=Qe;case Qe:if(C>=6&&Q>=258){A.next_out=B,A.avail_out=Q,A.next_in=t,A.avail_in=C,I.hold=E,I.bits=s,JI(A,o),B=A.next_out,i=A.output,Q=A.avail_out,t=A.next_in,e=A.input,C=A.avail_in,E=I.hold,s=I.bits,I.mode===ie&&(I.back=-1);break}for(I.back=0;S=I.lencode[E&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,D=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(c&&!(240&c)){for(w=l,d=c,y=D;S=I.lencode[y+((E&(1<<w+d)-1)>>w)],l=S>>>24,c=S>>>16&255,D=65535&S,!(w+l<=s);){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}E>>>=w,s-=w,I.back+=w}if(E>>>=l,s-=l,I.back+=l,I.length=D,0===c){I.mode=16205;break}if(32&c){I.back=-1,I.mode=ie;break}if(64&c){A.msg="invalid literal/length code",I.mode=se;break}I.extra=15&c,I.mode=16201;case 16201:if(I.extra){for(F=I.extra;s<F;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}I.length+=E&(1<<I.extra)-1,E>>>=I.extra,s-=I.extra,I.back+=I.extra}I.was=I.length,I.mode=16202;case 16202:for(;S=I.distcode[E&(1<<I.distbits)-1],l=S>>>24,c=S>>>16&255,D=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(!(240&c)){for(w=l,d=c,y=D;S=I.distcode[y+((E&(1<<w+d)-1)>>w)],l=S>>>24,c=S>>>16&255,D=65535&S,!(w+l<=s);){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}E>>>=w,s-=w,I.back+=w}if(E>>>=l,s-=l,I.back+=l,64&c){A.msg="invalid distance code",I.mode=se;break}I.offset=D,I.extra=15&c,I.mode=16203;case 16203:if(I.extra){for(F=I.extra;s<F;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}I.offset+=E&(1<<I.extra)-1,E>>>=I.extra,s-=I.extra,I.back+=I.extra}if(I.offset>I.dmax){A.msg="invalid distance too far back",I.mode=se;break}I.mode=16204;case 16204:if(0===Q)break A;if(r=o-Q,I.offset>r){if(r=I.offset-r,r>I.whave&&I.sane){A.msg="invalid distance too far back",I.mode=se;break}r>I.wnext?(r-=I.wnext,n=I.wsize-r):n=I.wnext-r,r>I.length&&(r=I.length),h=I.window}else h=i,n=B-I.offset,r=I.length;r>Q&&(r=Q),Q-=r,I.length-=r;do{i[B++]=h[n++]}while(--r);0===I.length&&(I.mode=Qe);break;case 16205:if(0===Q)break A;i[B++]=I.length,Q--,I.mode=Qe;break;case Ee:if(I.wrap){for(;s<32;){if(0===C)break A;C--,E|=e[t++]<<s,s+=8}if(o-=Q,A.total_out+=o,I.total+=o,4&I.wrap&&o&&(A.adler=I.check=I.flags?GI(I.check,i,o,B-o):uI(I.check,i,o,B-o)),o=Q,4&I.wrap&&(I.flags?E:ae(E))!==I.check){A.msg="incorrect data check",I.mode=se;break}E=0,s=0}I.mode=16207;case 16207:if(I.wrap&&I.flags){for(;s<32;){if(0===C)break A;C--,E+=e[t++]<<s,s+=8}if(4&I.wrap&&E!==(4294967295&I.total)){A.msg="incorrect length check",I.mode=se;break}E=0,s=0}I.mode=16208;case 16208:u=jI;break A;case se:u=XI;break A;case 16210:return $I;default:return _I}return A.next_out=B,A.avail_out=Q,A.next_in=t,A.avail_in=C,I.hold=E,I.bits=s,(I.wsize||o!==A.avail_out&&I.mode<se&&(I.mode<Ee||g!==vI))&&fe(A,A.output,A.next_out,o-A.avail_out),a-=A.avail_in,o-=A.avail_out,A.total_in+=a,A.total_out+=o,I.total+=o,4&I.wrap&&o&&(A.adler=I.check=I.flags?GI(I.check,i,o,A.next_out-o):uI(I.check,i,o,A.next_out-o)),A.data_type=I.bits+(I.last?64:0)+(I.mode===ie?128:0)+(I.mode===Ce||I.mode===Be?256:0),(0===a&&0===o||g===vI)&&u===zI&&(u=Ae),u},inflateEnd:A=>{if(re(A))return _I;let g=A.state;return g.window&&(g.window=null),A.state=null,zI},inflateGetHeader:(A,g)=>{if(re(A))return _I;const I=A.state;return 2&I.wrap?(I.head=g,g.done=!1,zI):_I},inflateSetDictionary:(A,g)=>{const I=g.length;let e,i,t;return re(A)?_I:(e=A.state,0!==e.wrap&&e.mode!==ee?_I:e.mode===ee&&(i=1,i=uI(i,g,I,0),i!==e.check)?XI:(t=fe(A,g,I,I),t?(e.mode=16210,$I):(e.havedict=1,zI)))},inflateInfo:"pako inflate (from Nodeca project)"};var Se=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};const Ge=Object.prototype.toString,{Z_NO_FLUSH:Ne,Z_FINISH:Fe,Z_OK:ke,Z_STREAM_END:Re,Z_NEED_DICT:Ue,Z_STREAM_ERROR:Le,Z_DATA_ERROR:pe,Z_MEM_ERROR:Me}=FI;function Ye(A){this.options=RI({chunkSize:65536,windowBits:15,to:""},A||{});const g=this.options;g.raw&&g.windowBits>=0&&g.windowBits<16&&(g.windowBits=-g.windowBits,0===g.windowBits&&(g.windowBits=-15)),!(g.windowBits>=0&&g.windowBits<16)||A&&A.windowBits||(g.windowBits+=32),g.windowBits>15&&g.windowBits<48&&(15&g.windowBits||(g.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new KI,this.strm.avail_out=0;let I=ue.inflateInit2(this.strm,g.windowBits);if(I!==ke)throw new Error(NI[I]);if(this.header=new Se,ue.inflateGetHeader(this.strm,this.header),g.dictionary&&("string"==typeof g.dictionary?g.dictionary=MI(g.dictionary):"[object ArrayBuffer]"===Ge.call(g.dictionary)&&(g.dictionary=new Uint8Array(g.dictionary)),g.raw&&(I=ue.inflateSetDictionary(this.strm,g.dictionary),I!==ke)))throw new Error(NI[I])}Ye.prototype.push=function(A,g){const I=this.strm,e=this.options.chunkSize,i=this.options.dictionary;let t,B,C;if(this.ended)return!1;for(B=g===~~g?g:!0===g?Fe:Ne,"[object ArrayBuffer]"===Ge.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;){for(0===I.avail_out&&(I.output=new Uint8Array(e),I.next_out=0,I.avail_out=e),t=ue.inflate(I,B),t===Ue&&i&&(t=ue.inflateSetDictionary(I,i),t===ke?t=ue.inflate(I,B):t===pe&&(t=Ue));I.avail_in>0&&t===Re&&I.state.wrap>0&&0!==A[I.next_in];)ue.inflateReset(I),t=ue.inflate(I,B);switch(t){case Le:case pe:case Ue:case Me:return this.onEnd(t),this.ended=!0,!1}if(C=I.avail_out,I.next_out&&(0===I.avail_out||t===Re))if("string"===this.options.to){let A=mI(I.output,I.next_out),g=I.next_out-A,i=YI(I.output,A);I.next_out=g,I.avail_out=e-g,g&&I.output.set(I.output.subarray(A,A+g),0),this.onData(i)}else this.onData(I.output.length===I.next_out?I.output:I.output.subarray(0,I.next_out));if(t!==ke||0!==C){if(t===Re)return t=ue.inflateEnd(this.strm),this.onEnd(t),this.ended=!0,!0;if(0===I.avail_in)break}}return!0},Ye.prototype.onData=function(A){this.chunks.push(A)},Ye.prototype.onEnd=function(A){A===ke&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=UI(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var me={inflate:function(A,g){const I=new Ye(g);if(I.push(A),I.err)throw I.msg||NI[I.err];return I.result}};const{inflate:Ke}=me;var He=Ke;var Je=Object.freeze({__proto__:null,default:class extends Dg{decodeBlock(A){return He(new Uint8Array(A)).buffer}}});var be=Object.freeze({__proto__:null,default:class extends Dg{decodeBlock(A){const g=new DataView(A),I=[];for(let e=0;e<A.byteLength;++e){let A=g.getInt8(e);if(A<0){const i=g.getUint8(e+1);A=-A;for(let g=0;g<=A;++g)I.push(i);e+=1}else{for(let i=0;i<=A;++i)I.push(g.getUint8(e+i+1));e+=A+1}}return new Uint8Array(I).buffer}}});function qe(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var xe,Te={exports:{}};var Oe,Pe=(xe||(xe=1,Oe=Te,
|
|
1
|
+
import{CompositeLayer as A,log as g,COORDINATE_SYSTEM as I}from"@deck.gl/core";import{TileLayer as C}from"@deck.gl/geo-layers";import{BitmapLayer as e}from"@deck.gl/layers";import{_TerrainExtension as i}from"@deck.gl/extensions";import B from"chroma-js";import{getMeshBoundingBox as t}from"@loaders.gl/schema";import{concatenateTypedArrays as Q}from"@loaders.gl/loader-utils";import{SimpleMeshLayer as s}from"@deck.gl/mesh-layers";let o=!1;function a(){"undefined"==typeof window||o||(window.addEventListener("unhandledrejection",A=>{A.reason&&"AbortError"===A.reason.name&&A.preventDefault()}),o=!0)}function E(A){return(g,...I)=>n(A,g,I)}function r(A,g){return E(h(A,g).get)}const{apply:n,getOwnPropertyDescriptor:h,getPrototypeOf:l,ownKeys:c}=Reflect,{iterator:w,toStringTag:D}=Symbol,d=Object,{create:y,defineProperty:G}=d,u=Array.prototype[w],S=E(u),f=ArrayBuffer;r(f.prototype,"byteLength");const N="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;N&&r(N.prototype,"byteLength");const k=l(Uint8Array);k.from;const R=k.prototype;R[w],E(R.keys),E(R.values),E(R.entries),E(R.set),E(R.reverse),E(R.fill),E(R.copyWithin),E(R.sort),E(R.slice),E(R.subarray),r(R,"buffer"),r(R,"byteOffset"),r(R,"length"),r(R,D);const F=Uint8Array,p=Uint16Array,L=Uint32Array,Y=Float32Array,U=l([][w]()),m=E(U.next),M=E(function*(){}().next),b=l(U),K=E(DataView.prototype.getUint16),H=WeakMap,J=H.prototype,x=E(J.get),Z=E(J.set),T=new H,q=y(null,{next:{value:function(){const A=x(T,this);return m(A)}},[w]:{value:function(){return this}}});const O=new H,W=y(b,{next:{value:function(){const A=x(O,this);return M(A)},writable:!0,configurable:!0}});for(const A of c(U))"next"!==A&&G(W,A,h(U,A));const V=new f(4),v=new Y(V),z=new L(V),X=new p(512),P=new F(512);for(let A=0;A<256;++A){const g=A-127;g<-24?(X[A]=0,X[256|A]=32768,P[A]=24,P[256|A]=24):g<-14?(X[A]=1024>>-g-14,X[256|A]=1024>>-g-14|32768,P[A]=-g-1,P[256|A]=-g-1):g<=15?(X[A]=g+15<<10,X[256|A]=g+15<<10|32768,P[A]=13,P[256|A]=13):g<128?(X[A]=31744,X[256|A]=64512,P[A]=24,P[256|A]=24):(X[A]=31744,X[256|A]=64512,P[A]=13,P[256|A]=13)}const j=new L(2048);for(let A=1;A<1024;++A){let g=A<<13,I=0;for(;!(8388608&g);)g<<=1,I-=8388608;g&=-8388609,I+=947912704,j[A]=g|I}for(let A=1024;A<2048;++A)j[A]=939524096+(A-1024<<13);const _=new L(64);for(let A=1;A<31;++A)_[A]=A<<23;_[31]=1199570944,_[32]=2147483648;for(let A=33;A<63;++A)_[A]=2147483648+(A-32<<23);_[63]=3347054592;const $=new p(64);for(let A=1;A<64;++A)32!==A&&($[A]=1024);function AA(A,g,...I){return function(A){const g=A>>10;return z[0]=j[$[g]+(1023&A)]+_[g],v[0]}(K(A,g,...function(A){if(A[w]===u&&U.next===m)return A;const g=y(q);return Z(T,g,S(A)),g}(I)))}function gA(A,g,I){const C="object"==typeof A?A.outer:A,e=C.slice(0,C.indexOf(">")+1),i=['"',"'"];for(let A=0;A<i.length;A++){const I=i[A],C=new RegExp(g+"\\="+I+"([^"+I+"]*)"+I).exec(e);if(C)return C[1]}}function IA(A,g,I){const C=new RegExp(g).exec(A.slice(I));return C?I+C.index+C[0].length-1:-1}function CA(A,g){const I=new RegExp(g,"g"),C=A.match(I);return C?C.length:0}function eA(A,g,I){const C=I&&I.debug||!1,e=!(I&&!1===typeof I.nested),i=I&&I.startIndex||0;C&&console.log("[xml-utils] starting findTagByName with",g," and ",I);const B=function(A,g,I){const C=new RegExp(g).exec(A.slice(I));return C?I+C.index:-1}(A,`<${g}[ \n>/]`,i);if(C&&console.log("[xml-utils] start:",B),-1===B)return;const t=A.slice(B+g.length);let Q=IA(t,"^[^<]*[ /]>",0);const s=-1!==Q&&"/"===t[Q-1];if(C&&console.log("[xml-utils] selfClosing:",s),!1===s)if(e){let A=0,I=1,C=0;for(;-1!==(Q=IA(t,"[ /]"+g+">",A));){const e=t.substring(A,Q+1);if(I+=CA(e,"<"+g+"[ \n\t>]"),C+=CA(e,"</"+g+">"),C>=I)break;A=Q}}else Q=IA(t,"[ /]"+g+">",0);const o=B+g.length+Q+1;if(C&&console.log("[xml-utils] end:",o),-1===o)return;const a=A.slice(B,o);let E;return E=s?null:a.slice(a.indexOf(">")+1,a.lastIndexOf("<")),{inner:E,outer:a,start:B,end:o}}const iA={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,SBYTE:6,UNDEFINED:7,SSHORT:8,SLONG:9,SRATIONAL:10,FLOAT:11,DOUBLE:12,IFD:13,LONG8:16,SLONG8:17,IFD8:18},BA={[iA.BYTE]:1,[iA.ASCII]:1,[iA.SBYTE]:1,[iA.UNDEFINED]:1,[iA.SHORT]:2,[iA.SSHORT]:2,[iA.LONG]:4,[iA.SLONG]:4,[iA.FLOAT]:4,[iA.IFD]:4,[iA.RATIONAL]:8,[iA.SRATIONAL]:8,[iA.DOUBLE]:8,[iA.LONG8]:8,[iA.SLONG8]:8,[iA.IFD8]:8};function tA(A){const g=BA[A];if(void 0===g)throw new RangeError(`Invalid field type: ${A}`);return g}const QA={NewSubfileType:{tag:254,type:iA.LONG,eager:!0},SubfileType:{tag:255,type:iA.SHORT,eager:!0},ImageWidth:{tag:256,type:iA.SHORT,eager:!0},ImageLength:{tag:257,type:iA.SHORT,eager:!0},BitsPerSample:{tag:258,type:iA.SHORT,isArray:!0,eager:!0},Compression:{tag:259,type:iA.SHORT,eager:!0},PhotometricInterpretation:{tag:262,type:iA.SHORT,eager:!0},Threshholding:{tag:263,type:iA.SHORT},CellWidth:{tag:264,type:iA.SHORT},CellLength:{tag:265,type:iA.SHORT},FillOrder:{tag:266,type:iA.SHORT},DocumentName:{tag:269,type:iA.ASCII},ImageDescription:{tag:270,type:iA.ASCII},Make:{tag:271,type:iA.ASCII},Model:{tag:272,type:iA.ASCII},StripOffsets:{tag:273,type:iA.SHORT,isArray:!0},Orientation:{tag:274,type:iA.SHORT},SamplesPerPixel:{tag:277,type:iA.SHORT,eager:!0},RowsPerStrip:{tag:278,type:iA.SHORT,eager:!0},StripByteCounts:{tag:279,type:iA.LONG,isArray:!0},MinSampleValue:{tag:280,type:iA.SHORT,isArray:!0},MaxSampleValue:{tag:281,type:iA.SHORT,isArray:!0},XResolution:{tag:282,type:iA.RATIONAL},YResolution:{tag:283,type:iA.RATIONAL},PlanarConfiguration:{tag:284,type:iA.SHORT,eager:!0},PageName:{tag:285,type:iA.ASCII},XPosition:{tag:286,type:iA.RATIONAL},YPosition:{tag:287,type:iA.RATIONAL},FreeOffsets:{tag:288,type:iA.LONG},FreeByteCounts:{tag:289,type:iA.LONG},GrayResponseUnit:{tag:290,type:iA.SHORT},GrayResponseCurve:{tag:291,type:iA.SHORT,isArray:!0},T4Options:{tag:292,type:iA.LONG},T6Options:{tag:293,type:iA.LONG},ResolutionUnit:{tag:296,type:iA.SHORT},PageNumber:{tag:297,type:iA.SHORT,isArray:!0},TransferFunction:{tag:301,type:iA.SHORT,isArray:!0},Software:{tag:305,type:iA.ASCII},DateTime:{tag:306,type:iA.ASCII},Artist:{tag:315,type:iA.ASCII},HostComputer:{tag:316,type:iA.ASCII},Predictor:{tag:317,type:iA.SHORT},WhitePoint:{tag:318,type:iA.RATIONAL,isArray:!0},PrimaryChromaticities:{tag:319,type:iA.RATIONAL,isArray:!0},ColorMap:{tag:320,type:iA.SHORT,isArray:!0},HalftoneHints:{tag:321,type:iA.SHORT,isArray:!0},TileWidth:{tag:322,type:iA.SHORT,eager:!0},TileLength:{tag:323,type:iA.SHORT,eager:!0},TileOffsets:{tag:324,type:iA.LONG,isArray:!0},TileByteCounts:{tag:325,type:iA.SHORT,isArray:!0},InkSet:{tag:332,type:iA.SHORT},InkNames:{tag:333,type:iA.ASCII},NumberOfInks:{tag:334,type:iA.SHORT},DotRange:{tag:336,type:iA.BYTE,isArray:!0},TargetPrinter:{tag:337,type:iA.ASCII},ExtraSamples:{tag:338,type:iA.BYTE,isArray:!0,eager:!0},SampleFormat:{tag:339,type:iA.SHORT,isArray:!0,eager:!0},SMinSampleValue:{tag:340,isArray:!0},SMaxSampleValue:{tag:341,isArray:!0},TransferRange:{tag:342,type:iA.SHORT,isArray:!0},JPEGProc:{tag:512,type:iA.SHORT},JPEGInterchangeFormat:{tag:513,type:iA.LONG},JPEGInterchangeFormatLngth:{tag:514,type:iA.LONG},JPEGRestartInterval:{tag:515,type:iA.SHORT},JPEGLosslessPredictors:{tag:517,type:iA.SHORT,isArray:!0},JPEGPointTransforms:{tag:518,type:iA.SHORT,isArray:!0},JPEGQTables:{tag:519,type:iA.LONG,isArray:!0},JPEGDCTables:{tag:520,type:iA.LONG,isArray:!0},JPEGACTables:{tag:521,type:iA.LONG,isArray:!0},YCbCrCoefficients:{tag:529,type:iA.RATIONAL,isArray:!0},YCbCrSubSampling:{tag:530,type:iA.SHORT,isArray:!0},YCbCrPositioning:{tag:531,type:iA.SHORT},ReferenceBlackWhite:{tag:532,type:iA.LONG,isArray:!0},Copyright:{tag:33432,type:iA.ASCII},BadFaxLines:{tag:326},CleanFaxData:{tag:327},ClipPath:{tag:343},ConsecutiveBadFaxLines:{tag:328},Decode:{tag:433},DefaultImageColor:{tag:434},Indexed:{tag:346},JPEGTables:{tag:347,isArray:!0,eager:!0},StripRowCounts:{tag:559,isArray:!0},SubIFDs:{tag:330,isArray:!0},XClipPathUnits:{tag:344},YClipPathUnits:{tag:345},ApertureValue:{tag:37378},ColorSpace:{tag:40961},DateTimeDigitized:{tag:36868},DateTimeOriginal:{tag:36867},ExifIFD:{tag:34665,name:"Exif IFD",type:iA.LONG},ExifVersion:{tag:36864},ExposureTime:{tag:33434},FileSource:{tag:41728},Flash:{tag:37385},FlashpixVersion:{tag:40960},FNumber:{tag:33437},ImageUniqueID:{tag:42016},LightSource:{tag:37384},MakerNote:{tag:37500},ShutterSpeedValue:{tag:37377},UserComment:{tag:37510},IPTC:{tag:33723},CZ_LSMINFO:{tag:34412},ICCProfile:{tag:34675,name:"ICC Profile"},XMP:{tag:700},GDAL_METADATA:{tag:42112},GDAL_NODATA:{tag:42113,type:iA.ASCII,eager:!0},Photoshop:{tag:34377},ModelPixelScale:{tag:33550,type:iA.DOUBLE,isArray:!0,eager:!0},ModelTiepoint:{tag:33922,type:iA.DOUBLE,isArray:!0,eager:!0},ModelTransformation:{tag:34264,type:iA.DOUBLE,isArray:!0,eager:!0},GeoKeyDirectory:{tag:34735,type:iA.SHORT,isArray:!0,eager:!0},GeoDoubleParams:{tag:34736,type:iA.DOUBLE,isArray:!0,eager:!0},GeoAsciiParams:{tag:34737,type:iA.ASCII,eager:!0},LercParameters:{tag:50674,eager:!0}},sA={},oA={};function aA(A,g,I,C=!1,e=!1){sA[g]=A,oA[A]={tag:A,name:g,type:"string"==typeof I?iA[I]:I,isArray:C,eager:e}}for(const[A,g]of Object.entries(QA)){const I=g;aA(I.tag,I.name||A,I.type,I.isArray,I.eager)}function EA(A){return"number"==typeof A?A:sA[A]}const rA=0,nA=1,hA=2,lA=3,cA=5,wA=6,DA=8,dA=0,yA=1,GA=0,uA=1,SA=2,fA={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};for(const[A,g]of Object.entries(fA));const NA=new Map;async function kA(A){const g=!A.hasTag("StripOffsets");return{tileWidth:g?await A.loadValue("TileWidth"):await A.loadValue("ImageWidth"),tileHeight:g?await A.loadValue("TileLength"):await A.loadValue("RowsPerStrip")||await A.loadValue("ImageLength"),planarConfiguration:await A.loadValue("PlanarConfiguration"),bitsPerSample:await A.loadValue("BitsPerSample"),predictor:await A.loadValue("Predictor")||1}}function RA(A,g,I=kA,C=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{NA.set(A,{importFn:g,decoderParameterFn:I,preferWorker:C})})}const FA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return oI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return rI}).then(A=>A.default)},{cases:6,importFn:()=>{throw new Error("old style JPEG compression is not supported.")}},{cases:7,importFn:()=>Promise.resolve().then(function(){return kI}).then(A=>A.default),decoderParameterFn:async A=>({...await kA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return OC}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return WC}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return ee}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await kA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return Ee}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return re}).then(A=>A.default),decoderParameterFn:async A=>({...await kA(A),samplesPerPixel:Number(await A.loadValue("SamplesPerPixel"))||4}),preferWorker:!1}];for(const A of FA){const{cases:g,importFn:I,decoderParameterFn:C,preferWorker:e}=A;RA(g,I,C,e)}function pA(A,g,I,C=1){return new(Object.getPrototypeOf(A).constructor)(g*I*C)}function LA(A,g,I){return(1-I)*A+I*g}function YA(A,g,I,C,e,i="nearest"){switch(i.toLowerCase()){case"nearest":return function(A,g,I,C,e){const i=g/C,B=I/e;return A.map(A=>{const t=pA(A,C,e);for(let Q=0;Q<e;++Q){const e=Math.min(Math.round(B*Q),I-1);for(let I=0;I<C;++I){const B=Math.min(Math.round(i*I),g-1),s=A[e*g+B];t[Q*C+I]=s}}return t})}(A,g,I,C,e);case"bilinear":case"linear":return function(A,g,I,C,e){const i=g/C,B=I/e;return A.map(A=>{const t=pA(A,C,e);for(let Q=0;Q<e;++Q){const e=B*Q,s=Math.floor(e),o=Math.min(Math.ceil(e),I-1);for(let I=0;I<C;++I){const B=i*I,a=B%1,E=Math.floor(B),r=Math.min(Math.ceil(B),g-1),n=A[s*g+E],h=A[s*g+r],l=A[o*g+E],c=A[o*g+r],w=LA(LA(n,h,a),LA(l,c,a),e%1);t[Q*C+I]=w}}return t})}(A,g,I,C,e);default:throw new Error(`Unsupported resampling method: '${i}'`)}}function UA(A,g,I,C,e,i,B="nearest"){switch(B.toLowerCase()){case"nearest":return function(A,g,I,C,e,i){const B=g/C,t=I/e,Q=pA(A,C,e,i);for(let s=0;s<e;++s){const e=Math.min(Math.round(t*s),I-1);for(let I=0;I<C;++I){const t=Math.min(Math.round(B*I),g-1);for(let B=0;B<i;++B){const o=A[e*g*i+t*i+B];Q[s*C*i+I*i+B]=o}}}return Q}(A,g,I,C,e,i);case"bilinear":case"linear":return function(A,g,I,C,e,i){const B=g/C,t=I/e,Q=pA(A,C,e,i);for(let s=0;s<e;++s){const e=t*s,o=Math.floor(e),a=Math.min(Math.ceil(e),I-1);for(let I=0;I<C;++I){const t=B*I,E=t%1,r=Math.floor(t),n=Math.min(Math.ceil(t),g-1);for(let B=0;B<i;++B){const t=A[o*g*i+r*i+B],h=A[o*g*i+n*i+B],l=A[a*g*i+r*i+B],c=A[a*g*i+n*i+B],w=LA(LA(t,h,E),LA(l,c,E),e%1);Q[s*C*i+I*i+B]=w}}}return Q}(A,g,I,C,e,i);default:throw new Error(`Unsupported resampling method: '${B}'`)}}function mA(A,g,I){let C=0;for(let e=g;e<I;++e)C+=A[e];return C}function MA(A,g,I){let C;switch(A){case 1:g<=8?C=Uint8Array:g<=16?C=Uint16Array:g<=32&&(C=Uint32Array);break;case 2:8===g?C=Int8Array:16===g?C=Int16Array:32===g&&(C=Int32Array);break;case 3:switch(g){case 16:case 32:C=Float32Array;break;case 64:C=Float64Array}}if(C){if("number"==typeof I)return new C(I);if(I instanceof ArrayBuffer)return new C(I)}throw Error("Unsupported data format/bitsPerSample")}class bA{constructor(A,g,I,C){this.fileDirectory=A,this.littleEndian=g,this.tiles=I?[]:null,this.isTiled=!A.hasTag("StripOffsets");const e=A.getValue("PlanarConfiguration")??1;if(1!==e&&2!==e)throw new Error("Invalid planar configuration.");this.planarConfiguration=e,this.source=C}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")||0}getHeight(){return this.fileDirectory.getValue("ImageLength")||0}getSamplesPerPixel(){return this.fileDirectory.getValue("SamplesPerPixel")??1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth")||0:this.getWidth()}getTileHeight(){if(this.isTiled)return this.fileDirectory.getValue("TileLength")||0;const A=this.fileDirectory.hasTag("RowsPerStrip")&&this.fileDirectory.getValue("RowsPerStrip");return A?Math.min(A,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;++I)A+=this.getSampleByteSize(I);return A}getSampleByteSize(A){const g=this.fileDirectory.getValue("BitsPerSample")||[];if(A>=g.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(g[A]/8)}getReaderForSample(A){const g=this.fileDirectory.getValue("SampleFormat"),I=g?g[A]:1,C=(this.fileDirectory.getValue("BitsPerSample")||[])[A];switch(I){case 1:if(C<=8)return DataView.prototype.getUint8;if(C<=16)return DataView.prototype.getUint16;if(C<=32)return DataView.prototype.getUint32;break;case 2:if(C<=8)return DataView.prototype.getInt8;if(C<=16)return DataView.prototype.getInt16;if(C<=32)return DataView.prototype.getInt32;break;case 3:switch(C){case 16:return function(A,g){return AA(this,A,g)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){const g=this.fileDirectory.getValue("SampleFormat");return g?g[A]:1}getBitsPerSample(A=0){const g=this.fileDirectory.getValue("BitsPerSample");return g?g[A]:0}getArrayForSample(A,g){return MA(this.getSampleFormat(A),this.getBitsPerSample(A),g)}async getTileOrStrip(A,g,I,C,e){const i=Math.ceil(this.getWidth()/this.getTileWidth()),B=Math.ceil(this.getHeight()/this.getTileHeight());let t;const{tiles:Q}=this;if(1===this.planarConfiguration?t=g*i+A:2===this.planarConfiguration&&(t=I*i*B+g*i+A),void 0===t)throw new Error("Could not determine tile or strip index.");let s,o;if(this.isTiled?(s=Number(await this.fileDirectory.loadValueIndexed("TileOffsets",t)),o=Number(await this.fileDirectory.loadValueIndexed("TileByteCounts",t))):(s=Number(await this.fileDirectory.loadValueIndexed("StripOffsets",t)),o=Number(await this.fileDirectory.loadValueIndexed("StripByteCounts",t))),0===o){const C=this.getBlockHeight(g)*this.getTileWidth(),e=2===this.planarConfiguration?this.getSampleByteSize(I):this.getBytesPerPixel(),i=new ArrayBuffer(C*e);return this.getArrayForSample(I,i).fill(this.getGDALNoData()||0),{x:A,y:g,sample:I,data:i}}const a=(await this.source.fetch([{offset:s,length:o}],e))[0];let E;return null!==Q&&Q[t]?E=Q[t]:(E=(async()=>{let A=await C.decode(a);const I=this.getSampleFormat(),e=this.getBitsPerSample();return function(A,g){return(1!==A&&2!==A||!(g<=32)||g%8!=0)&&(3!==A||16!==g&&32!==g&&64!==g)}(I,e)&&(A=function(A,g,I,C,e,i,B){const t=new DataView(A),Q=2===I?1:C,s=MA(g,e,2===I?B*i:B*i*C),o=parseInt("1".repeat(e),2);if(1===g){let A;A=1===I?C*e:e;let g=i*A;7&g&&(g=g+7&-8);for(let A=0;A<B;++A){const I=A*g;for(let g=0;g<i;++g){const C=I+g*Q*e;for(let I=0;I<Q;++I){const B=C+I*e,a=(A*i+g)*Q+I,E=Math.floor(B/8),r=B%8;if(r+e<=8)s[a]=t.getUint8(E)>>8-e-r&o;else if(r+e<=16)s[a]=t.getUint16(E)>>16-e-r&o;else if(r+e<=24){const A=t.getUint16(E)<<8|t.getUint8(E+2);s[a]=A>>24-e-r&o}else s[a]=t.getUint32(E)>>32-e-r&o}}}}return s.buffer}(A,I,this.planarConfiguration,this.getSamplesPerPixel(),e,this.getTileWidth(),this.getBlockHeight(g))),A})(),null!==Q&&(Q[t]=E)),{x:A,y:g,sample:I,data:await E}}async _readRaster(A,g,I,C,e,i,B,t,Q){const s=this.getTileWidth(),o=this.getTileHeight(),a=this.getWidth(),E=this.getHeight(),r=Math.max(Math.floor(A[0]/s),0),n=Math.min(Math.ceil(A[2]/s),Math.ceil(a/s)),h=Math.max(Math.floor(A[1]/o),0),l=Math.min(Math.ceil(A[3]/o),Math.ceil(E/o)),c=A[2]-A[0];let w=this.getBytesPerPixel();const D=[],d=[];for(let A=0;A<g.length;++A){if(1===this.planarConfiguration){const I=await this.fileDirectory.loadValue("BitsPerSample");if("object"!=typeof I)throw new Error("Expected BitsPerSample to be an array or typed array.");D.push(mA(I,0,g[A])/8)}else D.push(0);d.push(this.getReaderForSample(g[A]))}const y=[],{littleEndian:G}=this;for(let i=h;i<l;++i)for(let B=r;B<n;++B){let t;1===this.planarConfiguration&&(t=this.getTileOrStrip(B,i,0,e,Q));for(let r=0;r<g.length;++r){const n=r,h=g[r];if(2===this.planarConfiguration&&(w=this.getSampleByteSize(h),t=this.getTileOrStrip(B,i,h,e,Q)),!t)throw new Error("Could not get tile or strip data.");const l=t.then(e=>{const i=e.data,B=new DataView(i),t=this.getBlockHeight(e.y),Q=e.y*o,r=e.x*s,h=Q+t,l=(e.x+1)*s,y=d[n],u=Math.min(t,t-(h-A[3]),E-Q),S=Math.min(s,s-(l-A[2]),a-r);for(let e=Math.max(0,A[1]-Q);e<u;++e)for(let i=Math.max(0,A[0]-r);i<S;++i){const t=(e*s+i)*w,o=y.call(B,t+D[n],G);let a;C?(a=(e+Q-A[1])*c*g.length+(i+r-A[0])*g.length+n,I[a]=o):(a=(e+Q-A[1])*c+i+r-A[0],I[n][a]=o)}});y.push(l)}}if(await Promise.all(y),i&&A[2]-A[0]!==i||B&&A[3]-A[1]!==B){let e;e=C?UA(I,A[2]-A[0],A[3]-A[1],i,B,g.length,t):YA(I,A[2]-A[0],A[3]-A[1],i,B,t);const Q=e;return Q.width=i??A[2]-A[0],Q.height=B??A[3]-A[1],Q}const u=I;return u.width=i||A[2]-A[0],u.height=B||A[3]-A[1],u}async readRasters(A={}){const{window:g,samples:I=[],pool:C=null,width:e,height:i,resampleMethod:B,fillValue:t,signal:Q}=A,s="interleave"in A&&A.interleave,o=g||[0,0,this.getWidth(),this.getHeight()];if(o[0]>o[2]||o[1]>o[3])throw new Error("Invalid subsets");const a=(o[2]-o[0])*(o[3]-o[1]),E=this.getSamplesPerPixel();if(I&&I.length){for(let A=0;A<I.length;++A)if(I[A]>=E)return Promise.reject(new RangeError(`Invalid sample index '${I[A]}'.`))}else for(let A=0;A<E;++A)I.push(A);let r;if(s){const{fileDirectory:A}=this,g=A.getValue("SampleFormat"),C=g?Math.max.apply(null,Array.from(g)):1;if(1!==C&&2!==C&&3!==C)throw new Error("Unsupported sample format for interleaved data. Must be 1, 2, or 3.");const e=A.getValue("BitsPerSample");if(r=MA(C,e?Math.max.apply(null,Array.from(e)):8,a*I.length),t){if(Array.isArray(t))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(t)}}else{r=[];for(let A=0;A<I.length;++A){const g=this.getArrayForSample(I[A],a);Array.isArray(t)&&A<t.length?g.fill(t[A]):t&&!Array.isArray(t)&&g.fill(t),r.push(g)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,g){if(!NA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:I}=NA.get(A);return I(g)}(n,this.fileDirectory),l=C?C.bindParameters(n,h):await async function(A,g){if(!NA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:I}=NA.get(A);return new(await I())(g)}(n,h);return await this._readRaster(o,I,r,s,l,e,i,B,Q)}async readRGB(A={}){const{window:g,pool:I=null,width:C,height:e,resampleMethod:i,enableAlpha:B=!1,signal:t}=A,Q=("interleave"in A&&A.interleave)??!1,s=g||[0,0,this.getWidth(),this.getHeight()];if(s[0]>s[2]||s[1]>s[3])throw new Error("Invalid subsets");const o=this.fileDirectory.getValue("PhotometricInterpretation");if(o===hA){let A=[0,1,2];const s=this.fileDirectory.getValue("ExtraSamples");if(s&&s[0]!==dA&&B){A=[];const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;I+=1)A.push(I)}return this.readRasters({window:g,interleave:Q,samples:A,pool:I,width:C,height:e,resampleMethod:i,signal:t})}let a;switch(o){case rA:case nA:case lA:a=[0];break;case cA:a=[0,1,2,3];break;case wA:case DA:a=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const E={window:s,interleave:!0,samples:a,pool:I,width:C,height:e,resampleMethod:i,signal:t},{fileDirectory:r}=this,n=await this.readRasters(E),h=2**this.getBitsPerSample(0);let l;switch(o){case rA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3);let i;for(let I=0,C=0;I<A.length;++I,C+=3)i=256-A[I]/g*256,e[C]=i,e[C+1]=i,e[C+2]=i;return e}(n,h);break;case nA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3);let i;for(let I=0,C=0;I<A.length;++I,C+=3)i=A[I]/g*256,e[C]=i,e[C+1]=i,e[C+2]=i;return e}(n,h);break;case lA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3),i=g.length/3,B=g.length/3*2;for(let I=0,C=0;I<A.length;++I,C+=3){const t=A[I];e[C]=g[t]/65536*256,e[C+1]=g[t+i]/65536*256,e[C+2]=g[t+B]/65536*256}return e}(n,await r.loadValue("ColorMap"));break;case cA:l=function(A){const{width:g,height:I}=A,C=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=4,I+=3){const e=A[g],i=A[g+1],B=A[g+2],t=A[g+3];C[I]=(255-e)/256*255*((255-t)/256),C[I+1]=(255-i)/256*255*((255-t)/256),C[I+2]=(255-B)/256*255*((255-t)/256)}return C}(n);break;case wA:l=function(A){const{width:g,height:I}=A,C=new Uint8ClampedArray(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){const e=A[g],i=A[g+1],B=A[g+2];C[I]=e+1.402*(B-128),C[I+1]=e-.34414*(i-128)-.71414*(B-128),C[I+2]=e+1.772*(i-128)}return C}(n);break;case DA:l=function(A){const{width:g,height:I}=A,C=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){let e,i,B,t=(A[g+0]+16)/116,Q=(A[g+1]<<24>>24)/500+t,s=t-(A[g+2]<<24>>24)/200;Q=.95047*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),t=1*(t*t*t>.008856?t*t*t:(t-16/116)/7.787),s=1.08883*(s*s*s>.008856?s*s*s:(s-16/116)/7.787),e=3.2406*Q+-1.5372*t+-.4986*s,i=-.9689*Q+1.8758*t+.0415*s,B=.0557*Q+-.204*t+1.057*s,e=e>.0031308?1.055*e**(1/2.4)-.055:12.92*e,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,C[I]=255*Math.max(0,Math.min(1,e)),C[I+1]=255*Math.max(0,Math.min(1,i)),C[I+2]=255*Math.max(0,Math.min(1,B))}return C}(n);break;default:throw new Error("Unsupported photometric interpretation.")}if(!Q){const A=new Uint8Array(l.length/3),g=new Uint8Array(l.length/3),I=new Uint8Array(l.length/3);for(let C=0,e=0;C<l.length;C+=3,++e)A[e]=l[C],g[e]=l[C+1],I[e]=l[C+2];l=[A,g,I]}const c=l;return c.width=n.width,c.height=n.height,c}async getTiePoints(){if(!this.fileDirectory.hasTag("ModelTiepoint"))return[];const A=await this.fileDirectory.loadValue("ModelTiepoint");if("object"!=typeof A)throw new Error("Expected ModelTiepoint to be an array or typed array.");const g=[];for(let I=0;I<A.length;I+=6)g.push({i:A[I],j:A[I+1],k:A[I+2],x:A[I+3],y:A[I+4],z:A[I+5]});return g}async getGDALMetadata(A=null){const g={};if(!this.fileDirectory.hasTag("GDAL_METADATA"))return null;let I=function(A,g){const I=[];let C,e=0;for(;C=eA(A,g,{debug:!1,startIndex:e});)e=C.start+1+g.length,I.push(C);return I}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");I=null===A?I.filter(A=>void 0===gA(A,"sample")):I.filter(g=>Number(gA(g,"sample"))===A);for(let A=0;A<I.length;++A){const C=I[A];g[gA(C,"name")]=C.inner}return g}getGDALNoData(){const A=this.fileDirectory.hasTag("GDAL_NODATA")&&this.fileDirectory.getValue("GDAL_NODATA");return A?Number(A.substring(0,A.length-1)):null}getOrigin(){const A=this.fileDirectory.getValue("ModelTiepoint"),g=this.fileDirectory.getValue("ModelTransformation");if(A&&6===A.length)return[A[3],A[4],A[5]];if(g)return[g[3],g[7],g[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const g=this.fileDirectory.getValue("ModelPixelScale"),I=this.fileDirectory.getValue("ModelTransformation");if(g)return[g[0],-g[1],g[2]];if(I)return 0===I[1]&&0===I[4]?[I[0],-I[5],I[10]]:[Math.sqrt(I[0]*I[0]+I[4]*I[4]),-Math.sqrt(I[1]*I[1]+I[5]*I[5]),I[10]];if(A){const[g,I,C]=A.getResolution();return[g*A.getWidth()/this.getWidth(),I*A.getHeight()/this.getHeight(),C*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.getGeoKeys()?.GTRasterTypeGeoKey}getBoundingBox(A=!1){const g=this.getHeight(),I=this.getWidth(),C=this.fileDirectory.getValue("ModelTransformation");if(C&&!A){const[A,e,,i,B,t,,Q]=C,s=[[0,0],[0,g],[I,0],[I,g]].map(([g,I])=>[i+A*g+e*I,Q+B*g+t*I]),o=s.map(A=>A[0]),a=s.map(A=>A[1]);return[Math.min(...o),Math.min(...a),Math.max(...o),Math.max(...a)]}{const A=this.getOrigin(),C=this.getResolution(),e=A[0],i=A[1],B=e+C[0]*I,t=i+C[1]*g;return[Math.min(e,B),Math.min(i,t),Math.max(e,B),Math.max(i,t)]}}}class KA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,g){const I=this.getUint32(A,g),C=this.getUint32(A+4,g);let e;if(g){if(e=I+2**32*C,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*I+C,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}getInt64(A,g){let I=0;const C=(128&this._dataView.getUint8(A+(g?7:0)))>0;let e=!0;for(let i=0;i<8;i++){let B=this._dataView.getUint8(A+(g?i:7-i));C&&(e?0!==B&&(B=255&~(B-1),e=!1):B=255&~B),I+=B*256**i}return C&&(I=-I),I}getUint8(A){return this._dataView.getUint8(A)}getInt8(A){return this._dataView.getInt8(A)}getUint16(A,g){return this._dataView.getUint16(A,g)}getInt16(A,g){return this._dataView.getInt16(A,g)}getUint32(A,g){return this._dataView.getUint32(A,g)}getInt32(A,g){return this._dataView.getInt32(A,g)}getFloat16(A,g){return AA(this._dataView,A,g)}getFloat32(A,g){return this._dataView.getFloat32(A,g)}getFloat64(A,g){return this._dataView.getFloat64(A,g)}}class HA{constructor(A,g,I,C){this._dataView=new DataView(A),this._sliceOffset=g,this._littleEndian=I,this._bigTiff=C}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,g){return this.sliceOffset<=A&&this.sliceTop>=A+g}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const g=this.readUint32(A),I=this.readUint32(A+4);let C;if(this._littleEndian){if(C=g+2**32*I,!Number.isSafeInteger(C))throw new Error(`${C} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return C}if(C=2**32*g+I,!Number.isSafeInteger(C))throw new Error(`${C} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return C}readInt64(A){let g=0;const I=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let C=!0;for(let e=0;e<8;e++){let i=this._dataView.getUint8(A+(this._littleEndian?e:7-e));I&&(C?0!==i&&(i=255&~(i-1),C=!1):i=255&~i),g+=i*256**e}return I&&(g=-g),g}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const JA="\r\n\r\n";function xA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const g={};for(const[I,C]of A)g[I.toLowerCase()]=C;return g}function ZA(A){return xA(A.split("\r\n").map(A=>{const g=A.split(":").map(A=>A.trim());return g[0]=g[0].toLowerCase(),g}))}function TA(A){let g=NaN,I=NaN,C=NaN;return A&&([,g,I,C]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:g,end:I,total:C}}class qA{async fetch(A,g){return Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data))}async fetchSlice(A,g){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class OA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[g,I]of A)this.onEviction(g,I.value)}_deleteIfExpired(A,g){return"number"==typeof g.expiry&&g.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,g.value),this.delete(A))}_getOrDeleteIfExpired(A,g){if(!1===this._deleteIfExpired(A,g))return g.value}_getItemValue(A,g){return g.expiry?this._getOrDeleteIfExpired(A,g):g.value}_peek(A,g){const I=g.get(A);return this._getItemValue(A,I)}_set(A,g){this.cache.set(A,g),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,g){this.oldCache.delete(A),this._set(A,g)}*_entriesAscending(){for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield A)}}for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield A)}}get(A){if(this.cache.has(A)){const g=this.cache.get(A);return this._getItemValue(A,g)}if(this.oldCache.has(A)){const g=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,g))return this._moveToRecent(A,g),g.value}}set(A,g,{maxAge:I=this.maxAge}={}){const C="number"==typeof I&&I!==Number.POSITIVE_INFINITY?Date.now()+I:void 0;return this.cache.has(A)?this.cache.set(A,{value:g,expiry:C}):this._set(A,{value:g,expiry:C}),this}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const g=this.cache.delete(A);return g&&this._size--,this.oldCache.delete(A)||g}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const g=[...this._entriesAscending()],I=g.length-A;I<0?(this.cache=new Map(g),this.oldCache=new Map,this._size=g.length):(I>0&&this._emitEvictions(g.slice(0,I)),this.oldCache=new Map(g.slice(I)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}}}*entriesDescending(){let A=[...this.cache];for(let g=A.length-1;g>=0;--g){const I=A[g],[C,e]=I;!1===this._deleteIfExpired(C,e)&&(yield[C,e.value])}A=[...this.oldCache];for(let g=A.length-1;g>=0;--g){const I=A[g],[C,e]=I;if(!this.cache.has(C)){!1===this._deleteIfExpired(C,e)&&(yield[C,e.value])}}}*entriesAscending(){for(const[A,g]of this._entriesAscending())yield[A,g.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const g of this.oldCache.keys())this.cache.has(g)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,g=this){for(const[I,C]of this.entriesAscending())A.call(g,C,I,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class WA extends Error{constructor(...A){super(...A),Error.captureStackTrace&&Error.captureStackTrace(this,WA),this.name="AbortError",this.signal=void 0}}class VA extends Error{constructor(A,g){super(g),this.errors=A,this.message=g,this.name="AggregateError"}}const vA=VA;class zA{constructor(A,g,I){this.offset=A,this.length=g,this.data=I}get top(){return this.offset+this.length}}class XA{constructor(A,g,I){this.offset=A,this.length=g,this.blockIds=I}}class PA extends qA{constructor(A,{blockSize:g=65536,cacheSize:I=100}={}){super(),this.source=A,this.blockSize=g,this.blockCache=new OA({maxSize:I,onEviction:(A,g)=>{this.evictedBlocks.set(A,g)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,g){const I=[],C=[],e=[];this.evictedBlocks.clear();for(const{offset:g,length:i}of A){let A=g+i;const{fileSize:B}=this;null!==B&&(A=Math.min(A,B));for(let i=Math.floor(g/this.blockSize)*this.blockSize;i<A;i+=this.blockSize){const A=Math.floor(i/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),C.push(A)),this.blockRequests.has(A)&&I.push(this.blockRequests.get(A)),e.push(A)}}await async function(A){return new Promise(g=>setTimeout(g,A))}(),this.fetchBlocks(g);const i=[];for(const A of C)this.blockRequests.has(A)&&i.push(this.blockRequests.get(A));await Promise.allSettled(I),await Promise.allSettled(i);const B=[],t=e.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(t.forEach(A=>this.blockIdsToFetch.add(A)),t.length>0&&g&&!g.aborted){this.fetchBlocks();for(const A of t){const g=this.blockRequests.get(A);if(!g)throw new Error(`Block ${A} is not in the block requests`);B.push(g)}await Promise.allSettled(B)}if(g&&g.aborted)throw new WA("Request was aborted");const Q=e.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),s=Q.filter(A=>!A);if(s.length)throw new vA(s,"Request failed");const o=new Map(function(A,g){const I=Array.isArray(A)?A:Array.from(A),C=Array.isArray(g)?g:Array.from(g);return I.map((A,g)=>[A,C[g]])}(e,Q));return this.readSliceData(A,o)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const g=this.groupBlocks(this.blockIdsToFetch),I=g.map(async g=>({...g,...await this.source.fetchSlice(g,A)}));for(let C=0;C<g.length;++C){const e=g[C];for(const g of e.blockIds)this.blockRequests.set(g,(async()=>{try{const A=(await Promise.all(I))[C],e=g*this.blockSize,i=e-A.offset,B=Math.min(i+this.blockSize,A.data.byteLength),t=A.data.slice(i,B),Q=new zA(e,t.byteLength,t);this.blockCache.set(g,Q),this.abortedBlockIds.delete(g)}catch(I){if(!(I instanceof WA&&"AbortError"===I.name))throw I;I.signal=A,this.blockCache.delete(g),this.abortedBlockIds.add(g)}finally{this.blockRequests.delete(g)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const g=Array.from(A).sort((A,g)=>A-g);if(0===g.length)return[];let I=[],C=null;const e=[];for(const A of g)null===C||C+1===A?(I.push(A),C=A):(e.push(new XA(I[0]*this.blockSize,I.length*this.blockSize,I)),I=[A],C=A);return e.push(new XA(I[0]*this.blockSize,I.length*this.blockSize,I)),e}readSliceData(A,g){return A.map(A=>{let I=A.offset+A.length;null!==this.fileSize&&(I=Math.min(this.fileSize,I));const C=Math.floor(A.offset/this.blockSize),e=Math.floor((I-1)/this.blockSize),i=new ArrayBuffer(A.length),B=new Uint8Array(i);for(let i=C;i<=e;++i){const C=g.get(i);if(!C)continue;const e=C.offset-A.offset;let t,Q=0,s=0;e<0?Q=-e:e>0&&(s=e),t=C.top-I<0?C.length-Q:I-C.offset-Q;const o=new Uint8Array(C.data,Q,t);B.set(o,s)}return i})}}class jA{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class _A{constructor(A){this.url=A}async request(A){throw new Error("request is not implemented")}}class $A extends jA{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)||void 0}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class Ag extends _A{constructor(A,g){super(A),this.credentials=g}async request({headers:A,signal:g}={}){const I=await fetch(this.url,{headers:A,credentials:this.credentials,signal:g});return new $A(I)}}class gg extends jA{constructor(A,g){super(),this.xhr=A,this.data=g}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)||void 0}async getData(){return this.data}}class Ig extends _A{constructRequest(A,g){return new Promise((I,C)=>{const e=new XMLHttpRequest;e.open("GET",this.url),e.responseType="arraybuffer";for(const[g,I]of Object.entries(A))e.setRequestHeader(g,I);e.onload=()=>{const A=e.response;I(new gg(e,A))},e.onerror=C,e.onabort=()=>C(new WA("Request aborted")),e.send(),g&&(g.aborted&&e.abort(),g.addEventListener("abort",()=>e.abort()))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}var Cg={};class eg extends jA{constructor(A,g){super(),this.response=A,this.dataPromise=g}get status(){return this.response.statusCode}getHeader(A){const g=this.response.headers[A];return Array.isArray(g)?g.join(", "):g}async getData(){return await this.dataPromise}}class ig extends _A{constructor(A){super(A),this.parsedUrl=Cg.parse(this.url),this.httpApi=(this.parsedUrl.protocol,Cg)}constructRequest(A,g){return new Promise((I,C)=>{const e=this.httpApi.get({...this.parsedUrl,headers:A},A=>{const g=new Promise(g=>{const I=[];A.on("data",A=>{I.push(A)}),A.on("end",()=>{const A=Buffer.concat(I).buffer;g(A)}),A.on("error",C)});I(new eg(A,g))});e.on("error",C),g&&(g.aborted&&e.destroy(new WA("Request aborted")),g.addEventListener("abort",()=>e.destroy(new WA("Request aborted"))))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}class Bg extends qA{constructor(A,{headers:g,maxRanges:I=0,allowFullFile:C}={}){super(),this.client=A,this.headers=g,this.maxRanges=I,this.allowFullFile=C,this._fileSize=null}async fetch(A,g){return this.maxRanges>=A.length?this.fetchSlices(A,g).then(A=>A.map(A=>A.data)):(this.maxRanges>0&&A.length,Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data)))}async fetchSlices(A,g){const I=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:g})=>`${A}-${A+g-1}`).join(",")}`},signal:g});if(I.ok){if(206===I.status){const{type:C,params:e}=function(A){if(!A)return{type:null,params:{}};const[g,...I]=A.split(";").map(A=>A.trim());return{type:g,params:xA(I.map(A=>A.split("=")))}}(I.getHeader("content-type"));if("multipart/byteranges"===C){const A=function(A,g){let I=-1;const C=new TextDecoder("ascii"),e=[],i=`--${g}`,B=`${i}--`;for(let g=0;g<10;++g)C.decode(new Uint8Array(A,g,i.length))===i&&(I=g);if(-1===I)throw new Error("Could not find initial boundary");for(;I<A.byteLength;){const g=C.decode(new Uint8Array(A,I,Math.min(i.length+1024,A.byteLength-I)));if(0===g.length||g.startsWith(B))break;if(!g.startsWith(i))throw new Error("Part does not start with boundary");const t=g.substr(i.length+2);if(0===t.length)break;const Q=t.indexOf(JA),s=ZA(t.substr(0,Q)),{start:o,end:a,total:E}=TA(s["content-range"]),r=I+i.length+Q+4,n=a+1-o;e.push({headers:s,data:A.slice(r,r+n),offset:o,length:n,fileSize:E}),I=r+n+4}return e}(await I.getData(),e.boundary);return this._fileSize=A[0].fileSize||null,A}const i=await I.getData(),{start:B,end:t,total:Q}=TA(I.getHeader("content-range"));this._fileSize=Q||null;const s=[{data:i,offset:B,length:t+1-B}];if(A.length>1){const I=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,g)));return s.concat(I)}return s}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await I.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,g){const{offset:I,length:C}=A,e=await this.client.request({headers:{...this.headers,Range:`bytes=${I}-${I+C-1}`},signal:g});if(e.ok){if(206===e.status){const A=await e.getData(),{total:g}=TA(e.getHeader("content-range"));return this._fileSize=g||null,{data:A,offset:I,length:C}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await e.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function tg(A,{blockSize:g,cacheSize:I}){return void 0===g?A:new PA(A,{blockSize:g,cacheSize:I})}function Qg(A,{forceXHR:g=!1,...I}={}){return"function"!=typeof fetch||g?"undefined"!=typeof XMLHttpRequest?function(A,{headers:g={},maxRanges:I=0,allowFullFile:C=!1,...e}={}){const i=new Ig(A);return tg(new Bg(i,{headers:g,maxRanges:I,allowFullFile:C}),e)}(A,I):function(A,{headers:g={},maxRanges:I=0,allowFullFile:C=!1,...e}={}){const i=new ig(A);return tg(new Bg(i,{headers:g,maxRanges:I,allowFullFile:C}),e)}(A,I):function(A,{headers:g={},credentials:I,maxRanges:C=0,allowFullFile:e=!1,...i}={}){const B=new Ag(A,I);return tg(new Bg(B,{headers:g,maxRanges:C,allowFullFile:e}),i)}(A,I)}class sg extends qA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,g){if(g&&g.aborted)throw new WA("Request aborted");return Promise.resolve({data:this.arrayBuffer.slice(A.offset,A.offset+A.length),offset:A.offset,length:A.length})}}function og(A,g){switch(A){case iA.BYTE:case iA.ASCII:case iA.UNDEFINED:return new Uint8Array(g);case iA.SBYTE:return new Int8Array(g);case iA.SHORT:return new Uint16Array(g);case iA.SSHORT:return new Int16Array(g);case iA.LONG:case iA.IFD:return new Uint32Array(g);case iA.SLONG:return new Int32Array(g);case iA.LONG8:case iA.IFD8:case iA.SLONG8:return new Array(g);case iA.RATIONAL:return new Uint32Array(2*g);case iA.SRATIONAL:return new Int32Array(2*g);case iA.FLOAT:return new Float32Array(g);case iA.DOUBLE:return new Float64Array(g);default:throw new RangeError(`Invalid field type: ${A}`)}}function ag(A,g){switch(g){case iA.BYTE:case iA.ASCII:case iA.UNDEFINED:return A.readUint8;case iA.SBYTE:return A.readInt8;case iA.SHORT:return A.readUint16;case iA.SSHORT:return A.readInt16;case iA.LONG:case iA.IFD:return A.readUint32;case iA.SLONG:return A.readInt32;case iA.LONG8:case iA.IFD8:return A.readUint64;case iA.SLONG8:return A.readInt64;case iA.RATIONAL:return A.readUint32;case iA.SRATIONAL:return A.readInt32;case iA.FLOAT:return A.readFloat32;case iA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${g}`)}}function Eg(A=null,g,I,C,e,i,B=!1){const t=tA(C),Q=A||og(C,e),s=C===iA.RATIONAL||C===iA.SRATIONAL;if(s)for(let A=0;A<e;A+=2)Q[A]=g.call(I,i+A*t),Q[A+1]=g.call(I,i+(A*t+4));else for(let A=0;A<e;++A)Q[A]=g.call(I,i+A*t);return C===iA.ASCII?new TextDecoder("utf-8").decode(Q):1!==e||B||s?Q:Q[0]}class rg{constructor(A,g,I,C,e){this.source=A,this.arrayOffset=g,this.littleEndian=I,this.fieldType=C,this.length=e,this.data=og(C,e),this.itemSize=tA(C),this.maskBitmap=new Uint8Array(Math.ceil(e/8)),this.fetchIndexPromises=new Map,this.fullFetchPromise=null}async loadAll(){return this.fullFetchPromise||(this.fullFetchPromise=this.source.fetch([{offset:this.arrayOffset,length:this.itemSize*this.length}]).then(A=>{const g=new HA(A[0],this.arrayOffset,!0,!1),I=Eg(this.data,ag(g,this.fieldType),g,this.fieldType,this.length,this.arrayOffset,!0);return this.maskBitmap.fill(255),this.fetchIndexPromises.clear(),I})),this.fullFetchPromise}async get(A){if(A<0||A>=this.data.length)throw new RangeError(`Index ${A} out of bounds for length ${this.data.length}`);const g=Math.floor(A/8),I=1<<A%8,C=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[g]&I)){if(!this.fetchIndexPromises.has(A)){const e=this.source.fetch([{offset:C,length:this.itemSize}]).then(e=>{const i=new HA(e[0],this.arrayOffset+A*this.itemSize,!0,!1),B=ag(i,this.fieldType).call(i,C);return this.data[A]=B,this.maskBitmap[g]|=I,this.fetchIndexPromises.delete(A),B});this.fetchIndexPromises.set(A,e)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class ng{constructor(A,g,I,C){this.actualizedFields=A,this.deferredFields=g,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=I,this.nextIFDByteOffset=C}hasTag(A){const g=EA(A);return this.actualizedFields.has(g)||this.deferredFields.has(g)||this.deferredArrays.has(g)}getValue(A){const g=EA(A);if(this.deferredFields.has(g)||this.deferredArrays.has(g)){const A=oA[g];throw new Error(`Field '${A?.name||`Tag${g}`}' (${g}) is deferred. Use loadValue() to load it asynchronously.`)}if(this.actualizedFields.has(g))return this.actualizedFields.get(g)}async loadValue(A){const g=EA(A);if(this.actualizedFields.has(g))return this.actualizedFields.get(g);if(this.deferredFieldsBeingResolved.has(g))return this.deferredFieldsBeingResolved.get(g);const I=this.deferredFields.get(g);if(I){this.deferredFields.delete(g);const A=(async()=>{try{const A=await I();return this.actualizedFields.set(g,A),A}finally{this.deferredFieldsBeingResolved.delete(g)}})();return this.deferredFieldsBeingResolved.set(g,A),A}const C=this.deferredArrays.get(g);return C?C.loadAll():void 0}async loadValueIndexed(A,g){const I=EA(A);if(this.actualizedFields.has(I)){return this.actualizedFields.get(I)[g]}if(this.deferredArrays.has(I)){return this.deferredArrays.get(I).get(g)}if(this.hasTag(I)){const A=await this.loadValue(I);if(A&&"number"!=typeof A)return A[g]}}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const g={};for(let I=4;I<=4*A[3];I+=4){const C=fA[A[I]],e=A[I+1]||null,i=A[I+2],B=A[I+3];let t=null;if(e){if(t=this.getValue(e),null==t)throw new Error(`Could not get value of geoKey '${C}'.`);"string"==typeof t?t=t.substring(B,B+i-1):t.subarray&&(t=t.subarray(B,B+i),1===i&&(t=t[0]))}else t=B;g[C]=t}return g}toObject(){const A={};for(const[g,I]of this.actualizedFields.entries()){const C="number"==typeof g?oA[g]:void 0;A[C?C.name:`Tag${g}`]=I}return A}}class hg{constructor(A,g,I,C=!1){this.source=A,this.littleEndian=g,this.bigTiff=I,this.eager=C}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new HA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const g=this.bigTiff?20:12,I=this.bigTiff?8:2;let C=await this.getSlice(A);const e=this.bigTiff?C.readUint64(A):C.readUint16(A),i=e*(g+(this.bigTiff?16:6));C.covers(A,i)||(C=await this.getSlice(A,i));const B=new Map,t=new Map,Q=new Map;let s=A+(this.bigTiff?8:2);for(let A=0;A<e;s+=g,++A){const A=C.readUint16(s),g=C.readUint16(s+2),I=this.bigTiff?C.readUint64(s+4):C.readUint32(s+4);let e=null,i=null,o=null;const a=tA(g),E=s+(this.bigTiff?12:8),r=oA[A]?.isArray,n=oA[A]?.eager||this.eager;if(a*I<=(this.bigTiff?8:4))e=Eg(og(g,I),ag(C,g),C,g,I,E,r);else{const A=C.readOffset(E),B=tA(g)*I;if(C.covers(A,B))e=Eg(og(g,I),ag(C,g),C,g,I,A,r);else if(n){const C=await this.getSlice(A,B);e=Eg(og(g,I),ag(C,g),C,g,I,A,r)}else r?o=new rg(this.source,A,this.littleEndian,g,I):i=async()=>{const C=await this.getSlice(A,B);return Eg(og(g,I),ag(C,g),C,g,I,A,r)}}null!==e?B.set(A,e):null!==i?t.set(A,i):null!==o&&Q.set(A,o)}const o=C.readOffset(A+I+g*e);return new ng(B,t,Q,o)}}function lg(A,g){let I=A.length-g,C=0;do{for(let I=g;I>0;I--)A[C+g]+=A[C],C++;I-=g}while(I>0)}function cg(A,g,I){let C=0,e=A.length;const i=e/I;for(;e>g;){for(let I=g;I>0;--I)A[C+g]+=A[C],++C;e-=g}const B=A.slice();for(let g=0;g<i;++g)for(let C=0;C<I;++C)A[I*g+C]=B[(I-C-1)*i+g]}class wg{constructor(A){this.parameters=A}decodeBlock(A){throw new Error("decodeBlock not implemented")}async decode(A){const g=await this.decodeBlock(A),{tileWidth:I,tileHeight:C,predictor:e,bitsPerSample:i,planarConfiguration:B}=this.parameters;if(1!==e){return function(A,g,I,C,e,i){if(!g||1===g)return A;for(let A=0;A<e.length;++A){if(e[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(e[A]!==e[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const B=e[0]/8,t=2===i?1:e.length;for(let i=0;i<C&&!(i*t*I*B>=A.byteLength);++i){let C;if(2===g){switch(e[0]){case 8:C=new Uint8Array(A,i*t*I*B,t*I*B);break;case 16:C=new Uint16Array(A,i*t*I*B,t*I*B/2);break;case 32:C=new Uint32Array(A,i*t*I*B,t*I*B/4);break;default:throw new Error(`Predictor 2 not allowed with ${e[0]} bits per sample.`)}lg(C,t)}else 3===g&&(C=new Uint8Array(A,i*t*I*B,t*I*B),cg(C,t,B))}return A}(g,e,I,C,Array.isArray(i)||ArrayBuffer.isView(i)?Array.from(i):[i],B)}return g}}function Dg(A,g,I,C){let e=null,i=null;const B=tA(g);switch(g){case iA.BYTE:case iA.ASCII:case iA.UNDEFINED:e=new Uint8Array(I),i=A.readUint8;break;case iA.SBYTE:e=new Int8Array(I),i=A.readInt8;break;case iA.SHORT:e=new Uint16Array(I),i=A.readUint16;break;case iA.SSHORT:e=new Int16Array(I),i=A.readInt16;break;case iA.LONG:case iA.IFD:e=new Uint32Array(I),i=A.readUint32;break;case iA.SLONG:e=new Int32Array(I),i=A.readInt32;break;case iA.LONG8:case iA.IFD8:e=new Array(I),i=A.readUint64;break;case iA.SLONG8:e=new Array(I),i=A.readInt64;break;case iA.RATIONAL:e=new Uint32Array(2*I),i=A.readUint32;break;case iA.SRATIONAL:e=new Int32Array(2*I),i=A.readInt32;break;case iA.FLOAT:e=new Float32Array(I),i=A.readFloat32;break;case iA.DOUBLE:e=new Float64Array(I),i=A.readFloat64}if(null===e||null===i)throw new RangeError(`Invalid field type: ${g}`);for(let g=0;g<I;++g)e[g]=i.call(A,C+g*B);return new TextDecoder("utf-8").decode(e)}class dg extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class yg{async getImage(A=0){throw new Error("Not implemented")}async getImageCount(){throw new Error("Not implemented")}async readRasters(A={}){const{window:g,width:I,height:C}=A;let{resX:e,resY:i,bbox:B}=A;const t=await this.getImage();let Q=t;const s=await this.getImageCount(),o=t.getBoundingBox();if(g&&B)throw new Error('Both "bbox" and "window" passed.');if(I||C){if(g){const[A,I]=t.getOrigin(),[C,e]=t.getResolution();B=[A+g[0]*C,I+g[1]*e,A+g[2]*C,I+g[3]*e]}const A=B||o;if(I){if(e)throw new Error("Both width and resX passed");e=(A[2]-A[0])/I}if(C){if(i)throw new Error("Both width and resY passed");i=(A[3]-A[1])/C}}if(e||i){const A=[];for(let g=0;g<s;++g){const I=await this.getImage(g),C=I.fileDirectory.getValue("SubfileType"),e=I.fileDirectory.getValue("NewSubfileType");(0===g||2===C||1&(e||0))&&A.push(I)}A.sort((A,g)=>A.getWidth()-g.getWidth());for(let g=0;g<A.length;++g){const I=A[g],C=(o[2]-o[0])/I.getWidth(),B=(o[3]-o[1])/I.getHeight();if(Q=I,e&&e>C||i&&i>B)break}}let a=g;if(B){const[A,g]=t.getOrigin(),[I,C]=Q.getResolution(t);a=[Math.round((B[0]-A)/I),Math.round((B[1]-g)/C),Math.round((B[2]-A)/I),Math.round((B[3]-g)/C)],a=[Math.min(a[0],a[2]),Math.min(a[1],a[3]),Math.max(a[0],a[2]),Math.max(a[1],a[3])]}return Q.readRasters({...A,window:a})}}class Gg extends yg{constructor(A,g,I,C,e={}){super(),this.source=A,this.parser=new hg(A,g,I,!1),this.littleEndian=g,this.bigTiff=I,this.firstIFDOffset=C,this.cache=e.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new HA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parser.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(g){if(g instanceof dg)throw new dg(A);throw g}return this.ifdRequests[A]=(async()=>{const g=this.ifdRequests[A-1];if(!g)throw new Error("Previous IFD request missing");const I=await g;if(0===I.nextIFDByteOffset)throw new dg(A);return this.parser.parseFileDirectoryAt(I.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new bA(await this.requestIFD(A),this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,g=!0;for(;g;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof dg))throw A;g=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(null!==this.ghostValues)return this.ghostValues;const g="GDAL_STRUCTURAL_METADATA_SIZE=";let I=await this.getSlice(A,130);if(g===Dg(I,iA.ASCII,30,A)){const g=Dg(I,iA.ASCII,130,A).split("\n")[0],C=Number(g.split("=")[1].split(" ")[0])+g.length;C>130&&(I=await this.getSlice(A,C));const e=Dg(I,iA.ASCII,C,A),i={};e.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,g])=>{i[A]=g}),this.ghostValues=i}return this.ghostValues}static async fromSource(A,g,I){const C=(await A.fetch([{offset:0,length:1024}],I))[0],e=new KA(C),i=e.getUint16(0,!1);let B;if(18761===i)B=!0;else{if(19789!==i)throw new TypeError("Invalid byte order value.");B=!1}const t=e.getUint16(2,B);let Q;if(42===t)Q=!1;else{if(43!==t)throw new TypeError("Invalid magic number.");Q=!0;if(8!==e.getUint16(4,B))throw new Error("Unsupported offset byte-size.")}const s=Q?e.getUint64(8,B):e.getUint32(4,B);return new Gg(A,B,Q,s,g)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function ug(A,g){return Gg.fromSource(function(A){return new sg(A)}(A),void 0,g)}const Sg={type:"image",blockSize:65536,format:void 0,useChannel:null,useChannelIndex:null,noDataValue:void 0,multiplier:1,verticalExaggeration:1,numOfChannels:void 0,planarConfig:void 0,tesselator:"martini",terrainColor:[200,200,200,255],terrainSkirtHeight:100,terrainMinValue:0,useHeatMap:!0,useColorsBasedOnValues:!1,useColorClasses:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,blurredTexture:!0,skipTexture:!1,noDataCheck:"full",clipLow:null,clipHigh:null,color:[255,0,255,255],colorScale:B.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:void 0,colorClasses:void 0,alpha:100,maxGlazeAlpha:128,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],useSlope:!1,useHillshade:!1,hillshadeAzimuth:315,hillshadeAltitude:45,zFactor:1,useSwissRelief:!1,swissSlopeWeight:.5,useReliefGlaze:!1,disableLighting:!1,cacheAllBands:!1};class fg{constructor(A=257){this.gridSize=A;const g=A-1;if(g&g-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=g*g*2-2,this.numParentTriangles=this.numTriangles-g*g,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let I=A+2,C=0,e=0,i=0,B=0,t=0,Q=0;for(1&I?i=B=t=g:C=e=Q=g;(I>>=1)>1;){const A=C+i>>1,g=e+B>>1;1&I?(i=C,B=e,C=t,e=Q):(C=i,e=B,i=t,B=Q),t=A,Q=g}const s=4*A;this.coords[s+0]=C,this.coords[s+1]=e,this.coords[s+2]=i,this.coords[s+3]=B}}createTile(A){return new Ng(A,this)}}class Ng{constructor(A,g){const I=g.gridSize;if(A.length!==I*I)throw new Error(`Expected terrain data of length ${I*I} (${I} x ${I}), got ${A.length}.`);this.terrain=A,this.martini=g,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:g,coords:I,gridSize:C}=this.martini,{terrain:e,errors:i}=this;for(let B=A-1;B>=0;B--){const A=4*B,t=I[A+0],Q=I[A+1],s=I[A+2],o=I[A+3],a=t+s>>1,E=Q+o>>1,r=a+E-Q,n=E+t-a,h=(e[Q*C+t]+e[o*C+s])/2,l=E*C+a,c=Math.abs(h-e[l]);if(i[l]=Math.max(i[l],c),B<g){const A=(Q+n>>1)*C+(t+r>>1),g=(o+n>>1)*C+(s+r>>1);i[l]=Math.max(i[l],i[A],i[g])}}}getMesh(A=0){const{gridSize:g,indices:I}=this.martini,{errors:C}=this;let e=0,i=0;const B=g-1;function t(B,Q,s,o,a,E){const r=B+s>>1,n=Q+o>>1;Math.abs(B-a)+Math.abs(Q-E)>1&&C[n*g+r]>A?(t(a,E,B,Q,r,n),t(s,o,a,E,r,n)):(I[Q*g+B]=I[Q*g+B]||++e,I[o*g+s]=I[o*g+s]||++e,I[E*g+a]=I[E*g+a]||++e,i++)}I.fill(0),t(0,0,B,B,B,0),t(B,B,0,0,0,B);const Q=new Uint16Array(2*e),s=new Uint32Array(3*i);let o=0;function a(e,i,B,t,E,r){const n=e+B>>1,h=i+t>>1;if(Math.abs(e-E)+Math.abs(i-r)>1&&C[h*g+n]>A)a(E,r,e,i,n,h),a(B,t,E,r,n,h);else{const A=I[i*g+e]-1,C=I[t*g+B]-1,a=I[r*g+E]-1;Q[2*A]=e,Q[2*A+1]=i,Q[2*C]=B,Q[2*C+1]=t,Q[2*a]=E,Q[2*a+1]=r,s[o++]=A,s[o++]=C,s[o++]=a}}return a(0,0,B,B,B,0),a(B,B,0,0,0,B),{vertices:Q,triangles:s}}}function kg(A,g,I,C,e,i){return(I-e)*(g-i)-(C-i)*(A-e)}class Rg{constructor(A,g,I=g){this.data=A,this.width=g,this.height=I,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;const C=g-1,e=I-1,i=this._addPoint(0,0),B=this._addPoint(C,0),t=this._addPoint(0,e),Q=this._addPoint(C,e),s=this._addTriangle(Q,i,t,-1,-1,-1);this._addTriangle(i,Q,B,s,-1,-1),this._flush()}run(A=1){for(;this.getMaxError()>A;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(A,g){return this.data[this.width*g+A]}_flush(){const{coords:A}=this;for(let g=0;g<this._pendingLen;g++){const I=this._pending[g],C=2*this.triangles[3*I+0],e=2*this.triangles[3*I+1],i=2*this.triangles[3*I+2];this._findCandidate(A[C],A[C+1],A[e],A[e+1],A[i],A[i+1],I)}this._pendingLen=0}_findCandidate(A,g,I,C,e,i,B){const t=Math.min(A,I,e),Q=Math.min(g,C,i),s=Math.max(A,I,e),o=Math.max(g,C,i);let a=kg(I,C,e,i,t,Q),E=kg(e,i,A,g,t,Q),r=kg(A,g,I,C,t,Q);const n=C-g,h=A-I,l=i-C,c=I-e,w=g-i,D=e-A,d=kg(A,g,I,C,e,i),y=this.heightAt(A,g)/d,G=this.heightAt(I,C)/d,u=this.heightAt(e,i)/d;let S=0,f=0,N=0,k=0;for(let A=Q;A<=o;A++){let g=0;a<0&&0!==l&&(g=Math.max(g,Math.floor(-a/l))),E<0&&0!==w&&(g=Math.max(g,Math.floor(-E/w))),r<0&&0!==n&&(g=Math.max(g,Math.floor(-r/n)));let I=a+l*g,C=E+w*g,e=r+n*g,i=!1;for(let B=t+g;B<=s;B++){if(I>=0&&C>=0&&e>=0){i=!0;const g=y*I+G*C+u*e,t=Math.abs(g-this.heightAt(B,A));k+=t*t,t>S&&(S=t,f=B,N=A)}else if(i)break;I+=l,C+=w,e+=n}a+=c,E+=D,r+=h}(f===A&&N===g||f===I&&N===C||f===e&&N===i)&&(S=0),this._candidates[2*B]=f,this._candidates[2*B+1]=N,this._rms[B]=k,this._queuePush(B,S,k)}_step(){const A=this._queuePop(),g=3*A+0,I=3*A+1,C=3*A+2,e=this.triangles[g],i=this.triangles[I],B=this.triangles[C],t=this.coords[2*e],Q=this.coords[2*e+1],s=this.coords[2*i],o=this.coords[2*i+1],a=this.coords[2*B],E=this.coords[2*B+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===kg(t,Q,s,o,r,n))this._handleCollinear(h,g);else if(0===kg(s,o,a,E,r,n))this._handleCollinear(h,I);else if(0===kg(a,E,t,Q,r,n))this._handleCollinear(h,C);else{const A=this._halfedges[g],t=this._halfedges[I],Q=this._halfedges[C],s=this._addTriangle(e,i,h,A,-1,-1,g),o=this._addTriangle(i,B,h,t,-1,s+1),a=this._addTriangle(B,e,h,Q,s+2,o+1);this._legalize(s),this._legalize(o),this._legalize(a)}}_addPoint(A,g){const I=this.coords.length>>1;return this.coords.push(A,g),I}_addTriangle(A,g,I,C,e,i,B=this.triangles.length){const t=B/3;return this.triangles[B+0]=A,this.triangles[B+1]=g,this.triangles[B+2]=I,this._halfedges[B+0]=C,this._halfedges[B+1]=e,this._halfedges[B+2]=i,C>=0&&(this._halfedges[C]=B+0),e>=0&&(this._halfedges[e]=B+1),i>=0&&(this._halfedges[i]=B+2),this._candidates[2*t+0]=0,this._candidates[2*t+1]=0,this._queueIndices[t]=-1,this._rms[t]=0,this._pending[this._pendingLen++]=t,B}_legalize(A){const g=this._halfedges[A];if(g<0)return;const I=A-A%3,C=g-g%3,e=I+(A+1)%3,i=I+(A+2)%3,B=C+(g+2)%3,t=C+(g+1)%3,Q=this.triangles[i],s=this.triangles[A],o=this.triangles[e],a=this.triangles[B],{coords:E}=this;if(!function(A,g,I,C,e,i,B,t){const Q=A-B,s=g-t,o=I-B,a=C-t,E=e-B,r=i-t,n=o*o+a*a,h=E*E+r*r;return Q*(a*h-n*r)-s*(o*h-n*E)+(Q*Q+s*s)*(o*r-a*E)<0}(E[2*Q],E[2*Q+1],E[2*s],E[2*s+1],E[2*o],E[2*o+1],E[2*a],E[2*a+1]))return;const r=this._halfedges[e],n=this._halfedges[i],h=this._halfedges[B],l=this._halfedges[t];this._queueRemove(I/3),this._queueRemove(C/3);const c=this._addTriangle(Q,a,o,-1,h,r,I),w=this._addTriangle(a,Q,s,c,n,l,C);this._legalize(c+1),this._legalize(w+2)}_handleCollinear(A,g){const I=g-g%3,C=I+(g+1)%3,e=I+(g+2)%3,i=this.triangles[e],B=this.triangles[g],t=this.triangles[C],Q=this._halfedges[C],s=this._halfedges[e],o=this._halfedges[g];if(o<0){const g=this._addTriangle(A,i,B,-1,s,-1,I),C=this._addTriangle(i,A,t,g,-1,Q);return this._legalize(g+1),void this._legalize(C+2)}const a=o-o%3,E=a+(o+2)%3,r=a+(o+1)%3,n=this.triangles[E],h=this._halfedges[E],l=this._halfedges[r];this._queueRemove(a/3);const c=this._addTriangle(i,B,A,s,-1,-1,I),w=this._addTriangle(B,n,A,l,-1,c+1,a),D=this._addTriangle(n,t,A,h,-1,w+1),d=this._addTriangle(t,i,A,Q,c+2,D+1);this._legalize(c),this._legalize(w),this._legalize(D),this._legalize(d)}_queuePush(A,g,I){const C=this._queue.length;this._queueIndices[A]=C,this._queue.push(A),this._errors.push(g),this._rmsSum+=I,this._queueUp(C)}_queuePop(){const A=this._queue.length-1;return this._queueSwap(0,A),this._queueDown(0,A),this._queuePopBack()}_queuePopBack(){const A=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[A],this._queueIndices[A]=-1,A}_queueRemove(A){const g=this._queueIndices[A];if(g<0){const g=this._pending.indexOf(A);if(-1===g)throw new Error("Broken triangulation (something went wrong).");return void(this._pending[g]=this._pending[--this._pendingLen])}const I=this._queue.length-1;I!==g&&(this._queueSwap(g,I),this._queueDown(g,I)||this._queueUp(g)),this._queuePopBack()}_queueLess(A,g){return this._errors[A]>this._errors[g]}_queueSwap(A,g){const I=this._queue[A],C=this._queue[g];this._queue[A]=C,this._queue[g]=I,this._queueIndices[I]=g,this._queueIndices[C]=A;const e=this._errors[A];this._errors[A]=this._errors[g],this._errors[g]=e}_queueUp(A){let g=A;for(;;){const A=g-1>>1;if(A===g||!this._queueLess(g,A))break;this._queueSwap(A,g),g=A}}_queueDown(A,g){let I=A;for(;;){const A=2*I+1;if(A>=g||A<0)break;const C=A+1;let e=A;if(C<g&&this._queueLess(C,A)&&(e=C),!this._queueLess(e,I))break;this._queueSwap(I,e),I=e}return I>A}}function Fg(A,g,I,C){const e=function(A){const g=new Map,I=(A,I)=>{const C=Math.min(A,I),e=Math.max(A,I),i=BigInt(C)<<32n|BigInt(e);g.has(i)?g.delete(i):g.set(i,[A,I])};for(let g=0;g<A.length;g+=3){const C=A[g],e=A[g+1],i=A[g+2];I(C,e),I(e,i),I(i,C)}return Array.from(g.values())}(g),i=new A.POSITION.value.constructor(6*e.length),B=new A.TEXCOORD_0.value.constructor(4*e.length),t=new g.constructor(6*e.length);for(let g=0;g<e.length;g++){pg({edge:e[g],edgeIndex:g,attributes:A,skirtHeight:I,newPosition:i,newTexcoord0:B,newTriangles:t})}A.POSITION.value=Q(A.POSITION.value,i),A.TEXCOORD_0.value=Q(A.TEXCOORD_0.value,B);return{attributes:A,triangles:g instanceof Array?g.concat(t):Q(g,t)}}function pg({edge:A,edgeIndex:g,attributes:I,skirtHeight:C,newPosition:e,newTexcoord0:i,newTriangles:B}){const t=I.POSITION.value.length,Q=2*g,s=2*g+1;e.set(I.POSITION.value.subarray(3*A[0],3*A[0]+3),3*Q),e[3*Q+2]=e[3*Q+2]-C,e.set(I.POSITION.value.subarray(3*A[1],3*A[1]+3),3*s),e[3*s+2]=e[3*s+2]-C,i.set(I.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*Q),i.set(I.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*s);const o=2*g*3;B[o]=A[0],B[o+1]=t/3+s,B[o+2]=A[1],B[o+3]=t/3+s,B[o+4]=A[0],B[o+5]=t/3+Q}function Lg(A,g,I,C,e){return I===g?C:(A-g)*(e-C)/(I-g)+C}function Yg(A){return Math.fround(A)}function Ug(A,g){if(null==g)return!1;const I=Yg(A),C=Yg(g);return Number.isNaN(C)?Number.isNaN(I):I===C}class mg{static _swissColorLUTCache=new Map;static _8bitLUTCache=new Map;static _floatLUTCache=new Map;static getLUTCacheKey(A,g,I,C){return`${g}_${I}_${C}_${JSON.stringify(A.colorScale)}_${A.useSingleColor}_${JSON.stringify(A.color)}_${A.useColorClasses}_${JSON.stringify(A.colorClasses)}_${A.useColorsBasedOnValues}_${JSON.stringify(A.colorsBasedOnValues)}_${A.useHeatMap}_${A.clipLow??""}_${A.clipHigh??""}_${JSON.stringify(A.clippedColor)}_${JSON.stringify(A.nullColor)}_${JSON.stringify(A.unidentifiedColor)}`}static async generate(A,g){const I={...g},{rasters:C,width:e,height:i}=A,B=1===C.length,t=document.createElement("canvas");t.width=e,t.height=i;const Q=t.getContext("2d"),s=Q.createImageData(e,i),o=e*i*4,a=Math.floor(2.55*I.alpha);I.unidentifiedColor=this.getColorFromChromaType(I.unidentifiedColor,a),I.nullColor=this.getColorFromChromaType(I.nullColor,a),I.clippedColor=this.getColorFromChromaType(I.clippedColor,a),I.color=this.getColorFromChromaType(I.color,a),I.useChannelIndex??=null==I.useChannel?null:I.useChannel-1;const E=I.numOfChannels??(1===C.length?C[0].length/(e*i):C.length);if(I.useReliefGlaze)if(C.length>=1)s.data.set(this.getReliefGlazeRGBA(C,I,o));else{const A=new Uint8ClampedArray(o);A.fill(0),s.data.set(A)}else if(I.useSwissRelief)if(2===C.length)s.data.set(this.getColorValue(C,I,o));else{this.getDefaultColor(o,I.nullColor).forEach((A,g)=>{s.data[g]=A})}else if(null==I.useChannelIndex)if(B){const A=C[0].length/(e*i);if(1===A)I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(C[0],I)),s.data.set(this.getColorValue(C[0],I,o));else if(3===A||4===A){let g=0;for(let e=0;e<o;e+=4){const i=[C[0][g],C[0][g+1],C[0][g+2]],B=this.hasPixelsNoData(i,I.noDataValue);s.data[e]=B?I.nullColor[0]:i[0],s.data[e+1]=B?I.nullColor[1]:i[1],s.data[e+2]=B?I.nullColor[2]:i[2],s.data[e+3]=B?I.nullColor[3]:4===A?C[0][g+3]:a,g+=A}}}else{let A=0;for(let g=0;g<o;g+=4)s.data[g]=C[0][A],s.data[g+1]=C[1][A],s.data[g+2]=C[2][A],s.data[g+3]=4===C.length?C[3][A]:a,A++}else if(I.useChannelIndex<E&&I.useChannelIndex>=0){const A=1===C.length&&E>1,g=A?C[0]:C[I.useChannelIndex]??C[0],e=A?E:1;I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(g,I,e)),s.data.set(this.getColorValue(g,I,o,e))}else{console.log(`Defined channel(${g.useChannel}) or channel index(${g.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(o,I.nullColor).forEach((A,g)=>{s.data[g]=A})}Q.putImageData(s,0,0);return{map:await createImageBitmap(t),raw:C[0],width:e,height:i}}static getColorValue(A,g,I,C=1){const e=B.scale(g.colorScale?.map(A=>Array.isArray(A)?B(A):A)).domain(g.colorScaleValueRange??[0,255]),i=new Uint8ClampedArray(I),t=Math.floor(2.55*(g.alpha??100)),Q=g.colorScaleValueRange?.[0]??0,s=g.colorScaleValueRange?.[1]??255,o=Array.isArray(A),a=o?A[0]:A,E=g.useSwissRelief&&o&&A.length>=2,r=a instanceof Uint8Array||a instanceof Uint8ClampedArray,n=!r&&(a instanceof Float32Array||a instanceof Uint16Array||a instanceof Int16Array);if(E){const B=A[1],o=s-Q||1;let E=null;if(g.useHeatMap){const A=1024,I=`${Q}_${s}_${t}_${JSON.stringify(g.colorScale)}`;if(E=this._swissColorLUTCache.get(I)||null,!E){E=new Uint8ClampedArray(4*A);for(let g=0;g<A;g++){const I=e(Q+g/(A-1)*o).rgb();E[4*g]=I[0],E[4*g+1]=I[1],E[4*g+2]=I[2],E[4*g+3]=t}this._swissColorLUTCache.set(I,E)}}for(let A=0,s=g.useChannelIndex??0;A<I;A+=4,s+=C){const I=a[s],C=Ug(I,g.noDataValue);if(Number.isNaN(I)||C){i.set(g.nullColor,A);continue}let r;if(E){const A=(I-Q)/o,g=4*Math.min(1023,Math.max(0,Math.floor(1023*A)));r=[E[g],E[g+1],E[g+2],E[g+3]]}else r=this.calculateSingleColor(I,e,g,t);const n=.4+B[s]/255*.6;i[A]=Math.floor(r[0]*n),i[A+1]=Math.floor(r[1]*n),i[A+2]=Math.floor(r[2]*n),i[A+3]=r[3]}return i}if(r&&!g.useDataForOpacity){const A=g.useAutoRange?null:this.getLUTCacheKey(g,Q,s,t);let B=A?this._8bitLUTCache.get(A)??null:null;if(!B){B=new Uint8ClampedArray(1024);for(let A=0;A<256;A++)null!=g.clipLow&&A<=g.clipLow||null!=g.clipHigh&&A>=g.clipHigh?B.set(g.clippedColor,4*A):B.set(this.calculateSingleColor(A,e,g,t),4*A);A&&this._8bitLUTCache.set(A,B)}for(let A=0,e=g.useChannelIndex??0;A<I;A+=4,e+=C){const g=4*a[e];i[A]=B[g],i[A+1]=B[g+1],i[A+2]=B[g+2],i[A+3]=B[g+3]}return i}if(n&&g.useHeatMap&&!g.useSingleColor&&!g.useColorClasses&&!g.useColorsBasedOnValues&&!g.useDataForOpacity){const A=1024,B=s-Q||1,o=g.useAutoRange?null:this.getLUTCacheKey(g,Q,s,t);let E=o?this._floatLUTCache.get(o)??null:null;if(!E){E=new Uint8ClampedArray(4*A);for(let I=0;I<A;I++){const C=Q+I/(A-1)*B;if(null!=g.clipLow&&C<=g.clipLow||null!=g.clipHigh&&C>=g.clipHigh)E.set(g.clippedColor,4*I);else{const A=e(C).rgb();E[4*I]=A[0],E[4*I+1]=A[1],E[4*I+2]=A[2],E[4*I+3]=t}}o&&this._floatLUTCache.set(o,E)}for(let e=0,t=g.useChannelIndex??0;e<I;e+=4,t+=C){const I=a[t];if(this.isInvalid(I,g))i.set(this.getInvalidColor(I,g),e);else{const g=(I-Q)/B,C=4*Math.min(A-1,Math.max(0,Math.floor(g*(A-1))));i[e]=E[C],i[e+1]=E[C+1],i[e+2]=E[C+2],i[e+3]=E[C+3]}}return i}let h=g.useChannelIndex??0;for(let A=0;A<I;A+=4){const I=a[h];let B;B=null!=g.clipLow&&I<=g.clipLow||null!=g.clipHigh&&I>=g.clipHigh?g.clippedColor:this.calculateSingleColor(I,e,g,t),g.useDataForOpacity&&!this.isInvalid(I,g)&&(B[3]=Lg(I,Q,s,0,255)),i.set(B,A),h+=C}return i}static getReliefGlazeRGBA(A,g,I){const C=A[0],e=(g.maxGlazeAlpha??128)/255,i=new Uint8Array(256);for(let A=0;A<256;A++)if(0===A)i[A]=0;else{const g=Math.abs(A-128)/128,I=A<128?.6:.8;i[A]=Math.floor(255*Math.pow(g,I)*e)}const B=new Uint8ClampedArray(I);let t=0;for(let A=0;A<I;A+=4){const g=C[t],I=g<128?0:255,e=i[g];B[A]=I,B[A+1]=I,B[A+2]=I,B[A+3]=e,t++}return B}static calculateSingleColor(A,g,I,C){if(this.isInvalid(A,I))return I.nullColor;if(I.useSingleColor)return I.color;if(I.useColorClasses){const g=this.findClassIndex(A,I);return g>-1?[...B(Array.isArray(I.colorClasses[g][0])?B(I.colorClasses[g][0]):I.colorClasses[g][0]).rgb(),C]:I.unidentifiedColor}if(I.useColorsBasedOnValues){const g=I.colorsBasedOnValues?.find(([g])=>g===A);return g?[...B(Array.isArray(g[1])?B(g[1]):g[1]).rgb(),C]:I.unidentifiedColor}return I.useHeatMap?[...g(A).rgb(),C]:I.unidentifiedColor}static findClassIndex(A,g){if(!g.colorClasses)return-1;for(let I=0;I<g.colorClasses.length;I++){const[,[C,e],i]=g.colorClasses[I],[B,t]=i||(I===g.colorClasses.length-1?[!0,!0]:[!0,!1]);if((B?A>=C:A>C)&&(t?A<=e:A<e))return I}return-1}static getDefaultColor(A,g){const I=new Uint8ClampedArray(A);for(let C=0;C<A;C+=4)[I[C],I[C+1],I[C+2],I[C+3]]=g;return I}static isInvalid(A,g){return Number.isNaN(A)||Ug(A,g.noDataValue)}static getInvalidColor(A,g){return g.nullColor}static getMinMax(A,g,I=1){let C=-1/0,e=1/0;for(let i=g.useChannelIndex??0;i<A.length;i+=I){const I=A[i];this.isInvalid(I,g)||(I>C&&(C=I),I<e&&(e=I))}return C===-1/0?g.colorScaleValueRange||[0,255]:[e,C]}static getColorFromChromaType(A,g=255){return Array.isArray(A)&&4===A.length?A:[...B(A).rgb(),g]}static hasPixelsNoData(A,g){return void 0!==g&&A.every(A=>Ug(A,g))}}class Mg{static computeGradients(A,g,I,C,e,i,B,t,Q,s=!0){return{dzdx:(I+2*e+t-(A+2*C+i))*Q,dzdy:s?(A+2*g+I-(i+2*B+t))*Q:(i+2*B+t-(A+2*g+I))*Q}}static calculateSlope(A,g,I=1,C){const e=256,i=258,B=new Float32Array(65536),t=1/(8*g),Q=180/Math.PI;for(let g=0;g<e;g++)for(let s=0;s<e;s++){const o=g*i+s;if(Ug(A[o+i+1],C)){B[g*e+s]=NaN;continue}const a=A[o],E=A[o+1],r=A[o+2],n=A[o+i],h=A[o+i+2],l=A[o+516],c=A[o+516+1],w=A[o+516+2],{dzdx:D,dzdy:d}=this.computeGradients(a,E,r,n,h,l,c,w,t,!1),y=Math.atan(I*Math.sqrt(D*D+d*d));B[g*e+s]=y*Q}return B}static calculateHillshade(A,g,I=315,C=45,e=1,i){const B=256,t=258,Q=new Float32Array(65536),s=(90-C)*(Math.PI/180);let o=360-I+90;o>=360&&(o-=360);const a=o*(Math.PI/180),E=1/(8*g);for(let g=0;g<B;g++)for(let I=0;I<B;I++){const C=g*t+I;if(Ug(A[C+t+1],i)){Q[g*B+I]=NaN;continue}const o=A[C],r=A[C+1],n=A[C+2],h=A[C+t],l=A[C+t+2],c=A[C+516],w=A[C+516+1],D=A[C+516+2],{dzdx:d,dzdy:y}=this.computeGradients(o,r,n,h,l,c,w,D,E,!0),G=Math.atan(e*Math.sqrt(d*d+y*y)),u=Math.atan2(y,-d),S=255*(Math.cos(s)*Math.cos(G)+Math.sin(s)*Math.sin(G)*Math.cos(a-u));Q[g*B+I]=Math.max(0,Math.min(255,S))}return Q}static calculateMultiHillshade(A,g,I=1,C){const e=256,i=258,B=new Float32Array(65536),t=1/(8*g),Q=[{az:315,alt:45,weight:.6},{az:225,alt:35,weight:.25},{az:0,alt:35,weight:.15}].map(A=>{const g=(90-A.alt)*(Math.PI/180);let I=360-A.az+90;return I>=360&&(I-=360),{zCos:Math.cos(g),zSin:Math.sin(g),aRad:I*(Math.PI/180),w:A.weight}});for(let g=0;g<e;g++)for(let s=0;s<e;s++){const o=g*i+s;if(Ug(A[o+i+1],C)){B[g*e+s]=NaN;continue}const a=A[o],E=A[o+1],r=A[o+2],n=A[o+i],h=A[o+i+2],l=A[o+516],c=A[o+516+1],w=A[o+516+2],{dzdx:D,dzdy:d}=this.computeGradients(a,E,r,n,h,l,c,w,t,!0),y=Math.atan(I*Math.sqrt(D*D+d*d)),G=Math.atan2(d,-D),u=Math.cos(y),S=Math.sin(y);let f=0;for(const A of Q){const g=A.zCos*u+A.zSin*S*Math.cos(A.aRad-G);f+=Math.max(0,g)*A.w}B[g*e+s]=Math.min(255,255*f)}return B}}class bg{static _swissReliefLUT=null;static _lastWeight=null;static getSwissReliefLUT(A=.5){if(this._swissReliefLUT&&this._lastWeight===A)return this._swissReliefLUT;const g=new Float32Array(65536);for(let I=0;I<256;I++){const C=I/255;for(let e=0;e<256;e++){const i=1-e/255*A;g[I<<8|e]=Math.max(.01,C*i)}}return this._swissReliefLUT=g,this._lastWeight=A,g}static composeSwissRelief(A,g,I,C,e){const i=g.swissSlopeWeight??.5,B=Mg.calculateSlope(A,I,g.zFactor??1,g.noDataValue),t=Mg.calculateMultiHillshade(A,I,g.zFactor??1,g.noDataValue),Q=this.getSwissReliefLUT(i),s=new Uint8ClampedArray(C*e),o=255/90;for(let A=0;A<C*e;A++){if(isNaN(B[A])){s[A]=0;continue}const g=Math.max(0,Math.min(255,B[A]*o|0)),I=0|Math.max(0,Math.min(255,t[A]));s[A]=Math.max(1,255*Q[I<<8|g]|0)}return s}}class Kg{static async generate(A,g,I,C,e){const{width:i,height:B}=A,Q=258===i,s=this.computeTerrainData(A,g);let o=Q?this.extractMeshRaster(s):s;const a=Q?257:i,E=Q?257:B,{terrainSkirtHeight:r,verticalExaggeration:n=1}=g;let h,l;if(C){const A=await C.computeMesh({terrain:o,meshMaxError:I,tesselator:g.tesselator||"martini",width:a,height:E,signal:e});h={vertices:A.vertices,triangles:A.triangles},l=A.terrain,o=A.terrain}else{switch(g.tesselator){case"martini":default:h=this.getMartiniTileMesh(I,a,o);break;case"delatin":h=this.getDelatinTileMesh(I,a,E,o)}l=o}const{vertices:c}=h;let{triangles:w}=h,D=this.getMeshAttributes(c,l,a,E,A.bounds,n);const d=t(D);if(r){const A=r*n;if(A>0){const{attributes:g,triangles:I}=Fg(D,w,A);D=g,w=I}}const y=257===a?257:a+1,G=257===E?257:E+1,u={map:{loaderData:{header:{}},header:{vertexCount:w.length,boundingBox:d},mode:4,indices:{value:Uint32Array.from(w),size:1},attributes:D},raw:o,width:y,height:G},S=!!g.skipTexture;if(Q&&g.useSwissRelief){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,C=this.preserveNoDataForKernel(s,A.rasters[0],g.noDataValue),e=bg.composeSwissRelief(C,g,I,256,256);if(u.rawDerived=e,!S&&this.hasVisualizationOptions(g)){const A=this.cropRaster(o,y,G,256,256),I=await mg.generate({width:256,height:256,rasters:[A,e]},{...g,type:"image"});u.texture=I.map}}else if(Q&&(g.useSlope||g.useHillshade)){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,C=g.zFactor??1;g.useSlope&&g.useHillshade&&console.warn("[TerrainGenerator] useSlope and useHillshade are mutually exclusive; useSlope takes precedence.");const e=this.preserveNoDataForKernel(s,A.rasters[0],g.noDataValue);let i;if(i=g.useSlope?Mg.calculateSlope(e,I,C,g.noDataValue):Mg.calculateHillshade(e,I,g.hillshadeAzimuth??315,g.hillshadeAltitude??45,C,g.noDataValue),u.rawDerived=i,!S&&this.hasVisualizationOptions(g)){const A=await mg.generate({width:256,height:256,rasters:[i]},{...g,type:"image"});u.texture=A.map}}else if(!S&&this.hasVisualizationOptions(g)){const I=g.multiplier??1,C=g.noDataValue,e=A.rasters[0],i=A.width,B=A.height,t=Math.max(1,Math.round(e.length/(i*B))),Q=g.useChannelIndex??(null!=g.useChannel?g.useChannel-1:0),s=new Float32Array(65536);for(let A=0;A<256;A++)for(let g=0;g<256;g++){const o=Math.min(g,i-1),a=e[(Math.min(A,B-1)*i+o)*t+Q],E=Ug(a,C);s[256*A+g]=E?C*I:a*I}const o={...g,type:"image",useChannelIndex:0,numOfChannels:1,noDataValue:void 0!==C?C*I:void 0},a=await mg.generate({width:256,height:256,rasters:[s]},o);u.texture=a.map}return u}static extractMeshRaster(A){const g=257,I=new Float32Array(66049);for(let C=0;C<g;C++)for(let e=0;e<g;e++)I[C*g+e]=A[258*(C+1)+(e+1)];return I}static hasVisualizationOptions(A){return!!(A.useSingleColor||A.useHeatMap||A.useSwissRelief||A.useColorsBasedOnValues||A.useColorClasses)}static preserveNoDataForKernel(A,g,I){const C=new Float32Array(A.length);if(null!=I&&g&&g.length===A.length)for(let e=0;e<A.length;e++){const i=Ug(g[e],I);C[e]=i?I:A[e]}else C.set(A);return C}static cropRaster(A,g,I,C,e){const i=new Float32Array(C*e);for(let I=0;I<e;I++)for(let e=0;e<C;e++)i[I*C+e]=A[I*g+e];return i}static computeTerrainData(A,g){const{width:I,height:C,rasters:e}=A,i={...g};i.useChannelIndex??=null==i.useChannel?null:i.useChannel-1;const B=e.length>1,t=B?e[i.useChannelIndex??0]??e[0]:e[0],Q=258===I,s=257===I,o=new Float32Array((Q?258:s?257:I+1)*(Q?258:s?257:C+1)),a=B?1:t.length/(I*C);let E=B?0:i.useChannelIndex??0;const r=g.terrainMinValue??0;for(let A=0;A<C;A++)for(let C=0;C<I;C++){const e=g.multiplier??1;let i=Ug(t[E],g.noDataValue)?r:t[E]*e;(Number.isNaN(i)||i<-34e37||i>34e37)&&(i=r);o[Q||s?A*I+C:A*(I+1)+C]=i,E+=a}if(!Q&&!s){for(let A=(I+1)*I,g=0;g<I;g++,A++)o[A]=o[A-I-1];for(let A=C,g=0;g<C+1;g++,A+=C+1)o[A]=o[A-1]}return o}static getMartiniTileMesh(A,g,I){const C=new fg(257===g?257:g+1).createTile(I),{vertices:e,triangles:i}=C.getMesh(A);return{vertices:e,triangles:i}}static getDelatinTileMesh(A,g,I,C){const e=new Rg(C,257===g?257:g+1,257===I?257:I+1);e.run(A);const{coords:i,triangles:B}=e;return{vertices:i,triangles:B}}static getMeshAttributes(A,g,I,C,e,i=1){const B=257===I?257:I+1,t=A.length/2,Q=new Float32Array(3*t),s=new Float32Array(2*t),[o,a,E,r]=e||[0,0,I,C],n=257===I?I-1:I,h=257===C?C-1:C,l=(E-o)/n,c=(r-a)/h;for(let I=0;I<t;I++){const C=A[2*I],e=A[2*I+1],t=e*B+C;Q[3*I]=C*l+o,Q[3*I+1]=-e*c+r,Q[3*I+2]=g[t]*i,s[2*I]=C/n,s[2*I+1]=e/h}return{POSITION:{value:Q,size:3},TEXCOORD_0:{value:s,size:2}}}}class Hg{data;async setUrl(A){const g=await fetch(A),I=await g.arrayBuffer(),C=await ug(I),e=await C.getImage(0);this.data=e}async getMap(A,g,I,C,e){const i=Hg.resolveVisualizationMode({...Sg,...g},g);switch(i.type){case"image":return this.getBitmap(A,i);case"terrain":return this.getHeightmap(A,i,I,C,e);default:return null}}static resolveVisualizationMode(A,g){const I=["useSingleColor","useColorClasses","useColorsBasedOnValues","useHeatMap"],C=I.filter(A=>!0===g[A]),e={...A};if(C.length>0){for(const A of I)e[A]=!1;for(const A of C)e[A]=!0}else if("terrain"===A.type){(g.useSwissRelief||g.useSlope||g.useHillshade)&&!A.skipTexture||(e.useHeatMap=!1,e.useSingleColor=!0,e.color=A.terrainColor)}return e}async getHeightmap(A,g,I,C,e){let i,B,t,Q,s=[];return"string"==typeof A?(await this.setUrl(A),s=await this.data.readRasters(),i=this.data.getWidth(),B=this.data.getHeight(),t=this.data.getBoundingBox()):(s=A.rasters,i=A.width,B=A.height,t=A.bounds,Q=A.cellSizeMeters),await Kg.generate({width:i,height:B,rasters:s,bounds:t,cellSizeMeters:Q},g,I,C,e)}async getBitmap(A,g){let I,C,e=[];return"string"==typeof A?(await this.setUrl(A),e=await this.data.readRasters(),I=this.data.getWidth(),C=this.data.getHeight()):(e=A.rasters,I=A.width,C=A.height),mg.generate({width:I,height:C,rasters:e},g)}}function Jg(A,g,I){var C=function(A){return atob(A)}(A),e=C.indexOf("\n",10)+1,i=C.substring(e)+"",B=new Blob([i],{type:"application/javascript"});return URL.createObjectURL(B)}function xg(A,g,I){var C;return function(g){return C=C||Jg(A),new Worker(C,g)}}var Zg=xg("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGNsYXNzIE1hcnRpbmkgewogICAgICAgIGNvbnN0cnVjdG9yKGdyaWRTaXplID0gMjU3KSB7CiAgICAgICAgICAgIHRoaXMuZ3JpZFNpemUgPSBncmlkU2l6ZTsKICAgICAgICAgICAgY29uc3QgdGlsZVNpemUgPSBncmlkU2l6ZSAtIDE7CiAgICAgICAgICAgIGlmICh0aWxlU2l6ZSAmICh0aWxlU2l6ZSAtIDEpKSB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICBgRXhwZWN0ZWQgZ3JpZCBzaXplIHRvIGJlIDJebisxLCBnb3QgJHtncmlkU2l6ZX0uYCk7CgogICAgICAgICAgICB0aGlzLm51bVRyaWFuZ2xlcyA9IHRpbGVTaXplICogdGlsZVNpemUgKiAyIC0gMjsKICAgICAgICAgICAgdGhpcy5udW1QYXJlbnRUcmlhbmdsZXMgPSB0aGlzLm51bVRyaWFuZ2xlcyAtIHRpbGVTaXplICogdGlsZVNpemU7CgogICAgICAgICAgICB0aGlzLmluZGljZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5ncmlkU2l6ZSAqIHRoaXMuZ3JpZFNpemUpOwoKICAgICAgICAgICAgLy8gY29vcmRpbmF0ZXMgZm9yIGFsbCBwb3NzaWJsZSB0cmlhbmdsZXMgaW4gYW4gUlRJTiB0aWxlCiAgICAgICAgICAgIHRoaXMuY29vcmRzID0gbmV3IFVpbnQxNkFycmF5KHRoaXMubnVtVHJpYW5nbGVzICogNCk7CgogICAgICAgICAgICAvLyBnZXQgdHJpYW5nbGUgY29vcmRpbmF0ZXMgZnJvbSBpdHMgaW5kZXggaW4gYW4gaW1wbGljaXQgYmluYXJ5IHRyZWUKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bVRyaWFuZ2xlczsgaSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgaWQgPSBpICsgMjsKICAgICAgICAgICAgICAgIGxldCBheCA9IDAsIGF5ID0gMCwgYnggPSAwLCBieSA9IDAsIGN4ID0gMCwgY3kgPSAwOwogICAgICAgICAgICAgICAgaWYgKGlkICYgMSkgewogICAgICAgICAgICAgICAgICAgIGJ4ID0gYnkgPSBjeCA9IHRpbGVTaXplOyAvLyBib3R0b20tbGVmdCB0cmlhbmdsZQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBheCA9IGF5ID0gY3kgPSB0aWxlU2l6ZTsgLy8gdG9wLXJpZ2h0IHRyaWFuZ2xlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSAoKGlkID4+PSAxKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBteCA9IChheCArIGJ4KSA+PiAxOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG15ID0gKGF5ICsgYnkpID4+IDE7CgogICAgICAgICAgICAgICAgICAgIGlmIChpZCAmIDEpIHsgLy8gbGVmdCBoYWxmCiAgICAgICAgICAgICAgICAgICAgICAgIGJ4ID0gYXg7IGJ5ID0gYXk7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4ID0gY3g7IGF5ID0gY3k7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gcmlnaHQgaGFsZgogICAgICAgICAgICAgICAgICAgICAgICBheCA9IGJ4OyBheSA9IGJ5OwogICAgICAgICAgICAgICAgICAgICAgICBieCA9IGN4OyBieSA9IGN5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjeCA9IG14OyBjeSA9IG15OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgayA9IGkgKiA0OwogICAgICAgICAgICAgICAgdGhpcy5jb29yZHNbayArIDBdID0gYXg7CiAgICAgICAgICAgICAgICB0aGlzLmNvb3Jkc1trICsgMV0gPSBheTsKICAgICAgICAgICAgICAgIHRoaXMuY29vcmRzW2sgKyAyXSA9IGJ4OwogICAgICAgICAgICAgICAgdGhpcy5jb29yZHNbayArIDNdID0gYnk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNyZWF0ZVRpbGUodGVycmFpbikgewogICAgICAgICAgICByZXR1cm4gbmV3IFRpbGUodGVycmFpbiwgdGhpcyk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIFRpbGUgewogICAgICAgIGNvbnN0cnVjdG9yKHRlcnJhaW4sIG1hcnRpbmkpIHsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IG1hcnRpbmkuZ3JpZFNpemU7CiAgICAgICAgICAgIGlmICh0ZXJyYWluLmxlbmd0aCAhPT0gc2l6ZSAqIHNpemUpIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgIGBFeHBlY3RlZCB0ZXJyYWluIGRhdGEgb2YgbGVuZ3RoICR7c2l6ZSAqIHNpemV9ICgke3NpemV9IHggJHtzaXplfSksIGdvdCAke3RlcnJhaW4ubGVuZ3RofS5gKTsKCiAgICAgICAgICAgIHRoaXMudGVycmFpbiA9IHRlcnJhaW47CiAgICAgICAgICAgIHRoaXMubWFydGluaSA9IG1hcnRpbmk7CiAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gbmV3IEZsb2F0MzJBcnJheSh0ZXJyYWluLmxlbmd0aCk7CiAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgICAgfQoKICAgICAgICB1cGRhdGUoKSB7CiAgICAgICAgICAgIGNvbnN0IHtudW1UcmlhbmdsZXMsIG51bVBhcmVudFRyaWFuZ2xlcywgY29vcmRzLCBncmlkU2l6ZTogc2l6ZX0gPSB0aGlzLm1hcnRpbmk7CiAgICAgICAgICAgIGNvbnN0IHt0ZXJyYWluLCBlcnJvcnN9ID0gdGhpczsKCiAgICAgICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgdHJpYW5nbGVzLCBzdGFydGluZyBmcm9tIHRoZSBzbWFsbGVzdCBsZXZlbAogICAgICAgICAgICBmb3IgKGxldCBpID0gbnVtVHJpYW5nbGVzIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgIGNvbnN0IGsgPSBpICogNDsKICAgICAgICAgICAgICAgIGNvbnN0IGF4ID0gY29vcmRzW2sgKyAwXTsKICAgICAgICAgICAgICAgIGNvbnN0IGF5ID0gY29vcmRzW2sgKyAxXTsKICAgICAgICAgICAgICAgIGNvbnN0IGJ4ID0gY29vcmRzW2sgKyAyXTsKICAgICAgICAgICAgICAgIGNvbnN0IGJ5ID0gY29vcmRzW2sgKyAzXTsKICAgICAgICAgICAgICAgIGNvbnN0IG14ID0gKGF4ICsgYngpID4+IDE7CiAgICAgICAgICAgICAgICBjb25zdCBteSA9IChheSArIGJ5KSA+PiAxOwogICAgICAgICAgICAgICAgY29uc3QgY3ggPSBteCArIG15IC0gYXk7CiAgICAgICAgICAgICAgICBjb25zdCBjeSA9IG15ICsgYXggLSBteDsKCiAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgZXJyb3IgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbG9uZyBlZGdlIG9mIHRoZSB0cmlhbmdsZQogICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkSGVpZ2h0ID0gKHRlcnJhaW5bYXkgKiBzaXplICsgYXhdICsgdGVycmFpbltieSAqIHNpemUgKyBieF0pIC8gMjsKICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZUluZGV4ID0gbXkgKiBzaXplICsgbXg7CiAgICAgICAgICAgICAgICBjb25zdCBtaWRkbGVFcnJvciA9IE1hdGguYWJzKGludGVycG9sYXRlZEhlaWdodCAtIHRlcnJhaW5bbWlkZGxlSW5kZXhdKTsKCiAgICAgICAgICAgICAgICBlcnJvcnNbbWlkZGxlSW5kZXhdID0gTWF0aC5tYXgoZXJyb3JzW21pZGRsZUluZGV4XSwgbWlkZGxlRXJyb3IpOwoKICAgICAgICAgICAgICAgIGlmIChpIDwgbnVtUGFyZW50VHJpYW5nbGVzKSB7IC8vIGJpZ2dlciB0cmlhbmdsZXM7IGFjY3VtdWxhdGUgZXJyb3Igd2l0aCBjaGlsZHJlbgogICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRDaGlsZEluZGV4ID0gKChheSArIGN5KSA+PiAxKSAqIHNpemUgKyAoKGF4ICsgY3gpID4+IDEpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Q2hpbGRJbmRleCA9ICgoYnkgKyBjeSkgPj4gMSkgKiBzaXplICsgKChieCArIGN4KSA+PiAxKTsKICAgICAgICAgICAgICAgICAgICBlcnJvcnNbbWlkZGxlSW5kZXhdID0gTWF0aC5tYXgoZXJyb3JzW21pZGRsZUluZGV4XSwgZXJyb3JzW2xlZnRDaGlsZEluZGV4XSwgZXJyb3JzW3JpZ2h0Q2hpbGRJbmRleF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBnZXRNZXNoKG1heEVycm9yID0gMCkgewogICAgICAgICAgICBjb25zdCB7Z3JpZFNpemU6IHNpemUsIGluZGljZXN9ID0gdGhpcy5tYXJ0aW5pOwogICAgICAgICAgICBjb25zdCB7ZXJyb3JzfSA9IHRoaXM7CiAgICAgICAgICAgIGxldCBudW1WZXJ0aWNlcyA9IDA7CiAgICAgICAgICAgIGxldCBudW1UcmlhbmdsZXMgPSAwOwogICAgICAgICAgICBjb25zdCBtYXggPSBzaXplIC0gMTsKCiAgICAgICAgICAgIC8vIHVzZSBhbiBpbmRleCBncmlkIHRvIGtlZXAgdHJhY2sgb2YgdmVydGljZXMgdGhhdCB3ZXJlIGFscmVhZHkgdXNlZCB0byBhdm9pZCBkdXBsaWNhdGlvbgogICAgICAgICAgICBpbmRpY2VzLmZpbGwoMCk7CgogICAgICAgICAgICAvLyByZXRyaWV2ZSBtZXNoIGluIHR3byBzdGFnZXMgdGhhdCBib3RoIHRyYXZlcnNlIHRoZSBlcnJvciBtYXA6CiAgICAgICAgICAgIC8vIC0gY291bnRFbGVtZW50czogZmluZCB1c2VkIHZlcnRpY2VzIChhbmQgYXNzaWduIGVhY2ggYW4gaW5kZXgpLCBhbmQgY291bnQgdHJpYW5nbGVzIChmb3IgbWluaW11bSBhbGxvY2F0aW9uKQogICAgICAgICAgICAvLyAtIHByb2Nlc3NUcmlhbmdsZTogZmlsbCB0aGUgYWxsb2NhdGVkIHZlcnRpY2VzICYgdHJpYW5nbGVzIHR5cGVkIGFycmF5cwoKICAgICAgICAgICAgZnVuY3Rpb24gY291bnRFbGVtZW50cyhheCwgYXksIGJ4LCBieSwgY3gsIGN5KSB7CiAgICAgICAgICAgICAgICBjb25zdCBteCA9IChheCArIGJ4KSA+PiAxOwogICAgICAgICAgICAgICAgY29uc3QgbXkgPSAoYXkgKyBieSkgPj4gMTsKCiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoYXggLSBjeCkgKyBNYXRoLmFicyhheSAtIGN5KSA+IDEgJiYgZXJyb3JzW215ICogc2l6ZSArIG14XSA+IG1heEVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgY291bnRFbGVtZW50cyhjeCwgY3ksIGF4LCBheSwgbXgsIG15KTsKICAgICAgICAgICAgICAgICAgICBjb3VudEVsZW1lbnRzKGJ4LCBieSwgY3gsIGN5LCBteCwgbXkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2F5ICogc2l6ZSArIGF4XSA9IGluZGljZXNbYXkgKiBzaXplICsgYXhdIHx8ICsrbnVtVmVydGljZXM7CiAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tieSAqIHNpemUgKyBieF0gPSBpbmRpY2VzW2J5ICogc2l6ZSArIGJ4XSB8fCArK251bVZlcnRpY2VzOwogICAgICAgICAgICAgICAgICAgIGluZGljZXNbY3kgKiBzaXplICsgY3hdID0gaW5kaWNlc1tjeSAqIHNpemUgKyBjeF0gfHwgKytudW1WZXJ0aWNlczsKICAgICAgICAgICAgICAgICAgICBudW1UcmlhbmdsZXMrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb3VudEVsZW1lbnRzKDAsIDAsIG1heCwgbWF4LCBtYXgsIDApOwogICAgICAgICAgICBjb3VudEVsZW1lbnRzKG1heCwgbWF4LCAwLCAwLCAwLCBtYXgpOwoKICAgICAgICAgICAgY29uc3QgdmVydGljZXMgPSBuZXcgVWludDE2QXJyYXkobnVtVmVydGljZXMgKiAyKTsKICAgICAgICAgICAgY29uc3QgdHJpYW5nbGVzID0gbmV3IFVpbnQzMkFycmF5KG51bVRyaWFuZ2xlcyAqIDMpOwogICAgICAgICAgICBsZXQgdHJpSW5kZXggPSAwOwoKICAgICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1RyaWFuZ2xlKGF4LCBheSwgYngsIGJ5LCBjeCwgY3kpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG14ID0gKGF4ICsgYngpID4+IDE7CiAgICAgICAgICAgICAgICBjb25zdCBteSA9IChheSArIGJ5KSA+PiAxOwoKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhheCAtIGN4KSArIE1hdGguYWJzKGF5IC0gY3kpID4gMSAmJiBlcnJvcnNbbXkgKiBzaXplICsgbXhdID4gbWF4RXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvLyB0cmlhbmdsZSBkb2Vzbid0IGFwcHJveGltYXRlIHRoZSBzdXJmYWNlIHdlbGwgZW5vdWdoOyBkcmlsbCBkb3duIGZ1cnRoZXIKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzVHJpYW5nbGUoY3gsIGN5LCBheCwgYXksIG14LCBteSk7CiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1RyaWFuZ2xlKGJ4LCBieSwgY3gsIGN5LCBteCwgbXkpOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gYWRkIGEgdHJpYW5nbGUKICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gaW5kaWNlc1theSAqIHNpemUgKyBheF0gLSAxOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBpbmRpY2VzW2J5ICogc2l6ZSArIGJ4XSAtIDE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IGluZGljZXNbY3kgKiBzaXplICsgY3hdIC0gMTsKCiAgICAgICAgICAgICAgICAgICAgdmVydGljZXNbMiAqIGFdID0gYXg7CiAgICAgICAgICAgICAgICAgICAgdmVydGljZXNbMiAqIGEgKyAxXSA9IGF5OwoKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNlc1syICogYl0gPSBieDsKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNlc1syICogYiArIDFdID0gYnk7CgogICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzWzIgKiBjXSA9IGN4OwogICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzWzIgKiBjICsgMV0gPSBjeTsKCiAgICAgICAgICAgICAgICAgICAgdHJpYW5nbGVzW3RyaUluZGV4KytdID0gYTsKICAgICAgICAgICAgICAgICAgICB0cmlhbmdsZXNbdHJpSW5kZXgrK10gPSBiOwogICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlc1t0cmlJbmRleCsrXSA9IGM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvY2Vzc1RyaWFuZ2xlKDAsIDAsIG1heCwgbWF4LCBtYXgsIDApOwogICAgICAgICAgICBwcm9jZXNzVHJpYW5nbGUobWF4LCBtYXgsIDAsIDAsIDAsIG1heCk7CgogICAgICAgICAgICByZXR1cm4ge3ZlcnRpY2VzLCB0cmlhbmdsZXN9OwogICAgICAgIH0KICAgIH0KCiAgICAvLyBsb2FkZXJzLmdsCiAgICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAgICAvLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnMKICAgIC8vIElTQyBMaWNlbnNlCiAgICAvLyBDb3B5cmlnaHQoYykgMjAxOSwgTWljaGFlbCBGb2dsZW1hbiwgVmxhZGltaXIgQWdhZm9ua2luCiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQgKi8KICAgIC8vIEB0cy1ub2NoZWNrCiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqLwogICAgZnVuY3Rpb24gb3JpZW50KGF4LCBheSwgYngsIGJ5LCBjeCwgY3kpIHsKICAgICAgICByZXR1cm4gKGJ4IC0gY3gpICogKGF5IC0gY3kpIC0gKGJ5IC0gY3kpICogKGF4IC0gY3gpOwogICAgfQogICAgY2xhc3MgRGVsYXRpbiB7CiAgICAgICAgY29uc3RydWN0b3IoZGF0YSwgd2lkdGgsIGhlaWdodCA9IHdpZHRoKSB7CiAgICAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7IC8vIGhlaWdodCBkYXRhCiAgICAgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDsKICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICAgICAgICAgIHRoaXMuY29vcmRzID0gW107IC8vIHZlcnRleCBjb29yZGluYXRlcyAoeCwgeSkKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXMgPSBbXTsgLy8gbWVzaCB0cmlhbmdsZSBpbmRpY2VzCiAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgdHJpYW5nbGUgZGF0YQogICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fY2FuZGlkYXRlcyA9IFtdOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fcXVldWUgPSBbXTsgLy8gcXVldWUgb2YgYWRkZWQgdHJpYW5nbGVzCiAgICAgICAgICAgIHRoaXMuX2Vycm9ycyA9IFtdOwogICAgICAgICAgICB0aGlzLl9ybXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fcGVuZGluZyA9IFtdOyAvLyB0cmlhbmdsZXMgcGVuZGluZyBhZGRpdGlvbiB0byBxdWV1ZQogICAgICAgICAgICB0aGlzLl9wZW5kaW5nTGVuID0gMDsKICAgICAgICAgICAgdGhpcy5fcm1zU3VtID0gMDsKICAgICAgICAgICAgY29uc3QgeDEgPSB3aWR0aCAtIDE7CiAgICAgICAgICAgIGNvbnN0IHkxID0gaGVpZ2h0IC0gMTsKICAgICAgICAgICAgY29uc3QgcDAgPSB0aGlzLl9hZGRQb2ludCgwLCAwKTsKICAgICAgICAgICAgY29uc3QgcDEgPSB0aGlzLl9hZGRQb2ludCh4MSwgMCk7CiAgICAgICAgICAgIGNvbnN0IHAyID0gdGhpcy5fYWRkUG9pbnQoMCwgeTEpOwogICAgICAgICAgICBjb25zdCBwMyA9IHRoaXMuX2FkZFBvaW50KHgxLCB5MSk7CiAgICAgICAgICAgIC8vIGFkZCBpbml0aWFsIHR3byB0cmlhbmdsZXMKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMywgcDAsIHAyLCAtMSwgLTEsIC0xKTsKICAgICAgICAgICAgdGhpcy5fYWRkVHJpYW5nbGUocDAsIHAzLCBwMSwgdDAsIC0xLCAtMSk7CiAgICAgICAgICAgIHRoaXMuX2ZsdXNoKCk7CiAgICAgICAgfQogICAgICAgIC8vIHJlZmluZSB0aGUgbWVzaCB1bnRpbCBpdHMgbWF4aW11bSBlcnJvciBnZXRzIGJlbG93IHRoZSBnaXZlbiBvbmUKICAgICAgICBydW4obWF4RXJyb3IgPSAxKSB7CiAgICAgICAgICAgIHdoaWxlICh0aGlzLmdldE1heEVycm9yKCkgPiBtYXhFcnJvcikgewogICAgICAgICAgICAgICAgdGhpcy5yZWZpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyByZWZpbmUgdGhlIG1lc2ggd2l0aCBhIHNpbmdsZSBwb2ludAogICAgICAgIHJlZmluZSgpIHsKICAgICAgICAgICAgdGhpcy5fc3RlcCgpOwogICAgICAgICAgICB0aGlzLl9mbHVzaCgpOwogICAgICAgIH0KICAgICAgICAvLyBtYXggZXJyb3Igb2YgdGhlIGN1cnJlbnQgbWVzaAogICAgICAgIGdldE1heEVycm9yKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzWzBdOwogICAgICAgIH0KICAgICAgICAvLyByb290LW1lYW4tc3F1YXJlIGRldmlhdGlvbiBvZiB0aGUgY3VycmVudCBtZXNoCiAgICAgICAgZ2V0Uk1TRCgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jtc1N1bSA+IDAgPyBNYXRoLnNxcnQodGhpcy5fcm1zU3VtIC8gKHRoaXMud2lkdGggKiB0aGlzLmhlaWdodCkpIDogMDsKICAgICAgICB9CiAgICAgICAgLy8gaGVpZ2h0IHZhbHVlIGF0IGEgZ2l2ZW4gcG9zaXRpb24KICAgICAgICBoZWlnaHRBdCh4LCB5KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbdGhpcy53aWR0aCAqIHkgKyB4XTsKICAgICAgICB9CiAgICAgICAgLy8gcmFzdGVyaXplIGFuZCBxdWV1ZSBhbGwgdHJpYW5nbGVzIHRoYXQgZ290IGFkZGVkIG9yIHVwZGF0ZWQgaW4gX3N0ZXAKICAgICAgICBfZmx1c2goKSB7CiAgICAgICAgICAgIGNvbnN0IHsgY29vcmRzIH0gPSB0aGlzOwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BlbmRpbmdMZW47IGkrKykgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3BlbmRpbmdbaV07CiAgICAgICAgICAgICAgICAvLyByYXN0ZXJpemUgdHJpYW5nbGUgdG8gZmluZCBtYXhpbXVtIHBpeGVsIGVycm9yCiAgICAgICAgICAgICAgICBjb25zdCBhID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMF07CiAgICAgICAgICAgICAgICBjb25zdCBiID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMV07CiAgICAgICAgICAgICAgICBjb25zdCBjID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMl07CiAgICAgICAgICAgICAgICB0aGlzLl9maW5kQ2FuZGlkYXRlKGNvb3Jkc1thXSwgY29vcmRzW2EgKyAxXSwgY29vcmRzW2JdLCBjb29yZHNbYiArIDFdLCBjb29yZHNbY10sIGNvb3Jkc1tjICsgMV0sIHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdMZW4gPSAwOwogICAgICAgIH0KICAgICAgICAvLyByYXN0ZXJpemUgYSB0cmlhbmdsZSwgZmluZCBpdHMgbWF4IGVycm9yLCBhbmQgcXVldWUgaXQgZm9yIHByb2Nlc3NpbmcKICAgICAgICBfZmluZENhbmRpZGF0ZShwMHgsIHAweSwgcDF4LCBwMXksIHAyeCwgcDJ5LCB0KSB7CiAgICAgICAgICAgIC8vIHRyaWFuZ2xlIGJvdW5kaW5nIGJveAogICAgICAgICAgICBjb25zdCBtaW5YID0gTWF0aC5taW4ocDB4LCBwMXgsIHAyeCk7CiAgICAgICAgICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbihwMHksIHAxeSwgcDJ5KTsKICAgICAgICAgICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KHAweCwgcDF4LCBwMngpOwogICAgICAgICAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgocDB5LCBwMXksIHAyeSk7CiAgICAgICAgICAgIC8vIGZvcndhcmQgZGlmZmVyZW5jaW5nIHZhcmlhYmxlcwogICAgICAgICAgICBsZXQgdzAwID0gb3JpZW50KHAxeCwgcDF5LCBwMngsIHAyeSwgbWluWCwgbWluWSk7CiAgICAgICAgICAgIGxldCB3MDEgPSBvcmllbnQocDJ4LCBwMnksIHAweCwgcDB5LCBtaW5YLCBtaW5ZKTsKICAgICAgICAgICAgbGV0IHcwMiA9IG9yaWVudChwMHgsIHAweSwgcDF4LCBwMXksIG1pblgsIG1pblkpOwogICAgICAgICAgICBjb25zdCBhMDEgPSBwMXkgLSBwMHk7CiAgICAgICAgICAgIGNvbnN0IGIwMSA9IHAweCAtIHAxeDsKICAgICAgICAgICAgY29uc3QgYTEyID0gcDJ5IC0gcDF5OwogICAgICAgICAgICBjb25zdCBiMTIgPSBwMXggLSBwMng7CiAgICAgICAgICAgIGNvbnN0IGEyMCA9IHAweSAtIHAyeTsKICAgICAgICAgICAgY29uc3QgYjIwID0gcDJ4IC0gcDB4OwogICAgICAgICAgICAvLyBwcmUtbXVsdGlwbGllZCB6IHZhbHVlcyBhdCB2ZXJ0aWNlcwogICAgICAgICAgICBjb25zdCBhID0gb3JpZW50KHAweCwgcDB5LCBwMXgsIHAxeSwgcDJ4LCBwMnkpOwogICAgICAgICAgICBjb25zdCB6MCA9IHRoaXMuaGVpZ2h0QXQocDB4LCBwMHkpIC8gYTsKICAgICAgICAgICAgY29uc3QgejEgPSB0aGlzLmhlaWdodEF0KHAxeCwgcDF5KSAvIGE7CiAgICAgICAgICAgIGNvbnN0IHoyID0gdGhpcy5oZWlnaHRBdChwMngsIHAyeSkgLyBhOwogICAgICAgICAgICAvLyBpdGVyYXRlIG92ZXIgcGl4ZWxzIGluIGJvdW5kaW5nIGJveAogICAgICAgICAgICBsZXQgbWF4RXJyb3IgPSAwOwogICAgICAgICAgICBsZXQgbXggPSAwOwogICAgICAgICAgICBsZXQgbXkgPSAwOwogICAgICAgICAgICBsZXQgcm1zID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgeSA9IG1pblk7IHkgPD0gbWF4WTsgeSsrKSB7CiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHN0YXJ0aW5nIG9mZnNldAogICAgICAgICAgICAgICAgbGV0IGR4ID0gMDsKICAgICAgICAgICAgICAgIGlmICh3MDAgPCAwICYmIGExMiAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGR4ID0gTWF0aC5tYXgoZHgsIE1hdGguZmxvb3IoLXcwMCAvIGExMikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHcwMSA8IDAgJiYgYTIwICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZHggPSBNYXRoLm1heChkeCwgTWF0aC5mbG9vcigtdzAxIC8gYTIwKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodzAyIDwgMCAmJiBhMDEgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICBkeCA9IE1hdGgubWF4KGR4LCBNYXRoLmZsb29yKC13MDIgLyBhMDEpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxldCB3MCA9IHcwMCArIGExMiAqIGR4OwogICAgICAgICAgICAgICAgbGV0IHcxID0gdzAxICsgYTIwICogZHg7CiAgICAgICAgICAgICAgICBsZXQgdzIgPSB3MDIgKyBhMDEgKiBkeDsKICAgICAgICAgICAgICAgIGxldCB3YXNJbnNpZGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvciAobGV0IHggPSBtaW5YICsgZHg7IHggPD0gbWF4WDsgeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaW5zaWRlIHRyaWFuZ2xlCiAgICAgICAgICAgICAgICAgICAgaWYgKHcwID49IDAgJiYgdzEgPj0gMCAmJiB3MiA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdhc0luc2lkZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgeiB1c2luZyBiYXJ5Y2VudHJpYyBjb29yZGluYXRlcwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB6ID0gejAgKiB3MCArIHoxICogdzEgKyB6MiAqIHcyOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkeiA9IE1hdGguYWJzKHogLSB0aGlzLmhlaWdodEF0KHgsIHkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcm1zICs9IGR6ICogZHo7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkeiA+IG1heEVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhFcnJvciA9IGR6OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXggPSB4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgPSB5OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhc0luc2lkZSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdzAgKz0gYTEyOwogICAgICAgICAgICAgICAgICAgIHcxICs9IGEyMDsKICAgICAgICAgICAgICAgICAgICB3MiArPSBhMDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3MDAgKz0gYjEyOwogICAgICAgICAgICAgICAgdzAxICs9IGIyMDsKICAgICAgICAgICAgICAgIHcwMiArPSBiMDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKChteCA9PT0gcDB4ICYmIG15ID09PSBwMHkpIHx8IChteCA9PT0gcDF4ICYmIG15ID09PSBwMXkpIHx8IChteCA9PT0gcDJ4ICYmIG15ID09PSBwMnkpKSB7CiAgICAgICAgICAgICAgICBtYXhFcnJvciA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gdXBkYXRlIHRyaWFuZ2xlIG1ldGFkYXRhCiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHRdID0gbXg7CiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAxXSA9IG15OwogICAgICAgICAgICB0aGlzLl9ybXNbdF0gPSBybXM7CiAgICAgICAgICAgIC8vIGFkZCB0cmlhbmdsZSB0byBwcmlvcml0eSBxdWV1ZQogICAgICAgICAgICB0aGlzLl9xdWV1ZVB1c2godCwgbWF4RXJyb3IsIHJtcyk7CiAgICAgICAgfQogICAgICAgIC8vIHByb2Nlc3MgdGhlIG5leHQgdHJpYW5nbGUgaW4gdGhlIHF1ZXVlLCBzcGxpdHRpbmcgaXQgd2l0aCBhIG5ldyBwb2ludAogICAgICAgIF9zdGVwKCkgewogICAgICAgICAgICAvLyBwb3AgdHJpYW5nbGUgd2l0aCBoaWdoZXN0IGVycm9yIGZyb20gcHJpb3JpdHkgcXVldWUKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3F1ZXVlUG9wKCk7CiAgICAgICAgICAgIGNvbnN0IGUwID0gdCAqIDMgKyAwOwogICAgICAgICAgICBjb25zdCBlMSA9IHQgKiAzICsgMTsKICAgICAgICAgICAgY29uc3QgZTIgPSB0ICogMyArIDI7CiAgICAgICAgICAgIGNvbnN0IHAwID0gdGhpcy50cmlhbmdsZXNbZTBdOwogICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMudHJpYW5nbGVzW2UxXTsKICAgICAgICAgICAgY29uc3QgcDIgPSB0aGlzLnRyaWFuZ2xlc1tlMl07CiAgICAgICAgICAgIGNvbnN0IGF4ID0gdGhpcy5jb29yZHNbMiAqIHAwXTsKICAgICAgICAgICAgY29uc3QgYXkgPSB0aGlzLmNvb3Jkc1syICogcDAgKyAxXTsKICAgICAgICAgICAgY29uc3QgYnggPSB0aGlzLmNvb3Jkc1syICogcDFdOwogICAgICAgICAgICBjb25zdCBieSA9IHRoaXMuY29vcmRzWzIgKiBwMSArIDFdOwogICAgICAgICAgICBjb25zdCBjeCA9IHRoaXMuY29vcmRzWzIgKiBwMl07CiAgICAgICAgICAgIGNvbnN0IGN5ID0gdGhpcy5jb29yZHNbMiAqIHAyICsgMV07CiAgICAgICAgICAgIGNvbnN0IHB4ID0gdGhpcy5fY2FuZGlkYXRlc1syICogdF07CiAgICAgICAgICAgIGNvbnN0IHB5ID0gdGhpcy5fY2FuZGlkYXRlc1syICogdCArIDFdOwogICAgICAgICAgICBjb25zdCBwbiA9IHRoaXMuX2FkZFBvaW50KHB4LCBweSk7CiAgICAgICAgICAgIGlmIChvcmllbnQoYXgsIGF5LCBieCwgYnksIHB4LCBweSkgPT09IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNvbGxpbmVhcihwbiwgZTApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKG9yaWVudChieCwgYnksIGN4LCBjeSwgcHgsIHB5KSA9PT0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlQ29sbGluZWFyKHBuLCBlMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAob3JpZW50KGN4LCBjeSwgYXgsIGF5LCBweCwgcHkpID09PSAwKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDb2xsaW5lYXIocG4sIGUyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IGgwID0gdGhpcy5faGFsZmVkZ2VzW2UwXTsKICAgICAgICAgICAgICAgIGNvbnN0IGgxID0gdGhpcy5faGFsZmVkZ2VzW2UxXTsKICAgICAgICAgICAgICAgIGNvbnN0IGgyID0gdGhpcy5faGFsZmVkZ2VzW2UyXTsKICAgICAgICAgICAgICAgIGNvbnN0IHQwID0gdGhpcy5fYWRkVHJpYW5nbGUocDAsIHAxLCBwbiwgaDAsIC0xLCAtMSwgZTApOwogICAgICAgICAgICAgICAgY29uc3QgdDEgPSB0aGlzLl9hZGRUcmlhbmdsZShwMSwgcDIsIHBuLCBoMSwgLTEsIHQwICsgMSk7CiAgICAgICAgICAgICAgICBjb25zdCB0MiA9IHRoaXMuX2FkZFRyaWFuZ2xlKHAyLCBwMCwgcG4sIGgyLCB0MCArIDIsIHQxICsgMSk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0MCk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0MSk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0Mik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gYWRkIGNvb3JkaW5hdGVzIGZvciBhIG5ldyB2ZXJ0ZXgKICAgICAgICBfYWRkUG9pbnQoeCwgeSkgewogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5jb29yZHMubGVuZ3RoID4+IDE7CiAgICAgICAgICAgIHRoaXMuY29vcmRzLnB1c2goeCwgeSk7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgICAgICAvLyBhZGQgb3IgdXBkYXRlIGEgdHJpYW5nbGUgaW4gdGhlIG1lc2gKICAgICAgICBfYWRkVHJpYW5nbGUoYSwgYiwgYywgYWIsIGJjLCBjYSwgZSA9IHRoaXMudHJpYW5nbGVzLmxlbmd0aCkgewogICAgICAgICAgICBjb25zdCB0ID0gZSAvIDM7IC8vIG5ldyB0cmlhbmdsZSBpbmRleAogICAgICAgICAgICAvLyBhZGQgdHJpYW5nbGUgdmVydGljZXMKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDBdID0gYTsKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDFdID0gYjsKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDJdID0gYzsKICAgICAgICAgICAgLy8gYWRkIHRyaWFuZ2xlIGhhbGZlZGdlcwogICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXNbZSArIDBdID0gYWI7CiAgICAgICAgICAgIHRoaXMuX2hhbGZlZGdlc1tlICsgMV0gPSBiYzsKICAgICAgICAgICAgdGhpcy5faGFsZmVkZ2VzW2UgKyAyXSA9IGNhOwogICAgICAgICAgICAvLyBsaW5rIG5laWdoYm9yaW5nIGhhbGZlZGdlcwogICAgICAgICAgICBpZiAoYWIgPj0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5faGFsZmVkZ2VzW2FiXSA9IGUgKyAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiYyA+PSAwKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXNbYmNdID0gZSArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNhID49IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2hhbGZlZGdlc1tjYV0gPSBlICsgMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpbml0IHRyaWFuZ2xlIG1ldGFkYXRhCiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAwXSA9IDA7CiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAxXSA9IDA7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlSW5kaWNlc1t0XSA9IC0xOwogICAgICAgICAgICB0aGlzLl9ybXNbdF0gPSAwOwogICAgICAgICAgICAvLyBhZGQgdHJpYW5nbGUgdG8gcGVuZGluZyBxdWV1ZSBmb3IgbGF0ZXIgcmFzdGVyaXphdGlvbgogICAgICAgICAgICB0aGlzLl9wZW5kaW5nW3RoaXMuX3BlbmRpbmdMZW4rK10gPSB0OwogICAgICAgICAgICAvLyByZXR1cm4gZmlyc3QgaGFsZmVkZ2UgaW5kZXgKICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgfQogICAgICAgIF9sZWdhbGl6ZShhKSB7CiAgICAgICAgICAgIC8vIGlmIHRoZSBwYWlyIG9mIHRyaWFuZ2xlcyBkb2Vzbid0IHNhdGlzZnkgdGhlIERlbGF1bmF5IGNvbmRpdGlvbgogICAgICAgICAgICAvLyAocDEgaXMgaW5zaWRlIHRoZSBjaXJjdW1jaXJjbGUgb2YgW3AwLCBwbCwgcHJdKSwgZmxpcCB0aGVtLAogICAgICAgICAgICAvLyB0aGVuIGRvIHRoZSBzYW1lIGNoZWNrL2ZsaXAgcmVjdXJzaXZlbHkgZm9yIHRoZSBuZXcgcGFpciBvZiB0cmlhbmdsZXMKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICAgICAgICAgIHBsICAgICAgICAgICAgICAgICAgICBwbAogICAgICAgICAgICAvLyAgICAgICAgICAvfHxcICAgICAgICAgICAgICAgICAgLyAgXAogICAgICAgICAgICAvLyAgICAgICBhbC8gfHwgXGJsICAgICAgICAgICAgYWwvICAgIFxhCiAgICAgICAgICAgIC8vICAgICAgICAvICB8fCAgXCAgICAgICAgICAgICAgLyAgICAgIFwKICAgICAgICAgICAgLy8gICAgICAgLyAgYXx8YiAgXCAgICBmbGlwICAgIC9fX19hcl9fX1wKICAgICAgICAgICAgLy8gICAgIHAwXCAgIHx8ICAgL3AxICAgPT4gICBwMFwtLS1ibC0tLS9wMQogICAgICAgICAgICAvLyAgICAgICAgXCAgfHwgIC8gICAgICAgICAgICAgIFwgICAgICAvCiAgICAgICAgICAgIC8vICAgICAgIGFyXCB8fCAvYnIgICAgICAgICAgICAgYlwgICAgL2JyCiAgICAgICAgICAgIC8vICAgICAgICAgIFx8fC8gICAgICAgICAgICAgICAgICBcICAvCiAgICAgICAgICAgIC8vICAgICAgICAgICBwciAgICAgICAgICAgICAgICAgICAgcHIKICAgICAgICAgICAgY29uc3QgYiA9IHRoaXMuX2hhbGZlZGdlc1thXTsKICAgICAgICAgICAgaWYgKGIgPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgYTAgPSBhIC0gKGEgJSAzKTsKICAgICAgICAgICAgY29uc3QgYjAgPSBiIC0gKGIgJSAzKTsKICAgICAgICAgICAgY29uc3QgYWwgPSBhMCArICgoYSArIDEpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGFyID0gYTAgKyAoKGEgKyAyKSAlIDMpOwogICAgICAgICAgICBjb25zdCBibCA9IGIwICsgKChiICsgMikgJSAzKTsKICAgICAgICAgICAgY29uc3QgYnIgPSBiMCArICgoYiArIDEpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IHAwID0gdGhpcy50cmlhbmdsZXNbYXJdOwogICAgICAgICAgICBjb25zdCBwciA9IHRoaXMudHJpYW5nbGVzW2FdOwogICAgICAgICAgICBjb25zdCBwbCA9IHRoaXMudHJpYW5nbGVzW2FsXTsKICAgICAgICAgICAgY29uc3QgcDEgPSB0aGlzLnRyaWFuZ2xlc1tibF07CiAgICAgICAgICAgIGNvbnN0IHsgY29vcmRzIH0gPSB0aGlzOwogICAgICAgICAgICBpZiAoIWluQ2lyY2xlKGNvb3Jkc1syICogcDBdLCBjb29yZHNbMiAqIHAwICsgMV0sIGNvb3Jkc1syICogcHJdLCBjb29yZHNbMiAqIHByICsgMV0sIGNvb3Jkc1syICogcGxdLCBjb29yZHNbMiAqIHBsICsgMV0sIGNvb3Jkc1syICogcDFdLCBjb29yZHNbMiAqIHAxICsgMV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgaGFsID0gdGhpcy5faGFsZmVkZ2VzW2FsXTsKICAgICAgICAgICAgY29uc3QgaGFyID0gdGhpcy5faGFsZmVkZ2VzW2FyXTsKICAgICAgICAgICAgY29uc3QgaGJsID0gdGhpcy5faGFsZmVkZ2VzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJyID0gdGhpcy5faGFsZmVkZ2VzW2JyXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYTAgLyAzKTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYjAgLyAzKTsKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMCwgcDEsIHBsLCAtMSwgaGJsLCBoYWwsIGEwKTsKICAgICAgICAgICAgY29uc3QgdDEgPSB0aGlzLl9hZGRUcmlhbmdsZShwMSwgcDAsIHByLCB0MCwgaGFyLCBoYnIsIGIwKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDAgKyAxKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDEgKyAyKTsKICAgICAgICB9CiAgICAgICAgLy8gaGFuZGxlIGEgY2FzZSB3aGVyZSBuZXcgdmVydGV4IGlzIG9uIHRoZSBlZGdlIG9mIGEgdHJpYW5nbGUKICAgICAgICBfaGFuZGxlQ29sbGluZWFyKHBuLCBhKSB7CiAgICAgICAgICAgIGNvbnN0IGEwID0gYSAtIChhICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGFsID0gYTAgKyAoKGEgKyAxKSAlIDMpOwogICAgICAgICAgICBjb25zdCBhciA9IGEwICsgKChhICsgMikgJSAzKTsKICAgICAgICAgICAgY29uc3QgcDAgPSB0aGlzLnRyaWFuZ2xlc1thcl07CiAgICAgICAgICAgIGNvbnN0IHByID0gdGhpcy50cmlhbmdsZXNbYV07CiAgICAgICAgICAgIGNvbnN0IHBsID0gdGhpcy50cmlhbmdsZXNbYWxdOwogICAgICAgICAgICBjb25zdCBoYWwgPSB0aGlzLl9oYWxmZWRnZXNbYWxdOwogICAgICAgICAgICBjb25zdCBoYXIgPSB0aGlzLl9oYWxmZWRnZXNbYXJdOwogICAgICAgICAgICBjb25zdCBiID0gdGhpcy5faGFsZmVkZ2VzW2FdOwogICAgICAgICAgICBpZiAoYiA8IDApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQwID0gdGhpcy5fYWRkVHJpYW5nbGUocG4sIHAwLCBwciwgLTEsIGhhciwgLTEsIGEwKTsKICAgICAgICAgICAgICAgIGNvbnN0IHQxID0gdGhpcy5fYWRkVHJpYW5nbGUocDAsIHBuLCBwbCwgdDAsIC0xLCBoYWwpOwogICAgICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDAgKyAxKTsKICAgICAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQxICsgMik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgYjAgPSBiIC0gKGIgJSAzKTsKICAgICAgICAgICAgY29uc3QgYmwgPSBiMCArICgoYiArIDIpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGJyID0gYjAgKyAoKGIgKyAxKSAlIDMpOwogICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMudHJpYW5nbGVzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJsID0gdGhpcy5faGFsZmVkZ2VzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJyID0gdGhpcy5faGFsZmVkZ2VzW2JyXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYjAgLyAzKTsKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMCwgcHIsIHBuLCBoYXIsIC0xLCAtMSwgYTApOwogICAgICAgICAgICBjb25zdCB0MSA9IHRoaXMuX2FkZFRyaWFuZ2xlKHByLCBwMSwgcG4sIGhiciwgLTEsIHQwICsgMSwgYjApOwogICAgICAgICAgICBjb25zdCB0MiA9IHRoaXMuX2FkZFRyaWFuZ2xlKHAxLCBwbCwgcG4sIGhibCwgLTEsIHQxICsgMSk7CiAgICAgICAgICAgIGNvbnN0IHQzID0gdGhpcy5fYWRkVHJpYW5nbGUocGwsIHAwLCBwbiwgaGFsLCB0MCArIDIsIHQyICsgMSk7CiAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQwKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDEpOwogICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0Mik7CiAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQzKTsKICAgICAgICB9CiAgICAgICAgLy8gcHJpb3JpdHkgcXVldWUgbWV0aG9kcwogICAgICAgIF9xdWV1ZVB1c2godCwgZXJyb3IsIHJtcykgewogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5fcXVldWUubGVuZ3RoOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXNbdF0gPSBpOwogICAgICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKHQpOwogICAgICAgICAgICB0aGlzLl9lcnJvcnMucHVzaChlcnJvcik7CiAgICAgICAgICAgIHRoaXMuX3Jtc1N1bSArPSBybXM7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlVXAoaSk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVBvcCgpIHsKICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX3F1ZXVlLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlU3dhcCgwLCBuKTsKICAgICAgICAgICAgdGhpcy5fcXVldWVEb3duKDAsIG4pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5fcXVldWVQb3BCYWNrKCk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVBvcEJhY2soKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9xdWV1ZS5wb3AoKTsKICAgICAgICAgICAgdGhpcy5fZXJyb3JzLnBvcCgpOwogICAgICAgICAgICB0aGlzLl9ybXNTdW0gLT0gdGhpcy5fcm1zW3RdOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXNbdF0gPSAtMTsKICAgICAgICAgICAgcmV0dXJuIHQ7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVJlbW92ZSh0KSB7CiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9xdWV1ZUluZGljZXNbdF07CiAgICAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgICAgY29uc3QgaXQgPSB0aGlzLl9wZW5kaW5nLmluZGV4T2YodCk7CiAgICAgICAgICAgICAgICBpZiAoaXQgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1tpdF0gPSB0aGlzLl9wZW5kaW5nWy0tdGhpcy5fcGVuZGluZ0xlbl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb2tlbiB0cmlhbmd1bGF0aW9uIChzb21ldGhpbmcgd2VudCB3cm9uZykuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX3F1ZXVlLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIGlmIChuICE9PSBpKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZVN3YXAoaSwgbik7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3F1ZXVlRG93bihpLCBuKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlVXAoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5fcXVldWVQb3BCYWNrKCk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZUxlc3MoaSwgaikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzW2ldID4gdGhpcy5fZXJyb3JzW2pdOwogICAgICAgIH0KICAgICAgICBfcXVldWVTd2FwKGksIGopIHsKICAgICAgICAgICAgY29uc3QgcGkgPSB0aGlzLl9xdWV1ZVtpXTsKICAgICAgICAgICAgY29uc3QgcGogPSB0aGlzLl9xdWV1ZVtqXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVbaV0gPSBwajsKICAgICAgICAgICAgdGhpcy5fcXVldWVbal0gPSBwaTsKICAgICAgICAgICAgdGhpcy5fcXVldWVJbmRpY2VzW3BpXSA9IGo7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlSW5kaWNlc1twal0gPSBpOwogICAgICAgICAgICBjb25zdCBlID0gdGhpcy5fZXJyb3JzW2ldOwogICAgICAgICAgICB0aGlzLl9lcnJvcnNbaV0gPSB0aGlzLl9lcnJvcnNbal07CiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tqXSA9IGU7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVVwKGowKSB7CiAgICAgICAgICAgIGxldCBqID0gajA7CiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gKGogLSAxKSA+PiAxOwogICAgICAgICAgICAgICAgaWYgKGkgPT09IGogfHwgIXRoaXMuX3F1ZXVlTGVzcyhqLCBpKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fcXVldWVTd2FwKGksIGopOwogICAgICAgICAgICAgICAgaiA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgX3F1ZXVlRG93bihpMCwgbikgewogICAgICAgICAgICBsZXQgaSA9IGkwOwogICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgY29uc3QgajEgPSAyICogaSArIDE7CiAgICAgICAgICAgICAgICBpZiAoajEgPj0gbiB8fCBqMSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0IGoyID0gajEgKyAxOwogICAgICAgICAgICAgICAgbGV0IGogPSBqMTsKICAgICAgICAgICAgICAgIGlmIChqMiA8IG4gJiYgdGhpcy5fcXVldWVMZXNzKGoyLCBqMSkpIHsKICAgICAgICAgICAgICAgICAgICBqID0gajI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3F1ZXVlTGVzcyhqLCBpKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fcXVldWVTd2FwKGksIGopOwogICAgICAgICAgICAgICAgaSA9IGo7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkgPiBpMDsKICAgICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBpbkNpcmNsZShheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBweCwgcHkpIHsKICAgICAgICBjb25zdCBkeCA9IGF4IC0gcHg7CiAgICAgICAgY29uc3QgZHkgPSBheSAtIHB5OwogICAgICAgIGNvbnN0IGV4ID0gYnggLSBweDsKICAgICAgICBjb25zdCBleSA9IGJ5IC0gcHk7CiAgICAgICAgY29uc3QgZnggPSBjeCAtIHB4OwogICAgICAgIGNvbnN0IGZ5ID0gY3kgLSBweTsKICAgICAgICBjb25zdCBhcCA9IGR4ICogZHggKyBkeSAqIGR5OwogICAgICAgIGNvbnN0IGJwID0gZXggKiBleCArIGV5ICogZXk7CiAgICAgICAgY29uc3QgY3AgPSBmeCAqIGZ4ICsgZnkgKiBmeTsKICAgICAgICByZXR1cm4gZHggKiAoZXkgKiBjcCAtIGJwICogZnkpIC0gZHkgKiAoZXggKiBjcCAtIGJwICogZngpICsgYXAgKiAoZXggKiBmeSAtIGV5ICogZngpIDwgMDsKICAgIH0KCiAgICAvKioKICAgICAqIFdlYiBXb3JrZXIgZm9yIHRlcnJhaW4gbWVzaCB0ZXNzZWxsYXRpb24uCiAgICAgKiBSdW5zIE1hcnRpbmkvRGVsYXRpbiBhbGdvcml0aG1zIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgogICAgICovCiAgICAvLyBUcmFjayBhYm9ydGVkIHRhc2tzIHRvIGF2b2lkIHNlbmRpbmcgcmVzdWx0cyBmb3IgY2FuY2VsbGVkIHdvcmsKICAgIGNvbnN0IGFib3J0ZWRUYXNrcyA9IG5ldyBNYXAoKTsKICAgIHNlbGYub25tZXNzYWdlID0gKGUpID0+IHsKICAgICAgICBjb25zdCBkYXRhID0gZS5kYXRhOwogICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdhYm9ydCcpIHsKICAgICAgICAgICAgLy8gTWFyayB0YXNrIGFzIGFib3J0ZWQ7IGlmIGl0J3Mgc3RpbGwgY29tcHV0aW5nLCB3ZSdsbCBza2lwIHRoZSByZXNwb25zZQogICAgICAgICAgICBhYm9ydGVkVGFza3Muc2V0KGRhdGEudGFza0lkLCB0cnVlKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoZGF0YS50eXBlID09PSAnY29tcHV0ZU1lc2gnKSB7CiAgICAgICAgICAgIGNvbnN0IHsgdGFza0lkLCB0ZXJyYWluLCBtZXNoTWF4RXJyb3IsIHRlc3NlbGF0b3IsIHdpZHRoLCBoZWlnaHQgfSA9IGRhdGE7CiAgICAgICAgICAgIGxldCBtZXNoOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKHRlc3NlbGF0b3IgPT09ICdkZWxhdGluJykgewogICAgICAgICAgICAgICAgICAgIC8vIERlbGF0aW4gdGVzc2VsbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGluID0gbmV3IERlbGF0aW4odGVycmFpbiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgdGluLnJ1bihtZXNoTWF4RXJyb3IpOwogICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IERlbGF0aW4gaW5zdGFuY2UgcHJvcGVydGllcyAnY29vcmRzJyBhbmQgJ3RyaWFuZ2xlcycgYXJlIG5vdCBleHBsaWNpdGx5IHR5cGVkIGluIHRoZSBsaWJyYXJ5IHBvcnQKICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvb3JkcywgdHJpYW5nbGVzIH0gPSB0aW47CiAgICAgICAgICAgICAgICAgICAgLy8gY29vcmRzIGlzIGEgcGxhaW4gYXJyYXkg4oCUIGNvbnZlcnQgdG8gRmxvYXQ2NEFycmF5IHNvIGl0IGhhcyAuYnVmZmVyIGZvciB0cmFuc2ZlcgogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnRpY2VzVHlwZWQgPSBGbG9hdDY0QXJyYXkuZnJvbShjb29yZHMpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyaWFuZ2xlc1R5cGVkID0gVWludDMyQXJyYXkuZnJvbSh0cmlhbmdsZXMpOwogICAgICAgICAgICAgICAgICAgIG1lc2ggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzOiB2ZXJ0aWNlc1R5cGVkLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlhbmdsZXM6IHRyaWFuZ2xlc1R5cGVkLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBNYXJ0aW5pIHRlc3NlbGxhdGlvbiAoZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICBjb25zdCBncmlkU2l6ZSA9IHdpZHRoID09PSAyNTcgPyAyNTcgOiB3aWR0aCArIDE7IC8vIE9ubHkgYWRkIDEgaWYgd2lkdGggaXMgbm90IGFscmVhZHkgMl5uKzEKICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJ0aW5pID0gbmV3IE1hcnRpbmkoZ3JpZFNpemUpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbGUgPSBtYXJ0aW5pLmNyZWF0ZVRpbGUodGVycmFpbik7CiAgICAgICAgICAgICAgICAgICAgbWVzaCA9IHRpbGUuZ2V0TWVzaChtZXNoTWF4RXJyb3IpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gT25seSBzZW5kIHJlc3VsdCBpZiBub3QgYWJvcnRlZAogICAgICAgICAgICAgICAgaWYgKCFhYm9ydGVkVGFza3MuZ2V0KHRhc2tJZCkpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21lc2hSZXN1bHQnLAogICAgICAgICAgICAgICAgICAgICAgICB0YXNrSWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogbWVzaCwKICAgICAgICAgICAgICAgICAgICAgICAgdGVycmFpbiwgLy8g4oaQIENSSVRJQ0FMOiBSZXR1cm4gdGVycmFpbiBidWZmZXIgdG8gbWFpbiB0aHJlYWQKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zZmVyIG93bmVyc2hpcCBvZiBBTEwgYnVmZmVycyBiYWNrIHRvIG1haW4gdGhyZWFkICh6ZXJvLWNvcHkgcm91bmR0cmlwKQogICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYXZvaWRzIG1lc2hUZXJyYWluLnNsaWNlKCkgYWxsb2NhdGlvbiBvbiBtYWluIHRocmVhZAogICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2gudmVydGljZXMuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC50cmlhbmdsZXMuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVycmFpbi5idWZmZXIsIC8vIOKGkCBUcmFuc2ZlciB0ZXJyYWluIGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVwb3J0IGVycm9ycyBmb3Igbm9uLWFib3J0ZWQgdGFza3MKICAgICAgICAgICAgICAgIGlmICghYWJvcnRlZFRhc2tzLmdldCh0YXNrSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tJZCwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSwKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIC8vIENsZWFuIHVwIGFib3J0IHRyYWNraW5nCiAgICAgICAgICAgICAgICBhYm9ydGVkVGFza3MuZGVsZXRlKHRhc2tJZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgLy8gU2lnbmFsIHRoYXQgd29ya2VyIGlzIHJlYWR5CiAgICBzZWxmLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlYWR5JyB9KTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRlcnJhaW4ud29ya2VyLmpzLm1hcAoK");class Tg{workers=[];pendingTasks=new Map;taskCounter=0;roundRobinIndex=0;constructor(A){const g=Math.min(navigator.hardwareConcurrency||4,8),I=navigator.deviceMemory&&navigator.deviceMemory<4?2:g,C=A??I;for(let A=0;A<C;A++){const A=new Zg;A.onmessage=this.handleWorkerMessage.bind(this),A.onerror=this.handleWorkerError.bind(this),this.workers.push(A)}}async computeMesh(A){const{terrain:g,meshMaxError:I,tesselator:C,width:e,height:i,signal:B}=A;if(B?.aborted)throw new DOMException("Aborted","AbortError");const t="task_"+ ++this.taskCounter;return new Promise((A,Q)=>{const s=this.getNextWorker(),o={resolve:A,reject:Q,aborted:!1,worker:s};this.pendingTasks.set(t,o),B&&B.addEventListener("abort",()=>{this.pendingTasks.has(t)&&(o.aborted=!0,this.pendingTasks.delete(t),s.postMessage({type:"abort",taskId:t}),Q(new DOMException("Aborted","AbortError")))},{once:!0}),s.postMessage({type:"computeMesh",taskId:t,terrain:g,meshMaxError:I,tesselator:C,width:e,height:i},[g.buffer])})}getNextWorker(){const A=this.workers[this.roundRobinIndex];return this.roundRobinIndex=(this.roundRobinIndex+1)%this.workers.length,A}handleWorkerMessage(A){const{type:g,taskId:I,result:C,terrain:e,error:i}=A.data;if("ready"===g)return;const B=this.pendingTasks.get(I);B&&(this.pendingTasks.delete(I),B.aborted||("meshResult"===g?B.resolve({vertices:C.vertices,triangles:C.triangles,terrain:e}):"error"===g&&B.reject(new Error(`Worker error: ${i}`))))}handleWorkerError(A){const g=A.target,I=[];this.pendingTasks.forEach((A,C)=>{A.worker===g&&I.push(C)});for(const g of I){const I=this.pendingTasks.get(g);I&&(this.pendingTasks.delete(g),I.reject(new Error(`Worker crashed: ${A.message||"Unknown error"}`)))}const C=this.workers.indexOf(g);if(-1!==C)try{const A=new Zg;A.onmessage=this.handleWorkerMessage.bind(this),A.onerror=this.handleWorkerError.bind(this),this.workers[C]=A}catch(A){console.error("[TerrainWorkerPool] Failed to respawn worker:",A)}}terminate(){this.pendingTasks.forEach(A=>{A.reject(new DOMException("Worker pool terminated","AbortError"))}),this.pendingTasks.clear(),this.workers.forEach(A=>A.terminate()),this.workers=[]}}let qg=null;function Og(){qg&&(qg.terminate(),qg=null)}const Wg=2*Math.PI*6378137,Vg=Wg/2,vg=[-20037508.342789244,20037508.342789244];function zg(A){const g=A[0],I=A[1],C=g/Vg*180;let e=I/Vg*180;return e=180/Math.PI*(2*Math.atan(Math.exp(e*Math.PI/180))-Math.PI/2),[C,e]}function Xg(A,g,I){const C=function(A,g){return Math.round(Math.log2(Wg/(g*A)))}(A,g);return[C-(I-1),C]}class Pg{tileResultCache=new Map;tileResultCacheMaxSize;rasterCache=new Map;rasterCacheMaxSize;reliefMaskCache=new Map;reliefMaskCacheMaxSize;imageCache=new Map;constructor(A){this.tileResultCacheMaxSize=A?.tileResultCacheMaxSize??32,this.rasterCacheMaxSize=A?.rasterCacheMaxSize??64,this.reliefMaskCacheMaxSize=A?.reliefMaskCacheMaxSize??64}getTileResultCacheKey(A,g,I,C,e){return`${I}/${A}/${g}/${C}/${e?"1":"0"}`}getTileCacheKey(A,g,I){return`${I}/${A}/${g}`}getTileResult(A){const g=this.tileResultCache.get(A);if(g)return this.tileResultCache.delete(A),this.tileResultCache.set(A,g),g}setTileResult(A,g){if(this.tileResultCache.set(A,g),this.tileResultCache.size>this.tileResultCacheMaxSize){const A=this.tileResultCache.keys().next().value;if(A){const g=this.tileResultCache.get(A);g&&!g.settled&&g.controller.abort(),this.tileResultCache.delete(A)}}}deleteTileResult(A){return this.tileResultCache.delete(A)}clearTileResultCache(){for(const A of this.tileResultCache.values())A.settled||A.controller.abort();this.tileResultCache.clear()}getRaster(A){const g=this.rasterCache.get(A);if(g)return this.rasterCache.delete(A),this.rasterCache.set(A,g),g}setRaster(A,g){if(this.rasterCache.set(A,g),g.catch(()=>this.rasterCache.delete(A)),this.rasterCache.size>this.rasterCacheMaxSize){const A=this.rasterCache.keys().next().value;A&&this.rasterCache.delete(A)}}deleteRaster(A){return this.rasterCache.delete(A)}clearRasterCache(){this.rasterCache.clear()}getReliefMask(A){const g=this.reliefMaskCache.get(A);if(g)return this.reliefMaskCache.delete(A),this.reliefMaskCache.set(A,g),g}setReliefMask(A,g){if(this.reliefMaskCache.set(A,g),g.catch(()=>this.reliefMaskCache.delete(A)),this.reliefMaskCache.size>this.reliefMaskCacheMaxSize){const A=this.reliefMaskCache.keys().next().value;A&&this.reliefMaskCache.delete(A)}}deleteReliefMask(A){return this.reliefMaskCache.delete(A)}clearReliefMaskCache(){this.reliefMaskCache.clear()}getImage(A){return this.imageCache.get(A)}setImage(A,g){this.imageCache.set(A,g)}deleteImage(A){return this.imageCache.delete(A)}clearImageCache(){this.imageCache.clear()}clearAll(){this.clearTileResultCache(),this.clearRasterCache(),this.clearReliefMaskCache(),this.clearImageCache()}}class jg{options;tileSize;constructor(A){this.options=A.options,this.tileSize=A.tileSize}createEmptyTile(A){const g=A||this.tileSize,I=this.options.numOfChannels||1,C=new Float32Array(g*g*I);return void 0!==this.options.noDataValue&&C.fill(this.options.noDataValue),C}createTileBuffer(A,g,I=1){const C=g*g*I;switch(A){case"UInt8":return new Uint8Array(C);case"Int8":return new Int8Array(C);case"UInt16":return new Uint16Array(C);case"Int16":return new Int16Array(C);case"UInt32":return new Uint32Array(C);case"Int32":return new Int32Array(C);case"Float32":return new Float32Array(C);case"Float64":return new Float64Array(C);default:return console.warn(`Unsupported data type: ${A}, defaulting to Float32`),new Float32Array(C)}}}const _g=new Map,$g={blurredTexture:!0,debugTileStats:!1};class AI{cog;cogZoomLookup=[];cogResolutionLookup=[];cogMeshMaxErrorLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize=256;bounds=[0,0,0,0];bandDescriptions=[];geo=new Hg;options;cache=new Pg;tileReader;workerPool;initializePromise;lastInitializedUrl;constructor(A){this.options={...$g,...A},"terrain"===A.type&&(this.workerPool=(qg||(qg=new Tg),qg))}async initializeCog(A){if(this.initializePromise&&(!this.cog||this.lastInitializedUrl===A))return this.initializePromise;if(void 0!==this.lastInitializedUrl&&this.lastInitializedUrl!==A){this.cache.clearAll();const A=[];_g.forEach((g,I)=>{I.startsWith(this.lastInitializedUrl)&&A.push(I)}),A.forEach(A=>_g.delete(A)),this.cog=void 0,this.cogOrigin=[0,0],this.cogZoomLookup=[],this.cogResolutionLookup=[],this.cogMeshMaxErrorLookup=[],this.tileSize=256,this.zoomRange=[0,0],this.bounds=[0,0,0,0],this.bandDescriptions=[],this.initializePromise=void 0,this.lastInitializedUrl=void 0}return this.cog&&this.lastInitializedUrl===A?this.initializePromise??Promise.resolve():(this.initializePromise=(async()=>{try{const g=this.options.blockSize??65536;this.cog=await async function(A,g={},I){return Gg.fromSource(Qg(A,g),void 0,I)}(A,{blockSize:g});const I=this.cog.getImage();this.cache.setImage(0,I);const C=await I,e=C.fileDirectory;this.cogOrigin=C.getOrigin(),this.options.noDataValue??=function(A){const g=A.getGDALNoData();if(null==g)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const I=String(g).replace(/\0/g,"").trim();if(""===I)return void console.warn("noData value is an empty string after cleanup.");const C=Number(I);return"nan"===I.toLowerCase()?NaN:Number.isNaN(C)?void console.warn(`Failed to parse numeric noData value: '${I}'`):C}(C),this.options.format??=await async function(A){const g=A.hasTag("SampleFormat"),I=A.hasTag("BitsPerSample");if(!g||!I)return console.warn("Missing SampleFormat or BitsPerSample tags, defaulting to UInt8"),"UInt8";const C=A.getValue("SampleFormat"),e=A.getValue("BitsPerSample"),i=C&&"number"==typeof C.length&&C.length>0?C[0]:C;let B;return B=1===i?"UInt":2===i?"Int":3===i?"Float":"Unknown",`${B}${e&&"number"==typeof e.length&&e.length>0?e[0]:e}`}(e),this.options.numOfChannels=e.getValue("SamplesPerPixel"),this.options.planarConfig=e.getValue("PlanarConfiguration");const i=this.options.numOfChannels??1,B=Array(i).fill("");if(C.fileDirectory.hasTag("GDAL_METADATA")){const A=await C.fileDirectory.loadValue("GDAL_METADATA"),g=/<Item[^>]*name="DESCRIPTION"[^>]*sample="(\d+)"[^>]*>([^<]*)<\/Item>/g;let I;for(;null!==(I=g.exec(A));){const A=parseInt(I[1],10),g=I[2];A<i&&(B[A]=g)}B.every(A=>""===A)&&console.debug("[CogTiles] GDAL_METADATA present but no DESCRIPTION items found")}if(this.bandDescriptions=B,[this.cogZoomLookup,this.cogResolutionLookup]=await async function(A){const g=await A.getImageCount(),I=await A.getImage(0),C=I.getResolution()[0],e=I.getWidth(),i=[],B=[];for(let I=0;I<g;I++){const g=C*(e/(await A.getImage(I)).getWidth()),t=Math.round(Math.log2(156543.03125/g));i[I]=t,B[I]=g}return[i,B]}(this.cog),"terrain"===this.options.type&&this.computeMeshMaxErrorLookup(),this.tileSize=C.getTileWidth(),!this.tileSize||!C.getTileHeight())throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');this.zoomRange=Xg(this.tileSize,C.getResolution()[0],await this.cog.getImageCount()),this.bounds=function(A){const g=Math.min(A[0],A[2]),I=Math.max(A[0],A[2]),C=Math.min(A[1],A[3]),e=Math.max(A[1],A[3]),i=zg([g,C]),B=zg([I,e]);return[i[0],i[1],B[0],B[1]]}(C.getBoundingBox()),this.tileReader=new jg({options:this.options,tileSize:this.tileSize}),this.lastInitializedUrl=A}catch(g){throw this.initializePromise=void 0,console.error(`[CogTiles] Failed to initialize COG from ${A}:`,g),g}})(),this.initializePromise)}getZoomRange(){return this.zoomRange}getBoundsAsLatLon(){return this.bounds}getNumChannels(){return this.options.numOfChannels||1}getBandDescriptions(){return this.bandDescriptions}getMeshMaxErrorForImageIndex(A){return this.cogMeshMaxErrorLookup[A]}computeMeshMaxErrorLookup(){const A=this.cogZoomLookup[this.cogZoomLookup.length-1],g=this.cogZoomLookup[0];this.cogMeshMaxErrorLookup=this.cogResolutionLookup.map((I,C)=>function(A,g,I,C){const e=function(A,g,I){return A>=I?.5:A<=g?3:3-(A-g)/(I-g)*2.5}(A,I,C),i=g*e;return Math.round(Math.max(.5,Math.min(100,i)))}(this.cogZoomLookup[C],I,A,g))}getImageIndexForZoomLevel(A){return function(A,g){const I=g[g.length-1];if(A>g[0])return 0;if(A<I)return g.length-1;const C=g.indexOf(A);if(-1!==C)return C;let e=0,i=Math.abs(g[0]-A);for(let I=1;I<g.length;I+=1){const C=Math.abs(g[I]-A);C<i&&(i=C,e=I)}return e}(A,this.cogZoomLookup)}async getTileFromImage(A,g,I,C,e){const i=new AbortController;e&&!e.aborted&&e.addEventListener("abort",()=>i.abort(),{once:!0});const B=i.signal;try{const e=this.getImageIndexForZoomLevel(I);let i=this.cache.getImage(e);i||(i=this.cog.getImage(e),this.cache.setImage(e,i));const t=await i,Q=this.cogResolutionLookup[e],s=t.getHeight(),o=t.getWidth(),[a,E]=this.cogOrigin,r=this.tileSize,n=Wg/r/2**I,h=(vg[0]+A*r*n-a)/Q,l=(E-(vg[1]-g*r*n))/Q,c=C||r,w=Math.round(h),D=Math.round(l),d=w+c,y=D+c,G=Math.max(0,w),u=Math.max(0,D),S=Math.min(o,d),f=Math.min(s,y),N=S-G,k=f-u;if(N<=0||k<=0)return[this.tileReader.createEmptyTile(c)];const R=G-w,F=u-D,p=[G,u,S,f];if(R>0||F>0||N<c||k<c){const A=this.options.numOfChannels||1,g=this.tileReader.createTileBuffer(this.options.format||"Float32",c,A);void 0!==this.options.noDataValue&&g.fill(this.options.noDataValue);const I=await t.readRasters({window:p,signal:B});for(let C=0;C<I.length;C+=1){const e=this.tileReader.createTileBuffer(this.options.format||"Float32",c);void 0!==this.options.noDataValue&&e.fill(this.options.noDataValue);for(let A=0;A<k;A+=1){const g=F+A,i=g*c,B=A*I.width;for(let A=0;A<N;A+=1){const t=R+A;g<c&&t<c?e[i+t]=I[C][B+A]:console.error(`[CogTiles] tile buffer bounds exceeded: destRow ${g}, destCol ${t}, FETCH_SIZE ${c}`)}}for(let I=0;I<e.length;I+=1)g[I*A+C]=e[I]}return[g]}return[await t.readRasters({window:p,interleave:!0,signal:B})]}catch(A){if(A instanceof AggregateError&&1===A.errors.length){const g=A.errors[0];if(g instanceof DOMException&&"AbortError"===g.name)throw g;if(g instanceof Error&&"Request was aborted"===g.message)throw new DOMException("Tile request aborted","AbortError");throw g}if(B.aborted||A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message)throw new DOMException("Tile request aborted","AbortError");if(A instanceof AggregateError){if(A.errors.some(A=>A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message))throw new DOMException("Tile request aborted","AbortError")}throw A}}async getTile(A,g,I,C,e,i,B){const t=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),Q=Wg/Math.pow(2,I)*Math.cos(t)/this.tileSize,s="terrain"===this.options.type,o="image"===this.options.type&&this.options.useReliefGlaze;let a=e;if(!s||e&&0!==e)a=e??4;else{const A=this.getImageIndexForZoomLevel(I);a=this.getMeshMaxErrorForImageIndex(A)??4}return s?this.getTerrainTile(A,g,I,C,a,Q,i,B):o?this.getGlazeTile(A,g,I,C,Q,e,i):this.getBitmapTile(A,g,I,C,Q,e,i)}async getTerrainTile(A,g,I,C,e,i,B,t){const Q=t??this.options.skipTexture??!1;if(this.options.cacheAllBands){if(B?.aborted)return null;const i=this.options.useChannel||1,t=`${this.lastInitializedUrl}_${I}_${A}_${g}_${e}_${Q}_band_${i}`;if(_g.has(t)){const A=_g.get(t);if(A)return A}try{const t=await this.getTileAllBands(A,g,I,e,void 0,C);if(t&&t.length>0){if(B?.aborted)return null;t.forEach((C,i)=>{const B=i+1,t=`${this.lastInitializedUrl}_${I}_${A}_${g}_${e}_${Q}_band_${B}`;_g.set(t,C)});const C=(i||1)-1;return C<0||C>=t.length?(console.error(`[CogTiles] Requested band index ${C} out of range (0-${t.length-1})`),null):t[C]}}catch(A){console.warn("[CogTiles] Multi-band fetch failed, falling back to single-band:",A)}}const s=this.cache.getTileResultCacheKey(A,g,I,e,Q),o=this.cache.getTileResult(s);if(o){if(o.settled)return B?.aborted?null:o.promise;o.callerCount+=1,B&&!B.aborted&&B.addEventListener("abort",()=>{o.callerCount-=1,o.callerCount<=0&&!o.settled&&o.controller.abort()},{once:!0});const A=await o.promise;return B?.aborted?null:A}const a=new AbortController,E=(async()=>{const B=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,t=this.tileSize+(B?2:1),o=await this.getTileFromImage(A,g,I,t,a.signal),E=o[0],r=this.options.noDataValue;if(void 0!==r&&E){const A=this.options.numOfChannels||1;let g=this.options.useChannelIndex??(this.options.useChannel?this.options.useChannel-1:0);null==g&&(g=0);const I=this.options.noDataCheck??"full",C=t,e=t,i=A=>Ug(A,r);let B=!0;if("full"===I)if(A>1)for(let I=g;I<E.length;I+=A){if(!i(E[I])){B=!1;break}}else for(let A=0;A<E.length;A++){if(!i(E[A])){B=!1;break}}else if("border+center"===I){const I=A;for(let A=0;A<C;A++){if(!i(E[A*I+g])){B=!1;break}}if(B)for(let A=0;A<C;A++){if(!i(E[((e-1)*C+A)*I+g])){B=!1;break}}if(B)for(let A=1;A<e-1;A++){const e=(A*C+(C-1))*I+g,t=E[A*C*I+g],Q=E[e];if(!i(t)||!i(Q)){B=!1;break}}if(B){const A=[[Math.floor(C/2),Math.floor(e/2)],[Math.floor(C/4),Math.floor(e/4)],[Math.floor(3*C/4),Math.floor(e/4)],[Math.floor(C/4),Math.floor(3*e/4)],[Math.floor(3*C/4),Math.floor(3*e/4)]];for(const[e,t]of A){if(!i(E[(t*C+e)*I+g])){B=!1;break}}}}else for(let A=0;A<E.length;A++){if(!i(E[A])){B=!1;break}}if(B)return this.cache.deleteTileResult(s),null}const n={...this.options,skipTexture:Q};return this.geo.getMap({rasters:[o[0]],width:t,height:t,bounds:C??[0,0,0,0],cellSizeMeters:i},n,e,this.workerPool,a.signal)})(),r={promise:E,controller:a,callerCount:1,settled:!1};B&&!B.aborted&&B.addEventListener("abort",()=>{r.callerCount-=1,r.callerCount<=0&&!r.settled&&r.controller.abort()},{once:!0}),r.promise=E,this.cache.setTileResult(s,r);try{const A=await E;return r.settled=!0,B?.aborted?null:A}catch(A){throw r.settled=!0,this.cache.deleteTileResult(s),A}}async getGlazeTile(A,g,I,C,e,i,B){const t=this.cache.getTileCacheKey(A,g,I);let Q=this.cache.getReliefMask(t);if(!Q){const C=new AbortController;Q=(async()=>{const i=await this.getTileFromImage(A,g,I,this.tileSize+2,C.signal);return bg.composeSwissRelief(i[0],this.options,e,this.tileSize,this.tileSize)})(),this.cache.setReliefMask(t,Q),Q.catch(()=>this.cache.deleteReliefMask(t))}if(B?.aborted)return null;const s=await Q;return B?.aborted?null:this.geo.getMap({rasters:[s],width:this.tileSize,height:this.tileSize,bounds:C??[0,0,0,0],cellSizeMeters:e},this.options,i??4,this.workerPool,B)}async getBitmapTile(A,g,I,C,e,i,B){const t=this.cache.getTileCacheKey(A,g,I);let Q=this.cache.getRaster(t);if(!Q){const C=new AbortController;Q=this.getTileFromImage(A,g,I,this.tileSize,C.signal),this.cache.setRaster(t,Q),Q.catch(()=>this.cache.deleteRaster(t))}if(B?.aborted)return null;const s=await Q;return B?.aborted?null:this.geo.getMap({rasters:[s[0]],width:this.tileSize,height:this.tileSize,bounds:C??[0,0,0,0],cellSizeMeters:e},this.options,i??4,this.workerPool)}async getTileAllBands(A,g,I,C,e,i){if(!this.cog)return[];const B=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),t=Wg/Math.pow(2,I)*Math.cos(B)/this.tileSize;let Q;if(C&&0!==C)Q=C;else{const A=this.getImageIndexForZoomLevel(I);Q=this.getMeshMaxErrorForImageIndex(A)??4}const s=new AbortController;e&&!e.aborted&&e.addEventListener("abort",()=>s.abort(),{once:!0});const o=s.signal;try{const C=this.getImageIndexForZoomLevel(I);let B=this.cache.getImage(C);B||(B=this.cog.getImage(C),this.cache.setImage(C,B));const s=await B,a=this.cogResolutionLookup[C],E=s.getHeight(),r=s.getWidth(),[n,h]=this.cogOrigin,l=this.tileSize,c=vg[0],w=vg[1],D=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,d=this.tileSize+(D?2:1),y=Wg/l/2**I,G=(c+A*l*y-n)/a,u=(h-(w-g*l*y))/a,S=Math.round(G),f=Math.round(u),N=S+d,k=f+d,R=Math.max(0,S),F=Math.max(0,f),p=Math.min(r,N),L=Math.min(E,k),Y=p-R,U=L-F;if(Y<=0||U<=0)return[];const m=R-S,M=F-f,b=[R,F,p,L],K=await s.readRasters({window:b,signal:o});if(e?.aborted)return[];const H=[],J=K.length;for(let A=0;A<J;A+=1){const g=K[A],I=this.tileReader.createTileBuffer(this.options.format||"Float32",d);void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue);for(let A=0;A<U;A+=1){const C=M+A,e=C*d,i=A*Y;for(let A=0;A<Y;A+=1){const B=m+A;C<d&&B<d&&(I[e+B]=g[i+A])}}const C={...this.options,useChannel:1,useChannelIndex:0,numOfChannels:1},B=await this.geo.getMap({rasters:[I],width:d,height:d,bounds:i??[0,0,0,0],cellSizeMeters:t},C,Q,this.workerPool,e);B&&H.push(B)}return H}catch(A){return e?.aborted||console.error("[CogTiles.getTileAllBands] Error fetching all bands:",A),[]}}clearTileResultCache(){this.cache.clearTileResultCache()}}const gI={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let C=0;C<I;C++)if(A[C]!==g[C])return!1;return!0}},II={...C.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:gI,clampToTerrain:!1,workerUrl:""};class CI extends A{static defaultProps=II;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new AI(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:A,oldProps:I}){const C=A.rasterData!==I.rasterData;if(C){const{rasterData:g}=A,I=g&&(Array.isArray(g)||g.includes("{x}")&&g.includes("{y}")||this.props.isTiled);this.setState({isTiled:I})}C||(A.bounds,I.bounds);this.state.isTiled,A?.cogBitmapOptions?.useChannel!==I.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=A.cogBitmapOptions.useChannel,this.state.bitmapCogTiles.options.useChannelIndex=null),A.workerUrl&&g.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){let g;try{g=await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z,void 0,void 0,A.signal)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return g&&!this.props.pickable&&(g.raw=null),g}renderSubLayers(A){const g=this.getSubLayerClass("image",e),{blurredTexture:I}=this.state.bitmapCogTiles.options,{clampToTerrain:C}=this.props,B="object"==typeof C&&null!==C&&"terrainDrawMode"in C,{data:t}=A;if(!t)return null;const{bbox:{west:Q,south:s,east:o,north:a}}=A.tile;return new g({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:[1],image:t.map,_instanced:!1,pickable:A.pickable,bounds:[Q,s,o,a],textureParameters:{minFilter:I?"linear":"nearest",magFilter:I?"linear":"nearest"},extensions:C?[new i]:[],...B?{terrainDrawMode:C.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:g,onTileLoad:I,onTileUnload:e,onTileError:i,maxCacheSize:B,maxCacheByteSize:t,refinementStrategy:Q,cogBitmapOptions:s}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:o}=this.state.bitmapCogTiles;return new C(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:[A,s.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:o,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:g,onTileLoad:I,onTileUnload:e,onTileError:i,maxCacheSize:B,maxCacheByteSize:t,refinementStrategy:Q})}return null}}const eI={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let C=0;C<I;C++)if(A[C]!==g[C])return!1;return!0}},iI=[1],BI={...C.defaultProps,elevationData:eI,texture:{...eI,optional:!0},meshMaxError:{type:"object",value:"auto",validate:A=>"number"==typeof A||"auto"===A,equal:(A,g)=>A===g},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0};class tI extends A{static defaultProps=BI;static layerName="CogTerrainLayer";terrainUrl="";async initializeState(A){super.initializeState(A);const g=this.props.cogTiles||new AI(this.props.terrainOptions);if(this.setState({terrainCogTiles:g,initialized:!1}),g.cog){const A=g.getZoomRange(),[I,C]=A;this.setState({initialized:!0,minZoom:I,maxZoom:C})}else await this.init()}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:A,oldProps:I}){const C=A.elevationData!==I.elevationData;if(C){const{elevationData:g}=A,I=g&&(Array.isArray(g)||g.includes("{x}")&&g.includes("{y}"))||this.props.isTiled;this.setState({isTiled:I})}C||A.meshMaxError!==I.meshMaxError||A.elevationDecoder!==I.elevationDecoder||(A.bounds,I.bounds);A.meshMaxError!==I.meshMaxError&&this.state.terrainCogTiles&&this.state.terrainCogTiles.clearTileResultCache(),this.state.isTiled,A?.terrainOptions?.useChannel!==I.terrainOptions?.useChannel&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.useChannel=A.terrainOptions.useChannel,this.state.terrainCogTiles.options.useChannelIndex=null,this.state.terrainCogTiles.clearTileResultCache());const e=!(!A?.wireframe&&"terrain"!==A?.operation&&!A?.disableTexture);e!==!(!I?.wireframe&&"terrain"!==I?.operation&&!I?.disableTexture)&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.skipTexture=e,this.state.terrainCogTiles.clearTileResultCache()),A.cogTiles&&A.cogTiles!==I.cogTiles&&this.setState({terrainCogTiles:A.cogTiles}),A.workerUrl&&g.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:g,elevationDecoder:I,meshMaxError:C,signal:e}){if(!A)return null;let i=this.getLoadOptions();i={...i,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*C:0,...i?.terrain,bounds:g,meshMaxError:C,elevationDecoder:I}};const{fetch:B}=this.props;return B(A,{propName:"elevationData",layer:this,loadOptions:i,signal:e,loaders:[]})}async getTiledTerrainData(A){const{viewport:g}=this.context;let I=[0,0],C=[0,0];if(g.isGeospatial){const e=A.bbox;I=g.projectFlat([e.west,e.south]),C=g.projectFlat([e.east,e.north])}else{const g=A.bbox;I=[g.left,g.bottom],C=[g.right,g.top]}const e=[I[0],I[1],C[0],C[1]];let i=null;try{const g=!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),I="auto"===this.props.meshMaxError?void 0:this.props.meshMaxError;i=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,e,I,A.signal,g)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return i&&!this.props.pickable&&(i.raw=null),i?[i,null]:null}renderSubLayers(A){const g=this.getSubLayerClass("mesh",s),{color:C,wireframe:e,terrainOptions:i}=this.props,{data:B}=A;if(!B)return null;const[t]=B,Q=!this.props.disableTexture&&t?.texture?t.texture:null,o=i?.useSwissRelief,a=i?.disableLighting,E=o||a?{material:{ambient:1,diffuse:0,shininess:0,specularColor:[0,0,0]}}:{material:this.props.material};return new g({...A,tileSize:A.tileSize},{...E,data:iI,mesh:t?.map,texture:Q,_instanced:!1,pickable:A.pickable,coordinateSystem:I.CARTESIAN,getColor:Q?[255,255,255]:C,wireframe:e})}onViewportLoad(A){if(!A)return;const{zRange:g}=this.state,I=A.map(A=>A.content).filter(A=>!!A&&!!A[0]).map(A=>{if(!A||!A[0])return;const g=A[0]?.map?.header?.boundingBox;return g?.map(A=>A[2])}).filter(A=>void 0!==A);if(0===I.length)return;const C=Math.min(...I.map(A=>A?.[0]??0).filter(A=>Number.isFinite(A))),e=Math.max(...I.map(A=>A?.[1]??0).filter(A=>Number.isFinite(A)));if(!g||C<g[0]||e>g[1]){const A=[Number.isFinite(C)?C:0,Number.isFinite(e)?e:0];this.setState({zRange:A}),this.props.onZRangeUpdate?.(A)}}renderLayers(){const{elevationData:A,meshMaxError:g,elevationDecoder:I,tileSize:e,extent:i,maxRequests:B,onTileLoad:t,onTileUnload:Q,onTileError:s,maxCacheSize:o,maxCacheByteSize:a,refinementStrategy:E}=this.props;return this.state.isTiled&&this.state.initialized?new C(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:{elevationData:(r=A,Array.isArray(r)?r.join(";"):r||""),meshMaxError:g,elevationDecoder:I,terrainCogTiles:this.state.terrainCogTiles,skipTexture:!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),useChannel:this.props.terrainOptions?.useChannel},renderSubLayers:{disableTexture:this.props.disableTexture,terrainOptions:this.props.terrainOptions}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:e,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:i,maxRequests:B,onTileLoad:t,onTileUnload:Q,onTileError:s,maxCacheSize:o,maxCacheByteSize:a,refinementStrategy:E}):null;var r}}function QI(A){try{if(!A?.coordinate||A.coordinate.length<3)return null;const[g,I,C]=A.coordinate;return void 0===g||void 0===I||void 0===C?null:{longitude:g,latitude:I,elevation:C}}catch{return null}}function sI(A,g=3){try{if(!A?.tile?.content)return[];const I=A.tile.content[0];if(!I?.raw)return[];const{raw:C,width:e,height:i}=I,B=A.tile.bbox;if(!B)return[];const t=B.west??B[0],Q=B.south??B[1],s=B.east??B[2],o=B.north??B[3];if(void 0===t||void 0===Q||void 0===s||void 0===o)return[];const a=A.coordinate;if(!a||a.length<2)return[];const[E,r]=a,n=Math.floor(g/2),h=(E-t)/(s-t),l=r*Math.PI/180,c=o*Math.PI/180,w=Q*Math.PI/180,D=Math.log(Math.tan(Math.PI/4+l/2)),d=Math.log(Math.tan(Math.PI/4+c/2)),y=Math.log(Math.tan(Math.PI/4+w/2)),G=(d-D)/(d-y),u=Math.floor(h*(e-1)),S=Math.floor(G*(i-1)),f=[];for(let A=-n;A<=n;A++)for(let g=-n;g<=n;g++){const I=u+g,B=S+A;if(I<0||I>=e||B<0||B>=i)continue;const Q=C[B*e+I];if(null==Q)continue;const o=t+I/(e-1)*(s-t),a=d-B/(i-1)*(d-y),E=180*(2*Math.atan(Math.exp(a))-Math.PI/2)/Math.PI;f.push({longitude:o,latitude:E,elevation:Q})}return f}catch{return[]}}a();var oI=Object.freeze({__proto__:null,default:class extends wg{decodeBlock(A){return A}}});function aI(A,g){for(let I=g.length-1;I>=0;I--)A.push(g[I]);return A}function EI(A){const g=new Uint16Array(4093),I=new Uint8Array(4093);for(let A=0;A<=257;A++)g[A]=4096,I[A]=A;let C=258,e=9,i=0;function B(){C=258,e=9}function t(A){const g=function(A,g,I){const C=g%8,e=Math.floor(g/8),i=8-C,B=g+I-8*(e+1);let t=8*(e+2)-(g+I);const Q=8*(e+2)-g;if(t=Math.max(0,t),e>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let s=A[e]&2**(8-C)-1;s<<=I-i;let o=s;if(e+1<A.length){let g=A[e+1]>>>t;g<<=Math.max(0,I-Q),o+=g}if(B>8&&e+2<A.length){const C=8*(e+3)-(g+I);o+=A[e+2]>>>C}return o}(A,i,e);return i+=e,g}function Q(A,e){return I[C]=e,g[C]=A,C++,C-1}function s(A){const C=[];for(let e=A;4096!==e;e=g[e])C.push(I[e]);return C}const o=[];B();const a=new Uint8Array(A);let E,r=t(a);for(;257!==r;){if(256===r){for(B(),r=t(a);256===r;)r=t(a);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);aI(o,s(r)),E=r}else if(r<C){const A=s(r);aI(o,A),void 0!==E&&Q(E,A[A.length-1]),E=r}else{if(void 0===E)throw new Error(`Invalid LZW code: ${r} with no previous code`);const A=s(E);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${E} / ${C}, position: ${i}`);aI(o,A),o.push(A[A.length-1]),Q(E,A[A.length-1]),E=r}C+1>=2**e&&(12===e?E=void 0:e++),r=t(a)}return new Uint8Array(o)}var rI=Object.freeze({__proto__:null,default:class extends wg{decodeBlock(A){return EI(A).buffer}}});const nI=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),hI=4017,lI=799,cI=3406,wI=2276,DI=1567,dI=3784,yI=5793,GI=2896;function uI(A,g){let I=0;const C=[];let e=16;for(;e>0&&!A[e-1];)--e;C.push({children:[],index:0});let i,B=C[0];for(let t=0;t<e;t++){for(let e=0;e<A[t];e++){if(B=C.pop(),!B)throw new Error("buildHuffmanTable: codeLength mismatch");for(B.children[B.index]=g[I];B.index>0;)if(B=C.pop(),!B)throw new Error("buildHuffmanTable: codeLength mismatch");for(B.index++,C.push(B);C.length<=t;)C.push(i={children:[],index:0}),B.children[B.index]=i.children,B=i;I++}t+1<e&&(C.push(i={children:[],index:0}),B.children[B.index]=i.children,B=i)}return C[0].children}function SI(A,g,I,C,e,i,B,t,Q){const{mcusPerLine:s,progressive:o}=I;if(C.length>1&&(void 0===s||void 0===I.mcusPerColumn))throw new Error("Missing MCU dimensions");if(1===C.length&&(void 0===C[0].blocksPerLine||void 0===C[0].blocksPerColumn))throw new Error("Missing block dimensions");const a=g;let E=g,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[E++],255===r){const g=A[E++];if(g)throw new Error(`unexpected marker: ${(r<<8|g).toString(16)}`)}return n=7,r>>>7}function l(A){if(!A)throw new Error("Huffman table not found");let g,I=A;for(;null!==(g=h());){const A=I[g];if("number"==typeof A)return A;if("object"!=typeof A)throw new Error("invalid huffman sequence");I=A}return null}function c(A){let g=A,I=0;for(;g>0;){const A=h();if(null===A)return;I=I<<1|A,--g}return I}function w(A){const g=c(A);if(void 0!==g)return g>=1<<A-1?g:g+(-1<<A)+1}let D=0;let d,y=0;function G(A,g,I,C,e){const i=I%s,B=(I/s|0)*A.v+C,t=i*A.h+e;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[B][t])}function u(A,g,I){const C=I/A.blocksPerLine|0,e=I%A.blocksPerLine;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[C][e])}const S=C.length;let f,N,k,R,F,p;p=o?0===i?0===t?function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const C=w(I);if(void 0===C)throw new Error("Unexpected end of data in DC coefficient decoding");const e=0===I?0:C<<Q;void 0===A.pred&&(A.pred=0),A.pred+=e,g[0]=A.pred}:function(A,g){const I=h();if(null===I)throw new Error("Unexpected end of data in DC coefficient decoding");g[0]|=I<<Q}:0===t?function(A,g){if(D>0)return void D--;let I=i;const C=B;for(;I<=C;){const C=l(A.huffmanTableAC);if(null===C)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&C,i=C>>4;if(0===e){if(i<15){const A=c(i);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<i)-1;break}I+=16}else{I+=i;const A=nI[I],C=w(e);if(void 0===C)throw new Error("Unexpected end of data in AC coefficient decoding");g[A]=C*(1<<Q),I++}}}:function(A,g){let I=i;const C=B;let e=0;for(;I<=C;){const C=nI[I],i=g[C]<0?-1:1;switch(y){case 0:{const g=l(A.huffmanTableAC);if(null===g)throw new Error("Unexpected end of data in AC coefficient decoding");const I=15&g;if(e=g>>4,0===I)if(e<15){const A=c(e);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<e),y=4}else e=16,y=1;else{if(1!==I)throw new Error("invalid ACn encoding");const A=w(I);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");d=A,y=e?2:3}continue}case 1:case 2:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<Q)*i}else e--,0===e&&(y=2===y?3:0);break;case 3:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<Q)*i}else g[C]=d<<Q,y=0;break;case 4:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<Q)*i}}I++}4===y&&(D--,0===D&&(y=0))}:function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const C=0===I?0:w(I);if(void 0===C)throw new Error("Unexpected end of stream");void 0===A.pred&&(A.pred=0),A.pred+=C,g[0]=A.pred;let e=1;for(;e<64;){const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const C=15&I,i=I>>4;if(0===C){if(i<15)break;e+=16}else{e+=i;const A=nI[e],I=w(C);if(void 0===I)throw new Error("Unexpected end of stream");g[A]=I,e++}}};let L,Y,U=0;Y=1===S?C[0].blocksPerLine*C[0].blocksPerColumn:s*I.mcusPerColumn;const m=e||Y;for(;U<Y;){for(N=0;N<S;N++)C[N].pred=0;if(D=0,1===S)for(f=C[0],F=0;F<m;F++)u(f,p,U),U++;else for(F=0;F<m;F++){for(N=0;N<S;N++){f=C[N];const{h:A,v:g}=f;for(k=0;k<g;k++)for(R=0;R<A;R++)G(f,p,U,k,R)}if(U++,U===Y)break}if(n=0,L=A[E]<<8|A[E+1],L<65280)throw new Error("marker was not found");if(!(L>=65488&&L<=65495))break;E+=2}return E-a}function fI(A){const g=[],{blocksPerLine:I,blocksPerColumn:C}=A;if(!I||!C||!A.blocks)throw new Error("Missing component data");const e=I<<3,i=new Int32Array(64),B=new Uint8Array(64);function t(g,I,C){const e=A.quantizationTable;if(!e)throw new Error("No quantization table found");let i,B,t,Q,s,o,a,E,r;const n=C;let h;for(h=0;h<64;h++)n[h]=g[h]*e[h];for(h=0;h<8;++h){const A=8*h;0!==n[1+A]||0!==n[2+A]||0!==n[3+A]||0!==n[4+A]||0!==n[5+A]||0!==n[6+A]||0!==n[7+A]?(i=yI*n[0+A]+128>>8,B=yI*n[4+A]+128>>8,t=n[2+A],Q=n[6+A],s=GI*(n[1+A]-n[7+A])+128>>8,E=GI*(n[1+A]+n[7+A])+128>>8,o=n[3+A]<<4,a=n[5+A]<<4,r=i-B+1>>1,i=i+B+1>>1,B=r,r=t*dI+Q*DI+128>>8,t=t*DI-Q*dI+128>>8,Q=r,r=s-a+1>>1,s=s+a+1>>1,a=r,r=E+o+1>>1,o=E-o+1>>1,E=r,r=i-Q+1>>1,i=i+Q+1>>1,Q=r,r=B-t+1>>1,B=B+t+1>>1,t=r,r=s*wI+E*cI+2048>>12,s=s*cI-E*wI+2048>>12,E=r,r=o*lI+a*hI+2048>>12,o=o*hI-a*lI+2048>>12,a=r,n[0+A]=i+E,n[7+A]=i-E,n[1+A]=B+a,n[6+A]=B-a,n[2+A]=t+o,n[5+A]=t-o,n[3+A]=Q+s,n[4+A]=Q-s):(r=yI*n[0+A]+512>>10,n[0+A]=r,n[1+A]=r,n[2+A]=r,n[3+A]=r,n[4+A]=r,n[5+A]=r,n[6+A]=r,n[7+A]=r)}for(h=0;h<8;++h){const A=h;0!==n[8+A]||0!==n[16+A]||0!==n[24+A]||0!==n[32+A]||0!==n[40+A]||0!==n[48+A]||0!==n[56+A]?(i=yI*n[0+A]+2048>>12,B=yI*n[32+A]+2048>>12,t=n[16+A],Q=n[48+A],s=GI*(n[8+A]-n[56+A])+2048>>12,E=GI*(n[8+A]+n[56+A])+2048>>12,o=n[24+A],a=n[40+A],r=i-B+1>>1,i=i+B+1>>1,B=r,r=t*dI+Q*DI+2048>>12,t=t*DI-Q*dI+2048>>12,Q=r,r=s-a+1>>1,s=s+a+1>>1,a=r,r=E+o+1>>1,o=E-o+1>>1,E=r,r=i-Q+1>>1,i=i+Q+1>>1,Q=r,r=B-t+1>>1,B=B+t+1>>1,t=r,r=s*wI+E*cI+2048>>12,s=s*cI-E*wI+2048>>12,E=r,r=o*lI+a*hI+2048>>12,o=o*hI-a*lI+2048>>12,a=r,n[0+A]=i+E,n[56+A]=i-E,n[8+A]=B+a,n[48+A]=B-a,n[16+A]=t+o,n[40+A]=t-o,n[24+A]=Q+s,n[32+A]=Q-s):(r=yI*C[h+0]+8192>>14,n[0+A]=r,n[8+A]=r,n[16+A]=r,n[24+A]=r,n[32+A]=r,n[40+A]=r,n[48+A]=r,n[56+A]=r)}for(h=0;h<64;++h){const A=128+(n[h]+8>>4);I[h]=A<0?0:A>255?255:A}}for(let Q=0;Q<C;Q++){const C=Q<<3;for(let A=0;A<8;A++)g.push(new Uint8Array(e));for(let e=0;e<I;e++){t(A.blocks[Q][e],B,i);let I=0;const s=e<<3;for(let A=0;A<8;A++){const e=g[C+A];for(let A=0;A<8;A++)e[s+A]=B[I++]}}}return g}class NI{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(A){let g=0;function I(){const I=A[g]<<8|A[g+1];return g+=2,I}function C(){const C=I(),e=A.subarray(g,g+C-2);return g+=e.length,e}function e(A){let g,I,C=0,e=0;for(I in A.components)A.components.hasOwnProperty(I)&&(g=A.components[I],C<g.h&&(C=g.h),e<g.v&&(e=g.v));const i=Math.ceil(A.samplesPerLine/8/C),B=Math.ceil(A.scanLines/8/e);for(I in A.components)if(A.components.hasOwnProperty(I)){g=A.components[I];const t=Math.ceil(Math.ceil(A.samplesPerLine/8)*g.h/C),Q=Math.ceil(Math.ceil(A.scanLines/8)*g.v/e),s=i*g.h,o=B*g.v,a=[];for(let A=0;A<o;A++){const A=[];for(let g=0;g<s;g++)A.push(new Int32Array(64));a.push(A)}g.blocksPerLine=t,g.blocksPerColumn=Q,g.blocks=a}A.maxH=C,A.maxV=e,A.mcusPerLine=i,A.mcusPerColumn=B}let i=I();if(65496!==i)throw new Error("SOI not found");for(i=I();65497!==i;){switch(i){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=C();65504===i&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===i&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const C=I()+g-2;for(;g<C;){const C=A[g++],e=new Int32Array(64);if(C>>4){if(C>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){e[nI[A]]=I()}}else for(let I=0;I<64;I++){e[nI[I]]=A[g++]}this.quantizationTables[15&C]=e}break}case 65472:case 65473:case 65474:{I();const C={extended:65473===i,progressive:65474===i,precision:A[g++],scanLines:I(),samplesPerLine:I(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},B=A[g++];let t;for(let I=0;I<B;I++){t=A[g];const I=A[g+1]>>4,e=15&A[g+1],i=A[g+2];C.componentsOrder.push(t),C.components[t]={h:I,v:e,quantizationIdx:i,blocksPerLine:0,blocksPerColumn:0,blocks:[]},g+=3}e(C),this.frames.push(C);break}case 65476:{const C=I();for(let I=2;I<C;){const C=A[g++],e=new Uint8Array(16);let i=0;for(let I=0;I<16;I++,g++)e[I]=A[g],i+=e[I];const B=new Uint8Array(i);for(let I=0;I<i;I++,g++)B[I]=A[g];I+=17+i,C>>4?this.huffmanTablesAC[15&C]=uI(e,B):this.huffmanTablesDC[15&C]=uI(e,B)}break}case 65501:I(),this.resetInterval=I();break;case 65498:{I();const C=A[g++],e=[],i=this.frames[0];for(let I=0;I<C;I++){const I=i.components[A[g++]],C=A[g++];I.huffmanTableDC=this.huffmanTablesDC[C>>4],I.huffmanTableAC=this.huffmanTablesAC[15&C],e.push(I)}const B=A[g++],t=A[g++],Q=A[g++],s=SI(A,g,i,e,this.resetInterval,B,t,Q>>4,15&Q);g+=s;break}case 65535:255!==A[g]&&g--;break;default:if(255===A[g-3]&&A[g-2]>=192&&A[g-2]<=254){g-=3;break}throw new Error(`unknown JPEG marker ${i.toString(16)}`)}i=I()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const g=this.frames[A].components;for(const A of Object.keys(g)){const I=g[A].quantizationIdx;"number"==typeof I&&(g[A].quantizationTable=this.quantizationTables[I],delete g[A].quantizationIdx)}}const g=A[0];if(!g.maxH||!g.maxV)throw new Error("Invalid frame dimensions");const{components:I,componentsOrder:C}=g,e=[],i=g.samplesPerLine,B=g.scanLines;for(let A=0;A<C.length;A++){const i=I[C[A]];e.push({lines:fI(i),scaleX:i.h/g.maxH,scaleY:i.v/g.maxV})}const t=new Uint8Array(i*B*e.length);let Q=0;for(let A=0;A<B;++A)for(let g=0;g<i;++g)for(let I=0;I<e.length;++I){const C=e[I];t[Q]=C.lines[0|A*C.scaleY][0|g*C.scaleX],++Q}return t}}var kI=Object.freeze({__proto__:null,default:class extends wg{constructor(A){super(A),this.reader=new NI,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});function RI(A){let g=A.length;for(;--g>=0;)A[g]=0}RI(new Array(576));RI(new Array(60));RI(new Array(512));RI(new Array(256));RI(new Array(29));RI(new Array(30));var FI=(A,g,I,C)=>{let e=65535&A,i=A>>>16&65535,B=0;for(;0!==I;){B=I>2e3?2e3:I,I-=B;do{e=e+g[C++]|0,i=i+e|0}while(--B);e%=65521,i%=65521}return e|i<<16};const pI=new Uint32Array((()=>{let A,g=[];for(var I=0;I<256;I++){A=I;for(var C=0;C<8;C++)A=1&A?3988292384^A>>>1:A>>>1;g[I]=A}return g})());var LI=(A,g,I,C)=>{const e=pI,i=C+I;A^=-1;for(let I=C;I<i;I++)A=A>>>8^e[255&(A^g[I])];return-1^A},YI={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"},UI={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const mI=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);var MI=function(A){const g=Array.prototype.slice.call(arguments,1);for(;g.length;){const I=g.shift();if(I){if("object"!=typeof I)throw new TypeError(I+"must be non-object");for(const g in I)mI(I,g)&&(A[g]=I[g])}}return A},bI=A=>{let g=0;for(let I=0,C=A.length;I<C;I++)g+=A[I].length;const I=new Uint8Array(g);for(let g=0,C=0,e=A.length;g<e;g++){let e=A[g];I.set(e,C),C+=e.length}return I};let KI=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){KI=!1}const HI=new Uint8Array(256);for(let A=0;A<256;A++)HI[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;HI[254]=HI[254]=1;var JI=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let g,I,C,e,i,B=A.length,t=0;for(e=0;e<B;e++)I=A.charCodeAt(e),55296==(64512&I)&&e+1<B&&(C=A.charCodeAt(e+1),56320==(64512&C)&&(I=65536+(I-55296<<10)+(C-56320),e++)),t+=I<128?1:I<2048?2:I<65536?3:4;for(g=new Uint8Array(t),i=0,e=0;i<t;e++)I=A.charCodeAt(e),55296==(64512&I)&&e+1<B&&(C=A.charCodeAt(e+1),56320==(64512&C)&&(I=65536+(I-55296<<10)+(C-56320),e++)),I<128?g[i++]=I:I<2048?(g[i++]=192|I>>>6,g[i++]=128|63&I):I<65536?(g[i++]=224|I>>>12,g[i++]=128|I>>>6&63,g[i++]=128|63&I):(g[i++]=240|I>>>18,g[i++]=128|I>>>12&63,g[i++]=128|I>>>6&63,g[i++]=128|63&I);return g},xI=(A,g)=>{const I=g||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,g));let C,e;const i=new Array(2*I);for(e=0,C=0;C<I;){let g=A[C++];if(g<128){i[e++]=g;continue}let B=HI[g];if(B>4)i[e++]=65533,C+=B-1;else{for(g&=2===B?31:3===B?15:7;B>1&&C<I;)g=g<<6|63&A[C++],B--;B>1?i[e++]=65533:g<65536?i[e++]=g:(g-=65536,i[e++]=55296|g>>10&1023,i[e++]=56320|1023&g)}}return((A,g)=>{if(g<65534&&A.subarray&&KI)return String.fromCharCode.apply(null,A.length===g?A:A.subarray(0,g));let I="";for(let C=0;C<g;C++)I+=String.fromCharCode(A[C]);return I})(i,e)},ZI=(A,g)=>{(g=g||A.length)>A.length&&(g=A.length);let I=g-1;for(;I>=0&&128==(192&A[I]);)I--;return I<0||0===I?g:I+HI[A[I]]>g?I:g};var TI=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};const qI=16209;var OI=function(A,g){let I,C,e,i,B,t,Q,s,o,a,E,r,n,h,l,c,w,D,d,y,G,u,S,f;const N=A.state;I=A.next_in,S=A.input,C=I+(A.avail_in-5),e=A.next_out,f=A.output,i=e-(g-A.avail_out),B=e+(A.avail_out-257),t=N.dmax,Q=N.wsize,s=N.whave,o=N.wnext,a=N.window,E=N.hold,r=N.bits,n=N.lencode,h=N.distcode,l=(1<<N.lenbits)-1,c=(1<<N.distbits)-1;A:do{r<15&&(E+=S[I++]<<r,r+=8,E+=S[I++]<<r,r+=8),w=n[E&l];g:for(;;){if(D=w>>>24,E>>>=D,r-=D,D=w>>>16&255,0===D)f[e++]=65535&w;else{if(!(16&D)){if(64&D){if(32&D){N.mode=16191;break A}A.msg="invalid literal/length code",N.mode=qI;break A}w=n[(65535&w)+(E&(1<<D)-1)];continue g}for(d=65535&w,D&=15,D&&(r<D&&(E+=S[I++]<<r,r+=8),d+=E&(1<<D)-1,E>>>=D,r-=D),r<15&&(E+=S[I++]<<r,r+=8,E+=S[I++]<<r,r+=8),w=h[E&c];;){if(D=w>>>24,E>>>=D,r-=D,D=w>>>16&255,16&D){if(y=65535&w,D&=15,r<D&&(E+=S[I++]<<r,r+=8,r<D&&(E+=S[I++]<<r,r+=8)),y+=E&(1<<D)-1,y>t){A.msg="invalid distance too far back",N.mode=qI;break A}if(E>>>=D,r-=D,D=e-i,y>D){if(D=y-D,D>s&&N.sane){A.msg="invalid distance too far back",N.mode=qI;break A}if(G=0,u=a,0===o){if(G+=Q-D,D<d){d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}}else if(o<D){if(G+=Q+o-D,D-=o,D<d){d-=D;do{f[e++]=a[G++]}while(--D);if(G=0,o<d){D=o,d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}}}else if(G+=o-D,D<d){d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}for(;d>2;)f[e++]=u[G++],f[e++]=u[G++],f[e++]=u[G++],d-=3;d&&(f[e++]=u[G++],d>1&&(f[e++]=u[G++]))}else{G=e-y;do{f[e++]=f[G++],f[e++]=f[G++],f[e++]=f[G++],d-=3}while(d>2);d&&(f[e++]=f[G++],d>1&&(f[e++]=f[G++]))}break}if(64&D){A.msg="invalid distance code",N.mode=qI;break A}w=h[(65535&w)+(E&(1<<D)-1)]}}break}}while(I<C&&e<B);d=r>>3,I-=d,r-=d<<3,E&=(1<<r)-1,A.next_in=I,A.next_out=e,A.avail_in=I<C?C-I+5:5-(I-C),A.avail_out=e<B?B-e+257:257-(e-B),N.hold=E,N.bits=r};const WI=15,VI=new Uint16Array([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]),vI=new Uint8Array([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]),zI=new Uint16Array([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]),XI=new Uint8Array([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]);var PI=(A,g,I,C,e,i,B,t)=>{const Q=t.bits;let s,o,a,E,r,n,h=0,l=0,c=0,w=0,D=0,d=0,y=0,G=0,u=0,S=0,f=null;const N=new Uint16Array(16),k=new Uint16Array(16);let R,F,p,L=null;for(h=0;h<=WI;h++)N[h]=0;for(l=0;l<C;l++)N[g[I+l]]++;for(D=Q,w=WI;w>=1&&0===N[w];w--);if(D>w&&(D=w),0===w)return e[i++]=20971520,e[i++]=20971520,t.bits=1,0;for(c=1;c<w&&0===N[c];c++);for(D<c&&(D=c),G=1,h=1;h<=WI;h++)if(G<<=1,G-=N[h],G<0)return-1;if(G>0&&(0===A||1!==w))return-1;for(k[1]=0,h=1;h<WI;h++)k[h+1]=k[h]+N[h];for(l=0;l<C;l++)0!==g[I+l]&&(B[k[g[I+l]]++]=l);if(0===A?(f=L=B,n=20):1===A?(f=VI,L=vI,n=257):(f=zI,L=XI,n=0),S=0,l=0,h=c,r=i,d=D,y=0,a=-1,u=1<<D,E=u-1,1===A&&u>852||2===A&&u>592)return 1;for(;;){R=h-y,B[l]+1<n?(F=0,p=B[l]):B[l]>=n?(F=L[B[l]-n],p=f[B[l]-n]):(F=96,p=0),s=1<<h-y,o=1<<d,c=o;do{o-=s,e[r+(S>>y)+o]=R<<24|F<<16|p}while(0!==o);for(s=1<<h-1;S&s;)s>>=1;if(0!==s?(S&=s-1,S+=s):S=0,l++,0===--N[h]){if(h===w)break;h=g[I+B[l]]}if(h>D&&(S&E)!==a){for(0===y&&(y=D),r+=c,d=h-y,G=1<<d;d+y<w&&(G-=N[d+y],!(G<=0));)d++,G<<=1;if(u+=1<<d,1===A&&u>852||2===A&&u>592)return 1;a=S&E,e[a]=D<<24|d<<16|r-i}}return 0!==S&&(e[r+S]=h-y<<24|64<<16),t.bits=D,0};const{Z_FINISH:jI,Z_BLOCK:_I,Z_TREES:$I,Z_OK:AC,Z_STREAM_END:gC,Z_NEED_DICT:IC,Z_STREAM_ERROR:CC,Z_DATA_ERROR:eC,Z_MEM_ERROR:iC,Z_BUF_ERROR:BC,Z_DEFLATED:tC}=UI,QC=16180,sC=16190,oC=16191,aC=16192,EC=16194,rC=16199,nC=16200,hC=16206,lC=16209,cC=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function wC(){this.strm=null,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 Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const DC=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.mode<QC||g.mode>16211?1:0},dC=A=>{if(DC(A))return CC;const g=A.state;return A.total_in=A.total_out=g.total=0,A.msg="",g.wrap&&(A.adler=1&g.wrap),g.mode=QC,g.last=0,g.havedict=0,g.flags=-1,g.dmax=32768,g.head=null,g.hold=0,g.bits=0,g.lencode=g.lendyn=new Int32Array(852),g.distcode=g.distdyn=new Int32Array(592),g.sane=1,g.back=-1,AC},yC=A=>{if(DC(A))return CC;const g=A.state;return g.wsize=0,g.whave=0,g.wnext=0,dC(A)},GC=(A,g)=>{let I;if(DC(A))return CC;const C=A.state;return g<0?(I=0,g=-g):(I=5+(g>>4),g<48&&(g&=15)),g&&(g<8||g>15)?CC:(null!==C.window&&C.wbits!==g&&(C.window=null),C.wrap=I,C.wbits=g,yC(A))},uC=(A,g)=>{if(!A)return CC;const I=new wC;A.state=I,I.strm=A,I.window=null,I.mode=QC;const C=GC(A,g);return C!==AC&&(A.state=null),C};let SC,fC,NC=!0;const kC=A=>{if(NC){SC=new Int32Array(512),fC=new Int32Array(32);let g=0;for(;g<144;)A.lens[g++]=8;for(;g<256;)A.lens[g++]=9;for(;g<280;)A.lens[g++]=7;for(;g<288;)A.lens[g++]=8;for(PI(1,A.lens,0,288,SC,0,A.work,{bits:9}),g=0;g<32;)A.lens[g++]=5;PI(2,A.lens,0,32,fC,0,A.work,{bits:5}),NC=!1}A.lencode=SC,A.lenbits=9,A.distcode=fC,A.distbits=5},RC=(A,g,I,C)=>{let e;const i=A.state;return null===i.window&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Uint8Array(i.wsize)),C>=i.wsize?(i.window.set(g.subarray(I-i.wsize,I),0),i.wnext=0,i.whave=i.wsize):(e=i.wsize-i.wnext,e>C&&(e=C),i.window.set(g.subarray(I-C,I-C+e),i.wnext),(C-=e)?(i.window.set(g.subarray(I-C,I),0),i.wnext=C,i.whave=i.wsize):(i.wnext+=e,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=e))),0};var FC={inflateReset:yC,inflateReset2:GC,inflateResetKeep:dC,inflateInit:A=>uC(A,15),inflateInit2:uC,inflate:(A,g)=>{let I,C,e,i,B,t,Q,s,o,a,E,r,n,h,l,c,w,D,d,y,G,u,S=0;const f=new Uint8Array(4);let N,k;const R=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(DC(A)||!A.output||!A.input&&0!==A.avail_in)return CC;I=A.state,I.mode===oC&&(I.mode=aC),B=A.next_out,e=A.output,Q=A.avail_out,i=A.next_in,C=A.input,t=A.avail_in,s=I.hold,o=I.bits,a=t,E=Q,u=AC;A:for(;;)switch(I.mode){case QC:if(0===I.wrap){I.mode=aC;break}for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(2&I.wrap&&35615===s){0===I.wbits&&(I.wbits=15),I.check=0,f[0]=255&s,f[1]=s>>>8&255,I.check=LI(I.check,f,2,0),s=0,o=0,I.mode=16181;break}if(I.head&&(I.head.done=!1),!(1&I.wrap)||(((255&s)<<8)+(s>>8))%31){A.msg="incorrect header check",I.mode=lC;break}if((15&s)!==tC){A.msg="unknown compression method",I.mode=lC;break}if(s>>>=4,o-=4,G=8+(15&s),0===I.wbits&&(I.wbits=G),G>15||G>I.wbits){A.msg="invalid window size",I.mode=lC;break}I.dmax=1<<I.wbits,I.flags=0,A.adler=I.check=1,I.mode=512&s?16189:oC,s=0,o=0;break;case 16181:for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(I.flags=s,(255&I.flags)!==tC){A.msg="unknown compression method",I.mode=lC;break}if(57344&I.flags){A.msg="unknown header flags set",I.mode=lC;break}I.head&&(I.head.text=s>>8&1),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,I.check=LI(I.check,f,2,0)),s=0,o=0,I.mode=16182;case 16182:for(;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.head&&(I.head.time=s),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,f[2]=s>>>16&255,f[3]=s>>>24&255,I.check=LI(I.check,f,4,0)),s=0,o=0,I.mode=16183;case 16183:for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.head&&(I.head.xflags=255&s,I.head.os=s>>8),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,I.check=LI(I.check,f,2,0)),s=0,o=0,I.mode=16184;case 16184:if(1024&I.flags){for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.length=s,I.head&&(I.head.extra_len=s),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,I.check=LI(I.check,f,2,0)),s=0,o=0}else I.head&&(I.head.extra=null);I.mode=16185;case 16185:if(1024&I.flags&&(r=I.length,r>t&&(r=t),r&&(I.head&&(G=I.head.extra_len-I.length,I.head.extra||(I.head.extra=new Uint8Array(I.head.extra_len)),I.head.extra.set(C.subarray(i,i+r),G)),512&I.flags&&4&I.wrap&&(I.check=LI(I.check,C,r,i)),t-=r,i+=r,I.length-=r),I.length))break A;I.length=0,I.mode=16186;case 16186:if(2048&I.flags){if(0===t)break A;r=0;do{G=C[i+r++],I.head&&G&&I.length<65536&&(I.head.name+=String.fromCharCode(G))}while(G&&r<t);if(512&I.flags&&4&I.wrap&&(I.check=LI(I.check,C,r,i)),t-=r,i+=r,G)break A}else I.head&&(I.head.name=null);I.length=0,I.mode=16187;case 16187:if(4096&I.flags){if(0===t)break A;r=0;do{G=C[i+r++],I.head&&G&&I.length<65536&&(I.head.comment+=String.fromCharCode(G))}while(G&&r<t);if(512&I.flags&&4&I.wrap&&(I.check=LI(I.check,C,r,i)),t-=r,i+=r,G)break A}else I.head&&(I.head.comment=null);I.mode=16188;case 16188:if(512&I.flags){for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(4&I.wrap&&s!==(65535&I.check)){A.msg="header crc mismatch",I.mode=lC;break}s=0,o=0}I.head&&(I.head.hcrc=I.flags>>9&1,I.head.done=!0),A.adler=I.check=0,I.mode=oC;break;case 16189:for(;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}A.adler=I.check=cC(s),s=0,o=0,I.mode=sC;case sC:if(0===I.havedict)return A.next_out=B,A.avail_out=Q,A.next_in=i,A.avail_in=t,I.hold=s,I.bits=o,IC;A.adler=I.check=1,I.mode=oC;case oC:if(g===_I||g===$I)break A;case aC:if(I.last){s>>>=7&o,o-=7&o,I.mode=hC;break}for(;o<3;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}switch(I.last=1&s,s>>>=1,o-=1,3&s){case 0:I.mode=16193;break;case 1:if(kC(I),I.mode=rC,g===$I){s>>>=2,o-=2;break A}break;case 2:I.mode=16196;break;case 3:A.msg="invalid block type",I.mode=lC}s>>>=2,o-=2;break;case 16193:for(s>>>=7&o,o-=7&o;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if((65535&s)!=(s>>>16^65535)){A.msg="invalid stored block lengths",I.mode=lC;break}if(I.length=65535&s,s=0,o=0,I.mode=EC,g===$I)break A;case EC:I.mode=16195;case 16195:if(r=I.length,r){if(r>t&&(r=t),r>Q&&(r=Q),0===r)break A;e.set(C.subarray(i,i+r),B),t-=r,i+=r,Q-=r,B+=r,I.length-=r;break}I.mode=oC;break;case 16196:for(;o<14;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(I.nlen=257+(31&s),s>>>=5,o-=5,I.ndist=1+(31&s),s>>>=5,o-=5,I.ncode=4+(15&s),s>>>=4,o-=4,I.nlen>286||I.ndist>30){A.msg="too many length or distance symbols",I.mode=lC;break}I.have=0,I.mode=16197;case 16197:for(;I.have<I.ncode;){for(;o<3;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.lens[R[I.have++]]=7&s,s>>>=3,o-=3}for(;I.have<19;)I.lens[R[I.have++]]=0;if(I.lencode=I.lendyn,I.lenbits=7,N={bits:I.lenbits},u=PI(0,I.lens,0,19,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid code lengths set",I.mode=lC;break}I.have=0,I.mode=16198;case 16198:for(;I.have<I.nlen+I.ndist;){for(;S=I.lencode[s&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(w<16)s>>>=l,o-=l,I.lens[I.have++]=w;else{if(16===w){for(k=l+2;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(s>>>=l,o-=l,0===I.have){A.msg="invalid bit length repeat",I.mode=lC;break}G=I.lens[I.have-1],r=3+(3&s),s>>>=2,o-=2}else if(17===w){for(k=l+3;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=l,o-=l,G=0,r=3+(7&s),s>>>=3,o-=3}else{for(k=l+7;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=l,o-=l,G=0,r=11+(127&s),s>>>=7,o-=7}if(I.have+r>I.nlen+I.ndist){A.msg="invalid bit length repeat",I.mode=lC;break}for(;r--;)I.lens[I.have++]=G}}if(I.mode===lC)break;if(0===I.lens[256]){A.msg="invalid code -- missing end-of-block",I.mode=lC;break}if(I.lenbits=9,N={bits:I.lenbits},u=PI(1,I.lens,0,I.nlen,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid literal/lengths set",I.mode=lC;break}if(I.distbits=6,I.distcode=I.distdyn,N={bits:I.distbits},u=PI(2,I.lens,I.nlen,I.ndist,I.distcode,0,I.work,N),I.distbits=N.bits,u){A.msg="invalid distances set",I.mode=lC;break}if(I.mode=rC,g===$I)break A;case rC:I.mode=nC;case nC:if(t>=6&&Q>=258){A.next_out=B,A.avail_out=Q,A.next_in=i,A.avail_in=t,I.hold=s,I.bits=o,OI(A,E),B=A.next_out,e=A.output,Q=A.avail_out,i=A.next_in,C=A.input,t=A.avail_in,s=I.hold,o=I.bits,I.mode===oC&&(I.back=-1);break}for(I.back=0;S=I.lencode[s&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(c&&!(240&c)){for(D=l,d=c,y=w;S=I.lencode[y+((s&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=D,o-=D,I.back+=D}if(s>>>=l,o-=l,I.back+=l,I.length=w,0===c){I.mode=16205;break}if(32&c){I.back=-1,I.mode=oC;break}if(64&c){A.msg="invalid literal/length code",I.mode=lC;break}I.extra=15&c,I.mode=16201;case 16201:if(I.extra){for(k=I.extra;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.length+=s&(1<<I.extra)-1,s>>>=I.extra,o-=I.extra,I.back+=I.extra}I.was=I.length,I.mode=16202;case 16202:for(;S=I.distcode[s&(1<<I.distbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(!(240&c)){for(D=l,d=c,y=w;S=I.distcode[y+((s&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=D,o-=D,I.back+=D}if(s>>>=l,o-=l,I.back+=l,64&c){A.msg="invalid distance code",I.mode=lC;break}I.offset=w,I.extra=15&c,I.mode=16203;case 16203:if(I.extra){for(k=I.extra;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.offset+=s&(1<<I.extra)-1,s>>>=I.extra,o-=I.extra,I.back+=I.extra}if(I.offset>I.dmax){A.msg="invalid distance too far back",I.mode=lC;break}I.mode=16204;case 16204:if(0===Q)break A;if(r=E-Q,I.offset>r){if(r=I.offset-r,r>I.whave&&I.sane){A.msg="invalid distance too far back",I.mode=lC;break}r>I.wnext?(r-=I.wnext,n=I.wsize-r):n=I.wnext-r,r>I.length&&(r=I.length),h=I.window}else h=e,n=B-I.offset,r=I.length;r>Q&&(r=Q),Q-=r,I.length-=r;do{e[B++]=h[n++]}while(--r);0===I.length&&(I.mode=nC);break;case 16205:if(0===Q)break A;e[B++]=I.length,Q--,I.mode=nC;break;case hC:if(I.wrap){for(;o<32;){if(0===t)break A;t--,s|=C[i++]<<o,o+=8}if(E-=Q,A.total_out+=E,I.total+=E,4&I.wrap&&E&&(A.adler=I.check=I.flags?LI(I.check,e,E,B-E):FI(I.check,e,E,B-E)),E=Q,4&I.wrap&&(I.flags?s:cC(s))!==I.check){A.msg="incorrect data check",I.mode=lC;break}s=0,o=0}I.mode=16207;case 16207:if(I.wrap&&I.flags){for(;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(4&I.wrap&&s!==(4294967295&I.total)){A.msg="incorrect length check",I.mode=lC;break}s=0,o=0}I.mode=16208;case 16208:u=gC;break A;case lC:u=eC;break A;case 16210:return iC;default:return CC}return A.next_out=B,A.avail_out=Q,A.next_in=i,A.avail_in=t,I.hold=s,I.bits=o,(I.wsize||E!==A.avail_out&&I.mode<lC&&(I.mode<hC||g!==jI))&&RC(A,A.output,A.next_out,E-A.avail_out),a-=A.avail_in,E-=A.avail_out,A.total_in+=a,A.total_out+=E,I.total+=E,4&I.wrap&&E&&(A.adler=I.check=I.flags?LI(I.check,e,E,A.next_out-E):FI(I.check,e,E,A.next_out-E)),A.data_type=I.bits+(I.last?64:0)+(I.mode===oC?128:0)+(I.mode===rC||I.mode===EC?256:0),(0===a&&0===E||g===jI)&&u===AC&&(u=BC),u},inflateEnd:A=>{if(DC(A))return CC;let g=A.state;return g.window&&(g.window=null),A.state=null,AC},inflateGetHeader:(A,g)=>{if(DC(A))return CC;const I=A.state;return 2&I.wrap?(I.head=g,g.done=!1,AC):CC},inflateSetDictionary:(A,g)=>{const I=g.length;let C,e,i;return DC(A)?CC:(C=A.state,0!==C.wrap&&C.mode!==sC?CC:C.mode===sC&&(e=1,e=FI(e,g,I,0),e!==C.check)?eC:(i=RC(A,g,I,I),i?(C.mode=16210,iC):(C.havedict=1,AC)))},inflateInfo:"pako inflate (from Nodeca project)"};var pC=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};const LC=Object.prototype.toString,{Z_NO_FLUSH:YC,Z_FINISH:UC,Z_OK:mC,Z_STREAM_END:MC,Z_NEED_DICT:bC,Z_STREAM_ERROR:KC,Z_DATA_ERROR:HC,Z_MEM_ERROR:JC}=UI;function xC(A){this.options=MI({chunkSize:65536,windowBits:15,to:""},A||{});const g=this.options;g.raw&&g.windowBits>=0&&g.windowBits<16&&(g.windowBits=-g.windowBits,0===g.windowBits&&(g.windowBits=-15)),!(g.windowBits>=0&&g.windowBits<16)||A&&A.windowBits||(g.windowBits+=32),g.windowBits>15&&g.windowBits<48&&(15&g.windowBits||(g.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new TI,this.strm.avail_out=0;let I=FC.inflateInit2(this.strm,g.windowBits);if(I!==mC)throw new Error(YI[I]);if(this.header=new pC,FC.inflateGetHeader(this.strm,this.header),g.dictionary&&("string"==typeof g.dictionary?g.dictionary=JI(g.dictionary):"[object ArrayBuffer]"===LC.call(g.dictionary)&&(g.dictionary=new Uint8Array(g.dictionary)),g.raw&&(I=FC.inflateSetDictionary(this.strm,g.dictionary),I!==mC)))throw new Error(YI[I])}xC.prototype.push=function(A,g){const I=this.strm,C=this.options.chunkSize,e=this.options.dictionary;let i,B,t;if(this.ended)return!1;for(B=g===~~g?g:!0===g?UC:YC,"[object ArrayBuffer]"===LC.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;){for(0===I.avail_out&&(I.output=new Uint8Array(C),I.next_out=0,I.avail_out=C),i=FC.inflate(I,B),i===bC&&e&&(i=FC.inflateSetDictionary(I,e),i===mC?i=FC.inflate(I,B):i===HC&&(i=bC));I.avail_in>0&&i===MC&&I.state.wrap>0&&0!==A[I.next_in];)FC.inflateReset(I),i=FC.inflate(I,B);switch(i){case KC:case HC:case bC:case JC:return this.onEnd(i),this.ended=!0,!1}if(t=I.avail_out,I.next_out&&(0===I.avail_out||i===MC))if("string"===this.options.to){let A=ZI(I.output,I.next_out),g=I.next_out-A,e=xI(I.output,A);I.next_out=g,I.avail_out=C-g,g&&I.output.set(I.output.subarray(A,A+g),0),this.onData(e)}else this.onData(I.output.length===I.next_out?I.output:I.output.subarray(0,I.next_out));if(i!==mC||0!==t){if(i===MC)return i=FC.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===I.avail_in)break}}return!0},xC.prototype.onData=function(A){this.chunks.push(A)},xC.prototype.onEnd=function(A){A===mC&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=bI(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var ZC={inflate:function(A,g){const I=new xC(g);if(I.push(A),I.err)throw I.msg||YI[I.err];return I.result}};const{inflate:TC}=ZC;var qC=TC;var OC=Object.freeze({__proto__:null,default:class extends wg{decodeBlock(A){return qC(new Uint8Array(A)).buffer}}});var WC=Object.freeze({__proto__:null,default:class extends wg{decodeBlock(A){const g=new DataView(A),I=[];for(let C=0;C<A.byteLength;++C){let A=g.getInt8(C);if(A<0){const e=g.getUint8(C+1);A=-A;for(let g=0;g<=A;++g)I.push(e);C+=1}else{for(let e=0;e<=A;++e)I.push(g.getUint8(C+e+1));C+=A+1}}return new Uint8Array(I).buffer}}});function VC(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var vC,zC={exports:{}};var XC,PC=(vC||(vC=1,XC=zC,
|
|
2
2
|
/* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */
|
|
3
|
-
function(){var A,g,I,e,i,t,B,C,Q,E,s,a,o,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(t,B){var C=(B=B||{}).encodedMaskData||null===B.encodedMaskData,Q=i(t,B.inputOffset||0,C),E=null!==B.noDataValue?B.noDataValue:A.defaultNoDataValue,s=g(Q,B.pixelType||Float32Array,B.encodedMaskData,E,B.returnMask),a={width:Q.width,height:Q.height,pixelData:s.resultPixels,minValue:s.minValue,maxValue:Q.pixels.maxValue,noDataValue:E};return s.resultMask&&(a.maskData=s.resultMask),B.returnEncodedMask&&Q.mask&&(a.encodedMaskData=Q.mask.bitset?Q.mask.bitset:null),B.returnFileInfo&&(a.fileInfo=I(Q),B.computeUsedBitDepths&&(a.fileInfo.bitDepths=e(Q))),a}},g=function(A,g,I,e,i){var B,C,Q,E=0,s=A.pixels.numBlocksX,a=A.pixels.numBlocksY,o=Math.floor(A.width/s),r=Math.floor(A.height/a),n=2*A.maxZError,h=Number.MAX_VALUE;I=I||(A.mask?A.mask.bitset:null),C=new g(A.width*A.height),i&&I&&(Q=new Uint8Array(A.width*A.height));for(var l,c,D=new Float32Array(o*r),w=0;w<=a;w++){var d=w!==a?r:A.height%a;if(0!==d)for(var y=0;y<=s;y++){var f=y!==s?o:A.width%s;if(0!==f){var u,S,G,N,F=w*A.width*r+y*o,k=A.width-f,R=A.pixels.blocks[E];if(R.encoding<2?(0===R.encoding?u=R.rawData:(t(R.stuffedData,R.bitsPerPixel,R.numValidPixels,R.offset,n,D,A.pixels.maxValue),u=D),S=0):G=2===R.encoding?0:R.offset,I)for(c=0;c<d;c++){for(7&F&&(N=I[F>>3],N<<=7&F),l=0;l<f;l++)7&F||(N=I[F>>3]),128&N?(Q&&(Q[F]=1),h=h>(B=R.encoding<2?u[S++]:G)?B:h,C[F++]=B):(Q&&(Q[F]=0),C[F++]=e),N<<=1;F+=k}else if(R.encoding<2)for(c=0;c<d;c++){for(l=0;l<f;l++)h=h>(B=u[S++])?B:h,C[F++]=B;F+=k}else for(h=h>G?G:h,c=0;c<d;c++){for(l=0;l<f;l++)C[F++]=G;F+=k}if(1===R.encoding&&S!==R.numValidPixels)throw"Block and Mask do not match";E++}}}return{resultPixels:C,resultMask:Q,minValue:h}},I=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},e=function(A){for(var g=A.pixels.numBlocksX*A.pixels.numBlocksY,I={},e=0;e<g;e++){var i=A.pixels.blocks[e];0===i.encoding?I.float32=!0:1===i.encoding?I[i.bitsPerPixel]=!0:I[0]=!0}return Object.keys(I)},i=function(A,g,I){var e={},i=new Uint8Array(A,g,10);if(e.fileIdentifierString=String.fromCharCode.apply(null,i),"CntZImage"!==e.fileIdentifierString.trim())throw"Unexpected file identifier string: "+e.fileIdentifierString;g+=10;var t=new DataView(A,g,24);if(e.fileVersion=t.getInt32(0,!0),e.imageType=t.getInt32(4,!0),e.height=t.getUint32(8,!0),e.width=t.getUint32(12,!0),e.maxZError=t.getFloat64(16,!0),g+=24,!I)if(t=new DataView(A,g,16),e.mask={},e.mask.numBlocksY=t.getUint32(0,!0),e.mask.numBlocksX=t.getUint32(4,!0),e.mask.numBytes=t.getUint32(8,!0),e.mask.maxValue=t.getFloat32(12,!0),g+=16,e.mask.numBytes>0){var B=new Uint8Array(Math.ceil(e.width*e.height/8)),C=(t=new DataView(A,g,e.mask.numBytes)).getInt16(0,!0),Q=2,E=0;do{if(C>0)for(;C--;)B[E++]=t.getUint8(Q++);else{var s=t.getUint8(Q++);for(C=-C;C--;)B[E++]=s}C=t.getInt16(Q,!0),Q+=2}while(Q<e.mask.numBytes);if(-32768!==C||E<B.length)throw"Unexpected end of mask RLE encoding";e.mask.bitset=B,g+=e.mask.numBytes}else 0===(e.mask.numBytes|e.mask.numBlocksY|e.mask.maxValue)&&(e.mask.bitset=new Uint8Array(Math.ceil(e.width*e.height/8)));t=new DataView(A,g,16),e.pixels={},e.pixels.numBlocksY=t.getUint32(0,!0),e.pixels.numBlocksX=t.getUint32(4,!0),e.pixels.numBytes=t.getUint32(8,!0),e.pixels.maxValue=t.getFloat32(12,!0),g+=16;var a=e.pixels.numBlocksX,o=e.pixels.numBlocksY,r=a+(e.width%a>0?1:0),n=o+(e.height%o>0?1:0);e.pixels.blocks=new Array(r*n);for(var h=0,l=0;l<n;l++)for(var c=0;c<r;c++){var D=0,w=A.byteLength-g;t=new DataView(A,g,Math.min(10,w));var d={};e.pixels.blocks[h++]=d;var y=t.getUint8(0);if(D++,d.encoding=63&y,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(2!==d.encoding){if(0!==y&&2!==y){if(y>>=6,d.offsetType=y,2===y)d.offset=t.getInt8(1),D++;else if(1===y)d.offset=t.getInt16(1,!0),D+=2;else{if(0!==y)throw"Invalid block offset type";d.offset=t.getFloat32(1,!0),D+=4}if(1===d.encoding)if(y=t.getUint8(D),D++,d.bitsPerPixel=63&y,y>>=6,d.numValidPixelsType=y,2===y)d.numValidPixels=t.getUint8(D),D++;else if(1===y)d.numValidPixels=t.getUint16(D,!0),D+=2;else{if(0!==y)throw"Invalid valid pixel count type";d.numValidPixels=t.getUint32(D,!0),D+=4}}var f;if(g+=D,3!==d.encoding)if(0===d.encoding){var u=(e.pixels.numBytes-1)/4;if(u!==Math.floor(u))throw"uncompressed block has invalid length";f=new ArrayBuffer(4*u),new Uint8Array(f).set(new Uint8Array(A,g,4*u));var S=new Float32Array(f);d.rawData=S,g+=4*u}else if(1===d.encoding){var G=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),N=Math.ceil(G/4);f=new ArrayBuffer(4*N),new Uint8Array(f).set(new Uint8Array(A,g,G)),d.stuffedData=new Uint32Array(f),g+=G}}else g++}return e.eofOffset=g,e},t=function(A,g,I,e,i,t,B){var C,Q,E,s=(1<<g)-1,a=0,o=0,r=Math.ceil((B-e)/i),n=4*A.length-Math.ceil(g*I/8);for(A[A.length-1]<<=8*n,C=0;C<I;C++){if(0===o&&(E=A[a++],o=32),o>=g)Q=E>>>o-g&s,o-=g;else{var h=g-o;Q=(E&s)<<h&s,Q+=(E=A[a++])>>>(o=32-h)}t[C]=Q<r?e+Q*i:B}return t},A),c=(B=function(A,g,I,e,i,t,B,C){var Q,E,s,a,o,r=(1<<I)-1,n=0,h=0,l=4*A.length-Math.ceil(I*e/8);if(A[A.length-1]<<=8*l,i)for(Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=I?(E=s>>>h-I&r,h-=I):(E=(s&r)<<(a=I-h)&r,E+=(s=A[n++])>>>(h=32-a)),g[Q]=i[E];else for(o=Math.ceil((C-t)/B),Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=I?(E=s>>>h-I&r,h-=I):(E=(s&r)<<(a=I-h)&r,E+=(s=A[n++])>>>(h=32-a)),g[Q]=E<o?t+E*B:C},C=function(A,g,I,e,i,t){var B,C=(1<<g)-1,Q=0,E=0,s=0,a=0,o=0,r=[],n=4*A.length-Math.ceil(g*I/8);A[A.length-1]<<=8*n;var h=Math.ceil((t-e)/i);for(E=0;E<I;E++)0===a&&(B=A[Q++],a=32),a>=g?(o=B>>>a-g&C,a-=g):(o=(B&C)<<(s=g-a)&C,o+=(B=A[Q++])>>>(a=32-s)),r[E]=o<h?e+o*i:t;return r.unshift(e),r},Q=function(A,g,I,e,i,t,B,C){var Q,E,s,a,o=(1<<I)-1,r=0,n=0,h=0;if(i)for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=I?(E=s>>>h&o,n-=I,h+=I):(E=s>>>h&o,n=32-(a=I-n),E|=((s=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=i[E];else{var l=Math.ceil((C-t)/B);for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=I?(E=s>>>h&o,n-=I,h+=I):(E=s>>>h&o,n=32-(a=I-n),E|=((s=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=E<l?t+E*B:C}return g},E=function(A,g,I,e,i,t){var B,C=(1<<g)-1,Q=0,E=0,s=0,a=0,o=0,r=0,n=[],h=Math.ceil((t-e)/i);for(E=0;E<I;E++)0===a&&(B=A[Q++],a=32,r=0),a>=g?(o=B>>>r&C,a-=g,r+=g):(o=B>>>r&C,a=32-(s=g-a),o|=((B=A[Q++])&(1<<s)-1)<<g-s,r=s),n[E]=o<h?e+o*i:t;return n.unshift(e),n},s=function(A,g,I,e){var i,t,B,C,Q=(1<<I)-1,E=0,s=0,a=4*A.length-Math.ceil(I*e/8);for(A[A.length-1]<<=8*a,i=0;i<e;i++)0===s&&(B=A[E++],s=32),s>=I?(t=B>>>s-I&Q,s-=I):(t=(B&Q)<<(C=I-s)&Q,t+=(B=A[E++])>>>(s=32-C)),g[i]=t;return g},a=function(A,g,I,e){var i,t,B,C,Q=(1<<I)-1,E=0,s=0,a=0;for(i=0;i<e;i++)0===s&&(B=A[E++],s=32,a=0),s>=I?(t=B>>>a&Q,s-=I,a+=I):(t=B>>>a&Q,s=32-(C=I-s),t|=((B=A[E++])&(1<<C)-1)<<I-C,a=C),g[i]=t;return g},o={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var g=65535,I=65535,e=A.length,i=Math.floor(e/2),t=0;i;){var B=i>=359?359:i;i-=B;do{g+=A[t++]<<8,I+=g+=A[t++]}while(--B);g=(65535&g)+(g>>>16),I=(65535&I)+(I>>>16)}return 1&e&&(I+=g+=A[t]<<8),((I=(65535&I)+(I>>>16))<<16|(g=(65535&g)+(g>>>16)))>>>0},readHeaderInfo:function(A,g){var I=g.ptr,e=new Uint8Array(A,I,6),i={};if(i.fileIdentifierString=String.fromCharCode.apply(null,e),0!==i.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+i.fileIdentifierString;I+=6;var t,B=new DataView(A,I,8),C=B.getInt32(0,!0);if(i.fileVersion=C,I+=4,C>=3&&(i.checksum=B.getUint32(4,!0),I+=4),B=new DataView(A,I,12),i.height=B.getUint32(0,!0),i.width=B.getUint32(4,!0),I+=8,C>=4?(i.numDims=B.getUint32(8,!0),I+=4):i.numDims=1,B=new DataView(A,I,40),i.numValidPixel=B.getUint32(0,!0),i.microBlockSize=B.getInt32(4,!0),i.blobSize=B.getInt32(8,!0),i.imageType=B.getInt32(12,!0),i.maxZError=B.getFloat64(16,!0),i.zMin=B.getFloat64(24,!0),i.zMax=B.getFloat64(32,!0),I+=40,g.headerInfo=i,g.ptr=I,C>=3&&(t=C>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,I-t,i.blobSize-14))!==i.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,g){var I=g.headerInfo,e=this.getDataTypeArray(I.imageType),i=I.numDims*this.getDataTypeSize(I.imageType),t=this.readSubArray(A,g.ptr,e,i),B=this.readSubArray(A,g.ptr+i,e,i);g.ptr+=2*i;var C,Q=!0;for(C=0;C<I.numDims;C++)if(t[C]!==B[C]){Q=!1;break}return I.minValues=t,I.maxValues=B,Q},readSubArray:function(A,g,I,e){var i;if(I===Uint8Array)i=new Uint8Array(A,g,e);else{var t=new ArrayBuffer(e);new Uint8Array(t).set(new Uint8Array(A,g,e)),i=new I(t)}return i},readMask:function(A,g){var I,e,i=g.ptr,t=g.headerInfo,B=t.width*t.height,C=t.numValidPixel,Q=new DataView(A,i,4),E={};if(E.numBytes=Q.getUint32(0,!0),i+=4,(0===C||B===C)&&0!==E.numBytes)throw"invalid mask";if(0===C)I=new Uint8Array(Math.ceil(B/8)),E.bitset=I,e=new Uint8Array(B),g.pixels.resultMask=e,i+=E.numBytes;else if(E.numBytes>0){I=new Uint8Array(Math.ceil(B/8));var s=(Q=new DataView(A,i,E.numBytes)).getInt16(0,!0),a=2,o=0,r=0;do{if(s>0)for(;s--;)I[o++]=Q.getUint8(a++);else for(r=Q.getUint8(a++),s=-s;s--;)I[o++]=r;s=Q.getInt16(a,!0),a+=2}while(a<E.numBytes);if(-32768!==s||o<I.length)throw"Unexpected end of mask RLE encoding";e=new Uint8Array(B);var n=0,h=0;for(h=0;h<B;h++)7&h?(n=I[h>>3],n<<=7&h):n=I[h>>3],128&n&&(e[h]=1);g.pixels.resultMask=e,E.bitset=I,i+=E.numBytes}return g.ptr=i,g.mask=E,!0},readDataOneSweep:function(A,g,I,e){var i,t=g.ptr,B=g.headerInfo,C=B.numDims,Q=B.width*B.height,E=B.imageType,s=B.numValidPixel*o.getDataTypeSize(E)*C,a=g.pixels.resultMask;if(I===Uint8Array)i=new Uint8Array(A,t,s);else{var r=new ArrayBuffer(s);new Uint8Array(r).set(new Uint8Array(A,t,s)),i=new I(r)}if(i.length===Q*C)g.pixels.resultPixels=e?o.swapDimensionOrder(i,Q,C,I,!0):i;else{g.pixels.resultPixels=new I(Q*C);var n=0,h=0,l=0,c=0;if(C>1){if(e){for(h=0;h<Q;h++)if(a[h])for(c=h,l=0;l<C;l++,c+=Q)g.pixels.resultPixels[c]=i[n++]}else for(h=0;h<Q;h++)if(a[h])for(c=h*C,l=0;l<C;l++)g.pixels.resultPixels[c+l]=i[n++]}else for(h=0;h<Q;h++)a[h]&&(g.pixels.resultPixels[h]=i[n++])}return t+=s,g.ptr=t,!0},readHuffmanTree:function(A,g){var I=this.HUFFMAN_LUT_BITS_MAX,e=new DataView(A,g.ptr,16);if(g.ptr+=16,e.getInt32(0,!0)<2)throw"unsupported Huffman version";var i=e.getInt32(4,!0),t=e.getInt32(8,!0),B=e.getInt32(12,!0);if(t>=B)return!1;var C=new Uint32Array(B-t);o.decodeBits(A,g,C);var Q,E,s,a,n=[];for(Q=t;Q<B;Q++)n[E=Q-(Q<i?0:i)]={first:C[Q-t],second:null};var h=A.byteLength-g.ptr,l=Math.ceil(h/4),c=new ArrayBuffer(4*l);new Uint8Array(c).set(new Uint8Array(A,g.ptr,h));var D,w=new Uint32Array(c),d=0,y=0;for(D=w[0],Q=t;Q<B;Q++)(a=n[E=Q-(Q<i?0:i)].first)>0&&(n[E].second=D<<d>>>32-a,32-d>=a?32===(d+=a)&&(d=0,D=w[++y]):(d+=a-32,D=w[++y],n[E].second|=D>>>32-d));var f=0,u=0,S=new r;for(Q=0;Q<n.length;Q++)void 0!==n[Q]&&(f=Math.max(f,n[Q].first));u=f>=I?I:f;var G,N,F,k,R,U=[];for(Q=t;Q<B;Q++)if((a=n[E=Q-(Q<i?0:i)].first)>0)if(G=[a,E],a<=u)for(N=n[E].second<<u-a,F=1<<u-a,s=0;s<F;s++)U[N|s]=G;else for(N=n[E].second,R=S,k=a-1;k>=0;k--)N>>>k&1?(R.right||(R.right=new r),R=R.right):(R.left||(R.left=new r),R=R.left),0!==k||R.val||(R.val=G[1]);return{decodeLut:U,numBitsLUTQick:u,numBitsLUT:f,tree:S,stuffedData:w,srcPtr:y,bitPos:d}},readHuffman:function(A,g,I,e){var i,t,B,C,Q,E,s,a,r,n=g.headerInfo.numDims,h=g.headerInfo.height,l=g.headerInfo.width,c=l*h,D=this.readHuffmanTree(A,g),w=D.decodeLut,d=D.tree,y=D.stuffedData,f=D.srcPtr,u=D.bitPos,S=D.numBitsLUTQick,G=D.numBitsLUT,N=0===g.headerInfo.imageType?128:0,F=g.pixels.resultMask,k=0;u>0&&(f++,u=0);var R,U=y[f],L=1===g.encodeMode,p=new I(c*n),M=p;if(n<2||L){for(R=0;R<n;R++)if(n>1&&(M=new I(p.buffer,c*R,c),k=0),g.headerInfo.numValidPixel===l*h)for(a=0,E=0;E<h;E++)for(s=0;s<l;s++,a++){if(t=0,Q=C=U<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),w[Q])t=w[Q][1],u+=w[Q][0];else for(Q=C=U<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),i=d,r=0;r<G;r++)if(!(i=C>>>G-r-1&1?i.right:i.left).left&&!i.right){t=i.val,u=u+r+1;break}u>=32&&(u-=32,U=y[++f]),B=t-N,L?(B+=s>0?k:E>0?M[a-l]:k,B&=255,M[a]=B,k=B):M[a]=B}else for(a=0,E=0;E<h;E++)for(s=0;s<l;s++,a++)if(F[a]){if(t=0,Q=C=U<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),w[Q])t=w[Q][1],u+=w[Q][0];else for(Q=C=U<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),i=d,r=0;r<G;r++)if(!(i=C>>>G-r-1&1?i.right:i.left).left&&!i.right){t=i.val,u=u+r+1;break}u>=32&&(u-=32,U=y[++f]),B=t-N,L?(s>0&&F[a-1]?B+=k:E>0&&F[a-l]?B+=M[a-l]:B+=k,B&=255,M[a]=B,k=B):M[a]=B}}else for(a=0,E=0;E<h;E++)for(s=0;s<l;s++)if(a=E*l+s,!F||F[a])for(R=0;R<n;R++,a+=c){if(t=0,Q=C=U<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),w[Q])t=w[Q][1],u+=w[Q][0];else for(Q=C=U<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),i=d,r=0;r<G;r++)if(!(i=C>>>G-r-1&1?i.right:i.left).left&&!i.right){t=i.val,u=u+r+1;break}u>=32&&(u-=32,U=y[++f]),B=t-N,M[a]=B}g.ptr=g.ptr+4*(f+1)+(u>0?4:0),g.pixels.resultPixels=p,n>1&&!e&&(g.pixels.resultPixels=o.swapDimensionOrder(p,c,n,I))},decodeBits:function(A,g,I,e,i){var t=g.headerInfo,o=t.fileVersion,r=0,n=A.byteLength-g.ptr>=5?5:A.byteLength-g.ptr,h=new DataView(A,g.ptr,n),l=h.getUint8(0);r++;var c=l>>6,D=0===c?4:3-c,w=(32&l)>0,d=31&l,y=0;if(1===D)y=h.getUint8(r),r++;else if(2===D)y=h.getUint16(r,!0),r+=2;else{if(4!==D)throw"Invalid valid pixel count type";y=h.getUint32(r,!0),r+=4}var f,u,S,G,N,F,k,R,U,L=2*t.maxZError,p=t.numDims>1?t.maxValues[i]:t.zMax;if(w){for(g.counter.lut++,R=h.getUint8(r),r++,G=Math.ceil((R-1)*d/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),S=new Uint8Array(u),g.ptr+=r,S.set(new Uint8Array(A,g.ptr,G)),k=new Uint32Array(u),g.ptr+=G,U=0;R-1>>>U;)U++;G=Math.ceil(y*U/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,G)),f=new Uint32Array(u),g.ptr+=G,F=o>=3?E(k,d,R-1,e,L,p):C(k,d,R-1,e,L,p),o>=3?Q(f,I,U,y,F):B(f,I,U,y,F)}else g.counter.bitstuffer++,U=d,g.ptr+=r,U>0&&(G=Math.ceil(y*U/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,G)),f=new Uint32Array(u),g.ptr+=G,o>=3?null==e?a(f,I,U,y):Q(f,I,U,y,!1,e,L,p):null==e?s(f,I,U,y):B(f,I,U,y,!1,e,L,p))},readTiles:function(A,g,I,e){var i=g.headerInfo,t=i.width,B=i.height,C=t*B,Q=i.microBlockSize,E=i.imageType,s=o.getDataTypeSize(E),a=Math.ceil(t/Q),r=Math.ceil(B/Q);g.pixels.numBlocksY=r,g.pixels.numBlocksX=a,g.pixels.ptr=0;var n,h,l,c,D,w,d,y,f,u,S=0,G=0,N=0,F=0,k=0,R=0,U=0,L=0,p=0,M=0,Y=0,m=0,K=0,H=0,J=0,b=new I(Q*Q),q=B%Q||Q,x=t%Q||Q,T=i.numDims,O=g.pixels.resultMask,P=g.pixels.resultPixels,v=i.fileVersion>=5?14:15,V=i.zMax;for(N=0;N<r;N++)for(k=N!==r-1?Q:q,F=0;F<a;F++)for(M=N*t*Q+F*Q,Y=t-(R=F!==a-1?Q:x),y=0;y<T;y++){if(T>1?(u=P,M=N*t*Q+F*Q,P=new I(g.pixels.resultPixels.buffer,C*y*s,C),V=i.maxValues[y]):u=null,U=A.byteLength-g.ptr,h={},J=0,L=(n=new DataView(A,g.ptr,Math.min(10,U))).getUint8(0),J++,f=i.fileVersion>=5?4&L:0,p=L>>6&255,(L>>2&v)!=(F*Q>>3&v))throw"integrity issue";if(f&&0===y)throw"integrity issue";if((D=3&L)>3)throw g.ptr+=J,"Invalid block encoding ("+D+")";if(2!==D)if(0===D){if(f)throw"integrity issue";if(g.counter.uncompressed++,g.ptr+=J,m=(m=k*R*s)<(K=A.byteLength-g.ptr)?m:K,l=new ArrayBuffer(m%s===0?m:m+s-m%s),new Uint8Array(l).set(new Uint8Array(A,g.ptr,m)),c=new I(l),H=0,O)for(S=0;S<k;S++){for(G=0;G<R;G++)O[M]&&(P[M]=c[H++]),M++;M+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)P[M++]=c[H++];M+=Y}g.ptr+=H*s}else if(w=o.getDataTypeUsed(f&&E<6?4:E,p),d=o.getOnePixel(h,J,w,n),J+=o.getDataTypeSize(w),3===D)if(g.ptr+=J,g.counter.constantoffset++,O)for(S=0;S<k;S++){for(G=0;G<R;G++)O[M]&&(P[M]=f?Math.min(V,u[M]+d):d),M++;M+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)P[M]=f?Math.min(V,u[M]+d):d,M++;M+=Y}else if(g.ptr+=J,o.decodeBits(A,g,b,d,y),J=0,f)if(O)for(S=0;S<k;S++){for(G=0;G<R;G++)O[M]&&(P[M]=b[J++]+u[M]),M++;M+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)P[M]=b[J++]+u[M],M++;M+=Y}else if(O)for(S=0;S<k;S++){for(G=0;G<R;G++)O[M]&&(P[M]=b[J++]),M++;M+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)P[M++]=b[J++];M+=Y}else{if(f)if(O)for(S=0;S<k;S++)for(G=0;G<R;G++)O[M]&&(P[M]=u[M]),M++;else for(S=0;S<k;S++)for(G=0;G<R;G++)P[M]=u[M],M++;g.counter.constant++,g.ptr+=J}}T>1&&!e&&(g.pixels.resultPixels=o.swapDimensionOrder(g.pixels.resultPixels,C,T,I))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:o.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,g){var I=A.headerInfo.zMax,e=A.headerInfo.zMin,i=A.headerInfo.maxValues,t=A.headerInfo.numDims,B=A.headerInfo.height*A.headerInfo.width,C=0,Q=0,E=0,s=A.pixels.resultMask,a=A.pixels.resultPixels;if(s)if(t>1){if(g)for(C=0;C<t;C++)for(E=C*B,I=i[C],Q=0;Q<B;Q++)s[Q]&&(a[E+Q]=I);else for(Q=0;Q<B;Q++)if(s[Q])for(E=Q*t,C=0;C<t;C++)a[E+t]=i[C]}else for(Q=0;Q<B;Q++)s[Q]&&(a[Q]=I);else if(t>1&&e!==I)if(g)for(C=0;C<t;C++)for(E=C*B,I=i[C],Q=0;Q<B;Q++)a[E+Q]=I;else for(Q=0;Q<B;Q++)for(E=Q*t,C=0;C<t;C++)a[E+C]=i[C];else for(Q=0;Q<B*t;Q++)a[Q]=I},getDataTypeArray:function(A){var g;switch(A){case 0:g=Int8Array;break;case 1:g=Uint8Array;break;case 2:g=Int16Array;break;case 3:g=Uint16Array;break;case 4:g=Int32Array;break;case 5:g=Uint32Array;break;case 6:default:g=Float32Array;break;case 7:g=Float64Array}return g},getPixelType:function(A){var g;switch(A){case 0:g="S8";break;case 1:g="U8";break;case 2:g="S16";break;case 3:g="U16";break;case 4:g="S32";break;case 5:g="U32";break;case 6:default:g="F32";break;case 7:g="F64"}return g},isValidPixelValue:function(A,g){if(null==g)return!1;var I;switch(A){case 0:I=g>=-128&&g<=127;break;case 1:I=g>=0&&g<=255;break;case 2:I=g>=-32768&&g<=32767;break;case 3:I=g>=0&&g<=65536;break;case 4:I=g>=-2147483648&&g<=2147483647;break;case 5:I=g>=0&&g<=4294967296;break;case 6:I=g>=-34027999387901484e22&&g<=34027999387901484e22;break;case 7:I=g>=-17976931348623157e292&&g<=17976931348623157e292;break;default:I=!1}return I},getDataTypeSize:function(A){var g=0;switch(A){case 0:case 1:g=1;break;case 2:case 3:g=2;break;case 4:case 5:case 6:g=4;break;case 7:g=8;break;default:g=A}return g},getDataTypeUsed:function(A,g){var I=A;switch(A){case 2:case 4:I=A-g;break;case 3:case 5:I=A-2*g;break;case 6:I=0===g?A:1===g?2:1;break;case 7:I=0===g?A:A-2*g+1;break;default:I=A}return I},getOnePixel:function(A,g,I,e){var i=0;switch(I){case 0:i=e.getInt8(g);break;case 1:i=e.getUint8(g);break;case 2:i=e.getInt16(g,!0);break;case 3:i=e.getUint16(g,!0);break;case 4:i=e.getInt32(g,!0);break;case 5:i=e.getUInt32(g,!0);break;case 6:i=e.getFloat32(g,!0);break;case 7:i=e.getFloat64(g,!0);break;default:throw"the decoder does not understand this pixel type"}return i},swapDimensionOrder:function(A,g,I,e,i){var t=0,B=0,C=0,Q=0,E=A;if(I>1)if(E=new e(g*I),i)for(t=0;t<g;t++)for(Q=t,C=0;C<I;C++,Q+=g)E[Q]=A[B++];else for(t=0;t<g;t++)for(Q=t,C=0;C<I;C++,Q+=g)E[B++]=A[Q];return E}},r=function(A,g,I){this.val=A,this.left=g,this.right=I},{decode:function(A,g){var I=(g=g||{}).noDataValue,e=0,i={};if(i.ptr=g.inputOffset||0,i.pixels={},o.readHeaderInfo(A,i)){var t=i.headerInfo,B=t.fileVersion,C=o.getDataTypeArray(t.imageType);if(B>5)throw"unsupported lerc version 2."+B;o.readMask(A,i),t.numValidPixel===t.width*t.height||i.pixels.resultMask||(i.pixels.resultMask=g.maskData);var Q=t.width*t.height;i.pixels.resultPixels=new C(Q*t.numDims),i.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var E,s=!g.returnPixelInterleavedDims;if(0!==t.numValidPixel)if(t.zMax===t.zMin)o.constructConstantSurface(i,s);else if(B>=4&&o.checkMinMaxRanges(A,i))o.constructConstantSurface(i,s);else{var a=new DataView(A,i.ptr,2),r=a.getUint8(0);if(i.ptr++,r)o.readDataOneSweep(A,i,C,s);else if(B>1&&t.imageType<=1&&Math.abs(t.maxZError-.5)<1e-5){var n=a.getUint8(1);if(i.ptr++,i.encodeMode=n,n>2||B<4&&n>1)throw"Invalid Huffman flag "+n;n?o.readHuffman(A,i,C,s):o.readTiles(A,i,C,s)}else o.readTiles(A,i,C,s)}i.eofOffset=i.ptr,g.inputOffset?(E=i.headerInfo.blobSize+g.inputOffset-i.ptr,Math.abs(E)>=1&&(i.eofOffset=g.inputOffset+i.headerInfo.blobSize)):(E=i.headerInfo.blobSize-i.ptr,Math.abs(E)>=1&&(i.eofOffset=i.headerInfo.blobSize));var h={width:t.width,height:t.height,pixelData:i.pixels.resultPixels,minValue:t.zMin,maxValue:t.zMax,validPixelCount:t.numValidPixel,dimCount:t.numDims,dimStats:{minValues:t.minValues,maxValues:t.maxValues},maskData:i.pixels.resultMask};if(i.pixels.resultMask&&o.isValidPixelValue(t.imageType,I)){var l=i.pixels.resultMask;for(e=0;e<Q;e++)l[e]||(h.pixelData[e]=I);h.noDataValue=I}return i.noDataValue=I,g.returnFileInfo&&(h.fileInfo=o.formatFileInfo(i)),h}},getBandCount:function(A){for(var g=0,I=0,e={ptr:0,pixels:{}};I<A.byteLength-58;)o.readHeaderInfo(A,e),I+=e.headerInfo.blobSize,g++,e.ptr=I;return g}}),D=(n=new ArrayBuffer(4),h=new Uint8Array(n),new Uint32Array(n)[0]=1,1===h[0]),w={decode:function(A,g){if(!D)throw"Big endian system is not supported.";var I,e,i=(g=g||{}).inputOffset||0,t=new Uint8Array(A,i,10),B=String.fromCharCode.apply(null,t);if("CntZImage"===B.trim())I=l,e=1;else{if("Lerc2"!==B.substring(0,5))throw"Unexpected file identifier string: "+B;I=c,e=2}for(var C,Q,E,s,a,o,r=0,n=A.byteLength-10,h=[],w={width:0,height:0,pixels:[],pixelType:g.pixelType,mask:null,statistics:[]},d=0;i<n;){var y=I.decode(A,{inputOffset:i,encodedMaskData:C,maskData:E,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:g.returnPixelInterleavedDims,pixelType:g.pixelType||null,noDataValue:g.noDataValue||null});i=y.fileInfo.eofOffset,E=y.maskData,0===r&&(C=y.encodedMaskData,w.width=y.width,w.height=y.height,w.dimCount=y.dimCount||1,w.pixelType=y.pixelType||y.fileInfo.pixelType,w.mask=E),e>1&&(E&&h.push(E),y.fileInfo.mask&&y.fileInfo.mask.numBytes>0&&d++),r++,w.pixels.push(y.pixelData),w.statistics.push({minValue:y.minValue,maxValue:y.maxValue,noDataValue:y.noDataValue,dimStats:y.dimStats})}if(e>1&&d>1){for(o=w.width*w.height,w.bandMasks=h,(E=new Uint8Array(o)).set(h[0]),s=1;s<h.length;s++)for(Q=h[s],a=0;a<o;a++)E[a]=E[a]&Q[a];w.maskData=E}return w}};Oe.exports?Oe.exports=w:this.Lerc=w}()),Te.exports),ve=qe(Pe);let Ve,Ze,ze;const je={env:{emscripten_notify_memory_growth:A=>{ze=new Uint8Array(Ze.exports.memory.buffer)}}};const We="AGFzbQEAAAABoAEUYAF/AGADf39/AGACf38AYAF/AX9gBX9/f39/AX9gA39/fwF/YAR/f39/AX9gAn9/AX9gAAF/YAd/f39/f39/AX9gB39/f39/f38AYAR/f39/AX5gAn9/AX5gBn9/f39/fwBgDn9/f39/f39/f39/f39/AX9gCH9/f39/f39/AX9gCX9/f39/f39/fwF/YAN+f38BfmAFf39/f38AYAAAAicBA2Vudh9lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoAAADJyYDAAMACAQJBQEHBwADBgoLBAQDBAEABgUMBQ0OAQEBDxAREgYAEwQFAXABAgIFBwEBggKAgAIGCAF/AUGgnwQLB9MBCgZtZW1vcnkCAAxaU1REX2lzRXJyb3IADRlaU1REX2ZpbmREZWNvbXByZXNzZWRTaXplABkPWlNURF9kZWNvbXByZXNzACQGbWFsbG9jAAEEZnJlZQACGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBABlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAAQcZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudAAFIl9fY3hhX2luY3JlbWVudF9leGNlcHRpb25fcmVmY291bnQAJQkHAQBBAQsBJgwBCgqtkgMm1ScBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQagbKAIAIgRBECAAQQtqQfgDcSAAQQtJGyIGQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQdAbaiIAIAFB2BtqKAIAIgEoAggiBUYEQEGoGyAEQX4gAndxNgIADAELIAUgADYCDCAAIAU2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgCBEEBcjYCBAwLCyAGQbAbKAIAIghNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIBQQN0IgBB0BtqIgIgAEHYG2ooAgAiACgCCCIFRgRAQagbIARBfiABd3EiBDYCAAwBCyAFIAI2AgwgAiAFNgIICyAAIAZBA3I2AgQgACAGaiIHIAFBA3QiASAGayIFQQFyNgIEIAAgAWogBTYCACAIBEAgCEF4cUHQG2ohAUG8GygCACECAn8gBEEBIAhBA3Z0IgNxRQRAQagbIAMgBHI2AgAgAQwBCyABKAIICyEDIAEgAjYCCCADIAI2AgwgAiABNgIMIAIgAzYCCAsgAEEIaiEAQbwbIAc2AgBBsBsgBTYCAAwLC0GsGygCACILRQ0BIAtoQQJ0QdgdaigCACICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQawbKAIAIgdFDQBBHyEIQQAgBmshAyAAQfT//wdNBEAgBkEmIAFBCHZnIgBrdkEBcSAAQQF0a0E+aiEICwJAAkACQCAIQQJ0QdgdaigCACIBRQRAQQAhAAwBC0EAIQAgBkEZIAhBAXZrQQAgCEEfRxt0IQIDQAJAIAEoAgRBeHEgBmsiBCADTw0AIAEhBSAEIgMNAEEAIQMgASEADAMLIAAgASgCFCIEIAQgASACQR12QQRxaigCECIBRhsgACAEGyEAIAJBAXQhAiABDQALCyAAIAVyRQRAQQAhBUECIAh0IgBBACAAa3IgB3EiAEUNAyAAaEECdEHYHWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANBsBsoAgAgBmtPDQAgBSgCGCEIIAUgBSgCDCIARwRAIAUoAggiASAANgIMIAAgATYCCAwICyAFKAIUIgEEfyAFQRRqBSAFKAIQIgFFDQMgBUEQagshAgNAIAIhBCABIgBBFGohAiAAKAIUIgENACAAQRBqIQIgACgCECIBDQALIARBADYCAAwHCyAGQbAbKAIAIgVNBEBBvBsoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQbAbIAE2AgBBvBsgAjYCACAAQQhqIQAMCQsgBkG0GygCACICSQRAQbQbIAIgBmsiATYCAEHAG0HAGygCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QYAfKAIABEBBiB8oAgAMAQtBjB9CfzcCAEGEH0KAoICAgIAENwIAQYAfIApBDGpBcHFB2KrVqgVzNgIAQZQfQQA2AgBB5B5BADYCAEGAIAsiAWoiBEEAIAFrIgdxIgEgBk0NCEHgHigCACIFBEBB2B4oAgAiCCABaiIJIAhNIAUgCUlyDQkLAkBB5B4tAABBBHFFBEACQAJAAkACQEHAGygCACIFBEBB6B4hAANAIAAoAgAiCCAFTQRAIAUgCCAAKAIEakkNAwsgACgCCCIADQALC0EAEAMiAkF/Rg0DIAEhBEGEHygCACIAQQFrIgUgAnEEQCABIAJrIAIgBWpBACAAa3FqIQQLIAQgBk0NA0HgHigCACIABEBB2B4oAgAiBSAEaiIHIAVNIAAgB0lyDQQLIAQQAyIAIAJHDQEMBQsgBCACayAHcSIEEAMiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtBiB8oAgAiAiADIARrakEAIAJrcSICEANBf0YNASACIARqIQQgACECDAMLIAJBf0cNAgtB5B5B5B4oAgBBBHI2AgALIAEQAyICQX9GQQAQAyIAQX9GciAAIAJNcg0FIAAgAmsiBCAGQShqTQ0FC0HYHkHYHigCACAEaiIANgIAQdweKAIAIABJBEBB3B4gADYCAAsCQEHAGygCACIDBEBB6B4hAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQbgbKAIAIgBBACAAIAJNG0UEQEG4GyACNgIAC0EAIQBB7B4gBDYCAEHoHiACNgIAQcgbQX82AgBBzBtBgB8oAgA2AgBB9B5BADYCAANAIABBA3QiAUHYG2ogAUHQG2oiBTYCACABQdwbaiAFNgIAIABBAWoiAEEgRw0AC0G0GyAEQShrIgBBeCACa0EHcSIBayIFNgIAQcAbIAEgAmoiATYCACABIAVBAXI2AgQgACACakEoNgIEQcQbQZAfKAIANgIADAQLIAIgA00gASADS3INAiAAKAIMQQhxDQIgACAEIAVqNgIEQcAbIANBeCADa0EHcSIAaiIBNgIAQbQbQbQbKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQcQbQZAfKAIANgIADAMLQQAhAAwGC0EAIQAMBAtBuBsoAgAgAksEQEG4GyACNgIACyACIARqIQVB6B4hAAJAA0AgBSAAKAIAIgFHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQMLQegeIQADQAJAIAAoAgAiASADTQRAIAMgASAAKAIEaiIFSQ0BCyAAKAIIIQAMAQsLQbQbIARBKGsiAEF4IAJrQQdxIgFrIgc2AgBBwBsgASACaiIBNgIAIAEgB0EBcjYCBCAAIAJqQSg2AgRBxBtBkB8oAgA2AgAgAyAFQScgBWtBB3FqQS9rIgAgACADQRBqSRsiAUEbNgIEIAFB8B4pAgA3AhAgAUHoHikCADcCCEHwHiABQQhqNgIAQeweIAQ2AgBB6B4gAjYCAEH0HkEANgIAIAFBGGohAANAIABBBzYCBCAAQQhqIQIgAEEEaiEAIAIgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFB0BtqIQACf0GoGygCACIBQQEgAkEDdnQiAnFFBEBBqBsgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QdgdaiEBAkACQEGsGygCACIFQQEgAHQiBHFFBEBBrBsgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQbQbKAIAIgAgBk0NAEG0GyAAIAZrIgE2AgBBwBtBwBsoAgAiACAGaiICNgIAIAIgAUEBcjYCBCAAIAZBA3I2AgQgAEEIaiEADAQLQaQbQTA2AgBBACEADAMLIAAgAjYCACAAIAAoAgQgBGo2AgQgAkF4IAJrQQdxaiIIIAZBA3I2AgQgAUF4IAFrQQdxaiIEIAYgCGoiA2shBwJAQcAbKAIAIARGBEBBwBsgAzYCAEG0G0G0GygCACAHaiIANgIAIAMgAEEBcjYCBAwBC0G8GygCACAERgRAQbwbIAM2AgBBsBtBsBsoAgAgB2oiADYCACADIABBAXI2AgQgACADaiAANgIADAELIAQoAgQiAEEDcUEBRgRAIABBeHEhCSAEKAIMIQICQCAAQf8BTQRAIAQoAggiASACRgRAQagbQagbKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdEHYHWoiASgCACAERgRAIAEgAjYCACACDQFBrBtBrBsoAgBBfiAAd3E2AgAMAgsCQCAEIAYoAhBGBEAgBiACNgIQDAELIAYgAjYCFAsgAkUNAQsgAiAGNgIYIAQoAhAiAARAIAIgADYCECAAIAI2AhgLIAQoAhQiAEUNACACIAA2AhQgACACNgIYCyAHIAlqIQcgBCAJaiIEKAIEIQALIAQgAEF+cTYCBCADIAdBAXI2AgQgAyAHaiAHNgIAIAdB/wFNBEAgB0F4cUHQG2ohAAJ/QagbKAIAIgFBASAHQQN2dCICcUUEQEGoGyABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyECIAdB////B00EQCAHQSYgB0EIdmciAGt2QQFxIABBAXRrQT5qIQILIAMgAjYCHCADQgA3AhAgAkECdEHYHWohAAJAAkBBrBsoAgAiAUEBIAJ0IgVxRQRAQawbIAEgBXI2AgAgACADNgIADAELIAdBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAQNAIAEiACgCBEF4cSAHRg0CIAJBHXYhASACQQF0IQIgACABQQRxaiIFKAIQIgENAAsgBSADNgIQCyADIAA2AhggAyADNgIMIAMgAzYCCAwBCyAAKAIIIgEgAzYCDCAAIAM2AgggA0EANgIYIAMgADYCDCADIAE2AggLIAhBCGohAAwCCwJAIAhFDQACQCAFKAIcIgFBAnRB2B1qIgIoAgAgBUYEQCACIAA2AgAgAA0BQawbIAdBfiABd3EiBzYCAAwCCwJAIAUgCCgCEEYEQCAIIAA2AhAMAQsgCCAANgIUCyAARQ0BCyAAIAg2AhggBSgCECIBBEAgACABNgIQIAEgADYCGAsgBSgCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAUgAyAGaiIAQQNyNgIEIAAgBWoiACAAKAIEQQFyNgIEDAELIAUgBkEDcjYCBCAFIAZqIgQgA0EBcjYCBCADIARqIAM2AgAgA0H/AU0EQCADQXhxQdAbaiEAAn9BqBsoAgAiAUEBIANBA3Z0IgJxRQRAQagbIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgBCAANgIcIARCADcCECAAQQJ0QdgdaiEBAkACQCAHQQEgAHQiAnFFBEBBrBsgAiAHcjYCACABIAQ2AgAgBCABNgIYDAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhAQNAIAEiAigCBEF4cSADRg0CIABBHXYhASAAQQF0IQAgAiABQQRxaiIHKAIQIgENAAsgByAENgIQIAQgAjYCGAsgBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAVBCGohAAwBCwJAIAlFDQACQCACKAIcIgFBAnRB2B1qIgUoAgAgAkYEQCAFIAA2AgAgAA0BQawbIAtBfiABd3E2AgAMAgsCQCACIAkoAhBGBEAgCSAANgIQDAELIAkgADYCFAsgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQdAbaiEAQbwbKAIAIQECf0EBIAhBA3Z0IgcgBHFFBEBBqBsgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0G8GyAFNgIAQbAbIAM2AgALIAJBCGohAAsgCkEQaiQAIAAL3AsBCH8CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgJBeHEiAGohBQJAIAJBAXENACACQQJxRQ0BIAMgAygCACIEayIDQbgbKAIASQ0BIAAgBGohAAJAAkACQEG8GygCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQagbQagbKAIAQX4gBEEDdndxNgIADAULIAMoAhghByABIANHBEAgAygCCCICIAE2AgwgASACNgIIDAQLIAMoAhQiAgR/IANBFGoFIAMoAhAiAkUNAyADQRBqCyEEA0AgBCEGIAIiAUEUaiEEIAEoAhQiAg0AIAFBEGohBCABKAIQIgINAAsgBkEANgIADAMLIAUoAgQiAkEDcUEDRw0DQbAbIAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgB0UNAAJAIAMoAhwiBEECdEHYHWoiAigCACADRgRAIAIgATYCACABDQFBrBtBrBsoAgBBfiAEd3E2AgAMAgsCQCADIAcoAhBGBEAgByABNgIQDAELIAcgATYCFAsgAUUNAQsgASAHNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIAVPDQAgBSgCBCIEQQFxRQ0AAkACQAJAAkAgBEECcUUEQEHAGygCACAFRgRAQcAbIAM2AgBBtBtBtBsoAgAgAGoiADYCACADIABBAXI2AgQgA0G8GygCAEcNBkGwG0EANgIAQbwbQQA2AgAPC0G8GygCACIHIAVGBEBBvBsgAzYCAEGwG0GwGygCACAAaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAPCyAEQXhxIABqIQAgBSgCDCEBIARB/wFNBEAgBSgCCCICIAFGBEBBqBtBqBsoAgBBfiAEQQN2d3E2AgAMBQsgAiABNgIMIAEgAjYCCAwECyAFKAIYIQggASAFRwRAIAUoAggiAiABNgIMIAEgAjYCCAwDCyAFKAIUIgIEfyAFQRRqBSAFKAIQIgJFDQIgBUEQagshBANAIAQhBiACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAZBADYCAAwCCyAFIARBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAhFDQACQCAFKAIcIgRBAnRB2B1qIgIoAgAgBUYEQCACIAE2AgAgAQ0BQawbQawbKAIAQX4gBHdxNgIADAILAkAgBSAIKAIQRgRAIAggATYCEAwBCyAIIAE2AhQLIAFFDQELIAEgCDYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADIAdHDQBBsBsgADYCAA8LIABB/wFNBEAgAEF4cUHQG2ohAgJ/QagbKAIAIgRBASAAQQN2dCIAcUUEQEGoGyAAIARyNgIAIAIMAQsgAigCCAshACACIAM2AgggACADNgIMIAMgAjYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyICa3ZBAXEgAkEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QdgdaiEEAn8CQAJ/QawbKAIAIgZBASABdCICcUUEQEGsGyACIAZyNgIAIAQgAzYCAEEYIQFBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQQDQCAEIgIoAgRBeHEgAEYNAiABQR12IQQgAUEBdCEBIAIgBEEEcWoiBigCECIEDQALIAYgAzYCEEEYIQEgAiEEQQgLIQAgAyICDAELIAIoAggiBCADNgIMIAIgAzYCCEEYIQBBCCEBQQALIQYgASADaiAENgIAIAMgAjYCDCAAIANqIAY2AgBByBtByBsoAgBBAWsiAEF/IAAbNgIACwtsAQJ/QaAbKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA/AEEQdE0NASAAPwBBEHRrQf//A2pBEHZAAEF/RgR/QQAFQQAQAEEBCw0BC0GkG0EwNgIAQX8PC0GgGyAANgIAIAELBgAgACQACwQAIwALuQUBDH8jAEEQayIMJAACQCAEQQdNBEAgDEIANwMIIAQEQCAMQQhqIAMgBPwKAAALQWwgACABIAIgDEEIakEIEAYiACAAIARLGyAAIABBiX9JGyEFDAELIAEoAgBBAWoiDkEBdCIIBEAgAEEAIAj8CwALIAMoAAAiBUEPcSIHQQpLBEBBVCEFDAELIAIgB0EFajYCACADIARqIgJBBGshCCACQQdrIQ0gB0EGaiEPQQQhBiAFQQR2IQVBICAHdCIJQQFyIQpBACECQQEhByADIQQDQAJAIAdBAXFFBEADQCAFQX9zQYCAgIB4cmgiB0EYSUUEQCACQSRqIQIgBCANTQR/IARBA2oFIAQgDWtBA3QgBmpBH3EhBiAICyIEKAAAIAZ2IQUMAQsLIAYgB0EecSILakECaiEGIAdBAXZBA2wgAmogBSALdkEDcWoiAiAOTw0BAn8gBCANSyAGQQN2IARqIgUgCEtxRQRAIAZBB3EhBiAFDAELIAQgCGtBA3QgBmpBH3EhBiAICyIEKAAAIAZ2IQULIAUgCUEBa3EiByAJQQF0QQFrIgsgCmsiEEkEfyAPQQFrBSAFIAtxIgUgEEEAIAUgCU4bayEHIA8LIQUgACACQQF0aiAHQQFrIgs7AQAgAkEBaiECIAUgBmohBiAJQQEgB2sgCyAHQQBKGyAKaiIKSgRAIApBAkgNAUEgIApnIgVrIQ9BASAFQR9zdCEJCyACIA5PDQAgC0EARyEHAn8gBCANSyAGQQN1IARqIgUgCEtxRQRAIAZBB3EhBiAFDAELIAYgBCAIa0EDdGpBH3EhBiAICyIEKAAAIAZ2IQUMAQsLQWwhBSAKQQFHDQAgAiAOSwRAQVAhBQwBCyAGQSBKDQAgASACQQFrNgIAIAQgBkEHakEDdWogA2shBQsgDEEQaiQAIAULrRkCEX8BfiMAQTBrIgckAEG4fyEIAkAgBUUNACAELAAAIglB/wFxIQ0CQAJAIAlBAEgEQCANQf4Aa0EBdiIGIAVPDQMgDUH/AGsiCEH/AUsNAiAEQQFqIQRBACEFA0AgBSAITwRAIAYhDQwDBSAAIAVqIg0gBCAFQQF2aiIJLQAAQQR2OgAAIA0gCS0AAEEPcToAASAFQQJqIQUMAQsACwALIAUgDU0NAiAHQf8BNgIEIAYgB0EEaiAHQQhqIARBAWoiCiANEAYiBEGIf0sEQCAEIQgMAwtBVCEIIAcoAggiC0EGSw0CIAcoAgQiBUEBdCIMQQJqrUIBIAuthiIYQQQgC3QiCUEIaq18fEILfEL8//////////8Ag0LoAlYNAkFSIQggBUH/AUsNAkHoAiAJa60gBUEBaiIQQQF0rSAYfEIIfFQNAiANIARrIRQgBCAKaiEVIAwgBkGABGoiDCAJakEEaiIWakECaiERIAZBhARqIRcgBkGGBGohE0GAgAIgC3RBEHYhCEEAIQVBASEOQQEgC3QiCkEBayISIQQDQCAFIBBGRQRAAkAgBiAFQQF0Ig9qLwEAIglB//8DRgRAIBMgBEECdGogBToAACAEQQFrIQRBASEJDAELIA5BACAIIAnBShshDgsgDyAWaiAJOwEAIAVBAWohBQwBCwsgBiAOOwGCBCAGIAs7AYAEAkAgBCASRgRAQgAhGEEAIQlBACEIA0AgCSAQRgRAIApBA3YgCkEBdmpBA2oiBkEBdCEJQQAhBEEAIQgDQCAIIApPDQQgCCARaiEQQQAhBQNAIAVBAkZFBEAgEyAFIAZsIARqIBJxQQJ0aiAFIBBqLQAAOgAAIAVBAWohBQwBCwsgCEECaiEIIAQgCWogEnEhBAwACwAFIAYgCUEBdGouAQAhBCAIIBFqIg8gGDcAAEEIIQUDQCAEIAVMRQRAIAUgD2ogGDcAACAFQQhqIQUMAQsLIBhCgYKEiJCgwIABfCEYIAlBAWohCSAEIAhqIQgMAQsACwALIApBA3YgCkEBdmpBA2ohEUEAIQhBACEFA0AgCCAQRkUEQEEAIQkgBiAIQQF0ai4BACIPQQAgD0EAShshDwNAIAkgD0ZFBEAgEyAFQQJ0aiAIOgAAA0AgBSARaiAScSIFIARLDQALIAlBAWohCQwBCwsgCEEBaiEIDAELC0F/IQggBQ0DCyALQR9rIQhBACEFA0AgBSAKRkUEQCAWIBcgBUECdGoiBC0AAkEBdGoiBiAGLwEAIgZBAWo7AQAgBCAIIAZnaiIJOgADIAQgBiAJdCAKazsBACAFQQFqIQUMAQsLAkACQCAOQf//A3EEQCAHQRxqIgQgFSAUEAgiCEGIf0sNAiAHQRRqIAQgDBAJIAdBDGogBCAMEAkgBygCICIIQSBLDQECQCAHAn8gBygCJCIEIAcoAixPBEAgByAEIAhBA3ZrIgU2AiQgCEEHcQwBCyAEIAcoAigiBUYNASAHIAQgBCAFayAIQQN2IgYgBCAGayAFSRsiBGsiBTYCJCAIIARBA3RrCyIINgIgIAcgBSgAADYCHAtBACEFA0ACQAJAIAhBIU8EQCAHQbAaNgIkDAELIAcCfyAHKAIkIgQgBygCLE8EQCAHIAQgCEEDdmsiBDYCJEEBIQkgCEEHcQwBCyAEIAcoAigiBkYNASAHIAQgCEEDdiIJIAQgBmsgBCAJayAGTyIJGyIGayIENgIkIAggBkEDdGsLNgIgIAcgBCgAADYCHCAJRSAFQfsBS3INACAAIAVqIgggB0EUaiAHQRxqIgQQCjoAACAIIAdBDGogBBAKOgABAkAgBygCICIGQSFPBEAgB0GwGjYCJAwBCyAHKAIkIgQgBygCLE8EQCAHIAZBB3E2AiAgByAEIAZBA3ZrIgQ2AiQgByAEKAAANgIcDAMLIAQgBygCKCIJRg0AIAcgBiAEIAlrIAZBA3YiBiAEIAZrIgYgCUkbIgpBA3RrNgIgIAcgBCAKayIENgIkIAcgBCgAADYCHCAGIAlPDQILIAVBAnIhBQsgAEEBaiEMAn8CQANAQbp/IQggBUH9AUsNByAAIAVqIgogB0EUaiAHQRxqEAo6AAAgBSAMaiELIAcoAiAiBkEgSw0BAkAgBwJ/IAcoAiQiBCAHKAIsTwRAIAcgBCAGQQN2ayIENgIkIAZBB3EMAQsgBCAHKAIoIglGDQEgByAEIAQgCWsgBkEDdiIOIAQgDmsgCUkbIglrIgQ2AiQgBiAJQQN0aws2AiAgByAEKAAANgIcCyAFQf0BRg0HIAsgB0EMaiAHQRxqEAo6AAAgBUECaiEFIAcoAiAiBkEgTQRAIAcCfyAHKAIkIgQgBygCLE8EQCAHIAQgBkEDdmsiCDYCJCAGQQdxDAELIAQgBygCKCIIRg0CIAcgBCAEIAhrIAZBA3YiCSAEIAlrIAhJGyIEayIINgIkIAYgBEEDdGsLNgIgIAcgCCgAADYCHAwBCwsgB0GwGjYCJCAAIAVqIAdBFGogB0EcahAKOgAAIApBA2oMAQsgB0GwGjYCJCALIAdBDGogB0EcahAKOgAAIApBAmoLIABrIQgMBAsgCCAHQRRqIAdBHGoiBBAKOgACIAggB0EMaiAEEAo6AAMgBUEEaiEFIAcoAiAhCAwACwALIAdBHGoiBCAVIBQQCCIIQYh/Sw0BIAdBFGogBCAMEAkgB0EMaiAEIAwQCSAHKAIgIghBIEsNAAJAIAcCfyAHKAIkIgQgBygCLE8EQCAHIAQgCEEDdmsiBTYCJCAIQQdxDAELIAQgBygCKCIFRg0BIAcgBCAEIAVrIAhBA3YiBiAEIAZrIAVJGyIEayIFNgIkIAggBEEDdGsLIgg2AiAgByAFKAAANgIcC0EAIQUDQAJAAkAgCEEhTwRAIAdBsBo2AiQMAQsgBwJ/IAcoAiQiBCAHKAIsTwRAIAcgBCAIQQN2ayIENgIkQQEhCSAIQQdxDAELIAQgBygCKCIGRg0BIAcgBCAIQQN2IgkgBCAGayAEIAlrIAZPIgkbIgZrIgQ2AiQgCCAGQQN0aws2AiAgByAEKAAANgIcIAlFIAVB+wFLcg0AIAAgBWoiCCAHQRRqIAdBHGoiBBALOgAAIAggB0EMaiAEEAs6AAECQCAHKAIgIgZBIU8EQCAHQbAaNgIkDAELIAcoAiQiBCAHKAIsTwRAIAcgBkEHcTYCICAHIAQgBkEDdmsiBDYCJCAHIAQoAAA2AhwMAwsgBCAHKAIoIglGDQAgByAGIAQgCWsgBkEDdiIGIAQgBmsiBiAJSRsiCkEDdGs2AiAgByAEIAprIgQ2AiQgByAEKAAANgIcIAYgCU8NAgsgBUECciEFCyAAQQFqIQwCfwJAA0BBun8hCCAFQf0BSw0GIAAgBWoiCiAHQRRqIAdBHGoQCzoAACAFIAxqIQsgBygCICIGQSBLDQECQCAHAn8gBygCJCIEIAcoAixPBEAgByAEIAZBA3ZrIgQ2AiQgBkEHcQwBCyAEIAcoAigiCUYNASAHIAQgBCAJayAGQQN2Ig4gBCAOayAJSRsiCWsiBDYCJCAGIAlBA3RrCzYCICAHIAQoAAA2AhwLIAVB/QFGDQYgCyAHQQxqIAdBHGoQCzoAACAFQQJqIQUgBygCICIGQSBNBEAgBwJ/IAcoAiQiBCAHKAIsTwRAIAcgBCAGQQN2ayIINgIkIAZBB3EMAQsgBCAHKAIoIghGDQIgByAEIAQgCGsgBkEDdiIJIAQgCWsgCEkbIgRrIgg2AiQgBiAEQQN0aws2AiAgByAIKAAANgIcDAELCyAHQbAaNgIkIAAgBWogB0EUaiAHQRxqEAs6AAAgCkEDagwBCyAHQbAaNgIkIAsgB0EMaiAHQRxqEAs6AAAgCkECagsgAGshCAwDCyAIIAdBFGogB0EcaiIEEAs6AAIgCCAHQQxqIAQQCzoAAyAFQQRqIQUgBygCICEIDAALAAtBbCEICyAIQYh/Sw0CC0EAIQUgAUEAQTT8CwAgCCEGQQAhBANAIAUgBkcEQCAAIAVqIggtAAAiCUEMSw0CIAEgCUECdGoiCSAJKAIAQQFqNgIAIAVBAWohBUEBIAgtAAB0QQF1IARqIQQMAQsLQWwhCCAERQ0BIARnIgVBHHNBC0sNASADQSAgBWsiAzYCAEGAgICAeEEBIAN0IARrIgNnIgR2IANHDQEgACAGakEgIARrIgA6AAAgASAAQQJ0aiIAIAAoAgBBAWo2AgAgASgCBCIAQQJJIABBAXFyDQEgAiAGQQFqNgIAIA1BAWohCAwBC0FsIQgLIAdBMGokACAIC/UBAQF/IAJFBEAgAEIANwIAIABBADYCECAAQgA3AghBuH8PCyAAIAE2AgwgACABQQRqNgIQIAJBBE8EQCAAIAEgAmoiAUEEayIDNgIIIAAgAygAADYCACABQQFrLQAAIgEEQCAAQQggAWdBH3NrNgIEIAIPCyAAQQA2AgRBfw8LIAAgATYCCCAAIAEtAAAiAzYCAAJAAkACQCACQQJrDgIBAAILIAAgAS0AAkEQdCADciIDNgIACyAAIAEtAAFBCHQgA2o2AgALIAEgAmpBAWstAAAiAUUEQCAAQQA2AgRBbA8LIAAgAWcgAkEDdGtBCWo2AgQgAguuAQEEfyABIAIvAQAiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQRqNgIEC0wBBH8gACgCBCAAKAIAQQJ0aiICLQACIQMgAi8BACEEIAEgASgCBCIFIAItAAMiAmo2AgQgACAEIAEoAgAgBXRBACACa3ZqNgIAIAMLVgEEfyAAKAIEIAAoAgBBAnRqIgItAAIhAyACLwEAIQQgASACLQADIgIgASgCBGoiBTYCBCAAIAQgAkECdEGwGWooAgAgASgCAEEAIAVrdnFqNgIAIAMLLwEBfyAAIAAoAgQiAUEHcTYCBCAAIAAoAgggAUEDdmsiATYCCCAAIAEoAAA2AgALCAAgAEGIf0sLxQkCDX8CfiMAQRBrIgskACALQQA2AgwgC0EANgIIAn8CQCADQdQJaiIFIAMgC0EIaiALQQxqIAEgAiADQegAahAHIhBBiH9LDQAgCygCCCEIQQogACgCACIJQf8BcSIHIAdBCk8bQQFqIgQgCygCDCIBTwRAAkAgASAETw0AIAQgAWshAkEAIQEDQCABIAhGBEAgBCEBA0AgASACTQRAA0AgAkUNBSADIAJBAnRqQQA2AgAgAkEBayECDAALAAUgAyABQQJ0aiADIAEgAmtBAnRqKAIANgIAIAFBAWshAQwBCwALAAUgASAFaiIKIAJBACAKLQAAIgobIApqOgAAIAFBAWohAQwBCwALAAsgBCEBC0FUIAEgB0EBaksNARogAEEEaiEKIAAgCUH/gYB4cSABQRB0QYCA/AdxcjYCACABQQFqIQ4gA0E0aiEEQQAhAUEAIQIDQCACIA5GRQRAIAMgAkECdCIAaigCACEHIAAgBGogATYCACACQQFqIQIgASAHaiEBDAELCyADQdQHaiEHIAhBA2shAUEAIQADQAJAQQAhAiAAIAFOBEADQCAAIAhODQIgBCAAIAVqLQAAQQJ0aiIBIAEoAgAiAUEBajYCACABIAdqIAA6AAAgAEEBaiEADAALAAUDQCACQQRGRQRAIAQgBSAAIAJyIglqLQAAQQJ0aiIMIAwoAgAiDEEBajYCACAHIAxqIAk6AAAgAkEBaiECDAELCyAAQQRqIQAMAgsACwsgAygCACEIQQAhAEEBIQkDQCAJIA5GDQEgDiAJayEEIAMgCUECdGooAgAhBQJAAkACQAJAAkACQEEBIAl0QQF1IgxBAWsOCAABBAIEBAQDBAtBACECIAVBACAFQQBKGyEGIAAhAQNAIAIgBkYNBSAKIAFBAXRqIg0gByACIAhqai0AADoAASANIAQ6AAAgAkEBaiECIAFBAWohAQwACwALQQAhAiAFQQAgBUEAShshDSAAIQEDQCACIA1GDQQgCiABQQF0aiIGIAcgAiAIamotAAAiDzoAAyAGIAQ6AAIgBiAPOgABIAYgBDoAACACQQFqIQIgAUECaiEBDAALAAtBACECIAVBACAFQQBKGyEGIARB/wFxrSERIAAhAQNAIAIgBkYNAyAKIAFBAXRqIAcgAiAIamoxAABCCIYgEYRCgYCEgJCAwAB+NwAAIAJBAWohAiABQQRqIQEMAAsAC0EAIQIgBUEAIAVBAEobIQYgBEH/AXGtIREgACEBA0AgAiAGRg0CIAogAUEBdGoiBCAHIAIgCGpqMQAAQgiGIBGEQoGAhICQgMAAfiISNwAIIAQgEjcAACACQQFqIQIgAUEIaiEBDAALAAtBACEBIAVBACAFQQBKGyENIARB/wFxrSESIAAhBANAIAEgDUYNASAKIARBAXRqIQ8gByABIAhqajEAAEIIhiAShEKBgISAkIDAAH4hEUEAIQIDQCACIAxORQRAIA8gAkEBdGoiBiARNwAYIAYgETcAECAGIBE3AAggBiARNwAAIAJBEGohAgwBCwsgAUEBaiEBIAQgDGohBAwACwALIAlBAWohCSAFIAhqIQggBSAMbCAAaiEADAALAAsgEAshAiALQRBqJAAgAgufAwIBfgF/AkACQAJAAkACQAJAQQEgBCADa3QiCEEBaw4IAAEEAgQEBAMECyAGQRh0IANBEHRqIQMDQCABIAJGDQUgACABLQAAIgQgBEEIdCAFciAGQQFGGyADcjYBACABQQFqIQEgAEEEaiEADAALAAsgBkEYdCADQRB0aiEDA0AgASACRg0EIAAgAS0AACIEIARBCHQgBXIgBkEBRhsgA3IiBDYBBCAAIAQ2AQAgAUEBaiEBIABBCGohAAwACwALA0AgASACRg0DIAAgAS0AACADIAUgBhAQIgc3AQggACAHNwEAIAFBAWohASAAQRBqIQAMAAsACwNAIAEgAkYNAiAAIAEtAAAgAyAFIAYQECIHNwEYIAAgBzcBECAAIAc3AQggACAHNwEAIAFBAWohASAAQSBqIQAMAAsACwNAIAEgAkYNASAAIAhBAnRqIQQgAS0AACADIAUgBhAQIQcDQCAAIARGRQRAIAAgBzcBGCAAIAc3ARAgACAHNwEIIAAgBzcBACAAQSBqIQAMAQsLIAFBAWohASAEIQAMAAsACwsmACADQRh0IAFBEHRqIAAgAEEIdCACciADQQFGG3KtQoGAgIAQfgu7BgEKfyMAQSBrIgUkACAELwECIQsgBUEMaiACIAMQCCIDQYh/TQRAIARBBGohCCAAIAFqIQkCQAJAAkAgAUEETwRAIAlBA2shDUEAIAtrQR9xIQwgBSgCFCEDIAUoAhghByAFKAIcIQ4gBSgCDCEGIAUoAhAhBANAIARBIEsEQEGwGiEDDAQLAkAgAyAOTwRAIARBB3EhAiAEQQN2IQZBASEEDAELIAMgB0YNBCAEIARBA3YiAiADIAdrIAMgAmsgB08iBBsiBkEDdGshAgsgAyAGayIDKAAAIQYgBEUgACANT3INAiAIIAYgAnQgDHZBAXRqIgQtAAAhCiAAIAQtAAE6AAAgCCAGIAIgCmoiAnQgDHZBAXRqIgQtAAAhCiAAIAQtAAE6AAEgAiAKaiEEIABBAmohAAwACwALIAUoAhAiBEEhTwRAIAVBsBo2AhQMAwsgBSgCFCIDIAUoAhxPBEAgBSAEQQdxIgI2AhAgBSADIARBA3ZrIgM2AhQgBSADKAAANgIMIAIhBAwDCyADIAUoAhgiAkYNAiAFIAQgAyACayAEQQN2IgQgAyAEayACSRsiAkEDdGsiBDYCECAFIAMgAmsiAjYCFCAFIAIoAAA2AgwMAgsgAiEECyAFIAQ2AhAgBSADNgIUIAUgBjYCDAtBACALa0EfcSEHA0ACQCAEQSFPBEAgBUGwGjYCFAwBCyAFAn8gBSgCFCICIAUoAhxPBEAgBSACIARBA3ZrIgM2AhRBASEGIARBB3EMAQsgAiAFKAIYIgNGDQEgBSACIARBA3YiBiACIANrIAIgBmsgA08iBhsiAmsiAzYCFCAEIAJBA3RrCyIENgIQIAUgAygAACICNgIMIAZFIAAgCU9yDQAgCCACIAR0IAd2QQF0aiICLQABIQMgBSAEIAItAABqNgIQIAAgAzoAACAAQQFqIQAgBSgCECEEDAELCwNAIAAgCU9FBEAgCCAFKAIMIAUoAhAiAnQgB3ZBAXRqIgMtAAEhBCAFIAIgAy0AAGo2AhAgACAEOgAAIABBAWohAAwBCwtBbEFsIAEgBSgCEEEgRxsgBSgCFCAFKAIYRxshAwsgBUEgaiQAIAML/SEBGX8jAEHQAGsiBSQAQWwhBgJAIAFBBkkgA0EKSXINAAJAIAMgAi8ABCIHIAIvAAAiCiACLwACIglqakEGaiILSQ0AIAAgAUEDakECdiIMaiIIIAxqIg0gDGoiDCAAIAFqIhFLDQAgBC8BAiEOIAVBPGogAkEGaiICIAoQCCIGQYh/Sw0BIAVBKGogAiAKaiICIAkQCCIGQYh/Sw0BIAVBFGogAiAJaiICIAcQCCIGQYh/Sw0BIAUgAiAHaiADIAtrEAgiBkGIf0sNASAEQQRqIQogEUEDayESAkAgESAMa0EESQRAIAwhAyANIQIgCCEEDAELQQAgDmtBH3EhBkEAIQkgDCEDIA0hAiAIIQQDQCAJQQFxIAMgEk9yDQEgACAKIAUoAjwiCSAFKAJAIgt0IAZ2QQJ0aiIHLwEAOwAAIActAAIhECAHLQADIQ8gBCAKIAUoAigiEyAFKAIsIhR0IAZ2QQJ0aiIHLwEAOwAAIActAAIhFSAHLQADIRYgAiAKIAUoAhQiFyAFKAIYIhh0IAZ2QQJ0aiIHLwEAOwAAIActAAIhGSAHLQADIRogAyAKIAUoAgAiGyAFKAIEIhx0IAZ2QQJ0aiIHLwEAOwAAIActAAIhHSAHLQADIQcgACAPaiIPIAogCSALIBBqIgl0IAZ2QQJ0aiIALwEAOwAAIAUgCSAALQACajYCQCAALQADIQkgBCAWaiIEIAogEyAUIBVqIgt0IAZ2QQJ0aiIALwEAOwAAIAUgCyAALQACajYCLCAALQADIQsgAiAaaiICIAogFyAYIBlqIhB0IAZ2QQJ0aiIALwEAOwAAIAUgECAALQACajYCGCAALQADIRAgAyAHaiIHIAogGyAcIB1qIgB0IAZ2QQJ0aiIDLwEAOwAAIAUgACADLQACajYCBCAJIA9qIQAgBCALaiEEIAIgEGohAiAHIAMtAANqIQMgBUE8ahATIAVBKGoQE3IgBUEUahATciAFEBNyQQBHIQkMAAsACyAAIAhLIAQgDUtyDQBBbCEGIAIgDEsNAQJAAkAgCCAAayIJQQRPBEAgCEEDayEQQQAgDmtBH3EhCyAFKAJAIQYDQCAGQSFPBEAgBUGwGjYCRAwDCyAFAn8gBSgCRCIHIAUoAkxPBEAgBSAHIAZBA3ZrIgk2AkRBASEHIAZBB3EMAQsgByAFKAJIIglGDQMgBSAHIAZBA3YiDyAHIAlrIAcgD2sgCU8iBxsiD2siCTYCRCAGIA9BA3RrCyIGNgJAIAUgCSgAACIJNgI8IAdFIAAgEE9yDQIgACAKIAkgBnQgC3ZBAnRqIgYvAQA7AAAgBSAFKAJAIAYtAAJqIgc2AkAgACAGLQADaiIJIAogBSgCPCAHdCALdkECdGoiAC8BADsAACAFIAUoAkAgAC0AAmoiBjYCQCAJIAAtAANqIQAMAAsACyAFKAJAIgZBIU8EQCAFQbAaNgJEDAILIAUoAkQiCyAFKAJMTwRAIAUgBkEHcSIHNgJAIAUgCyAGQQN2ayIGNgJEIAUgBigAADYCPCAHIQYMAgsgCyAFKAJIIgdGDQEgBSAGIAsgB2sgBkEDdiIGIAsgBmsgB0kbIgdBA3RrIgY2AkAgBSALIAdrIgc2AkQgBSAHKAAANgI8DAELIAggAGshCQsCQCAJQQJJDQAgCEECayELQQAgDmtBH3EhEANAAkAgBkEhTwRAIAVBsBo2AkQMAQsgBQJ/IAUoAkQiByAFKAJMTwRAIAUgByAGQQN2ayIJNgJEQQEhByAGQQdxDAELIAcgBSgCSCIJRg0BIAUgByAGQQN2Ig8gByAJayAHIA9rIAlPIgcbIg9rIgk2AkQgBiAPQQN0awsiBjYCQCAFIAkoAAAiCTYCPCAHRSAAIAtLcg0AIAAgCiAJIAZ0IBB2QQJ0aiIHLwEAOwAAIAUgBSgCQCAHLQACaiIGNgJAIAAgBy0AA2ohAAwBCwsDQCAAIAtLDQEgACAKIAUoAjwgBnQgEHZBAnRqIgcvAQA7AAAgBSAFKAJAIActAAJqIgY2AkAgACAHLQADaiEADAALAAsCQCAAIAhPDQAgACAKIAUoAjwgBnRBACAOa3ZBAnRqIgAtAAA6AAAgBQJ/IAAtAANBAUYEQCAFKAJAIAAtAAJqDAELIAUoAkAiCEEfSw0BQSAgCCAALQACaiIAIABBIE8bCzYCQAsCQAJAIA0gBGsiBkEETwRAIA1BA2shCUEAIA5rQR9xIQcgBSgCLCEAA0AgAEEhTwRAIAVBsBo2AjAMAwsgBQJ/IAUoAjAiCCAFKAI4TwRAIAUgCCAAQQN2ayIGNgIwQQEhCCAAQQdxDAELIAggBSgCNCIGRg0DIAUgCCAAQQN2IgsgCCAGayAIIAtrIAZPIggbIgtrIgY2AjAgACALQQN0awsiADYCLCAFIAYoAAAiBjYCKCAIRSAEIAlPcg0CIAQgCiAGIAB0IAd2QQJ0aiIALwEAOwAAIAUgBSgCLCAALQACaiIINgIsIAQgAC0AA2oiBiAKIAUoAiggCHQgB3ZBAnRqIgQvAQA7AAAgBSAFKAIsIAQtAAJqIgA2AiwgBiAELQADaiEEDAALAAsgBSgCLCIAQSFPBEAgBUGwGjYCMAwCCyAFKAIwIgcgBSgCOE8EQCAFIABBB3EiCDYCLCAFIAcgAEEDdmsiADYCMCAFIAAoAAA2AiggCCEADAILIAcgBSgCNCIIRg0BIAUgACAHIAhrIABBA3YiACAHIABrIAhJGyIIQQN0ayIANgIsIAUgByAIayIINgIwIAUgCCgAADYCKAwBCyANIARrIQYLAkAgBkECSQ0AIA1BAmshCUEAIA5rQR9xIQsDQAJAIABBIU8EQCAFQbAaNgIwDAELIAUCfyAFKAIwIgggBSgCOE8EQCAFIAggAEEDdmsiBjYCMEEBIQcgAEEHcQwBCyAIIAUoAjQiBkYNASAFIAggAEEDdiIHIAggBmsgCCAHayAGTyIHGyIIayIGNgIwIAAgCEEDdGsLIgA2AiwgBSAGKAAAIgg2AiggB0UgBCAJS3INACAEIAogCCAAdCALdkECdGoiCC8BADsAACAFIAUoAiwgCC0AAmoiADYCLCAEIAgtAANqIQQMAQsLA0AgBCAJSw0BIAQgCiAFKAIoIAB0IAt2QQJ0aiIILwEAOwAAIAUgBSgCLCAILQACaiIANgIsIAQgCC0AA2ohBAwACwALAkAgBCANTw0AIAQgCiAFKAIoIAB0QQAgDmt2QQJ0aiIALQAAOgAAIAUCfyAALQADQQFGBEAgBSgCLCAALQACagwBCyAFKAIsIgRBH0sNAUEgIAQgAC0AAmoiACAAQSBPGws2AiwLAkACQCAMIAJrIgZBBE8EQCAMQQNrIQdBACAOa0EfcSEIIAUoAhghAANAIABBIU8EQCAFQbAaNgIcDAMLIAUCfyAFKAIcIgQgBSgCJE8EQCAFIAQgAEEDdmsiBjYCHEEBIQkgAEEHcQwBCyAEIAUoAiAiDUYNAyAFIAQgAEEDdiIGIAQgDWsgBCAGayANTyIJGyIEayIGNgIcIAAgBEEDdGsLIgA2AhggBSAGKAAAIgQ2AhQgCUUgAiAHT3INAiACIAogBCAAdCAIdkECdGoiAC8BADsAACAFIAUoAhggAC0AAmoiBDYCGCACIAAtAANqIg0gCiAFKAIUIAR0IAh2QQJ0aiICLwEAOwAAIAUgBSgCGCACLQACaiIANgIYIA0gAi0AA2ohAgwACwALIAUoAhgiAEEhTwRAIAVBsBo2AhwMAgsgBSgCHCIIIAUoAiRPBEAgBSAAQQdxIgQ2AhggBSAIIABBA3ZrIgA2AhwgBSAAKAAANgIUIAQhAAwCCyAIIAUoAiAiBEYNASAFIAAgCCAEayAAQQN2IgAgCCAAayAESRsiBEEDdGsiADYCGCAFIAggBGsiBDYCHCAFIAQoAAA2AhQMAQsgDCACayEGCwJAIAZBAkkNACAMQQJrIQ1BACAOa0EfcSEHA0ACQCAAQSFPBEAgBUGwGjYCHAwBCyAFAn8gBSgCHCIEIAUoAiRPBEAgBSAEIABBA3ZrIgY2AhxBASEIIABBB3EMAQsgBCAFKAIgIghGDQEgBSAEIABBA3YiBiAEIAhrIAQgBmsgCE8iCBsiBGsiBjYCHCAAIARBA3RrCyIANgIYIAUgBigAACIENgIUIAhFIAIgDUtyDQAgAiAKIAQgAHQgB3ZBAnRqIgQvAQA7AAAgBSAFKAIYIAQtAAJqIgA2AhggAiAELQADaiECDAELCwNAIAIgDUsNASACIAogBSgCFCAAdCAHdkECdGoiBC8BADsAACAFIAUoAhggBC0AAmoiADYCGCACIAQtAANqIQIMAAsACwJAIAIgDE8NACACIAogBSgCFCAAdEEAIA5rdkECdGoiAC0AADoAACAFAn8gAC0AA0EBRgRAIAUoAhggAC0AAmoMAQsgBSgCGCICQR9LDQFBICACIAAtAAJqIgAgAEEgTxsLNgIYCwJAIBEgA2tBBE8EQEEAIA5rQR9xIQQgBSgCBCEAA0AgAEEhTwRAIAVBsBo2AggMAwsgBQJ/IAUoAggiAiAFKAIQTwRAIAUgAiAAQQN2ayIGNgIIQQEhAiAAQQdxDAELIAIgBSgCDCIMRg0DIAUgAiAAQQN2IgggAiAMayACIAhrIAxPIgIbIgxrIgY2AgggACAMQQN0awsiADYCBCAFIAYoAAAiDDYCACACRSADIBJPcg0CIAMgCiAMIAB0IAR2QQJ0aiIALwEAOwAAIAUgBSgCBCAALQACaiICNgIEIAMgAC0AA2oiAyAKIAUoAgAgAnQgBHZBAnRqIgIvAQA7AAAgBSAFKAIEIAItAAJqIgA2AgQgAyACLQADaiEDDAALAAsgBSgCBCIAQSFPBEAgBUGwGjYCCAwBCyAFKAIIIgQgBSgCEE8EQCAFIABBB3EiAjYCBCAFIAQgAEEDdmsiADYCCCAFIAAoAAA2AgAgAiEADAELIAQgBSgCDCICRg0AIAUgACAEIAJrIABBA3YiACAEIABrIAJJGyICQQN0ayIANgIEIAUgBCACayICNgIIIAUgAigAADYCAAsCQCARIANrQQJJDQAgEUECayEEQQAgDmtBH3EhDANAAkAgAEEhTwRAIAVBsBo2AggMAQsgBQJ/IAUoAggiAiAFKAIQTwRAIAUgAiAAQQN2ayIGNgIIQQEhCSAAQQdxDAELIAIgBSgCDCIIRg0BIAUgAiAAQQN2Ig0gAiAIayACIA1rIAhPIgkbIgJrIgY2AgggACACQQN0awsiADYCBCAFIAYoAAAiAjYCACAJRSADIARLcg0AIAMgCiACIAB0IAx2QQJ0aiICLwEAOwAAIAUgBSgCBCACLQACaiIANgIEIAMgAi0AA2ohAwwBCwsDQCADIARLDQEgAyAKIAUoAgAgAHQgDHZBAnRqIgIvAQA7AAAgBSAFKAIEIAItAAJqIgA2AgQgAyACLQADaiEDDAALAAsCQCADIBFPDQAgAyAKIAUoAgAgAHRBACAOa3ZBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAUoAgQgAi0AAmohAAwBCyAFKAIEIgBBH0sNAEEgIAAgAi0AAmoiACAAQSBPGyEAC0FsQWxBbEFsQWxBbEFsQWwgASAAQSBHGyAFKAIIIAUoAgxHGyAFKAIYQSBHGyAFKAIcIAUoAiBHGyAFKAIsQSBHGyAFKAIwIAUoAjRHGyAFKAJAQSBHGyAFKAJEIAUoAkhHGyEGDAELQWwhBgsgBUHQAGokACAGCxkAIAAoAgggACgCEEkEQEEDDwsgABAMQQAL8xwBFn8jAEHQAGsiBSQAQWwhCAJAIAFBBkkgA0EKSXINAAJAIAMgAi8ABCIGIAIvAAAiCiACLwACIglqakEGaiISSQ0AIAAgAUEDakECdiILaiIHIAtqIg4gC2oiCyAAIAFqIg9LDQAgBC8BAiEMIAVBPGogAkEGaiICIAoQCCIIQYh/Sw0BIAVBKGogAiAKaiICIAkQCCIIQYh/Sw0BIAVBFGogAiAJaiICIAYQCCIIQYh/Sw0BIAUgAiAGaiADIBJrEAgiCEGIf0sNASAEQQRqIQogD0EDayESAkAgDyALa0EESQRAIAshAyAOIQIgByEEDAELQQAgDGtBH3EhCEEAIQYgCyEDIA4hAiAHIQQDQCAGQQFxIAMgEk9yDQEgCiAFKAI8IgYgBSgCQCIJdCAIdkEBdGoiDS0AACEQIAAgDS0AAToAACAKIAUoAigiDSAFKAIsIhF0IAh2QQF0aiITLQAAIRUgBCATLQABOgAAIAogBSgCFCITIAUoAhgiFnQgCHZBAXRqIhQtAAAhFyACIBQtAAE6AAAgCiAFKAIAIhQgBSgCBCIYdCAIdkEBdGoiGS0AACEaIAMgGS0AAToAACAKIAYgCSAQaiIGdCAIdkEBdGoiCS0AASEQIAUgBiAJLQAAajYCQCAAIBA6AAEgCiANIBEgFWoiBnQgCHZBAXRqIgktAAEhDSAFIAYgCS0AAGo2AiwgBCANOgABIAogEyAWIBdqIgZ0IAh2QQF0aiIJLQABIQ0gBSAGIAktAABqNgIYIAIgDToAASAKIBQgGCAaaiIGdCAIdkEBdGoiCS0AASENIAUgBiAJLQAAajYCBCADIA06AAEgA0ECaiEDIAJBAmohAiAEQQJqIQQgAEECaiEAIAVBPGoQEyAFQShqEBNyIAVBFGoQE3IgBRATckEARyEGDAALAAsgACAHSyAEIA5Lcg0AQWwhCCACIAtLDQECQCAHIABrQQROBEAgB0EDayEQQQAgDGtBH3EhDQNAIAUoAkAiBkEhTwRAIAVBsBo2AkQMAwsgBQJ/IAUoAkQiCCAFKAJMTwRAIAUgCCAGQQN2ayIINgJEQQEhCSAGQQdxDAELIAggBSgCSCIJRg0DIAUgCCAGQQN2IhEgCCAJayAIIBFrIAlPIgkbIhFrIgg2AkQgBiARQQN0awsiBjYCQCAFIAgoAAAiCDYCPCAJRSAAIBBPcg0CIAogCCAGdCANdkEBdGoiCC0AASEJIAUgBiAILQAAajYCQCAAIAk6AAAgCiAFKAI8IAUoAkAiBnQgDXZBAXRqIggtAAEhCSAFIAYgCC0AAGo2AkAgACAJOgABIABBAmohAAwACwALIAUoAkAiBkEhTwRAIAVBsBo2AkQMAQsgBSgCRCIJIAUoAkxPBEAgBSAGQQdxIgg2AkAgBSAJIAZBA3ZrIgY2AkQgBSAGKAAANgI8IAghBgwBCyAJIAUoAkgiCEYNACAFIAYgCSAIayAGQQN2IgYgCSAGayAISRsiCEEDdGsiBjYCQCAFIAkgCGsiCDYCRCAFIAgoAAA2AjwLQQAgDGtBH3EhCANAAkAgBkEhTwRAIAVBsBo2AkQMAQsgBQJ/IAUoAkQiCSAFKAJMTwRAIAUgCSAGQQN2ayIMNgJEQQEhCSAGQQdxDAELIAkgBSgCSCIMRg0BIAUgCSAGQQN2Ig0gCSAMayAJIA1rIAxPIgkbIg1rIgw2AkQgBiANQQN0awsiBjYCQCAFIAwoAAAiDDYCPCAJRSAAIAdPcg0AIAogDCAGdCAIdkEBdGoiCS0AASEMIAUgBiAJLQAAajYCQCAAIAw6AAAgAEEBaiEAIAUoAkAhBgwBCwsDQCAAIAdPRQRAIAogBSgCPCAFKAJAIgZ0IAh2QQF0aiIJLQABIQwgBSAGIAktAABqNgJAIAAgDDoAACAAQQFqIQAMAQsLAkAgDiAEa0EETgRAIA5BA2shCQNAIAUoAiwiAEEhTwRAIAVBsBo2AjAMAwsgBQJ/IAUoAjAiByAFKAI4TwRAIAUgByAAQQN2ayIGNgIwQQEhByAAQQdxDAELIAcgBSgCNCIGRg0DIAUgByAAQQN2IgwgByAGayAHIAxrIAZPIgcbIgxrIgY2AjAgACAMQQN0awsiADYCLCAFIAYoAAAiBjYCKCAHRSAEIAlPcg0CIAogBiAAdCAIdkEBdGoiBy0AASEGIAUgACAHLQAAajYCLCAEIAY6AAAgCiAFKAIoIAUoAiwiAHQgCHZBAXRqIgctAAEhBiAFIAAgBy0AAGo2AiwgBCAGOgABIARBAmohBAwACwALIAUoAiwiAEEhTwRAIAVBsBo2AjAMAQsgBSgCMCIGIAUoAjhPBEAgBSAAQQdxIgc2AiwgBSAGIABBA3ZrIgA2AjAgBSAAKAAANgIoIAchAAwBCyAGIAUoAjQiB0YNACAFIAAgBiAHayAAQQN2IgAgBiAAayAHSRsiB0EDdGsiADYCLCAFIAYgB2siBzYCMCAFIAcoAAA2AigLA0ACQCAAQSFPBEAgBUGwGjYCMAwBCyAFAn8gBSgCMCIHIAUoAjhPBEAgBSAHIABBA3ZrIgY2AjBBASEHIABBB3EMAQsgByAFKAI0IgZGDQEgBSAHIABBA3YiCSAHIAZrIAcgCWsgBk8iBxsiCWsiBjYCMCAAIAlBA3RrCyIANgIsIAUgBigAACIGNgIoIAdFIAQgDk9yDQAgCiAGIAB0IAh2QQF0aiIHLQABIQYgBSAAIActAABqNgIsIAQgBjoAACAEQQFqIQQgBSgCLCEADAELCwNAIAQgDk9FBEAgCiAFKAIoIAUoAiwiAHQgCHZBAXRqIgctAAEhBiAFIAAgBy0AAGo2AiwgBCAGOgAAIARBAWohBAwBCwsCQCALIAJrQQROBEAgC0EDayEOA0AgBSgCGCIAQSFPBEAgBUGwGjYCHAwDCyAFAn8gBSgCHCIEIAUoAiRPBEAgBSAEIABBA3ZrIgQ2AhxBASEGIABBB3EMAQsgBCAFKAIgIgdGDQMgBSAEIABBA3YiBiAEIAdrIAQgBmsgB08iBhsiB2siBDYCHCAAIAdBA3RrCyIANgIYIAUgBCgAACIENgIUIAZFIAIgDk9yDQIgCiAEIAB0IAh2QQF0aiIELQABIQcgBSAAIAQtAABqNgIYIAIgBzoAACAKIAUoAhQgBSgCGCIAdCAIdkEBdGoiBC0AASEHIAUgACAELQAAajYCGCACIAc6AAEgAkECaiECDAALAAsgBSgCGCIAQSFPBEAgBUGwGjYCHAwBCyAFKAIcIgcgBSgCJE8EQCAFIABBB3EiBDYCGCAFIAcgAEEDdmsiADYCHCAFIAAoAAA2AhQgBCEADAELIAcgBSgCICIERg0AIAUgACAHIARrIABBA3YiACAHIABrIARJGyIEQQN0ayIANgIYIAUgByAEayIENgIcIAUgBCgAADYCFAsDQAJAIABBIU8EQCAFQbAaNgIcDAELIAUCfyAFKAIcIgQgBSgCJE8EQCAFIAQgAEEDdmsiBDYCHEEBIQYgAEEHcQwBCyAEIAUoAiAiB0YNASAFIAQgAEEDdiIOIAQgB2sgBCAOayAHTyIGGyIHayIENgIcIAAgB0EDdGsLIgA2AhggBSAEKAAAIgQ2AhQgBkUgAiALT3INACAKIAQgAHQgCHZBAXRqIgQtAAEhByAFIAAgBC0AAGo2AhggAiAHOgAAIAJBAWohAiAFKAIYIQAMAQsLA0AgAiALT0UEQCAKIAUoAhQgBSgCGCIAdCAIdkEBdGoiBC0AASEHIAUgACAELQAAajYCGCACIAc6AAAgAkEBaiECDAELCwJAIA8gA2tBBE4EQANAIAUoAgQiAEEhTwRAIAVBsBo2AggMAwsgBQJ/IAUoAggiAiAFKAIQTwRAIAUgAiAAQQN2ayIENgIIQQEhAiAAQQdxDAELIAIgBSgCDCIERg0DIAUgAiAAQQN2IgsgAiAEayACIAtrIARPIgIbIgtrIgQ2AgggACALQQN0awsiADYCBCAFIAQoAAAiBDYCACACRSADIBJPcg0CIAogBCAAdCAIdkEBdGoiAi0AASEEIAUgACACLQAAajYCBCADIAQ6AAAgCiAFKAIAIAUoAgQiAHQgCHZBAXRqIgItAAEhBCAFIAAgAi0AAGo2AgQgAyAEOgABIANBAmohAwwACwALIAUoAgQiAEEhTwRAIAVBsBo2AggMAQsgBSgCCCIEIAUoAhBPBEAgBSAAQQdxIgI2AgQgBSAEIABBA3ZrIgA2AgggBSAAKAAANgIAIAIhAAwBCyAEIAUoAgwiAkYNACAFIAAgBCACayAAQQN2IgAgBCAAayACSRsiAkEDdGsiADYCBCAFIAQgAmsiAjYCCCAFIAIoAAA2AgALA0ACQCAAQSFPBEAgBUGwGjYCCAwBCyAFAn8gBSgCCCICIAUoAhBPBEAgBSACIABBA3ZrIgQ2AghBASECIABBB3EMAQsgAiAFKAIMIgRGDQEgBSACIABBA3YiCyACIARrIAIgC2sgBE8iAhsiC2siBDYCCCAAIAtBA3RrCyIANgIEIAUgBCgAACIENgIAIAJFIAMgD09yDQAgCiAEIAB0IAh2QQF0aiICLQABIQQgBSAAIAItAABqNgIEIAMgBDoAACADQQFqIQMgBSgCBCEADAELCwNAIAMgD09FBEAgCiAFKAIAIAUoAgQiAHQgCHZBAXRqIgItAAEhBCAFIAAgAi0AAGo2AgQgAyAEOgAAIANBAWohAwwBCwtBbEFsQWxBbEFsQWxBbEFsIAEgBSgCBEEgRxsgBSgCCCAFKAIMRxsgBSgCGEEgRxsgBSgCHCAFKAIgRxsgBSgCLEEgRxsgBSgCMCAFKAI0RxsgBSgCQEEgRxsgBSgCRCAFKAJIRxshCAwBC0FsIQgLIAVB0ABqJAAgCAsaACAABEAgAQRAIAIgACABEQIADwsgABACCwtSAQN/AkAgACgCmOsBIgFFDQAgASgCACABKAK01QEiAiABKAK41QEiAxAVIAIEQCADIAEgAhECAAwBCyABEAILIABBADYCqOsBIABCADcDmOsBC5QFAgR/An4jAEEQayIGJAACQCABIAJFckUEQEF/IQQMAQsCQEEBQQUgAxsiBCACSwRAIAJFIANBAUZyDQIgBkGo6r5pNgIMIAJFIgBFBEAgBkEMaiABIAL8CgAACyAGKAIMQajqvmlGDQIgBkHQ1LTCATYCDCAARQRAIAZBDGogASAC/AoAAAsgBigCDEFwcUHQ1LTCAUYNAgwBCyAAQQBBMPwLAEEBIQUCQCADQQFGDQAgAyEFIAEoAAAiA0Go6r5pRg0AIANBcHFB0NS0wgFHDQFBCCEEIAJBCEkNAiAAQQE2AhQgASgAACECIABBCDYCGCAAIAJB0NS0wgFrNgIcIAAgATUABDcDAEEAIQQMAgsgAiABIAIgBRAYIgJJBEAgAiEEDAILIAAgAjYCGCABIARqIgVBAWstAAAiAkEIcQRAQXIhBAwCCyACQSBxIgNFBEAgBS0AACIFQacBSwRAQXAhBAwDCyAFQQdxrUIBIAVBA3ZBCmqthiIIQgOIfiAIfCEJIARBAWohBAsgAkEGdiEFIAJBAnYhBwJAAkACQAJAIAJBA3EiAkEBaw4DAAECAwsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAdBAXEhBwJ+AkACQAJAAkAgBUEBaw4DAQIDAAtCfyADRQ0DGiABIARqMQAADAMLIAEgBGozAABCgAJ8DAILIAEgBGo1AAAMAQsgASAEaikAAAshCCAAIAc2AiAgACACNgIcIAAgCDcDAEEAIQQgAEEANgIUIAAgCCAJIAMbIgg3AwggAEKAgAggCCAIQoCACFobPgIQDAELQXYhBAsgBkEQaiQAIAQLXwEBf0G4fyEDIAFBAUEFIAIbIgFPBH8gACABakEBay0AACIAQQNxQQJ0QcAaaigCACABaiAAQQR2QQxxQdAaaigCAGogAEEgcSIBRWogAUEFdiAAQcAASXFqBUG4fwsLxAICBH8CfiMAQUBqIgQkAAJAA0AgAUEFTwRAAkAgACgAAEFwcUHQ1LTCAUYEQEJ+IQYgAUEISQ0EIAAoAAQiA0F3Sw0EIANBCGoiAiABSw0EIANBgX9JDQEMBAsgBEEQaiIDIAAgAUEAEBchAkJ+IAQpAxBCACAEKAIkQQFHGyACGyIGQn1WDQMgBiAHfCIHIAZUIQJCfiEGIAINAyADIAAgAUEAEBciAkGIf0sgAnINAyABIAQoAigiA2shAiAAIANqIQMDQCADIAIgBEEEahAaIgVBiH9LDQQgAiAFQQNqIgVJDQQgAiAFayECIAMgBWohAyAEKAIIRQ0ACyAEKAIwBH8gAkEESQ0EIANBBGoFIAMLIABrIgJBiH9LDQMLIAEgAmshASAAIAJqIQAMAQsLQn4gByABGyEGCyAEQUBrJAAgBgtkAQF/Qbh/IQMCQCABQQNJDQAgAC0AAiEBIAIgAC8AACIAQQFxNgIEIAIgAEEBdkEDcSIDNgIAIAIgACABQRB0ckEDdiIANgIIAkACQCADQQFrDgMCAQABC0FsDwsgACEDCyADC7ABAAJ/IAIgACgClOsBBH8gACgC0OkBBUGAgAgLIgIgA2pBQGtLBEAgACABIAJqQSBqIgE2AvzrAUEBIQIgASADagwBCyADQYCABE0EQCAAIABBiOwBaiIBNgL86wFBACECIAEgA2oMAQsgACABIARqIgEgA2siAkHg/wNqIgQgAiAFGzYC/OsBQQIhAiADIARqQYCABGsgASAFGwshAyAAIAI2AoTsASAAIAM2AoDsAQuyBwIEfwF+IwBBgAFrIg4kACAOIAM2AnwCQAJAAkACQAJAAkAgAkEBaw4DAAMCAQsgBkUEQEG4fyEKDAULIAMgBS0AACICSQ0DIAIgCGotAAAhAyAHIAJBAnRqKAIAIQIgAEEAOgALIABCADcCACAAIAI2AgwgACADOgAKIABBADsBCCABIAA2AgBBASEKDAQLIAEgCTYCAEEAIQoMAwsgCkUNAUEAIQogC0UgDEEZSXINAkEIIAR0QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgNBiH9LDQEgDigCeCICIARLDQEgAEEMaiEMIA4oAnxBAWohEUGAgAIgAnRBEHYhEEEAIQRBASEFQQEgAnQiCkEBayILIQkDQCAEIBFHBEACQCAOIARBAXQiD2ovAQAiBkH//wNGBEAgDCAJQQN0aiAENgIAIAlBAWshCUEBIQYMAQsgBUEAIBAgBsFKGyEFCyANIA9qIAY7AQAgBEEBaiEEDAELCyAAIAI2AgQgACAFNgIAAkAgCSALRgRAIA1B6gBqIRBBACEJQQAhBQNAIAkgEUYEQCAKQQN2IApBAXZqQQNqIglBAXQhEUEAIQZBACEFA0AgBSAKTw0EIAUgEGohD0EAIQQDQCAEQQJHBEAgDCAEIAlsIAZqIAtxQQN0aiAEIA9qLQAANgIAIARBAWohBAwBCwsgBUECaiEFIAYgEWogC3EhBgwACwAFIA4gCUEBdGouAQAhBiAFIBBqIg8gEjcAAEEIIQQDQCAEIAZIBEAgBCAPaiASNwAAIARBCGohBAwBCwsgEkKBgoSIkKDAgAF8IRIgCUEBaiEJIAUgBmohBQwBCwALAAsgCkEDdiAKQQF2akEDaiEQQQAhBUEAIQYDQCAFIBFGDQFBACEEIA4gBUEBdGouAQAiD0EAIA9BAEobIQ8DQCAEIA9HBEAgDCAGQQN0aiAFNgIAA0AgBiAQaiALcSIGIAlLDQALIARBAWohBAwBCwsgBUEBaiEFDAALAAsgAEEIaiEJIAJBH2shC0EAIQYDQCAGIApHBEAgDSAJIAZBA3RqIgIoAgQiBEEBdGoiBSAFLwEAIgVBAWo7AQAgAiALIAVnaiIMOgADIAIgBSAMdCAKazsBACACIAQgCGotAAA6AAIgAiAHIARBAnRqKAIANgIEIAZBAWohBgwBCwsgASAANgIAIAMhCgwBC0FsIQoLIA5BgAFqJAAgCgtwAQR/IABCADcCACACBEAgAUEKaiEGIAEoAgQhBEEAIQJBACEBA0AgASAEdkUEQCACIAYgAUEDdGotAAAiBSACIAVLGyECIAFBAWohASADIAVBFktqIQMMAQsLIAAgAjYCBCAAIANBCCAEa3Q2AgALC64BAQR/IAEgAigCBCIDIAEoAgRqIgQ2AgQgACADQQJ0QbAZaigCACABKAIAQQAgBGt2cTYCAAJAIARBIU8EQCABQbAaNgIIDAELIAEoAggiAyABKAIQTwRAIAEQDAwBCyADIAEoAgwiBUYNACABIAMgAyAFayAEQQN2IgYgAyAGayAFSRsiA2siBTYCCCABIAQgA0EDdGs2AgQgASAFKAAANgIACyAAIAJBCGo2AgQLjQICA38BfiAAIAJqIQQCQAJAIAJBCE4EQCAAIAFrIgJBeUgNAQsDQCAAIARPDQIgACABLQAAOgAAIABBAWohACABQQFqIQEMAAsACwJAAkAgAkFvSw0AIAAgBEEgayICSw0AIAEpAAAhBiAAIAEpAAg3AAggACAGNwAAIAIgAGsiBUERTgRAIABBEGohACABIQMDQCADKQAQIQYgACADKQAYNwAIIAAgBjcAACADKQAgIQYgACADKQAoNwAYIAAgBjcAECADQSBqIQMgAEEgaiIAIAJJDQALCyABIAVqIQEMAQsgACECCwNAIAIgBE8NASACIAEtAAA6AAAgAkEBaiECIAFBAWohAQwACwALC98BAQZ/Qbp/IQoCQCACKAIEIgggAigCACIJaiINIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQIgACABQSBrIgEgCyAJQQAQIyADIAkgC2o2AgACQAJAIAQgBWsgDE8EQCACIQUMAQsgDCAEIAZrSw0CIAcgByACIAVrIgNqIgIgCGpPBEAgCEUNAiAEIAIgCPwKAAAMAgtBACADayIABEAgBCACIAD8CgAACyADIAhqIQggBCADayEECyAEIAEgBSAIQQEQIwsgDSEKCyAKC+sBAQZ/Qbp/IQsCQCADKAIEIgkgAygCACIKaiINIAEgAGtLDQAgBSAEKAIAIgVrIApJBEBBbA8LIAMoAgghDCAAIAVLIAUgCmoiDiAAS3ENACAAIApqIgMgDGshASAAIAUgChAfIAQgDjYCAAJAAkAgAyAGayAMTwRAIAEhBgwBC0FsIQsgDCADIAdrSw0CIAggCCABIAZrIgBqIgEgCWpPBEAgCUUNAiADIAEgCfwKAAAMAgtBACAAayIEBEAgAyABIAT8CgAACyAAIAlqIQkgAyAAayEDCyADIAIgBiAJQQEQIwsgDSELCyALC6sCAQJ/IAJBH3EhAyABIQQDQCADQQhJRQRAIANBCGshAyAEKQAAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef34gAIVCG4lCh5Wvr5i23puef35CnaO16oOxjYr6AH0hACAEQQhqIQQMAQsLIAEgAkEYcWohASACQQdxIgNBBEkEfyABBSADQQRrIQMgATUAAEKHla+vmLbem55/fiAAhUIXiULP1tO+0ser2UJ+Qvnz3fGZ9pmrFnwhACABQQRqCyEEA0AgAwRAIANBAWshAyAEMQAAQsXP2bLx5brqJ34gAIVCC4lCh5Wvr5i23puef34hACAEQQFqIQQMAQsLIABCIYggAIVCz9bTvtLHq9lCfiIAQh2IIACFQvnz3fGZ9pmrFn4iAEIgiCAAhQvhBAIBfgJ/IAAgA2ohBwJAIANBB0wEQANAIAAgB08NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwACwALIAQEQAJAIAAgAmsiBkEHTQRAIAAgAi0AADoAACAAIAItAAE6AAEgACACLQACOgACIAAgAi0AAzoAAyAAIAIgBkECdCIGQeAaaigCAGoiAigAADYABCACIAZBgBtqKAIAayECDAELIAAgAikAADcAAAsgA0EIayEDIAJBCGohAiAAQQhqIQALIAEgB08EQCAAIANqIQEgBEUgACACa0EPSnJFBEADQCAAIAIpAAA3AAAgAkEIaiECIABBCGoiACABSQ0ADAMLAAsgAikAACEFIAAgAikACDcACCAAIAU3AAAgA0ERSQ0BIABBEGohAANAIAIpABAhBSAAIAIpABg3AAggACAFNwAAIAIpACAhBSAAIAIpACg3ABggACAFNwAQIAJBIGohAiAAQSBqIgAgAUkNAAsMAQsCQCAAIAFLBEAgACEBDAELIAEgAGshBgJAIARFIAAgAmtBD0pyRQRAIAIhAwNAIAAgAykAADcAACADQQhqIQMgAEEIaiIAIAFJDQALDAELIAIpAAAhBSAAIAIpAAg3AAggACAFNwAAIAZBEUgNACAAQRBqIQAgAiEDA0AgAykAECEFIAAgAykAGDcACCAAIAU3AAAgAykAICEFIAAgAykAKDcAGCAAIAU3ABAgA0EgaiEDIABBIGoiACABSQ0ACwsgAiAGaiECCwNAIAEgB08NASABIAItAAA6AAAgAUEBaiEBIAJBAWohAgwACwALC6HFAQI2fwV+IwBBEGsiMSQAAkBBwOwFEAEiCEUEQEFAIQYMAQsgCEIANwL86gEgCEEANgKc6wEgCEEANgKQ6wEgCEEANgLU6wEgCEEANgLE6wEgCEIANwKk6wEgCEEANgK46QEgCEEANgK87AUgCEIANwK86wEgCEEANgKs6wEgCEIBNwKU6wEgCEIANwPo6wEgCEGBgIDAADYCzOsBIAhCADcC7OoBIAhCADcDsOsBIAhBADYCuOsBIAhBhOsBakEANgIAIAgQFiAIQbjqAWohNCAIQcDpAWohNiAIQZDqAWohNyAAISwCQAJAAkACQANAQQFBBSAIKALs6gEiCxshEwJAA0AgAyATSQ0BAkAgA0EESSALcg0AIAIoAABBcHFB0NS0wgFHDQBBuH8hBiADQQhJDQcgAigABCIHQXdLBEBBciEGDAgLIAMgB0EIaiIESQ0HIAdBgH9LBEAgBCEGDAgLIAMgBGshAyACIARqIQIMAQsLIAhCADcCrOkBIAhCADcD8OkBIAhBjICA4AA2AqhQIAhBADYCoOsBIAhCADcDiOoBIAhBATYClOsBIAhCAzcDgOoBIAhBtOkBakIANwIAIAhB+OkBakIANwMAIAhB9A4pAgA3AqzQASAIQbTQAWpB/A4oAgA2AgAgCCAIQRBqNgIAIAggCEGgMGo2AgQgCCAIQZggajYCCCAIIAhBqNAAajYCDCAIQQFBBSAIKALs6gEbNgK86QECQCABRQ0AICwgCCgCrOkBIgZGDQAgCCAGNgK46QEgCCAsNgKs6QEgCCgCsOkBIQQgCCAsNgKw6QEgCCAsIAQgBmtqNgK06QELQbh/IQYgA0EFQQkgCCgC7OoBIhMbSQ0FIAJBAUEFIBMbIBMQGCIEQYh/Sw0EIAMgBEEDakkNBSA2IAIgBCATEBciBkGIf0sEQCAGIQQMBQsgBg0DAkACQCAIKAKw6wFBAUcNACAIKAKs6wEiC0UNACAIKAKc6wFFDQAgCygCBCEGIDEgCCgC3OkBIgo2AgQgBkEBayIHQsnP2bLx5brqJyAxQQRqQQQQIqdxIRMgCygCACELA0AgCiALIBNBAnRqKAIAIgwEfyAMKAKo1QEFQQALIgZHBEAgByATcUEBaiETIAYNAQsLIAxFDQAgCBAWIAhBfzYCqOsBIAggDDYCnOsBIAggCCgC3OkBIhM2AqDrAQwBCyAIKALc6QEhEwsCQCATRQ0AIAgoAqDrASATRg0AQWAhBAwFCwJAIAgoAuDpAQRAIAggCCgC8OoBIgZFNgL06gEgBg0BIDdBAEHYAPwLACAIQvnq0NDnyaHk4QA3A7DqASAIQs/W077Sx6vZQjcDoOoBIAhC1uuC7ur9ifXgADcDmOoBDAELIAhBADYC9OoBCyAIIAgpA/DpASAErXw3A/DpASAIKAK46wEiEwRAIAggCCgC0OkBIgYgEyAGIBNJGzYC0OkBCyABICxqITUgAyAEayEDIAIgBGohAiAsIRMDQCACIAMgMUEEahAaIiBBiH9LBEAgICEEDAYLIANBA2siOCAgSQ0EIAJBA2oiHSA1IB0gNUkbIDUgEyAdTRshAkFsIQQCQAJAAkACQAJAAkACQAJAIDEoAgQOAwECAA0LIAIgE2shFEEAITMjAEHQAmsiBSQAAkACQCAIKAKU6wEiAgR/IAgoAtDpAQVBgIAICyAgSQ0AAkAgIEECSQ0AIB0tAAAiA0EDcSEaIAIEfyAIKALQ6QEFQYCACAshBgJAAkACQAJAAkACQAJAAkACQAJAIBpBAWsOAwMBAAILIAgoAojqAQ0AQWIhAwwLCyAgQQVJDQhBAyEMIB0oAAAhBAJ/An8CQAJAAkAgA0ECdkEDcSICQQJrDgIBAgALIARBDnZB/wdxIQ0gBEEEdkH/B3EhECACQQBHDAMLIARBEnYhDSAEQQR2Qf//AHEhEEEEDAELIB0tAARBCnQgBEEWdnIhDSAEQQR2Qf//D3EhEEEFCyEMQQELIQRBun8hAyATQQEgEBtFDQogBiAQSQ0IIBBBBkkgBHEEQEFoIQMMCwsgDCANaiIKICBLDQggBiAUIAYgFEkbIgIgEEkNCiAIIBMgFCAQIAJBABAbAkAgCCgCpOsBRSAQQYEGSXINAEEAIQMDQCADQYOAAUsNASADQUBrIQMMAAsACyAaQQNGBEAgDCAdaiEGIAgoAgwiCy0AAUEIdCECIAgoAvzrASEDIARFBEAgAgRAIAVB4AFqIAYgDRAIIg5BiH9LDQkgC0EEaiEZIAMgEGohESALLwECIQkgEEEETwRAIBFBA2shBkEAIAlrQR9xIQcgBSgC6AEhDCAFKALsASEPIAUoAvABIQQgBSgC4AEhDSAFKALkASEOA0AgDkEgSwRAQbAaIQwMCgsCQCAEIAxNBEAgDkEHcSESIA5BA3YhDUEBIQ4MAQsgDCAPRg0KIA4gDkEDdiICIAwgD2sgDCACayAPTyIOGyINQQN0ayESCyAMIA1rIgwoAAAhDSAORSADIAZPcg0IIAMgGSANIBJ0IAd2QQJ0aiICLwEAOwAAIAMgAi0AA2oiAyAZIA0gEiACLQACaiICdCAHdkECdGoiCy8BADsAACADIAstAANqIQMgAiALLQACaiEODAALAAsgBSgC5AEiDkEhTwRAIAVBsBo2AugBDAkLIAUoAugBIgYgBSgC8AFPBEAgBSAOQQdxIgI2AuQBIAUgBiAOQQN2ayIENgLoASAFIAQoAAA2AuABIAIhDgwJCyAGIAUoAuwBIgRGDQggBSAOIAYgBGsgDkEDdiICIAYgAmsgBEkbIgJBA3RrIg42AuQBIAUgBiACayICNgLoASAFIAIoAAA2AuABDAgLIAMgECAGIA0gCxARIQ4MCAsgAgRAIAMgECAGIA0gCxASIQ4MCAsgAyAQIAYgDSALEBQhDgwHCyAIQazVAWohFyAMIB1qISEgCEGo0ABqIQcgCCgC/OsBIRYgBEUEQCAHICEgDSAXEA4iDkGIf0sNByANIA5NDQMgFiAQIA4gIWogDSAOayAHEBEhDgwHCyAQRQRAQbp/IQ4MBwsgDUUEQEFsIQ4MBwsgEEEIdiIDIA0gEEkEfyANQQR0IBBuBUEPC0EEdCIEQYwIaigCAGwgBEGICGooAgBqIgJBBXYgAmogBEGACGooAgAgBEGECGooAgAgA2xqSQRAIwBBEGsiLSQAIAcoAgAhESAXQfAEaiIeQQBB8AD8CwBBVCEDAkAgEUH/AXEiL0EMSw0AIBdB4AdqIgkgHiAtQQhqIC1BDGogISANIBdB4AlqEAciBEGIf00EQCAtKAIMIgsgL0sNASAXQagFaiEZIBdBpAVqITAgB0EEaiEbIBFBgICAeHEhJCALQQFqIjIhAyALIQYDQCADIgJBAWshAyAGIgxBAWshBiAeIAxBAnRqKAIARQ0AC0EBIAIgAkEBTRshDkEAIQZBASEDA0AgAyAORwRAIB4gA0ECdCIPaigCACECIA8gGWogBjYCACADQQFqIQMgAiAGaiEGDAELCyAXIAY2AqgFIBkgDEEBaiIfQQJ0aiAGNgIAIBdB4AVqISZBACEDIC0oAgghBgNAIAMgBkcEQCAZIAMgCWotAABBAnRqIgIgAigCACICQQFqNgIAIAIgJmogAzoAACADQQFqIQMMAQsLQQAhBiAZQQA2AgBBCyAvIBFB/wFxQQxGGyAvIAtBDEkbIikgC0F/c2ohD0EBIQMDQCADIA5HBEAgHiADQQJ0IgtqKAIAIQIgCyAXaiAGNgIAIAIgAyAPanQgBmohBiADQQFqIQMMAQsLICkgMiAMayILa0EBaiEJIAshBgNAIAYgCUkEQCAXIAZBNGxqIQ9BASEDA0AgAyAORwRAIA8gA0ECdCICaiACIBdqKAIAIAZ2NgIAIANBAWohAwwBCwsgBkEBaiEGDAELCyAyIClrIRUgDEEAIAxBAEobQQFqISdBASEuA0AgJyAuRwRAIDIgLmshBiAXIC5BAnQiAmooAgAhJSACIDBqKAIAISogMCAuQQFqIi5BAnRqKAIAIRggCyApIAZrIgNNBEAgHyAGIBVqIgJBASACQQFKIhIbIgIgAiAfSBshHCAXIAZBNGxqIh4gAkECdGohGSAGIDJqIREgBkEQdEGAgIAIaiEOQQEgA3QiCUECayEPA0AgGCAqRg0DIBsgJUECdGohKCAmICpqLQAAISsgAiEDIBIEQCAOICtyrUKBgICAEH4hOiAZKAIAIQZBACEDAkACQAJAAkAgDw4DAQIAAgsgKCA6NwEICyAoIDo3AQAMAQsDQCADIAZODQEgKCADQQJ0aiIMIDo3ARggDCA6NwEQIAwgOjcBCCAMIDo3AQAgA0EIaiEDDAALAAsgAiEDCwNAIAMgHEcEQCARIANrIQwgKCAeIANBAnQiBmooAgBBAnRqICYgBiAwaigCAGogJiAwIANBAWoiA0ECdGooAgBqIAwgKSArQQIQDwwBCwsgKkEBaiEqIAkgJWohJQwACwAFIBsgJUECdGogJiAqaiAYICZqIAYgKUEAQQEQDwwCCwALCyAHIClBEHQgJHIgL3JBgAJyNgIACyAEIQMLIC1BEGokACADIg5BiH9LDQcgAyANTw0DIBYgECADICFqIA0gA2sgBxASIQ4MBwsgByAhIA0gFxAOIg5BiH9LDQYgDSAOTQ0CIBYgECAOICFqIA0gDmsgBxAUIQ4MBgtBAiEQAn8CQAJAAkAgA0ECdkEDcUEBaw4DAQACAAtBASEQIANBA3YMAgsgHS8AAEEEdgwBCyAgQQJGDQhBAyEQIB0vAAAgHS0AAkEQdHJBBHYLIQtBun8hAyATQQEgCxtFDQkgBiALSQ0HIAsgFEsNCSAIIBMgFCALIAYgFCAGIBRJG0EBEBsgICALIBBqIgpBIGpJBEAgCiAgSw0IIBAgHWohBCAIKAL86wEhAwJAIAgoAoTsAUECRgRAIAtBgIAEayICBEAgAyAEIAL8CgAACyAIQYjsAWogAiAEakGAgAT8CgAADAELIAtFDQAgAyAEIAv8CgAACyAIIAs2AojrASAIIAgoAvzrATYC+OoBDAcLIAhBADYChOwBIAggCzYCiOsBIAggECAdaiICNgL46gEgCCACIAtqNgKA7AEMBgsCfwJAAkACQCADQQJ2QQNxQQFrDgMBAAIAC0EBIRAgA0EDdgwCCyAgQQJGDQhBAiEQIB0vAABBBHYMAQsgIEEESQ0HQQMhECAdLwAAIB0tAAJBEHRyQQR2CyELQbp/IQMgE0EBIAsbRQ0IIAYgC0kNBiALIBRLDQggCCATIBQgCyAGIBQgBiAUSRtBARAbIBAgHWoiAy0AACEGIAgoAvzrASEEAkAgCCgChOwBQQJGBEAgC0GAgARrIgIEQCAEIAYgAvwLAAsgCEGI7AFqIAMtAABBgIAE/AsADAELIAtFDQAgBCAGIAv8CwALIAggCzYCiOsBIAggCCgC/OsBNgL46gEgEEEBaiEKDAULQbh/IQ4MAwsgEiEOCyAFIA42AuQBIAUgDDYC6AEgBSANNgLgAQsCQCARIANrQQJJDQAgEUECayELQQAgCWtBH3EhBgNAAkAgDkEhTwRAIAVBsBo2AugBDAELIAUCfyAFKALoASIHIAUoAvABTwRAIAUgByAOQQN2ayIMNgLoAUEBISUgDkEHcQwBCyAHIAUoAuwBIgRGDQEgBSAHIA5BA3YiAiAHIARrIAcgAmsgBE8iJRsiAmsiDDYC6AEgDiACQQN0awsiDjYC5AEgBSAMKAAAIgI2AuABICVFIAMgC0tyDQAgAyAZIAIgDnQgBnZBAnRqIgIvAQA7AAAgBSAFKALkASACLQACaiIONgLkASADIAItAANqIQMMAQsLA0AgAyALSw0BIAMgGSAFKALgASAOdCAGdkECdGoiAi8BADsAACAFIAUoAuQBIAItAAJqIg42AuQBIAMgAi0AA2ohAwwACwALAkAgAyARTw0AIAMgGSAFKALgASAOdEEAIAlrdkECdGoiAi0AADoAACACLQADQQFGBEAgBSgC5AEgAi0AAmohDgwBCyAFKALkASIOQR9LDQBBICAOIAItAAJqIgIgAkEgTxshDgtBbEFsIBAgDkEgRxsgBSgC6AEgBSgC7AFHGyEOCyAIKAKE7AFBAkYEQCAIQYjsAWogCCgCgOwBQYCABGtBgIAE/AoAACAQQYCABGsiAwRAIAgoAvzrASICQeD/A2ogAiAD/AoAAAsgCCAIKAL86wFB4P8DajYC/OsBIAggCCgCgOwBQSBrNgKA7AELIA5BiH9LDQEgCCAQNgKI6wEgCEEBNgKI6gEgCCAIKAL86wE2AvjqASAaQQJGBEAgCCAIQajQAGo2AgwLIAoiA0GIf0sNAwsgCCgClOsBBH8gCCgC0OkBBUGAgAgLIQwgCiAgRg0BICAgCmshCSAIKAK06QEhCyAdICBqIQ0gCCgCpOsBIQYCfwJAAn8gCiAdaiIRLQAAIg7AIgJBAE4EQCARQQFqDAELIAJBf0YEQCAJQQNJDQUgEUEDaiEEIBEvAAFBgP4BaiEODAILIAlBAUYNBCARLQABIA5BCHRyQYCAAmshDiARQQJqCyEEIA4NAEFsIQMgBCANRw0EQQAhDiAJDAELQbh/IQMgBEEBaiIPIA1LDQMgBC0AACIKQQNxDQEgCEEQaiAIIApBBnZBI0EJIA8gDSAPa0HADUHQDkGADyAIKAKM6gEgBiAOIAhBrNUBaiIHEBwiAkGIf0sNASAIQZggaiAIQQhqIApBBHZBA3FBH0EIIAIgD2oiBCANIARrQYAKQYALQZATIAgoAozqASAIKAKk6wEgDiAHEBwiAkGIf0sNAUFsIQMgCEGgMGogCEEEaiAKQQJ2QQNxQTRBCSACIARqIgQgDSAEa0GgC0GADUGgFSAIKAKM6gEgCCgCpOsBIA4gBxAcIgJBiH9LDQMgAiAEaiARawsiA0GIf0sNAgJAIBNBAEcgFEEAR3FFIA5BAEpxDQACQAJAIBMgFCAMIAwgFEsbIgJBACACQQBKG2ogC2siAkH8//8fTQRAIAYgAkGBgIAISXIgDkEJSHINAiAFQeABaiAIKAIIIA4QHQwBCyAFQeABaiAIKAIIIA4QHSAFKALkAUEZSyEzIAYNAQsgBSgC4AFBE0shBgsgCSADayEHIAMgEWohBCAIQQA2AqTrASAIKAKE7AEhAgJAIAYEQAJ/IAJBAUYEQCAIKAL86wEMAQsgEyAUQQAgFEEAShtqCyEUIAUgCCgC+OoBIgM2AswCIAgoAoDsASEcIA5FBEAgEyEJDAILIAgoArjpASEiIAgoArTpASEXIAgoArDpASELIAhBATYCjOoBIAhBrNABaiEyIAVB1AFqISZBACECA0AgAkEDRwRAICYgAkECdCIDaiADIDJqKAIANgIAIAJBAWohAgwBCwtBbCEDIAVBqAFqIgIgBCAHEAhBiH9LDQUgBUG8AWogAiAIKAIAEB4gBUHEAWogAiAIKAIIEB4gBUHMAWogAiAIKAIEEB5BCCAOIA5BCE4bIihBACAoQQBKGyElIA5BAWshGiATIAtrIS0gBSgCsAEhAiAFKALYASEGIAUoAtQBIRIgBSgCrAEhBCAFKAK0ASEjIAUoArgBISkgBSgCyAEhGCAFKALQASErIAUoAsABISQgBSgCqAEhCSAFKALEASEhIAUoAswBISogBSgCvAEhMCAzRSEVQQAhEANAIBIhESAQICVGBEAgBSAqNgLMASAFIDA2ArwBIAUgAjYCsAEgBSAhNgLEASAFIAk2AqgBIAhBmOwBaiEeIAhBiOwFaiEZIAhBiOwBaiEWIBRBIGshGyAzRSEnIBMhCQNAIA4gJUcEQCAFKALAASAFKAK8AUEDdGoiBi0AAiEfIAUoAtABIAUoAswBQQN0aiIELQACIRggBSgCyAEgBSgCxAFBA3RqIgItAAMhKyAELQADISQgBi0AAyEVIAIvAQAhEiAELwEAIREgBi8BACEKIAIoAgQhByAGKAIEIRAgBCgCBCEMAkAgAi0AAiINQQJPBEACQCAnIA1BGUlyRQRAIAcgBSgCqAEiDyAFKAKsASICdEEFIA1rdkEFdGohBwJAIAIgDWpBBWsiAkEhTwRAIAVBsBo2ArABDAELIAUoArABIgYgBSgCuAFPBEAgBSACQQdxIgQ2AqwBIAUgBiACQQN2ayICNgKwASAFIAIoAAAiDzYCqAEgBCECDAELIAYgBSgCtAEiBEYNACAFIAIgBiAEayACQQN2IgIgBiACayAESRsiBEEDdGsiAjYCrAEgBSAGIARrIgQ2ArABIAUgBCgAACIPNgKoAQsgBSACQQVqIgY2AqwBIAcgDyACdEEbdmohDQwBCyAFIAUoAqwBIgIgDWoiBjYCrAEgBSgCqAEgAnRBACANa3YgB2ohDSAGQSFPBEAgBUGwGjYCsAEMAQsgBSgCsAEiByAFKAK4AU8EQCAFIAZBB3EiAjYCrAEgBSAHIAZBA3ZrIgQ2ArABIAUgBCgAADYCqAEgAiEGDAELIAcgBSgCtAEiBEYNACAFIAYgByAEayAGQQN2IgIgByACayAESRsiAkEDdGsiBjYCrAEgBSAHIAJrIgI2ArABIAUgAigAADYCqAELIAUpAtQBITogBSANNgLUASAFIDo3AtgBDAELIBBFIQQgDUUEQCAmIBBBAEdBAnRqKAIAIQIgBSAmIARBAnRqKAIAIg02AtQBIAUgAjYC2AEgBSgCrAEhBgwBCyAFIAUoAqwBIgJBAWoiBjYCrAECQAJAIAQgB2ogBSgCqAEgAnRBH3ZqIgRBA0YEQCAFKALUAUEBayICQX8gAhshDQwBCyAmIARBAnRqKAIAIgJBfyACGyENIARBAUYNAQsgBSAFKALYATYC3AELIAUgBSgC1AE2AtgBIAUgDTYC1AELIBggH2ohBAJAIBhFBEAgBiECDAELIAUgBiAYaiICNgKsASAFKAKoASAGdEEAIBhrdiAMaiEMCwJAIARBFEkNACACQSFPBEAgBUGwGjYCsAEMAQsgBSgCsAEiBiAFKAK4AU8EQCAFIAJBB3EiBDYCrAEgBSAGIAJBA3ZrIgI2ArABIAUgAigAADYCqAEgBCECDAELIAYgBSgCtAEiBEYNACAFIAIgBiAEayACQQN2IgIgBiACayAESRsiBEEDdGsiAjYCrAEgBSAGIARrIgQ2ArABIAUgBCgAADYCqAELAkAgH0UEQCACIQQMAQsgBSACIB9qIgQ2AqwBIAUoAqgBIAJ0QQAgH2t2IBBqIRALAkAgBEEhTwRAQbAaIQIgBUGwGjYCsAEMAQsgBSgCsAEiAiAFKAK4AU8EQCAFIARBB3EiBjYCrAEgBSACIARBA3ZrIgI2ArABIAUgAigAADYCqAEgBiEEDAELIAIgBSgCtAEiB0YNACAFIAIgAiAHayAEQQN2IgYgAiAGayAHSRsiBmsiAjYCsAEgBSAEIAZBA3RrIgQ2AqwBIAUgAigAADYCqAELAkAgGiAlRg0AIAUgFUECdEGwGWooAgAgBSgCqAEiB0EAIAQgFWoiBGt2cSAKajYCvAEgBSAkQQJ0QbAZaigCACAHQQAgBCAkaiIEa3ZxIBFqNgLMAQJAIARBIU8EQEGwGiECIAVBsBo2ArABDAELIAUoArgBIAJNBEAgBSAEQQdxIgY2AqwBIAUgAiAEQQN2ayICNgKwASAFIAIoAAAiBzYCqAEgBiEEDAELIAIgBSgCtAEiCkYNACAFIAIgAiAKayAEQQN2IgYgAiAGayAKSRsiBmsiAjYCsAEgBSAEIAZBA3RrIgQ2AqwBIAUgAigAACIHNgKoAQsgBSAEICtqIgQ2AqwBIAUgK0ECdEGwGWooAgAgB0EAIARrdnEgEmo2AsQBIARBIU8EQCAFQbAaNgKwAQwBCyAFKAK4ASACTQRAIAUgBEEHcTYCrAEgBSACIARBA3ZrIgI2ArABIAUgAigAADYCqAEMAQsgAiAFKAK0ASIGRg0AIAUgBCACIAZrIARBA3YiBCACIARrIAZJGyIEQQN0azYCrAEgBSACIARrIgI2ArABIAUgAigAADYCqAELAkACQCAIKAKE7AFBAkYEQCAFKALMAiIHIAVB4AFqICVBB3FBDGxqIhUoAgAiAmoiCiAIKAKA7AEiBEsEQCAEIAdHBEAgBCAHayIEIBQgCWtLDQsgCSAHIAQQHyAVIAIgBGsiAjYCACAEIAlqIQkLIAUgFjYCzAIgCEEANgKE7AECQAJAAkAgAkGAgARKDQAgCSAVKAIEIhIgAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgFSgCCDYCgAEgBSAVKQIANwN4IAkgFCAFQfgAaiAFQcwCaiAZIAsgFyAiECAhBgwBCyACIBZqIQcgAiAJaiEEIBUoAgghESAWKQAAITogCSAWKQAINwAIIAkgOjcAAAJAIAJBEUkNACAeKQAAITogCSAeKQAINwAYIAkgOjcAECACQRBrQRFIDQAgCUEgaiECIB4hDwNAIA8pABAhOiACIA8pABg3AAggAiA6NwAAIA8pACAhOiACIA8pACg3ABggAiA6NwAQIA9BIGohDyACQSBqIgIgBEkNAAsLIAQgEWshAiAFIAc2AswCIAQgC2sgEUkEQCARIAQgF2tLDQ8gIiAiIAIgC2siCmoiByASak8EQCASRQ0CIAQgByAS/AoAAAwCC0EAIAprIgIEQCAEIAcgAvwKAAALIAogEmohEiAEIAprIQQgCyECCyARQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgEkERSA0BIAQgEmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgEUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgEUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgEkEJSQ0AIAQgEmohCiAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgCkkNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIBJBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIApJDQALCyAGQYh/SwRAIAYhAwwOCyAVIA02AgggFSAMNgIEIBUgEDYCACAZIRwMAwsgCkEgayEEAkACQCAKIBxLDQAgCSAVKAIEIhEgAmoiBmogBEsNACAGQSBqIBQgCWtNDQELIAUgFSgCCDYCkAEgBSAVKQIANwOIASAJIBQgBCAFQYgBaiAFQcwCaiAcIAsgFyAiECEhBgwCCyACIAlqIQQgFSgCCCEPIAcpAAAhOiAJIAcpAAg3AAggCSA6NwAAAkAgAkERSQ0AIAcpABAhOiAJIAcpABg3ABggCSA6NwAQIAJBEGtBEUgNACAHQRBqIQIgCUEgaiEHA0AgAikAECE6IAcgAikAGDcACCAHIDo3AAAgAikAICE6IAcgAikAKDcAGCAHIDo3ABAgAkEgaiECIAdBIGoiByAESQ0ACwsgBCAPayECIAUgCjYCzAIgBCALayAPSQRAIA8gBCAXa0sNDSAiICIgAiALayIKaiIHIBFqTwRAIBFFDQMgBCAHIBH8CgAADAMLQQAgCmsiAgRAIAQgByAC/AoAAAsgCiARaiERIAQgCmshBCALIQILIA9BEE8EQCACKQAAITogBCACKQAINwAIIAQgOjcAACARQRFIDQIgBCARaiEHIARBEGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgB0kNAAsMAgsCQCAPQQdNBEAgBCACLQAAOgAAIAQgAi0AAToAASAEIAItAAI6AAIgBCACLQADOgADIAQgAiAPQQJ0IgdB4BpqKAIAaiICKAAANgAEIAIgB0GAG2ooAgBrIQIMAQsgBCACKQAANwAACyARQQlJDQEgBCARaiEKIARBCGoiByACQQhqIgJrQQ9MBEADQCAHIAIpAAA3AAAgAkEIaiECIAdBCGoiByAKSQ0ADAMLAAsgAikAACE6IAcgAikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAE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",_e=new class{init(){return Ve||(Ve="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${We}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,je)).then(this._init):WebAssembly.instantiate(Buffer.from(We,"base64"),je).then(this._init),Ve)}_init(A){Ze=A.instance,je.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!Ze)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,e=Ze.exports.malloc(I);ze.set(A,e),g=g||Number(Ze.exports.ZSTD_findDecompressedSize(e,I));const i=Ze.exports.malloc(g),t=Ze.exports.ZSTD_decompress(i,g,e,I),B=ze.slice(i,i+t);return Ze.exports.free(e),Ze.exports.free(i),B}};var Xe=Object.freeze({__proto__:null,default:class extends Dg{decodeBlock(A){const g=this.parameters,I=g.LercParameters?.[yA];let e=A;switch(I){case fA:break;case uA:e=He(new Uint8Array(e)).buffer;break;case SA:e=_e.decode(new Uint8Array(e)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${I}`)}return ve.decode(e,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:_e});let $e,Ai,gi,Ii;const ei={env:{emscripten_notify_memory_growth:A=>{gi=new Uint8Array(Ai.exports.memory.buffer),Ii=new DataView(gi.buffer)}}};const ii="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",ti=new class{init(){return $e||($e="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${ii}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,ei)).then(this._init):WebAssembly.instantiate(Buffer.from(ii,"base64"),ei).then(this._init),$e)}_init(A){Ai=A.instance,ei.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!Ai)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,e=Ai.exports.malloc(I);if(gi.set(A,e),0===g&&(g=Number(Ai.exports.ZSTD_findDecompressedSize(e,I))),-1===g){Ai.exports.free(e);const g=[];for(const I of this.decodeStreaming([A]))g.push(I);if(1===g.length)return g[0];const I=g.reduce((A,g)=>A+g.byteLength,0),i=new Uint8Array(I);let t=0;for(const A of g)i.set(A,t),t+=A.byteLength;return i}const i=Ai.exports.malloc(g),t=Ai.exports.ZSTD_decompress(i,g,e,I),B=gi.slice(i,i+t);return Ai.exports.free(e),Ai.exports.free(i),B}*decodeStreaming(A){if(!Ai)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=Ai.exports.ZSTD_DStreamInSize(),I=Ai.exports.malloc(g),e=Ai.exports.ZSTD_DStreamOutSize(),i=Ai.exports.malloc(e),t=Ai.exports.ZSTD_createDCtx(),B=Ai.exports.malloc(12),C=Ai.exports.malloc(12);let Q=0;for(const g of A){const A=Ai.exports.malloc(g.byteLength);for(gi.set(g,A),Ii.setInt32(B,A,!0),Ii.setInt32(B+4,g.byteLength,!0),Ii.setInt32(B+4+4,0,!0);Ii.getUint32(B+4+4,!0)<Ii.getUint32(B+4,!0);){Ii.setInt32(C,i,!0),Ii.setInt32(C+4,e,!0),Ii.setInt32(C+4+4,0,!0),Q=Ai.exports.ZSTD_decompressStream(t,C,B);const A=Ii.getUint32(C+4+4,!0);yield gi.slice(i,i+A)}Ai.exports.free(A)}if(Ai.exports.ZSTD_freeDCtx(t),Ai.exports.free(I),Ai.exports.free(i),Ai.exports.free(B),Ai.exports.free(C),0!==Q)throw new Error("Incomplete stream, more data expected.")}};var Bi=Object.freeze({__proto__:null,default:class extends Dg{decodeBlock(A){return ti.decode(new Uint8Array(A)).buffer}},zstd:ti});var Ci=Object.freeze({__proto__:null,default:class extends Dg{constructor(A){if(super(A),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(A){const g=new Blob([A]),I=await createImageBitmap(g);let e;"undefined"!=typeof document?(e=document.createElement("canvas"),e.width=I.width,e.height=I.height):e=new OffscreenCanvas(I.width,I.height);const i=e.getContext("2d");i.drawImage(I,0,0);const t=i.getImageData(0,0,I.width,I.height).data,B=this.parameters.samplesPerPixel||4;if(4===B)return t.buffer;if(3===B){const A=new Uint8ClampedArray(I.width*I.height*3);for(let g=0,I=0;g<A.length;g+=3,I+=4)A[g]=t[I],A[g+1]=t[I+1],A[g+2]=t[I+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${B}`)}}});export{_g as CogBitmapLayer,gI as CogTerrainLayer,zg as CogTiles,Jg as GeoImage,II as extractTerrainCoordinate,eI as sampleTerrainTileCoordinates,a as suppressGlobalAbortErrors};
|
|
3
|
+
function(){var A,g,I,C,e,i,B,t,Q,s,o,a,E,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(i,B){var t=(B=B||{}).encodedMaskData||null===B.encodedMaskData,Q=e(i,B.inputOffset||0,t),s=null!==B.noDataValue?B.noDataValue:A.defaultNoDataValue,o=g(Q,B.pixelType||Float32Array,B.encodedMaskData,s,B.returnMask),a={width:Q.width,height:Q.height,pixelData:o.resultPixels,minValue:o.minValue,maxValue:Q.pixels.maxValue,noDataValue:s};return o.resultMask&&(a.maskData=o.resultMask),B.returnEncodedMask&&Q.mask&&(a.encodedMaskData=Q.mask.bitset?Q.mask.bitset:null),B.returnFileInfo&&(a.fileInfo=I(Q),B.computeUsedBitDepths&&(a.fileInfo.bitDepths=C(Q))),a}},g=function(A,g,I,C,e){var B,t,Q,s=0,o=A.pixels.numBlocksX,a=A.pixels.numBlocksY,E=Math.floor(A.width/o),r=Math.floor(A.height/a),n=2*A.maxZError,h=Number.MAX_VALUE;I=I||(A.mask?A.mask.bitset:null),t=new g(A.width*A.height),e&&I&&(Q=new Uint8Array(A.width*A.height));for(var l,c,w=new Float32Array(E*r),D=0;D<=a;D++){var d=D!==a?r:A.height%a;if(0!==d)for(var y=0;y<=o;y++){var G=y!==o?E:A.width%o;if(0!==G){var u,S,f,N,k=D*A.width*r+y*E,R=A.width-G,F=A.pixels.blocks[s];if(F.encoding<2?(0===F.encoding?u=F.rawData:(i(F.stuffedData,F.bitsPerPixel,F.numValidPixels,F.offset,n,w,A.pixels.maxValue),u=w),S=0):f=2===F.encoding?0:F.offset,I)for(c=0;c<d;c++){for(7&k&&(N=I[k>>3],N<<=7&k),l=0;l<G;l++)7&k||(N=I[k>>3]),128&N?(Q&&(Q[k]=1),h=h>(B=F.encoding<2?u[S++]:f)?B:h,t[k++]=B):(Q&&(Q[k]=0),t[k++]=C),N<<=1;k+=R}else if(F.encoding<2)for(c=0;c<d;c++){for(l=0;l<G;l++)h=h>(B=u[S++])?B:h,t[k++]=B;k+=R}else for(h=h>f?f:h,c=0;c<d;c++){for(l=0;l<G;l++)t[k++]=f;k+=R}if(1===F.encoding&&S!==F.numValidPixels)throw"Block and Mask do not match";s++}}}return{resultPixels:t,resultMask:Q,minValue:h}},I=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},C=function(A){for(var g=A.pixels.numBlocksX*A.pixels.numBlocksY,I={},C=0;C<g;C++){var e=A.pixels.blocks[C];0===e.encoding?I.float32=!0:1===e.encoding?I[e.bitsPerPixel]=!0:I[0]=!0}return Object.keys(I)},e=function(A,g,I){var C={},e=new Uint8Array(A,g,10);if(C.fileIdentifierString=String.fromCharCode.apply(null,e),"CntZImage"!==C.fileIdentifierString.trim())throw"Unexpected file identifier string: "+C.fileIdentifierString;g+=10;var i=new DataView(A,g,24);if(C.fileVersion=i.getInt32(0,!0),C.imageType=i.getInt32(4,!0),C.height=i.getUint32(8,!0),C.width=i.getUint32(12,!0),C.maxZError=i.getFloat64(16,!0),g+=24,!I)if(i=new DataView(A,g,16),C.mask={},C.mask.numBlocksY=i.getUint32(0,!0),C.mask.numBlocksX=i.getUint32(4,!0),C.mask.numBytes=i.getUint32(8,!0),C.mask.maxValue=i.getFloat32(12,!0),g+=16,C.mask.numBytes>0){var B=new Uint8Array(Math.ceil(C.width*C.height/8)),t=(i=new DataView(A,g,C.mask.numBytes)).getInt16(0,!0),Q=2,s=0;do{if(t>0)for(;t--;)B[s++]=i.getUint8(Q++);else{var o=i.getUint8(Q++);for(t=-t;t--;)B[s++]=o}t=i.getInt16(Q,!0),Q+=2}while(Q<C.mask.numBytes);if(-32768!==t||s<B.length)throw"Unexpected end of mask RLE encoding";C.mask.bitset=B,g+=C.mask.numBytes}else 0===(C.mask.numBytes|C.mask.numBlocksY|C.mask.maxValue)&&(C.mask.bitset=new Uint8Array(Math.ceil(C.width*C.height/8)));i=new DataView(A,g,16),C.pixels={},C.pixels.numBlocksY=i.getUint32(0,!0),C.pixels.numBlocksX=i.getUint32(4,!0),C.pixels.numBytes=i.getUint32(8,!0),C.pixels.maxValue=i.getFloat32(12,!0),g+=16;var a=C.pixels.numBlocksX,E=C.pixels.numBlocksY,r=a+(C.width%a>0?1:0),n=E+(C.height%E>0?1:0);C.pixels.blocks=new Array(r*n);for(var h=0,l=0;l<n;l++)for(var c=0;c<r;c++){var w=0,D=A.byteLength-g;i=new DataView(A,g,Math.min(10,D));var d={};C.pixels.blocks[h++]=d;var y=i.getUint8(0);if(w++,d.encoding=63&y,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(2!==d.encoding){if(0!==y&&2!==y){if(y>>=6,d.offsetType=y,2===y)d.offset=i.getInt8(1),w++;else if(1===y)d.offset=i.getInt16(1,!0),w+=2;else{if(0!==y)throw"Invalid block offset type";d.offset=i.getFloat32(1,!0),w+=4}if(1===d.encoding)if(y=i.getUint8(w),w++,d.bitsPerPixel=63&y,y>>=6,d.numValidPixelsType=y,2===y)d.numValidPixels=i.getUint8(w),w++;else if(1===y)d.numValidPixels=i.getUint16(w,!0),w+=2;else{if(0!==y)throw"Invalid valid pixel count type";d.numValidPixels=i.getUint32(w,!0),w+=4}}var G;if(g+=w,3!==d.encoding)if(0===d.encoding){var u=(C.pixels.numBytes-1)/4;if(u!==Math.floor(u))throw"uncompressed block has invalid length";G=new ArrayBuffer(4*u),new Uint8Array(G).set(new Uint8Array(A,g,4*u));var S=new Float32Array(G);d.rawData=S,g+=4*u}else if(1===d.encoding){var f=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),N=Math.ceil(f/4);G=new ArrayBuffer(4*N),new Uint8Array(G).set(new Uint8Array(A,g,f)),d.stuffedData=new Uint32Array(G),g+=f}}else g++}return C.eofOffset=g,C},i=function(A,g,I,C,e,i,B){var t,Q,s,o=(1<<g)-1,a=0,E=0,r=Math.ceil((B-C)/e),n=4*A.length-Math.ceil(g*I/8);for(A[A.length-1]<<=8*n,t=0;t<I;t++){if(0===E&&(s=A[a++],E=32),E>=g)Q=s>>>E-g&o,E-=g;else{var h=g-E;Q=(s&o)<<h&o,Q+=(s=A[a++])>>>(E=32-h)}i[t]=Q<r?C+Q*e:B}return i},A),c=(B=function(A,g,I,C,e,i,B,t){var Q,s,o,a,E,r=(1<<I)-1,n=0,h=0,l=4*A.length-Math.ceil(I*C/8);if(A[A.length-1]<<=8*l,e)for(Q=0;Q<C;Q++)0===h&&(o=A[n++],h=32),h>=I?(s=o>>>h-I&r,h-=I):(s=(o&r)<<(a=I-h)&r,s+=(o=A[n++])>>>(h=32-a)),g[Q]=e[s];else for(E=Math.ceil((t-i)/B),Q=0;Q<C;Q++)0===h&&(o=A[n++],h=32),h>=I?(s=o>>>h-I&r,h-=I):(s=(o&r)<<(a=I-h)&r,s+=(o=A[n++])>>>(h=32-a)),g[Q]=s<E?i+s*B:t},t=function(A,g,I,C,e,i){var B,t=(1<<g)-1,Q=0,s=0,o=0,a=0,E=0,r=[],n=4*A.length-Math.ceil(g*I/8);A[A.length-1]<<=8*n;var h=Math.ceil((i-C)/e);for(s=0;s<I;s++)0===a&&(B=A[Q++],a=32),a>=g?(E=B>>>a-g&t,a-=g):(E=(B&t)<<(o=g-a)&t,E+=(B=A[Q++])>>>(a=32-o)),r[s]=E<h?C+E*e:i;return r.unshift(C),r},Q=function(A,g,I,C,e,i,B,t){var Q,s,o,a,E=(1<<I)-1,r=0,n=0,h=0;if(e)for(Q=0;Q<C;Q++)0===n&&(o=A[r++],n=32,h=0),n>=I?(s=o>>>h&E,n-=I,h+=I):(s=o>>>h&E,n=32-(a=I-n),s|=((o=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=e[s];else{var l=Math.ceil((t-i)/B);for(Q=0;Q<C;Q++)0===n&&(o=A[r++],n=32,h=0),n>=I?(s=o>>>h&E,n-=I,h+=I):(s=o>>>h&E,n=32-(a=I-n),s|=((o=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=s<l?i+s*B:t}return g},s=function(A,g,I,C,e,i){var B,t=(1<<g)-1,Q=0,s=0,o=0,a=0,E=0,r=0,n=[],h=Math.ceil((i-C)/e);for(s=0;s<I;s++)0===a&&(B=A[Q++],a=32,r=0),a>=g?(E=B>>>r&t,a-=g,r+=g):(E=B>>>r&t,a=32-(o=g-a),E|=((B=A[Q++])&(1<<o)-1)<<g-o,r=o),n[s]=E<h?C+E*e:i;return n.unshift(C),n},o=function(A,g,I,C){var e,i,B,t,Q=(1<<I)-1,s=0,o=0,a=4*A.length-Math.ceil(I*C/8);for(A[A.length-1]<<=8*a,e=0;e<C;e++)0===o&&(B=A[s++],o=32),o>=I?(i=B>>>o-I&Q,o-=I):(i=(B&Q)<<(t=I-o)&Q,i+=(B=A[s++])>>>(o=32-t)),g[e]=i;return g},a=function(A,g,I,C){var e,i,B,t,Q=(1<<I)-1,s=0,o=0,a=0;for(e=0;e<C;e++)0===o&&(B=A[s++],o=32,a=0),o>=I?(i=B>>>a&Q,o-=I,a+=I):(i=B>>>a&Q,o=32-(t=I-o),i|=((B=A[s++])&(1<<t)-1)<<I-t,a=t),g[e]=i;return g},E={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var g=65535,I=65535,C=A.length,e=Math.floor(C/2),i=0;e;){var B=e>=359?359:e;e-=B;do{g+=A[i++]<<8,I+=g+=A[i++]}while(--B);g=(65535&g)+(g>>>16),I=(65535&I)+(I>>>16)}return 1&C&&(I+=g+=A[i]<<8),((I=(65535&I)+(I>>>16))<<16|(g=(65535&g)+(g>>>16)))>>>0},readHeaderInfo:function(A,g){var I=g.ptr,C=new Uint8Array(A,I,6),e={};if(e.fileIdentifierString=String.fromCharCode.apply(null,C),0!==e.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+e.fileIdentifierString;I+=6;var i,B=new DataView(A,I,8),t=B.getInt32(0,!0);if(e.fileVersion=t,I+=4,t>=3&&(e.checksum=B.getUint32(4,!0),I+=4),B=new DataView(A,I,12),e.height=B.getUint32(0,!0),e.width=B.getUint32(4,!0),I+=8,t>=4?(e.numDims=B.getUint32(8,!0),I+=4):e.numDims=1,B=new DataView(A,I,40),e.numValidPixel=B.getUint32(0,!0),e.microBlockSize=B.getInt32(4,!0),e.blobSize=B.getInt32(8,!0),e.imageType=B.getInt32(12,!0),e.maxZError=B.getFloat64(16,!0),e.zMin=B.getFloat64(24,!0),e.zMax=B.getFloat64(32,!0),I+=40,g.headerInfo=e,g.ptr=I,t>=3&&(i=t>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,I-i,e.blobSize-14))!==e.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,g){var I=g.headerInfo,C=this.getDataTypeArray(I.imageType),e=I.numDims*this.getDataTypeSize(I.imageType),i=this.readSubArray(A,g.ptr,C,e),B=this.readSubArray(A,g.ptr+e,C,e);g.ptr+=2*e;var t,Q=!0;for(t=0;t<I.numDims;t++)if(i[t]!==B[t]){Q=!1;break}return I.minValues=i,I.maxValues=B,Q},readSubArray:function(A,g,I,C){var e;if(I===Uint8Array)e=new Uint8Array(A,g,C);else{var i=new ArrayBuffer(C);new Uint8Array(i).set(new Uint8Array(A,g,C)),e=new I(i)}return e},readMask:function(A,g){var I,C,e=g.ptr,i=g.headerInfo,B=i.width*i.height,t=i.numValidPixel,Q=new DataView(A,e,4),s={};if(s.numBytes=Q.getUint32(0,!0),e+=4,(0===t||B===t)&&0!==s.numBytes)throw"invalid mask";if(0===t)I=new Uint8Array(Math.ceil(B/8)),s.bitset=I,C=new Uint8Array(B),g.pixels.resultMask=C,e+=s.numBytes;else if(s.numBytes>0){I=new Uint8Array(Math.ceil(B/8));var o=(Q=new DataView(A,e,s.numBytes)).getInt16(0,!0),a=2,E=0,r=0;do{if(o>0)for(;o--;)I[E++]=Q.getUint8(a++);else for(r=Q.getUint8(a++),o=-o;o--;)I[E++]=r;o=Q.getInt16(a,!0),a+=2}while(a<s.numBytes);if(-32768!==o||E<I.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(B);var n=0,h=0;for(h=0;h<B;h++)7&h?(n=I[h>>3],n<<=7&h):n=I[h>>3],128&n&&(C[h]=1);g.pixels.resultMask=C,s.bitset=I,e+=s.numBytes}return g.ptr=e,g.mask=s,!0},readDataOneSweep:function(A,g,I,C){var e,i=g.ptr,B=g.headerInfo,t=B.numDims,Q=B.width*B.height,s=B.imageType,o=B.numValidPixel*E.getDataTypeSize(s)*t,a=g.pixels.resultMask;if(I===Uint8Array)e=new Uint8Array(A,i,o);else{var r=new ArrayBuffer(o);new Uint8Array(r).set(new Uint8Array(A,i,o)),e=new I(r)}if(e.length===Q*t)g.pixels.resultPixels=C?E.swapDimensionOrder(e,Q,t,I,!0):e;else{g.pixels.resultPixels=new I(Q*t);var n=0,h=0,l=0,c=0;if(t>1){if(C){for(h=0;h<Q;h++)if(a[h])for(c=h,l=0;l<t;l++,c+=Q)g.pixels.resultPixels[c]=e[n++]}else for(h=0;h<Q;h++)if(a[h])for(c=h*t,l=0;l<t;l++)g.pixels.resultPixels[c+l]=e[n++]}else for(h=0;h<Q;h++)a[h]&&(g.pixels.resultPixels[h]=e[n++])}return i+=o,g.ptr=i,!0},readHuffmanTree:function(A,g){var I=this.HUFFMAN_LUT_BITS_MAX,C=new DataView(A,g.ptr,16);if(g.ptr+=16,C.getInt32(0,!0)<2)throw"unsupported Huffman version";var e=C.getInt32(4,!0),i=C.getInt32(8,!0),B=C.getInt32(12,!0);if(i>=B)return!1;var t=new Uint32Array(B-i);E.decodeBits(A,g,t);var Q,s,o,a,n=[];for(Q=i;Q<B;Q++)n[s=Q-(Q<e?0:e)]={first:t[Q-i],second:null};var h=A.byteLength-g.ptr,l=Math.ceil(h/4),c=new ArrayBuffer(4*l);new Uint8Array(c).set(new Uint8Array(A,g.ptr,h));var w,D=new Uint32Array(c),d=0,y=0;for(w=D[0],Q=i;Q<B;Q++)(a=n[s=Q-(Q<e?0:e)].first)>0&&(n[s].second=w<<d>>>32-a,32-d>=a?32===(d+=a)&&(d=0,w=D[++y]):(d+=a-32,w=D[++y],n[s].second|=w>>>32-d));var G=0,u=0,S=new r;for(Q=0;Q<n.length;Q++)void 0!==n[Q]&&(G=Math.max(G,n[Q].first));u=G>=I?I:G;var f,N,k,R,F,p=[];for(Q=i;Q<B;Q++)if((a=n[s=Q-(Q<e?0:e)].first)>0)if(f=[a,s],a<=u)for(N=n[s].second<<u-a,k=1<<u-a,o=0;o<k;o++)p[N|o]=f;else for(N=n[s].second,F=S,R=a-1;R>=0;R--)N>>>R&1?(F.right||(F.right=new r),F=F.right):(F.left||(F.left=new r),F=F.left),0!==R||F.val||(F.val=f[1]);return{decodeLut:p,numBitsLUTQick:u,numBitsLUT:G,tree:S,stuffedData:D,srcPtr:y,bitPos:d}},readHuffman:function(A,g,I,C){var e,i,B,t,Q,s,o,a,r,n=g.headerInfo.numDims,h=g.headerInfo.height,l=g.headerInfo.width,c=l*h,w=this.readHuffmanTree(A,g),D=w.decodeLut,d=w.tree,y=w.stuffedData,G=w.srcPtr,u=w.bitPos,S=w.numBitsLUTQick,f=w.numBitsLUT,N=0===g.headerInfo.imageType?128:0,k=g.pixels.resultMask,R=0;u>0&&(G++,u=0);var F,p=y[G],L=1===g.encodeMode,Y=new I(c*n),U=Y;if(n<2||L){for(F=0;F<n;F++)if(n>1&&(U=new I(Y.buffer,c*F,c),R=0),g.headerInfo.numValidPixel===l*h)for(a=0,s=0;s<h;s++)for(o=0;o<l;o++,a++){if(i=0,Q=t=p<<u>>>32-S,32-u<S&&(Q=t|=y[G+1]>>>64-u-S),D[Q])i=D[Q][1],u+=D[Q][0];else for(Q=t=p<<u>>>32-f,32-u<f&&(Q=t|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=t>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),B=i-N,L?(B+=o>0?R:s>0?U[a-l]:R,B&=255,U[a]=B,R=B):U[a]=B}else for(a=0,s=0;s<h;s++)for(o=0;o<l;o++,a++)if(k[a]){if(i=0,Q=t=p<<u>>>32-S,32-u<S&&(Q=t|=y[G+1]>>>64-u-S),D[Q])i=D[Q][1],u+=D[Q][0];else for(Q=t=p<<u>>>32-f,32-u<f&&(Q=t|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=t>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),B=i-N,L?(o>0&&k[a-1]?B+=R:s>0&&k[a-l]?B+=U[a-l]:B+=R,B&=255,U[a]=B,R=B):U[a]=B}}else for(a=0,s=0;s<h;s++)for(o=0;o<l;o++)if(a=s*l+o,!k||k[a])for(F=0;F<n;F++,a+=c){if(i=0,Q=t=p<<u>>>32-S,32-u<S&&(Q=t|=y[G+1]>>>64-u-S),D[Q])i=D[Q][1],u+=D[Q][0];else for(Q=t=p<<u>>>32-f,32-u<f&&(Q=t|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=t>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),B=i-N,U[a]=B}g.ptr=g.ptr+4*(G+1)+(u>0?4:0),g.pixels.resultPixels=Y,n>1&&!C&&(g.pixels.resultPixels=E.swapDimensionOrder(Y,c,n,I))},decodeBits:function(A,g,I,C,e){var i=g.headerInfo,E=i.fileVersion,r=0,n=A.byteLength-g.ptr>=5?5:A.byteLength-g.ptr,h=new DataView(A,g.ptr,n),l=h.getUint8(0);r++;var c=l>>6,w=0===c?4:3-c,D=(32&l)>0,d=31&l,y=0;if(1===w)y=h.getUint8(r),r++;else if(2===w)y=h.getUint16(r,!0),r+=2;else{if(4!==w)throw"Invalid valid pixel count type";y=h.getUint32(r,!0),r+=4}var G,u,S,f,N,k,R,F,p,L=2*i.maxZError,Y=i.numDims>1?i.maxValues[e]:i.zMax;if(D){for(g.counter.lut++,F=h.getUint8(r),r++,f=Math.ceil((F-1)*d/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),S=new Uint8Array(u),g.ptr+=r,S.set(new Uint8Array(A,g.ptr,f)),R=new Uint32Array(u),g.ptr+=f,p=0;F-1>>>p;)p++;f=Math.ceil(y*p/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,f)),G=new Uint32Array(u),g.ptr+=f,k=E>=3?s(R,d,F-1,C,L,Y):t(R,d,F-1,C,L,Y),E>=3?Q(G,I,p,y,k):B(G,I,p,y,k)}else g.counter.bitstuffer++,p=d,g.ptr+=r,p>0&&(f=Math.ceil(y*p/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,f)),G=new Uint32Array(u),g.ptr+=f,E>=3?null==C?a(G,I,p,y):Q(G,I,p,y,!1,C,L,Y):null==C?o(G,I,p,y):B(G,I,p,y,!1,C,L,Y))},readTiles:function(A,g,I,C){var e=g.headerInfo,i=e.width,B=e.height,t=i*B,Q=e.microBlockSize,s=e.imageType,o=E.getDataTypeSize(s),a=Math.ceil(i/Q),r=Math.ceil(B/Q);g.pixels.numBlocksY=r,g.pixels.numBlocksX=a,g.pixels.ptr=0;var n,h,l,c,w,D,d,y,G,u,S=0,f=0,N=0,k=0,R=0,F=0,p=0,L=0,Y=0,U=0,m=0,M=0,b=0,K=0,H=0,J=new I(Q*Q),x=B%Q||Q,Z=i%Q||Q,T=e.numDims,q=g.pixels.resultMask,O=g.pixels.resultPixels,W=e.fileVersion>=5?14:15,V=e.zMax;for(N=0;N<r;N++)for(R=N!==r-1?Q:x,k=0;k<a;k++)for(U=N*i*Q+k*Q,m=i-(F=k!==a-1?Q:Z),y=0;y<T;y++){if(T>1?(u=O,U=N*i*Q+k*Q,O=new I(g.pixels.resultPixels.buffer,t*y*o,t),V=e.maxValues[y]):u=null,p=A.byteLength-g.ptr,h={},H=0,L=(n=new DataView(A,g.ptr,Math.min(10,p))).getUint8(0),H++,G=e.fileVersion>=5?4&L:0,Y=L>>6&255,(L>>2&W)!=(k*Q>>3&W))throw"integrity issue";if(G&&0===y)throw"integrity issue";if((w=3&L)>3)throw g.ptr+=H,"Invalid block encoding ("+w+")";if(2!==w)if(0===w){if(G)throw"integrity issue";if(g.counter.uncompressed++,g.ptr+=H,M=(M=R*F*o)<(b=A.byteLength-g.ptr)?M:b,l=new ArrayBuffer(M%o===0?M:M+o-M%o),new Uint8Array(l).set(new Uint8Array(A,g.ptr,M)),c=new I(l),K=0,q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=c[K++]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U++]=c[K++];U+=m}g.ptr+=K*o}else if(D=E.getDataTypeUsed(G&&s<6?4:s,Y),d=E.getOnePixel(h,H,D,n),H+=E.getDataTypeSize(D),3===w)if(g.ptr+=H,g.counter.constantoffset++,q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=G?Math.min(V,u[U]+d):d),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U]=G?Math.min(V,u[U]+d):d,U++;U+=m}else if(g.ptr+=H,E.decodeBits(A,g,J,d,y),H=0,G)if(q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=J[H++]+u[U]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U]=J[H++]+u[U],U++;U+=m}else if(q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=J[H++]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U++]=J[H++];U+=m}else{if(G)if(q)for(S=0;S<R;S++)for(f=0;f<F;f++)q[U]&&(O[U]=u[U]),U++;else for(S=0;S<R;S++)for(f=0;f<F;f++)O[U]=u[U],U++;g.counter.constant++,g.ptr+=H}}T>1&&!C&&(g.pixels.resultPixels=E.swapDimensionOrder(g.pixels.resultPixels,t,T,I))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:E.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,g){var I=A.headerInfo.zMax,C=A.headerInfo.zMin,e=A.headerInfo.maxValues,i=A.headerInfo.numDims,B=A.headerInfo.height*A.headerInfo.width,t=0,Q=0,s=0,o=A.pixels.resultMask,a=A.pixels.resultPixels;if(o)if(i>1){if(g)for(t=0;t<i;t++)for(s=t*B,I=e[t],Q=0;Q<B;Q++)o[Q]&&(a[s+Q]=I);else for(Q=0;Q<B;Q++)if(o[Q])for(s=Q*i,t=0;t<i;t++)a[s+i]=e[t]}else for(Q=0;Q<B;Q++)o[Q]&&(a[Q]=I);else if(i>1&&C!==I)if(g)for(t=0;t<i;t++)for(s=t*B,I=e[t],Q=0;Q<B;Q++)a[s+Q]=I;else for(Q=0;Q<B;Q++)for(s=Q*i,t=0;t<i;t++)a[s+t]=e[t];else for(Q=0;Q<B*i;Q++)a[Q]=I},getDataTypeArray:function(A){var g;switch(A){case 0:g=Int8Array;break;case 1:g=Uint8Array;break;case 2:g=Int16Array;break;case 3:g=Uint16Array;break;case 4:g=Int32Array;break;case 5:g=Uint32Array;break;case 6:default:g=Float32Array;break;case 7:g=Float64Array}return g},getPixelType:function(A){var g;switch(A){case 0:g="S8";break;case 1:g="U8";break;case 2:g="S16";break;case 3:g="U16";break;case 4:g="S32";break;case 5:g="U32";break;case 6:default:g="F32";break;case 7:g="F64"}return g},isValidPixelValue:function(A,g){if(null==g)return!1;var I;switch(A){case 0:I=g>=-128&&g<=127;break;case 1:I=g>=0&&g<=255;break;case 2:I=g>=-32768&&g<=32767;break;case 3:I=g>=0&&g<=65536;break;case 4:I=g>=-2147483648&&g<=2147483647;break;case 5:I=g>=0&&g<=4294967296;break;case 6:I=g>=-34027999387901484e22&&g<=34027999387901484e22;break;case 7:I=g>=-17976931348623157e292&&g<=17976931348623157e292;break;default:I=!1}return I},getDataTypeSize:function(A){var g=0;switch(A){case 0:case 1:g=1;break;case 2:case 3:g=2;break;case 4:case 5:case 6:g=4;break;case 7:g=8;break;default:g=A}return g},getDataTypeUsed:function(A,g){var I=A;switch(A){case 2:case 4:I=A-g;break;case 3:case 5:I=A-2*g;break;case 6:I=0===g?A:1===g?2:1;break;case 7:I=0===g?A:A-2*g+1;break;default:I=A}return I},getOnePixel:function(A,g,I,C){var e=0;switch(I){case 0:e=C.getInt8(g);break;case 1:e=C.getUint8(g);break;case 2:e=C.getInt16(g,!0);break;case 3:e=C.getUint16(g,!0);break;case 4:e=C.getInt32(g,!0);break;case 5:e=C.getUInt32(g,!0);break;case 6:e=C.getFloat32(g,!0);break;case 7:e=C.getFloat64(g,!0);break;default:throw"the decoder does not understand this pixel type"}return e},swapDimensionOrder:function(A,g,I,C,e){var i=0,B=0,t=0,Q=0,s=A;if(I>1)if(s=new C(g*I),e)for(i=0;i<g;i++)for(Q=i,t=0;t<I;t++,Q+=g)s[Q]=A[B++];else for(i=0;i<g;i++)for(Q=i,t=0;t<I;t++,Q+=g)s[B++]=A[Q];return s}},r=function(A,g,I){this.val=A,this.left=g,this.right=I},{decode:function(A,g){var I=(g=g||{}).noDataValue,C=0,e={};if(e.ptr=g.inputOffset||0,e.pixels={},E.readHeaderInfo(A,e)){var i=e.headerInfo,B=i.fileVersion,t=E.getDataTypeArray(i.imageType);if(B>5)throw"unsupported lerc version 2."+B;E.readMask(A,e),i.numValidPixel===i.width*i.height||e.pixels.resultMask||(e.pixels.resultMask=g.maskData);var Q=i.width*i.height;e.pixels.resultPixels=new t(Q*i.numDims),e.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var s,o=!g.returnPixelInterleavedDims;if(0!==i.numValidPixel)if(i.zMax===i.zMin)E.constructConstantSurface(e,o);else if(B>=4&&E.checkMinMaxRanges(A,e))E.constructConstantSurface(e,o);else{var a=new DataView(A,e.ptr,2),r=a.getUint8(0);if(e.ptr++,r)E.readDataOneSweep(A,e,t,o);else if(B>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var n=a.getUint8(1);if(e.ptr++,e.encodeMode=n,n>2||B<4&&n>1)throw"Invalid Huffman flag "+n;n?E.readHuffman(A,e,t,o):E.readTiles(A,e,t,o)}else E.readTiles(A,e,t,o)}e.eofOffset=e.ptr,g.inputOffset?(s=e.headerInfo.blobSize+g.inputOffset-e.ptr,Math.abs(s)>=1&&(e.eofOffset=g.inputOffset+e.headerInfo.blobSize)):(s=e.headerInfo.blobSize-e.ptr,Math.abs(s)>=1&&(e.eofOffset=e.headerInfo.blobSize));var h={width:i.width,height:i.height,pixelData:e.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:e.pixels.resultMask};if(e.pixels.resultMask&&E.isValidPixelValue(i.imageType,I)){var l=e.pixels.resultMask;for(C=0;C<Q;C++)l[C]||(h.pixelData[C]=I);h.noDataValue=I}return e.noDataValue=I,g.returnFileInfo&&(h.fileInfo=E.formatFileInfo(e)),h}},getBandCount:function(A){for(var g=0,I=0,C={ptr:0,pixels:{}};I<A.byteLength-58;)E.readHeaderInfo(A,C),I+=C.headerInfo.blobSize,g++,C.ptr=I;return g}}),w=(n=new ArrayBuffer(4),h=new Uint8Array(n),new Uint32Array(n)[0]=1,1===h[0]),D={decode:function(A,g){if(!w)throw"Big endian system is not supported.";var I,C,e=(g=g||{}).inputOffset||0,i=new Uint8Array(A,e,10),B=String.fromCharCode.apply(null,i);if("CntZImage"===B.trim())I=l,C=1;else{if("Lerc2"!==B.substring(0,5))throw"Unexpected file identifier string: "+B;I=c,C=2}for(var t,Q,s,o,a,E,r=0,n=A.byteLength-10,h=[],D={width:0,height:0,pixels:[],pixelType:g.pixelType,mask:null,statistics:[]},d=0;e<n;){var y=I.decode(A,{inputOffset:e,encodedMaskData:t,maskData:s,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:g.returnPixelInterleavedDims,pixelType:g.pixelType||null,noDataValue:g.noDataValue||null});e=y.fileInfo.eofOffset,s=y.maskData,0===r&&(t=y.encodedMaskData,D.width=y.width,D.height=y.height,D.dimCount=y.dimCount||1,D.pixelType=y.pixelType||y.fileInfo.pixelType,D.mask=s),C>1&&(s&&h.push(s),y.fileInfo.mask&&y.fileInfo.mask.numBytes>0&&d++),r++,D.pixels.push(y.pixelData),D.statistics.push({minValue:y.minValue,maxValue:y.maxValue,noDataValue:y.noDataValue,dimStats:y.dimStats})}if(C>1&&d>1){for(E=D.width*D.height,D.bandMasks=h,(s=new Uint8Array(E)).set(h[0]),o=1;o<h.length;o++)for(Q=h[o],a=0;a<E;a++)s[a]=s[a]&Q[a];D.maskData=s}return D}};XC.exports?XC.exports=D:this.Lerc=D}()),zC.exports),jC=VC(PC);let _C,$C,Ae;const ge={env:{emscripten_notify_memory_growth:A=>{Ae=new Uint8Array($C.exports.memory.buffer)}}};const Ie="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AikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAE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",Ce=new class{init(){return _C||(_C="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${Ie}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,ge)).then(this._init):WebAssembly.instantiate(Buffer.from(Ie,"base64"),ge).then(this._init),_C)}_init(A){$C=A.instance,ge.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!$C)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,C=$C.exports.malloc(I);Ae.set(A,C),g=g||Number($C.exports.ZSTD_findDecompressedSize(C,I));const e=$C.exports.malloc(g),i=$C.exports.ZSTD_decompress(e,g,C,I),B=Ae.slice(e,e+i);return $C.exports.free(C),$C.exports.free(e),B}};var ee=Object.freeze({__proto__:null,default:class extends wg{decodeBlock(A){const g=this.parameters,I=g.LercParameters?.[yA];let C=A;switch(I){case GA:break;case uA:C=qC(new Uint8Array(C)).buffer;break;case SA:C=Ce.decode(new Uint8Array(C)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${I}`)}return jC.decode(C,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:Ce});let ie,Be,te,Qe;const se={env:{emscripten_notify_memory_growth:A=>{te=new Uint8Array(Be.exports.memory.buffer),Qe=new DataView(te.buffer)}}};const oe="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",ae=new class{init(){return ie||(ie="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${oe}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,se)).then(this._init):WebAssembly.instantiate(Buffer.from(oe,"base64"),se).then(this._init),ie)}_init(A){Be=A.instance,se.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!Be)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,C=Be.exports.malloc(I);if(te.set(A,C),0===g&&(g=Number(Be.exports.ZSTD_findDecompressedSize(C,I))),-1===g){Be.exports.free(C);const g=[];for(const I of this.decodeStreaming([A]))g.push(I);if(1===g.length)return g[0];const I=g.reduce((A,g)=>A+g.byteLength,0),e=new Uint8Array(I);let i=0;for(const A of g)e.set(A,i),i+=A.byteLength;return e}const e=Be.exports.malloc(g),i=Be.exports.ZSTD_decompress(e,g,C,I),B=te.slice(e,e+i);return Be.exports.free(C),Be.exports.free(e),B}*decodeStreaming(A){if(!Be)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=Be.exports.ZSTD_DStreamInSize(),I=Be.exports.malloc(g),C=Be.exports.ZSTD_DStreamOutSize(),e=Be.exports.malloc(C),i=Be.exports.ZSTD_createDCtx(),B=Be.exports.malloc(12),t=Be.exports.malloc(12);let Q=0;for(const g of A){const A=Be.exports.malloc(g.byteLength);for(te.set(g,A),Qe.setInt32(B,A,!0),Qe.setInt32(B+4,g.byteLength,!0),Qe.setInt32(B+4+4,0,!0);Qe.getUint32(B+4+4,!0)<Qe.getUint32(B+4,!0);){Qe.setInt32(t,e,!0),Qe.setInt32(t+4,C,!0),Qe.setInt32(t+4+4,0,!0),Q=Be.exports.ZSTD_decompressStream(i,t,B);const A=Qe.getUint32(t+4+4,!0);yield te.slice(e,e+A)}Be.exports.free(A)}if(Be.exports.ZSTD_freeDCtx(i),Be.exports.free(I),Be.exports.free(e),Be.exports.free(B),Be.exports.free(t),0!==Q)throw new Error("Incomplete stream, more data expected.")}};var Ee=Object.freeze({__proto__:null,default:class extends wg{decodeBlock(A){return ae.decode(new Uint8Array(A)).buffer}},zstd:ae});var re=Object.freeze({__proto__:null,default:class extends wg{constructor(A){if(super(A),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(A){const g=new Blob([A]),I=await createImageBitmap(g);let C;"undefined"!=typeof document?(C=document.createElement("canvas"),C.width=I.width,C.height=I.height):C=new OffscreenCanvas(I.width,I.height);const e=C.getContext("2d");e.drawImage(I,0,0);const i=e.getImageData(0,0,I.width,I.height).data,B=this.parameters.samplesPerPixel||4;if(4===B)return i.buffer;if(3===B){const A=new Uint8ClampedArray(I.width*I.height*3);for(let g=0,I=0;g<A.length;g+=3,I+=4)A[g]=i[I],A[g+1]=i[I+1],A[g+2]=i[I+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${B}`)}}});export{CI as CogBitmapLayer,tI as CogTerrainLayer,AI as CogTiles,Hg as GeoImage,QI as extractTerrainCoordinate,sI as sampleTerrainTileCoordinates,a as suppressGlobalAbortErrors,Og as terminateGlobalTerrainWorkerPool};
|
|
4
4
|
//# sourceMappingURL=index.min.js.map
|