2 lines
96 KiB
JavaScript
2 lines
96 KiB
JavaScript
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:n,Number:s,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:w,Error:u,Uint8Array:f,Uint16Array:p,Uint32Array:m,DataView:h,Blob:y,Promise:b,TextEncoder:x,TextDecoder:g,document:S,crypto:F,btoa:v,TransformStream:z,ReadableStream:D,WritableStream:R,CompressionStream:E,DecompressionStream:k,navigator:C,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self;var U=void 0!==S?S.currentScript:null;const M=4294967295,L=65535,j=255,V=67324752,W=134695760,A=W,P=33639248,K=101010256,q=101075792,X=117853008,I=22,Z=20,O=21589,G=2048,J=16384,B=2048,H=1024,Y="/",Q=30,N=new o(2107,11,31),_=new o(1980,0,1),$=void 0,ee=1/0,te="undefined",re="function",ne=new f;let se=2;try{typeof C!=te&&C.hardwareConcurrency&&(se=C.hardwareConcurrency)}catch{}const ae={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:se,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof E!=te&&E,DecompressionStream:typeof k!=te&&k},ie=["baseURI","wasmURI","workerURI","chunkSize","maxWorkers","terminateWorkerTimeout","workerStarvationTimeout","useCompressionStream","useWebWorkers","CompressionStream","DecompressionStream","CompressionStreamZlib","DecompressionStreamZlib"],oe=r.assign({},ae);function ce(){return oe}function le(e){return i.max(e.chunkSize,64)}function de(e){for(const t of ie){const r=e[t];r!==$&&(oe[t]=r)}}const we=[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],ue=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],fe=[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],pe=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],me=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],he=new f(288);he.fill(8,0,144),he.fill(9,144,256),he.fill(7,256,280),he.fill(8,280,288);const ye=new f(30).fill(5);function be(e){const t=new p(16);for(const r of e)t[r]++;t[0]=0;const r=new p(17);for(let e=1;15>=e;e++)r[e+1]=r[e]+t[e];const n=new p(e.length);for(let t=0;t<e.length;t++)e[t]&&(n[r[e[t]]++]=t);return{t:t,symbols:n}}const xe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ge=[[],[],[],[],[],[],[],[]];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)t=1&t?t>>>1^3988292384:t>>>1;ge[0][e]=t}for(let e=0;256>e;e++)for(let t=1;8>t;t++){const r=ge[t-1][e];ge[t][e]=r>>>8^ge[0][255&r]}const[Se,Fe,ve,ze,De,Re,Ee,ke]=ge;class Ce{constructor(e){this.i=e||-1}append(e){let t=0|this.i;const r=0|e.length;let n=0;if(r>=8&&e.buffer){const s=new h(e.buffer,e.byteOffset,r),a=r-8;for(;a>=n;n+=8){const e=t^s.getInt32(n,!0),r=s.getInt32(n+4,!0);t=ke[255&e]^Ee[e>>>8&255]^Re[e>>>16&255]^De[e>>>24&255]^ze[255&r]^ve[r>>>8&255]^Fe[r>>>16&255]^Se[r>>>24&255]}}for(;r>n;n++)t=t>>>8^Se[255&(t^e[n])];this.i=t}get(){return~this.i}}class Te extends z{constructor(){let e;const t=new Ce;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new h(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function Ue(e){if(typeof x==te){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new x).encode(e)}const Me={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],n=Me.o(r);return 32===n?e.concat(t):Me.l(t,n,0|r,e.slice(0,e.length-1))},u(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+Me.o(r)},p(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=Me.m(t,e[r-1]&2147483648>>t-1,1)),e},m:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,o:e=>i.round(e/1099511627776)||32,l(e,t,r,n){for(void 0===n&&(n=[]);t>=32;t-=32)n.push(r),r=0;if(0===t)return n.concat(e);for(let s=0;s<e.length;s++)n.push(r|e[s]>>>t),r=e[s]<<32-t;const s=e.length?e[e.length-1]:0,a=Me.o(s);return n.push(Me.m(t+a&31,t+a>32?r:n.pop(),1)),n}},Le={bytes:{h(e){const t=Me.u(e)/8,r=new f(t);let n;for(let s=0;t>s;s++)3&s||(n=e[s/4]),r[s]=n>>>24,n<<=8;return r},S(e){const t=[];let r,n=0;for(r=0;r<e.length;r++)n=n<<8|e[r],3&~r||(t.push(n),n=0);return 3&r&&t.push(Me.m(8*(3&r),n)),t}}},je=class{constructor(e){const t=this;t.blockSize=512,t.F=[1732584193,4023233417,2562383102,271733878,3285377520],t.v=[1518500249,1859775393,2400959708,3395469782],e?(t.D=e.D.slice(0),t.R=e.R.slice(0),t.k=e.k):t.reset()}reset(){const e=this;return e.D=e.F.slice(0),e.R=[],e.k=0,e}update(e){const t=this;"string"==typeof e&&(e=Le.C.S(e));const r=t.R=Me.concat(t.R,e),n=t.k,s=t.k=n+Me.u(e);if(s>9007199254740991)throw new u("Cannot hash more than 2^53 - 1 bits");const a=new m(r);let i=0;for(let e=t.blockSize+n-(t.blockSize+n&t.blockSize-1);s>=e;e+=t.blockSize)t.T(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}U(){const e=this;let t=e.R;const r=e.D;t=Me.concat(t,[Me.m(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e.k/4294967296)),t.push(0|e.k);t.length;)e.T(t.splice(0,16));return e.reset(),r}M(e,t,r,n){return e>19?e>39?e>59?e>79?void 0:t^r^n:t&r|t&n|r&n:t^r^n:t&r|~t&n}L(e,t){return t<<e|t>>>32-e}T(e){const r=this,n=r.D,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let a=n[0],o=n[1],c=n[2],l=n[3],d=n[4];for(let e=0;79>=e;e++){16>e||(s[e]=r.L(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=r.L(5,a)+r.M(e,o,c,l)+d+s[e]+r.v[i.floor(e/20)]|0;d=l,l=c,c=r.L(30,o),o=a,a=t}n[0]=n[0]+a|0,n[1]=n[1]+o|0,n[2]=n[2]+c|0,n[3]=n[3]+l|0,n[4]=n[4]+d|0}},Ve={importKey:e=>new Ve.j(Le.bytes.S(e)),V(e,t,r,n){if(r=r||1e4,0>n||0>r)throw new u("invalid params to pbkdf2");const s=1+(n>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(s),w=new h(d);let f=0;const p=Me;for(t=Le.bytes.S(t),l=1;(s||1)>f;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(s||1)>f&&o<a.length;o++)w.setInt32(f,a[o]),f+=4}return d.slice(0,n/8)},j:class{constructor(e){const t=this,r=t.W=je,n=[[],[]];t.A=[new r,new r];const s=t.A[0].blockSize/32;e.length>s&&(e=(new r).update(e).U());for(let t=0;s>t;t++)n[0][t]=909522486^e[t],n[1][t]=1549556828^e[t];t.A[0].update(n[0]),t.A[1].update(n[1]),t.P=new r(t.A[0])}reset(){const e=this;e.P=new e.W(e.A[0]),e.K=!1}update(e){this.K=!0,this.P.update(e)}digest(){const e=this,t=e.P.U(),r=new e.W(e.A[1]).update(t).U();return e.reset(),r}encrypt(e){if(this.K)throw new u("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},We=typeof F!=te&&typeof F.getRandomValues==re,Ae="Invalid password",Pe="Invalid signature",Ke="zipjs-abort-check-password";function qe(e){if(We)return F.getRandomValues(e);throw new u("Crypto API not supported")}const Xe=16,Ie={name:"PBKDF2"},Ze=r.assign({hash:{name:"HMAC"}},Ie),Oe=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Ie),Ge=["deriveBits"],Je=[8,12,16],Be=[16,24,32],He=10,Ye=[0,0,0,0],Qe=typeof F!=te,Ne=Qe&&F.subtle,_e=Qe&&typeof Ne!=te,$e=Le.bytes,et=class{constructor(e){const t=this;t.q=[[[],[],[],[],[]],[[],[],[],[],[]]],t.q[0][0][0]||t.X();const r=t.q[0][4],n=t.q[1],s=e.length;let a,i,o,c=1;if(4!==s&&6!==s&&8!==s)throw new u("invalid aes key size");for(t.v=[i=e.slice(0),o=[]],a=s;4*s+28>a;a++){let e=i[a-1];(a%s===0||8===s&&a%s===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%s===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-s]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:n[0][r[t>>>24]]^n[1][r[t>>16&255]]^n[2][r[t>>8&255]]^n[3][r[255&t]]}}encrypt(e){return this.I(e,0)}decrypt(e){return this.I(e,1)}X(){const e=this.q[0],t=this.q[1],r=e[4],n=t[4],s=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(s[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,n[a]=d,l=s[c=s[o=s[d]]];let w=16843009*l^65537*c^257*o^16843008*d,u=257*s[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=u=u<<24^u>>>8,t[r][a]=w=w<<24^w>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}I(e,t){if(4!==e.length)throw new u("invalid aes block size");const r=this.v[t],n=r.length/4-2,s=[0,0,0,0],a=this.q[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let w,f,p,m=e[0]^r[0],h=e[t?3:1]^r[1],y=e[2]^r[2],b=e[t?1:3]^r[3],x=4;for(let e=0;n>e;e++)w=i[m>>>24]^o[h>>16&255]^c[y>>8&255]^l[255&b]^r[x],f=i[h>>>24]^o[y>>16&255]^c[b>>8&255]^l[255&m]^r[x+1],p=i[y>>>24]^o[b>>16&255]^c[m>>8&255]^l[255&h]^r[x+2],b=i[b>>>24]^o[m>>16&255]^c[h>>8&255]^l[255&y]^r[x+3],x+=4,m=w,h=f,y=p;for(let e=0;4>e;e++)s[t?3&-e:e]=d[m>>>24]<<24^d[h>>16&255]<<16^d[y>>8&255]<<8^d[255&b]^r[x++],w=m,m=h,h=y,y=b,b=w;return s}},tt=class{constructor(e,t){this.Z=e,this.O=t,this.G=t}reset(){this.G=this.O}update(e){return this.J(this.Z,e,this.G)}B(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}return e}H(e){0===(e[0]=this.B(e[0]))&&(e[1]=this.B(e[1]))}J(e,t,r){let n;if(!(n=t.length))return[];const s=Me.u(t);for(let s=0;n>s;s+=4){this.H(r);const n=e.encrypt(r);t[s]^=n[0],t[s+1]^=n[1],t[s+2]^=n[2],t[s+3]^=n[3]}return Me.p(t,s)}},rt=Ve.j;let nt=Qe&&_e&&typeof Ne.importKey==re,st=Qe&&_e&&typeof Ne.deriveBits==re;class at extends z{constructor({password:e,rawPassword:t,encryptionStrength:r,checkPasswordOnly:n}){super({start(){ot(this,e,t,r)},async transform(e,t){const r=this,{password:s,strength:a,Y:i,ready:o}=r;s?(await(async(e,t,r,n)=>{const s=await lt(e,t,r,ut(n,0,Je[t])),a=ut(n,Je[t]);if(s[0]!=a[0]||s[1]!=a[1])throw new u(Ae)})(r,a,s,ut(e,0,Je[a]+2)),e=ut(e,Je[a]+2),n?t.error(new u(Ke)):i()):await o;const c=new f(e.length-He-(e.length-He)%Xe);t.enqueue(ct(r,e,c,0,He,!0))},async flush(e){const{N:t,_:r,pending:n,ready:s}=this;if(r&&t){await s;const a=ut(n,0,n.length-He),i=ut(n,n.length-He);let o=ne;if(a.length){const e=pt($e,a);r.update(e);const n=t.update(e);o=ft($e,n)}const c=ut(ft($e,r.digest()),0,He);let l=n.length<He?1:0;for(let e=0;He>e;e++)l|=c[e]^i[e];if(l)throw new u(Pe);e.enqueue(o)}}})}}class it extends z{constructor({password:e,rawPassword:t,encryptionStrength:r}){let n;super({start(){ot(this,e,t,r)},async transform(e,t){const r=this,{password:n,strength:s,Y:a,ready:i}=r;let o=ne;n?(o=await(async(e,t,r)=>{const n=qe(new f(Je[t]));return wt(n,await lt(e,t,r,n))})(r,s,n),a()):await i;const c=new f(o.length+e.length-e.length%Xe);c.set(o,0),t.enqueue(ct(r,e,c,o.length,0))},async flush(e){const{N:t,_:r,pending:s,ready:a}=this;if(r&&t){await a;let i=ne;if(s.length){const e=t.update(pt($e,s));r.update(e),i=ft($e,e)}n.signature=ft($e,r.digest()).slice(0,He),e.enqueue(wt(i,n.signature))}}}),n=this}}function ot(e,t,n,s){r.assign(e,{ready:new b(t=>e.Y=t),password:dt(t,n),strength:s-1,pending:ne})}function ct(e,t,r,n,s,a){const{N:i,_:o,pending:c}=e;c.length&&(t=wt(c,t));const l=t.length-s;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,n+(l-l%Xe)),d=0;l-Xe>=d;d+=Xe){const e=pt($e,ut(t,d,d+Xe));a&&o.update(e);const s=i.update(e);a||o.update(s),r.set(ft($e,s),d+n)}return e.pending=ut(t,d),r}async function lt(e,n,s,a){e.password=null;const i=await(async(e,t,r,n,s)=>{if(!nt)return Ve.importKey(t);try{return await Ne.importKey("raw",t,r,!1,s)}catch{return nt=!1,Ve.importKey(t)}})(0,s,Ze,0,Ge),o=await(async(e,t,r)=>{if(!st)return Ve.V(t,e.salt,Oe.iterations,r);try{return await Ne.deriveBits(e,t,r)}catch{return st=!1,Ve.V(t,e.salt,Oe.iterations,r)}})(r.assign({salt:a},Oe),i,8*(2*Be[n]+2)),c=new f(o),l=pt($e,ut(c,0,Be[n])),d=pt($e,ut(c,Be[n],2*Be[n])),w=ut(c,2*Be[n]);return r.assign(e,{keys:{key:l,$:d,passwordVerification:w},N:new tt(new et(l),t.from(Ye)),_:new rt(d)}),w}function dt(e,t){return t===$?Ue(e):t}function wt(e,t){let r=e;return e.length+t.length&&(r=new f(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function ut(e,t,r){return e.subarray(t,r)}function ft(e,t){return e.h(t)}function pt(e,t){return e.S(t)}class mt extends z{constructor({password:e,rawPassword:t,passwordVerification:r,checkPasswordOnly:n}){super({start(){yt(this,e,t,r)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=bt(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new u(Ae);e=e.subarray(12)}n?t.error(new u(Ke)):t.enqueue(bt(r,e))}})}}class ht extends z{constructor({password:e,rawPassword:t,passwordVerification:r}){super({start(){yt(this,e,t,r)},transform(e,t){const r=this;let n,s;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=qe(new f(12));t[11]=r.passwordVerification,n=new f(e.length+t.length),n.set(xt(r,t),0),s=12}else n=new f(e.length),s=0;n.set(xt(r,e),s),t.enqueue(n)}})}}function yt(e,t,n,s){r.assign(e,{password:t,rawPassword:n,passwordVerification:s}),((e,t,n)=>{const s=[305419896,591751049,878082192];if(r.assign(e,{keys:s,ee:new Ce(s[0]),te:new Ce(s[2])}),n)for(let t=0;t<n.length;t++)gt(e,n[t]);else for(let r=0;r<t.length;r++)gt(e,t.charCodeAt(r))})(e,t,n)}function bt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=St(e)^t[n],gt(e,r[n]);return r}function xt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=St(e)^t[n],gt(e,t[n]);return r}function gt(e,t){let[,r]=e.keys;e.ee.append([t]);const n=~e.ee.get();r=vt(i.imul(vt(r+Ft(n)),134775813)+1),e.te.append([r>>>24]);const s=~e.te.get();e.keys=[n,r,s]}function St(e){const t=2|e.keys[2];return Ft(i.imul(t,1^t)>>>8)}function Ft(e){return 255&e}function vt(e){return 4294967295&e}const zt="Invalid uncompressed size",Dt="Invalid compressed data";class Rt extends z{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:n}){super({});const{compressed:s,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l,deflate64:d}=e,w=this;let u,f,p,m=super.readable;const y=c&&s&&!d&&(!a||o)&&!(!i||!n);a&&!o||!c||y||(u=new Te,m=Ut(m,u)),s&&(y?(p=new Et,m=Mt(m,new n("gzip")),m=Ut(m,p)):m=Tt(m,i,{level:l,chunkSize:t},n,r,n)),a&&(o?m=Ut(m,new ht(e)):(f=new it(e),m=Ut(m,f))),Ct(w,m,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=y?p.signature:new h(u.value.buffer).getUint32(0)),w.signature=e})}}class Et extends z{constructor(){let e,t=10,r=new f(0);super({transform(e,n){if(t){const r=i.min(t,e.length);if(t-=r,!(e=e.subarray(r)).length)return}const s=r.length+e.length;if(8>=s){const t=new f(s);return t.set(r),t.set(e,r.length),void(r=t)}const a=s-8,o=new f(a),c=i.min(a,r.length);o.set(r.subarray(0,c),0),a>c&&o.set(e.subarray(0,a-c),c),n.enqueue(o);const l=new f(8),d=r.length-c;d&&l.set(r.subarray(c),0),l.set(e.subarray(a-c),d),r=l},flush(){const t=new h(r.buffer,r.byteOffset,r.byteLength);e.signature=t.getUint32(0,!0),e.uncompressedSize=t.getUint32(4,!0)}}),e=this}}class kt extends z{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:n}){super({});const{zipCrypto:s,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let w,f,p=super.readable;a&&(s?p=Ut(p,new mt(e)):(f=new at(e),p=Ut(p,f))),c&&(p=Tt(p,l,{chunkSize:t,deflate64:d},n,r,n),p=(e=>{const t=e.getReader();return new D({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new u(Dt);throw t.cause=e,t}const{value:n,done:s}=r;s?e.close():e.enqueue(n)},cancel:e=>t.cancel(e)})})(p)),a&&!s||!i||(w=new Te,p=Ut(p,w)),Ct(this,p,()=>{if((!a||s)&&i){const e=new h(w.value.buffer);if(o!=e.getUint32(0,!1))throw new u(Pe)}})}}function Ct(e,t,n){t=Ut(t,new z({flush:n})),r.defineProperty(e,"readable",{get:()=>t})}function Tt(e,t,r,n,s,a){const i=t&&n?n:s||a,o=r.deflate64?"deflate64-raw":"deflate-raw";let c;try{c=new i(o,r)}catch(e){if(!t)throw e;if(s)c=new s(o,r);else{if(!a)throw e;c=new a(o,r)}}return Mt(e,c)}function Ut(e,t){return e.pipeThrough(t)}function Mt(e,t){const r=t.writable.getWriter(),n=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await n.read();if(e.done){await r.close();break}await r.write(e.value)}}catch(e){await(async(e,t)=>{try{await e.abort(t)}catch{}})(r,e),await(async(e,t)=>{try{await e.cancel(t)}catch{}})(n,e)}})(),t.readable}const Lt="data",jt="deflate",Vt="inflate";class Wt extends z{constructor(e,t){super({});const n=this,{codecType:s}=e;let a;s.startsWith(jt)?a=Rt:s.startsWith(Vt)&&(a=kt),n.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new z({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(n,{inputSize:i})}}),d=new z({transform(t,r){if(t&&t.length&&(r.enqueue(t),n.outputSize+=t.length,e.outputSize!==$&&n.outputSize>e.outputSize))throw new u(zt)},flush(){const{signature:e}=o;r.assign(n,{signature:e,inputSize:i})}});r.defineProperty(n,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class At extends z{constructor(e){let t;1>e&&(e=65536),super({transform:(r,n)=>{if(t){const e=new f(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}let s=0;for(;r.length-s>e;)n.enqueue(r.slice(s,s+e)),s+=e;t=s?r.slice(s):r},flush(e){t&&t.length&&e.enqueue(t)}})}}const Pt={type:"module"},Kt="error";let qt,Xt,It,Zt,Ot=!0;try{Ot=typeof structuredClone==re&&structuredClone(new DOMException("","AbortError")).code!==$}catch{}class Gt{constructor(e,{readable:t,writable:n},{options:s,config:a,re:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:w}=i;return r.assign(e,{ne:!0,se:(e.se||0)+1,readable:t.pipeThrough(new At(le(a))).pipeThrough(new Jt(i),{signal:w}),writable:n,options:r.assign({},s),workerURI:l,transferStreams:c,terminate:()=>new b(t=>{const{ae:r,ne:n}=e;r?(n?e.ie=t:(r.terminate(),t()),e.oe=null):t()}),ce(){if(e.ne){const{ie:t}=e;t&&(e.ie=null,e.le=!0,e.ae.terminate(),t()),e.ne=!1,d(e)}}}),qt===$&&(qt=typeof T!=te),(o&&qt?Yt:Ht)(e,a)}}class Jt extends z{constructor({onstart:e,onprogress:t,size:r,onend:n}){let s=0;super({async start(){e&&await Bt(e,r)},async transform(e,n){s+=e.length,t&&await Bt(t,s,r),n.enqueue(e)},async flush(){n&&await Bt(n,s)}})}}async function Bt(e,...t){try{await e(...t)}catch{}}function Ht(e,t){return{run:()=>(async({options:e,readable:t,writable:r,ce:n},s)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{const t=e.codecType.startsWith(jt)?s.CompressionStreamZlib:s.DecompressionStreamZlib;t&&!t.de||(e.useCompressionStream=!0)}a=new Wt(e,s),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:n,inputSize:i,outputSize:o}=a;return{signature:n,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{n()}})(e,t)}}function Yt(e,t){const{baseURI:n,chunkSize:s}=t;let{wasmURI:a}=t;if(!e.oe){let i;typeof a==re&&(a=a());try{i=Nt(e.workerURI,n,e)}catch{return qt=!1,Ht(e,t)}r.assign(e,{ae:i,le:!1,oe:{run:()=>(async(e,t)=>{let n,s;const a=new b((e,t)=>{n=e,s=t});r.assign(e,{reader:null,writer:null,we:n,ue:s,result:a});const{readable:i,options:o}=e,{writable:c,closed:l,fe:d}=(e=>{const t=new AbortController,{writable:r,readable:n}=new z,s=n.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return s.catch(()=>{}),{writable:r,closed:s,fe:()=>t.abort()}})(e.writable);let w;try{w=$t({type:"start",options:o,config:t,readable:i,writable:c},e)}catch(t){d();try{await l}catch{}throw e.ce(),t}w||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});try{const e=await a;return await u(),await l,e}catch(e){await u(),d();try{await l}catch{}throw e}async function u(){if(!w&&!c.locked)try{await c.getWriter().close()}catch{}}})(e,{chunkSize:s,wasmURI:a,baseURI:n})}})}return e.oe}function Qt(e){const{ae:t}=e;if(t)try{t.terminate()}catch{}e.oe=null}function Nt(e,t,n,s,a=!0){let i,o,c;if(It===$||Xt!==e){const r=typeof e==re;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){s===$&&(s=!1),s&&(c=Pt);try{i=new T(o,c)}catch(a){if(d)try{w.revokeObjectURL(o)}catch{}if(r&&d)return Nt(e,t,n,s,!1);if(s)throw a;return Nt(e,t,n,!0,!1)}}else{s===$&&(s=!0),s&&(c=Pt);try{o=new w(o,t)}catch{}try{i=new T(o,c)}catch(r){if(s)throw r;return Nt(e,t,n,!1,a)}}Xt=e,It=o,Zt=c}else i=new T(It,Zt);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:n,value:s,messageId:a,result:i,error:o}=e,{reader:c,writer:l,we:d,ue:w,ce:p,se:m}=t,h=()=>t.se!=m;try{if(o){const{message:e,stack:t,code:n,name:s,outputSize:a}=o,i=new u(e);r.assign(i,{stack:t,code:n,name:s,outputSize:a}),y(i)}else{if("pull"==n){const{value:e,done:r}=await c.read();h()||$t({type:Lt,value:e,done:r,messageId:a},t)}n==Lt&&(await l.ready,await l.write(new f(s)),h()||$t({type:"ack",messageId:a},t)),"close"==n&&y(null,i)}}catch(o){h()||(Qt(t),y(o))}function y(e,t){h()||(e?w(e):d(t),l&&l.releaseLock(),p())}})(e,n)),i.addEventListener(Kt,e=>_t(e,n)),i.addEventListener("messageerror",e=>_t(e,n)),i}function _t(e,t){e.preventDefault&&e.preventDefault();const{ue:r,writer:n,ce:s}=t;Qt(t),r&&(r(e.error||new u(e.message||Kt)),n&&n.releaseLock(),s())}function $t(e,{ae:t,writer:r,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r.byteOffset||r.byteLength!=r.buffer.byteLength?new f(r):r,i.push(e.value.buffer)),n&&Ot?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{Ot=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let er=[];const tr=[];let rr,nr,sr=0;async function ar(e,t){const{options:r,config:n}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:w,maxWorkers:u}=n;t.transferStreams=a||a===$;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===$&&n.useWebWorkers),t.workerURI=t.useWebWorkers&&w?w:$,r.useCompressionStream=o||o===$&&n.useCompressionStream,(await(async()=>{const r=er.find(e=>!e.ne);if(r)return dr(r),new Gt(r,e,t,p);if(er.length<u){const r={pe:sr};return sr++,er.push(r),new Gt(r,e,t,p)}return new b(r=>{tr.push({resolve:r,stream:e,me:t}),nr=n.workerStarvationTimeout,ir()})})()).run();function p(e){if(or(),tr.length){const[{resolve:t,stream:r,me:n}]=tr.splice(0,1);t(new Gt(e,r,n,p)),ir()}else e.ae?(dr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:n}=r;s.isFinite(n)&&n>=0&&(e.le?e.le=!1:e.he=setTimeout(async()=>{er=er.filter(t=>t!=e);try{await e.terminate()}catch{}},n))})(e,t)):er=er.filter(t=>t!=e)}}function ir(){!rr&&tr.length&&s.isFinite(nr)&&nr>=0&&(rr=setTimeout(cr,nr))}function or(){rr&&(clearTimeout(rr),rr=null)}function cr(){if(rr=null,tr.length){const[{resolve:e,stream:t,me:n}]=tr.splice(0,1),s=r.assign({},n,{useWebWorkers:!1,workerURI:$});e(new Gt({},t,s,lr)),ir()}}function lr(){or(),ir()}function dr(e){const{he:t}=e;t&&(clearTimeout(t),e.he=null)}const wr="HTTP error ",ur="HTTP Range not supported",fr="Writer iterator completed too soon",pr="Writer not initialized",mr="Content-Range",hr="Range",yr="GET",br="bytes",xr="writable";class gr{constructor(){this.size=0}init(){this.initialized=!0}}class Sr extends gr{get readable(){return this.ye()}ye({offset:e=0,size:t,diskNumberStart:r,chunkSize:n=65536}={}){const s=this;let a=0;return new D({async pull(o){const c=t===$?n:i.min(n,t-a),l=await Or(s,e+a,c,r);o.enqueue(l),a+n>t||t===$&&!l.length&&c?o.close():a+=n}})}}class Fr extends gr{constructor(){super();const e=this,t=new R({write(t){if(!e.initialized)throw new u(pr);return e.writeUint8Array(t)}});r.defineProperty(e,xr,{get:()=>t})}writeUint8Array(){}}class vr extends Sr{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,n=e+t,s=e||n<r.size?r.blob.slice(e,n):r.blob;let a=await s.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,n)),new f(a)}}class zr extends gr{constructor(e){super();const t=this,n=new z,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(t,xr,{get:()=>n.writable}),t.blob=new d(n.readable,{headers:s}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class Dr extends Sr{constructor(e,t){super(),Er(this,e,t)}async init(){await kr(this,Wr,Mr),super.init()}readUint8Array(e,t){return Cr(this,e,t,Wr,Mr)}}class Rr extends Sr{constructor(e,t){super(),Er(this,e,t)}async init(){await kr(this,Ar,Lr),super.init()}readUint8Array(e,t){return Cr(this,e,t,Ar,Lr)}}function Er(e,t,n){const{preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c}=n;delete(n=r.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.useXHR,delete n.fetch,r.assign(e,{url:t,options:n,preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c})}async function kr(e,t,r){const{url:n,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ce(),{protocol:r}=new w(e,t);return"http:"==r||"https:"==r})(n)&&(i||o)&&(void 0===a||a)){const n=await t(yr,e,Tr(e,c?-22:void 0)),a=n.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==br))throw new u(ur);{if(c){const t=new f(await n.arrayBuffer());206==n.status&&t.length==I&&(e.be=t)}let a;const i=n.headers.get(mr);if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=s(t))}}a===$?await Vr(e,t,r):e.size=a}}else await Vr(e,t,r)}async function Cr(e,t,r,n,a){const{useRangeHeader:i,forceRangeRequests:o,be:c,size:l,options:d}=e;if(i||o){if(c&&t==l-I&&r==I)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await n(yr,e,Tr(e,t,r));if(206!=a.status)throw new u(ur);const i=a.headers.get(mr);if(i){const e=s(i.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=t)throw new u(ur)}const o=new f(await a.arrayBuffer());if(o.length!=r)throw new u(ur);return o}return ne}{const{data:n}=e;return n||await a(e,d),new f(e.data.subarray(t,t+r))}}function Tr(e,t=0,n=1){return r.assign({},Ur(e),{[hr]:br+"="+(0>t?t:t+"-"+(t+n-1))})}function Ur({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Mr(e){await jr(e,Wr)}async function Lr(e){await jr(e,Ar)}async function jr(e,t){const r=await t(yr,e,Ur(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function Vr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const n=await t("HEAD",e,Ur(e)),a=n.headers.get("Content-Length");a&&!n.headers.get("Content-Encoding")?e.size=s(a):await r(e,e.options)}}async function Wr(e,{fetch:t=fetch,options:n,url:s},a){const i=await t(s,r.assign({},n,{method:e,headers:a}));if(400>i.status)return i;throw 416==i.status?new u(ur):new u(wr+(i.statusText||i.status))}function Ar(e,{url:t},n){return new b((s,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),s({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new u(ur):new u(wr+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new u("Network error")),!1),i.open(e,t),n)for(const e of r.entries(n))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class Pr extends Sr{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new Rr(e,t):new Dr(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Kr extends Sr{constructor(e){super(),this.xe=e}async init(){const e=this,{xe:t}=e;e.ge=0,e.Se=0,await b.all(t.map(async(r,n)=>{await Zr(r),n!=t.length-1&&(e.Se+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const n=this,{xe:s}=this;let a,o=r;-1==o&&(o=s.length-1);let c=e;for(;s[o]&&c>=s[o].size;)c-=s[o].size,o++;const l=s[o];if(l){const s=l.size;if(c+t>s){const i=s-c;a=new f(t);const o=await Or(l,c,i);a.set(o,0);const d=await n.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await Or(l,c,t)}else a=ne;return n.ge=i.max(o,n.ge),a}}class qr extends gr{constructor(e,t=4294967295){super();const n=this;let s,a,i;r.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new R({async write(t){const{availableSize:r}=n;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),n.diskOffset+=s.size,n.diskNumber++,i=null,n.availableSize=n.maxSize,t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new u(fr);s=r,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await Zr(s),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){i&&(await i.ready,await l())},async abort(e){i&&await i.abort(e)}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),s.size+=t,n.availableSize-=t)}async function l(){await i.close()}r.defineProperty(n,xr,{get:()=>o})}}class Xr{constructor(e){return t.isArray(e)&&(e=new Kr(e)),e instanceof D&&(e={readable:e}),e}}class Ir{constructor(e){return e.writable===$&&typeof e.next==re&&(e=new qr(e)),e instanceof R&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof qr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:ee,maxSize:ee}),e}}async function Zr(e,t){if(!e.init||e.initialized)return b.resolve();await e.init(t)}function Or(e,t,r,n){return e.readUint8Array(t,r,n)}const Gr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Jr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=Gr[e[r]];return t}})(e):new g(t,{ignoreBOM:!0}).decode(e)}const Br="filename",Hr="rawFilename",Yr="comment",Qr="rawComment",Nr="uncompressedSize",_r="compressedSize",$r="offset",en="diskNumberStart",tn="lastModDate",rn="rawLastModDate",nn="lastAccessDate",sn="creationDate",an="rawCreationDate",on="internalFileAttributes",cn="externalFileAttributes",ln="msdosAttributesRaw",dn="msdosAttributes",wn="msDosCompatible",un="zip64",fn="encrypted",pn="version",mn="versionMadeBy",hn="zipCrypto",yn="directory",bn="executable",xn="compressionMethod",gn="signature",Sn="extraField",Fn="unixMode",vn="setuid",zn="setgid",Dn="sticky",Rn=[Br,Hr,Nr,_r,tn,rn,Yr,Qr,nn,sn,an,$r,en,on,cn,ln,dn,wn,un,fn,pn,mn,hn,yn,bn,xn,gn,Sn,"extraFieldUnix","extraFieldInfoZip","uid","gid",Fn,vn,zn,Dn,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class En{constructor(e){Rn.forEach(t=>this[t]=e[t])}}const kn="password",Cn="rawPassword",Tn="passThrough",Un="signal",Mn="checkAmbiguity",Ln="useWebWorkers",jn="useCompressionStream",Vn="transferStreams",Wn="preventClose",An="offset",Pn="strictness",Kn="strict",qn="tolerant",Xn="File format is not recognized",In="End of central directory not found",Zn="End of Zip64 central directory locator not found",On="Central directory header not found",Gn="Local file header not found",Jn="Zip64 extra field not found",Bn="File contains encrypted entry",Hn="Encryption method not supported",Yn="Compression method not supported",Qn="Split zip file",Nn="Overlapping entry found",_n="Ambiguous archive",$n="utf-8",es="cp437",ts=[[Nr,M],[_r,M],[$r,M],[en,L]],rs={[L]:{Fe:Ds,bytes:4},[M]:{Fe:Rs,bytes:8}};class ns{constructor(e,t={}){r.assign(this,{reader:new Xr(e),options:t,config:ce(),ve:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:s}=t;if(await Zr(n),n.size!==$&&n.readUint8Array||(n=new vr(await new d(n.readable).blob()),await Zr(n)),n.size<I)throw new u(Xn);const a=ds(gs(t,e,Pn),gs(t,e,Mn)),o=a==Kn,c=a!=qn,w=((e,t)=>e!==$?e:t==Kn?0:t==qn?1/0:L)(gs(t,e,"maxAppendedDataSize"),a),{ze:f,De:p}=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,65557),a={count:ws};let o,c,l=0;for await(const[r,i,d,w,u]of ms(e,s)){const s=zs(r,w+20);if(u+I+s==n){const s=await ys(e,r,i,w,u,n,a);if(s==ps){if(o||(o=hs(d,w,u)),l++,!t||l>1)break}else s!=fs||c||(c=hs(d,w,u))}}return o||(o=c),o||(o=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,t==1/0?n:65557+t);let a,o;for await(const[t,i,c,l,d]of ms(e,s)){const s=hs(c,l,d);a||(a=s);const w=await ys(e,t,i,l,d,n,r);if(w==ps)return s;w!=fs||o||(o=s)}return o||a})(e,r,a)),{ze:o,De:l}})(n,c,w);if(!f)throw Ds(Es(await Or(n,0,4)))==W?new u(Qn):new u(In);c&&p>1&&xs("multiple end of central directory records");const m=Es(f);let h=Ds(m,12),y=Ds(m,16);const x=f.offset,g=zs(m,20),S=x+I+g;n.size-S>w&&xs("appended data");let F=zs(m,4);const v=n.ge||0;let D,R,E=zs(m,6),k=zs(m,10),C=0;if(y==M||h==M||k==L||E==L){const e=f.offset<Z?ne:await Or(n,f.offset-Z,Z),t=Es(e);if(e.length==Z&&Ds(t,0)==X){y=Rs(t,8);let e=await Or(n,y,56,-1),r=Es(e);const s=f.offset-Z-56-(n.Se||0);if((56>e.length||Ds(r,0)!=q)&&y!=s&&s>=0){const t=y;y=s,y>t&&(C=y-t),e=await Or(n,y,56,-1),r=Es(e)}if(56>e.length||Ds(r,0)!=q)throw new u(Zn);R=!0,F==L?F=Ds(r,16):o&&F!=Ds(r,16)&&xs("mismatched zip64 end of central directory record"),E==L?E=Ds(r,20):o&&E!=Ds(r,20)&&xs("mismatched zip64 end of central directory record"),k==L?k=Rs(r,32):o&&k!=Rs(r,32)&&xs("mismatched zip64 end of central directory record"),h==M?h=Rs(r,40):o&&h!=Rs(r,40)&&xs("mismatched zip64 end of central directory record"),y=Rs(r,48)+C}}const T=h,U=f.offset-(R?76:0);if(y<n.size||(C=n.size-y-h-I,y=n.size-h-I),v!=F)throw new u(Qn);if(0>y)throw new u(Xn);let V=0,A=await Or(n,y,h,E),K=Es(A);if(h){if(4>A.length)throw new u(Xn);const e=U-h-(n.Se||0);if(y!=e&&E==F){let t=!(Ds(K,V)==P);if(t||0>e||e+4>n.size||(t=Ds(Es(await Or(n,e,4,E)),0)==P),t){const t=y;y=e,y>t&&(C+=y-t),A=await Or(n,y,h,E),K=Es(A)}}}const O=U-y-(n.Se||0);if(h==O||0>O||E!=F||(h=O,A=await Or(n,y,h,E),K=Es(A)),0>y||y>=n.size)throw new u(Xn);D=y;const G=gs(t,e,"filenameEncoding"),Q=gs(t,e,"commentEncoding"),N=o?new l:$;let _;for(let a=0;k>a;a++){const c=new ss(n,s,t.options);if(V+46>A.length||Ds(K,V)!=P)throw new u(On);as(c,K,V+6);const l=!!c.bitFlag.languageEncodingFlag,w=V+46,f=w+c.filenameLength,p=f+c.extraFieldLength,m=zs(K,V+4),h=!(m>>8),y=m>>8==3,x=A.subarray(w,f),g=zs(K,V+32),S=p+g,F=A.subarray(p,S),v=l,R=l,E=Ds(K,V+38),T=E&j,U={readOnly:!!(1&T),hidden:!!(2&T),system:!!(4&T),directory:!!(16&T),archive:!!(32&T)},M=Ds(K,V+42),W=gs(t,e,"decodeText")||Jr,q=v?$n:G||es,X=R?$n:Q||es;let I=W(x,q);I===$&&(I=Jr(x,q));let Z=W(F,X);Z===$&&(Z=Jr(F,X)),r.assign(c,{index:a,versionMadeBy:m,msDosCompatible:h,compressedSize:0,uncompressedSize:0,Re:g,offset:M,diskNumberStart:zs(K,V+34),internalFileAttributes:zs(K,V+36),externalFileAttributes:E,msdosAttributesRaw:T,msdosAttributes:U,rawFilename:x,filenameUTF8:v,commentUTF8:R,rawExtraField:A.subarray(f,p),rawComment:F,filename:I,comment:Z}),is(c,c,K,V+6),c.offset+=C,D=i.min(c.offset,D),o&&(N.has(c.filename)&&(_=!0),N.add(c.filename));const O=c.externalFileAttributes>>16&L;c.unixMode===$&&16877&O&&(c.unixMode=O);const ee=!!(c.unixMode&B),te=!!(c.unixMode&H),re=!!(512&c.unixMode),ne=c.unixMode!==$?!!(73&c.unixMode):y&&!!(73&O),se=c.unixMode!==$&&(61440&c.unixMode)==J,ae=(61440&O)==J;r.assign(c,{setuid:ee,setgid:te,sticky:re,unixExternalUpper:O,internalFileAttribute:c.internalFileAttributes,externalFileAttribute:c.externalFileAttributes,executable:ne,directory:se||ae||h&&U.directory||c.filename.endsWith(Y)&&!c.uncompressedSize,zipCrypto:c.encrypted&&!c.extraFieldAES});const ie=new En(c);ie.getData=(e,r)=>c.getData(e,ie,t.ve,r),ie.arrayBuffer=async e=>{const r=new z,[n]=await b.all([new d(r.readable).arrayBuffer(),c.getData(r,ie,t.ve,e)]);return n},V=S;const{onprogress:oe}=e;if(oe)try{await oe(a+1,k,new En(c))}catch{}yield ie}o&&V!=T&&xs("trailing central directory data"),_&&xs("duplicate filename"),o&&(C||k&&D>0)&&xs("prepended data");const ee=gs(t,e,"extractPrependedData"),te=gs(t,e,"extractAppendedData");return ee&&(t.prependedData=D>0?await Or(n,0,D):ne),t.comment=g?await Or(n,x+I,g):ne,te&&(t.appendedData=S<n.size?await Or(n,S,n.size-S):ne),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class ss{constructor(e,t,n){r.assign(this,{reader:e,config:t,options:n})}async getData(e,t,r,n={}){const s=this,{reader:a,index:o,offset:c,diskNumberStart:l,extraFieldAES:d,extraFieldZip64:w,compressionMethod:f,config:p,bitFlag:m,signature:h,rawLastModDate:y,uncompressedSize:b,compressedSize:x}=s,{dataDescriptor:g}=m,S=t.localDirectory={},F=await Or(a,c,Q,l),v=Es(F);let z=gs(s,n,kn),D=gs(s,n,Cn);const E=gs(s,n,Tn);if(z=z&&z.length&&z,D=D&&D.length&&D,d&&99!=d.originalCompressionMethod)throw new u(Yn);if(0!=f&&8!=f&&9!=f&&!E)throw new u(Yn);if(F.length<Q||Ds(v,0)!=V)throw new u(Gn);as(S,v,4);const{extraFieldLength:k,filenameLength:C}=S,T=ds(gs(s,n,Pn),gs(s,n,Mn))==Kn;let U=ne;if(T&&(C||k)){const e=await Or(a,c+Q,C+k,l);U=e.subarray(0,C),S.rawExtraField=e.subarray(C)}else S.rawExtraField=k?await Or(a,c+Q+C,k,l):ne;is(s,S,v,4,!0),T&&((e,t,r)=>{const{rawFilename:n}=e;(r.length!=n.length||r.some((e,t)=>e!=n[t]))&&xs("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&xs("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&xs("mismatched local file header (compression method)"),t.bitFlag.dataDescriptor||!(t.signature||t.compressedSize||t.uncompressedSize)||t.signature==e.signature&&t.compressedSize==e.compressedSize&&t.uncompressedSize==e.uncompressedSize||xs("mismatched local file header (signature or sizes)")})(s,S,U);const{lastAccessDate:M,creationDate:L}=S;M&&(t.lastAccessDate=M),L&&(t.creationDate=L);const W=s.encrypted&&S.encrypted&&!E,P=W&&!d;if(E||(t.zipCrypto=P),W){if(!P&&d.strength===$)throw new u(Hn);if(!z&&!D)throw new u(Bn)}const K=c+Q+C+k,q=x,X=a.ye({offset:K,size:q,diskNumberStart:l,chunkSize:le(p)}),I=gs(s,n,Un),Z=gs(s,n,"checkPasswordOnly");let O=gs(s,n,"checkOverlappingEntry");const G=gs(s,n,"checkOverlappingEntryOnly");G&&(O=!0);const{onstart:J,onprogress:B,onend:H}=n,Y=9==f;let N=gs(s,n,jn);Y&&(N=!1);const _={options:{codecType:Vt,password:z,rawPassword:D,zipCrypto:P,encryptionStrength:d&&d.strength,signed:gs(s,n,"checkSignature")&&!E,passwordVerification:P&&(g?y>>>8&j:h>>>24&j),outputSize:E?x:b,signature:h,compressed:0!=f&&!E,encrypted:W,useWebWorkers:gs(s,n,Ln),useCompressionStream:N,transferStreams:gs(s,n,Vn),deflate64:Y,checkPasswordOnly:Z},config:p,re:{signal:I,size:q,onstart:J,onprogress:B,onend:H}};let ee;O&&await(async({reader:e,Ee:t,index:r,offset:n,diskNumberStart:s,signature:a,compressedSize:o,uncompressedSize:c,ke:l,dataDescriptor:d,extraFieldZip64:w,ve:f})=>{let p=0;if(s&&e.xe)for(let t=0;t<i.min(s,e.xe.length);t++)p+=e.xe[t].size;let m=0;if(d&&(m=w?20:12),m){const r=await Or(e,l+o,m+4,s);if(r.length==m+4&&Ds(Es(r),0)==A){const e=Ds(Es(r),4);let n,s;w?(n=Rs(Es(r),8),s=Rs(Es(r),16)):(n=Ds(Es(r),8),s=Ds(Es(r),12)),(t.encrypted&&!t.zipCrypto||e==a)&&n==o&&s==c&&(m+=4)}}const h={start:p+n,end:p+l+o+m,Ee:t};for(const[e,t]of f)if(e!=r&&h.start<t.end&&t.start<h.end){const e=new u(Nn);throw e.Ce=t.Ee,e}f.set(r,h)})({reader:a,Ee:t,index:o,offset:c,diskNumberStart:l,signature:h,compressedSize:x,uncompressedSize:b,ke:K,dataDescriptor:g||S.bitFlag.dataDescriptor,extraFieldZip64:w||S.extraFieldZip64,ve:r});try{if(!G){Z&&(e=new R),e=new Ir(e),await Zr(e,E?x:b),({writable:ee}=e);const{outputSize:t}=await ar({readable:X,writable:ee},_);if(e.size+=t,t!=(E?x:b))throw new u(zt)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!Z||t.message!=Ke)throw t}finally{gs(s,n,Wn)||!ee||ee.locked||await ee.getWriter().close()}return Z||G?$:e.getData?e.getData():ee}}function as(e,t,n){const s=e.rawBitFlag=zs(t,n+2),a=!(1&~s),i=Ds(t,n+6);r.assign(e,{encrypted:a,version:zs(t,n),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:(s&G)==G},rawLastModDate:i,lastModDate:Ss(i),filenameLength:zs(t,n+22),extraFieldLength:zs(t,n+24)})}function is(e,t,n,s,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Es(new f(i));let w=0;try{for(;w<i.length;){const e=zs(d,w),t=zs(d,w+2);l.set(e,{type:e,data:i.slice(w+4,w+4+t)}),w+=4+t}}catch{}const p=zs(n,s+4);r.assign(t,{signature:Ds(n,s+10),compressedSize:Ds(n,s+14),uncompressedSize:Ds(n,s+18)});const m=l.get(1);m&&(((e,t)=>{t.zip64=!0;const r=Es(e.data),n=ts.filter(([e,r])=>t[e]==r),s=n.reduce((e,[,t])=>e+rs[t].bytes,0);if(e.data.length<s)throw new u(Jn);for(let s=0,a=0;s<n.length;s++){const[i,o]=n[s],c=rs[o];t[i]=e[i]=c.Fe(r,a),a+=c.bytes}})(m,t),t.extraFieldZip64=m);const h=l.get(28789);h&&(os(h,Br,Hr,t,e),t.extraFieldUnicodePath=h);const y=l.get(25461);y&&(os(y,Yr,Qr,t,e),t.extraFieldUnicodeComment=y);const b=l.get(39169);b&&b.data.length>=7?(((e,t,n)=>{const s=Es(e.data),a=vs(s,4);r.assign(e,{Te:vs(s,0),vendorId:vs(s,2),strength:a,originalCompressionMethod:n,compressionMethod:zs(s,5)}),t.compressionMethod=e.compressionMethod})(b,t,p),t.extraFieldAES=b):t.compressionMethod=p;const x=l.get(10);x&&(((e,t)=>{const n=Es(e.data);let s,a=4;try{for(;a<e.data.length&&!s;){const t=zs(n,a),r=zs(n,a+2);1==t&&(s=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(s&&24==s.length){const n=Es(s),a=n.getBigUint64(0,!0),i=n.getBigUint64(8,!0),o=n.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Fs(a),lastAccessDate:Fs(i),creationDate:Fs(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(x,t),t.extraFieldNTFS=x);const g=l.get(30805);if(g)cs(g,t,!1),t.extraFieldUnix=g;else{const e=l.get(30837);e&&(cs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(O);S&&(((e,t,r)=>{if(!e.data.length)return;const n=Es(e.data),s=vs(n,0),a=[],i=[];r?(1&~s||(a.push(tn),i.push(rn)),2&~s||(a.push(nn),i.push("rawLastAccessDate")),4&~s||(a.push(sn),i.push(an))):5>e.data.length||(a.push(tn),i.push(rn));let c=1;a.forEach((r,s)=>{if(e.data.length>=c+4){const a=Ds(n,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[s];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const F=l.get(6534);F&&(t.extraFieldUSDZ=F)}function os(e,t,n,s,a){if(5>e.data.length)return void(e.valid=!1);const i=Es(e.data),o=new Ce;o.append(a[n]);const c=Es(new f(4));c.setUint32(0,o.get(),!0);const l=Ds(i,1);r.assign(e,{version:vs(i,0),[t]:Jr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Ds(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function cs(e,t,n){try{const s=Es(new f(e.data));let a,i;if(n){let t=0;const n=vs(s,t++),o=vs(s,t++);a=ls(e.data.subarray(t,t+o)),t+=o;const c=vs(s,t++);i=ls(e.data.subarray(t,t+c)),r.assign(e,{version:n,uid:a,gid:i})}else 4>e.data.length||(a=zs(s,0),i=zs(s,2),r.assign(e,{uid:a,gid:i}));a!==$&&(t.uid=a),i!==$&&(t.gid=i)}catch{}}function ls(e){const t=new f(4);return t.set(e,0),new h(t.buffer,t.byteOffset,4).getUint32(0,!0)}function ds(e,t){return e===$?t?Kn:"balanced":e}const ws=64,us=0,fs=1,ps=2;async function*ms(e,t){const r=e.size-t,n=await Or(e,r,t),s=Es(n);for(let e=n.length-I;e>=0;e--)Ds(s,e)==K&&(yield[s,r,n,e,r+e])}function hs(e,t,r){return{offset:r,buffer:e.slice(t,t+I).buffer}}async function ys(e,t,r,n,s,a,i){const o=zs(t,n+10),c=Ds(t,n+12),l=Ds(t,n+16);if(o==L||c==M||l==M)return await bs(e,t,r,s-Z,a,i)==X?ps:us;if(!o&&!c)return fs;for(const n of[s-c,l])if(await bs(e,t,r,n,a,i)==P)return ps;return us}async function bs(e,t,r,n,s,a){return 0>n||n+4>s?$:r>n?a.count>0?(a.count--,Ds(Es(await Or(e,n,4)),0)):$:Ds(t,n-r)}function xs(e){const t=new u(_n);throw t.reason=e,t}function gs(e,t,r){return t[r]===$?e.options[r]:t[r]}function Ss(e){const t=(4294901760&e)>>16,r=e&L;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function Fs(e){return new o(s(e/a(1e4)-a(116444736e5)))}function vs(e,t){return e.getUint8(t)}function zs(e,t){return e.getUint16(t,!0)}function Ds(e,t){return e.getUint32(t,!0)}function Rs(e,t){return s(e.getBigUint64(t,!0))}function Es(e){return new h(e.buffer,e.byteOffset,e.byteLength)}const ks="File already exists",Cs="Zip file comment exceeds 64KB",Ts="File entry comment exceeds 64KB",Us="File entry name exceeds 64KB",Ms="Version exceeds 65535",Ls="The strength must equal 1, 2, or 3",js="Extra field type exceeds 65535",Vs="Extra field data exceeds 64KB",Ws=-2147483648,As=2147483647,Ps="Zip64 is not supported (set the 'zip64' option to 'true')",Ks="Undefined uncompressed size",qs="Undefined reader",Xs="Zip file not empty",Is=new f([7,0,2,0,65,69,3,0,0]),Zs="infozip",Os="unix";let Gs=0;const Js=[];class Bs{constructor(e,t={}){const n=(e=new Ir(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==ee&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==ee;r.assign(this,{writer:e,Ue:n,options:t,config:ce(),files:new c,Me:new l,offset:t[An]===$?e.size||e.writable.size||0:t[An],Le:t[An]===$?0:t[An]-(e.size||e.writable.size||0),je:new l,Ve:0,We:$})}async prependZip(e){if(this.Me.size)throw new u(Xs);e=new Xr(e),await Zr(e);const t=new ns(e.readable),n=await t.getEntries();await t.close(),await Zr(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.Me=new l(n.map(e=>e.filename)),this.files=new c(n.map(e=>{const{version:t,rawLastModDate:n,lastAccessDate:s,creationDate:a,rawFilename:i,bitFlag:o,encrypted:c,uncompressedSize:l,compressedSize:d,diskOffset:w,diskNumber:u,zip64:f}=e;let{compressionMethod:p,Ae:m,Pe:h,Ke:y,qe:b,Xe:x,rawExtraField:g}=e;const{level:S,languageEncodingFlag:F,dataDescriptor:v}=o;m=m||ne,h=h||ne,y=y||ne,b=b||ne,x=x||ne,g=g||ne,e.extraFieldAES&&(p=99);const z=wa(m,h,y,b,x,g),D=f&&l>=M,R=f&&d>=M,E=-7&fa(S,F,v,c,p)|S<<1,{Ie:k,Ze:C}=ua({version:t,bitFlag:E,compressionMethod:p,uncompressedSize:l,compressedSize:d,rawLastModDate:n,rawFilename:i,Oe:R,Ge:D,extraFieldLength:z}),{signature:T}=e;return T!==$&&oa(C,10,T),r.assign(e,{Ge:D,Oe:R,Je:f&&this.offset-w>=M,Be:f&&u>=L,Ae:m,Pe:h,Ke:y,qe:b,Xe:x,rawExtraField:g,extendedTimestamp:y.length>0||b.length>0,He:1+(s?2:0)+(a?4:0),Ie:k,Ze:C}),[e.filename,e]}))}async add(e="",t,n={}){const s=this;n=r.assign({},n);const{je:i,config:c}=s;let l,d;Gs<c.maxWorkers?Gs++:await new b(e=>Js.push(e));try{if(e=e.trim(),sa(s,n,yn)&&!e.endsWith(Y)&&(e+=Y),s.Me.has(e))throw new u(ks);return s.Me.add(e),d=!0,l=(async(e,t,n,s)=>{const i=((e,t,r)=>{t=t.trim();let n=sa(e,r,wn),s=sa(e,r,mn,n?20:768);const a=sa(e,r,bn),i=sa(e,r,"uid"),o=sa(e,r,"gid");let c=sa(e,r,Fn),l=sa(e,r,"unixExtraFieldType"),d=sa(e,r,vn),w=sa(e,r,zn),f=sa(e,r,Dn);if(i!==$&&(0>i||i>M))throw new u("Invalid uid (must be integer 0..2^32-1)");if(o!==$&&(0>o||o>M))throw new u("Invalid gid (must be integer 0..2^32-1)");if(c!==$&&(0>c||c>L))throw new u("Invalid UNIX mode (must be integer 0..65535)");if(l!==$&&l!==Zs&&l!==Os)throw new u("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===Os&&(i!==$&&i>L||o!==$&&o>L))throw new u("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==$||i===$&&o===$||(l=Zs);let p=sa(e,r,ln),m=sa(e,r,dn);const h=p!==$||m!==$;if(i!==$||o!==$||c!==$||l?(n=!1,s=s&L|768):h&&(n=!0,s&=j),p!==$&&(0>p||p>j))throw new u("Invalid msdosAttributesRaw (must be integer 0..255)");if(m&&"object"!=typeof m)throw new u("Invalid msdosAttributes (must be an object with boolean flags)");if(s>L)throw new u(Ms);let y=sa(e,r,cn,0);!r[yn]&&t.endsWith(Y)&&(r[yn]=!0);const b=sa(e,r,yn);let x;return b?(t.endsWith(Y)||(t+=Y),0===y&&(y=16,n||(y|=16877<<16))):n||0!==y||(y=a?493<<16:27525120),n||(x=y>>16&L,c=c===$?x:c&L,d?c|=B:d=!!(c&B),w?c|=H:w=!!(c&H),f?c|=512:f=!!(512&c),b&&(c|=J),y=(c&L)<<16|y&j),({msdosAttributesRaw:p,msdosAttributes:m}=((e,t)=>{if(e!==$)e&=j;else if(t!==$){const{readOnly:r,hidden:n,system:s,directory:a,archive:i}=t;let o=0;r&&(o|=1),n&&(o|=2),s&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&j}return t===$&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(p,m)),h&&(y=y&M|p&j),{name:t,Ye:{versionMadeBy:s,msDosCompatible:n,externalFileAttributes:y,unixExternalUpper:x,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:w,sticky:f,msdosAttributesRaw:p,msdosAttributes:m}}})(e,t,s);({name:t}=i);const c=((e,t,r)=>{const n=sa(e,r,"encodeText",Ue);let s=n(t);if(s===$&&(s=Ue(t)),wa(s)>L)throw new u(Us);const a=r[Yr]||"";let i=n(a);if(i===$&&(i=Ue(a)),wa(i)>L)throw new u(Ts);const c=sa(e,r,pn,20);if(c>L)throw new u(Ms);const l=sa(e,r,tn,new o),d=sa(e,r,nn),w=sa(e,r,sn),p=sa(e,r,on,0),m=sa(e,r,Tn);let h,y;m||(h=sa(e,r,kn),y=sa(e,r,Cn));const b=sa(e,r,"encryptionStrength",3),x=sa(e,r,hn),g=sa(e,r,"extendedTimestamp",!0),S=sa(e,r,"keepOrder",!0),F=sa(e,r,Ln),v=sa(e,r,Vn,!0),z=sa(e,r,"bufferedWrite"),D=sa(e,r,"createTempStream"),R=sa(e,r,"dataDescriptorSignature",!0),E=sa(e,r,Un),k=sa(e,r,"useUnicodeFileNames",!0),C=sa(e,r,xn);if(!m&&C!==$&&0!==C&&8!==C)throw new u("Compression method not supported");let T=sa(e,r,"level"),U=sa(e,r,jn),M=sa(e,r,"dataDescriptor");z&&M===$&&(M=!1),(M===$||x)&&(M=!0),T!==$&&6!=T&&(U=!1),U||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(T=0);const j=sa(e,r,un);if(!x&&(h!==$||y!==$)&&(1>b||b>3))throw new u(Ls);let V=ne;const W=r[Sn];if(W){let e=0,t=0;W.forEach(t=>e+=4+wa(t)),V=new f(e);const r=da(V);W.forEach((e,n)=>{if(n>L)throw new u(js);if(wa(e)>L)throw new u(Vs);ia(r,t,n),ia(r,t+2,wa(e)),la(V,e,t+4),t+=4+wa(e)})}return{comment:a,Ye:{rawFilename:s,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:w,internalFileAttributes:p,passThrough:m,password:h,rawPassword:y,encryptionStrength:b,zipCrypto:x,extendedTimestamp:g,keepOrder:S,useWebWorkers:F,transferStreams:v,bufferedWrite:z,createTempStream:D,dataDescriptorSignature:R,signal:E,useUnicodeFileNames:k,compressionMethod:C,level:T,useCompressionStream:U,dataDescriptor:M,zip64:j,rawExtraField:V}}})(e,t,s),{comment:l}=c,d=s[Sn];let w;e.files.set(t,$);try{const o=await(async(e,t,{Ye:r},n)=>{const{passThrough:s,zipCrypto:a,password:i,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:l,zip64:d,level:w,compressionMethod:f}=r,p=0,m=0;if(s){if(!t)throw new u(qs);if(m=n[Nr],m===$)throw new u(Ks)}const h=!0===d,y=sa(e,n,fn),b=!!t&&(!!(i&&wa(i)||o&&wa(o))||s&&y);t||(w=0,f=0);const x=b?a?12:16+4*c:0;t&&(t=new Xr(t),await Zr(t),s?(n.uncompressedSize=m,p=aa(m)+x):t.size===$?(l=!0,(d||d===$)&&(d=!0,m=p=4294967296)):(n.uncompressedSize=m=t.size,p=aa(m)+x));const g=h||m>=M,S=h||p>=M;if(g||S){if(!1===d)throw new u(Ps);d=!0}return d=d||!1,{reader:t,Ye:{dataDescriptor:l,zip64:d,Ge:g,Oe:S,uncompressedSize:m,level:w,compressionMethod:f,encrypted:b}}})(e,n,c,s);({reader:n}=o);const{diskOffset:l,diskNumber:d}=e.writer,p=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:n,creationDate:s,level:a,zip64:i,zipCrypto:o,useUnicodeFileNames:c,dataDescriptor:l,directory:d,rawExtraField:w,encryptionStrength:f,extendedTimestamp:p,passThrough:m,encrypted:h,Ge:y,Oe:b,uncompressedSize:x}=e;let{version:g,compressionMethod:S}=e;const F=!d&&(S===$?a===$||a>0:0!==S);let v;const z=m||!F,D=i&&(e.bufferedWrite||!l||!y&&!b||z),R=D||i&&l&&(y||b);if(i&&(y||b)){const e=20,t=Ns(e);if(t.uint16(1),t.uint16(e-4),v=t.array,D&&(t.Qe(x),z)){const e=h?o?12:16+4*f:0;t.Qe(m?0:x+e)}}else v=ne;let E,k,C,T,U;if(h&&!o){const e=Ns(wa(Is)+2);e.uint16(39169),e.bytes(Is),E=e.array,E[8]=f}else E=ne;if(p){const e=ta(r);if(ra(e)){const t=9+(n?4:0)+(s?4:0),r=Ns(t);T=1+(n?2:0)+(s?4:0),r.uint16(O),r.uint16(t-4),r.uint8(T),r.uint32(e),n&&r.uint32(na(ta(n))),s&&r.uint32(na(ta(s))),C=r.array}else C=ne;try{const e=ea(r),t=Ns(36);t.uint16(10),t.uint16(32),t.Ne(4),t.uint16(1),t.uint16(24),t.Qe(e),t.Qe(ea(n)||e),t.Qe(ea(s)||e),k=t.array}catch{k=ne}}else k=C=ne;try{const{uid:t,gid:r,unixExtraFieldType:n}=e;if(n!=Zs||t===$&&r===$)if(n!=Os||t===$&&r===$)U=ne;else{const e=Ns(8);e.uint16(30805),e.uint16(4),e.uint16((t===$?0:t)&L),e.uint16((r===$?0:r)&L),U=e.array}else{const e=Qs(t),n=Qs(r),s=3+e.length+n.length,a=Ns(4+s);a.uint16(30837),a.uint16(s),a.uint8(1),a.uint8(e.length),a.bytes(e),a.uint8(n.length),a.bytes(n),U=a.array}}catch{U=ne}S===$&&(S=F?8:0),i&&(g=g>45?g:45),h&&!o&&(g=g>51?g:51,E[9]=S,S=99);const M=R?wa(v):0,j=M+wa(E,C,k,U,w);if(j>L)throw new u(Vs);const{Ie:W,Ze:A,rawLastModDate:P}=ua({version:g,bitFlag:fa(a,c,l,h,S),compressionMethod:S,uncompressedSize:x,lastModDate:_>r?_:r>N?N:r,rawFilename:t,Oe:b,Ge:y,extraFieldLength:j}),K=Ns(Q+wa(t)+j),q=K.array,X=da(q);return K.uint32(V),K.bytes(W),K.bytes(t),R&&K.bytes(v),K.bytes(E),K.bytes(C),K.bytes(k),K.bytes(U),K.bytes(w),l&&(b||oa(X,18,0),y||oa(X,22,0)),{_e:q,$e:X,Ie:W,Ze:A,lastModDate:r,rawLastModDate:P,encrypted:h,compressed:F,version:g,compressionMethod:S,He:T,Ae:ne,et:M,Ke:C,qe:k,Xe:U,Pe:E,extraFieldLength:j}})(s=r.assign({},s,i.Ye,c.Ye,o.Ye,{internalFileAttribute:c.Ye.internalFileAttributes,externalFileAttribute:i.Ye.externalFileAttributes,signature:s[gn],offset:e.offset-l,diskNumberStart:d})),m=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let n,s=ne,a=0,i=e?20:12;return r&&(i+=4),t&&(s=new f(i),n=da(s),r&&(a=4,oa(n,0,A))),{tt:s,rt:n,nt:a}})(s),h=wa(p._e,m.tt);w=await(async(e,t,n,s,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:w}=i,{st:p}=s,m=e.options.usdz,h=e.We;let y,x,g,S,F,v,D,E={},k=0;o.set(t,E),e.We=E;try{let x;l&&(x=h&&h.lock,E.lock=new b(e=>g=e)),i.bufferedWrite||!l||e.it||e.Ve||!d?(y=!0,e.Ve++,D=i.createTempStream?await i.createTempStream():new z($,$,{highWaterMark:ee}),D.size=0,await Zr(c)):(D=c,await C()),await Zr(D);const{diskOffset:U}=c;if(e.Ue){delete e.Ue;const t=new f(4);oa(da(t),0,W),await $s(c,t),e.offset+=4}m&&!y&&Ys(s,e.offset-U);const{_e:L}=p;y||(await x,await T());const V=c.diskNumber,A=_s(e,c);if(E.diskNumberStart=V,y||(F=!0,v=c.size,await $s(D,L)),E=await(async(e,t,{diskNumberStart:n,lock:s},i,o,c)=>{const{st:l,ot:d,ct:w}=i,{Ie:f,Ze:p,lastModDate:m,rawLastModDate:h,encrypted:y,compressed:b,version:x,compressionMethod:g,Ae:S,et:F,Ke:v,He:z,qe:D,Xe:R,Pe:E}=l,{tt:k}=d,{rawFilename:C,lastAccessDate:T,creationDate:U,password:L,rawPassword:V,level:W,zip64:A,Ge:P,Oe:K,zipCrypto:q,dataDescriptor:X,directory:I,executable:Z,versionMadeBy:O,rawComment:G,rawExtraField:J,useWebWorkers:B,transferStreams:H,onstart:Y,onprogress:Q,onend:N,signal:_,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:de,sticky:we,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe,useCompressionStream:me,passThrough:he}=c,ye={lock:s,versionMadeBy:O,zip64:A,directory:!!I,executable:!!Z,filenameUTF8:!0,rawFilename:C,commentUTF8:!0,rawComment:G,Ae:S,et:F,Ke:v,qe:D,Xe:R,Pe:E,rawExtraField:J,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,diskNumberStart:n,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:de,sticky:we,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe};let{signature:be,uncompressedSize:xe}=c,ge=0;he||(xe=0);const{writable:Se}=t;if(e){const r=e.ye?e.ye({chunkSize:le(o)}):e.readable,n=e.size,s={options:{codecType:jt,level:W,rawPassword:V,password:L,encryptionStrength:ee,zipCrypto:y&&q,passwordVerification:y&&q&&h>>8&j,signed:!he,compressed:b&&!he,encrypted:y&&!he,useWebWorkers:B,useCompressionStream:me,transferStreams:H},config:o,re:{signal:_,size:n,onstart:Y,onprogress:Q,onend:N}};try{const e=await ar({readable:r,writable:Se},s);if(ge=e.outputSize,t.size+=ge,he||(xe=e.inputSize,be=e.signature),!K&&ge>=M||!P&&xe>=M)throw new u(Ps)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,st:n,ot:s},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{Ze:l,encrypted:d}=n,{rt:w,nt:u}=s;d&&!o||e===$||(oa(l,10,e),c&&oa(w,u,e)),i?c&&(ca(w,u+4,a(t)),ca(w,u+12,a(r))):(oa(l,14,t),oa(l,18,r),c&&(oa(w,u+4,t),oa(w,u+8,r)))})({signature:be,compressedSize:ge,uncompressedSize:xe,st:l,ot:d},c),X&&await $s(t,k),r.assign(ye,{uncompressedSize:xe,compressedSize:ge,lastModDate:m,rawLastModDate:h,creationDate:U,lastAccessDate:T,encrypted:y,zipCrypto:q,size:w+ge,compressionMethod:g,version:x,Ie:f,Ze:p,signature:be,He:z,Ge:P,Oe:K}),ye})(n,D,E,s,e.config,i),y||(F=!1),o.set(t,E),E.filename=t,y){if(await b.all([D.writable.getWriter().close(),x]),await C(),S=!0,v=c.size,await T(),E.diskNumberStart=c.diskNumber,E.offset=_s(e,c),m){const t=s.ct;Ys(s,e.offset-c.diskOffset),E.size+=s.ct-t}(({rawFilename:e,encrypted:t,zip64:r,et:n,signature:s,compressedSize:i,uncompressedSize:o,Ge:c,Oe:l},d,{dataDescriptor:w})=>{if(w||(t||oa(d,14,s),l||oa(d,18,i),c||oa(d,22,o)),r&&n){const t=Q+wa(e)+4;ca(d,t,a(o)),ca(d,t+8,a(i))}})(E,p.$e,i),await $s(c,p._e),await(async(e,t,r)=>{const n=t.writable.getWriter();try{await e.pipeTo(new R({async write(e){var t;await n.ready,await n.write(e),t=wa(e),k+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{n.releaseLock()}})(D.readable,c,w),c.size+=D.size,S=!1}else E.diskNumberStart=V,E.offset=A;return e.offset+=E.size,E}catch(r){if(S||F){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-v,y&&(e.offset+=k)}throw o.delete(t),r}finally{if(y&&e.Ve--,g&&g(),x&&x(),y&&D&&D.dispose)try{await D.dispose()}catch{}}async function C(){e.it=!0;const{lt:t}=e;e.lt=new b(t=>x=()=>{e.it=!1,t()}),await t}async function T(){wa(p._e)>c.availableSize&&(c.availableSize=0,await $s(c,ne))}})(e,t,n,{st:p,ot:m,ct:h},s)}catch(r){throw e.files.delete(t),r}return r.assign(w,{name:t,comment:l,extraField:d}),new En(w)})(s,e,t,n),i.add(l),await l}catch(t){throw d&&s.Me.delete(e),t}finally{i.delete(l);const e=Js.shift();e?e():Gs--}}remove(e){const{Me:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:n}=e;if(t.has(n)&&r.has(n))return t.delete(n),r.delete(n),!0}return!1}async close(e=ne,r={}){const{je:n,writer:s}=this,{writable:i}=s;if(wa(e)>L)throw new u(Cs);for(;n.size;)await b.allSettled(t.from(n));return await(async(e,r,n)=>{const s=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,Pe:n,rawComment:s,qe:a,Xe:i,rawExtraField:o,extendedTimestamp:c,He:l,lastModDate:d,Ge:w,Oe:f,uncompressedSize:p,compressedSize:m}=r,h=r.offset>=M,y=r.diskNumberStart>=L;let b,x;if(h||y||w||f){const e=4+(w?8:0)+(f?8:0)+(h?8:0)+(y?4:0),t=Ns(e);t.uint16(1),t.uint16(e-4),w&&t.Qe(p),f&&t.Qe(m),h&&t.Qe(r.offset),y&&t.uint32(r.diskNumberStart),b=t.array}else b=ne;r.Ae=b,r.Je=h,r.Be=y;const g=ta(d);if(c&&ra(g)){const e=Ns(9);e.uint16(O),e.uint16(5),e.uint8(l),e.uint32(g),x=e.array}else x=ne;r.Ke=x;const S=wa(b,n,a,i,x,o);if(S>L)throw new u(Vs);t+=46+wa(e,s)+S}return t})(e.files),{dt:i,wt:o}=await(async(e,r,n)=>{const{files:s,writer:a}=e,i=new f(r);await Zr(a);let o=0,c=0,l=a.diskNumber,d=a.diskOffset;for(const[e,r]of t.from(s.values()).entries()){const{offset:t,rawFilename:w,Ae:u,Pe:f,Ke:p,qe:m,Xe:h,rawExtraField:y,rawComment:b,versionMadeBy:x,Ie:g,Ze:S,Ge:F,Oe:v,Be:z,Je:D,internalFileAttributes:R,externalFileAttributes:E,diskNumberStart:k,uncompressedSize:C,compressedSize:T}=r,U=wa(u,f,p,m,h,y),j=46+wa(w,b)+U;o+j-c>a.availableSize&&(await $s(a,i.slice(c,o)),c=o,a.availableSize=0,await $s(a,ne)),0==e&&(l=a.diskNumber,d=a.diskOffset),F||oa(S,18,C),v||oa(S,14,T),(D||z)&&45>r.version&&ia(S,0,45);const V=Ns(j);if(V.uint32(P),V.uint16(x),V.bytes(g.subarray(0,24)),V.uint16(U),V.uint16(wa(b)),V.uint16(z?L:k),V.uint16(R),V.uint32(E),V.uint32(D?M:t),V.bytes(w),V.bytes(u),V.bytes(f),V.bytes(p),V.bytes(m),V.bytes(h),V.bytes(y),V.bytes(b),la(i,V.array,o),o+=j,n.onprogress)try{await n.onprogress(e+1,s.size,new En(r))}catch{}}return await $s(a,c?i.slice(c):i),{dt:l,wt:d}})(e,s,n);await(async(e,t,r,n)=>{const{writer:s}=e,{dt:i,wt:o}=n;let{ut:c}=n,l=e.files.size,d=i,w=e.offset-o-(i?e.Le:0),f=s.diskNumber;s.availableSize<I&&f++;let p=sa(e,r,un);if(!(M>w&&M>c&&L>l&&L>f)){if(!1===p)throw new u(Ps);p=!0}const m=wa(t);if(m>L)throw new u(Cs);const h=Ns(p?98:I);wa(h.array)+m>s.availableSize&&(s.availableSize=0,await $s(s,ne)),f=s.diskNumber,p&&(h.uint32(q),h.Qe(44),h.uint16(45),h.uint16(45),h.uint32(f),h.uint32(d),h.Qe(l),h.Qe(l),h.Qe(c),h.Qe(w),h.uint32(X),h.uint32(f),h.Qe(a(e.offset)+a(c)-a(s.diskOffset)-a(s.diskNumber?e.Le:0)),h.uint32(f+1),sa(e,r,"supportZip64SplitFile",!0)&&(f=L,d=L),l=L,w=M,c=M),h.uint32(K),h.uint16(f),h.uint16(d),h.uint16(l),h.uint16(l),h.uint32(c),h.uint32(w),h.uint16(m),await $s(s,h.array),m&&await $s(s,t)})(e,r,n,{dt:i,wt:o,ut:s})})(this,e,r),sa(this,r,Wn)||await i.getWriter().close(),s.getData?s.getData():i}}function Hs(e,t,r){e.je.add(t),t.catch(e=>{try{r(e)}catch{}})}function Ys(e,t){const{st:r}=e;let{_e:n,extraFieldLength:s}=r,a=64-(t+wa(n))%64;4>a&&(a+=64);const i=new f(a),o=da(i);ia(o,0,6534),ia(o,2,a-4);const c=n;r._e=n=new f(wa(c)+a),la(n,c),la(n,i,wa(c));const l=da(n);ia(l,28,s+a),r.$e=l,e.ct+=a}function Qs(e){if(e===$)return ne;{const t=new f(4);da(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Ns(e){const t=new f(e),r=da(t);let n=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,n,e),n+=1},uint16:e=>{ia(r,n,e),n+=2},uint32:e=>{oa(r,n,e),n+=4},Qe:e=>{ca(r,n,a(e)),n+=8},bytes:e=>{la(t,e,n),n+=wa(e)},Ne:e=>n+=e}}function _s(e,t){return e.offset-t.diskOffset-(t.diskNumber?e.Le:0)}async function $s(e,t){const{writable:r}=e,n=r.getWriter();try{await n.ready,e.size+=wa(t),await n.write(t)}finally{n.releaseLock()}}function ea(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function ta(e){return i.floor(e.getTime()/1e3)}function ra(e){return e>=Ws&&As>=e}function na(e){return i.min(As,i.max(Ws,e))}function sa(e,t,r,n){const s=t[r]===$?e.options[r]:t[r];return s===$?n:s}function aa(e){return e+5*(i.floor(e/16383)+1)}function ia(e,t,r){e.setUint16(t,r,!0)}function oa(e,t,r){e.setUint32(t,r,!0)}function ca(e,t,r){e.setBigUint64(t,r,!0)}function la(e,t,r){e.set(t,r)}function da(e){return new h(e.buffer,e.byteOffset,e.byteLength)}function wa(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function ua({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:a,rawLastModDate:i,rawFilename:o,Oe:c,Ge:l,extraFieldLength:d}){const w=Ns(26),u=w.array,f=da(u);if(w.uint16(e),w.uint16(t),w.uint16(r),i===$){const e=new m(1),t=da(e);ia(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),ia(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return w.uint32(i),w.Ne(4),c||s!==$?w.uint32(c?M:s):w.Ne(4),l||n!==$?w.uint32(l?M:n):w.Ne(4),w.uint16(wa(o)),w.uint16(d),{Ie:u,Ze:f,rawLastModDate:i}}function fa(e,t,r,n,s){let a=0;return t&&(a|=G),r&&(a|=8),8!=s&&9!=s||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),n&&(a|=1),a}const pa=1048576,ma=".zip.js-temp",ha=1048576,ya=1048576,ba=".zip.js-temp";try{de({baseURI:void 0===S&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===S?location.href:U&&"SCRIPT"===U.tagName.toUpperCase()&&U.src||new w("zip-legacy.min.js",S.baseURI).href})}catch{}de({workerURI:e=>{const t="text/javascript",r=(e=>{let t=0,r=0,n=0,s=new f(1024),a=0,i=0;for(;!i;){i=c(1);const e=c(2);if(0==e)l();else if(1==e)d(be(he),be(ye));else{if(2!=e)throw u("invalid deflate block type");d(...w())}}return s.subarray(0,a);function o(){if(t>=e.length)throw u("unexpected end of deflate data");return e[t++]}function c(e){for(;e>n;)r|=o()<<n,n+=8;const t=r&(1<<e)-1;return r>>>=e,n-=e,t}function l(){r=0,n=0;const e=o()|o()<<8;t+=2,m(a+e);for(let t=0;e>t;t++)s[a++]=o()}function d(e,t){let r=p(e);for(;256!=r;){if(256>r)m(a+1),s[a++]=r;else{const e=r-257,n=we[e]+c(ue[e]),i=p(t),o=fe[i]+c(pe[i]);m(a+n);const l=a-o;for(let e=0;n>e;e++)s[a++]=s[l+e]}r=p(e)}}function w(){const e=c(5)+257,t=c(5)+1,r=c(4)+4,n=new f(19);for(let e=0;r>e;e++)n[me[e]]=c(3);const s=be(n),a=new f(e+t);let i=0;for(;i<a.length;){const e=p(s);if(16>e)a[i++]=e;else if(16==e){const e=a[i-1];let t=c(2)+3;for(;t--;)a[i++]=e}else i+=17==e?c(3)+3:c(7)+11}return[be(a.subarray(0,e)),be(a.subarray(e))]}function p(e){const{t:t,symbols:r}=e;let n=0,s=0,a=0;for(let e=1;15>=e;e++){n|=c(1);const i=t[e];if(i>n-s)return r[a+(n-s)];a+=i,s=s+i<<1,n<<=1}throw u("invalid huffman code")}function m(e){if(s.length<e){let t=2*s.length;for(;e>t;)t*=2;const r=new f(t);r.set(s.subarray(0,a)),s=r}}})((e=>{const t=(e=(e+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,r=[];for(let n=0;t>n;n+=4){const t=xe.indexOf(e[n])<<18|xe.indexOf(e[n+1])<<12|(63&xe.indexOf(e[n+2]))<<6|63&xe.indexOf(e[n+3]);r.push(t>>16&255),"="!==e[n+2]&&r.push(t>>8&255),"="!==e[n+3]&&r.push(255&t)}return new f(r)})("zX1pc9u4suj39ytsV46KCJscklosU4ZUzjbJZLJMnGUSleKiJdCiLZMKCFmxLZ3f/qob4CLZmclZ7ruv7KIIEGgAjUaj0Wg0LMH7t3vxIh2rJEv3OFfXc5HFOxMRJ6loNPSvG11OBvrVEiwUFlszq8hksdu9RS52ciWTsdrrjbM0V7dHUkbXoYA3p+dirEIFrxeXp0KGEl5Fahqm8FTKTIYJfEhS1dWpMwr4HR2KKdQMdCiHF1VgBq+ieRjBk0hFHxOxDMfwVmaXSS7CBbwX39XTdJxNhAyXMJbXc5WFU5hnuXol8jw6E+EE3ssozeNMXh4rKaLLcA7vRDSJTmfCRFzDJ5moWsQFPM4u51LkeZKlJu4SnojxndjTNc/FLIYrfpUlkx0PzvjeItXom+zBMa/wDTc8FcudDM75cDiC+/5HvTiT1kyoHcG9XtDu9EVP2Da7xSjFxcbnrvmouN9QA9Xv9/2vzYNuNzgImt1WSBG986E3GooRV+v7IRexivu9bl/1FJZGvboj+flQOT5m750PFYGR/X6/+5WABu12Q47WlHb4Fj7Ad3gHR3ACj+HFiJ/3xrMoz3eeamByMVaZtAS7VdMkdxUXq5Xjr6P5XKQTjNZ18Fb6c6+ogbcS7kykZ2rawxQp93pJbMk+7zYawj1dxLGQRX0TQu/YKuJBuKfXSryJ41wokAwyLp0uobCX9XnaS23eLTILrr4m7plQRHlWCrseA8nrUXYLI3uKv6C2i9HXx0OB+GgE7fbo6wkF/I4OHVEoaOnQO4Otr9+HssrxgQJFjrcUMjnW1F092cdaYhcrQvxbgmOpr2KYjtioZ5Cp1mdCWexWCrWQ6T917Hqte+DzjviuRDrJd+YbfaFxLgyqFSHvaS9fzIW0blUxZCwBkt0qt+wpkK5Ivy3EArnDGuLZIp9aFckQhVst1tN9IYs+cnOh9BC3PFAu1ZeBcK+i2UJwuV4zEBwrvtYUtfOEI8xxpCwBit0mseVxzgtqWK0wpEyI6YbvCNdkUaykIDEs8jj+CFL+xE0syXomRzPgnKeDWsbwiZtZClLwVkhB+SwZC8uDCghja5ghyRaIKynU1FEV1fFqlcCBVBX60FKOz2xdlzUsyjY2g4cFuMMSjijhWIJXVUrdsUhmlvqlGTDGikqYPKrBmz7IvtdoqEbDEkPp+CP+xJ1aCnSgEfit/Va32Wl1+33l+OBjh6xhGmJtQDLeJ+yIgQotOfBWKlSHh83AEcz2vYODtu93gv39/c5DAUkoeD91ZbZAGvll4zNbrZoBZBoopOwWKVszS8R9o2GlfDhiPdXnzaCnHN4MWOrOkawkDkHvDl7TorcEKxligukOq66w7RLISgyTUb/fVwgN36kVBY9Jyv4bbJBK6EFGxJKUxGIAEhLtrNH0QdlZvxkMZJi682xuMcJhul7De36LvCcPb+d1UnniIuX80oVioCim+dpGO1Q/oQY0G8lqZaVY519aIwZymIx4SkwC0sND3i0qJtdwUS9mOCKoEpBfImTEoqywIxE7PD087K7EUI6g2finXK0spduXMsxXDZGGbDRU1fTuQ6vZkAxSxkCt12v4xInRbDP6ojI4qHvKPZ1l44vj5Ebwth+Aci/50N9vBu1uyz9oQssLmkGz2fL3IWh3gma36XsBBPv+frPZ3e9CM+i2m/v77cAbgXKv+NBv+9225wWtA/C77YP9/XbzoAlBy/MO2gf7XheazYN2q3Ow3w1GIAaWco+5cI+LwcNAuedcuOf1iLdcuG9ZqFwpcuRPa/NbTRHYlJLXIMDLKr9wz/lwBMJ9yz0Q68V8EilxBxF7KDmlZ5XwJXB08vfuBxe7sOJbWL8nJVtyz0Fgtyj3LWT45KmtiQlHR9Y/8Lx9/+AgaLf2W97Bgc/UVGbLHSSyxNp7HKVppnamUT7ducyk2FHTKN0JvrabO86Ov3OaqHyvKDkmysyRRyINzQwFacmh1o126lgbwUYt5PgMp1gUMep5mHLfWbGbL04jFO0sv/NwBn7noTWzfcYYzGzulzTt5nPD6DAZ0trRdlcYqcg9rxite9xTNbzBEEkWeduIbbRDjwQ76PnthhGjNIl7Ol0xFtx4liE9u29/aQUHrYPOfnDQQco3qVdIMr0CXo8J952l6lVnrKIYQ08g1ycVOyy+9v2Dgeg38dHGx/7BQHPJUH2VX9NQNeRKNdKVbKS1mH+qRrp+rOePgvUfHooVygvIq9fvLFXNzog1SLh0jyHjwup6bEOi9AupMCOREQU//BTzZOiNIOfJ0B/BjCfDYAQRT4bNEYx5Mmxtiq37B7rnbXaLAFcri8BJ97HlQzYUTnP0FX+6+sdvmd/OqCR/RanbEDNbuoirHGYQMXtsIyhbulfDsmd+CTw2Wnm9MY8g4jOYUd6mBzmDnMcQc7XG+lMj7HjlATaD2mLnFApG1CR7RqHmiFpmRxRqjaiB9njlrdfwmt8ml/NMqpfimqY8sdx57b6w3pOkmeshDJ+rzkVhlcvVyhct8PrpauX15ebYTNKraJZMduaRjC7zHZXtzE8vJnFQDsiM+7aV9vttdngY6P7Q6ICFSbGkIUurpUckbVkZg6mRhpd6HE94IY3M+RNN4byqtWKw4H7PylYrn/UnvQV2HiaKec6FK1JaWVnz2rhajHDA4njtz3ozs5KoJ84ZRNzrRYd5MTgiTDWMRl95PowMzXCvLLXRmB3GpbRv22yKQqMWvicQD2cjBhObt9aGzpeVJPRLl63hRfi38xAgX33CP0FqlmCjnnLf8yGiSgI9R6VcoNz3Q29Uca9fmkGvmEL7CbFti7Iwt2T27pHFqjGlUCgxi6oU10xqxA+8g3YQtLqdr2KoRpAOfYr2262DdrvTDboU3zOFG8CYGXnO+6Ffi/Mp7hN1NHIszPGDSUuYZMJ9YgmdEIT7mu/6tYmK1g2v+a4H9PapatZ6kpyJfBsqIO/9hE028kwB3R+VKFGEkvtYYEEngkaJLntzaJgUO1m6E82kiCbXOxrqZGd6GY13xtFsJia7eyV4AlJWWrfC1FwwFFVeFbPudJefNRpFAJcj76J0kl1+xOVIzvkxvOR7L8qhmefLTE724FEVmSdnaaQWUuzBc753k8zPcyc6zaRyxlMxvnDKTL1CAbDzh2nrq0KQvVMwzuebMzdpNHaO3r7YwRk8X8yR+4jJHjPLpI/c78AXfptGlyLce/vo5ZNnwd4afufKjXKso3WL035oEjx/dfR4b72GLwy+1ZIkSsgI65iHvmhCPcfx8yPHN1ne8OHeRMjkSjxCkWEEv/FhF/wA/M4I/uRDvwNBC5rBCB5w34NnfOgB/Y3g1zrmQQj+a6MxRUlAzQQoChYCkcAUUhTsCVLxUwLmKz7cUquMYDsChcdXOBDpf7VS7kurLnLRt9aIBK1XONllfEP/YDgv91Hqau1ynjUaHf3TxZ/7WXsk8p0Lcb2TJzdirxAvrvgwrxZzyEqxwjHPeq2HmR10+3EvLjQ/gufDGBeQVvyPjHPurVZdTqXqcIsRN5JG5zA6PAxaXylklAuHh35HR3RNuPtVGi0GGJgEQuAXDeVrhGAg4tHhof816DYfWlG/v49yWj6MR1SlbPRVbCiWYpz3IXacqnvyYbMhBnEYO61Rb4aSQKvP49Wq1ceVJbFFOVS64qOvxA8pbKqOUYGJ6pYxTYzB+qvRaF1nJXVO8MgS4LH1RPzwq8/WL7eYGtEAqOLdH9GiUdME/iQo5GfFEssQxA/UdtnQSrDBosSgIAx+xbgyz5jH3OvtyuF41Bt/5flq5SMdDOMRzotEABmPv8YIJD48DPDRxEerl/EM1UKIiOzrwQEgDJ5BOsxGfEwiGkprKLiNRyNd4wX3O91W0/MOHkZfO+12c//h7GvQ3n+YfzUfug/HsOQYlQyzURWblTXG5WSrL2kdiQtILHXJl0R2S1RUgcLYbMQXfEGxC4xd1/O3a/k5PmorMYxS9aj1o1JDgqOuGJM/Hm40aRcDri79ulc063JpQPzScgLszpJRxUXPK5R4YySGGY+RDiIeo+A75jEKvgseo+CLzVnCFCYw52Lojb5KzHGNGp9BM/Qx7I/ggothgO/BCC7pmx82MdwcwSlvbZBPaohnyfPhXA+Lr7PhdaUojIYXpQpxTIPgEkGdjmDKc0xoslzUs1xuZZlTFtsfwYTnmNRkuqxnmm9lutaZqBE5JjWZ5vVM11uZLnQmbKnNWzDnS7jmU7jgk41mt8oxowbNhiNCMeKLAgGahmpIIIa2qBCBbGtRw4Vtj2DJ5zDn13DNL+CCX8IlXxaCQrZeQ3LvtIJURgTwnAstQHzkSr984aoUrooISlAToeoM5nct1DwHA+gLW38zEgBW9J/IDIIWY8LmPjawJ2a5KDT9RUuR+5hGQsqJY/eCdhvVYQNLcQ90QA5Qx2MC6SDlXmjbKQttW+JDgUClhM0VIg5f5OFhF3/TQpoW6zdYOVS0WUjIum3f6J3R/IKrpjLSHzG2/t1oCm+1DiuJrV0rrbSyRswZViI1qizUptIuJWUXbxmcvkHFg06e1hYTkvXUMBl95Slx52Fi+xTwdSCgQKADTQo0R0XLnrgLS0HC1mvIBH/tvtCcW8scoiZ3uOXaDgXA/J4ElfDD+bHZ4ZiJHyjYbwsRMBQgo+XbIqTAtMrsIiGuQgkkNhaJ3qSz6zBds1ujj89VJEn8FkRUoPG+hii/Tsc7dW399mq/qkUMv4U5/BnOgGTpMFpz2YsHVrSMEmURpHLhyvu3xeqTPu8shfk2F1YKHvw2VLgAjDmFKUSaqKE32iWuuVplQ5/e/dEGn36J+4kScogRliBY+cgOUPvMKcaEIR0oV+DOoaVzPmcsnFmMhbpKkaGTsdGllsrbB07tnf3jI+pnij2LhbAkCBiDBw9wO6fEod7IKMTK2wehgmchNjedJOlZmBqkZWstb+LCvtFQ7FbXJSu1ZwY/aVUByHVkLcqo1m4QTLHkrcSQC2FJATHryWoxU44JVYub8WtKmhargQhL0nGyWPkwhm3VRY55UYnDBwM/9DY48APDgccrHg3F6GuO+p8ktsYb3feI9USJzRmuqlix0xT9d0bCuuAn/0XaT+G3MIE/w9h0Y460X3RCOrBm/M4oqMZAyv+wNIlpqi9mkQn26tbwSJkm7wRSBnFFrHmv6CENaVZoIEtKLV6QXiPUfFgzILX0FulGUOSFnyff5O/IV+v5iCCTOwRZ0pymzIRtkCbEhgwFW6duuS7md+iw1Nc8QOVD0ayJsGKo5WNEUyhu025guXoeI4olpJDQfqReuQq41Q1DrC4sxfvC/ZMrBmXPTxFrKcP+d/wSHzdrVkFelJ0HCcQVCnN4Fs7KLNGai15kcNNoWIpPhBWBKpWW43LmcxItapu9F4tIk/dJz9FoqL7YwrDkomeJckuINkstiWuXcnJGmkpta+yM//GRobbO642dj32+6C1s/nGbd8yFpWABC/sjaqMajdkdRpLwmqakF69WZZIEt3ixAtems2Fhp1VNXIMPrstATY6hwAKdS8K4RqV0i47g6WI2M4Xn/J45BxKDot1YFAqS19WUjHKDkteFhKXptj5nW3syWu4RrF0fp/txpMbTIn0s+K4Pm/DWa2Z5kMDv4MEbXIHfywOwRnmtRp9xB9XNo5mCb26lOAF5f/0qkcGA3KxXbur1Y6hYy0pTgynCeA3fGOTQfWgFD/8cpnr2LFkLg3FFBxF4gEmIaGqxGAc6N2MoK2OkCZf6tKJYCbcX4joP8RmO4ddwUQ6wj0ImcTKm6obLNTygoZgI4pipsMY41mOZXVrPGINn9DUT1oKtGSyrMTgVm3sYnPOrgSXMoNEC2JLzs0qvoBtrCb5IRT6OUHIgQ6AP716g8U6WihTX/OXOONtYvspDVd8NpSWncMfTSD7OJuJI1WwElKF9atGSuboY1CgyNJBSVSMmphG6EFFpPQ2vVxX3kFtCS/mtGH2oujCvqrQ+YDjcyuLmopC/y4LKrTWitDLl9SZ2hTtH8i8/X2x/xh0BM6lf/uuT+r2k8ZMC7tXWJP8X0ztNYiV/Wa2kW6tGRSdnNG1WmPHADxjbzMw38hKrAm+X47hTluOzr1XSeqPYlmDbI/OMcnczYOv7RNhqRtdVwwmvlKFO/1vo/s9QSwIYJH+D4r9EYLmVVwhPhHY19H3cC7yv0pD+eFCkNBKOEWGK4dBIuB+sccW8s50Lv3m9WgbBcBar0J5qhJfkf/UDyaLEuNzAeHo/xpM1A0sDqkTHhA+bXrvlH3QPOtA+8Pfbvtc6gO5+1+sG/kFAAna9TGKzCQhBjPKpleidnyoYjJBzpqy+x6QOC7GetppusD0pLckIQZtJ5Z2kss73FAmwuhkVis7EJpEYUeUOa0WDk7RirWi7JofpiJ8jv/yqcM7RRdanmRpLO/4vl6N+UM5NxamHQKwfEY8rG1GYuhH+il78J30hq7We5B+ElbrJ5WJmfRCWtN+i0MTAb7b299tdv8lsHyc9VYHSln2jakv3n/RZw9Nl82ECErJRVcfzDeuRYKXTDYPSjuxtWQ0F/lfFUMda67O3dY0UaY6qbx/q30rDBkyi2dD3H7EhAbfj6SKlDdFQgRShvMdWtsbY16bRt4XtrJggfet1n5iEGSxycRdCDDfJXO9+hTng6BCTcAYzcSVmYQQTEc8iJTqtcLHmApYV1yJVLFxzKt6VxtDXIP6CzxqNpNHYXTQa1m62WuWs0di1duPVajdlvazR2M1Xq93ZanWxWll6C/0zXPMXwroGnH1x2/diYM3pyzsB1/wpfiJZx9o7u0nme4wVGeaMhdf8Mb7GcFtUvYa+NaR6yQhZo2HlA5MPoZ1iB7HQmlBJEa2zzOcJbsGcCGsJ12Ahq9F2nFR52sSZ1BZTUGuTJfjFYF59DLWFwFQbYZaWmmeVpSZKhrUVnajmqXfir81KQeEOYDGAPXafYWmid35ro929TNK6uEPc0eESdq2NqVVWUp2m4XWhfpHb62oE0e3zeFtwjGtSLi23cIbQgpcsJxI0wLEkV4V+Jeex04WZAUEWDrrOeZWpN9Pw6hJHRFNW3o9wKUaF1L/mTsQwSVLTq2zptroovRdFOFFv0WiMt4vRhYy34RN0XKfx8ba5ruKbVrogNyymKfC7aZWo0YGq0whZSgs33YwmW+kNq14im6Of5CsJ8pX77O3v4ywVp8hqjCUuuIZmH5riZ1BjQ9H9rGdR4y5LXPSXbGWbqcSNhpUN5jgs5zRqLzdG7YxGrflMozZqNKw5coQ5LDYbXC/ScAWYc1oAVXbGaC0goomQlUUFlnNt3eol+HwxmxXG9FKvRo36VlGlLbP4NLsQAm3oL/UxCSPJbpqDJ1Zp7lChbWcSqWivsFNQ7jha5AI3S/QYuSVmEqYwyVKB+ibZy9C+epblwmKhqEthMI7SsZihJRXCwXdaVq2ZNUflcqOBPBrZV8mLDTanmgWSPDvXXDCJLWLkGWs08kohci+PQ6Yw29UYrejYZ1uazk0x8cSIiexWYiW0vdDcuqUxhYSJHESf/Hgrs7mQ6toSsFdQyx7cngkVYl1lXfv0uK59yoqKx1w1GukgDZPVKoOcS7ekkMFe+eqgyiMswhTSWk3qfM2nYisvtQ6m43dV2d2o72Mz09ukxKBdKEyUlYlKhkfqCEN5T7Hes1pDXtxZZCZz8X4qs8XZdGO5+XRLyFPu0hy/wf7AozhI4ZDeS/FGPYM9jm2kYxK9Qo+px+Z1r+h8HZsa4sfGChfpskpv6LJ3KkV0sS5isT7CMqcTcM4rkLelISpqYbQ9LhkA0dqZdDxrUtsJBn+TzZD+Rr4U1alrZiFRFSRkZqHPgu/RIIQngu9RC/bMZtT7H/NXeYdx7qRGTY76jPH76zmNV83v4l7m0sIx/5SoqVWQ2B4bxPy7CDc/Jqn52GhYMT9CS2U3W6j5QpHBt0cQ89ICsaBLrBNEW0wV9JQ33xQVFLslblXqT3K7tAKorexwLV3OceWyKoXbJDWVCfM1TUuLu6WQJsWoaGuKmhK42myWXap7QdSidzm/ajTqCfv1z5sspmSvi7TGYLXZwtZkfVtNYmLNZ71662qfYLulvTs8Kb2XJ0Ubw3XMNoKzzSAq74oZ/dMPKc4c6ur5fW3jjsYmHQbbgmBomRVzXRYUWys/uxKvhNaJocyh1eQ1zRlOQ6R8WBfby/oYVamX74seS8selWZHIoHERsPdxOaip3gyKD+wUBb9gAaSdcoQNcKgiQKLfC14QLzXqCzT6Co5i1Qmyd6wDLnTSE6WkRSPs3S8kFKk4+tGw3ot+F8mKfmDRtIrwW8zEe65v4wzKX5ZilNnmckLIZ1llF+65/ke4MuHdy/KNDmJOPkvN7PklFLpNxPtYsxebYVCXQaxCF8LyEXYFk2Y6Z9IhLve/fLTrnfPitDg45LwcP9RSpPklJKcrisKv13Dq3Lj4qUmjQgemRdiLs8F/IGMZmsr4qMoyRAS6hc9lrK5NnbMYJylcXIWxsj3aNJz72sTq7g1nvZ0kzRRr7LJAiU8V4Mo+uZ+AHzXW8fu3WiCdicaYvceBOnE93wod1Vup8nZ9FOkhHwVyYvQX8OMi5Kzrlb3Cot1gW+BAudLPbD+wA091vsiLCLmcA8z7IGRF19Mwj/EmiHWrT+E7bN/SPfV0Z8nx0fPnp68eP3+6a9P3/XuEQiTdSGR9uqiIC6sSyFxvYac9fBgViEX6KpfFFU303PBYIrJrGyB4oL1HpXNUAzKVnwWoOsj/pWWmF3elGoGGlfvhZVBzOC5psMjnPofZ6mS2WwmZK/GtGe4d/hc9DSQ2ZZctBFESJ8E7mr0U/cy+o7kVYxG6LQYs2Lc0aAsmZVAWQDMpbgSqXqMKMQhaMJUrXDXWxshZCepy1il+LM9xYxr88gSqukrnK65qmjiiQAp8sVMhT+Xd721AKlLCWqgasHQQ5LYTVw05BOT2gC8twEFY/yd9mUqUfNLQSaGCpUZ54qR3rUwI0SGXW6/lqdSVbEsnlgChiZ2VJSFh2G1AhrfeuVbVThWplhHfUgv0myZ7tBmwB4rJnVDg6GCXEXjC9wlySY4WMj4Oqtjj1jUxLolCOG/lnPN1tFk8hQJ4vckVyIV0tozEPbAukVpMhTrUm+te1fVhoiE7WEsiJ8msbVHoiCeaGs0PmrDe84/i2oqf6k1nZL1XuJ+6EwogeoWYRWsgRCfsgI0WyPUaHyBMCswj0owjzbBsLXi/IloNJ4XEniNzAxFsN5VJG9r/ge+iQ0HBG9E3efAb+KO04A/hXZm8EAYbwbPBOjEv4o1P5tlp9HsPW2vKDKE9/fB74IHXdiHA+iA70EbfB9aaC/fBL8JAfgt8MFvj0Bp6vtG5q9SB95QIKXTnHUzncK4ODVH0AR4eEi3G+Kh6+JYGvjU4J3kTna/MLRMNvO3wkBnycrihx74gJVtQQeMnb828IdWFzotOOiAH3TBPwjw1CY0uy3Aw537nS74XtACH6WHwGt1oentB9DyDjrQ8Vst6GIWPwi6XfA7mC1otfc7IwbxfYW3oQP7WAGP6tCianhYk6BLlfGwPu0OVqnrUa0wHdas4+naBS3w8ARgMTRzVTM7MIfLE6NL7GmLa7GTpLnClVkW73wTA02n38QP/AuIurYMYi63stcUdSmkdsIKcPcq32ysFy7BhLJiqC+eZ6rY9PV2uUTB+j+oJ3PjZDbDE/mg7PqGcVS5E7gdi1ApWCBLXuJjio8JRc7x9RofF/jA8yJ7cIqvV/g4w8exCPU5xrotj6pvlPuHh8qs7m9vcGY+L9sgGbxFVeAH5EbfEdw7fBzh40SEdZgLVfmRqNH8naPPPDD2ZWR1Dgn+2P7mIEn6G2dCK/MXQ5yKrXGoLNVfmhA/FoUN8QtRGBE/FRwPEk5/kLPchsS0n8v8T8r87wWX5niW4Kl+ey14sl5XxD2pn3V4pIYOncIU/WBwEAaOGK1We3s1KwLTF8jNUR3IJ5UGw5JMx+3hMkFPXjt7trL3dqw9W9p7bG9dWklU1gYbvYunSbzyJHqBYVVwMTyG7q/8hgTcJKvO/6Y18wQDT7iv8Ij+S2Hb5NCk+H5pvlM6OhTCQOcpfG3UKPtUbRgtk0m1hIRWp+2GohM/j4Qt3Oc1+41XAg8zYNIEdMjGI6QF+CIuGPEUMKfNm5DwxPEbBBaE+1EMf8PNSPupsv2R+wcekxHuFzE8VlbCyojnAk83/F7bqbvaQCa1jjRj99UxHaGVN71h/cr3YMRlWS+qi/yLEs/q5CPct8J5XEP2sdrYVez0xeBPPCkc/qmGQbtj6yMutW3Mm9q4fKfsfdADHlJu4S9zfEj4A2GO81rKPkLfGL8cKXTY4h8edu13JXdwXZdYh99mQJzimwhbAbxBdvBbwWfgTxE2g/3OPjxArvEM+cevKLkIFSagVGgGMabp4nRbRKBTAxVm8KpkPyZJotAbhCKoXXiJpcUYleNjho8xPhb4WKrQCWCKrxN8XOPjAh+n+LjCxxk+jvFxg49zfLzFxwd8fMfHO3wc6ar9Jqzg4WeFu8onqqhaEfO4rP5rCj/H2v2OjxcKWfQjfH2K0D7j44kKu/C+aMonjHqNj1f4+Kgb/quwPqliamDuZTS3UENk3f6BsF5iykf4eK5CD7XeX8pswcMnWImfz/qHqrK+/9eyflThBzxJ+sX8/q5/azPC+X82I0DG3+L+fOa+VDyFzH2ueFIc/M/YPYzvbW3WvK/Wtf33KiXNKUtlDUe0oTBVFpkfKaVPJLEa7/peNIg0tqGCWWEyrXeKdFMfCFo5uq4rioO5vwqrjtzqgPIOnmtgCt3EyKEa2bZxs2QylRuxRU5I7oMH2QZ399GXiznNwzNb4uF+PLEDdBgu623ao4i6PUoxZ+ARaCPfoCELT4ZyZNsFzm/NUsc0X6zJEs+YD71BWtq0BSoKxGpmVYFZdb5SDrPRauXh6S/91kuHCU4zYnCNEphgoQdF1JYwkGph4J3iXThSvAknigftLjxW/AS5me3DC3yFpxjfgc+K4yRgBwfwRPGmB+8V9w/gk+J6TMNrxf02vNKpXyru+PBI8eFeKnD3LSFaiOT1Huxpvd2OSCd7sLcHe3GCp1FoiVl9NEFc45WBJM0XcZyME5GqnUtxmRE4LS+WifZG8FzxhbJShSMV3xKFA6/As3/Aeh/V0O+MeAD4sj/iTXrpjvg+rSa+KP5dWVZlp1DQT9Dt3kOPtEBp9rk+M49kwLu1r36rhaefNr4f1L4H7U4vQP8Tte/79e9drxd097fg14ysGfIRrLGpZdMzlWwzBt8UP1fWF8XgDb39rhj8pirz7oK5bBopibqR0q3WS6MkMMDZb5iOQh9lDhQNEsfvZX1J1qEZWwftrgkE7S6rDUyUi21/8xiV7HPtNOiHXM4ujpKirasuXGLhMXE92gjs87jRiO3M8fs8Ybcp+huSZmtsQ6N+twDHr4pIt4vIqAg7pfahCU3CK/5JpVRgIEV3gwqeKwZ/qjpfM01v+wFp+quC6/hGicT4TENxKO3LAZYdIoJrCZFQpPYBVzKdtN/f7xkhRvaDdnsQtNuhZCPqndox56C932v7gZFgPU6eUvBEgPGa4vg1E+o1s/6nCOR/myJKSZ1ZmYI/8CREOVU9KMXsJK68fanVqnyXhUm9b0hbS+AC51/tFk/Lzlm5i9P3eiW/7geiOQhEM5Q96aBiLLtNeWqrYWbbI/TcwhM7XXnr5TSZCctxBOul/8AiAh8S81LYdSd4KHKVov2cR6z8mfqf8NBY+Wb8Sr4ZjYfGZ+rfcdGoO/SZKj004mvNRaOGanw0XkVy+KsCIUFJkBJSCYmETEIsR/yZqqlFpIUHRYt+2625sqv6jcivMsk0hLz6p6C5Fs0wJMkgSVrfnGN9dLZYTQFjq1Svqr/000jHQ7sFgtOvonLJmBgvjfUo46Ux5XHhIOBrpv0LmFPJiQ4VB5bTwvmADkpZuGpUsu6rUcgNZ42/qnu9NeoBl5KTti4mIneN6Vc8u8oKu02rsrf8aoiu0u7QvqnfwTXZiRhYtLQVLm6p45OWdCeCe2hIcyLIDaZ1sZmm3+ddSuXwujVoRJApV3dQgdVwvEZjA8pThU6HCIjf2N8qu6bGkcUgJyh+x5EDi9LqsUzvK/RH5Z4IBtuNIScPDn4rl8kneDTZ8Tss/As4Jln9BBc1bluu/LghWtK6V+G6t8aBi6RftpJ++XHSP9Rm0j9UmZSKeKVDPu5Pk3NIRZh7jgaMY1VH31Jund9ASj5SeKjZ/OqwcF8rxxnBRKf3Nw6BTOVdV2K6Qodmmb9aFY3hJqbRQKH6kKdDWVuoT+SmZoTKpvWQPDzUs2wvOeRYG5zCD/XLVJLB5pE+k23e8PdEsUYjsW3YpSTp5ieGrtKOzLEbHS95AsnhIfd7xZeaDmgua2oQbSrFlftYoMTuvhDuZwG5fvskYMaNVIBV1GoQxT8pciaZG78T3i7PNDaIZNXQtjH1iM9IV3JCFfBYSImeq2ISCvqYqscSvpEp6M8Gtj1DNcEwKfv/BNtF5efKcdCeDVdUyuExJnquCl8wTwWfgayUIAjzl4DhFO73pOMw6poMrbMSnuNcJ/myiIJ0k2ocB5urNT61YFrWzDTbzoYp/pb1tEyrD+k3HQ3Mb2jimY3u2+TIfaQ45X2E6+GCUrGnTTV9ZqZdbEefB6y3UZOitptike5TIIcqumcjjpiBcdnBC/32hOy98e29gKl+ey1gYroI5QUsNqP1nXAf44quGMdDM6BeqZHuVZo9Xinb731ShjIqys/4bDjTLcXU2P4+2gRlfAoT22ZAH58rnkHUJ1empjj0gcM9SPt8SSZRi2HqLEd4EnxWIj1XNs8fWpkdMxgbyqCYsQZq404v+T7d5RN2O8ludetQ4sUdG11Sj2WO0zMBxwH9Zvsjmwc6MMXoicMD0ymTvllwZXyKa+yslzkOCRlpCdTb5WlJ444jR9g+FNxnmnB30feQpdtgZY6JZQ9nmsTARPCMQeo4ZMdG2/BWdazSnDAiVzqIrJ6ugU99p+XymMe2HKZGeYAkx2NKpp2kGvG2kLx0kVh17fA2GaHe5lpZGSk28KAu1iMDoipsaf2A3Cbvo3o5PqkDPAQLOfdgxvchMt5aPI6SsTXjfrMLEW+S1xrU7D5XetIijXe5xEi0I0LSyyI4y7bzPp+tVskuj9FsLurnA5pLCIE2z0NvlycDKyFU176gzvYPWnNTiIV53/d0Vr+r40Id2jfpseoZT3CbLx7UahwmJqKjg5ZpX13jdLGNF8RKVmIFiTzn+zDjLaRJOsVA8Ge8Wa1GIo2JiBwAJrGV8oxgRAYZth330e1Russzkjtn/ZhNslsSL6gtKfZl+fpcFQzG2+WOE5vNdyTagZXuEqH+RV5yTwVVAkRlkQLfMQl9jZ0mBIyFMWK4BhHxXGbobmTwfdhHA/Ba4v1a4v0t6E1cMnFcraTYPdmghr4wNREdHbQMousazsvaphH3mMaYZ6fQZEACn5a5pPn9JzpUJofQuP/pvsIqvkQACSahnRVeEy1O7w4K5M/GIzOaTz8XjBZedLrIfaGG+QhSm1tV2PZHDF3NIC+hcDCCHLchPPRTowVIPVT173PFQivjv5FEYD5nZtOE0hQB6kj+HNkVHtXEwZg4PKYw5cPz58R+IOPHCs0LKBo1fQiJfjWQP+pAUodnFZAUgRTUlh9Si3umWijoUZVeKU2TuHS8knx4+02FryS8Qb3vb/j4Ex8PUAMM+O0lfWvhtxZ+6+K31p1vbfzmd/Bj987HDn5sBvixGeivj7bA6qx+p/61i1/9H2aufcbt8wf0cydBM6glCNobBTQDAhF0MQlqQRGGF7TupsGPVRq0DViPqpXomaxvMz0UjiX6rcFB6NWY0/GW/GxZtEQQ6qtkDeH+KrYWVzey2Ec8VvxYj9BjHJrnYqhsi/adRnpBi1KBUkPVEO6f6KzNlSg1HKtRzZOlieGqLo6fm2UWfX2GqiCcOHC0SVToWzqSPcSw++jz+6fHJ2+fvjt5+vvTV09fv6+f3qssaHF8o2tqYfy2IoyeQm0ISpVS106h+Ee/pPTyQumkJn26mViZxGozcW1zorak0Nok4S7Lncakn5IGL2U4hpOBh0u1pXB4AjmeVUe5c4yoXZDzCB9FlWPhvhED4V4Jjooh90qAUVvdqwSwJeZMWBiUmUncuBIcNRQ/m51RJWwSUqf0m9Q3U+5D8CTTLnuF+145wr3Gx0RhQ2WjQVLXRJmXazWQPA0dn75Jkr0mKLvYtIGKUyE29Rw9HNFPCqlDbPaTcmifeGJ+p+Z3gZ5BJiS9uAtFZTEgOgBpG3wL9waxzUgFR5ZsHLvLvRG6EMxkY+U0R79WNlf6l+DzI1UKTFg+RpqV0jF50haaNu4bIKjVxPRUv/sS4AAiv7L3jhzYGDKKBJmFIrTVa9djvXW5fLhWh48R37tlu/UZju/iEHuo7D5eNrtHH+WAhsl75UhQ/ReK3LW8UEyPxHM8xkN2ft8Fl7ZCJQhmsk1CfHEwCrBD3ut3+lKGKkg6nQZm40nBisLeSWPniBt6nBc+RHa90nH5cTGqdhU6I8XTA2K1agW7XLnfRKPR3i/eOgfF236zeDvwizffKyN9v3ztdDr6tarSkayZSqBHTWMpoa0mamed6oNDV1Rr4qX2e4GnJbkk4aEv3OsCO9eCgRHAifgniJ85nqh8hY9YaUzNEVMU1tR5IQyVCofiX9IvDjr3paAzGDGWlqi6aPpYbliZEC7d30SjgU/3mfoBx8CqVBZXibJNgXg7hP6tH2na1DroUpLYop5drVS/jR69Sy0pmdI4ARHpLrZ+tSLSXYpGYxe54mrV6XQ4T6l7Wrv83pyau4jNT23tsYKn7lIBPhBBuzx1X2oSow6DrayU7qUCT9upFrCxOmfSUuyQn0lLsvuqosur1dY05L5UraBMhC/ErDHMfb/JoPhakVPXtlL3g3C6h4ctFA41G0vdc1QWrFZBP3Vv1MALO/rFD6kSN2oQhE2QK3Ri2NGNJ2YpV3hlCLLIpu/IfzR9OJJWivyvSkMxSAaocmQ6gdlvcK+EvokGdTZFtcHg02D4Dj6T2Grvm3YRR9KE5tFwSqHpmxe/eWDeunh66DfBKGDhq/srts1jtg49w/ZRiLgFxQmcm1ubcQrjuptxEuPwrgFdFo5mik+liTGh0h5qO1brte9Ea/22iT4oe2G7q1qht11ygoqpxWy2WzREK6prKfKNuuVV3TSi7hvByEWoPzDJZ9TeUH91DnoFfRPAojJ/9/uTDWI/SxU0Yg4Kake+T/xoAw3lPgbyTsktTYQFQhxsllY0YgJb9lM3U71CDMOAgx+wpFxZJULAQCe0oPCDkZQcDJukLygC/U0TSCXm8GT9Y/BSg7e53ADOvTXhab+Jo2O/eRcPmnrLl9IJWsEXqGVaAqP6UwMIwGN9gPHvKi+5t1bFKBlSi+2R7se6ykCxXgGwXvEDHyt+4N9fcSnLl//Risufqriuse8Rrn3vB8h+plhRJzsgUmo0rM2q3K1LOUqJM+pKaM5Z8I6K260J+k+zTDOH0KyYuteKXpQRVKo5QnLPjMxXkjAQ0hRyrgZbO+m7ZleiV5hwowTYaFjfa5OhYsXH2mam3sAmxn2hlcBXem/qHA1MJ2qkZWcj09s2lOP2PeJ/16d5Tw/sEqxaa4gLhNiqlafzeGwwaGrx9bn4KXDF/jidBlYsbN6LBa04ryOC5GZ+ojtf46KIoim6hogKbWwbJxiJEjlqHydkIWYletHgkyR0jipWSDm37aTR2Pxl7DbTMvmJwoFhSPj+xD//m/UTcpeD1lSOlTkJNuyCJFA9WVwo3ZaiGYdHCh0j/3Xn0l7jRIF5XOCIJithn0LOkTIZOH2kTMUrYor9/0EdV8g4btTI/abZBu3EBxxvn2mitUUhlHU6HRobcrUKalYYRnSkVDRkmZ7Q9PIWf5T2x0farwA1jPT2rVSEfSs1YVAsE1IWtvVy4BJHsvarhvNvk04LWefS0svaVPcgSms0q0/1DyKLvN1sSLd3eUvhyGiXo9yIImjfG1iBlkYH1t+ztHrUhixk4jYEIQ1pWkGa3oU0vQfStAaJhXWZtLR2uU801Y3XjSIcvRHcwWfJbFH4Y6Ff87BQrDxpoWLw5QS1dSfdhPNNVD5wzgVXCpSrFJf4K83vKxP/QunfI22I9Zu5M+3ERD82ycs9dzQjqbbVKVTunFPoN1FcmarcRFFUrH8eoa2B7yPVDpxmWNPgfd7eBebC/a5t9ie4GyHcU9yqEe4HRUdfJ6pPypgB8S16DT2ISAkGY44qClgQL4MlcQ6Y8mX/RA1OVLiECV+gIniOP7i3fU0veBEHXOjXUS/uo+KINsT7uNUJeX9JuyBLViqTFCyG0o5Hu/xitaJXBz1jX1NgtMsnOhbj5mycpSpJF9oLQ8IDzdjpwiEsMhlxjomTUY8ltk2cgSeQ9mPD+j/hyjDmKW4+5kZNdE/FCx2LpXg0VI3xiPVntMhznOrCw7i/HCzDuML/E4N/a2PbwcxExeaAcG+UGX6ktTnVyjt6q9nzgeQt76DZCVqt1r7RVHq9pm+MM/E4CPdxceXjBYQkOhQGHJvzl/lyoG0diqDvbYWb9Zy+KbAZ9J4qY1NVg6U20xbFkZkxg7lWfH1U5SvahOa1thH0a5NMp3Wfogcvk1znoSgDAW1JFX+vHDKebhod4x9qKFBLSzubynFqFynh1qvfspsPyRIblDaBxpGQK7tp7/f7TRoQszJkZfreFQR8jsYZVsZjxsKMx1zabcj6XNqtRkMN6ttKLIxpH0qzfb21dKoZP7xR5V5XS3+x6h7kiYIJFXrHxAna+9Au9mEcv3xPnRa0jNtGY0NVbaAJ3AqifcIm612UOEVlPVyU+JSOr/0WGlzbfoFi24ccMXRa644v2I0LzVcbjcjMVjUVqoNaWVCknGX01CzmROtaayqi93LD640eIbSuL9W112JAa/uQPFPgLtEnqTeJq/2O15tgVB8P8tWOFry6x/4F8+CKEA2n3pIfbo+YH2lKS+7zSRKbPBF2K0AyMFU6xLtFk6KCTkIyXdFw2U9tA0f7qi1CDCQZ8EqeMNCmqFo3jlMvXcqrViu5W8vADA+KeYvmfMmrj4gmIGIzkkHMoDzk5bS0DUsRbJJpY7cWE4z4P+spfAxjkqKXgG6XpVqmXDIgneSNUUvekGbS9PhUocMtE2mTNl7jpXi9MLFThb/SQXU8wq2U75twZQ2arKDJCposF3acxySt5U7ReZATN8cNx7eCGa3zRB1ycvBHGwf4BbZ2GChObxugndKYZPdxoWq/u7nASgBG9r0xWzc3uHHi5OjsQIu7OUGwkeRyKoZ2DoyzKLJrq4QLnZm2U+r107CVoVUEy019TXXW5TCrnI2Tot/U+rswWyIxWmw9xeMWTRbqFWSLntX+iF60YHCKg5EI3SARTJI+uZyYKprA9RQ1LfD676AYnccU7bkP1Um/GlFJuZ9BHiXv7OBAUiA+qRCf1BCv9xvuwc3GUE9KFpHAJzKsLcGwjfFupX2e4V3DND3g3ODdQWjS5ymjof8aRdQE+Y0e0vVUOLyrYW32WuIaH8XhUIxPZkzisC+xW4ON7d2XW8r3zdW+2RzaXuM+/qklrtxY31qS3+jaUkfpc0eEHHnIi808Wut91toXvew8PFIs/Zu1ZamYNJT3yawwU73CND1gYu+uNGlt+06tVtS2I8XuLD6h2rij8u/du6Nc/qgcrhfKcXB+KJQbtebXDWswIa63MRFpev61ZS5xLNwTJOk7xLf/7sK3pJRH/0uUgsuNojOu6DJM0y3U1oKOTtFq+J36a5KCdp8g6aU2CmjY6ReKlxoYopM+2kmUecliQVfj8Mhk6GNI70mcGfXfFo3SJm3aaJCo4rFCxWXothJaSsTo3SOER1attdQbV1YVW7DOkeoZcr8ifwOb5O47ZfwGwZ8izuiHB0icaFqLU94dtG+S6Kkye8JnejQU2Df1/EmaXRsQJCncgy4NnsH/G8JGEfG55N12AH9Inik6DCt4H70TwUfJY1V3H+v4rErQZPBF8kRnSVMGv5ehLGW9L1IfX+20IMBvOuS3AjDeP75JnqryohYnYCWgN/d+QaDfCjAd8GG/iX47PPRAAm9K+OjoZD/AR7dwTfKbLF19uK77UQJaAuEVfAz+3P7UNB8eSDyE+E0yeEZvbySDXzcS/yFNUpFuReOJ5wNoHfjtJnpUTzH/FzSIo7ffZe3wUppuCuP/CAYiFLbfqVhO9oMkQbdKE6d3d49pgl4IWqjNBa3QxoKk9gnarac4YaJT4SPtNgEvbDrRrwu8u0nCkqduJGFKp+dTdyzxAP3EhBYUmvPUfaszXfPU/a5fL3jqvtOvl7iNLOGUZ45FZi6CwRXP8MTHtcBVGoMzntjarqfN4Jh7cMM9OOcevMUVfmiskXt+uz/WXBaPihUbI8Q9d0QvstHS3bZHh4djGNtc3wAp+WIYNaYjw57PebUBCRH6gDiHscPPQX9Azy2cn7PbnI52mRMhslLh+53GOQE6Lr7BeQMP0J7rEyG98/uqeJu6U8n9TuCZ3YAdsb5b3WObRw1E7TnitVa59V+0/udAa0wsh1Fj8vOYKNt6899v680P26pZ1zEseOacIue66S+KnZobZ0GGCf3rRuOycBZS3MQ5SbRjmh2VZTtxJHdO0akTlNU5KKujp94LqvpbPnfQGwj6ftp2GWLbghlCmA3f2jZdLUj6sp3Ni2jlvYnJl/hbnjk3pUWE7F+w27d8bl84+kYwwaVDllXi368BarJEX/VsW20l1g7NBQ4jUFh0Hf7Fjyp9YSq9LpzzvuUX/w9wRCSl+kGvSJJTEvirkHJ4s0cGQJvRfX87jmn3aVR/Ku9/tKiSX3RaOIZ+QKjoWOBeAsWhajbrJbOtaqSw0TboJLaaAb4YMP6BX4LZLHZGFz3NftHj9K8KX/ywcCMNneFy9qqfafPVD3zc7zd7icM/4BD+cHjYhKhBk8SYkXC0ELS0nAueAbJ5ftZPBmdOYrfDtmMlzhkJZoJf9bPBlZPZQXs/DNr7uOt2hZsRR4JH2rEPngkcl0dn87TaHqgm1Fl9JuQ53vSiBn6r1Qn9Vqu17d3FM85dpjL0O37Xg4kMd33t5WVOr9cSnapIWmaiZxV8nJNHqit8PcOHwMdMhhIifIwxuMDHMT5uKAs+3uLjAyZ5JyvXMB7uxBRB9FUAJ7JwxpIyeIyZlhIdLb7A16f4+CxDVTP/i9Lt65nwltcVXcG6qpkMj1N96Jb2ob0ydZm9dswRU/r1FJ0W0B3X1ZnCtLKb1mb4jEq1iltkGRVvlRfMogHWShT7UtSH05TffiY8P5HhbxLey/CBhE8y/FXCaxmqFF7JMPDgpUSSgEfY9ucybB+guIrZPiJi1jAxcDyE8yfBeUZwRIpwJMHxDzScDsJxfA2oRYA8AuTXPFvN07qvdNxv0DQ1gwjGsABzEzNcwwVcwilcwRkcww2cw1v4AN9LvxUdBu/qgSOeDyZpONUW0zP0QtHu81lvZtvs+3BWHB/TB1n0OZbvQzWMRugxBb8seeJ+kbDgfru36HOflpbfh4tRb4Fa+yS2ln28c2TJF6QXXhRS/5H7UQ6sY75ILR/H1Re8P5of6zcf3xAw98FjoTnUOOZ+b9EfmyLw0nDb1odtxrT3tORjvDvAhxn3a+1IYmuOpyth7nBsE3j9ebEzSPfZz2l7Edd/q5W/yxes+orA3w21LbsGqmG+G87Q0dS74WxkI8w7WEI10jBC5wjZ8F2BsRGPWC9fJsZD4zjCwzvhOX/LM/jAj9xXRrrr0Rc/POdH7hOck47c95JSvCxSTEQcoftRTPJJJ3mtkzySyJEvOG73Ya3HcMNj7KMpx509D67wKNM1ephawhm/dnwyVUdbQfcPObju8+cyvO4/l4z2yesfjlz6hD9sc0MJBbljfp1aGV7TCRMQhvSO3M94CAdLmzkTOMWXKYz5Ka50Tx1+aUQP66LfnzD7tEf9f2OLET+u1runupsNGL930bjssUvymqY3ry4H1kWDXzo+XNj8koXUfNtGinMc7CB9vArpT+Nvhv5usFfWdOwKyeeiccZ2+ZWWKzzOJ42GNeFLBje2rvWUYxPmFOgt+lMbUxBRTe3JCOZ4vpBNbRuI3LBm1ybnf4bgK37RONMDAzvSvhrxKLWmsIQbByPY2tgYXdBpRhpTM2fC8EjgRc+0Z5faY9pILUPiWNaJQ2dkZjTe2LpPcCjeh/j7sV6s5ami/FoP4iXUtrKv77AymGlmFtHtFAPchTzMQ/yx/cOcRXycWmicl4Ko7vYqk/Z1Utz0xbhGw0ePlsX5jaEa4bquR0BiOm3t6BPBRgjT6TQoAuTkP0y8E6HPG9r4jVLroENTELOkk5b7kxFNJBc1YQAuU377O3H1b+VM2m61UEsQXqTwGz7XcPozqaoJ4Sqt3EAbS3qrMEY/FrBrbRjWK/cz2bKgSNZX7lRi1FT2Sdpiq9VulaDrbSXwfcbqpuFnVclcuJ/l4DQNL1OQ/PaLDL21vtft9/rZOXPCFT0ctfopnn9/J4cpskPj7EL7rqnFH5j4rrcZv1/Ed7fhKPebrHnlwiAo943kGST8wNzyizXM1pDTS4JOwk2dEeo8tVA+fCcBvbMiWQr3SMIMBLGwTI8TvD72C25mPZZ8hm/YrmawWZ12L+Htnj4BSonGRdELU3RP4riIYJ5agS60GdBETmVKU6Zyf5M8M6qnCMO/o+3fWrgztGJ5QyeOJD8A4UYY8RtGLCRv6/phGUSOx6l2ulleWPBMbF1dpe8m2HuNjrYuM4muVecLtcfq3jVv0js7sXr03i+DFP55WiQFEL2uVuZwAJ0J2Datd4JeXs5aqAFC55lK4e449qg+dKsPPABRMh6TmJJXlmK9ETA4t/COixyWfAaXuDCs7koxMy+mNpMv0Xuo1+ASDYtuK1CVouUdiUpBQ5KFf7Pd8ducR+yWMn3Q5zQ+CI6+GaV7KY09PL0eW/iDd1x9sDBKA+/6FXB9dIN+3D8lx839XbT8wNqsVpZ1ZHVRUsXVD55aYf9o+tUibpxJKcZqZ0pXxezQRaN7RTHlQgqL6e7yI6vFiqwL45W75lJ/51KoaTa5P/uJ1WJwQSDsLmw1/ILBRd9vr1YXfQxvrzGXSTrJlvpyj7vApXtBfjEvQLrXetPhSnBC3gOl8TiVvO0HjWiAqDsIqe8RnxvCEmI1LDuLYEXQ3dVHcjH4b7e9vd9stTSILQgG7fEsOst3cqHubV7Vvb8qXDp2Gz5Db9EEsdFoGbKyNulli2CCqpVB+M6iYx81yKnk0Y+B3vwAaLMC2gwLvFVAH2ivqxFFuomkyv/rVW9VpbToRCzlHpQddYUdVS83/8vGbBbDwnpOIblStaLbVdHtkOzFTemNhjXlWDRM+zkFcgZTA8YcpMKTG/pEFR3h4KZuDmZjh+WXXBVlwwUxxemP655LXfm02sXAG1imjK71yh0+xc30KSHF4VONnVIQvMKroBBdXtXCTtXCDrYQfY4bUtVcLa/nnnIPxe4Ljg4dp6gyqrX3V2rvlTwsQ7ph6A7KvZI4r10UW1AXjUbe17cU/qdtvahVUAtZ9R5V1KN3mr1fNXsfm42bg/9ms0VabzaGdMnyf7PZsmi2aW+3am83rJWuTV1pIBXViHaLszVYj5LpFTOEHO9cJvkl+ri+h1t9sNgGx3qGpw+vZb9/0PChmKJ8VuPRxVy3qfCrqntguFWVY5laW9PhgVemP6DZeFe689I++63FIOjdOyvoEsu8xP/bZInVqe1KIgmUaYKQ5tyJZLePqyoEXsdgwMgI76wmfpxIvrt7hAqKE3wcWQErl+1lDZqbi/YktvDi+FoVD6BenRMrYHC1OXsFFbROPb4Zbk6lp3gpyA7eUVHvvDWC3EL8QRMrgk3U+Dc0EbFdjoJE3+981XbX27N1rjIpipK0fja/f16kQWnAbvZnC36I/1bV0oo7HxB3LjgyEXWdL6OBrjXlM1IgTetgc4VX0RRstxpdM3yLa6y0nI1/QKcHHSM7tLAZN5IfWW2Gul84sUisOzdRfhFxLLU01AKSjTBTP+h2VqtdSWspzNJvega9GDfYw92gyyi9NnjdC7djdjJZqeTz68vTbJbfK1S8rbPDg4odHuyH5uKvt8jRjmWPGVJ+J9GgFONtezTiRxh7YhlnNT3/oI+feuxOQq8n3Q+4ljjBY8MzfIvw8QGDY8n3aZ2j1zUYu4ZT8z6Wa3hRWxVe8jmt43G14x/AAk5B4mrnBUha7VA5C1wuEeBTfLuzs4ZbBQVZ/lDk2sROxTwPuhvYuZE29pLRkPTmeM+sHB5ZWDwbgTWvTjLg7uJ3fZGi3+mbwTRn7KSeSGPZYM6MjHl5rST6NqwyasYd2PX82CF1cCRmv5XbKDjFu5Q0uUgxF9F9OEBxxdQFjd+nvGkj8wLkFHq68fdr1UFprPmXdUGFmoZi6IaF1jtr/yfy+L59ZO3jt33t1osQNO2X+P932qfPBjiOIdgC5xdrvTEeeAd6cVi5iyBkvkMnl53RvUTlODgz5kl6hm6lnSx2iAfeS2DVgMDlN42Ap7UR8Lk2Ap4UI4DI39fkj22Hp/BZD4An9QHwtBwAn90vemP2PX+Cr4S6mR57pTnKe3Z3jGzurv14mCwk71ABnwg1tVumsXpV/8DrWttemfeFXMNLen9fje4APhGvhNfwSrftZb1tr3XbFpK/0m/RRmvua0vBDX/UCkLKvfPsxrRzEMrKFMDEBl4hbCC/zvu802jM+uRz+haFDrJiWWqNwra+4QWt1GvESFHez/KQuT4P1dgt3oKWxzQbuubzAooZntfMto4s67qCZFMgaDHW79fjscCNZPeUflJPAVhtm1cxeq0/v5OiioHatD+HogGs1JwEXrvqGtO6ZoCfCWd3RMVask7rrynZ7BPfQ8lCcgPDopm26YdaG2NS+lWf+6HUh/Lf4Q2nUq+xbH5kQidlLDa7eH8qtWxSAgwqgEFYzh6R7vnFX/T8X/R49P9rj/+we7asB+7pmLOKVOq95LerxM0Klc27fXP2t31jwLQqMC2j0ZvVWQEJmEtnRjD7RsjkGHCmgLPRd1oRLuVP2vLcaSzCeCcG1tRBbopuOSVarU9ZOKEIU8xVpXyoi7Yb7rOnxj4lG8b68h2JNpmTEToMBNue6J2LCY8drD+Uqoy/B5bVodQEaxKYjays5Y6rmmI18Lyt9UXgte9DcjaMcRqm6szQ69aW/VWVvaPXYW/MaU1aoywdPjNOcZZ4KZjE32Jduyz2HLJqnoqdJaATxHJteKYX3wqWdBIadcC15fm1HEQhLT/RaoPtUp67ylS6L+JHqlS9QjaR+1V79ov2NOoLc2xVfWFeOcBuYPvY3cILTvczxXer4ruh6YVL7kNt5gu8g+qL09z45Hvmk9Mqt5MLTfx687rK+k1rx2m9x81N6bVrmyxty0brwbditVrumvPVVJt+OYV+lgOqOcWERBP0ylYr8spjuntJZpp0pnvLh2rplGjXQutR2k7AF2P9h6c68HCv2YYgM9EPdJ74HA9nlburmoxTfRQGf7hJCmg2Sqexvws67H6IX0tX7ji4MUVP0DkrYc5ZkSErxuPVcsVVDXQXuoX++tnAKhJ5mynIKcc7vOWMCqSyQgujbG7qUtXyHdUIEx6WceiGSxjbsp17C8GkkOpDMLW2YczGUU+0IRfVMENrKUeR0RRDb7KF025Dh74HTqvY9104tKWDYxn7zTigW/x4WBe+burj957il6b4pTb7x/QnwiZNzqDTIvdBNRlt4AfdMs4sBVYr0j+YBEG7gycVsesXZFCypOelPgek3/G4wSVHO+DL2vYnUWHlc5zYSi5NbGiuf0jr3ho3DKZP0cxF32Z2ioYlpYN+ICCnEGw7b/zJ7KfDQAfNrH06bOqwNnAqwLe2wJ9bxmWFtsmeCzo/fi3IbHtcmm3nulsjLt0jdE2N6K/5bLSQk020Td1c8Fjb0M3II6J28afN7paC57gwEKTzRwO6mvdFi91GeuOv5qzQqlS61QXyx2kvdxyIjMdVvJ2DoT0v+uImA17P2BqXHukKN/k9YcSimmu4msNNbWEomFM7ZHOC3wmqQJvCWrMfW+bDfmOMn/Yb4/otXDWLNL1fP3CCUFsLvtW3fnTgQ3rffYjc74Dib1NzH6JK0Vc0vcq0dtWGvtjEXDkhoMXIjbfJYm5wNO4iGVujcT/BrIx1i6TljTKqj1umjlNYLJoEeCuVXn5Swn7p0m+ngJDPaQlnnPTX7on6RtfQSjETUU53Em+WeWha1WhsVFts7Dx/r5kcIMwPqdUM4G1Kt3wtZrPaAQYqAW81dqsiizuS69X6U1i3dH2vxW7XoIo7b60EtCfmXVnZOMSppU8N5qmlCs/kqZ5vakT5TFh7eD/6ThwlMzEJd/ZstAvheLWn0tcIxVzicce8cKqfHybFnQoFxk1vFvFODuYuvhlPKp6YQ25LLefFOMRmEOMQ8yDGITYrgGKovDwGLQRSbEqC58RoXxyHrIQYhyxmvUa2arIWU+wstWI0TM3LT05sJuS87xWz4S66xrmN0lDWD+jkDEwvhHQPllitLMF30dVF0TsSnZP3EozMateir0sk+3eRPJfZWKA1A11HTGhex0kazWbXt8lqhcr39TpHj85riGdITknRpxsX3WJflNZrGxiKCwxlGkOZxlD2IwxleIq/hqHsv46hGCOTLQyhx66ahusupggryU1EY+M+dMUFujR1CnecWllB4jGReLwFU6STGoXH6Fu+xmfTzev9fjTMyotXVdkk4UZpodZiVQ1FiQhWdie7xUKRjx7dzz73JiKeRUrsVbbXRRXv/7p3dpPM9/A66KYfFt8dGS0pzvHboY+O7VWjsZcuLk+FxBu6r+coD6N0dSVmA/OLxqoGAd9T6zZOqWPr98DhFcOVO4tjwemiUKBb2CBPQ4HJSdTlXUjxkEvC36Gvl9LhSKytC3drljN03A6XEnuAjnm1P1f0d9RPifbRdsbx2/20ypJyJ9XCYtr323RdQwCpw/2O1nP3k9Uq6R+sVt1d9JnU7aerVUp2Hl4fjcvwk9fPVqus31qtutyM1rgqQcdZKT/Q1vm5bmrR+ByPsx+jRJC7N3jlb45umloB5OjpJ4a85ionR0OTFHIjn2MQcvdPwTHG8SF3Hwie2PuQu89MigeY4ldM8UynEIpbGF1etAp5bYEQPMxJMs5dVd7zV8TIWswzisElAeRuqrCsxO5Ajg6DCpOnh/gFk2WK6wAV1WggcHxKer4SAytHB0P4WmPuJvMjrHuibJP/d8GbD+kjGgnl7g06vMndc7yFI3efKC6hdmlczSeLQTe5REIRBA/847H5C321kaYaEqoDMPaDCr35Gc9E6KUI0CqQltGKvDAp8sKEjpR4wNEUTQza+3gjLcnyRRRtDod6w1ahzyon0FUkav1IzgpKv0l9/kmx+jmiT4V/GuOZRl9Kak5yfxT1m03vJNdSBGYwLtG+UGFfqsLMja11CDqqhPLlTqFf7hR6J8udgv9Q+haLWsHv7xb8vg6FLlbaKPgPdbfgrSz1gtEVDDe3q5LjF3O/6je8XRDwGgH4rOC1Psn9pZb0S5n0Dd5rB3htbpHu91q6P9TGla0fMeV7hTdAbN6YpW/U8rTHmTWz0LcaOZwpeYCneRUSBTqq4HiD6VsB5+a4+jvFr+RQkHu338iFRi3iDUZ8qEX8iRHfaxEPtNc6qsi08O1HP4vy0DSdZTcnp89KxwK0DnaPReFgCK+hME7koLgs3GkxIIdj4LQYC50WrZ1T6IKELspMszR8IWGchk/lmq1p0uuRmLuUiYpOZyhMFK9GvBfRxHwoXt15MhfvpzJbnE0tnF9xHjz5m3mvEF6tjciSOfz9dFdEdlq16E7ot//VyY1OQO36m/NbNRnXDEq3pzTDmYw/MAf3T0telmq45C3kGCeGVM8gdIYsGWhrEH2GSvJtt5GlPerG9GmOKaNXa+RPjt8p/Vs7AToqRZ+p0tQDFHeUsdvhbdtS/X6L6QS7PrS6fZqA8YQq6xUubEnhVcMgJunqmTTRfLmmvcIjKaiE0k4EU+2lTjvDIw3RB8EV3OXx5TLTKhn5W83Iv+sf0vr8RL5qilDuqazNE6p2J4HfKOaBKYrO1MAK8YrMZ3y8ONr8XtMOkEKLT0pNS2BzI/dEzIQSO+geD53t6dqe6B+ydj5Bg+6ofPtQvi2lFpj1/pLhL7Un+umVevThiLxJcUSep2vDiDYHpPrRgFR/OSB7uZjFLq7+XmWTxUxwzdCk4Eeo/UgEP0nXa9b7P/8X"));if(e){const e=new y([r],{type:t});return w.createObjectURL(e)}return"data:"+t+";base64,"+(e=>{let t="";const r=e.length;let n=0;for(;r>n+2;n+=3){const r=e[n]<<16|e[n+1]<<8|e[n+2];t+=xe[r>>18&63]+xe[r>>12&63]+xe[r>>6&63]+xe[63&r]}const s=r-n;if(1===s){const r=e[n]<<16;t+=xe[r>>18&63]+xe[r>>12&63]+"=="}else if(2===s){const r=e[n]<<16|e[n+1]<<8;t+=xe[r>>18&63]+xe[r>>12&63]+xe[r>>6&63]+"="}return t})(r)}}),e.BlobReader=vr,e.BlobWriter=zr,e.Data64URIReader=class extends Sr{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;r.assign(this,{dataURI:e,ft:n,size:i.floor(.75*(t-n))})}readUint8Array(e,t){const{ft:r,dataURI:n}=this,s=new f(t),a=4*i.floor(e/3),o=atob(n.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)s[e-c]=o.charCodeAt(e),l++;return l<s.length?s.subarray(0,l):s}},e.Data64URIWriter=class extends Fr{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,s=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)s+=n.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=n.fromCharCode(e[r]);s.length>2?t.data+=v(s):t.pending=s+t.pending}getData(){return this.data+v(this.pending)}},e.ERR_AMBIGUOUS_ARCHIVE=_n,e.ERR_BAD_FORMAT=Xn,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=On,e.ERR_DUPLICATED_NAME=ks,e.ERR_ENCRYPTED=Bn,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=Zn,e.ERR_EOCDR_NOT_FOUND=In,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Jn,e.ERR_HTTP_RANGE=ur,e.ERR_INVALID_COMMENT=Cs,e.ERR_INVALID_COMPRESSED_DATA=Dt,e.ERR_INVALID_ENCRYPTION_STRENGTH=Ls,e.ERR_INVALID_ENTRY_COMMENT=Ts,e.ERR_INVALID_ENTRY_NAME=Us,e.ERR_INVALID_EXTRAFIELD_DATA=Vs,e.ERR_INVALID_EXTRAFIELD_TYPE=js,e.ERR_INVALID_PASSWORD=Ae,e.ERR_INVALID_SIGNATURE=Pe,e.ERR_INVALID_UNCOMPRESSED_SIZE=zt,e.ERR_INVALID_VERSION=Ms,e.ERR_ITERATOR_COMPLETED_TOO_SOON=fr,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=Gn,e.ERR_OVERLAPPING_ENTRY=Nn,e.ERR_SPLIT_ZIP_FILE=Qn,e.ERR_UNDEFINED_READER=qs,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Ks,e.ERR_UNSUPPORTED_COMPRESSION=Yn,e.ERR_UNSUPPORTED_ENCRYPTION=Hn,e.ERR_UNSUPPORTED_FORMAT=Ps,e.ERR_WRITER_NOT_INITIALIZED=pr,e.ERR_ZIP_NOT_EMPTY=Xs,e.HttpRangeReader=class extends Pr{constructor(e,t={}){super(e,r.assign({},t,{useRangeHeader:!0}))}},e.HttpReader=Pr,e.Reader=Sr,e.SplitDataReader=Kr,e.SplitDataWriter=qr,e.TextReader=class extends vr{constructor(e){super(new y([e],{type:"text/plain"}))}},e.TextWriter=class extends zr{constructor(e){super(e),r.assign(this,{encoding:e,ht:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,ht:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new b((s,a)=>{r.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>a(t.error)}),t.readAsText(n,e)})}}},e.Uint8ArrayReader=class extends Sr{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends Fr{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const n=t.array;t.array=new f(e),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},e.Writer=Fr,e.ZipReader=ns,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new z,n=new ns(t,e).getEntriesGenerator();this.readable=new D({async pull(e){const{done:t,value:r}=await n.next();if(t)return e.close();const s={...r,readable:(()=>{const{readable:e,writable:t}=new z;if(r.getData)return(async()=>{try{await r.getData(t)}catch(e){try{await t.abort(e)}catch{}}})(),e})()};delete s.getData,e.enqueue(s)}}),this.writable=r}},e.ZipWriter=Bs,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new z;this.readable=t,this.zipWriter=new Bs(r,e),this.je=new l}transform(e){const t=this.zipWriter;let r;const{readable:n,writable:s}=new z({start(e){r=e},flush:()=>{(async()=>{try{await t.close()}catch(e){try{await t.writer.writable.abort(e)}catch{}}})()}});return Hs(this,this.zipWriter.add(e,n),e=>r.error(e)),{readable:this.readable,writable:s}}writable(e){let t;const{readable:r,writable:n}=new z({start(e){t=e}});return Hs(this,this.zipWriter.add(e,r),e=>t.error(e)),n}async close(e,r={}){return await b.all(t.from(this.je)),this.zipWriter.close(e,r)}},e.configure=de,e.createBlobTempStream=(e={})=>{const{thresholdBytes:t=ha}=e;return()=>{const e=[];let r,n,s,a=0,i=!1;const o=new R({async write(s){i?await r.write(s):(e.push(s),a+=s.length,a>t&&await(async()=>{const t=new z;n=new d(t.readable).blob(),r=t.writable.getWriter(),i=!0;for(const t of e)await r.write(t);e.length=0})())},async close(){r&&(await r.close(),r=null)}});let c=0;return{writable:o,readable:new D({async pull(t){if(i){if(!s){const e=await n;s=e.stream().getReader()}const{value:e,done:r}=await s.read();r?t.close():t.enqueue(e)}else c<e.length?t.enqueue(e[c++]):t.close()},async cancel(e){s&&await s.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(r){try{await r.abort()}catch{}r=null}n&&(n.catch(()=>{}),n=null),e.length=0}}}},e.createOPFSTempStream=(e={})=>{const{thresholdBytes:t=pa,directoryName:r=ma,getDirectory:n=()=>C.storage.getDirectory()}=e;let s;function a(){return s||(s=b.resolve(n()).then(e=>e.getDirectoryHandle(r,{create:!0}))),s}return()=>{const e=[];let r,n,s,i,o=0,c=!1;const l=new R({async write(i){c?await s.write(i):(e.push(i),o+=i.length,o>t&&await(async()=>{const t=await a();r=F.randomUUID(),n=await t.getFileHandle(r,{create:!0}),s=(await n.createWritable()).getWriter(),c=!0;for(const t of e)await s.write(t);e.length=0})())},async close(){s&&(await s.close(),s=null)}});let d=0;return{writable:l,readable:new D({async pull(t){if(c){if(!i){const e=await n.getFile();i=e.stream().getReader()}const{value:e,done:r}=await i.read();r?t.close():t.enqueue(e)}else d<e.length?t.enqueue(e[d++]):t.close()},async cancel(e){i&&await i.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(s){try{await s.close()}catch{}s=null}if(r){try{const e=await a();await e.removeEntry(r)}catch{}n=r=null}e.length=0}}}},e.createSyncAccessHandleTempStream=(e={})=>{const{thresholdBytes:t=ya,directoryName:r=ba,getDirectory:n}=e;if(!(n||"undefined"!=typeof FileSystemFileHandle&&FileSystemFileHandle.prototype.yt))throw new u("createSyncAccessHandle is only available in dedicated workers");const s=n||(()=>C.storage.getDirectory());let a;function o(){return a||(a=b.resolve(s()).then(e=>e.getDirectoryHandle(r,{create:!0}))),a}return()=>{const e=[];let r,n,s=0,a=!1,c=0,l=0;const d=new R({async write(i){a?(n.write(i,{at:c}),c+=i.length):(e.push(i),s+=i.length,s>t&&await(async()=>{const t=await o();r=F.randomUUID();const s=await t.getFileHandle(r,{create:!0});n=await s.yt(),a=!0;for(const t of e)n.write(t,{at:c}),c+=t.length;e.length=0})())},close(){n&&n.flush()}});let w=0;return{writable:d,readable:new D({pull(t){if(a){const e=c-l;if(0>=e)return void t.close();const r=new f(i.min(524288,e)),s=n.read(r,{at:l});s?(l+=s,t.enqueue(r.subarray(0,s))):t.close()}else w<e.length?t.enqueue(e[w++]):t.close()}},{highWaterMark:0}),dispose:async()=>{if(n){try{n.close()}catch{}n=null}if(r){try{const e=await o();await e.removeEntry(r)}catch{}r=null}e.length=0}}}},e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await b.allSettled(er.map(e=>(dr(e),e.terminate())))}});
|