9 lines
184 KiB
JavaScript
9 lines
184 KiB
JavaScript
/* noVNC 1.6.0 (https://github.com/novnc/noVNC), core library under the Mozilla Public License 2.0
|
|
(https://mozilla.org/MPL/2.0/; source: the tag v1.6.0, core/rfb.js and what it imports).
|
|
Bundled for AnyBot with: esbuild core/rfb.js --bundle --minify --format=esm --target=es2022 */
|
|
function ji(i){return i>>>0}function it(i){return i|0}var qi="warn",L=()=>{},V=()=>{},W=()=>{},U=()=>{};function Zr(i){if(typeof i>"u"?i=qi:qi=i,L=V=W=U=()=>{},typeof window.console<"u")switch(i){case"debug":L=console.debug.bind(window.console);case"info":V=console.info.bind(window.console);case"warn":W=console.warn.bind(window.console);case"error":U=console.error.bind(window.console);case"none":break;default:throw new window.Error("invalid logging type '"+i+"'")}}Zr();function Bt(i,t=!1){try{return decodeURIComponent(escape(i))}catch(e){if(e instanceof URIError&&t)return i;throw e}}function he(i){return unescape(encodeURIComponent(i))}var Pe={toBase64Table:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split(""),base64Pad:"=",encode(i){"use strict";let t="",e=i.length,s=e%3;for(let n=0;n<e-2;n+=3)t+=this.toBase64Table[i[n]>>2],t+=this.toBase64Table[((i[n]&3)<<4)+(i[n+1]>>4)],t+=this.toBase64Table[((i[n+1]&15)<<2)+(i[n+2]>>6)],t+=this.toBase64Table[i[n+2]&63];let r=e-s;return s===2?(t+=this.toBase64Table[i[r]>>2],t+=this.toBase64Table[((i[r]&3)<<4)+(i[r+1]>>4)],t+=this.toBase64Table[(i[r+1]&15)<<2],t+=this.toBase64Table[64]):s===1&&(t+=this.toBase64Table[i[r]>>2],t+=this.toBase64Table[(i[r]&3)<<4],t+=this.toBase64Table[64],t+=this.toBase64Table[64]),t},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode(i,t=0){let e=i.indexOf("=")-t;e<0&&(e=i.length-t);let s=(e>>2)*3+Math.floor(e%4/1.5),r=new Array(s),n=0,a=0;for(let h=0,_=t;_<i.length;_++){let o=this.toBinaryTable[i.charCodeAt(_)&127],l=i.charAt(_)===this.base64Pad;if(o===-1){U("Illegal character code "+i.charCodeAt(_)+" at position "+_);continue}a=a<<6|o,n+=6,n>=8&&(n-=8,l||(r[h++]=a>>n&255),a&=(1<<n)-1)}if(n){let h=new Error("Corrupted base64 string");throw h.name="Base64-Error",h}return r}};var _i="ontouchstart"in document.documentElement||document.ontouchstart!==void 0||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;window.addEventListener("touchstart",function i(){_i=!0,window.removeEventListener("touchstart",i,!1)},!1);var st=10*(window.devicePixelRatio||1),Ji=!1;try{let i=document.createElement("canvas");i.style.cursor='url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default',i.style.cursor.indexOf("url")===0?(V("Data URI scheme cursor supported"),Ji=!0):W("Data URI scheme cursor not supported")}catch(i){U("Data URI scheme cursor test exception: "+i)}var $i=Ji,Yr=!0;try{let i=document.createElement("div");i.style.visibility="hidden",i.style.overflow="scroll",document.body.appendChild(i);let t=document.createElement("div");i.appendChild(t);let e=i.offsetWidth-t.offsetWidth;i.parentNode.removeChild(i),Yr=e!=0}catch(i){U("Scrollbar test exception: "+i)}var fi=!1;async function jr(){if(!("VideoDecoder"in window))return!1;let i={codec:"avc1.42401f",codedWidth:1920,codedHeight:1080,optimizeForLatency:!0};if(!(await VideoDecoder.isConfigSupported(i)).supported)return!1;let e=new Uint8Array(Pe.decode("AAAAAWdCwBTZnpuAgICgAAADACAAAAZB4oVNAAAAAWjJYyyAAAABBgX//4HcRem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5ZjkgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIzIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9NSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4MTExIG1lPWhleCBzdWJtZT04IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0yIDh4OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTAgd2VpZ2h0cD0wIGtleWludD1pbmZpbml0ZSBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NTAgcmM9YWJyIG1idHJlZT0xIGJpdHJhdGU9NDAwIHJhdGV0b2w9MS4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAABZYiEBrxmKAAPVccAAS044AA5DRJMnkycJk4TPw==")),s=!1,r=null,n=new VideoDecoder({output:h=>{s=!0},error:h=>{r=h}}),a=new EncodedVideoChunk({timestamp:0,type:"key",data:e});n.configure(i),n.decode(a);try{await n.flush()}catch(h){r=h}return!(!s||r!==null)}fi=await jr();function me(){return!!/mac/i.exec(navigator.platform)}function He(){return!!/win/i.exec(navigator.platform)}function Ue(){return!!/ipad/i.exec(navigator.platform)||!!/iphone/i.exec(navigator.platform)||!!/ipod/i.exec(navigator.platform)}function Ne(i,t,e){let s=e.getBoundingClientRect(),r={x:0,y:0};return i<s.left?r.x=0:i>=s.right?r.x=s.width-1:r.x=i-s.left,t<s.top?r.y=0:t>=s.bottom?r.y=s.height-1:r.y=t-s.top,r}function Se(i){i.stopPropagation(),i.preventDefault()}var ui=!1,ts=null;document.captureElement=null;function ke(i){if(ui)return;let t=new i.constructor(i.type,i);ui=!0,document.captureElement?document.captureElement.dispatchEvent(t):ts.dispatchEvent(t),ui=!1,i.stopPropagation(),t.defaultPrevented&&i.preventDefault(),i.type==="mouseup"&&ns()}function is(){let i=document.getElementById("noVNC_mouse_capture_elem");i.style.cursor=window.getComputedStyle(document.captureElement).cursor}var ss=new MutationObserver(is);function rs(i){if(i.setCapture)i.setCapture(),document.captureElement=i;else{ns();let t=document.getElementById("noVNC_mouse_capture_elem");t===null&&(t=document.createElement("div"),t.id="noVNC_mouse_capture_elem",t.style.position="fixed",t.style.top="0px",t.style.left="0px",t.style.width="100%",t.style.height="100%",t.style.zIndex=1e4,t.style.display="none",document.body.appendChild(t),t.addEventListener("contextmenu",ke),t.addEventListener("mousemove",ke),t.addEventListener("mouseup",ke)),document.captureElement=i,ss.observe(i,{attributes:!0}),is(),t.style.display="",window.addEventListener("mousemove",ke),window.addEventListener("mouseup",ke)}}function ns(){if(document.releaseCapture)document.releaseCapture(),document.captureElement=null;else{if(!document.captureElement)return;ts=document.captureElement,document.captureElement=null,ss.disconnect();let i=document.getElementById("noVNC_mouse_capture_elem");i.style.display="none",window.removeEventListener("mousemove",ke),window.removeEventListener("mouseup",ke)}}var Ee=class{constructor(){this._listeners=new Map}addEventListener(t,e){this._listeners.has(t)||this._listeners.set(t,new Set),this._listeners.get(t).add(e)}removeEventListener(t,e){this._listeners.has(t)&&this._listeners.get(t).delete(e)}dispatchEvent(t){return this._listeners.has(t.type)?(this._listeners.get(t.type).forEach(e=>e.call(this,t)),!t.defaultPrevented):!0}};var rt=class{constructor(t){if(this._drawCtx=null,this._renderQ=[],this._flushPromise=null,this._fbWidth=0,this._fbHeight=0,this._prevDrawStyle="",L(">> Display.constructor"),this._target=t,!this._target)throw new Error("Target must be set");if(typeof this._target=="string")throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");this._targetCtx=this._target.getContext("2d"),this._viewportLoc={x:0,y:0,w:this._target.width,h:this._target.height},this._backbuffer=document.createElement("canvas"),this._drawCtx=this._backbuffer.getContext("2d"),this._damageBounds={left:0,top:0,right:this._backbuffer.width,bottom:this._backbuffer.height},L("User Agent: "+navigator.userAgent),L("<< Display.constructor"),this._scale=1,this._clipViewport=!1}get scale(){return this._scale}set scale(t){this._rescale(t)}get clipViewport(){return this._clipViewport}set clipViewport(t){this._clipViewport=t;let e=this._viewportLoc;this.viewportChangeSize(e.w,e.h),this.viewportChangePos(0,0)}get width(){return this._fbWidth}get height(){return this._fbHeight}viewportChangePos(t,e){let s=this._viewportLoc;t=Math.floor(t),e=Math.floor(e),this._clipViewport||(t=-s.w,e=-s.h);let r=s.x+s.w-1,n=s.y+s.h-1;t<0&&s.x+t<0&&(t=-s.x),r+t>=this._fbWidth&&(t-=r+t-this._fbWidth+1),s.y+e<0&&(e=-s.y),n+e>=this._fbHeight&&(e-=n+e-this._fbHeight+1),!(t===0&&e===0)&&(L("viewportChange deltaX: "+t+", deltaY: "+e),s.x+=t,s.y+=e,this._damage(s.x,s.y,s.w,s.h),this.flip())}viewportChangeSize(t,e){(!this._clipViewport||typeof t>"u"||typeof e>"u")&&(L("Setting viewport to full display region"),t=this._fbWidth,e=this._fbHeight),t=Math.floor(t),e=Math.floor(e),t>this._fbWidth&&(t=this._fbWidth),e>this._fbHeight&&(e=this._fbHeight);let s=this._viewportLoc;if(s.w!==t||s.h!==e){s.w=t,s.h=e;let r=this._target;r.width=t,r.height=e,this.viewportChangePos(0,0),this._damage(s.x,s.y,s.w,s.h),this.flip(),this._rescale(this._scale)}}absX(t){return this._scale===0?0:it(t/this._scale+this._viewportLoc.x)}absY(t){return this._scale===0?0:it(t/this._scale+this._viewportLoc.y)}resize(t,e){this._prevDrawStyle="",this._fbWidth=t,this._fbHeight=e;let s=this._backbuffer;if(s.width!==t||s.height!==e){let n=null;s.width>0&&s.height>0&&(n=this._drawCtx.getImageData(0,0,s.width,s.height)),s.width!==t&&(s.width=t),s.height!==e&&(s.height=e),n&&this._drawCtx.putImageData(n,0,0)}let r=this._viewportLoc;this.viewportChangeSize(r.w,r.h),this.viewportChangePos(0,0)}getImageData(){return this._drawCtx.getImageData(0,0,this.width,this.height)}toDataURL(t,e){return this._backbuffer.toDataURL(t,e)}toBlob(t,e,s){return this._backbuffer.toBlob(t,e,s)}_damage(t,e,s,r){t<this._damageBounds.left&&(this._damageBounds.left=t),e<this._damageBounds.top&&(this._damageBounds.top=e),t+s>this._damageBounds.right&&(this._damageBounds.right=t+s),e+r>this._damageBounds.bottom&&(this._damageBounds.bottom=e+r)}flip(t){if(this._renderQ.length!==0&&!t)this._renderQPush({type:"flip"});else{let e=this._damageBounds.left,s=this._damageBounds.top,r=this._damageBounds.right-e,n=this._damageBounds.bottom-s,a=e-this._viewportLoc.x,h=s-this._viewportLoc.y;a<0&&(r+=a,e-=a,a=0),h<0&&(n+=h,s-=h,h=0),a+r>this._viewportLoc.w&&(r=this._viewportLoc.w-a),h+n>this._viewportLoc.h&&(n=this._viewportLoc.h-h),r>0&&n>0&&this._targetCtx.drawImage(this._backbuffer,e,s,r,n,a,h,r,n),this._damageBounds.left=this._damageBounds.top=65535,this._damageBounds.right=this._damageBounds.bottom=0}}pending(){return this._renderQ.length>0}flush(){return this._renderQ.length===0?Promise.resolve():(this._flushPromise===null&&(this._flushPromise=new Promise(t=>{this._flushResolve=t})),this._flushPromise)}fillRect(t,e,s,r,n,a){this._renderQ.length!==0&&!a?this._renderQPush({type:"fill",x:t,y:e,width:s,height:r,color:n}):(this._setFillColor(n),this._drawCtx.fillRect(t,e,s,r),this._damage(t,e,s,r))}copyImage(t,e,s,r,n,a,h){this._renderQ.length!==0&&!h?this._renderQPush({type:"copy",oldX:t,oldY:e,x:s,y:r,width:n,height:a}):(this._drawCtx.mozImageSmoothingEnabled=!1,this._drawCtx.webkitImageSmoothingEnabled=!1,this._drawCtx.msImageSmoothingEnabled=!1,this._drawCtx.imageSmoothingEnabled=!1,this._drawCtx.drawImage(this._backbuffer,t,e,n,a,s,r,n,a),this._damage(s,r,n,a))}imageRect(t,e,s,r,n,a){if(s===0||r===0)return;let h=new Image;h.src="data: "+n+";base64,"+Pe.encode(a),this._renderQPush({type:"img",img:h,x:t,y:e,width:s,height:r})}videoFrame(t,e,s,r,n){this._renderQPush({type:"frame",frame:n,x:t,y:e,width:s,height:r})}blitImage(t,e,s,r,n,a,h){if(this._renderQ.length!==0&&!h){let _=new Uint8Array(s*r*4);_.set(new Uint8Array(n.buffer,0,_.length)),this._renderQPush({type:"blit",data:_,x:t,y:e,width:s,height:r})}else{let _=new Uint8ClampedArray(n.buffer,n.byteOffset+a,s*r*4),o=new ImageData(_,s,r);this._drawCtx.putImageData(o,t,e),this._damage(t,e,s,r)}}drawImage(t,...e){if(this._drawCtx.drawImage(t,...e),e.length<=4){let[s,r]=e;this._damage(s,r,t.width,t.height)}else{let[,,s,r,n,a]=e;this._damage(n,a,s,r)}}autoscale(t,e){let s;if(t===0||e===0)s=0;else{let r=this._viewportLoc,n=t/e;r.w/r.h>=n?s=t/r.w:s=e/r.h}this._rescale(s)}_rescale(t){this._scale=t;let e=this._viewportLoc,s=t*e.w+"px",r=t*e.h+"px";(this._target.style.width!==s||this._target.style.height!==r)&&(this._target.style.width=s,this._target.style.height=r)}_setFillColor(t){let e="rgb("+t[0]+","+t[1]+","+t[2]+")";e!==this._prevDrawStyle&&(this._drawCtx.fillStyle=e,this._prevDrawStyle=e)}_renderQPush(t){this._renderQ.push(t),this._renderQ.length===1&&this._scanRenderQ()}_resumeRenderQ(){this.removeEventListener("load",this._noVNCDisplay._resumeRenderQ),this._noVNCDisplay._scanRenderQ()}_scanRenderQ(){let t=!0;for(;t&&this._renderQ.length>0;){let e=this._renderQ[0];switch(e.type){case"flip":this.flip(!0);break;case"copy":this.copyImage(e.oldX,e.oldY,e.x,e.y,e.width,e.height,!0);break;case"fill":this.fillRect(e.x,e.y,e.width,e.height,e.color,!0);break;case"blit":this.blitImage(e.x,e.y,e.width,e.height,e.data,0,!0);break;case"img":if(e.img.complete){if(e.img.width!==e.width||e.img.height!==e.height){U("Decoded image has incorrect dimensions. Got "+e.img.width+"x"+e.img.height+". Expected "+e.width+"x"+e.height+".");return}this.drawImage(e.img,e.x,e.y)}else e.img._noVNCDisplay=this,e.img.addEventListener("load",this._resumeRenderQ),t=!1;break;case"frame":if(e.frame.ready){let s=e.frame.frame;(s.codedWidth<e.width||s.codedHeight<e.height)&&W("Decoded video frame does not cover its full rectangle area. Expecting at least "+e.width+"x"+e.height+" but got "+s.codedWidth+"x"+s.codedHeight);let r=0,n=0,a=e.width,h=e.height,_=e.x,o=e.y,l=a,x=h;this.drawImage(s,r,n,a,h,_,o,l,x),s.close()}else{let s=this;e.frame.promise.then(()=>{s._scanRenderQ()}),t=!1}break}t&&this._renderQ.shift()}this._renderQ.length===0&&this._flushPromise!==null&&(this._flushResolve(),this._flushPromise=null,this._flushResolve=null)}};function ae(i,t,e,s,r){if(t.subarray&&i.subarray){i.set(t.subarray(e,e+s),r);return}for(var n=0;n<s;n++)i[r+n]=t[e+n]}var Oe=Uint8Array,ie=Uint16Array,nt=Int32Array;function ze(i,t,e,s){for(var r=i&65535|0,n=i>>>16&65535|0,a=0;e!==0;){a=e>2e3?2e3:e,e-=a;do r=r+t[s++]|0,n=n+r|0;while(--a);r%=65521,n%=65521}return r|n<<16|0}function G(){for(var i,t=[],e=0;e<256;e++){i=e;for(var s=0;s<8;s++)i=i&1?3988292384^i>>>1:i>>>1;t[e]=i}return t}var Ma=G();var Qt=30,qr=12;function di(i,t){var e,s,r,n,a,h,_,o,l,x,u,d,X,F,A,k,T,E,K,C,I,S,D,B,M;e=i.state,s=i.next_in,B=i.input,r=s+(i.avail_in-5),n=i.next_out,M=i.output,a=n-(t-i.avail_out),h=n+(i.avail_out-257),_=e.dmax,o=e.wsize,l=e.whave,x=e.wnext,u=e.window,d=e.hold,X=e.bits,F=e.lencode,A=e.distcode,k=(1<<e.lenbits)-1,T=(1<<e.distbits)-1;e:do{X<15&&(d+=B[s++]<<X,X+=8,d+=B[s++]<<X,X+=8),E=F[d&k];t:for(;;){if(K=E>>>24,d>>>=K,X-=K,K=E>>>16&255,K===0)M[n++]=E&65535;else if(K&16){C=E&65535,K&=15,K&&(X<K&&(d+=B[s++]<<X,X+=8),C+=d&(1<<K)-1,d>>>=K,X-=K),X<15&&(d+=B[s++]<<X,X+=8,d+=B[s++]<<X,X+=8),E=A[d&T];i:for(;;){if(K=E>>>24,d>>>=K,X-=K,K=E>>>16&255,K&16){if(I=E&65535,K&=15,X<K&&(d+=B[s++]<<X,X+=8,X<K&&(d+=B[s++]<<X,X+=8)),I+=d&(1<<K)-1,I>_){i.msg="invalid distance too far back",e.mode=Qt;break e}if(d>>>=K,X-=K,K=n-a,I>K){if(K=I-K,K>l&&e.sane){i.msg="invalid distance too far back",e.mode=Qt;break e}if(S=0,D=u,x===0){if(S+=o-K,K<C){C-=K;do M[n++]=u[S++];while(--K);S=n-I,D=M}}else if(x<K){if(S+=o+x-K,K-=x,K<C){C-=K;do M[n++]=u[S++];while(--K);if(S=0,x<C){K=x,C-=K;do M[n++]=u[S++];while(--K);S=n-I,D=M}}}else if(S+=x-K,K<C){C-=K;do M[n++]=u[S++];while(--K);S=n-I,D=M}for(;C>2;)M[n++]=D[S++],M[n++]=D[S++],M[n++]=D[S++],C-=3;C&&(M[n++]=D[S++],C>1&&(M[n++]=D[S++]))}else{S=n-I;do M[n++]=M[S++],M[n++]=M[S++],M[n++]=M[S++],C-=3;while(C>2);C&&(M[n++]=M[S++],C>1&&(M[n++]=M[S++]))}}else if(K&64){i.msg="invalid distance code",e.mode=Qt;break e}else{E=A[(E&65535)+(d&(1<<K)-1)];continue i}break}}else if(K&64)if(K&32){e.mode=qr;break e}else{i.msg="invalid literal/length code",e.mode=Qt;break e}else{E=F[(E&65535)+(d&(1<<K)-1)];continue t}break}}while(s<r&&n<h);C=X>>3,s-=C,X-=C<<3,d&=(1<<X)-1,i.next_in=s,i.next_out=n,i.avail_in=s<r?5+(r-s):5-(s-r),i.avail_out=n<h?257+(h-n):257-(n-h),e.hold=d,e.bits=X}var Ge=15,as=852,os=592,hs=0,xi=1,ls=2,Jr=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],$r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],en=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],tn=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function Ae(i,t,e,s,r,n,a,h){var _=h.bits,o=0,l=0,x=0,u=0,d=0,X=0,F=0,A=0,k=0,T=0,E,K,C,I,S,D=null,B=0,M,z=new ie(Ge+1),te=new ie(Ge+1),Ie=null,oe=0,Fe,_e,Z;for(o=0;o<=Ge;o++)z[o]=0;for(l=0;l<s;l++)z[t[e+l]]++;for(d=_,u=Ge;u>=1&&z[u]===0;u--);if(d>u&&(d=u),u===0)return r[n++]=1<<24|64<<16|0,r[n++]=1<<24|64<<16|0,h.bits=1,0;for(x=1;x<u&&z[x]===0;x++);for(d<x&&(d=x),A=1,o=1;o<=Ge;o++)if(A<<=1,A-=z[o],A<0)return-1;if(A>0&&(i===hs||u!==1))return-1;for(te[1]=0,o=1;o<Ge;o++)te[o+1]=te[o]+z[o];for(l=0;l<s;l++)t[e+l]!==0&&(a[te[t[e+l]]++]=l);if(i===hs?(D=Ie=a,M=19):i===xi?(D=Jr,B-=257,Ie=$r,oe-=257,M=256):(D=en,Ie=tn,M=-1),T=0,l=0,o=x,S=n,X=d,F=0,C=-1,k=1<<d,I=k-1,i===xi&&k>as||i===ls&&k>os)return 1;for(;;){Fe=o-F,a[l]<M?(_e=0,Z=a[l]):a[l]>M?(_e=Ie[oe+a[l]],Z=D[B+a[l]]):(_e=96,Z=0),E=1<<o-F,K=1<<X,x=K;do K-=E,r[S+(T>>F)+K]=Fe<<24|_e<<16|Z|0;while(K!==0);for(E=1<<o-1;T&E;)E>>=1;if(E!==0?(T&=E-1,T+=E):T=0,l++,--z[o]===0){if(o===u)break;o=t[e+a[l]]}if(o>d&&(T&I)!==C){for(F===0&&(F=d),S+=x,X=o-F,A=1<<X;X+F<u&&(A-=z[X+F],!(A<=0));)X++,A<<=1;if(k+=1<<X,i===xi&&k>as||i===ls&&k>os)return 1;C=T&I,r[C]=d<<24|X<<16|S-n|0}}return T!==0&&(r[S+T]=o-F<<24|64<<16|0),h.bits=d,0}var sn=0,Is=1,Ps=2,cs=4,rn=5,It=6,Ut=0,nn=1,an=2,Ce=-2,on=-3,_s=-4,hn=-5,fs=8,Hs=1,us=2,ds=3,xs=4,ps=5,gs=6,bs=7,ms=8,ws=9,vs=10,ys=11,pe=12,pi=13,Xs=14,gi=15,Ks=16,Fs=17,ks=18,Ss=19,Pt=20,Ht=21,Es=22,As=23,Cs=24,Ls=25,Ts=26,bi=27,Ms=28,Rs=29,N=30,Bs=31,ln=32,cn=852,_n=592,fn=15,un=fn;function Ds(i){return(i>>>24&255)+(i>>>8&65280)+((i&65280)<<8)+((i&255)<<24)}function dn(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new ie(320),this.work=new ie(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function xn(i){var t;return!i||!i.state?Ce:(t=i.state,i.total_in=i.total_out=t.total=0,i.msg="",t.wrap&&(i.adler=t.wrap&1),t.mode=Hs,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new nt(cn),t.distcode=t.distdyn=new nt(_n),t.sane=1,t.back=-1,Ut)}function vi(i){var t;return!i||!i.state?Ce:(t=i.state,t.wsize=0,t.whave=0,t.wnext=0,xn(i))}function pn(i,t){var e,s;return!i||!i.state||(s=i.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Ce:(s.window!==null&&s.wbits!==t&&(s.window=null),s.wrap=e,s.wbits=t,vi(i))}function gn(i,t){var e,s;return i?(s=new dn,i.state=s,s.window=null,e=pn(i,t),e!==Ut&&(i.state=null),e):Ce}function Us(i){return gn(i,un)}var Qs=!0,mi,wi;function bn(i){if(Qs){var t;for(mi=new nt(512),wi=new nt(32),t=0;t<144;)i.lens[t++]=8;for(;t<256;)i.lens[t++]=9;for(;t<280;)i.lens[t++]=7;for(;t<288;)i.lens[t++]=8;for(Ae(Is,i.lens,0,288,mi,0,i.work,{bits:9}),t=0;t<32;)i.lens[t++]=5;Ae(Ps,i.lens,0,32,wi,0,i.work,{bits:5}),Qs=!1}i.lencode=mi,i.lenbits=9,i.distcode=wi,i.distbits=5}function mn(i,t,e,s){var r,n=i.state;return n.window===null&&(n.wsize=1<<n.wbits,n.wnext=0,n.whave=0,n.window=new Oe(n.wsize)),s>=n.wsize?(ae(n.window,t,e-n.wsize,n.wsize,0),n.wnext=0,n.whave=n.wsize):(r=n.wsize-n.wnext,r>s&&(r=s),ae(n.window,t,e-s,r,n.wnext),s-=r,s?(ae(n.window,t,e-s,s,0),n.wnext=s,n.whave=n.wsize):(n.wnext+=r,n.wnext===n.wsize&&(n.wnext=0),n.whave<n.wsize&&(n.whave+=r))),0}function Ns(i,t){var e,s,r,n,a,h,_,o,l,x,u,d,X,F,A=0,k,T,E,K,C,I,S,D,B=new Oe(4),M,z,te=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!i||!i.state||!i.output||!i.input&&i.avail_in!==0)return Ce;e=i.state,e.mode===pe&&(e.mode=pi),a=i.next_out,r=i.output,_=i.avail_out,n=i.next_in,s=i.input,h=i.avail_in,o=e.hold,l=e.bits,x=h,u=_,D=Ut;e:for(;;)switch(e.mode){case Hs:if(e.wrap===0){e.mode=pi;break}for(;l<16;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(e.wrap&2&&o===35615){e.check=0,B[0]=o&255,B[1]=o>>>8&255,e.check=G(e.check,B,2,0),o=0,l=0,e.mode=us;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((o&255)<<8)+(o>>8))%31){i.msg="incorrect header check",e.mode=N;break}if((o&15)!==fs){i.msg="unknown compression method",e.mode=N;break}if(o>>>=4,l-=4,S=(o&15)+8,e.wbits===0)e.wbits=S;else if(S>e.wbits){i.msg="invalid window size",e.mode=N;break}e.dmax=1<<S,i.adler=e.check=1,e.mode=o&512?vs:pe,o=0,l=0;break;case us:for(;l<16;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(e.flags=o,(e.flags&255)!==fs){i.msg="unknown compression method",e.mode=N;break}if(e.flags&57344){i.msg="unknown header flags set",e.mode=N;break}e.head&&(e.head.text=o>>8&1),e.flags&512&&(B[0]=o&255,B[1]=o>>>8&255,e.check=G(e.check,B,2,0)),o=0,l=0,e.mode=ds;case ds:for(;l<32;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}e.head&&(e.head.time=o),e.flags&512&&(B[0]=o&255,B[1]=o>>>8&255,B[2]=o>>>16&255,B[3]=o>>>24&255,e.check=G(e.check,B,4,0)),o=0,l=0,e.mode=xs;case xs:for(;l<16;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}e.head&&(e.head.xflags=o&255,e.head.os=o>>8),e.flags&512&&(B[0]=o&255,B[1]=o>>>8&255,e.check=G(e.check,B,2,0)),o=0,l=0,e.mode=ps;case ps:if(e.flags&1024){for(;l<16;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}e.length=o,e.head&&(e.head.extra_len=o),e.flags&512&&(B[0]=o&255,B[1]=o>>>8&255,e.check=G(e.check,B,2,0)),o=0,l=0}else e.head&&(e.head.extra=null);e.mode=gs;case gs:if(e.flags&1024&&(d=e.length,d>h&&(d=h),d&&(e.head&&(S=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),ae(e.head.extra,s,n,d,S)),e.flags&512&&(e.check=G(e.check,s,d,n)),h-=d,n+=d,e.length-=d),e.length))break e;e.length=0,e.mode=bs;case bs:if(e.flags&2048){if(h===0)break e;d=0;do S=s[n+d++],e.head&&S&&e.length<65536&&(e.head.name+=String.fromCharCode(S));while(S&&d<h);if(e.flags&512&&(e.check=G(e.check,s,d,n)),h-=d,n+=d,S)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=ms;case ms:if(e.flags&4096){if(h===0)break e;d=0;do S=s[n+d++],e.head&&S&&e.length<65536&&(e.head.comment+=String.fromCharCode(S));while(S&&d<h);if(e.flags&512&&(e.check=G(e.check,s,d,n)),h-=d,n+=d,S)break e}else e.head&&(e.head.comment=null);e.mode=ws;case ws:if(e.flags&512){for(;l<16;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(o!==(e.check&65535)){i.msg="header crc mismatch",e.mode=N;break}o=0,l=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),i.adler=e.check=0,e.mode=pe;break;case vs:for(;l<32;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}i.adler=e.check=Ds(o),o=0,l=0,e.mode=ys;case ys:if(e.havedict===0)return i.next_out=a,i.avail_out=_,i.next_in=n,i.avail_in=h,e.hold=o,e.bits=l,an;i.adler=e.check=1,e.mode=pe;case pe:if(t===rn||t===It)break e;case pi:if(e.last){o>>>=l&7,l-=l&7,e.mode=bi;break}for(;l<3;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}switch(e.last=o&1,o>>>=1,l-=1,o&3){case 0:e.mode=Xs;break;case 1:if(bn(e),e.mode=Pt,t===It){o>>>=2,l-=2;break e}break;case 2:e.mode=Fs;break;case 3:i.msg="invalid block type",e.mode=N}o>>>=2,l-=2;break;case Xs:for(o>>>=l&7,l-=l&7;l<32;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if((o&65535)!==(o>>>16^65535)){i.msg="invalid stored block lengths",e.mode=N;break}if(e.length=o&65535,o=0,l=0,e.mode=gi,t===It)break e;case gi:e.mode=Ks;case Ks:if(d=e.length,d){if(d>h&&(d=h),d>_&&(d=_),d===0)break e;ae(r,s,n,d,a),h-=d,n+=d,_-=d,a+=d,e.length-=d;break}e.mode=pe;break;case Fs:for(;l<14;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(e.nlen=(o&31)+257,o>>>=5,l-=5,e.ndist=(o&31)+1,o>>>=5,l-=5,e.ncode=(o&15)+4,o>>>=4,l-=4,e.nlen>286||e.ndist>30){i.msg="too many length or distance symbols",e.mode=N;break}e.have=0,e.mode=ks;case ks:for(;e.have<e.ncode;){for(;l<3;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}e.lens[te[e.have++]]=o&7,o>>>=3,l-=3}for(;e.have<19;)e.lens[te[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,M={bits:e.lenbits},D=Ae(sn,e.lens,0,19,e.lencode,0,e.work,M),e.lenbits=M.bits,D){i.msg="invalid code lengths set",e.mode=N;break}e.have=0,e.mode=Ss;case Ss:for(;e.have<e.nlen+e.ndist;){for(;A=e.lencode[o&(1<<e.lenbits)-1],k=A>>>24,T=A>>>16&255,E=A&65535,!(k<=l);){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(E<16)o>>>=k,l-=k,e.lens[e.have++]=E;else{if(E===16){for(z=k+2;l<z;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(o>>>=k,l-=k,e.have===0){i.msg="invalid bit length repeat",e.mode=N;break}S=e.lens[e.have-1],d=3+(o&3),o>>>=2,l-=2}else if(E===17){for(z=k+3;l<z;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}o>>>=k,l-=k,S=0,d=3+(o&7),o>>>=3,l-=3}else{for(z=k+7;l<z;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}o>>>=k,l-=k,S=0,d=11+(o&127),o>>>=7,l-=7}if(e.have+d>e.nlen+e.ndist){i.msg="invalid bit length repeat",e.mode=N;break}for(;d--;)e.lens[e.have++]=S}}if(e.mode===N)break;if(e.lens[256]===0){i.msg="invalid code -- missing end-of-block",e.mode=N;break}if(e.lenbits=9,M={bits:e.lenbits},D=Ae(Is,e.lens,0,e.nlen,e.lencode,0,e.work,M),e.lenbits=M.bits,D){i.msg="invalid literal/lengths set",e.mode=N;break}if(e.distbits=6,e.distcode=e.distdyn,M={bits:e.distbits},D=Ae(Ps,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,M),e.distbits=M.bits,D){i.msg="invalid distances set",e.mode=N;break}if(e.mode=Pt,t===It)break e;case Pt:e.mode=Ht;case Ht:if(h>=6&&_>=258){i.next_out=a,i.avail_out=_,i.next_in=n,i.avail_in=h,e.hold=o,e.bits=l,di(i,u),a=i.next_out,r=i.output,_=i.avail_out,n=i.next_in,s=i.input,h=i.avail_in,o=e.hold,l=e.bits,e.mode===pe&&(e.back=-1);break}for(e.back=0;A=e.lencode[o&(1<<e.lenbits)-1],k=A>>>24,T=A>>>16&255,E=A&65535,!(k<=l);){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(T&&!(T&240)){for(K=k,C=T,I=E;A=e.lencode[I+((o&(1<<K+C)-1)>>K)],k=A>>>24,T=A>>>16&255,E=A&65535,!(K+k<=l);){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}o>>>=K,l-=K,e.back+=K}if(o>>>=k,l-=k,e.back+=k,e.length=E,T===0){e.mode=Ts;break}if(T&32){e.back=-1,e.mode=pe;break}if(T&64){i.msg="invalid literal/length code",e.mode=N;break}e.extra=T&15,e.mode=Es;case Es:if(e.extra){for(z=e.extra;l<z;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}e.length+=o&(1<<e.extra)-1,o>>>=e.extra,l-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=As;case As:for(;A=e.distcode[o&(1<<e.distbits)-1],k=A>>>24,T=A>>>16&255,E=A&65535,!(k<=l);){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(!(T&240)){for(K=k,C=T,I=E;A=e.distcode[I+((o&(1<<K+C)-1)>>K)],k=A>>>24,T=A>>>16&255,E=A&65535,!(K+k<=l);){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}o>>>=K,l-=K,e.back+=K}if(o>>>=k,l-=k,e.back+=k,T&64){i.msg="invalid distance code",e.mode=N;break}e.offset=E,e.extra=T&15,e.mode=Cs;case Cs:if(e.extra){for(z=e.extra;l<z;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}e.offset+=o&(1<<e.extra)-1,o>>>=e.extra,l-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){i.msg="invalid distance too far back",e.mode=N;break}e.mode=Ls;case Ls:if(_===0)break e;if(d=u-_,e.offset>d){if(d=e.offset-d,d>e.whave&&e.sane){i.msg="invalid distance too far back",e.mode=N;break}d>e.wnext?(d-=e.wnext,X=e.wsize-d):X=e.wnext-d,d>e.length&&(d=e.length),F=e.window}else F=r,X=a-e.offset,d=e.length;d>_&&(d=_),_-=d,e.length-=d;do r[a++]=F[X++];while(--d);e.length===0&&(e.mode=Ht);break;case Ts:if(_===0)break e;r[a++]=e.length,_--,e.mode=Ht;break;case bi:if(e.wrap){for(;l<32;){if(h===0)break e;h--,o|=s[n++]<<l,l+=8}if(u-=_,i.total_out+=u,e.total+=u,u&&(i.adler=e.check=e.flags?G(e.check,r,u,a-u):ze(e.check,r,u,a-u)),u=_,(e.flags?o:Ds(o))!==e.check){i.msg="incorrect data check",e.mode=N;break}o=0,l=0}e.mode=Ms;case Ms:if(e.wrap&&e.flags){for(;l<32;){if(h===0)break e;h--,o+=s[n++]<<l,l+=8}if(o!==(e.total&4294967295)){i.msg="incorrect length check",e.mode=N;break}o=0,l=0}e.mode=Rs;case Rs:D=nn;break e;case N:D=on;break e;case Bs:return _s;case ln:default:return Ce}return i.next_out=a,i.avail_out=_,i.next_in=n,i.avail_in=h,e.hold=o,e.bits=l,(e.wsize||u!==i.avail_out&&e.mode<N&&(e.mode<bi||t!==cs))&&mn(i,i.output,i.next_out,u-i.avail_out)?(e.mode=Bs,_s):(x-=i.avail_in,u-=i.avail_out,i.total_in+=x,i.total_out+=u,e.total+=u,e.wrap&&u&&(i.adler=e.check=e.flags?G(e.check,r,u,i.next_out-u):ze(e.check,r,u,i.next_out-u)),i.data_type=e.bits+(e.last?64:0)+(e.mode===pe?128:0)+(e.mode===Pt||e.mode===gi?256:0),(x===0&&u===0||t===cs)&&D===Ut&&(D=hn),D)}function at(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var le=class{constructor(){this.strm=new at,this.chunkSize=1024*10*10,this.strm.output=new Uint8Array(this.chunkSize),Us(this.strm)}setInput(t){t?(this.strm.input=t,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0):(this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0)}inflate(t){if(t>this.chunkSize&&(this.chunkSize=t,this.strm.output=new Uint8Array(this.chunkSize)),this.strm.next_out=0,this.strm.avail_out=t,Ns(this.strm,0)<0)throw new Error("zlib inflate failed");if(this.strm.next_out!=t)throw new Error("Incomplete zlib block");return new Uint8Array(this.strm.output.buffer,0,this.strm.next_out)}reset(){vi(this.strm)}};var wn=4,Os=0,zs=1,vn=2;function We(i){for(var t=i.length;--t>=0;)i[t]=0}var yn=0,js=1,Xn=2,Kn=3,Fn=258,Ei=29,ft=256,ht=ft+1+Ei,Ve=30,Ai=19,qs=2*ht+1,Le=15,yi=16,kn=7,Ci=256,Js=16,$s=17,er=18,ki=[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],Nt=[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],Sn=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],tr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],En=512,ge=new Array((ht+2)*2);We(ge);var ot=new Array(Ve*2);We(ot);var lt=new Array(En);We(lt);var ct=new Array(Fn-Kn+1);We(ct);var Li=new Array(Ei);We(Li);var Ot=new Array(Ve);We(Ot);function Xi(i,t,e,s,r){this.static_tree=i,this.extra_bits=t,this.extra_base=e,this.elems=s,this.max_length=r,this.has_stree=i&&i.length}var ir,sr,rr;function Ki(i,t){this.dyn_tree=i,this.max_code=0,this.stat_desc=t}function nr(i){return i<256?lt[i]:lt[256+(i>>>7)]}function _t(i,t){i.pending_buf[i.pending++]=t&255,i.pending_buf[i.pending++]=t>>>8&255}function re(i,t,e){i.bi_valid>yi-e?(i.bi_buf|=t<<i.bi_valid&65535,_t(i,i.bi_buf),i.bi_buf=t>>yi-i.bi_valid,i.bi_valid+=e-yi):(i.bi_buf|=t<<i.bi_valid&65535,i.bi_valid+=e)}function fe(i,t,e){re(i,e[t*2],e[t*2+1])}function ar(i,t){var e=0;do e|=i&1,i>>>=1,e<<=1;while(--t>0);return e>>>1}function An(i){i.bi_valid===16?(_t(i,i.bi_buf),i.bi_buf=0,i.bi_valid=0):i.bi_valid>=8&&(i.pending_buf[i.pending++]=i.bi_buf&255,i.bi_buf>>=8,i.bi_valid-=8)}function Cn(i,t){var e=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,n=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,h=t.stat_desc.extra_base,_=t.stat_desc.max_length,o,l,x,u,d,X,F=0;for(u=0;u<=Le;u++)i.bl_count[u]=0;for(e[i.heap[i.heap_max]*2+1]=0,o=i.heap_max+1;o<qs;o++)l=i.heap[o],u=e[e[l*2+1]*2+1]+1,u>_&&(u=_,F++),e[l*2+1]=u,!(l>s)&&(i.bl_count[u]++,d=0,l>=h&&(d=a[l-h]),X=e[l*2],i.opt_len+=X*(u+d),n&&(i.static_len+=X*(r[l*2+1]+d)));if(F!==0){do{for(u=_-1;i.bl_count[u]===0;)u--;i.bl_count[u]--,i.bl_count[u+1]+=2,i.bl_count[_]--,F-=2}while(F>0);for(u=_;u!==0;u--)for(l=i.bl_count[u];l!==0;)x=i.heap[--o],!(x>s)&&(e[x*2+1]!==u&&(i.opt_len+=(u-e[x*2+1])*e[x*2],e[x*2+1]=u),l--)}}function or(i,t,e){var s=new Array(Le+1),r=0,n,a;for(n=1;n<=Le;n++)s[n]=r=r+e[n-1]<<1;for(a=0;a<=t;a++){var h=i[a*2+1];h!==0&&(i[a*2]=ar(s[h]++,h))}}function Ln(){var i,t,e,s,r,n=new Array(Le+1);for(e=0,s=0;s<Ei-1;s++)for(Li[s]=e,i=0;i<1<<ki[s];i++)ct[e++]=s;for(ct[e-1]=s,r=0,s=0;s<16;s++)for(Ot[s]=r,i=0;i<1<<Nt[s];i++)lt[r++]=s;for(r>>=7;s<Ve;s++)for(Ot[s]=r<<7,i=0;i<1<<Nt[s]-7;i++)lt[256+r++]=s;for(t=0;t<=Le;t++)n[t]=0;for(i=0;i<=143;)ge[i*2+1]=8,i++,n[8]++;for(;i<=255;)ge[i*2+1]=9,i++,n[9]++;for(;i<=279;)ge[i*2+1]=7,i++,n[7]++;for(;i<=287;)ge[i*2+1]=8,i++,n[8]++;for(or(ge,ht+1,n),i=0;i<Ve;i++)ot[i*2+1]=5,ot[i*2]=ar(i,5);ir=new Xi(ge,ki,ft+1,ht,Le),sr=new Xi(ot,Nt,0,Ve,Le),rr=new Xi(new Array(0),Sn,0,Ai,kn)}function hr(i){var t;for(t=0;t<ht;t++)i.dyn_ltree[t*2]=0;for(t=0;t<Ve;t++)i.dyn_dtree[t*2]=0;for(t=0;t<Ai;t++)i.bl_tree[t*2]=0;i.dyn_ltree[Ci*2]=1,i.opt_len=i.static_len=0,i.last_lit=i.matches=0}function lr(i){i.bi_valid>8?_t(i,i.bi_buf):i.bi_valid>0&&(i.pending_buf[i.pending++]=i.bi_buf),i.bi_buf=0,i.bi_valid=0}function Tn(i,t,e,s){lr(i),s&&(_t(i,e),_t(i,~e)),ae(i.pending_buf,i.window,t,e,i.pending),i.pending+=e}function Gs(i,t,e,s){var r=t*2,n=e*2;return i[r]<i[n]||i[r]===i[n]&&s[t]<=s[e]}function Fi(i,t,e){for(var s=i.heap[e],r=e<<1;r<=i.heap_len&&(r<i.heap_len&&Gs(t,i.heap[r+1],i.heap[r],i.depth)&&r++,!Gs(t,s,i.heap[r],i.depth));)i.heap[e]=i.heap[r],e=r,r<<=1;i.heap[e]=s}function Vs(i,t,e){var s,r,n=0,a,h;if(i.last_lit!==0)do s=i.pending_buf[i.d_buf+n*2]<<8|i.pending_buf[i.d_buf+n*2+1],r=i.pending_buf[i.l_buf+n],n++,s===0?fe(i,r,t):(a=ct[r],fe(i,a+ft+1,t),h=ki[a],h!==0&&(r-=Li[a],re(i,r,h)),s--,a=nr(s),fe(i,a,e),h=Nt[a],h!==0&&(s-=Ot[a],re(i,s,h)));while(n<i.last_lit);fe(i,Ci,t)}function Si(i,t){var e=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,n=t.stat_desc.elems,a,h,_=-1,o;for(i.heap_len=0,i.heap_max=qs,a=0;a<n;a++)e[a*2]!==0?(i.heap[++i.heap_len]=_=a,i.depth[a]=0):e[a*2+1]=0;for(;i.heap_len<2;)o=i.heap[++i.heap_len]=_<2?++_:0,e[o*2]=1,i.depth[o]=0,i.opt_len--,r&&(i.static_len-=s[o*2+1]);for(t.max_code=_,a=i.heap_len>>1;a>=1;a--)Fi(i,e,a);o=n;do a=i.heap[1],i.heap[1]=i.heap[i.heap_len--],Fi(i,e,1),h=i.heap[1],i.heap[--i.heap_max]=a,i.heap[--i.heap_max]=h,e[o*2]=e[a*2]+e[h*2],i.depth[o]=(i.depth[a]>=i.depth[h]?i.depth[a]:i.depth[h])+1,e[a*2+1]=e[h*2+1]=o,i.heap[1]=o++,Fi(i,e,1);while(i.heap_len>=2);i.heap[--i.heap_max]=i.heap[1],Cn(i,t),or(e,_,i.bl_count)}function Ws(i,t,e){var s,r=-1,n,a=t[0*2+1],h=0,_=7,o=4;for(a===0&&(_=138,o=3),t[(e+1)*2+1]=65535,s=0;s<=e;s++)n=a,a=t[(s+1)*2+1],!(++h<_&&n===a)&&(h<o?i.bl_tree[n*2]+=h:n!==0?(n!==r&&i.bl_tree[n*2]++,i.bl_tree[Js*2]++):h<=10?i.bl_tree[$s*2]++:i.bl_tree[er*2]++,h=0,r=n,a===0?(_=138,o=3):n===a?(_=6,o=3):(_=7,o=4))}function Zs(i,t,e){var s,r=-1,n,a=t[0*2+1],h=0,_=7,o=4;for(a===0&&(_=138,o=3),s=0;s<=e;s++)if(n=a,a=t[(s+1)*2+1],!(++h<_&&n===a)){if(h<o)do fe(i,n,i.bl_tree);while(--h!==0);else n!==0?(n!==r&&(fe(i,n,i.bl_tree),h--),fe(i,Js,i.bl_tree),re(i,h-3,2)):h<=10?(fe(i,$s,i.bl_tree),re(i,h-3,3)):(fe(i,er,i.bl_tree),re(i,h-11,7));h=0,r=n,a===0?(_=138,o=3):n===a?(_=6,o=3):(_=7,o=4)}}function Mn(i){var t;for(Ws(i,i.dyn_ltree,i.l_desc.max_code),Ws(i,i.dyn_dtree,i.d_desc.max_code),Si(i,i.bl_desc),t=Ai-1;t>=3&&i.bl_tree[tr[t]*2+1]===0;t--);return i.opt_len+=3*(t+1)+5+5+4,t}function Rn(i,t,e,s){var r;for(re(i,t-257,5),re(i,e-1,5),re(i,s-4,4),r=0;r<s;r++)re(i,i.bl_tree[tr[r]*2+1],3);Zs(i,i.dyn_ltree,t-1),Zs(i,i.dyn_dtree,e-1)}function Bn(i){var t=4093624447,e;for(e=0;e<=31;e++,t>>>=1)if(t&1&&i.dyn_ltree[e*2]!==0)return Os;if(i.dyn_ltree[9*2]!==0||i.dyn_ltree[10*2]!==0||i.dyn_ltree[13*2]!==0)return zs;for(e=32;e<ft;e++)if(i.dyn_ltree[e*2]!==0)return zs;return Os}var Ys=!1;function cr(i){Ys||(Ln(),Ys=!0),i.l_desc=new Ki(i.dyn_ltree,ir),i.d_desc=new Ki(i.dyn_dtree,sr),i.bl_desc=new Ki(i.bl_tree,rr),i.bi_buf=0,i.bi_valid=0,hr(i)}function Ti(i,t,e,s){re(i,(yn<<1)+(s?1:0),3),Tn(i,t,e,!0)}function _r(i){re(i,js<<1,3),fe(i,Ci,ge),An(i)}function fr(i,t,e,s){var r,n,a=0;i.level>0?(i.strm.data_type===vn&&(i.strm.data_type=Bn(i)),Si(i,i.l_desc),Si(i,i.d_desc),a=Mn(i),r=i.opt_len+3+7>>>3,n=i.static_len+3+7>>>3,n<=r&&(r=n)):r=n=e+5,e+4<=r&&t!==-1?Ti(i,t,e,s):i.strategy===wn||n===r?(re(i,(js<<1)+(s?1:0),3),Vs(i,ge,ot)):(re(i,(Xn<<1)+(s?1:0),3),Rn(i,i.l_desc.max_code+1,i.d_desc.max_code+1,a+1),Vs(i,i.dyn_ltree,i.dyn_dtree)),hr(i),s&&lr(i)}function be(i,t,e){return i.pending_buf[i.d_buf+i.last_lit*2]=t>>>8&255,i.pending_buf[i.d_buf+i.last_lit*2+1]=t&255,i.pending_buf[i.l_buf+i.last_lit]=e&255,i.last_lit++,t===0?i.dyn_ltree[e*2]++:(i.matches++,t--,i.dyn_ltree[(ct[e]+ft+1)*2]++,i.dyn_dtree[nr(t)*2]++),i.last_lit===i.lit_bufsize-1}var ur={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};var Be=0,Qn=1,Vt=3,ye=4,dr=5,Te=0,xr=1,qe=-2;var Mi=-5,Pi=-1,In=1,zt=2,Pn=3,Hn=4,Un=0,Nn=2,Wt=8,On=9,zn=15,Gn=8,Vn=29,Wn=256,Ii=Wn+1+Vn,Zn=30,Yn=19,jn=2*Ii+1,qn=15,P=3,ve=258,ce=ve+P+1,Jn=32,br=42,pr=69,Ri=73,Bi=91,Di=103,dt=113,Gt=666,Y=1,xt=2,Re=3,Je=4,$n=3;function Ye(i,t){return i.msg=ur[t],t}function gr(i){return(i<<1)-(i>4?9:0)}function Me(i){for(var t=i.length;--t>=0;)i[t]=0}function we(i){var t=i.state,e=t.pending;e>i.avail_out&&(e=i.avail_out),e!==0&&(ae(i.output,t.pending_buf,t.pending_out,e,i.next_out),i.next_out+=e,t.pending_out+=e,i.total_out+=e,i.avail_out-=e,t.pending-=e,t.pending===0&&(t.pending_out=0))}function j(i,t){fr(i,i.block_start>=0?i.block_start:-1,i.strstart-i.block_start,t),i.block_start=i.strstart,we(i.strm)}function Q(i,t){i.pending_buf[i.pending++]=t}function ut(i,t){i.pending_buf[i.pending++]=t>>>8&255,i.pending_buf[i.pending++]=t&255}function ea(i,t,e,s){var r=i.avail_in;return r>s&&(r=s),r===0?0:(i.avail_in-=r,ae(t,i.input,i.next_in,r,e),i.state.wrap===1?i.adler=ze(i.adler,t,r,e):i.state.wrap===2&&(i.adler=G(i.adler,t,r,e)),i.next_in+=r,i.total_in+=r,r)}function mr(i,t){var e=i.max_chain_length,s=i.strstart,r,n,a=i.prev_length,h=i.nice_match,_=i.strstart>i.w_size-ce?i.strstart-(i.w_size-ce):0,o=i.window,l=i.w_mask,x=i.prev,u=i.strstart+ve,d=o[s+a-1],X=o[s+a];i.prev_length>=i.good_match&&(e>>=2),h>i.lookahead&&(h=i.lookahead);do if(r=t,!(o[r+a]!==X||o[r+a-1]!==d||o[r]!==o[s]||o[++r]!==o[s+1])){s+=2,r++;do;while(o[++s]===o[++r]&&o[++s]===o[++r]&&o[++s]===o[++r]&&o[++s]===o[++r]&&o[++s]===o[++r]&&o[++s]===o[++r]&&o[++s]===o[++r]&&o[++s]===o[++r]&&s<u);if(n=ve-(u-s),s=u-ve,n>a){if(i.match_start=t,a=n,n>=h)break;d=o[s+a-1],X=o[s+a]}}while((t=x[t&l])>_&&--e!==0);return a<=i.lookahead?a:i.lookahead}function pt(i){var t=i.w_size,e,s,r,n,a;do{if(n=i.window_size-i.lookahead-i.strstart,i.strstart>=t+(t-ce)){ae(i.window,i.window,t,t,0),i.match_start-=t,i.strstart-=t,i.block_start-=t,s=i.hash_size,e=s;do r=i.head[--e],i.head[e]=r>=t?r-t:0;while(--s);s=t,e=s;do r=i.prev[--e],i.prev[e]=r>=t?r-t:0;while(--s);n+=t}if(i.strm.avail_in===0)break;if(s=ea(i.strm,i.window,i.strstart+i.lookahead,n),i.lookahead+=s,i.lookahead+i.insert>=P)for(a=i.strstart-i.insert,i.ins_h=i.window[a],i.ins_h=(i.ins_h<<i.hash_shift^i.window[a+1])&i.hash_mask;i.insert&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[a+P-1])&i.hash_mask,i.prev[a&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=a,a++,i.insert--,!(i.lookahead+i.insert<P)););}while(i.lookahead<ce&&i.strm.avail_in!==0)}function ta(i,t){var e=65535;for(e>i.pending_buf_size-5&&(e=i.pending_buf_size-5);;){if(i.lookahead<=1){if(pt(i),i.lookahead===0&&t===Be)return Y;if(i.lookahead===0)break}i.strstart+=i.lookahead,i.lookahead=0;var s=i.block_start+e;if((i.strstart===0||i.strstart>=s)&&(i.lookahead=i.strstart-s,i.strstart=s,j(i,!1),i.strm.avail_out===0)||i.strstart-i.block_start>=i.w_size-ce&&(j(i,!1),i.strm.avail_out===0))return Y}return i.insert=0,t===ye?(j(i,!0),i.strm.avail_out===0?Re:Je):(i.strstart>i.block_start&&(j(i,!1),i.strm.avail_out===0),Y)}function Qi(i,t){for(var e,s;;){if(i.lookahead<ce){if(pt(i),i.lookahead<ce&&t===Be)return Y;if(i.lookahead===0)break}if(e=0,i.lookahead>=P&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+P-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),e!==0&&i.strstart-e<=i.w_size-ce&&(i.match_length=mr(i,e)),i.match_length>=P)if(s=be(i,i.strstart-i.match_start,i.match_length-P),i.lookahead-=i.match_length,i.match_length<=i.max_lazy_match&&i.lookahead>=P){i.match_length--;do i.strstart++,i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+P-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart;while(--i.match_length!==0);i.strstart++}else i.strstart+=i.match_length,i.match_length=0,i.ins_h=i.window[i.strstart],i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+1])&i.hash_mask;else s=be(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++;if(s&&(j(i,!1),i.strm.avail_out===0))return Y}return i.insert=i.strstart<P-1?i.strstart:P-1,t===ye?(j(i,!0),i.strm.avail_out===0?Re:Je):i.last_lit&&(j(i,!1),i.strm.avail_out===0)?Y:xt}function Ze(i,t){for(var e,s,r;;){if(i.lookahead<ce){if(pt(i),i.lookahead<ce&&t===Be)return Y;if(i.lookahead===0)break}if(e=0,i.lookahead>=P&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+P-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),i.prev_length=i.match_length,i.prev_match=i.match_start,i.match_length=P-1,e!==0&&i.prev_length<i.max_lazy_match&&i.strstart-e<=i.w_size-ce&&(i.match_length=mr(i,e),i.match_length<=5&&(i.strategy===In||i.match_length===P&&i.strstart-i.match_start>4096)&&(i.match_length=P-1)),i.prev_length>=P&&i.match_length<=i.prev_length){r=i.strstart+i.lookahead-P,s=be(i,i.strstart-1-i.prev_match,i.prev_length-P),i.lookahead-=i.prev_length-1,i.prev_length-=2;do++i.strstart<=r&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+P-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart);while(--i.prev_length!==0);if(i.match_available=0,i.match_length=P-1,i.strstart++,s&&(j(i,!1),i.strm.avail_out===0))return Y}else if(i.match_available){if(s=be(i,0,i.window[i.strstart-1]),s&&j(i,!1),i.strstart++,i.lookahead--,i.strm.avail_out===0)return Y}else i.match_available=1,i.strstart++,i.lookahead--}return i.match_available&&(s=be(i,0,i.window[i.strstart-1]),i.match_available=0),i.insert=i.strstart<P-1?i.strstart:P-1,t===ye?(j(i,!0),i.strm.avail_out===0?Re:Je):i.last_lit&&(j(i,!1),i.strm.avail_out===0)?Y:xt}function ia(i,t){for(var e,s,r,n,a=i.window;;){if(i.lookahead<=ve){if(pt(i),i.lookahead<=ve&&t===Be)return Y;if(i.lookahead===0)break}if(i.match_length=0,i.lookahead>=P&&i.strstart>0&&(r=i.strstart-1,s=a[r],s===a[++r]&&s===a[++r]&&s===a[++r])){n=i.strstart+ve;do;while(s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&r<n);i.match_length=ve-(n-r),i.match_length>i.lookahead&&(i.match_length=i.lookahead)}if(i.match_length>=P?(e=be(i,1,i.match_length-P),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(e=be(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),e&&(j(i,!1),i.strm.avail_out===0))return Y}return i.insert=0,t===ye?(j(i,!0),i.strm.avail_out===0?Re:Je):i.last_lit&&(j(i,!1),i.strm.avail_out===0)?Y:xt}function sa(i,t){for(var e;;){if(i.lookahead===0&&(pt(i),i.lookahead===0)){if(t===Be)return Y;break}if(i.match_length=0,e=be(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,e&&(j(i,!1),i.strm.avail_out===0))return Y}return i.insert=0,t===ye?(j(i,!0),i.strm.avail_out===0?Re:Je):i.last_lit&&(j(i,!1),i.strm.avail_out===0)?Y:xt}function ue(i,t,e,s,r){this.good_length=i,this.max_lazy=t,this.nice_length=e,this.max_chain=s,this.func=r}var je;je=[new ue(0,0,0,0,ta),new ue(4,4,8,4,Qi),new ue(4,5,16,8,Qi),new ue(4,6,32,32,Qi),new ue(4,4,16,16,Ze),new ue(8,16,32,32,Ze),new ue(8,16,128,128,Ze),new ue(8,32,128,256,Ze),new ue(32,128,258,1024,Ze),new ue(32,258,258,4096,Ze)];function ra(i){i.window_size=2*i.w_size,Me(i.head),i.max_lazy_match=je[i.level].max_lazy,i.good_match=je[i.level].good_length,i.nice_match=je[i.level].nice_length,i.max_chain_length=je[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=P-1,i.match_available=0,i.ins_h=0}function na(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Wt,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new ie(jn*2),this.dyn_dtree=new ie((2*Zn+1)*2),this.bl_tree=new ie((2*Yn+1)*2),Me(this.dyn_ltree),Me(this.dyn_dtree),Me(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new ie(qn+1),this.heap=new ie(2*Ii+1),Me(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new ie(2*Ii+1),Me(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function aa(i){var t;return!i||!i.state?Ye(i,qe):(i.total_in=i.total_out=0,i.data_type=Nn,t=i.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?br:dt,i.adler=t.wrap===2?0:1,t.last_flush=Be,cr(t),Te)}function oa(i){var t=aa(i);return t===Te&&ra(i.state),t}function ha(i,t,e,s,r,n){if(!i)return qe;var a=1;if(t===Pi&&(t=6),s<0?(a=0,s=-s):s>15&&(a=2,s-=16),r<1||r>On||e!==Wt||s<8||s>15||t<0||t>9||n<0||n>Hn)return Ye(i,qe);s===8&&(s=9);var h=new na;return i.state=h,h.strm=i,h.wrap=a,h.gzhead=null,h.w_bits=s,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=r+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+P-1)/P),h.window=new Oe(h.w_size*2),h.head=new ie(h.hash_size),h.prev=new ie(h.w_size),h.lit_bufsize=1<<r+6,h.pending_buf_size=h.lit_bufsize*4,h.pending_buf=new Oe(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=t,h.strategy=n,h.method=e,oa(i)}function wr(i,t){return ha(i,t,Wt,zn,Gn,Un)}function Hi(i,t){var e,s,r,n;if(!i||!i.state||t>dr||t<0)return i?Ye(i,qe):qe;if(s=i.state,!i.output||!i.input&&i.avail_in!==0||s.status===Gt&&t!==ye)return Ye(i,i.avail_out===0?Mi:qe);if(s.strm=i,e=s.last_flush,s.last_flush=t,s.status===br)if(s.wrap===2)i.adler=0,Q(s,31),Q(s,139),Q(s,8),s.gzhead?(Q(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),Q(s,s.gzhead.time&255),Q(s,s.gzhead.time>>8&255),Q(s,s.gzhead.time>>16&255),Q(s,s.gzhead.time>>24&255),Q(s,s.level===9?2:s.strategy>=zt||s.level<2?4:0),Q(s,s.gzhead.os&255),s.gzhead.extra&&s.gzhead.extra.length&&(Q(s,s.gzhead.extra.length&255),Q(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(i.adler=G(i.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=pr):(Q(s,0),Q(s,0),Q(s,0),Q(s,0),Q(s,0),Q(s,s.level===9?2:s.strategy>=zt||s.level<2?4:0),Q(s,$n),s.status=dt);else{var a=Wt+(s.w_bits-8<<4)<<8,h=-1;s.strategy>=zt||s.level<2?h=0:s.level<6?h=1:s.level===6?h=2:h=3,a|=h<<6,s.strstart!==0&&(a|=Jn),a+=31-a%31,s.status=dt,ut(s,a),s.strstart!==0&&(ut(s,i.adler>>>16),ut(s,i.adler&65535)),i.adler=1}if(s.status===pr)if(s.gzhead.extra){for(r=s.pending;s.gzindex<(s.gzhead.extra.length&65535)&&!(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>r&&(i.adler=G(i.adler,s.pending_buf,s.pending-r,r)),we(i),r=s.pending,s.pending===s.pending_buf_size));)Q(s,s.gzhead.extra[s.gzindex]&255),s.gzindex++;s.gzhead.hcrc&&s.pending>r&&(i.adler=G(i.adler,s.pending_buf,s.pending-r,r)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=Ri)}else s.status=Ri;if(s.status===Ri)if(s.gzhead.name){r=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>r&&(i.adler=G(i.adler,s.pending_buf,s.pending-r,r)),we(i),r=s.pending,s.pending===s.pending_buf_size)){n=1;break}s.gzindex<s.gzhead.name.length?n=s.gzhead.name.charCodeAt(s.gzindex++)&255:n=0,Q(s,n)}while(n!==0);s.gzhead.hcrc&&s.pending>r&&(i.adler=G(i.adler,s.pending_buf,s.pending-r,r)),n===0&&(s.gzindex=0,s.status=Bi)}else s.status=Bi;if(s.status===Bi)if(s.gzhead.comment){r=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>r&&(i.adler=G(i.adler,s.pending_buf,s.pending-r,r)),we(i),r=s.pending,s.pending===s.pending_buf_size)){n=1;break}s.gzindex<s.gzhead.comment.length?n=s.gzhead.comment.charCodeAt(s.gzindex++)&255:n=0,Q(s,n)}while(n!==0);s.gzhead.hcrc&&s.pending>r&&(i.adler=G(i.adler,s.pending_buf,s.pending-r,r)),n===0&&(s.status=Di)}else s.status=Di;if(s.status===Di&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&we(i),s.pending+2<=s.pending_buf_size&&(Q(s,i.adler&255),Q(s,i.adler>>8&255),i.adler=0,s.status=dt)):s.status=dt),s.pending!==0){if(we(i),i.avail_out===0)return s.last_flush=-1,Te}else if(i.avail_in===0&&gr(t)<=gr(e)&&t!==ye)return Ye(i,Mi);if(s.status===Gt&&i.avail_in!==0)return Ye(i,Mi);if(i.avail_in!==0||s.lookahead!==0||t!==Be&&s.status!==Gt){var _=s.strategy===zt?sa(s,t):s.strategy===Pn?ia(s,t):je[s.level].func(s,t);if((_===Re||_===Je)&&(s.status=Gt),_===Y||_===Re)return i.avail_out===0&&(s.last_flush=-1),Te;if(_===xt&&(t===Qn?_r(s):t!==dr&&(Ti(s,0,0,!1),t===Vt&&(Me(s.head),s.lookahead===0&&(s.strstart=0,s.block_start=0,s.insert=0))),we(i),i.avail_out===0))return s.last_flush=-1,Te}return t!==ye?Te:s.wrap<=0?xr:(s.wrap===2?(Q(s,i.adler&255),Q(s,i.adler>>8&255),Q(s,i.adler>>16&255),Q(s,i.adler>>24&255),Q(s,i.total_in&255),Q(s,i.total_in>>8&255),Q(s,i.total_in>>16&255),Q(s,i.total_in>>24&255)):(ut(s,i.adler>>>16),ut(s,i.adler&65535)),we(i),s.wrap>0&&(s.wrap=-s.wrap),s.pending!==0?Te:xr)}var gt=class{constructor(){this.strm=new at,this.chunkSize=1024*10*10,this.outputBuffer=new Uint8Array(this.chunkSize),wr(this.strm,Pi)}deflate(t){this.strm.input=t,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0,this.strm.output=this.outputBuffer,this.strm.avail_out=this.chunkSize,this.strm.next_out=0;let e=Hi(this.strm,Vt),s=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);if(e<0)throw new Error("zlib deflate failed");if(this.strm.avail_in>0){let r=[s],n=s.length;do{if(this.strm.output=new Uint8Array(this.chunkSize),this.strm.next_out=0,this.strm.avail_out=this.chunkSize,e=Hi(this.strm,Vt),e<0)throw new Error("zlib deflate failed");let _=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);n+=_.length,r.push(_)}while(this.strm.avail_in>0);let a=new Uint8Array(n),h=0;for(let _=0;_<r.length;_++)a.set(r[_],h),h+=r[_].length;s=a}return this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0,s}};var f={XK_VoidSymbol:16777215,XK_BackSpace:65288,XK_Tab:65289,XK_Linefeed:65290,XK_Clear:65291,XK_Return:65293,XK_Pause:65299,XK_Scroll_Lock:65300,XK_Sys_Req:65301,XK_Escape:65307,XK_Delete:65535,XK_Multi_key:65312,XK_Codeinput:65335,XK_SingleCandidate:65340,XK_MultipleCandidate:65341,XK_PreviousCandidate:65342,XK_Kanji:65313,XK_Muhenkan:65314,XK_Henkan_Mode:65315,XK_Henkan:65315,XK_Romaji:65316,XK_Hiragana:65317,XK_Katakana:65318,XK_Hiragana_Katakana:65319,XK_Zenkaku:65320,XK_Hankaku:65321,XK_Zenkaku_Hankaku:65322,XK_Touroku:65323,XK_Massyo:65324,XK_Kana_Lock:65325,XK_Kana_Shift:65326,XK_Eisu_Shift:65327,XK_Eisu_toggle:65328,XK_Kanji_Bangou:65335,XK_Zen_Koho:65341,XK_Mae_Koho:65342,XK_Home:65360,XK_Left:65361,XK_Up:65362,XK_Right:65363,XK_Down:65364,XK_Prior:65365,XK_Page_Up:65365,XK_Next:65366,XK_Page_Down:65366,XK_End:65367,XK_Begin:65368,XK_Select:65376,XK_Print:65377,XK_Execute:65378,XK_Insert:65379,XK_Undo:65381,XK_Redo:65382,XK_Menu:65383,XK_Find:65384,XK_Cancel:65385,XK_Help:65386,XK_Break:65387,XK_Mode_switch:65406,XK_script_switch:65406,XK_Num_Lock:65407,XK_KP_Space:65408,XK_KP_Tab:65417,XK_KP_Enter:65421,XK_KP_F1:65425,XK_KP_F2:65426,XK_KP_F3:65427,XK_KP_F4:65428,XK_KP_Home:65429,XK_KP_Left:65430,XK_KP_Up:65431,XK_KP_Right:65432,XK_KP_Down:65433,XK_KP_Prior:65434,XK_KP_Page_Up:65434,XK_KP_Next:65435,XK_KP_Page_Down:65435,XK_KP_End:65436,XK_KP_Begin:65437,XK_KP_Insert:65438,XK_KP_Delete:65439,XK_KP_Equal:65469,XK_KP_Multiply:65450,XK_KP_Add:65451,XK_KP_Separator:65452,XK_KP_Subtract:65453,XK_KP_Decimal:65454,XK_KP_Divide:65455,XK_KP_0:65456,XK_KP_1:65457,XK_KP_2:65458,XK_KP_3:65459,XK_KP_4:65460,XK_KP_5:65461,XK_KP_6:65462,XK_KP_7:65463,XK_KP_8:65464,XK_KP_9:65465,XK_F1:65470,XK_F2:65471,XK_F3:65472,XK_F4:65473,XK_F5:65474,XK_F6:65475,XK_F7:65476,XK_F8:65477,XK_F9:65478,XK_F10:65479,XK_F11:65480,XK_L1:65480,XK_F12:65481,XK_L2:65481,XK_F13:65482,XK_L3:65482,XK_F14:65483,XK_L4:65483,XK_F15:65484,XK_L5:65484,XK_F16:65485,XK_L6:65485,XK_F17:65486,XK_L7:65486,XK_F18:65487,XK_L8:65487,XK_F19:65488,XK_L9:65488,XK_F20:65489,XK_L10:65489,XK_F21:65490,XK_R1:65490,XK_F22:65491,XK_R2:65491,XK_F23:65492,XK_R3:65492,XK_F24:65493,XK_R4:65493,XK_F25:65494,XK_R5:65494,XK_F26:65495,XK_R6:65495,XK_F27:65496,XK_R7:65496,XK_F28:65497,XK_R8:65497,XK_F29:65498,XK_R9:65498,XK_F30:65499,XK_R10:65499,XK_F31:65500,XK_R11:65500,XK_F32:65501,XK_R12:65501,XK_F33:65502,XK_R13:65502,XK_F34:65503,XK_R14:65503,XK_F35:65504,XK_R15:65504,XK_Shift_L:65505,XK_Shift_R:65506,XK_Control_L:65507,XK_Control_R:65508,XK_Caps_Lock:65509,XK_Shift_Lock:65510,XK_Meta_L:65511,XK_Meta_R:65512,XK_Alt_L:65513,XK_Alt_R:65514,XK_Super_L:65515,XK_Super_R:65516,XK_Hyper_L:65517,XK_Hyper_R:65518,XK_ISO_Level3_Shift:65027,XK_ISO_Next_Group:65032,XK_ISO_Prev_Group:65034,XK_ISO_First_Group:65036,XK_ISO_Last_Group:65038,XK_space:32,XK_exclam:33,XK_quotedbl:34,XK_numbersign:35,XK_dollar:36,XK_percent:37,XK_ampersand:38,XK_apostrophe:39,XK_quoteright:39,XK_parenleft:40,XK_parenright:41,XK_asterisk:42,XK_plus:43,XK_comma:44,XK_minus:45,XK_period:46,XK_slash:47,XK_0:48,XK_1:49,XK_2:50,XK_3:51,XK_4:52,XK_5:53,XK_6:54,XK_7:55,XK_8:56,XK_9:57,XK_colon:58,XK_semicolon:59,XK_less:60,XK_equal:61,XK_greater:62,XK_question:63,XK_at:64,XK_A:65,XK_B:66,XK_C:67,XK_D:68,XK_E:69,XK_F:70,XK_G:71,XK_H:72,XK_I:73,XK_J:74,XK_K:75,XK_L:76,XK_M:77,XK_N:78,XK_O:79,XK_P:80,XK_Q:81,XK_R:82,XK_S:83,XK_T:84,XK_U:85,XK_V:86,XK_W:87,XK_X:88,XK_Y:89,XK_Z:90,XK_bracketleft:91,XK_backslash:92,XK_bracketright:93,XK_asciicircum:94,XK_underscore:95,XK_grave:96,XK_quoteleft:96,XK_a:97,XK_b:98,XK_c:99,XK_d:100,XK_e:101,XK_f:102,XK_g:103,XK_h:104,XK_i:105,XK_j:106,XK_k:107,XK_l:108,XK_m:109,XK_n:110,XK_o:111,XK_p:112,XK_q:113,XK_r:114,XK_s:115,XK_t:116,XK_u:117,XK_v:118,XK_w:119,XK_x:120,XK_y:121,XK_z:122,XK_braceleft:123,XK_bar:124,XK_braceright:125,XK_asciitilde:126,XK_nobreakspace:160,XK_exclamdown:161,XK_cent:162,XK_sterling:163,XK_currency:164,XK_yen:165,XK_brokenbar:166,XK_section:167,XK_diaeresis:168,XK_copyright:169,XK_ordfeminine:170,XK_guillemotleft:171,XK_notsign:172,XK_hyphen:173,XK_registered:174,XK_macron:175,XK_degree:176,XK_plusminus:177,XK_twosuperior:178,XK_threesuperior:179,XK_acute:180,XK_mu:181,XK_paragraph:182,XK_periodcentered:183,XK_cedilla:184,XK_onesuperior:185,XK_masculine:186,XK_guillemotright:187,XK_onequarter:188,XK_onehalf:189,XK_threequarters:190,XK_questiondown:191,XK_Agrave:192,XK_Aacute:193,XK_Acircumflex:194,XK_Atilde:195,XK_Adiaeresis:196,XK_Aring:197,XK_AE:198,XK_Ccedilla:199,XK_Egrave:200,XK_Eacute:201,XK_Ecircumflex:202,XK_Ediaeresis:203,XK_Igrave:204,XK_Iacute:205,XK_Icircumflex:206,XK_Idiaeresis:207,XK_ETH:208,XK_Eth:208,XK_Ntilde:209,XK_Ograve:210,XK_Oacute:211,XK_Ocircumflex:212,XK_Otilde:213,XK_Odiaeresis:214,XK_multiply:215,XK_Oslash:216,XK_Ooblique:216,XK_Ugrave:217,XK_Uacute:218,XK_Ucircumflex:219,XK_Udiaeresis:220,XK_Yacute:221,XK_THORN:222,XK_Thorn:222,XK_ssharp:223,XK_agrave:224,XK_aacute:225,XK_acircumflex:226,XK_atilde:227,XK_adiaeresis:228,XK_aring:229,XK_ae:230,XK_ccedilla:231,XK_egrave:232,XK_eacute:233,XK_ecircumflex:234,XK_ediaeresis:235,XK_igrave:236,XK_iacute:237,XK_icircumflex:238,XK_idiaeresis:239,XK_eth:240,XK_ntilde:241,XK_ograve:242,XK_oacute:243,XK_ocircumflex:244,XK_otilde:245,XK_odiaeresis:246,XK_division:247,XK_oslash:248,XK_ooblique:248,XK_ugrave:249,XK_uacute:250,XK_ucircumflex:251,XK_udiaeresis:252,XK_yacute:253,XK_thorn:254,XK_ydiaeresis:255,XK_Hangul:65329,XK_Hangul_Hanja:65332,XK_Hangul_Jeonja:65336,XF86XK_ModeLock:269025025,XF86XK_MonBrightnessUp:269025026,XF86XK_MonBrightnessDown:269025027,XF86XK_KbdLightOnOff:269025028,XF86XK_KbdBrightnessUp:269025029,XF86XK_KbdBrightnessDown:269025030,XF86XK_Standby:269025040,XF86XK_AudioLowerVolume:269025041,XF86XK_AudioMute:269025042,XF86XK_AudioRaiseVolume:269025043,XF86XK_AudioPlay:269025044,XF86XK_AudioStop:269025045,XF86XK_AudioPrev:269025046,XF86XK_AudioNext:269025047,XF86XK_HomePage:269025048,XF86XK_Mail:269025049,XF86XK_Start:269025050,XF86XK_Search:269025051,XF86XK_AudioRecord:269025052,XF86XK_Calculator:269025053,XF86XK_Memo:269025054,XF86XK_ToDoList:269025055,XF86XK_Calendar:269025056,XF86XK_PowerDown:269025057,XF86XK_ContrastAdjust:269025058,XF86XK_RockerUp:269025059,XF86XK_RockerDown:269025060,XF86XK_RockerEnter:269025061,XF86XK_Back:269025062,XF86XK_Forward:269025063,XF86XK_Stop:269025064,XF86XK_Refresh:269025065,XF86XK_PowerOff:269025066,XF86XK_WakeUp:269025067,XF86XK_Eject:269025068,XF86XK_ScreenSaver:269025069,XF86XK_WWW:269025070,XF86XK_Sleep:269025071,XF86XK_Favorites:269025072,XF86XK_AudioPause:269025073,XF86XK_AudioMedia:269025074,XF86XK_MyComputer:269025075,XF86XK_VendorHome:269025076,XF86XK_LightBulb:269025077,XF86XK_Shop:269025078,XF86XK_History:269025079,XF86XK_OpenURL:269025080,XF86XK_AddFavorite:269025081,XF86XK_HotLinks:269025082,XF86XK_BrightnessAdjust:269025083,XF86XK_Finance:269025084,XF86XK_Community:269025085,XF86XK_AudioRewind:269025086,XF86XK_BackForward:269025087,XF86XK_Launch0:269025088,XF86XK_Launch1:269025089,XF86XK_Launch2:269025090,XF86XK_Launch3:269025091,XF86XK_Launch4:269025092,XF86XK_Launch5:269025093,XF86XK_Launch6:269025094,XF86XK_Launch7:269025095,XF86XK_Launch8:269025096,XF86XK_Launch9:269025097,XF86XK_LaunchA:269025098,XF86XK_LaunchB:269025099,XF86XK_LaunchC:269025100,XF86XK_LaunchD:269025101,XF86XK_LaunchE:269025102,XF86XK_LaunchF:269025103,XF86XK_ApplicationLeft:269025104,XF86XK_ApplicationRight:269025105,XF86XK_Book:269025106,XF86XK_CD:269025107,XF86XK_Calculater:269025108,XF86XK_Clear:269025109,XF86XK_Close:269025110,XF86XK_Copy:269025111,XF86XK_Cut:269025112,XF86XK_Display:269025113,XF86XK_DOS:269025114,XF86XK_Documents:269025115,XF86XK_Excel:269025116,XF86XK_Explorer:269025117,XF86XK_Game:269025118,XF86XK_Go:269025119,XF86XK_iTouch:269025120,XF86XK_LogOff:269025121,XF86XK_Market:269025122,XF86XK_Meeting:269025123,XF86XK_MenuKB:269025125,XF86XK_MenuPB:269025126,XF86XK_MySites:269025127,XF86XK_New:269025128,XF86XK_News:269025129,XF86XK_OfficeHome:269025130,XF86XK_Open:269025131,XF86XK_Option:269025132,XF86XK_Paste:269025133,XF86XK_Phone:269025134,XF86XK_Q:269025136,XF86XK_Reply:269025138,XF86XK_Reload:269025139,XF86XK_RotateWindows:269025140,XF86XK_RotationPB:269025141,XF86XK_RotationKB:269025142,XF86XK_Save:269025143,XF86XK_ScrollUp:269025144,XF86XK_ScrollDown:269025145,XF86XK_ScrollClick:269025146,XF86XK_Send:269025147,XF86XK_Spell:269025148,XF86XK_SplitScreen:269025149,XF86XK_Support:269025150,XF86XK_TaskPane:269025151,XF86XK_Terminal:269025152,XF86XK_Tools:269025153,XF86XK_Travel:269025154,XF86XK_UserPB:269025156,XF86XK_User1KB:269025157,XF86XK_User2KB:269025158,XF86XK_Video:269025159,XF86XK_WheelButton:269025160,XF86XK_Word:269025161,XF86XK_Xfer:269025162,XF86XK_ZoomIn:269025163,XF86XK_ZoomOut:269025164,XF86XK_Away:269025165,XF86XK_Messenger:269025166,XF86XK_WebCam:269025167,XF86XK_MailForward:269025168,XF86XK_Pictures:269025169,XF86XK_Music:269025170,XF86XK_Battery:269025171,XF86XK_Bluetooth:269025172,XF86XK_WLAN:269025173,XF86XK_UWB:269025174,XF86XK_AudioForward:269025175,XF86XK_AudioRepeat:269025176,XF86XK_AudioRandomPlay:269025177,XF86XK_Subtitle:269025178,XF86XK_AudioCycleTrack:269025179,XF86XK_CycleAngle:269025180,XF86XK_FrameBack:269025181,XF86XK_FrameForward:269025182,XF86XK_Time:269025183,XF86XK_Select:269025184,XF86XK_View:269025185,XF86XK_TopMenu:269025186,XF86XK_Red:269025187,XF86XK_Green:269025188,XF86XK_Yellow:269025189,XF86XK_Blue:269025190,XF86XK_Suspend:269025191,XF86XK_Hibernate:269025192,XF86XK_TouchpadToggle:269025193,XF86XK_TouchpadOn:269025200,XF86XK_TouchpadOff:269025201,XF86XK_AudioMicMute:269025202,XF86XK_Switch_VT_1:269024769,XF86XK_Switch_VT_2:269024770,XF86XK_Switch_VT_3:269024771,XF86XK_Switch_VT_4:269024772,XF86XK_Switch_VT_5:269024773,XF86XK_Switch_VT_6:269024774,XF86XK_Switch_VT_7:269024775,XF86XK_Switch_VT_8:269024776,XF86XK_Switch_VT_9:269024777,XF86XK_Switch_VT_10:269024778,XF86XK_Switch_VT_11:269024779,XF86XK_Switch_VT_12:269024780,XF86XK_Ungrab:269024800,XF86XK_ClearGrab:269024801,XF86XK_Next_VMode:269024802,XF86XK_Prev_VMode:269024803,XF86XK_LogWindowTree:269024804,XF86XK_LogGrabInfo:269024805};var la={256:960,257:992,258:451,259:483,260:417,261:433,262:454,263:486,264:710,265:742,266:709,267:741,268:456,269:488,270:463,271:495,272:464,273:496,274:938,275:954,278:972,279:1004,280:458,281:490,282:460,283:492,284:728,285:760,286:683,287:699,288:725,289:757,290:939,291:955,292:678,293:694,294:673,295:689,296:933,297:949,298:975,299:1007,302:967,303:999,304:681,305:697,308:684,309:700,310:979,311:1011,312:930,313:453,314:485,315:934,316:950,317:421,318:437,321:419,322:435,323:465,324:497,325:977,326:1009,327:466,328:498,330:957,331:959,332:978,333:1010,336:469,337:501,338:5052,339:5053,340:448,341:480,342:931,343:947,344:472,345:504,346:422,347:438,348:734,349:766,350:426,351:442,352:425,353:441,354:478,355:510,356:427,357:443,358:940,359:956,360:989,361:1021,362:990,363:1022,364:733,365:765,366:473,367:505,368:475,369:507,370:985,371:1017,376:5054,377:428,378:444,379:431,380:447,381:430,382:446,402:2294,466:16777681,711:439,728:418,729:511,731:434,733:445,901:1966,902:1953,904:1954,905:1955,906:1956,908:1959,910:1960,911:1963,912:1974,913:1985,914:1986,915:1987,916:1988,917:1989,918:1990,919:1991,920:1992,921:1993,922:1994,923:1995,924:1996,925:1997,926:1998,927:1999,928:2e3,929:2001,931:2002,932:2004,933:2005,934:2006,935:2007,936:2008,937:2009,938:1957,939:1961,940:1969,941:1970,942:1971,943:1972,944:1978,945:2017,946:2018,947:2019,948:2020,949:2021,950:2022,951:2023,952:2024,953:2025,954:2026,955:2027,956:2028,957:2029,958:2030,959:2031,960:2032,961:2033,962:2035,963:2034,964:2036,965:2037,966:2038,967:2039,968:2040,969:2041,970:1973,971:1977,972:1975,973:1976,974:1979,1025:1715,1026:1713,1027:1714,1028:1716,1029:1717,1030:1718,1031:1719,1032:1720,1033:1721,1034:1722,1035:1723,1036:1724,1038:1726,1039:1727,1040:1761,1041:1762,1042:1783,1043:1767,1044:1764,1045:1765,1046:1782,1047:1786,1048:1769,1049:1770,1050:1771,1051:1772,1052:1773,1053:1774,1054:1775,1055:1776,1056:1778,1057:1779,1058:1780,1059:1781,1060:1766,1061:1768,1062:1763,1063:1790,1064:1787,1065:1789,1066:1791,1067:1785,1068:1784,1069:1788,1070:1760,1071:1777,1072:1729,1073:1730,1074:1751,1075:1735,1076:1732,1077:1733,1078:1750,1079:1754,1080:1737,1081:1738,1082:1739,1083:1740,1084:1741,1085:1742,1086:1743,1087:1744,1088:1746,1089:1747,1090:1748,1091:1749,1092:1734,1093:1736,1094:1731,1095:1758,1096:1755,1097:1757,1098:1759,1099:1753,1100:1752,1101:1756,1102:1728,1103:1745,1105:1699,1106:1697,1107:1698,1108:1700,1109:1701,1110:1702,1111:1703,1112:1704,1113:1705,1114:1706,1115:1707,1116:1708,1118:1710,1119:1711,1168:1725,1169:1709,1488:3296,1489:3297,1490:3298,1491:3299,1492:3300,1493:3301,1494:3302,1495:3303,1496:3304,1497:3305,1498:3306,1499:3307,1500:3308,1501:3309,1502:3310,1503:3311,1504:3312,1505:3313,1506:3314,1507:3315,1508:3316,1509:3317,1510:3318,1511:3319,1512:3320,1513:3321,1514:3322,1548:1452,1563:1467,1567:1471,1569:1473,1570:1474,1571:1475,1572:1476,1573:1477,1574:1478,1575:1479,1576:1480,1577:1481,1578:1482,1579:1483,1580:1484,1581:1485,1582:1486,1583:1487,1584:1488,1585:1489,1586:1490,1587:1491,1588:1492,1589:1493,1590:1494,1591:1495,1592:1496,1593:1497,1594:1498,1600:1504,1601:1505,1602:1506,1603:1507,1604:1508,1605:1509,1606:1510,1607:1511,1608:1512,1609:1513,1610:1514,1611:1515,1612:1516,1613:1517,1614:1518,1615:1519,1616:1520,1617:1521,1618:1522,3585:3489,3586:3490,3587:3491,3588:3492,3589:3493,3590:3494,3591:3495,3592:3496,3593:3497,3594:3498,3595:3499,3596:3500,3597:3501,3598:3502,3599:3503,3600:3504,3601:3505,3602:3506,3603:3507,3604:3508,3605:3509,3606:3510,3607:3511,3608:3512,3609:3513,3610:3514,3611:3515,3612:3516,3613:3517,3614:3518,3615:3519,3616:3520,3617:3521,3618:3522,3619:3523,3620:3524,3621:3525,3622:3526,3623:3527,3624:3528,3625:3529,3626:3530,3627:3531,3628:3532,3629:3533,3630:3534,3631:3535,3632:3536,3633:3537,3634:3538,3635:3539,3636:3540,3637:3541,3638:3542,3639:3543,3640:3544,3641:3545,3642:3546,3647:3551,3648:3552,3649:3553,3650:3554,3651:3555,3652:3556,3653:3557,3654:3558,3655:3559,3656:3560,3657:3561,3658:3562,3659:3563,3660:3564,3661:3565,3664:3568,3665:3569,3666:3570,3667:3571,3668:3572,3669:3573,3670:3574,3671:3575,3672:3576,3673:3577,8194:2722,8195:2721,8196:2723,8197:2724,8199:2725,8200:2726,8201:2727,8202:2728,8210:2747,8211:2730,8212:2729,8213:1967,8215:3295,8216:2768,8217:2769,8218:2813,8220:2770,8221:2771,8222:2814,8224:2801,8225:2802,8226:2790,8229:2735,8230:2734,8240:2773,8242:2774,8243:2775,8248:2812,8254:1150,8361:3839,8364:8364,8453:2744,8470:1712,8471:2811,8478:2772,8482:2761,8531:2736,8532:2737,8533:2738,8534:2739,8535:2740,8536:2741,8537:2742,8538:2743,8539:2755,8540:2756,8541:2757,8542:2758,8592:2299,8593:2300,8594:2301,8595:2302,8658:2254,8660:2253,8706:2287,8711:2245,8728:3018,8730:2262,8733:2241,8734:2242,8743:2270,8744:2271,8745:2268,8746:2269,8747:2239,8756:2240,8764:2248,8771:2249,8773:16785992,8800:2237,8801:2255,8804:2236,8805:2238,8834:2266,8835:2267,8866:3068,8867:3036,8868:3010,8869:3022,8968:3027,8970:3012,8981:2810,8992:2212,8993:2213,9109:3020,9115:2219,9117:2220,9118:2221,9120:2222,9121:2215,9123:2216,9124:2217,9126:2218,9128:2223,9132:2224,9143:2209,9146:2543,9147:2544,9148:2546,9149:2547,9225:2530,9226:2533,9227:2537,9228:2531,9229:2532,9251:2732,9252:2536,9472:2211,9474:2214,9484:2210,9488:2539,9492:2541,9496:2538,9500:2548,9508:2549,9516:2551,9524:2550,9532:2542,9618:2529,9642:2791,9643:2785,9644:2779,9645:2786,9646:2783,9647:2767,9650:2792,9651:2787,9654:2781,9655:2765,9660:2793,9661:2788,9664:2780,9665:2764,9670:2528,9675:2766,9679:2782,9702:2784,9734:2789,9742:2809,9747:2762,9756:2794,9758:2795,9792:2808,9794:2807,9827:2796,9829:2798,9830:2797,9837:2806,9839:2805,10003:2803,10007:2804,10013:2777,10016:2800,10216:2748,10217:2750,12289:1188,12290:1185,12300:1186,12301:1187,12443:1246,12444:1247,12449:1191,12450:1201,12451:1192,12452:1202,12453:1193,12454:1203,12455:1194,12456:1204,12457:1195,12458:1205,12459:1206,12461:1207,12463:1208,12465:1209,12467:1210,12469:1211,12471:1212,12473:1213,12475:1214,12477:1215,12479:1216,12481:1217,12483:1199,12484:1218,12486:1219,12488:1220,12490:1221,12491:1222,12492:1223,12493:1224,12494:1225,12495:1226,12498:1227,12501:1228,12504:1229,12507:1230,12510:1231,12511:1232,12512:1233,12513:1234,12514:1235,12515:1196,12516:1236,12517:1197,12518:1237,12519:1198,12520:1238,12521:1239,12522:1240,12523:1241,12524:1242,12525:1243,12527:1244,12530:1190,12531:1245,12539:1189,12540:1200},vr={lookup(i){if(i>=32&&i<=255)return i;let t=la[i];return t!==void 0?t:16777216|i}};var Ui={8:"Backspace",9:"Tab",10:"NumpadClear",13:"Enter",16:"ShiftLeft",17:"ControlLeft",18:"AltLeft",19:"Pause",20:"CapsLock",21:"Lang1",25:"Lang2",27:"Escape",28:"Convert",29:"NonConvert",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",44:"PrintScreen",45:"Insert",46:"Delete",47:"Help",48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",91:"MetaLeft",92:"MetaRight",93:"ContextMenu",95:"Sleep",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",106:"NumpadMultiply",107:"NumpadAdd",108:"NumpadDecimal",109:"NumpadSubtract",110:"NumpadDecimal",111:"NumpadDivide",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",124:"F13",125:"F14",126:"F15",127:"F16",128:"F17",129:"F18",130:"F19",131:"F20",132:"F21",133:"F22",134:"F23",135:"F24",144:"NumLock",145:"ScrollLock",166:"BrowserBack",167:"BrowserForward",168:"BrowserRefresh",169:"BrowserStop",170:"BrowserSearch",171:"BrowserFavorites",172:"BrowserHome",173:"AudioVolumeMute",174:"AudioVolumeDown",175:"AudioVolumeUp",176:"MediaTrackNext",177:"MediaTrackPrevious",178:"MediaStop",179:"MediaPlayPause",180:"LaunchMail",181:"MediaSelect",182:"LaunchApp1",183:"LaunchApp2",225:"AltRight"};var Ni={Backspace:"Backspace",AltLeft:"Alt",AltRight:"Alt",CapsLock:"CapsLock",ContextMenu:"ContextMenu",ControlLeft:"Control",ControlRight:"Control",Enter:"Enter",MetaLeft:"Meta",MetaRight:"Meta",ShiftLeft:"Shift",ShiftRight:"Shift",Tab:"Tab",Delete:"Delete",End:"End",Help:"Help",Home:"Home",Insert:"Insert",PageDown:"PageDown",PageUp:"PageUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",ArrowUp:"ArrowUp",NumLock:"NumLock",NumpadBackspace:"Backspace",NumpadClear:"Clear",Escape:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",F13:"F13",F14:"F14",F15:"F15",F16:"F16",F17:"F17",F18:"F18",F19:"F19",F20:"F20",F21:"F21",F22:"F22",F23:"F23",F24:"F24",F25:"F25",F26:"F26",F27:"F27",F28:"F28",F29:"F29",F30:"F30",F31:"F31",F32:"F32",F33:"F33",F34:"F34",F35:"F35",PrintScreen:"PrintScreen",ScrollLock:"ScrollLock",Pause:"Pause",BrowserBack:"BrowserBack",BrowserFavorites:"BrowserFavorites",BrowserForward:"BrowserForward",BrowserHome:"BrowserHome",BrowserRefresh:"BrowserRefresh",BrowserSearch:"BrowserSearch",BrowserStop:"BrowserStop",Eject:"Eject",LaunchApp1:"LaunchMyComputer",LaunchApp2:"LaunchCalendar",LaunchMail:"LaunchMail",MediaPlayPause:"MediaPlay",MediaStop:"MediaStop",MediaTrackNext:"MediaTrackNext",MediaTrackPrevious:"MediaTrackPrevious",Power:"Power",Sleep:"Sleep",AudioVolumeDown:"AudioVolumeDown",AudioVolumeMute:"AudioVolumeMute",AudioVolumeUp:"AudioVolumeUp",WakeUp:"WakeUp"};var De={};function w(i,t){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in De)throw new Error('Duplicate entry for key "'+i+'"');De[i]=[t,t,t,t]}function Zt(i,t,e){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(e===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in De)throw new Error('Duplicate entry for key "'+i+'"');De[i]=[t,t,e,t]}function H(i,t,e){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(e===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in De)throw new Error('Duplicate entry for key "'+i+'"');De[i]=[t,t,t,e]}Zt("Alt",f.XK_Alt_L,f.XK_Alt_R);w("AltGraph",f.XK_ISO_Level3_Shift);w("CapsLock",f.XK_Caps_Lock);Zt("Control",f.XK_Control_L,f.XK_Control_R);Zt("Meta",f.XK_Super_L,f.XK_Super_R);w("NumLock",f.XK_Num_Lock);w("ScrollLock",f.XK_Scroll_Lock);Zt("Shift",f.XK_Shift_L,f.XK_Shift_R);H("Enter",f.XK_Return,f.XK_KP_Enter);w("Tab",f.XK_Tab);H(" ",f.XK_space,f.XK_KP_Space);H("ArrowDown",f.XK_Down,f.XK_KP_Down);H("ArrowLeft",f.XK_Left,f.XK_KP_Left);H("ArrowRight",f.XK_Right,f.XK_KP_Right);H("ArrowUp",f.XK_Up,f.XK_KP_Up);H("End",f.XK_End,f.XK_KP_End);H("Home",f.XK_Home,f.XK_KP_Home);H("PageDown",f.XK_Next,f.XK_KP_Next);H("PageUp",f.XK_Prior,f.XK_KP_Prior);w("Backspace",f.XK_BackSpace);H("Clear",f.XK_Clear,f.XK_KP_Begin);w("Copy",f.XF86XK_Copy);w("Cut",f.XF86XK_Cut);H("Delete",f.XK_Delete,f.XK_KP_Delete);H("Insert",f.XK_Insert,f.XK_KP_Insert);w("Paste",f.XF86XK_Paste);w("Redo",f.XK_Redo);w("Undo",f.XK_Undo);w("Cancel",f.XK_Cancel);w("ContextMenu",f.XK_Menu);w("Escape",f.XK_Escape);w("Execute",f.XK_Execute);w("Find",f.XK_Find);w("Help",f.XK_Help);w("Pause",f.XK_Pause);w("Select",f.XK_Select);w("ZoomIn",f.XF86XK_ZoomIn);w("ZoomOut",f.XF86XK_ZoomOut);w("BrightnessDown",f.XF86XK_MonBrightnessDown);w("BrightnessUp",f.XF86XK_MonBrightnessUp);w("Eject",f.XF86XK_Eject);w("LogOff",f.XF86XK_LogOff);w("Power",f.XF86XK_PowerOff);w("PowerOff",f.XF86XK_PowerDown);w("PrintScreen",f.XK_Print);w("Hibernate",f.XF86XK_Hibernate);w("Standby",f.XF86XK_Standby);w("WakeUp",f.XF86XK_WakeUp);w("AllCandidates",f.XK_MultipleCandidate);w("Alphanumeric",f.XK_Eisu_toggle);w("CodeInput",f.XK_Codeinput);w("Compose",f.XK_Multi_key);w("Convert",f.XK_Henkan);w("GroupFirst",f.XK_ISO_First_Group);w("GroupLast",f.XK_ISO_Last_Group);w("GroupNext",f.XK_ISO_Next_Group);w("GroupPrevious",f.XK_ISO_Prev_Group);w("NonConvert",f.XK_Muhenkan);w("PreviousCandidate",f.XK_PreviousCandidate);w("SingleCandidate",f.XK_SingleCandidate);w("HangulMode",f.XK_Hangul);w("HanjaMode",f.XK_Hangul_Hanja);w("JunjaMode",f.XK_Hangul_Jeonja);w("Eisu",f.XK_Eisu_toggle);w("Hankaku",f.XK_Hankaku);w("Hiragana",f.XK_Hiragana);w("HiraganaKatakana",f.XK_Hiragana_Katakana);w("KanaMode",f.XK_Kana_Shift);w("KanjiMode",f.XK_Kanji);w("Katakana",f.XK_Katakana);w("Romaji",f.XK_Romaji);w("Zenkaku",f.XK_Zenkaku);w("ZenkakuHankaku",f.XK_Zenkaku_Hankaku);w("F1",f.XK_F1);w("F2",f.XK_F2);w("F3",f.XK_F3);w("F4",f.XK_F4);w("F5",f.XK_F5);w("F6",f.XK_F6);w("F7",f.XK_F7);w("F8",f.XK_F8);w("F9",f.XK_F9);w("F10",f.XK_F10);w("F11",f.XK_F11);w("F12",f.XK_F12);w("F13",f.XK_F13);w("F14",f.XK_F14);w("F15",f.XK_F15);w("F16",f.XK_F16);w("F17",f.XK_F17);w("F18",f.XK_F18);w("F19",f.XK_F19);w("F20",f.XK_F20);w("F21",f.XK_F21);w("F22",f.XK_F22);w("F23",f.XK_F23);w("F24",f.XK_F24);w("F25",f.XK_F25);w("F26",f.XK_F26);w("F27",f.XK_F27);w("F28",f.XK_F28);w("F29",f.XK_F29);w("F30",f.XK_F30);w("F31",f.XK_F31);w("F32",f.XK_F32);w("F33",f.XK_F33);w("F34",f.XK_F34);w("F35",f.XK_F35);w("Close",f.XF86XK_Close);w("MailForward",f.XF86XK_MailForward);w("MailReply",f.XF86XK_Reply);w("MailSend",f.XF86XK_Send);w("MediaFastForward",f.XF86XK_AudioForward);w("MediaPause",f.XF86XK_AudioPause);w("MediaPlay",f.XF86XK_AudioPlay);w("MediaRecord",f.XF86XK_AudioRecord);w("MediaRewind",f.XF86XK_AudioRewind);w("MediaStop",f.XF86XK_AudioStop);w("MediaTrackNext",f.XF86XK_AudioNext);w("MediaTrackPrevious",f.XF86XK_AudioPrev);w("New",f.XF86XK_New);w("Open",f.XF86XK_Open);w("Print",f.XK_Print);w("Save",f.XF86XK_Save);w("SpellCheck",f.XF86XK_Spell);w("AudioVolumeDown",f.XF86XK_AudioLowerVolume);w("AudioVolumeUp",f.XF86XK_AudioRaiseVolume);w("AudioVolumeMute",f.XF86XK_AudioMute);w("MicrophoneVolumeMute",f.XF86XK_AudioMicMute);w("LaunchApplication1",f.XF86XK_MyComputer);w("LaunchApplication2",f.XF86XK_Calculator);w("LaunchCalendar",f.XF86XK_Calendar);w("LaunchMail",f.XF86XK_Mail);w("LaunchMediaPlayer",f.XF86XK_AudioMedia);w("LaunchMusicPlayer",f.XF86XK_Music);w("LaunchPhone",f.XF86XK_Phone);w("LaunchScreenSaver",f.XF86XK_ScreenSaver);w("LaunchSpreadsheet",f.XF86XK_Excel);w("LaunchWebBrowser",f.XF86XK_WWW);w("LaunchWebCam",f.XF86XK_WebCam);w("LaunchWordProcessor",f.XF86XK_Word);w("BrowserBack",f.XF86XK_Back);w("BrowserFavorites",f.XF86XK_Favorites);w("BrowserForward",f.XF86XK_Forward);w("BrowserHome",f.XF86XK_HomePage);w("BrowserRefresh",f.XF86XK_Refresh);w("BrowserSearch",f.XF86XK_Search);w("BrowserStop",f.XF86XK_Stop);w("Dimmer",f.XF86XK_BrightnessAdjust);w("MediaAudioTrack",f.XF86XK_AudioCycleTrack);w("RandomToggle",f.XF86XK_AudioRandomPlay);w("SplitScreenToggle",f.XF86XK_SplitScreen);w("Subtitle",f.XF86XK_Subtitle);w("VideoModeNext",f.XF86XK_Next_VMode);H("=",f.XK_equal,f.XK_KP_Equal);H("+",f.XK_plus,f.XK_KP_Add);H("-",f.XK_minus,f.XK_KP_Subtract);H("*",f.XK_asterisk,f.XK_KP_Multiply);H("/",f.XK_slash,f.XK_KP_Divide);H(".",f.XK_period,f.XK_KP_Decimal);H(",",f.XK_comma,f.XK_KP_Separator);H("0",f.XK_0,f.XK_KP_0);H("1",f.XK_1,f.XK_KP_1);H("2",f.XK_2,f.XK_KP_2);H("3",f.XK_3,f.XK_KP_3);H("4",f.XK_4,f.XK_KP_4);H("5",f.XK_5,f.XK_KP_5);H("6",f.XK_6,f.XK_KP_6);H("7",f.XK_7,f.XK_KP_7);H("8",f.XK_8,f.XK_KP_8);H("9",f.XK_9,f.XK_KP_9);var Oi=De;function $e(i){if(i.code){switch(i.code){case"OSLeft":return"MetaLeft";case"OSRight":return"MetaRight"}return i.code}if(i.keyCode in Ui){let t=Ui[i.keyCode];if(me()&&t==="ContextMenu"&&(t="MetaRight"),i.location===2)switch(t){case"ShiftLeft":return"ShiftRight";case"ControlLeft":return"ControlRight";case"AltLeft":return"AltRight"}if(i.location===3)switch(t){case"Delete":return"NumpadDecimal";case"Insert":return"Numpad0";case"End":return"Numpad1";case"ArrowDown":return"Numpad2";case"PageDown":return"Numpad3";case"ArrowLeft":return"Numpad4";case"ArrowRight":return"Numpad6";case"Home":return"Numpad7";case"ArrowUp":return"Numpad8";case"PageUp":return"Numpad9";case"Enter":return"NumpadEnter"}return t}return"Unidentified"}function ca(i){if(i.key!==void 0&&i.key!=="Unidentified"){switch(i.key){case"OS":return"Meta";case"LaunchMyComputer":return"LaunchApplication1";case"LaunchCalculator":return"LaunchApplication2"}switch(i.key){case"UIKeyInputUpArrow":return"ArrowUp";case"UIKeyInputDownArrow":return"ArrowDown";case"UIKeyInputLeftArrow":return"ArrowLeft";case"UIKeyInputRightArrow":return"ArrowRight";case"UIKeyInputEscape":return"Escape"}return i.key==="\0"&&i.code==="NumpadDecimal"?"Delete":i.key}let t=$e(i);return t in Ni?Ni[t]:i.charCode?String.fromCharCode(i.charCode):"Unidentified"}function yr(i){let t=ca(i);if(t==="Unidentified")return null;if(t in Oi){let s=i.location;if(t==="Meta"&&s===0&&(s=2),t==="Clear"&&s===3&&$e(i)==="NumLock"&&(s=0),(s===void 0||s>3)&&(s=0),t==="Meta"){let r=$e(i);if(r==="AltLeft")return f.XK_Meta_L;if(r==="AltRight")return f.XK_Meta_R}if(t==="Clear"&&$e(i)==="NumLock")return f.XK_Num_Lock;if(He())switch(t){case"Zenkaku":case"Hankaku":return f.XK_Zenkaku_Hankaku;case"Romaji":case"KanaMode":return f.XK_Romaji}return Oi[t][s]}if(t.length!==1)return null;let e=t.charCodeAt();return e?vr.lookup(e):null}var bt=class{constructor(t){this._target=t||null,this._keyDownList={},this._altGrArmed=!1,this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),blur:this._allKeysUp.bind(this)},this.onkeyevent=()=>{}}_sendKeyEvent(t,e,s,r=null,n=null){if(s)this._keyDownList[e]=t;else{if(!(e in this._keyDownList))return;delete this._keyDownList[e]}L("onkeyevent "+(s?"down":"up")+", keysym: "+t,", code: "+e+", numlock: "+r+", capslock: "+n),this.onkeyevent(t,e,s,r,n)}_getKeyCode(t){let e=$e(t);if(e!=="Unidentified")return e;if(t.keyCode&&t.keyCode!==229)return"Platform"+t.keyCode;if(t.keyIdentifier){if(t.keyIdentifier.substr(0,2)!=="U+")return t.keyIdentifier;let s=parseInt(t.keyIdentifier.substr(2),16);return"Platform"+String.fromCharCode(s).toUpperCase().charCodeAt()}return"Unidentified"}_handleKeyDown(t){let e=this._getKeyCode(t),s=yr(t),r=t.getModifierState("NumLock"),n=t.getModifierState("CapsLock");if((me()||Ue())&&(r=null),this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),e==="AltRight"&&t.timeStamp-this._altGrCtrlTime<50?s=f.XK_ISO_Level3_Shift:this._sendKeyEvent(f.XK_Control_L,"ControlLeft",!0,r,n)),e==="Unidentified"){s&&(this._sendKeyEvent(s,e,!0,r,n),this._sendKeyEvent(s,e,!1,r,n)),Se(t);return}if(me()||Ue())switch(s){case f.XK_Super_L:s=f.XK_Alt_L;break;case f.XK_Super_R:s=f.XK_Super_L;break;case f.XK_Alt_L:s=f.XK_Mode_switch;break;case f.XK_Alt_R:s=f.XK_ISO_Level3_Shift;break}if(e in this._keyDownList&&(s=this._keyDownList[e]),(me()||Ue())&&t.metaKey&&e!=="MetaLeft"&&e!=="MetaRight"){this._sendKeyEvent(s,e,!0,r,n),this._sendKeyEvent(s,e,!1,r,n),Se(t);return}if((me()||Ue())&&e==="CapsLock"){this._sendKeyEvent(f.XK_Caps_Lock,"CapsLock",!0,r,n),this._sendKeyEvent(f.XK_Caps_Lock,"CapsLock",!1,r,n),Se(t);return}let a=[f.XK_Zenkaku_Hankaku,f.XK_Eisu_toggle,f.XK_Katakana,f.XK_Hiragana,f.XK_Romaji];if(He()&&a.includes(s)){this._sendKeyEvent(s,e,!0,r,n),this._sendKeyEvent(s,e,!1,r,n),Se(t);return}if(Se(t),e==="ControlLeft"&&He()&&!("ControlLeft"in this._keyDownList)){this._altGrArmed=!0,this._altGrTimeout=setTimeout(this._interruptAltGrSequence.bind(this),100),this._altGrCtrlTime=t.timeStamp;return}this._sendKeyEvent(s,e,!0,r,n)}_handleKeyUp(t){Se(t);let e=this._getKeyCode(t);if(this._interruptAltGrSequence(),(me()||Ue())&&e==="CapsLock"){this._sendKeyEvent(f.XK_Caps_Lock,"CapsLock",!0),this._sendKeyEvent(f.XK_Caps_Lock,"CapsLock",!1);return}this._sendKeyEvent(this._keyDownList[e],e,!1),He()&&(e==="ShiftLeft"||e==="ShiftRight")&&("ShiftRight"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftRight,"ShiftRight",!1),"ShiftLeft"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftLeft,"ShiftLeft",!1))}_interruptAltGrSequence(){this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),this._sendKeyEvent(f.XK_Control_L,"ControlLeft",!0))}_allKeysUp(){L(">> Keyboard.allKeysUp"),this._interruptAltGrSequence();for(let t in this._keyDownList)this._sendKeyEvent(this._keyDownList[t],t,!1);L("<< Keyboard.allKeysUp")}grab(){this._target.addEventListener("keydown",this._eventHandlers.keydown),this._target.addEventListener("keyup",this._eventHandlers.keyup),window.addEventListener("blur",this._eventHandlers.blur)}ungrab(){this._target.removeEventListener("keydown",this._eventHandlers.keydown),this._target.removeEventListener("keyup",this._eventHandlers.keyup),window.removeEventListener("blur",this._eventHandlers.blur),this._allKeysUp()}};var mt=class{constructor(){this._target=null,this._state=127,this._tracked=[],this._ignored=[],this._waitingRelease=!1,this._releaseStart=0,this._longpressTimeoutId=null,this._twoTouchTimeoutId=null,this._boundEventHandler=this._eventHandler.bind(this)}attach(t){this.detach(),this._target=t,this._target.addEventListener("touchstart",this._boundEventHandler),this._target.addEventListener("touchmove",this._boundEventHandler),this._target.addEventListener("touchend",this._boundEventHandler),this._target.addEventListener("touchcancel",this._boundEventHandler)}detach(){this._target&&(this._stopLongpressTimeout(),this._stopTwoTouchTimeout(),this._target.removeEventListener("touchstart",this._boundEventHandler),this._target.removeEventListener("touchmove",this._boundEventHandler),this._target.removeEventListener("touchend",this._boundEventHandler),this._target.removeEventListener("touchcancel",this._boundEventHandler),this._target=null)}_eventHandler(t){let e;switch(t.stopPropagation(),t.preventDefault(),t.type){case"touchstart":e=this._touchStart;break;case"touchmove":e=this._touchMove;break;case"touchend":case"touchcancel":e=this._touchEnd;break}for(let s=0;s<t.changedTouches.length;s++){let r=t.changedTouches[s];e.call(this,r.identifier,r.clientX,r.clientY)}}_touchStart(t,e,s){if(this._hasDetectedGesture()||this._state===0){this._ignored.push(t);return}if(this._tracked.length>0&&Date.now()-this._tracked[0].started>250){this._state=0,this._ignored.push(t);return}if(this._waitingRelease){this._state=0,this._ignored.push(t);return}switch(this._tracked.push({id:t,started:Date.now(),active:!0,firstX:e,firstY:s,lastX:e,lastY:s,angle:0}),this._tracked.length){case 1:this._startLongpressTimeout();break;case 2:this._state&=-26,this._stopLongpressTimeout();break;case 3:this._state&=-99;break;default:this._state=0}}_touchMove(t,e,s){let r=this._tracked.find(h=>h.id===t);if(r===void 0)return;r.lastX=e,r.lastY=s;let n=e-r.firstX,a=s-r.firstY;if((r.firstX!==r.lastX||r.firstY!==r.lastY)&&(r.angle=Math.atan2(a,n)*180/Math.PI),!this._hasDetectedGesture()){if(Math.hypot(n,a)<50)return;if(this._state&=-24,this._stopLongpressTimeout(),this._tracked.length!==1&&(this._state&=-9),this._tracked.length!==2&&(this._state&=-97),this._tracked.length===2){let h=this._tracked.find(o=>o.id!==t);if(Math.hypot(h.firstX-h.lastX,h.firstY-h.lastY)>50){let o=Math.abs(r.angle-h.angle);o=Math.abs((o+180)%360-180),o>90?this._state&=-33:this._state&=-65,this._isTwoTouchTimeoutRunning()&&this._stopTwoTouchTimeout()}else this._isTwoTouchTimeoutRunning()||this._startTwoTouchTimeout()}if(!this._hasDetectedGesture())return;this._pushEvent("gesturestart")}this._pushEvent("gesturemove")}_touchEnd(t,e,s){if(this._ignored.indexOf(t)!==-1){this._ignored.splice(this._ignored.indexOf(t),1),this._ignored.length===0&&this._tracked.length===0&&(this._state=127,this._waitingRelease=!1);return}if(!this._hasDetectedGesture()&&this._isTwoTouchTimeoutRunning()&&(this._stopTwoTouchTimeout(),this._state=0),!this._hasDetectedGesture()&&(this._state&=-105,this._state&=-17,this._stopLongpressTimeout(),!this._waitingRelease))switch(this._releaseStart=Date.now(),this._waitingRelease=!0,this._tracked.length){case 1:this._state&=-7;break;case 2:this._state&=-6;break}if(this._waitingRelease){Date.now()-this._releaseStart>250&&(this._state=0),this._tracked.some(n=>Date.now()-n.started>1e3)&&(this._state=0);let r=this._tracked.find(n=>n.id===t);if(r.active=!1,this._hasDetectedGesture())this._pushEvent("gesturestart");else if(this._state!==0)return}this._hasDetectedGesture()&&this._pushEvent("gestureend");for(let r=0;r<this._tracked.length;r++)this._tracked[r].active&&this._ignored.push(this._tracked[r].id);this._tracked=[],this._state=0,this._ignored.indexOf(t)!==-1&&this._ignored.splice(this._ignored.indexOf(t),1),this._ignored.length===0&&(this._state=127,this._waitingRelease=!1)}_hasDetectedGesture(){return!(this._state===0||this._state&this._state-1||this._state&7&&this._tracked.some(t=>t.active))}_startLongpressTimeout(){this._stopLongpressTimeout(),this._longpressTimeoutId=setTimeout(()=>this._longpressTimeout(),1e3)}_stopLongpressTimeout(){clearTimeout(this._longpressTimeoutId),this._longpressTimeoutId=null}_longpressTimeout(){if(this._hasDetectedGesture())throw new Error("A longpress gesture failed, conflict with a different gesture");this._state=16,this._pushEvent("gesturestart")}_startTwoTouchTimeout(){this._stopTwoTouchTimeout(),this._twoTouchTimeoutId=setTimeout(()=>this._twoTouchTimeout(),50)}_stopTwoTouchTimeout(){clearTimeout(this._twoTouchTimeoutId),this._twoTouchTimeoutId=null}_isTwoTouchTimeoutRunning(){return this._twoTouchTimeoutId!==null}_twoTouchTimeout(){if(this._tracked.length===0)throw new Error("A pinch or two drag gesture failed, no tracked touches");let t=this._getAverageMovement(),e=Math.abs(t.x),s=Math.abs(t.y),r=this._getAverageDistance(),n=Math.abs(Math.hypot(r.first.x,r.first.y)-Math.hypot(r.last.x,r.last.y));s<n&&e<n?this._state=64:this._state=32,this._pushEvent("gesturestart"),this._pushEvent("gesturemove")}_pushEvent(t){let e={type:this._stateToGesture(this._state)},s=this._getPosition(),r=s.last;switch(t==="gesturestart"&&(r=s.first),this._state){case 32:case 64:r=s.first;break}if(e.clientX=r.x,e.clientY=r.y,this._state===64){let a=this._getAverageDistance();t==="gesturestart"?(e.magnitudeX=a.first.x,e.magnitudeY=a.first.y):(e.magnitudeX=a.last.x,e.magnitudeY=a.last.y)}else if(this._state===32)if(t==="gesturestart")e.magnitudeX=0,e.magnitudeY=0;else{let a=this._getAverageMovement();e.magnitudeX=a.x,e.magnitudeY=a.y}let n=new CustomEvent(t,{detail:e});this._target.dispatchEvent(n)}_stateToGesture(t){switch(t){case 1:return"onetap";case 2:return"twotap";case 4:return"threetap";case 8:return"drag";case 16:return"longpress";case 32:return"twodrag";case 64:return"pinch"}throw new Error("Unknown gesture state: "+t)}_getPosition(){if(this._tracked.length===0)throw new Error("Failed to get gesture position, no tracked touches");let t=this._tracked.length,e=0,s=0,r=0,n=0;for(let a=0;a<this._tracked.length;a++)e+=this._tracked[a].firstX,s+=this._tracked[a].firstY,r+=this._tracked[a].lastX,n+=this._tracked[a].lastY;return{first:{x:e/t,y:s/t},last:{x:r/t,y:n/t}}}_getAverageMovement(){if(this._tracked.length===0)throw new Error("Failed to get gesture movement, no tracked touches");let t,e;t=e=0;let s=this._tracked.length;for(let r=0;r<this._tracked.length;r++)t+=this._tracked[r].lastX-this._tracked[r].firstX,e+=this._tracked[r].lastY-this._tracked[r].firstY;return{x:t/s,y:e/s}}_getAverageDistance(){if(this._tracked.length===0)throw new Error("Failed to get gesture distance, no tracked touches");let t=this._tracked[0],e=this._tracked[this._tracked.length-1],s=Math.abs(e.firstX-t.firstX),r=Math.abs(e.firstY-t.firstY),n=Math.abs(e.lastX-t.lastX),a=Math.abs(e.lastY-t.lastY);return{first:{x:s,y:r},last:{x:n,y:a}}}};var wt=!$i||_i,vt=class{constructor(){this._target=null,this._canvas=document.createElement("canvas"),wt&&(this._canvas.style.position="fixed",this._canvas.style.zIndex="65535",this._canvas.style.pointerEvents="none",this._canvas.style.userSelect="none",this._canvas.style.WebkitUserSelect="none",this._canvas.style.visibility="hidden"),this._position={x:0,y:0},this._hotSpot={x:0,y:0},this._eventHandlers={mouseover:this._handleMouseOver.bind(this),mouseleave:this._handleMouseLeave.bind(this),mousemove:this._handleMouseMove.bind(this),mouseup:this._handleMouseUp.bind(this)}}attach(t){if(this._target&&this.detach(),this._target=t,wt){document.body.appendChild(this._canvas);let e={capture:!0,passive:!0};this._target.addEventListener("mouseover",this._eventHandlers.mouseover,e),this._target.addEventListener("mouseleave",this._eventHandlers.mouseleave,e),this._target.addEventListener("mousemove",this._eventHandlers.mousemove,e),this._target.addEventListener("mouseup",this._eventHandlers.mouseup,e)}this.clear()}detach(){if(this._target){if(wt){let t={capture:!0,passive:!0};this._target.removeEventListener("mouseover",this._eventHandlers.mouseover,t),this._target.removeEventListener("mouseleave",this._eventHandlers.mouseleave,t),this._target.removeEventListener("mousemove",this._eventHandlers.mousemove,t),this._target.removeEventListener("mouseup",this._eventHandlers.mouseup,t),document.contains(this._canvas)&&document.body.removeChild(this._canvas)}this._target=null}}change(t,e,s,r,n){if(r===0||n===0){this.clear();return}this._position.x=this._position.x+this._hotSpot.x-e,this._position.y=this._position.y+this._hotSpot.y-s,this._hotSpot.x=e,this._hotSpot.y=s;let a=this._canvas.getContext("2d");this._canvas.width=r,this._canvas.height=n;let h=new ImageData(new Uint8ClampedArray(t),r,n);if(a.clearRect(0,0,r,n),a.putImageData(h,0,0),wt)this._updatePosition();else{let _=this._canvas.toDataURL();this._target.style.cursor="url("+_+")"+e+" "+s+", default"}}clear(){this._target.style.cursor="none",this._canvas.width=0,this._canvas.height=0,this._position.x=this._position.x+this._hotSpot.x,this._position.y=this._position.y+this._hotSpot.y,this._hotSpot.x=0,this._hotSpot.y=0}move(t,e){if(!wt)return;window.visualViewport?(this._position.x=t+window.visualViewport.offsetLeft,this._position.y=e+window.visualViewport.offsetTop):(this._position.x=t,this._position.y=e),this._updatePosition();let s=document.elementFromPoint(t,e);this._updateVisibility(s)}_handleMouseOver(t){this._handleMouseMove(t)}_handleMouseLeave(t){this._updateVisibility(t.relatedTarget)}_handleMouseMove(t){this._updateVisibility(t.target),this._position.x=t.clientX-this._hotSpot.x,this._position.y=t.clientY-this._hotSpot.y,this._updatePosition()}_handleMouseUp(t){let e=document.elementFromPoint(t.clientX,t.clientY);this._updateVisibility(e),this._captureIsActive()&&window.setTimeout(()=>{this._target&&(e=document.elementFromPoint(t.clientX,t.clientY),this._updateVisibility(e))},0)}_showCursor(){this._canvas.style.visibility==="hidden"&&(this._canvas.style.visibility="")}_hideCursor(){this._canvas.style.visibility!=="hidden"&&(this._canvas.style.visibility="hidden")}_shouldShowCursor(t){return t?t===this._target?!0:!(!this._target.contains(t)||window.getComputedStyle(t).cursor!=="none"):!1}_updateVisibility(t){this._captureIsActive()&&(t=document.captureElement),this._shouldShowCursor(t)?this._showCursor():this._hideCursor()}_updatePosition(){this._canvas.style.left=this._position.x+"px",this._canvas.style.top=this._position.y+"px"}_captureIsActive(){return document.captureElement&&document.documentElement.contains(document.captureElement)}};var zi=40*1024*1024,Yt={CONNECTING:"connecting",OPEN:"open",CLOSING:"closing",CLOSED:"closed"},jt={CONNECTING:[WebSocket.CONNECTING,Yt.CONNECTING],OPEN:[WebSocket.OPEN,Yt.OPEN],CLOSING:[WebSocket.CLOSING,Yt.CLOSING],CLOSED:[WebSocket.CLOSED,Yt.CLOSED]},Xr=["send","close","binaryType","onerror","onmessage","onopen","protocol","readyState"],yt=class{constructor(){this._websocket=null,this._rQi=0,this._rQlen=0,this._rQbufferSize=1024*1024*4,this._rQ=null,this._sQbufferSize=1024*10,this._sQlen=0,this._sQ=null,this._eventHandlers={message:()=>{},open:()=>{},close:()=>{},error:()=>{}}}get readyState(){let t;return this._websocket===null?"unused":(t=this._websocket.readyState,jt.CONNECTING.includes(t)?"connecting":jt.OPEN.includes(t)?"open":jt.CLOSING.includes(t)?"closing":jt.CLOSED.includes(t)?"closed":"unknown")}rQpeek8(){return this._rQ[this._rQi]}rQskipBytes(t){this._rQi+=t}rQshift8(){return this._rQshift(1)}rQshift16(){return this._rQshift(2)}rQshift32(){return this._rQshift(4)}_rQshift(t){let e=0;for(let s=t-1;s>=0;s--)e+=this._rQ[this._rQi++]<<s*8;return e>>>0}rQshiftStr(t){let e="";for(let s=0;s<t;s+=4096){let r=this.rQshiftBytes(Math.min(4096,t-s),!1);e+=String.fromCharCode.apply(null,r)}return e}rQshiftBytes(t,e=!0){return this._rQi+=t,e?this._rQ.slice(this._rQi-t,this._rQi):this._rQ.subarray(this._rQi-t,this._rQi)}rQshiftTo(t,e){t.set(new Uint8Array(this._rQ.buffer,this._rQi,e)),this._rQi+=e}rQpeekBytes(t,e=!0){return e?this._rQ.slice(this._rQi,this._rQi+t):this._rQ.subarray(this._rQi,this._rQi+t)}rQwait(t,e,s){if(this._rQlen-this._rQi<e){if(s){if(this._rQi<s)throw new Error("rQwait cannot backup "+s+" bytes");this._rQi-=s}return!0}return!1}sQpush8(t){this._sQensureSpace(1),this._sQ[this._sQlen++]=t}sQpush16(t){this._sQensureSpace(2),this._sQ[this._sQlen++]=t>>8&255,this._sQ[this._sQlen++]=t>>0&255}sQpush32(t){this._sQensureSpace(4),this._sQ[this._sQlen++]=t>>24&255,this._sQ[this._sQlen++]=t>>16&255,this._sQ[this._sQlen++]=t>>8&255,this._sQ[this._sQlen++]=t>>0&255}sQpushString(t){let e=t.split("").map(s=>s.charCodeAt(0));this.sQpushBytes(new Uint8Array(e))}sQpushBytes(t){for(let e=0;e<t.length;){this._sQensureSpace(1);let s=this._sQbufferSize-this._sQlen;s>t.length-e&&(s=t.length-e),this._sQ.set(t.subarray(e,e+s),this._sQlen),this._sQlen+=s,e+=s}}flush(){this._sQlen>0&&this.readyState==="open"&&(this._websocket.send(new Uint8Array(this._sQ.buffer,0,this._sQlen)),this._sQlen=0)}_sQensureSpace(t){this._sQbufferSize-this._sQlen<t&&this.flush()}off(t){this._eventHandlers[t]=()=>{}}on(t,e){this._eventHandlers[t]=e}_allocateBuffers(){this._rQ=new Uint8Array(this._rQbufferSize),this._sQ=new Uint8Array(this._sQbufferSize)}init(){this._allocateBuffers(),this._rQi=0,this._websocket=null}open(t,e){this.attach(new WebSocket(t,e))}attach(t){this.init();let e=[...Object.keys(t),...Object.getOwnPropertyNames(Object.getPrototypeOf(t))];for(let s=0;s<Xr.length;s++){let r=Xr[s];if(e.indexOf(r)<0)throw new Error("Raw channel missing property: "+r)}this._websocket=t,this._websocket.binaryType="arraybuffer",this._websocket.onmessage=this._recvMessage.bind(this),this._websocket.onopen=()=>{L(">> WebSock.onopen"),this._websocket.protocol&&V("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),L("<< WebSock.onopen")},this._websocket.onclose=s=>{L(">> WebSock.onclose"),this._eventHandlers.close(s),L("<< WebSock.onclose")},this._websocket.onerror=s=>{L(">> WebSock.onerror: "+s),this._eventHandlers.error(s),L("<< WebSock.onerror: "+s)}}close(){this._websocket&&((this.readyState==="connecting"||this.readyState==="open")&&(V("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_expandCompactRQ(t){let e=(this._rQlen-this._rQi+t)*8,s=this._rQbufferSize<e;if(s&&(this._rQbufferSize=Math.max(this._rQbufferSize*2,e)),this._rQbufferSize>zi&&(this._rQbufferSize=zi,this._rQbufferSize-(this._rQlen-this._rQi)<t))throw new Error("Receive queue buffer exceeded "+zi+" bytes, and the new message could not fit");if(s){let r=this._rQ.buffer;this._rQ=new Uint8Array(this._rQbufferSize),this._rQ.set(new Uint8Array(r,this._rQi,this._rQlen-this._rQi))}else this._rQ.copyWithin(0,this._rQi,this._rQlen);this._rQlen=this._rQlen-this._rQi,this._rQi=0}_recvMessage(t){this._rQlen==this._rQi&&(this._rQlen=0,this._rQi=0);let e=new Uint8Array(t.data);e.length>this._rQbufferSize-this._rQlen&&this._expandCompactRQ(e.length),this._rQ.set(e,this._rQlen),this._rQlen+=e.length,this._rQlen-this._rQi>0?this._eventHandlers.message():L("Ignoring empty message")}};var Kr={Again:57349,AltLeft:56,AltRight:57400,ArrowDown:57424,ArrowLeft:57419,ArrowRight:57421,ArrowUp:57416,AudioVolumeDown:57390,AudioVolumeMute:57376,AudioVolumeUp:57392,Backquote:41,Backslash:43,Backspace:14,BracketLeft:26,BracketRight:27,BrowserBack:57450,BrowserFavorites:57446,BrowserForward:57449,BrowserHome:57394,BrowserRefresh:57447,BrowserSearch:57445,BrowserStop:57448,CapsLock:58,Comma:51,ContextMenu:57437,ControlLeft:29,ControlRight:57373,Convert:121,Copy:57464,Cut:57404,Delete:57427,Digit0:11,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Eject:57469,End:57423,Enter:28,Equal:13,Escape:1,F1:59,F10:68,F11:87,F12:88,F13:93,F14:94,F15:95,F16:85,F17:57347,F18:57463,F19:57348,F2:60,F20:90,F21:116,F22:57465,F23:109,F24:111,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,Find:57409,Help:57461,Hiragana:119,Home:57415,Insert:57426,IntlBackslash:86,IntlRo:115,IntlYen:125,KanaMode:112,Katakana:120,KeyA:30,KeyB:48,KeyC:46,KeyD:32,KeyE:18,KeyF:33,KeyG:34,KeyH:35,KeyI:23,KeyJ:36,KeyK:37,KeyL:38,KeyM:50,KeyN:49,KeyO:24,KeyP:25,KeyQ:16,KeyR:19,KeyS:31,KeyT:20,KeyU:22,KeyV:47,KeyW:17,KeyX:45,KeyY:21,KeyZ:44,Lang1:114,Lang2:113,Lang3:120,Lang4:119,Lang5:118,LaunchApp1:57451,LaunchApp2:57377,LaunchMail:57452,MediaPlayPause:57378,MediaSelect:57453,MediaStop:57380,MediaTrackNext:57369,MediaTrackPrevious:57360,MetaLeft:57435,MetaRight:57436,Minus:12,NonConvert:123,NumLock:69,Numpad0:82,Numpad1:79,Numpad2:80,Numpad3:81,Numpad4:75,Numpad5:76,Numpad6:77,Numpad7:71,Numpad8:72,Numpad9:73,NumpadAdd:78,NumpadComma:126,NumpadDecimal:83,NumpadDivide:57397,NumpadEnter:57372,NumpadEqual:89,NumpadMultiply:55,NumpadParenLeft:57462,NumpadParenRight:57467,NumpadSubtract:74,Open:100,PageDown:57425,PageUp:57417,Paste:101,Pause:57414,Period:52,Power:57438,PrintScreen:84,Props:57350,Quote:40,ScrollLock:70,Semicolon:39,ShiftLeft:42,ShiftRight:54,Slash:53,Sleep:57439,Space:57,Suspend:57381,Tab:15,Undo:57351,WakeUp:57443};var R={encodingRaw:0,encodingCopyRect:1,encodingRRE:2,encodingHextile:5,encodingZlib:6,encodingTight:7,encodingZRLE:16,encodingTightPNG:-260,encodingJPEG:21,encodingH264:50,pseudoEncodingQualityLevel9:-23,pseudoEncodingQualityLevel0:-32,pseudoEncodingDesktopSize:-223,pseudoEncodingLastRect:-224,pseudoEncodingCursor:-239,pseudoEncodingQEMUExtendedKeyEvent:-258,pseudoEncodingQEMULedEvent:-261,pseudoEncodingDesktopName:-307,pseudoEncodingExtendedDesktopSize:-308,pseudoEncodingXvp:-309,pseudoEncodingFence:-312,pseudoEncodingContinuousUpdates:-313,pseudoEncodingExtendedMouseButtons:-316,pseudoEncodingCompressLevel9:-247,pseudoEncodingCompressLevel0:-256,pseudoEncodingVMwareCursor:1464686180,pseudoEncodingExtendedClipboard:3231835598};var qt=class i{constructor(){this._key=null}get algorithm(){return{name:"AES-ECB"}}static async importKey(t,e,s,r){let n=new i;return await n._importKey(t,s,r),n}async _importKey(t,e,s){this._key=await window.crypto.subtle.importKey("raw",t,{name:"AES-CBC"},e,s)}async encrypt(t,e){let s=new Uint8Array(e);if(s.length%16!==0||this._key===null)return null;let r=s.length/16;for(let n=0;n<r;n++){let a=new Uint8Array(await window.crypto.subtle.encrypt({name:"AES-CBC",iv:new Uint8Array(16)},this._key,s.slice(n*16,n*16+16))).slice(0,16);s.set(a,n*16)}return s}},Jt=class i{constructor(){this._rawKey=null,this._ctrKey=null,this._cbcKey=null,this._zeroBlock=new Uint8Array(16),this._prefixBlock0=this._zeroBlock,this._prefixBlock1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),this._prefixBlock2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2])}get algorithm(){return{name:"AES-EAX"}}async _encryptBlock(t){let e=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,t);return new Uint8Array(e).slice(0,16)}async _initCMAC(){let t=await this._encryptBlock(this._zeroBlock),e=new Uint8Array(16),s=t[0]>>>6;for(let n=0;n<15;n++)e[n]=t[n+1]>>6|t[n]<<2,t[n]=t[n+1]>>7|t[n]<<1;let r=[0,135,14,137];e[14]^=s>>>1,e[15]=t[15]<<2^r[s],t[15]=t[15]<<1^r[s>>1],this._k1=t,this._k2=e}async _encryptCTR(t,e){let s=await window.crypto.subtle.encrypt({name:"AES-CTR",counter:e,length:128},this._ctrKey,t);return new Uint8Array(s)}async _decryptCTR(t,e){let s=await window.crypto.subtle.decrypt({name:"AES-CTR",counter:e,length:128},this._ctrKey,t);return new Uint8Array(s)}async _computeCMAC(t,e){if(e.length!==16)return null;let s=Math.floor(t.length/16),r=Math.ceil(t.length/16),n=t.length-s*16,a=new Uint8Array((r+1)*16);if(a.set(e),a.set(t,16),n===0)for(let o=0;o<16;o++)a[s*16+o]^=this._k1[o];else{a[(s+1)*16+n]=128;for(let o=0;o<16;o++)a[(s+1)*16+o]^=this._k2[o]}let h=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,a);return h=new Uint8Array(h),h.slice(h.length-32,h.length-16)}static async importKey(t,e,s,r){let n=new i;return await n._importKey(t),n}async _importKey(t){this._rawKey=t,this._ctrKey=await window.crypto.subtle.importKey("raw",t,{name:"AES-CTR"},!1,["encrypt","decrypt"]),this._cbcKey=await window.crypto.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt"]),await this._initCMAC()}async encrypt(t,e){let s=t.additionalData,r=t.iv,n=await this._computeCMAC(r,this._prefixBlock0),a=await this._encryptCTR(e,n),h=await this._computeCMAC(s,this._prefixBlock1),_=await this._computeCMAC(a,this._prefixBlock2);for(let l=0;l<16;l++)_[l]^=n[l]^h[l];let o=new Uint8Array(16+a.length);return o.set(a),o.set(_,a.length),o}async decrypt(t,e){let s=e.slice(0,e.length-16),r=t.additionalData,n=t.iv,a=e.slice(e.length-16),h=await this._computeCMAC(n,this._prefixBlock0),_=await this._computeCMAC(r,this._prefixBlock1),o=await this._computeCMAC(s,this._prefixBlock2);for(let x=0;x<16;x++)o[x]^=h[x]^_[x];if(o.length!==a.length)return null;for(let x=0;x<a.length;x++)if(o[x]!==a[x])return null;return await this._decryptCTR(s,h)}};var Fr=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],fa=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=0,p,g,v,b,m,y;p=65536;g=1<<24;v=p|g;b=4;m=1024;y=b|m;var kr=[v|m,c|c,p|c,v|y,v|b,p|y,c|b,p|c,c|m,v|m,v|y,c|m,g|y,v|b,g|c,c|b,c|y,g|m,g|m,p|m,p|m,v|c,v|c,g|y,p|b,g|b,g|b,p|b,c|c,c|y,p|y,g|c,p|c,v|y,c|b,v|c,v|m,g|c,g|c,c|m,v|b,p|c,p|m,g|b,c|m,c|b,g|y,p|y,v|y,p|b,v|c,g|y,g|b,c|y,p|y,v|m,c|y,g|m,g|m,c|c,p|b,p|m,c|c,v|b];p=1<<20;g=1<<31;v=p|g;b=32;m=32768;y=b|m;var Sr=[v|y,g|m,c|m,p|y,p|c,c|b,v|b,g|y,g|b,v|y,v|m,g|c,g|m,p|c,c|b,v|b,p|m,p|b,g|y,c|c,g|c,c|m,p|y,v|c,p|b,g|b,c|c,p|m,c|y,v|m,v|c,c|y,c|c,p|y,v|b,p|c,g|y,v|c,v|m,c|m,v|c,g|m,c|b,v|y,p|y,c|b,c|m,g|c,c|y,v|m,p|c,g|b,p|b,g|y,g|b,p|b,p|m,c|c,g|m,c|y,g|c,v|b,v|y,p|m];p=1<<17;g=1<<27;v=p|g;b=8;m=512;y=b|m;var Er=[c|y,v|m,c|c,v|b,g|m,c|c,p|y,g|m,p|b,g|b,g|b,p|c,v|y,p|b,v|c,c|y,g|c,c|b,v|m,c|m,p|m,v|c,v|b,p|y,g|y,p|m,p|c,g|y,c|b,v|y,c|m,g|c,v|m,g|c,p|b,c|y,p|c,v|m,g|m,c|c,c|m,p|b,v|y,g|m,g|b,c|m,c|c,v|b,g|y,p|c,g|c,v|y,c|b,p|y,p|m,g|b,v|c,g|y,c|y,v|c,p|y,c|b,v|b,p|m];p=8192;g=1<<23;v=p|g;b=1;m=128;y=b|m;var Ar=[v|b,p|y,p|y,c|m,v|m,g|y,g|b,p|b,c|c,v|c,v|c,v|y,c|y,c|c,g|m,g|b,c|b,p|c,g|c,v|b,c|m,g|c,p|b,p|m,g|y,c|b,p|m,g|m,p|c,v|m,v|y,c|y,g|m,g|b,v|c,v|y,c|y,c|c,c|c,v|c,p|m,g|m,g|y,c|b,v|b,p|y,p|y,c|m,v|y,c|y,c|b,p|c,g|b,p|b,v|m,g|y,p|b,p|m,g|c,v|b,c|m,g|c,p|c,v|m];p=1<<25;g=1<<30;v=p|g;b=256;m=1<<19;y=b|m;var Cr=[c|b,p|y,p|m,v|b,c|m,c|b,g|c,p|m,g|y,c|m,p|b,g|y,v|b,v|m,c|y,g|c,p|c,g|m,g|m,c|c,g|b,v|y,v|y,p|b,v|m,g|b,c|c,v|c,p|y,p|c,v|c,c|y,c|m,v|b,c|b,p|c,g|c,p|m,v|b,g|y,p|b,g|c,v|m,p|y,g|y,c|b,p|c,v|m,v|y,c|y,v|c,v|y,p|m,c|c,g|m,v|c,c|y,p|b,g|b,c|m,c|c,g|m,p|y,g|b];p=1<<22;g=1<<29;v=p|g;b=16;m=16384;y=b|m;var Lr=[g|b,v|c,c|m,v|y,v|c,c|b,v|y,p|c,g|m,p|y,p|c,g|b,p|b,g|m,g|c,c|y,c|c,p|b,g|y,c|m,p|m,g|y,c|b,v|b,v|b,c|c,p|y,v|m,c|y,p|m,v|m,g|c,g|m,c|b,v|b,p|m,v|y,p|c,c|y,g|b,p|c,g|m,g|c,c|y,g|b,v|y,p|m,v|c,p|y,v|m,c|c,v|b,c|b,c|m,v|c,p|y,c|m,p|b,g|y,c|c,v|m,g|c,p|b,g|y];p=1<<21;g=1<<26;v=p|g;b=2;m=2048;y=b|m;var Tr=[p|c,v|b,g|y,c|c,c|m,g|y,p|y,v|m,v|y,p|c,c|c,g|b,c|b,g|c,v|b,c|y,g|m,p|y,p|b,g|m,g|b,v|c,v|m,p|b,v|c,c|m,c|y,v|y,p|m,c|b,g|c,p|m,g|c,p|m,p|c,g|y,g|y,v|b,v|b,c|b,p|b,g|c,g|m,p|c,v|m,c|y,p|y,v|m,c|y,g|b,v|y,v|c,p|m,c|c,c|b,v|y,c|c,p|y,v|c,c|m,g|b,g|m,c|m,p|b];p=1<<18;g=1<<28;v=p|g;b=64;m=4096;y=b|m;var Mr=[g|y,c|m,p|c,v|y,g|c,g|y,c|b,g|c,p|b,v|c,v|y,p|m,v|m,p|y,c|m,c|b,v|c,g|b,g|m,c|y,p|m,p|b,v|b,v|m,c|y,c|c,c|c,v|b,g|b,g|m,p|y,p|c,p|y,p|c,v|m,c|m,c|b,v|b,c|m,p|y,g|m,c|b,g|b,v|c,v|b,g|c,p|c,g|y,c|c,v|y,p|b,g|b,v|c,g|m,g|y,c|c,v|y,p|m,p|m,c|y,c|y,p|b,g|c,v|m],$t=class{constructor(t){this.keys=[];let e=[],s=[],r=[];for(let n=0,a=56;n<56;++n,a-=8){a+=a<-5?65:a<-3?31:a<-1?63:a===27?35:0;let h=a&7;e[n]=t[a>>>3]&1<<h?1:0}for(let n=0;n<16;++n){let a=n<<1,h=a+1;r[a]=r[h]=0;for(let _=28;_<59;_+=28)for(let o=_-28;o<_;++o){let l=o+fa[n];s[o]=l<_?e[l]:e[l-28]}for(let _=0;_<24;++_)s[Fr[_]]!==0&&(r[a]|=1<<23-_),s[Fr[_+24]]!==0&&(r[h]|=1<<23-_)}for(let n=0,a=0,h=0;n<16;++n){let _=r[a++],o=r[a++];this.keys[h]=(_&16515072)<<6,this.keys[h]|=(_&4032)<<10,this.keys[h]|=(o&16515072)>>>10,this.keys[h]|=(o&4032)>>>6,++h,this.keys[h]=(_&258048)<<12,this.keys[h]|=(_&63)<<16,this.keys[h]|=(o&258048)>>>4,this.keys[h]|=o&63,++h}}enc8(t){let e=t.slice(),s=0,r,n,a;r=e[s++]<<24|e[s++]<<16|e[s++]<<8|e[s++],n=e[s++]<<24|e[s++]<<16|e[s++]<<8|e[s++],a=(r>>>4^n)&252645135,n^=a,r^=a<<4,a=(r>>>16^n)&65535,n^=a,r^=a<<16,a=(n>>>2^r)&858993459,r^=a,n^=a<<2,a=(n>>>8^r)&16711935,r^=a,n^=a<<8,n=n<<1|n>>>31&1,a=(r^n)&2863311530,r^=a,n^=a,r=r<<1|r>>>31&1;for(let h=0,_=0;h<8;++h){a=n<<28|n>>>4,a^=this.keys[_++];let o=Tr[a&63];o|=Cr[a>>>8&63],o|=Er[a>>>16&63],o|=kr[a>>>24&63],a=n^this.keys[_++],o|=Mr[a&63],o|=Lr[a>>>8&63],o|=Ar[a>>>16&63],o|=Sr[a>>>24&63],r^=o,a=r<<28|r>>>4,a^=this.keys[_++],o=Tr[a&63],o|=Cr[a>>>8&63],o|=Er[a>>>16&63],o|=kr[a>>>24&63],a=r^this.keys[_++],o|=Mr[a&63],o|=Lr[a>>>8&63],o|=Ar[a>>>16&63],o|=Sr[a>>>24&63],n^=o}for(n=n<<31|n>>>1,a=(r^n)&2863311530,r^=a,n^=a,r=r<<31|r>>>1,a=(r>>>8^n)&16711935,n^=a,r^=a<<8,a=(r>>>2^n)&858993459,n^=a,r^=a<<2,a=(n>>>16^r)&65535,r^=a,n^=a<<16,a=(n>>>4^r)&252645135,r^=a,n^=a<<4,a=[n,r],s=0;s<8;s++)e[s]=(a[s>>>2]>>>8*(3-s%4))%256,e[s]<0&&(e[s]+=256);return e}},ei=class i{constructor(){this._cipher=null}get algorithm(){return{name:"DES-ECB"}}static importKey(t,e,s,r){let n=new i;return n._importKey(t),n}_importKey(t,e,s){this._cipher=new $t(t)}encrypt(t,e){let s=new Uint8Array(e);if(s.length%8!==0||this._cipher===null)return null;let r=s.length/8;for(let n=0;n<r;n++)s.set(this._cipher.enc8(s.slice(n*8,n*8+8)),n*8);return s}},ti=class i{constructor(){this._cipher=null}get algorithm(){return{name:"DES-CBC"}}static importKey(t,e,s,r){let n=new i;return n._importKey(t),n}_importKey(t){this._cipher=new $t(t)}encrypt(t,e){let s=new Uint8Array(e),r=new Uint8Array(t.iv);if(s.length%8!==0||this._cipher===null)return null;let n=s.length/8;for(let a=0;a<n;a++){for(let h=0;h<8;h++)r[h]^=e[a*8+h];r=this._cipher.enc8(r),s.set(r,a*8)}return s}};function et(i,t,e){let s=1n;for(i=i%e;t>0n;)(t&1n)===1n&&(s=s*i%e),t=t>>1n,i=i*i%e;return s}function tt(i,t=0){let e=i.toString(16);t===0&&(t=Math.ceil(e.length/2)),e=e.padStart(t*2,"0");let s=e.length/2,r=new Uint8Array(s);for(let n=0;n<s;n++)r[n]=parseInt(e.slice(n*2,n*2+2),16);return r}function ne(i){let t="0x";for(let e=0;e<i.length;e++)t+=i[e].toString(16).padStart(2,"0");return BigInt(t)}var ii=class i{constructor(){this._keyLength=0,this._keyBytes=0,this._n=null,this._e=null,this._d=null,this._nBigInt=null,this._eBigInt=null,this._dBigInt=null,this._extractable=!1}get algorithm(){return{name:"RSA-PKCS1-v1_5"}}_base64urlDecode(t){return t=t.replace(/-/g,"+").replace(/_/g,"/"),t=t.padEnd(Math.ceil(t.length/4)*4,"="),Pe.decode(t)}_padArray(t,e){let s=new Uint8Array(e);return s.set(t,e-t.length),s}static async generateKey(t,e,s){let r=new i;return await r._generateKey(t,e),{privateKey:r}}async _generateKey(t,e){this._keyLength=t.modulusLength,this._keyBytes=Math.ceil(this._keyLength/8);let s=await window.crypto.subtle.generateKey({name:"RSA-OAEP",modulusLength:t.modulusLength,publicExponent:t.publicExponent,hash:{name:"SHA-256"}},!0,["encrypt","decrypt"]),r=await window.crypto.subtle.exportKey("jwk",s.privateKey);this._n=this._padArray(this._base64urlDecode(r.n),this._keyBytes),this._nBigInt=ne(this._n),this._e=this._padArray(this._base64urlDecode(r.e),this._keyBytes),this._eBigInt=ne(this._e),this._d=this._padArray(this._base64urlDecode(r.d),this._keyBytes),this._dBigInt=ne(this._d),this._extractable=e}static async importKey(t,e,s,r){if(r.length!==1||r[0]!=="encrypt")throw new Error("only support importing RSA public key");let n=new i;return await n._importKey(t,s),n}async _importKey(t,e){let s=t.n,r=t.e;if(s.length!==r.length)throw new Error("the sizes of modulus and public exponent do not match");this._keyBytes=s.length,this._keyLength=this._keyBytes*8,this._n=new Uint8Array(this._keyBytes),this._e=new Uint8Array(this._keyBytes),this._n.set(s),this._e.set(r),this._nBigInt=ne(this._n),this._eBigInt=ne(this._e),this._extractable=e}async encrypt(t,e){if(e.length>this._keyBytes-11)return null;let s=new Uint8Array(this._keyBytes-e.length-3);window.crypto.getRandomValues(s);for(let h=0;h<s.length;h++)s[h]=Math.floor(s[h]*254/255+1);let r=new Uint8Array(this._keyBytes);r[1]=2,r.set(s,2),r.set(e,s.length+3);let n=ne(r),a=et(n,this._eBigInt,this._nBigInt);return tt(a,this._keyBytes)}async decrypt(t,e){if(e.length!==this._keyBytes)return null;let s=ne(e),r=et(s,this._dBigInt,this._nBigInt),n=tt(r,this._keyBytes);if(n[0]!==0||n[1]!==2)return null;let a=2;for(;a<n.length&&n[a]!==0;a++);return a===n.length?null:n.slice(a+1,n.length)}async exportKey(){if(!this._extractable)throw new Error("key is not extractable");return{n:this._n,e:this._e,d:this._d}}};var Gi=class{constructor(t){this._key=t}get algorithm(){return{name:"DH"}}exportKey(){return this._key}},si=class i{constructor(){this._g=null,this._p=null,this._gBigInt=null,this._pBigInt=null,this._privateKey=null}get algorithm(){return{name:"DH"}}static generateKey(t,e){let s=new i;return s._generateKey(t),{privateKey:s,publicKey:new Gi(s._publicKey)}}_generateKey(t){let e=t.g,s=t.p;this._keyBytes=s.length,this._gBigInt=ne(e),this._pBigInt=ne(s),this._privateKey=window.crypto.getRandomValues(new Uint8Array(this._keyBytes)),this._privateKeyBigInt=ne(this._privateKey),this._publicKey=tt(et(this._gBigInt,this._privateKeyBigInt,this._pBigInt),this._keyBytes)}deriveBits(t,e){let s=Math.ceil(e/8),r=new Uint8Array(t.public),n=s>this._keyBytes?s:this._keyBytes,a=et(ne(r),this._privateKeyBigInt,this._pBigInt);return tt(a,n).slice(0,n)}};async function Rr(i){let t="";for(let e=0;e<i.length;e++)t+=String.fromCharCode(i[e]);return ua(xa(pa(da(t),8*t.length)))}function ua(i){let t=new Uint8Array(i.length);for(let e=0;e<i.length;e++)t[e]=i.charCodeAt(e);return t}function da(i){let t=Array(i.length>>2);for(let e=0;e<t.length;e++)t[e]=0;for(let e=0;e<8*i.length;e+=8)t[e>>5]|=(255&i.charCodeAt(e/8))<<e%32;return t}function xa(i){let t="";for(let e=0;e<32*i.length;e+=8)t+=String.fromCharCode(i[e>>5]>>>e%32&255);return t}function pa(i,t){i[t>>5]|=128<<t%32,i[14+(t+64>>>9<<4)]=t;let e=1732584193,s=-271733879,r=-1732584194,n=271733878;for(let a=0;a<i.length;a+=16){let h=e,_=s,o=r,l=n;s=ee(s=ee(s=ee(s=ee(s=$(s=$(s=$(s=$(s=J(s=J(s=J(s=J(s=q(s=q(s=q(s=q(s,r=q(r,n=q(n,e=q(e,s,r,n,i[a+0],7,-680876936),s,r,i[a+1],12,-389564586),e,s,i[a+2],17,606105819),n,e,i[a+3],22,-1044525330),r=q(r,n=q(n,e=q(e,s,r,n,i[a+4],7,-176418897),s,r,i[a+5],12,1200080426),e,s,i[a+6],17,-1473231341),n,e,i[a+7],22,-45705983),r=q(r,n=q(n,e=q(e,s,r,n,i[a+8],7,1770035416),s,r,i[a+9],12,-1958414417),e,s,i[a+10],17,-42063),n,e,i[a+11],22,-1990404162),r=q(r,n=q(n,e=q(e,s,r,n,i[a+12],7,1804603682),s,r,i[a+13],12,-40341101),e,s,i[a+14],17,-1502002290),n,e,i[a+15],22,1236535329),r=J(r,n=J(n,e=J(e,s,r,n,i[a+1],5,-165796510),s,r,i[a+6],9,-1069501632),e,s,i[a+11],14,643717713),n,e,i[a+0],20,-373897302),r=J(r,n=J(n,e=J(e,s,r,n,i[a+5],5,-701558691),s,r,i[a+10],9,38016083),e,s,i[a+15],14,-660478335),n,e,i[a+4],20,-405537848),r=J(r,n=J(n,e=J(e,s,r,n,i[a+9],5,568446438),s,r,i[a+14],9,-1019803690),e,s,i[a+3],14,-187363961),n,e,i[a+8],20,1163531501),r=J(r,n=J(n,e=J(e,s,r,n,i[a+13],5,-1444681467),s,r,i[a+2],9,-51403784),e,s,i[a+7],14,1735328473),n,e,i[a+12],20,-1926607734),r=$(r,n=$(n,e=$(e,s,r,n,i[a+5],4,-378558),s,r,i[a+8],11,-2022574463),e,s,i[a+11],16,1839030562),n,e,i[a+14],23,-35309556),r=$(r,n=$(n,e=$(e,s,r,n,i[a+1],4,-1530992060),s,r,i[a+4],11,1272893353),e,s,i[a+7],16,-155497632),n,e,i[a+10],23,-1094730640),r=$(r,n=$(n,e=$(e,s,r,n,i[a+13],4,681279174),s,r,i[a+0],11,-358537222),e,s,i[a+3],16,-722521979),n,e,i[a+6],23,76029189),r=$(r,n=$(n,e=$(e,s,r,n,i[a+9],4,-640364487),s,r,i[a+12],11,-421815835),e,s,i[a+15],16,530742520),n,e,i[a+2],23,-995338651),r=ee(r,n=ee(n,e=ee(e,s,r,n,i[a+0],6,-198630844),s,r,i[a+7],10,1126891415),e,s,i[a+14],15,-1416354905),n,e,i[a+5],21,-57434055),r=ee(r,n=ee(n,e=ee(e,s,r,n,i[a+12],6,1700485571),s,r,i[a+3],10,-1894986606),e,s,i[a+10],15,-1051523),n,e,i[a+1],21,-2054922799),r=ee(r,n=ee(n,e=ee(e,s,r,n,i[a+8],6,1873313359),s,r,i[a+15],10,-30611744),e,s,i[a+6],15,-1560198380),n,e,i[a+13],21,1309151649),r=ee(r,n=ee(n,e=ee(e,s,r,n,i[a+4],6,-145523070),s,r,i[a+11],10,-1120210379),e,s,i[a+2],15,718787259),n,e,i[a+9],21,-343485551),e=Xe(e,h),s=Xe(s,_),r=Xe(r,o),n=Xe(n,l)}return Array(e,s,r,n)}function ri(i,t,e,s,r,n){return Xe(ga(Xe(Xe(t,i),Xe(s,n)),r),e)}function q(i,t,e,s,r,n,a){return ri(t&e|~t&s,i,t,r,n,a)}function J(i,t,e,s,r,n,a){return ri(t&s|e&~s,i,t,r,n,a)}function $(i,t,e,s,r,n,a){return ri(t^e^s,i,t,r,n,a)}function ee(i,t,e,s,r,n,a){return ri(e^(t|~s),i,t,r,n,a)}function Xe(i,t){let e=(65535&i)+(65535&t);return(i>>16)+(t>>16)+(e>>16)<<16|65535&e}function ga(i,t){return i<<t|i>>>32-t}var Vi=class{constructor(){this._algorithms={"AES-ECB":qt,"AES-EAX":Jt,"DES-ECB":ei,"DES-CBC":ti,"RSA-PKCS1-v1_5":ii,DH:si,MD5:Rr}}encrypt(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.encrypt!="function")throw new Error("key does not support encryption");return e.encrypt(t,s)}decrypt(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.decrypt!="function")throw new Error("key does not support encryption");return e.decrypt(t,s)}importKey(t,e,s,r,n){if(t!=="raw")throw new Error("key format is not supported");let a=this._algorithms[s.name];if(typeof a>"u"||typeof a.importKey!="function")throw new Error("algorithm is not supported");return a.importKey(e,s,r,n)}generateKey(t,e,s){let r=this._algorithms[t.name];if(typeof r>"u"||typeof r.generateKey!="function")throw new Error("algorithm is not supported");return r.generateKey(t,e,s)}exportKey(t,e){if(t!=="raw")throw new Error("key format is not supported");if(typeof e.exportKey!="function")throw new Error("key does not support exportKey");return e.exportKey()}digest(t,e){let s=this._algorithms[t];if(typeof s!="function")throw new Error("algorithm is not supported");return s(e)}deriveBits(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.deriveBits!="function")throw new Error("key does not support deriveBits");return e.deriveBits(t,s)}},O=new Vi;var ni=class{constructor(){this._cipher=null,this._counter=new Uint8Array(16)}async setKey(t){this._cipher=await O.importKey("raw",t,{name:"AES-EAX"},!1,["encrypt, decrypt"])}async makeMessage(t){let e=new Uint8Array([(t.length&65280)>>>8,t.length&255]),s=await O.encrypt({name:"AES-EAX",iv:this._counter,additionalData:e},this._cipher,t);for(let n=0;n<16&&this._counter[n]++===255;n++);let r=new Uint8Array(t.length+2+16);return r.set(e),r.set(s,2),r}async receiveMessage(t,e){let s=new Uint8Array([(t&65280)>>>8,t&255]),r=await O.decrypt({name:"AES-EAX",iv:this._counter,additionalData:s},this._cipher,e);for(let n=0;n<16&&this._counter[n]++===255;n++);return r}},Xt=class extends Ee{constructor(t,e){super(),this._hasStarted=!1,this._checkSock=null,this._checkCredentials=null,this._approveServerResolve=null,this._sockReject=null,this._credentialsReject=null,this._approveServerReject=null,this._sock=t,this._getCredentials=e}_waitSockAsync(t){return new Promise((e,s)=>{let r=()=>!this._sock.rQwait("RA2",t);r()?e():(this._checkSock=()=>{r()&&(e(),this._checkSock=null,this._sockReject=null)},this._sockReject=s)})}_waitApproveKeyAsync(){return new Promise((t,e)=>{this._approveServerResolve=t,this._approveServerReject=e})}_waitCredentialsAsync(t){let e=()=>t===1&&this._getCredentials().username!==void 0&&this._getCredentials().password!==void 0?!0:t===2&&this._getCredentials().password!==void 0;return new Promise((s,r)=>{e()?s():(this._checkCredentials=()=>{e()&&(s(),this._checkCredentials=null,this._credentialsReject=null)},this._credentialsReject=r)})}checkInternalEvents(){this._checkSock!==null&&this._checkSock(),this._checkCredentials!==null&&this._checkCredentials()}approveServer(){this._approveServerResolve!==null&&(this._approveServerResolve(),this._approveServerResolve=null)}disconnect(){this._sockReject!==null&&(this._sockReject(new Error("disconnect normally")),this._sockReject=null),this._credentialsReject!==null&&(this._credentialsReject(new Error("disconnect normally")),this._credentialsReject=null),this._approveServerReject!==null&&(this._approveServerReject(new Error("disconnect normally")),this._approveServerReject=null)}async negotiateRA2neAuthAsync(){this._hasStarted=!0,await this._waitSockAsync(4);let t=this._sock.rQpeekBytes(4),e=this._sock.rQshift32();if(e<1024)throw new Error("RA2: server public key is too short: "+e);if(e>8192)throw new Error("RA2: server public key is too long: "+e);let s=Math.ceil(e/8);await this._waitSockAsync(s*2);let r=this._sock.rQshiftBytes(s),n=this._sock.rQshiftBytes(s),a=await O.importKey("raw",{n:r,e:n},{name:"RSA-PKCS1-v1_5"},!1,["encrypt"]),h=new Uint8Array(4+s*2);h.set(t),h.set(r,4),h.set(n,4+s);let _=this._waitApproveKeyAsync();this.dispatchEvent(new CustomEvent("serververification",{detail:{type:"RSA",publickey:h}})),await _;let o=2048,l=Math.ceil(o/8),x=(await O.generateKey({name:"RSA-PKCS1-v1_5",modulusLength:o,publicExponent:new Uint8Array([1,0,1])},!0,["encrypt"])).privateKey,u=await O.exportKey("raw",x),d=u.n,X=u.e,F=new Uint8Array(4+l*2);F[0]=(o&4278190080)>>>24,F[1]=(o&16711680)>>>16,F[2]=(o&65280)>>>8,F[3]=o&255,F.set(d,4),F.set(X,4+l),this._sock.sQpushBytes(F),this._sock.flush();let A=new Uint8Array(16);window.crypto.getRandomValues(A);let k=await O.encrypt({name:"RSA-PKCS1-v1_5"},a,A),T=new Uint8Array(2+s);if(T[0]=(s&65280)>>>8,T[1]=s&255,T.set(k,2),this._sock.sQpushBytes(T),this._sock.flush(),await this._waitSockAsync(2),this._sock.rQshift16()!==l)throw new Error("RA2: wrong encrypted message length");let E=this._sock.rQshiftBytes(l),K=await O.decrypt({name:"RSA-PKCS1-v1_5"},x,E);if(K===null||K.length!==16)throw new Error("RA2: corrupted server encrypted random");let C=new Uint8Array(32),I=new Uint8Array(32);C.set(K),C.set(A,16),I.set(A),I.set(K,16),C=await window.crypto.subtle.digest("SHA-1",C),C=new Uint8Array(C).slice(0,16),I=await window.crypto.subtle.digest("SHA-1",I),I=new Uint8Array(I).slice(0,16);let S=new ni;await S.setKey(C);let D=new ni;await D.setKey(I);let B=new Uint8Array(8+s*2+l*2),M=new Uint8Array(8+s*2+l*2);if(B.set(h),B.set(F,4+s*2),M.set(F),M.set(h,4+l*2),B=await window.crypto.subtle.digest("SHA-1",B),M=await window.crypto.subtle.digest("SHA-1",M),B=new Uint8Array(B),M=new Uint8Array(M),this._sock.sQpushBytes(await S.makeMessage(M)),this._sock.flush(),await this._waitSockAsync(38),this._sock.rQshift16()!==20)throw new Error("RA2: wrong server hash");let z=await D.receiveMessage(20,this._sock.rQshiftBytes(36));if(z===null)throw new Error("RA2: failed to authenticate the message");for(let Z=0;Z<20;Z++)if(z[Z]!==B[Z])throw new Error("RA2: wrong server hash");if(await this._waitSockAsync(19),this._sock.rQshift16()!==1)throw new Error("RA2: wrong subtype");let te=await D.receiveMessage(1,this._sock.rQshiftBytes(17));if(te===null)throw new Error("RA2: failed to authenticate the message");te=te[0];let Ie=this._waitCredentialsAsync(te);if(te===1)(this._getCredentials().username===void 0||this._getCredentials().password===void 0)&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}}));else if(te===2)this._getCredentials().password===void 0&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}}));else throw new Error("RA2: wrong subtype");await Ie;let oe;te===1?oe=he(this._getCredentials().username).slice(0,255):oe="";let Fe=he(this._getCredentials().password).slice(0,255),_e=new Uint8Array(oe.length+Fe.length+2);_e[0]=oe.length,_e[oe.length+1]=Fe.length;for(let Z=0;Z<oe.length;Z++)_e[Z+1]=oe.charCodeAt(Z);for(let Z=0;Z<Fe.length;Z++)_e[oe.length+2+Z]=Fe.charCodeAt(Z);this._sock.sQpushBytes(await S.makeMessage(_e)),this._sock.flush()}get hasStarted(){return this._hasStarted}set hasStarted(t){this._hasStarted=t}};var Kt=class{constructor(){this._lines=0}decodeRect(t,e,s,r,n,a,h){if(s===0||r===0)return!0;this._lines===0&&(this._lines=r);let _=h==8?1:4,o=s*_;for(;this._lines>0;){if(n.rQwait("RAW",o))return!1;let l=e+(r-this._lines),x=n.rQshiftBytes(o,!1);if(h==8){let u=new Uint8Array(s*4);for(let d=0;d<s;d++)u[d*4+0]=(x[d]>>0&3)*255/3,u[d*4+1]=(x[d]>>2&3)*255/3,u[d*4+2]=(x[d]>>4&3)*255/3,u[d*4+3]=255;x=u}for(let u=0;u<s;u++)x[u*4+3]=255;a.blitImage(t,l,s,1,x,0),this._lines--}return!0}};var Ft=class{decodeRect(t,e,s,r,n,a,h){if(n.rQwait("COPYRECT",4))return!1;let _=n.rQshift16(),o=n.rQshift16();return s===0||r===0||a.copyImage(_,o,t,e,s,r),!0}};var kt=class{constructor(){this._subrects=0}decodeRect(t,e,s,r,n,a,h){if(this._subrects===0){if(n.rQwait("RRE",8))return!1;this._subrects=n.rQshift32();let _=n.rQshiftBytes(4);a.fillRect(t,e,s,r,_)}for(;this._subrects>0;){if(n.rQwait("RRE",12))return!1;let _=n.rQshiftBytes(4),o=n.rQshift16(),l=n.rQshift16(),x=n.rQshift16(),u=n.rQshift16();a.fillRect(t+o,e+l,x,u,_),this._subrects--}return!0}};var St=class{constructor(){this._tiles=0,this._lastsubencoding=0,this._tileBuffer=new Uint8Array(16*16*4)}decodeRect(t,e,s,r,n,a,h){for(this._tiles===0&&(this._tilesX=Math.ceil(s/16),this._tilesY=Math.ceil(r/16),this._totalTiles=this._tilesX*this._tilesY,this._tiles=this._totalTiles);this._tiles>0;){let _=1;if(n.rQwait("HEXTILE",_))return!1;let o=n.rQpeek8();if(o>30)throw new Error("Illegal hextile subencoding (subencoding: "+o+")");let l=this._totalTiles-this._tiles,x=l%this._tilesX,u=Math.floor(l/this._tilesX),d=t+x*16,X=e+u*16,F=Math.min(16,t+s-d),A=Math.min(16,e+r-X);if(o&1)_+=F*A*4;else if(o&2&&(_+=4),o&4&&(_+=4),o&8){if(_++,n.rQwait("HEXTILE",_))return!1;let k=n.rQpeekBytes(_).at(-1);o&16?_+=k*6:_+=k*2}if(n.rQwait("HEXTILE",_))return!1;if(n.rQshift8(),o===0)this._lastsubencoding&1?L(" Ignoring blank after RAW"):a.fillRect(d,X,F,A,this._background);else if(o&1){let k=F*A,T=n.rQshiftBytes(k*4,!1);for(let E=0;E<k;E++)T[E*4+3]=255;a.blitImage(d,X,F,A,T,0)}else{if(o&2&&(this._background=new Uint8Array(n.rQshiftBytes(4))),o&4&&(this._foreground=new Uint8Array(n.rQshiftBytes(4))),this._startTile(d,X,F,A,this._background),o&8){let k=n.rQshift8();for(let T=0;T<k;T++){let E;o&16?E=n.rQshiftBytes(4):E=this._foreground;let K=n.rQshift8(),C=K>>4,I=K&15,S=n.rQshift8(),D=(S>>4)+1,B=(S&15)+1;this._subTile(C,I,D,B,E)}}this._finishTile(a)}this._lastsubencoding=o,this._tiles--}return!0}_startTile(t,e,s,r,n){this._tileX=t,this._tileY=e,this._tileW=s,this._tileH=r;let a=n[0],h=n[1],_=n[2],o=this._tileBuffer;for(let l=0;l<s*r*4;l+=4)o[l]=a,o[l+1]=h,o[l+2]=_,o[l+3]=255}_subTile(t,e,s,r,n){let a=n[0],h=n[1],_=n[2],o=t+s,l=e+r,x=this._tileBuffer,u=this._tileW;for(let d=e;d<l;d++)for(let X=t;X<o;X++){let F=(X+d*u)*4;x[F]=a,x[F+1]=h,x[F+2]=_,x[F+3]=255}}_finishTile(t){t.blitImage(this._tileX,this._tileY,this._tileW,this._tileH,this._tileBuffer,0)}};var Et=class{constructor(){this._zlib=new le,this._length=0}decodeRect(t,e,s,r,n,a,h){if(s===0||r===0)return!0;if(this._length===0){if(n.rQwait("ZLIB",4))return!1;this._length=n.rQshift32()}if(n.rQwait("ZLIB",this._length))return!1;let _=new Uint8Array(n.rQshiftBytes(this._length,!1));this._length=0,this._zlib.setInput(_),_=this._zlib.inflate(s*r*4),this._zlib.setInput(null);for(let o=0;o<s*r;o++)_[o*4+3]=255;return a.blitImage(t,e,s,r,_,0),!0}};var Qe=class{constructor(){this._ctl=null,this._filter=null,this._numColors=0,this._palette=new Uint8Array(1024),this._len=0,this._zlibs=[];for(let t=0;t<4;t++)this._zlibs[t]=new le}decodeRect(t,e,s,r,n,a,h){if(this._ctl===null){if(n.rQwait("TIGHT compression-control",1))return!1;this._ctl=n.rQshift8();for(let o=0;o<4;o++)this._ctl>>o&1&&(this._zlibs[o].reset(),V("Reset zlib stream "+o));this._ctl=this._ctl>>4}let _;if(this._ctl===8)_=this._fillRect(t,e,s,r,n,a,h);else if(this._ctl===9)_=this._jpegRect(t,e,s,r,n,a,h);else if(this._ctl===10)_=this._pngRect(t,e,s,r,n,a,h);else if(!(this._ctl&8))_=this._basicRect(this._ctl,t,e,s,r,n,a,h);else throw new Error("Illegal tight compression received (ctl: "+this._ctl+")");return _&&(this._ctl=null),_}_fillRect(t,e,s,r,n,a,h){if(n.rQwait("TIGHT",3))return!1;let _=n.rQshiftBytes(3);return a.fillRect(t,e,s,r,_,!1),!0}_jpegRect(t,e,s,r,n,a,h){let _=this._readData(n);return _===null?!1:(a.imageRect(t,e,s,r,"image/jpeg",_),!0)}_pngRect(t,e,s,r,n,a,h){throw new Error("PNG received in standard Tight rect")}_basicRect(t,e,s,r,n,a,h,_){if(this._filter===null)if(t&4){if(a.rQwait("TIGHT",1))return!1;this._filter=a.rQshift8()}else this._filter=0;let o=t&3,l;switch(this._filter){case 0:l=this._copyFilter(o,e,s,r,n,a,h,_);break;case 1:l=this._paletteFilter(o,e,s,r,n,a,h,_);break;case 2:l=this._gradientFilter(o,e,s,r,n,a,h,_);break;default:throw new Error("Illegal tight filter received (ctl: "+this._filter+")")}return l&&(this._filter=null),l}_copyFilter(t,e,s,r,n,a,h,_){let o=r*n*3,l;if(o===0)return!0;if(o<12){if(a.rQwait("TIGHT",o))return!1;l=a.rQshiftBytes(o)}else{if(l=this._readData(a),l===null)return!1;this._zlibs[t].setInput(l),l=this._zlibs[t].inflate(o),this._zlibs[t].setInput(null)}let x=new Uint8Array(r*n*4);for(let u=0,d=0;u<r*n*4;u+=4,d+=3)x[u]=l[d],x[u+1]=l[d+1],x[u+2]=l[d+2],x[u+3]=255;return h.blitImage(e,s,r,n,x,0,!1),!0}_paletteFilter(t,e,s,r,n,a,h,_){if(this._numColors===0){if(a.rQwait("TIGHT palette",1))return!1;let d=a.rQpeek8()+1,X=d*3;if(a.rQwait("TIGHT palette",1+X))return!1;this._numColors=d,a.rQskipBytes(1),a.rQshiftTo(this._palette,X)}let o=this._numColors<=2?1:8,x=Math.floor((r*o+7)/8)*n,u;if(x===0)return!0;if(x<12){if(a.rQwait("TIGHT",x))return!1;u=a.rQshiftBytes(x)}else{if(u=this._readData(a),u===null)return!1;this._zlibs[t].setInput(u),u=this._zlibs[t].inflate(x),this._zlibs[t].setInput(null)}return this._numColors==2?this._monoRect(e,s,r,n,u,this._palette,h):this._paletteRect(e,s,r,n,u,this._palette,h),this._numColors=0,!0}_monoRect(t,e,s,r,n,a,h){let _=this._getScratchBuffer(s*r*4),o=Math.floor((s+7)/8),l=Math.floor(s/8);for(let x=0;x<r;x++){let u,d,X;for(X=0;X<l;X++)for(let F=7;F>=0;F--)u=(x*s+X*8+7-F)*4,d=(n[x*o+X]>>F&1)*3,_[u]=a[d],_[u+1]=a[d+1],_[u+2]=a[d+2],_[u+3]=255;for(let F=7;F>=8-s%8;F--)u=(x*s+X*8+7-F)*4,d=(n[x*o+X]>>F&1)*3,_[u]=a[d],_[u+1]=a[d+1],_[u+2]=a[d+2],_[u+3]=255}h.blitImage(t,e,s,r,_,0,!1)}_paletteRect(t,e,s,r,n,a,h){let _=this._getScratchBuffer(s*r*4),o=s*r*4;for(let l=0,x=0;l<o;l+=4,x++){let u=n[x]*3;_[l]=a[u],_[l+1]=a[u+1],_[l+2]=a[u+2],_[l+3]=255}h.blitImage(t,e,s,r,_,0,!1)}_gradientFilter(t,e,s,r,n,a,h,_){let o=r*n*3,l;if(o===0)return!0;if(o<12){if(a.rQwait("TIGHT",o))return!1;l=a.rQshiftBytes(o)}else{if(l=this._readData(a),l===null)return!1;this._zlibs[t].setInput(l),l=this._zlibs[t].inflate(o),this._zlibs[t].setInput(null)}let x=new Uint8Array(4*r*n),u=0,d=0,X=new Uint8Array(3);for(let T=0;T<r;T++){for(let E=0;E<3;E++){let K=X[E],C=l[d++]+K;x[u++]=C,X[E]=C}x[u++]=255}let F=0,A=new Uint8Array(3),k=new Uint8Array(3);for(let T=1;T<n;T++){X.fill(0),k.fill(0);for(let E=0;E<r;E++){for(let K=0;K<3;K++){A[K]=x[F++];let C=X[K]+A[K]-k[K];C<0?C=0:C>255&&(C=255);let I=l[d++]+C;x[u++]=I,k[K]=A[K],X[K]=I}x[u++]=255,F++}}return h.blitImage(e,s,r,n,x,0,!1),!0}_readData(t){if(this._len===0){if(t.rQwait("TIGHT",3))return null;let s;s=t.rQshift8(),this._len=s&127,s&128&&(s=t.rQshift8(),this._len|=(s&127)<<7,s&128&&(s=t.rQshift8(),this._len|=s<<14))}if(t.rQwait("TIGHT",this._len))return null;let e=t.rQshiftBytes(this._len,!1);return this._len=0,e}_getScratchBuffer(t){return(!this._scratchBuffer||this._scratchBuffer.length<t)&&(this._scratchBuffer=new Uint8Array(t)),this._scratchBuffer}};var At=class extends Qe{_pngRect(t,e,s,r,n,a,h){let _=this._readData(n);return _===null?!1:(a.imageRect(t,e,s,r,"image/png",_),!0)}_basicRect(t,e,s,r,n,a,h,_){throw new Error("BasicCompression received in TightPNG rect")}};var ai=64,oi=64,Ct=class{constructor(){this._length=0,this._inflator=new le,this._pixelBuffer=new Uint8Array(ai*oi*4),this._tileBuffer=new Uint8Array(ai*oi*4)}decodeRect(t,e,s,r,n,a,h){if(this._length===0){if(n.rQwait("ZLib data length",4))return!1;this._length=n.rQshift32()}if(n.rQwait("Zlib data",this._length))return!1;let _=n.rQshiftBytes(this._length,!1);this._inflator.setInput(_);for(let o=e;o<e+r;o+=oi){let l=Math.min(oi,e+r-o);for(let x=t;x<t+s;x+=ai){let u=Math.min(ai,t+s-x),d=u*l,X=this._inflator.inflate(1)[0];if(X===0){let F=this._readPixels(d);a.blitImage(x,o,u,l,F,0,!1)}else if(X===1){let F=this._readPixels(1);a.fillRect(x,o,u,l,[F[0],F[1],F[2]])}else if(X>=2&&X<=16){let F=this._decodePaletteTile(X,d,u,l);a.blitImage(x,o,u,l,F,0,!1)}else if(X===128){let F=this._decodeRLETile(d);a.blitImage(x,o,u,l,F,0,!1)}else if(X>=130&&X<=255){let F=this._decodeRLEPaletteTile(X-128,d);a.blitImage(x,o,u,l,F,0,!1)}else throw new Error("Unknown subencoding: "+X)}}return this._length=0,!0}_getBitsPerPixelInPalette(t){if(t<=2)return 1;if(t<=4)return 2;if(t<=16)return 4}_readPixels(t){let e=this._pixelBuffer,s=this._inflator.inflate(3*t);for(let r=0,n=0;r<t*4;r+=4,n+=3)e[r]=s[n],e[r+1]=s[n+1],e[r+2]=s[n+2],e[r+3]=255;return e}_decodePaletteTile(t,e,s,r){let n=this._tileBuffer,a=this._readPixels(t),h=this._getBitsPerPixelInPalette(t),_=(1<<h)-1,o=0,l=this._inflator.inflate(1)[0];for(let x=0;x<r;x++){let u=8-h;for(let d=0;d<s;d++){u<0&&(u=8-h,l=this._inflator.inflate(1)[0]);let X=l>>u&_;n[o]=a[X*4],n[o+1]=a[X*4+1],n[o+2]=a[X*4+2],n[o+3]=a[X*4+3],o+=4,u-=h}u<8-h&&x<r-1&&(l=this._inflator.inflate(1)[0])}return n}_decodeRLETile(t){let e=this._tileBuffer,s=0;for(;s<t;){let r=this._readPixels(1),n=this._readRLELength();for(let a=0;a<n;a++)e[s*4]=r[0],e[s*4+1]=r[1],e[s*4+2]=r[2],e[s*4+3]=r[3],s++}return e}_decodeRLEPaletteTile(t,e){let s=this._tileBuffer,r=this._readPixels(t),n=0;for(;n<e;){let a=this._inflator.inflate(1)[0],h=1;if(a>=128&&(a-=128,h=this._readRLELength()),a>t)throw new Error("Too big index in palette: "+a+", palette size: "+t);if(n+h>e)throw new Error("Too big rle length in palette mode: "+h+", allowed length is: "+(e-n));for(let _=0;_<h;_++)s[n*4]=r[a*4],s[n*4+1]=r[a*4+1],s[n*4+2]=r[a*4+2],s[n*4+3]=r[a*4+3],n++}return s}_readRLELength(){let t=0,e=0;do e=this._inflator.inflate(1)[0],t+=e;while(e===255);return t+1}};var Lt=class{constructor(){this._cachedQuantTables=[],this._cachedHuffmanTables=[],this._segments=[]}decodeRect(t,e,s,r,n,a,h){for(;;){let d=this._readSegment(n);if(d===null)return!1;if(this._segments.push(d),d[1]===217)break}let _=[],o=[];for(let d of this._segments){let X=d[1];X===196?_.push(d):X===219&&o.push(d)}let l=this._segments.findIndex(d=>d[1]==192||d[1]==194);if(l==-1)throw new Error("Illegal JPEG image without SOF");o.length===0&&this._segments.splice(l+1,0,...this._cachedQuantTables),_.length===0&&this._segments.splice(l+1,0,...this._cachedHuffmanTables);let x=0;for(let d of this._segments)x+=d.length;let u=new Uint8Array(x);x=0;for(let d of this._segments)u.set(d,x),x+=d.length;return a.imageRect(t,e,s,r,"image/jpeg",u),_.length!==0&&(this._cachedHuffmanTables=_),o.length!==0&&(this._cachedQuantTables=o),this._segments=[],!0}_readSegment(t){if(t.rQwait("JPEG",2))return null;let e=t.rQshift8();if(e!=255)throw new Error("Illegal JPEG marker received (byte: "+e+")");let s=t.rQshift8();if(s>=208&&s<=217||s==1)return new Uint8Array([e,s]);if(t.rQwait("JPEG",2,2))return null;let r=t.rQshift16();if(r<2)throw new Error("Illegal JPEG length received (length: "+r+")");if(t.rQwait("JPEG",r-2,4))return null;let n=0;if(s===218)for(n+=2;;){if(t.rQwait("JPEG",r-2+n,4))return null;let h=t.rQpeekBytes(r-2+n,!1);if(h.at(-2)===255&&h.at(-1)!==0&&!(h.at(-1)>=208&&h.at(-1)<=215)){n-=2;break}n++}let a=new Uint8Array(2+r+n);return a[0]=e,a[1]=s,a[2]=r>>8,a[3]=r,a.set(t.rQshiftBytes(r-2+n,!1),4),a}};var Wi=class{constructor(t){this._data=t,this._index=0,this.profileIdc=null,this.constraintSet=null,this.levelIdc=null}_getStartSequenceLen(t){let e=this._data;return e[t+0]==0&&e[t+1]==0&&e[t+2]==0&&e[t+3]==1?4:e[t+0]==0&&e[t+1]==0&&e[t+2]==1?3:0}_indexOfNextNalUnit(t){let e=this._data;for(let s=t;s<e.length;++s)if(this._getStartSequenceLen(s)!=0)return s;return-1}_parseSps(t){this.profileIdc=this._data[t],this.constraintSet=this._data[t+1],this.levelIdc=this._data[t+2]}_parseNalUnit(t){let e=this._data[t];if(e&128)throw new Error("H264 parsing sanity check failed, forbidden zero bit is set");let s=e&31;switch(s){case 1:return{slice:!0};case 5:return{slice:!0,key:!0};case 6:return{};case 7:return this._parseSps(t+1),{};case 8:return{};default:W("Unhandled unit type: ",s);break}return{}}parse(){let t=this._index,e=!1;for(;this._index<this._data.length;){let s=this._getStartSequenceLen(this._index);if(s==0)throw new Error("Invalid start sequence in bit stream");let{slice:r,key:n}=this._parseNalUnit(this._index+s),a=this._indexOfNextNalUnit(this._index+s);if(a==-1?this._index=this._data.length:this._index=a,n&&(e=!0),r)break}return t===this._index?null:{frame:this._data.subarray(t,this._index),key:e}}},Zi=class{constructor(t,e){this.lastUsed=0,this._width=t,this._height=e,this._profileIdc=null,this._constraintSet=null,this._levelIdc=null,this._decoder=null,this._pendingFrames=[]}_handleFrame(t){let e=this._pendingFrames.shift();if(e===void 0)throw new Error("Pending frame queue empty when receiving frame from decoder");if(e.timestamp!=t.timestamp)throw new Error("Video frame timestamp mismatch. Expected "+t.timestamp+" but but got "+e.timestamp);e.frame=t,e.ready=!0,e.resolve(),e.keep||t.close()}_handleError(t){throw new Error("Failed to decode frame: "+t.message)}_configureDecoder(t,e,s){(this._decoder===null||this._decoder.state==="closed")&&(this._decoder=new VideoDecoder({output:n=>this._handleFrame(n),error:n=>this._handleError(n)}));let r="avc1."+t.toString(16).padStart(2,"0")+e.toString(16).padStart(2,"0")+s.toString(16).padStart(2,"0");this._decoder.configure({codec:r,codedWidth:this._width,codedHeight:this._height,optimizeForLatency:!0})}_preparePendingFrame(t){let e={timestamp:t,promise:null,resolve:null,frame:null,ready:!1,keep:!1};return e.promise=new Promise(s=>{e.resolve=s}),this._pendingFrames.push(e),e}decode(t){let e=new Wi(t),s=null,r=Math.round(window.performance.now()*1e3);for(;;){let n=e.parse();if(n===null)break;if(e.profileIdc!==null&&(self._profileIdc=e.profileIdc,self._constraintSet=e.constraintSet,self._levelIdc=e.levelIdc),this._decoder===null||this._decoder.state!=="configured"){if(!n.key){W("Missing key frame. Can't decode until one arrives");continue}if(self._profileIdc===null){W("Cannot config decoder. Have not received SPS and PPS yet.");continue}this._configureDecoder(self._profileIdc,self._constraintSet,self._levelIdc)}s=this._preparePendingFrame(r);let a=new EncodedVideoChunk({timestamp:r,type:n.key?"key":"delta",data:n.frame});try{this._decoder.decode(a)}catch(h){W("Failed to decode:",h)}}return s!==null&&(s.keep=!0),s}},Tt=class{constructor(){this._tick=0,this._contexts={}}_contextId(t,e,s,r){return[t,e,s,r].join(",")}_findOldestContextId(){let t=Number.MAX_VALUE,e;for(let[s,r]of Object.entries(this._contexts))r.lastUsed<t&&(t=r.lastUsed,e=s);return e}_createContext(t,e,s,r){if(Object.keys(this._contexts).length>=64){let h=this._findOldestContextId();delete this._contexts[h]}let a=new Zi(s,r);return this._contexts[this._contextId(t,e,s,r)]=a,a}_getContext(t,e,s,r){let n=this._contexts[this._contextId(t,e,s,r)];return n!==void 0?n:this._createContext(t,e,s,r)}_resetContext(t,e,s,r){delete this._contexts[this._contextId(t,e,s,r)]}_resetAllContexts(){this._contexts={}}decodeRect(t,e,s,r,n,a,h){if(n.rQwait("h264 header",8))return!1;let l=n.rQshift32(),x=n.rQshift32();if(n.rQwait("h264 payload",l,8))return!1;x&2?this._resetAllContexts():x&1&&this._resetContext(t,e,s,r);let u=this._getContext(t,e,s,r);if(u.lastUsed=this._tick++,l!==0){let d=n.rQshiftBytes(l,!1),X=u.decode(d);X!==null&&a.videoFrame(t,e,s,r,X)}return!0}};var ba=3,ma="rgb(40, 40, 40)",Br=17,Dr=50,Qr=19,Mt=75,Ke=50,wa=1e3,va=50,Ir=1,hi=2,Pr=6,Hr=16,Yi=19,Ur=22,Nr=30,Or=113,zr=129,Gr=256,de=1;var Vr=1<<24,li=1<<25,Wr=1<<26,Rt=1<<27,ci=1<<28,se=class i extends Ee{constructor(t,e,s){if(!t)throw new Error("Must specify target");if(!e)throw new Error("Must specify URL, WebSocket or RTCDataChannel");window.isSecureContext||U("noVNC requires a secure context (TLS). Expect crashes!"),super(),this._target=t,typeof e=="string"?this._url=e:(this._url=null,this._rawChannel=e),s=s||{},this._rfbCredentials=s.credentials||{},this._shared="shared"in s?!!s.shared:!0,this._repeaterID=s.repeaterID||"",this._wsProtocols=s.wsProtocols||[],this._rfbConnectionState="",this._rfbInitState="",this._rfbAuthScheme=-1,this._rfbCleanDisconnect=!0,this._rfbRSAAESAuthenticationState=null,this._rfbVersion=0,this._rfbMaxVersion=3.8,this._rfbTightVNC=!1,this._rfbVeNCryptState=0,this._rfbXvpVer=0,this._fbWidth=0,this._fbHeight=0,this._fbName="",this._capabilities={power:!1},this._supportsFence=!1,this._supportsContinuousUpdates=!1,this._enabledContinuousUpdates=!1,this._supportsSetDesktopSize=!1,this._screenID=0,this._screenFlags=0,this._pendingRemoteResize=!1,this._lastResize=0,this._qemuExtKeyEventSupported=!1,this._extendedPointerEventSupported=!1,this._clipboardText=null,this._clipboardServerCapabilitiesActions={},this._clipboardServerCapabilitiesFormats={},this._sock=null,this._display=null,this._flushing=!1,this._keyboard=null,this._gestures=null,this._resizeObserver=null,this._disconnTimer=null,this._resizeTimeout=null,this._mouseMoveTimer=null,this._decoders={},this._FBU={rects:0,x:0,y:0,width:0,height:0,encoding:null},this._mousePos={},this._mouseButtonMask=0,this._mouseLastMoveTime=0,this._viewportDragging=!1,this._viewportDragPos={},this._viewportHasMoved=!1,this._accumulatedWheelDeltaX=0,this._accumulatedWheelDeltaY=0,this._gestureLastTapTime=null,this._gestureFirstDoubleTapEv=null,this._gestureLastMagnitudeX=0,this._gestureLastMagnitudeY=0,this._eventHandlers={focusCanvas:this._focusCanvas.bind(this),handleResize:this._handleResize.bind(this),handleMouse:this._handleMouse.bind(this),handleWheel:this._handleWheel.bind(this),handleGesture:this._handleGesture.bind(this),handleRSAAESCredentialsRequired:this._handleRSAAESCredentialsRequired.bind(this),handleRSAAESServerVerification:this._handleRSAAESServerVerification.bind(this)},L(">> RFB.constructor"),this._screen=document.createElement("div"),this._screen.style.display="flex",this._screen.style.width="100%",this._screen.style.height="100%",this._screen.style.overflow="auto",this._screen.style.background=ma,this._canvas=document.createElement("canvas"),this._canvas.style.margin="auto",this._canvas.style.outline="none",this._canvas.width=0,this._canvas.height=0,this._canvas.tabIndex=-1,this._screen.appendChild(this._canvas),this._cursor=new vt,this._cursorImage=i.cursors.none,this._decoders[R.encodingRaw]=new Kt,this._decoders[R.encodingCopyRect]=new Ft,this._decoders[R.encodingRRE]=new kt,this._decoders[R.encodingHextile]=new St,this._decoders[R.encodingZlib]=new Et,this._decoders[R.encodingTight]=new Qe,this._decoders[R.encodingTightPNG]=new At,this._decoders[R.encodingZRLE]=new Ct,this._decoders[R.encodingJPEG]=new Lt,this._decoders[R.encodingH264]=new Tt;try{this._display=new rt(this._canvas)}catch(r){throw U("Display exception: "+r),r}this._keyboard=new bt(this._canvas),this._keyboard.onkeyevent=this._handleKeyEvent.bind(this),this._remoteCapsLock=null,this._remoteNumLock=null,this._gestures=new mt,this._sock=new yt,this._sock.on("open",this._socketOpen.bind(this)),this._sock.on("close",this._socketClose.bind(this)),this._sock.on("message",this._handleMessage.bind(this)),this._sock.on("error",this._socketError.bind(this)),this._expectedClientWidth=null,this._expectedClientHeight=null,this._resizeObserver=new ResizeObserver(this._eventHandlers.handleResize),this._updateConnectionState("connecting"),L("<< RFB.constructor"),this.dragViewport=!1,this.focusOnClick=!0,this._viewOnly=!1,this._clipViewport=!1,this._clippingViewport=!1,this._scaleViewport=!1,this._resizeSession=!1,this._showDotCursor=!1,s.showDotCursor!==void 0&&(W("Specifying showDotCursor as a RFB constructor argument is deprecated"),this._showDotCursor=s.showDotCursor),this._qualityLevel=6,this._compressionLevel=2}get viewOnly(){return this._viewOnly}set viewOnly(t){this._viewOnly=t,(this._rfbConnectionState==="connecting"||this._rfbConnectionState==="connected")&&(t?this._keyboard.ungrab():this._keyboard.grab())}get capabilities(){return this._capabilities}get clippingViewport(){return this._clippingViewport}_setClippingViewport(t){t!==this._clippingViewport&&(this._clippingViewport=t,this.dispatchEvent(new CustomEvent("clippingviewport",{detail:this._clippingViewport})))}get touchButton(){return 0}set touchButton(t){W("Using old API!")}get clipViewport(){return this._clipViewport}set clipViewport(t){this._clipViewport=t,this._updateClip()}get scaleViewport(){return this._scaleViewport}set scaleViewport(t){this._scaleViewport=t,t&&this._clipViewport&&this._updateClip(),this._updateScale(),!t&&this._clipViewport&&this._updateClip()}get resizeSession(){return this._resizeSession}set resizeSession(t){this._resizeSession=t,t&&this._requestRemoteResize()}get showDotCursor(){return this._showDotCursor}set showDotCursor(t){this._showDotCursor=t,this._refreshCursor()}get background(){return this._screen.style.background}set background(t){this._screen.style.background=t}get qualityLevel(){return this._qualityLevel}set qualityLevel(t){if(!Number.isInteger(t)||t<0||t>9){U("qualityLevel must be an integer between 0 and 9");return}this._qualityLevel!==t&&(this._qualityLevel=t,this._rfbConnectionState==="connected"&&this._sendEncodings())}get compressionLevel(){return this._compressionLevel}set compressionLevel(t){if(!Number.isInteger(t)||t<0||t>9){U("compressionLevel must be an integer between 0 and 9");return}this._compressionLevel!==t&&(this._compressionLevel=t,this._rfbConnectionState==="connected"&&this._sendEncodings())}disconnect(){this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.disconnect()}approveServer(){this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.approveServer()}sendCredentials(t){this._rfbCredentials=t,this._resumeAuthentication()}sendCtrlAltDel(){this._rfbConnectionState!=="connected"||this._viewOnly||(V("Sending Ctrl-Alt-Del"),this.sendKey(f.XK_Control_L,"ControlLeft",!0),this.sendKey(f.XK_Alt_L,"AltLeft",!0),this.sendKey(f.XK_Delete,"Delete",!0),this.sendKey(f.XK_Delete,"Delete",!1),this.sendKey(f.XK_Alt_L,"AltLeft",!1),this.sendKey(f.XK_Control_L,"ControlLeft",!1))}machineShutdown(){this._xvpOp(1,2)}machineReboot(){this._xvpOp(1,3)}machineReset(){this._xvpOp(1,4)}sendKey(t,e,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s===void 0){this.sendKey(t,e,!0),this.sendKey(t,e,!1);return}let r=Kr[e];if(this._qemuExtKeyEventSupported&&r)t=t||0,V("Sending key ("+(s?"down":"up")+"): keysym "+t+", scancode "+r),i.messages.QEMUExtendedKeyEvent(this._sock,t,s,r);else{if(!t)return;V("Sending keysym ("+(s?"down":"up")+"): "+t),i.messages.keyEvent(this._sock,t,s?1:0)}}focus(t){this._canvas.focus(t)}blur(){this._canvas.blur()}clipboardPasteFrom(t){if(!(this._rfbConnectionState!=="connected"||this._viewOnly))if(this._clipboardServerCapabilitiesFormats[de]&&this._clipboardServerCapabilitiesActions[Rt])this._clipboardText=t,i.messages.extendedClipboardNotify(this._sock,[de]);else{let e,s,r;e=0;for(let n of t)e++;r=new Uint8Array(e),s=0;for(let n of t){let a=n.codePointAt(0);a>255&&(a=63),r[s++]=a}i.messages.clientCutText(this._sock,r)}}getImageData(){return this._display.getImageData()}toDataURL(t,e){return this._display.toDataURL(t,e)}toBlob(t,e,s){return this._display.toBlob(t,e,s)}_connect(){if(L(">> RFB.connect"),this._url)V(`connecting to ${this._url}`),this._sock.open(this._url,this._wsProtocols);else{if(V(`attaching ${this._rawChannel} to Websock`),this._sock.attach(this._rawChannel),this._sock.readyState==="closed")throw Error("Cannot use already closed WebSocket/RTCDataChannel");this._sock.readyState==="open"&&this._socketOpen()}this._target.appendChild(this._screen),this._gestures.attach(this._canvas),this._cursor.attach(this._canvas),this._refreshCursor(),this._resizeObserver.observe(this._screen),this._canvas.addEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.addEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.addEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.addEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.addEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.addEventListener("click",this._eventHandlers.handleMouse),this._canvas.addEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.addEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.addEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.addEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.addEventListener("gestureend",this._eventHandlers.handleGesture),L("<< RFB.connect")}_disconnect(){L(">> RFB.disconnect"),this._cursor.detach(),this._canvas.removeEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gestureend",this._eventHandlers.handleGesture),this._canvas.removeEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.removeEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.removeEventListener("click",this._eventHandlers.handleMouse),this._canvas.removeEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("touchstart",this._eventHandlers.focusCanvas),this._resizeObserver.disconnect(),this._keyboard.ungrab(),this._gestures.detach(),this._sock.close();try{this._target.removeChild(this._screen)}catch(t){if(t.name!=="NotFoundError")throw t}clearTimeout(this._resizeTimeout),clearTimeout(this._mouseMoveTimer),L("<< RFB.disconnect")}_socketOpen(){this._rfbConnectionState==="connecting"&&this._rfbInitState===""?(this._rfbInitState="ProtocolVersion",L("Starting VNC handshake")):this._fail("Unexpected server connection while "+this._rfbConnectionState)}_socketClose(t){L("WebSocket on-close event");let e="";switch(t.code&&(e="(code: "+t.code,t.reason&&(e+=", reason: "+t.reason),e+=")"),this._rfbConnectionState){case"connecting":this._fail("Connection closed "+e);break;case"connected":this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected");break;case"disconnecting":this._updateConnectionState("disconnected");break;case"disconnected":this._fail("Unexpected server disconnect when already disconnected "+e);break;default:this._fail("Unexpected server disconnect before connecting "+e);break}this._sock.off("close"),this._rawChannel=null}_socketError(t){W("WebSocket on-error event")}_focusCanvas(t){this.focusOnClick&&this.focus({preventScroll:!0})}_setDesktopName(t){this._fbName=t,this.dispatchEvent(new CustomEvent("desktopname",{detail:{name:this._fbName}}))}_saveExpectedClientSize(){this._expectedClientWidth=this._screen.clientWidth,this._expectedClientHeight=this._screen.clientHeight}_currentClientSize(){return[this._screen.clientWidth,this._screen.clientHeight]}_clientHasExpectedSize(){let[t,e]=this._currentClientSize();return t==this._expectedClientWidth&&e==this._expectedClientHeight}_handleResize(){this._clientHasExpectedSize()||(window.requestAnimationFrame(()=>{this._updateClip(),this._updateScale(),this._saveExpectedClientSize()}),this._requestRemoteResize())}_updateClip(){let t=this._display.clipViewport,e=this._clipViewport;if(this._scaleViewport&&(e=!1),t!==e&&(this._display.clipViewport=e),e){let s=this._screenSize();this._display.viewportChangeSize(s.w,s.h),this._fixScrollbars(),this._setClippingViewport(s.w<this._display.width||s.h<this._display.height)}else this._setClippingViewport(!1);t!==e&&this._saveExpectedClientSize()}_updateScale(){if(!this._scaleViewport)this._display.scale=1;else{let t=this._screenSize();this._display.autoscale(t.w,t.h)}this._fixScrollbars()}_requestRemoteResize(){if(!this._resizeSession||this._viewOnly||!this._supportsSetDesktopSize||this._pendingRemoteResize)return;if(Date.now()-this._lastResize<100){clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),100-(Date.now()-this._lastResize));return}this._resizeTimeout=null;let t=this._screenSize();t.w===this._fbWidth&&t.h===this._fbHeight||(this._pendingRemoteResize=!0,this._lastResize=Date.now(),i.messages.setDesktopSize(this._sock,Math.floor(t.w),Math.floor(t.h),this._screenID,this._screenFlags),L("Requested new desktop size: "+t.w+"x"+t.h))}_screenSize(){let t=this._screen.getBoundingClientRect();return{w:t.width,h:t.height}}_fixScrollbars(){let t=this._screen.style.overflow;this._screen.style.overflow="hidden",this._screen.getBoundingClientRect(),this._screen.style.overflow=t}_updateConnectionState(t){let e=this._rfbConnectionState;if(t===e){L("Already in state '"+t+"', ignoring");return}if(e==="disconnected"){U("Tried changing state of a disconnected RFB object");return}switch(t){case"connected":if(e!=="connecting"){U("Bad transition to connected state, previous connection state: "+e);return}break;case"disconnected":if(e!=="disconnecting"){U("Bad transition to disconnected state, previous connection state: "+e);return}break;case"connecting":if(e!==""){U("Bad transition to connecting state, previous connection state: "+e);return}break;case"disconnecting":if(e!=="connected"&&e!=="connecting"){U("Bad transition to disconnecting state, previous connection state: "+e);return}break;default:U("Unknown connection state: "+t);return}switch(this._rfbConnectionState=t,L("New state '"+t+"', was '"+e+"'."),this._disconnTimer&&t!=="disconnecting"&&(L("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null,this._sock.off("close")),t){case"connecting":this._connect();break;case"connected":this.dispatchEvent(new CustomEvent("connect",{detail:{}}));break;case"disconnecting":this._disconnect(),this._disconnTimer=setTimeout(()=>{U("Disconnection timed out."),this._updateConnectionState("disconnected")},ba*1e3);break;case"disconnected":this.dispatchEvent(new CustomEvent("disconnect",{detail:{clean:this._rfbCleanDisconnect}}));break}}_fail(t){switch(this._rfbConnectionState){case"disconnecting":U("Failed when disconnecting: "+t);break;case"connected":U("Failed while connected: "+t);break;case"connecting":U("Failed when connecting: "+t);break;default:U("RFB failure: "+t);break}return this._rfbCleanDisconnect=!1,this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected"),!1}_setCapability(t,e){this._capabilities[t]=e,this.dispatchEvent(new CustomEvent("capabilities",{detail:{capabilities:this._capabilities}}))}_handleMessage(){if(this._sock.rQwait("message",1)){W("handleMessage called on an empty receive queue");return}switch(this._rfbConnectionState){case"disconnected":U("Got data while disconnected");break;case"connected":for(;!(this._flushing||!this._normalMsg()||this._sock.rQwait("message",1)););break;case"connecting":for(;this._rfbConnectionState==="connecting"&&this._initMsg(););break;default:U("Got data while in an invalid state");break}}_handleKeyEvent(t,e,s,r,n){e=="CapsLock"&&s&&(this._remoteCapsLock=null),this._remoteCapsLock!==null&&n!==null&&this._remoteCapsLock!==n&&s&&(L("Fixing remote caps lock"),this.sendKey(f.XK_Caps_Lock,"CapsLock",!0),this.sendKey(f.XK_Caps_Lock,"CapsLock",!1),this._remoteCapsLock=null),e=="NumLock"&&s&&(this._remoteNumLock=null),this._remoteNumLock!==null&&r!==null&&this._remoteNumLock!==r&&s&&(L("Fixing remote num lock"),this.sendKey(f.XK_Num_Lock,"NumLock",!0),this.sendKey(f.XK_Num_Lock,"NumLock",!1),this._remoteNumLock=null),this.sendKey(t,e,s)}static _convertButtonMask(t){let e={0:1,1:4,2:2,3:128,4:256},s=0;for(let r=0;r<5;r++)t&1<<r&&(s|=e[r]);return s}_handleMouse(t){if(t.type==="click"&&t.target!==this._canvas||(t.stopPropagation(),t.preventDefault(),t.type==="click"||t.type==="contextmenu"))return;let e=Ne(t.clientX,t.clientY,this._canvas),s=i._convertButtonMask(t.buttons),r=t.type=="mousedown";switch(t.type){case"mousedown":case"mouseup":if(this.dragViewport)if(r&&!this._viewportDragging){this._viewportDragging=!0,this._viewportDragPos={x:e.x,y:e.y},this._viewportHasMoved=!1,this._flushMouseMoveTimer(e.x,e.y),this._mouseButtonMask=s;break}else{if(this._viewportDragging=!1,this._viewportHasMoved){this._mouseButtonMask=s;break}this._sendMouse(e.x,e.y,this._mouseButtonMask)}r&&rs(this._canvas),this._handleMouseButton(e.x,e.y,s);break;case"mousemove":if(this._viewportDragging){let n=this._viewportDragPos.x-e.x,a=this._viewportDragPos.y-e.y;(this._viewportHasMoved||Math.abs(n)>st||Math.abs(a)>st)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:e.x,y:e.y},this._display.viewportChangePos(n,a));break}this._handleMouseMove(e.x,e.y);break}}_handleMouseButton(t,e,s){this._flushMouseMoveTimer(t,e),this._mouseButtonMask=s,this._sendMouse(t,e,this._mouseButtonMask)}_handleMouseMove(t,e){if(this._mousePos={x:t,y:e},this._mouseMoveTimer==null){let s=Date.now()-this._mouseLastMoveTime;s>Br?(this._sendMouse(t,e,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()):this._mouseMoveTimer=setTimeout(()=>{this._handleDelayedMouseMove()},Br-s)}}_handleDelayedMouseMove(){this._mouseMoveTimer=null,this._sendMouse(this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()}_sendMouse(t,e,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s&32768)throw new Error("Illegal mouse button mask (mask: "+s+")");let r=s&32640;this._extendedPointerEventSupported&&r?i.messages.extendedPointerEvent(this._sock,this._display.absX(t),this._display.absY(e),s):i.messages.pointerEvent(this._sock,this._display.absX(t),this._display.absY(e),s)}_handleWheel(t){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;t.stopPropagation(),t.preventDefault();let e=Ne(t.clientX,t.clientY,this._canvas),s=i._convertButtonMask(t.buttons),r=t.deltaX,n=t.deltaY;t.deltaMode!==0&&(r*=Qr,n*=Qr),this._accumulatedWheelDeltaX+=r,this._accumulatedWheelDeltaY+=n,Math.abs(this._accumulatedWheelDeltaX)>=Dr&&(this._accumulatedWheelDeltaX<0?(this._handleMouseButton(e.x,e.y,s|32),this._handleMouseButton(e.x,e.y,s)):this._accumulatedWheelDeltaX>0&&(this._handleMouseButton(e.x,e.y,s|64),this._handleMouseButton(e.x,e.y,s)),this._accumulatedWheelDeltaX=0),Math.abs(this._accumulatedWheelDeltaY)>=Dr&&(this._accumulatedWheelDeltaY<0?(this._handleMouseButton(e.x,e.y,s|8),this._handleMouseButton(e.x,e.y,s)):this._accumulatedWheelDeltaY>0&&(this._handleMouseButton(e.x,e.y,s|16),this._handleMouseButton(e.x,e.y,s)),this._accumulatedWheelDeltaY=0)}_fakeMouseMove(t,e,s){this._handleMouseMove(e,s),this._cursor.move(t.detail.clientX,t.detail.clientY)}_handleTapEvent(t,e){let s=Ne(t.detail.clientX,t.detail.clientY,this._canvas);if(this._gestureLastTapTime!==null&&Date.now()-this._gestureLastTapTime<wa&&this._gestureFirstDoubleTapEv.detail.type===t.detail.type){let r=this._gestureFirstDoubleTapEv.detail.clientX-t.detail.clientX,n=this._gestureFirstDoubleTapEv.detail.clientY-t.detail.clientY;Math.hypot(r,n)<va?s=Ne(this._gestureFirstDoubleTapEv.detail.clientX,this._gestureFirstDoubleTapEv.detail.clientY,this._canvas):this._gestureFirstDoubleTapEv=t}else this._gestureFirstDoubleTapEv=t;this._gestureLastTapTime=Date.now(),this._fakeMouseMove(this._gestureFirstDoubleTapEv,s.x,s.y),this._handleMouseButton(s.x,s.y,e),this._handleMouseButton(s.x,s.y,0)}_handleGesture(t){let e,s=Ne(t.detail.clientX,t.detail.clientY,this._canvas);switch(t.type){case"gesturestart":switch(t.detail.type){case"onetap":this._handleTapEvent(t,1);break;case"twotap":this._handleTapEvent(t,4);break;case"threetap":this._handleTapEvent(t,2);break;case"drag":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragging=!0,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,1));break;case"longpress":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,4));break;case"twodrag":this._gestureLastMagnitudeX=t.detail.magnitudeX,this._gestureLastMagnitudeY=t.detail.magnitudeY,this._fakeMouseMove(t,s.x,s.y);break;case"pinch":this._gestureLastMagnitudeX=Math.hypot(t.detail.magnitudeX,t.detail.magnitudeY),this._fakeMouseMove(t,s.x,s.y);break}break;case"gesturemove":switch(t.detail.type){case"onetap":case"twotap":case"threetap":break;case"drag":case"longpress":if(this.dragViewport){this._viewportDragging=!0;let r=this._viewportDragPos.x-s.x,n=this._viewportDragPos.y-s.y;(this._viewportHasMoved||Math.abs(r)>st||Math.abs(n)>st)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:s.x,y:s.y},this._display.viewportChangePos(r,n))}else this._fakeMouseMove(t,s.x,s.y);break;case"twodrag":for(this._fakeMouseMove(t,s.x,s.y);t.detail.magnitudeY-this._gestureLastMagnitudeY>Ke;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY+=Ke;for(;t.detail.magnitudeY-this._gestureLastMagnitudeY<-Ke;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY-=Ke;for(;t.detail.magnitudeX-this._gestureLastMagnitudeX>Ke;)this._handleMouseButton(s.x,s.y,32),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=Ke;for(;t.detail.magnitudeX-this._gestureLastMagnitudeX<-Ke;)this._handleMouseButton(s.x,s.y,64),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=Ke;break;case"pinch":if(this._fakeMouseMove(t,s.x,s.y),e=Math.hypot(t.detail.magnitudeX,t.detail.magnitudeY),Math.abs(e-this._gestureLastMagnitudeX)>Mt){for(this._handleKeyEvent(f.XK_Control_L,"ControlLeft",!0);e-this._gestureLastMagnitudeX>Mt;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=Mt;for(;e-this._gestureLastMagnitudeX<-Mt;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=Mt}this._handleKeyEvent(f.XK_Control_L,"ControlLeft",!1);break}break;case"gestureend":switch(t.detail.type){case"onetap":case"twotap":case"threetap":case"pinch":case"twodrag":break;case"drag":this.dragViewport?this._viewportDragging=!1:(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break;case"longpress":if(this._viewportHasMoved)break;this.dragViewport&&!this._viewportHasMoved?(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,4),this._handleMouseButton(s.x,s.y,0),this._viewportDragging=!1):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break}break}}_flushMouseMoveTimer(t,e){this._mouseMoveTimer!==null&&(clearTimeout(this._mouseMoveTimer),this._mouseMoveTimer=null,this._sendMouse(t,e,this._mouseButtonMask))}_negotiateProtocolVersion(){if(this._sock.rQwait("version",12))return!1;let t=this._sock.rQshiftStr(12).substr(4,7);V("Server ProtocolVersion: "+t);let e=0;switch(t){case"000.000":e=1;break;case"003.003":case"003.006":this._rfbVersion=3.3;break;case"003.007":this._rfbVersion=3.7;break;case"003.008":case"003.889":case"004.000":case"004.001":case"005.000":this._rfbVersion=3.8;break;default:return this._fail("Invalid server version "+t)}if(e){let r="ID:"+this._repeaterID;for(;r.length<250;)r+="\0";return this._sock.sQpushString(r),this._sock.flush(),!0}this._rfbVersion>this._rfbMaxVersion&&(this._rfbVersion=this._rfbMaxVersion);let s="00"+parseInt(this._rfbVersion,10)+".00"+this._rfbVersion*10%10;this._sock.sQpushString("RFB "+s+`
|
|
`),this._sock.flush(),L("Sent ProtocolVersion: "+s),this._rfbInitState="Security"}_isSupportedSecurityType(t){return[Ir,hi,Pr,Hr,Yi,Ur,Nr,Or,Gr].includes(t)}_negotiateSecurity(){if(this._rfbVersion>=3.7){let t=this._sock.rQshift8();if(this._sock.rQwait("security type",t,1))return!1;if(t===0)return this._rfbInitState="SecurityReason",this._securityContext="no security types",this._securityStatus=1,!0;let e=this._sock.rQshiftBytes(t);L("Server security types: "+e),this._rfbAuthScheme=-1;for(let s of e)if(this._isSupportedSecurityType(s)){this._rfbAuthScheme=s;break}if(this._rfbAuthScheme===-1)return this._fail("Unsupported security types (types: "+e+")");this._sock.sQpush8(this._rfbAuthScheme),this._sock.flush()}else{if(this._sock.rQwait("security scheme",4))return!1;if(this._rfbAuthScheme=this._sock.rQshift32(),this._rfbAuthScheme==0)return this._rfbInitState="SecurityReason",this._securityContext="authentication scheme",this._securityStatus=1,!0}return this._rfbInitState="Authentication",L("Authenticating using scheme: "+this._rfbAuthScheme),!0}_handleSecurityReason(){if(this._sock.rQwait("reason length",4))return!1;let t=this._sock.rQshift32(),e="";if(t>0){if(this._sock.rQwait("reason",t,4))return!1;e=this._sock.rQshiftStr(t)}return e!==""?(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus,reason:e}})),this._fail("Security negotiation failed on "+this._securityContext+" (reason: "+e+")")):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus}})),this._fail("Security negotiation failed on "+this._securityContext))}_negotiateXvpAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0||this._rfbCredentials.target===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password","target"]}})),!1):(this._sock.sQpush8(this._rfbCredentials.username.length),this._sock.sQpush8(this._rfbCredentials.target.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.target),this._sock.flush(),this._rfbAuthScheme=hi,this._negotiateAuthentication())}_negotiateVeNCryptAuth(){if(this._rfbVeNCryptState==0){if(this._sock.rQwait("vencrypt version",2))return!1;let t=this._sock.rQshift8(),e=this._sock.rQshift8();if(!(t==0&&e==2))return this._fail("Unsupported VeNCrypt version "+t+"."+e);this._sock.sQpush8(0),this._sock.sQpush8(2),this._sock.flush(),this._rfbVeNCryptState=1}if(this._rfbVeNCryptState==1){if(this._sock.rQwait("vencrypt ack",1))return!1;let t=this._sock.rQshift8();if(t!=0)return this._fail("VeNCrypt failure "+t);this._rfbVeNCryptState=2}if(this._rfbVeNCryptState==2){if(this._sock.rQwait("vencrypt subtypes length",1))return!1;let t=this._sock.rQshift8();if(t<1)return this._fail("VeNCrypt subtypes empty");this._rfbVeNCryptSubtypesLength=t,this._rfbVeNCryptState=3}if(this._rfbVeNCryptState==3){if(this._sock.rQwait("vencrypt subtypes",4*this._rfbVeNCryptSubtypesLength))return!1;let t=[];for(let e=0;e<this._rfbVeNCryptSubtypesLength;e++)t.push(this._sock.rQshift32());this._rfbAuthScheme=-1;for(let e of t)if(e!==Yi&&this._isSupportedSecurityType(e)){this._rfbAuthScheme=e;break}return this._rfbAuthScheme===-1?this._fail("Unsupported security types (types: "+t+")"):(this._sock.sQpush32(this._rfbAuthScheme),this._sock.flush(),this._rfbVeNCryptState=4,!0)}}_negotiatePlainAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;let t=he(this._rfbCredentials.username),e=he(this._rfbCredentials.password);return this._sock.sQpush32(t.length),this._sock.sQpush32(e.length),this._sock.sQpushString(t),this._sock.sQpushString(e),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateStdVNCAuth(){if(this._sock.rQwait("auth challenge",16))return!1;if(this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}})),!1;let t=Array.prototype.slice.call(this._sock.rQshiftBytes(16)),e=i.genDES(this._rfbCredentials.password,t);return this._sock.sQpushBytes(e),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateARDAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;if(this._rfbCredentials.ardPublicKey!=null&&this._rfbCredentials.ardCredentials!=null)return this._sock.sQpushBytes(this._rfbCredentials.ardCredentials),this._sock.sQpushBytes(this._rfbCredentials.ardPublicKey),this._sock.flush(),this._rfbCredentials.ardCredentials=null,this._rfbCredentials.ardPublicKey=null,this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("read ard",4))return!1;let t=this._sock.rQshiftBytes(2),e=this._sock.rQshift16();if(this._sock.rQwait("read ard keylength",e*2,4))return!1;let s=this._sock.rQshiftBytes(e),r=this._sock.rQshiftBytes(e),n=O.generateKey({name:"DH",g:t,p:s},!1,["deriveBits"]);return this._negotiateARDAuthAsync(e,r,n),!1}async _negotiateARDAuthAsync(t,e,s){let r=O.exportKey("raw",s.publicKey),n=O.deriveBits({name:"DH",public:e},s.privateKey,t*8),a=he(this._rfbCredentials.username).substring(0,63),h=he(this._rfbCredentials.password).substring(0,63),_=window.crypto.getRandomValues(new Uint8Array(128));for(let u=0;u<a.length;u++)_[u]=a.charCodeAt(u);_[a.length]=0;for(let u=0;u<h.length;u++)_[64+u]=h.charCodeAt(u);_[64+h.length]=0;let o=await O.digest("MD5",n),l=await O.importKey("raw",o,{name:"AES-ECB"},!1,["encrypt"]),x=await O.encrypt({name:"AES-ECB"},l,_);this._rfbCredentials.ardCredentials=x,this._rfbCredentials.ardPublicKey=r,this._resumeAuthentication()}_negotiateTightUnixAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1):(this._sock.sQpush32(this._rfbCredentials.username.length),this._sock.sQpush32(this._rfbCredentials.password.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.password),this._sock.flush(),this._rfbInitState="SecurityResult",!0)}_negotiateTightTunnels(t){let e={0:{vendor:"TGHT",signature:"NOTUNNEL"}},s={};for(let r=0;r<t;r++){let n=this._sock.rQshift32(),a=this._sock.rQshiftStr(4),h=this._sock.rQshiftStr(8);s[n]={vendor:a,signature:h}}return L("Server Tight tunnel types: "+s),s[1]&&s[1].vendor==="SICR"&&s[1].signature==="SCHANNEL"&&(L("Detected Siemens server. Assuming NOTUNNEL support."),s[0]={vendor:"TGHT",signature:"NOTUNNEL"}),s[0]?s[0].vendor!=e[0].vendor||s[0].signature!=e[0].signature?this._fail("Client's tunnel type had the incorrect vendor or signature"):(L("Selected tunnel type: "+e[0]),this._sock.sQpush32(0),this._sock.flush(),!1):this._fail("Server wanted tunnels, but doesn't support the notunnel type")}_negotiateTightAuth(){if(!this._rfbTightVNC){if(this._sock.rQwait("num tunnels",4))return!1;let r=this._sock.rQshift32();if(r>0&&this._sock.rQwait("tunnel capabilities",16*r,4))return!1;if(this._rfbTightVNC=!0,r>0)return this._negotiateTightTunnels(r),!1}if(this._sock.rQwait("sub auth count",4))return!1;let t=this._sock.rQshift32();if(t===0)return this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("sub auth capabilities",16*t,4))return!1;let e={STDVNOAUTH__:1,STDVVNCAUTH_:2,TGHTULGNAUTH:129},s=[];for(let r=0;r<t;r++){this._sock.rQshift32();let n=this._sock.rQshiftStr(12);s.push(n)}L("Server Tight authentication types: "+s);for(let r in e)if(s.indexOf(r)!=-1)switch(this._sock.sQpush32(e[r]),this._sock.flush(),L("Selected authentication type: "+r),r){case"STDVNOAUTH__":return this._rfbInitState="SecurityResult",!0;case"STDVVNCAUTH_":return this._rfbAuthScheme=hi,!0;case"TGHTULGNAUTH":return this._rfbAuthScheme=zr,!0;default:return this._fail("Unsupported tiny auth scheme (scheme: "+r+")")}return this._fail("No supported sub-auth types!")}_handleRSAAESCredentialsRequired(t){this.dispatchEvent(t)}_handleRSAAESServerVerification(t){this.dispatchEvent(t)}_negotiateRA2neAuth(){return this._rfbRSAAESAuthenticationState===null&&(this._rfbRSAAESAuthenticationState=new Xt(this._sock,()=>this._rfbCredentials),this._rfbRSAAESAuthenticationState.addEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.addEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired)),this._rfbRSAAESAuthenticationState.checkInternalEvents(),this._rfbRSAAESAuthenticationState.hasStarted||this._rfbRSAAESAuthenticationState.negotiateRA2neAuthAsync().catch(t=>{t.message!=="disconnect normally"&&this._fail(t.message)}).then(()=>(this._rfbInitState="SecurityResult",!0)).finally(()=>{this._rfbRSAAESAuthenticationState.removeEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.removeEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired),this._rfbRSAAESAuthenticationState=null}),!1}_negotiateMSLogonIIAuth(){if(this._sock.rQwait("mslogonii dh param",24))return!1;if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;let t=this._sock.rQshiftBytes(8),e=this._sock.rQshiftBytes(8),s=this._sock.rQshiftBytes(8),r=O.generateKey({name:"DH",g:t,p:e},!0,["deriveBits"]),n=O.exportKey("raw",r.publicKey),a=O.deriveBits({name:"DH",public:s},r.privateKey,64),h=O.importKey("raw",a,{name:"DES-CBC"},!1,["encrypt"]),_=he(this._rfbCredentials.username).substring(0,255),o=he(this._rfbCredentials.password).substring(0,63),l=new Uint8Array(256),x=new Uint8Array(64);window.crypto.getRandomValues(l),window.crypto.getRandomValues(x);for(let u=0;u<_.length;u++)l[u]=_.charCodeAt(u);l[_.length]=0;for(let u=0;u<o.length;u++)x[u]=o.charCodeAt(u);return x[o.length]=0,l=O.encrypt({name:"DES-CBC",iv:a},h,l),x=O.encrypt({name:"DES-CBC",iv:a},h,x),this._sock.sQpushBytes(n),this._sock.sQpushBytes(l),this._sock.sQpushBytes(x),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateAuthentication(){switch(this._rfbAuthScheme){case Ir:return this._rfbVersion>=3.8?this._rfbInitState="SecurityResult":this._rfbInitState="ClientInitialisation",!0;case Ur:return this._negotiateXvpAuth();case Nr:return this._negotiateARDAuth();case hi:return this._negotiateStdVNCAuth();case Hr:return this._negotiateTightAuth();case Yi:return this._negotiateVeNCryptAuth();case Gr:return this._negotiatePlainAuth();case zr:return this._negotiateTightUnixAuth();case Pr:return this._negotiateRA2neAuth();case Or:return this._negotiateMSLogonIIAuth();default:return this._fail("Unsupported auth scheme (scheme: "+this._rfbAuthScheme+")")}}_handleSecurityResult(){if(this._sock.rQwait("VNC auth response ",4))return!1;let t=this._sock.rQshift32();return t===0?(this._rfbInitState="ClientInitialisation",L("Authentication OK"),!0):this._rfbVersion>=3.8?(this._rfbInitState="SecurityReason",this._securityContext="security result",this._securityStatus=t,!0):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:t}})),this._fail("Security handshake failed"))}_negotiateServerInit(){if(this._sock.rQwait("server initialization",24))return!1;let t=this._sock.rQshift16(),e=this._sock.rQshift16(),s=this._sock.rQshift8(),r=this._sock.rQshift8(),n=this._sock.rQshift8(),a=this._sock.rQshift8(),h=this._sock.rQshift16(),_=this._sock.rQshift16(),o=this._sock.rQshift16(),l=this._sock.rQshift8(),x=this._sock.rQshift8(),u=this._sock.rQshift8();this._sock.rQskipBytes(3);let d=this._sock.rQshift32();if(this._sock.rQwait("server init name",d,24))return!1;let X=this._sock.rQshiftStr(d);if(X=Bt(X,!0),this._rfbTightVNC){if(this._sock.rQwait("TightVNC extended server init header",8,24+d))return!1;let F=this._sock.rQshift16(),A=this._sock.rQshift16(),k=this._sock.rQshift16();this._sock.rQskipBytes(2);let T=(F+A+k)*16;if(this._sock.rQwait("TightVNC extended server init header",T,32+d))return!1;this._sock.rQskipBytes(16*F),this._sock.rQskipBytes(16*A),this._sock.rQskipBytes(16*k)}return V("Screen: "+t+"x"+e+", bpp: "+s+", depth: "+r+", bigEndian: "+n+", trueColor: "+a+", redMax: "+h+", greenMax: "+_+", blueMax: "+o+", redShift: "+l+", greenShift: "+x+", blueShift: "+u),this._setDesktopName(X),this._resize(t,e),this._viewOnly||this._keyboard.grab(),this._fbDepth=24,this._fbName==="Intel(r) AMT KVM"&&(W("Intel AMT KVM only supports 8/16 bit depths. Using low color mode."),this._fbDepth=8),i.messages.pixelFormat(this._sock,this._fbDepth,!0),this._sendEncodings(),i.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight),this._updateConnectionState("connected"),!0}_sendEncodings(){let t=[];t.push(R.encodingCopyRect),this._fbDepth==24&&(fi&&t.push(R.encodingH264),t.push(R.encodingTight),t.push(R.encodingTightPNG),t.push(R.encodingZRLE),t.push(R.encodingJPEG),t.push(R.encodingHextile),t.push(R.encodingRRE),t.push(R.encodingZlib)),t.push(R.encodingRaw),t.push(R.pseudoEncodingQualityLevel0+this._qualityLevel),t.push(R.pseudoEncodingCompressLevel0+this._compressionLevel),t.push(R.pseudoEncodingDesktopSize),t.push(R.pseudoEncodingLastRect),t.push(R.pseudoEncodingQEMUExtendedKeyEvent),t.push(R.pseudoEncodingQEMULedEvent),t.push(R.pseudoEncodingExtendedDesktopSize),t.push(R.pseudoEncodingXvp),t.push(R.pseudoEncodingFence),t.push(R.pseudoEncodingContinuousUpdates),t.push(R.pseudoEncodingDesktopName),t.push(R.pseudoEncodingExtendedClipboard),t.push(R.pseudoEncodingExtendedMouseButtons),this._fbDepth==24&&(t.push(R.pseudoEncodingVMwareCursor),t.push(R.pseudoEncodingCursor)),i.messages.clientEncodings(this._sock,t)}_initMsg(){switch(this._rfbInitState){case"ProtocolVersion":return this._negotiateProtocolVersion();case"Security":return this._negotiateSecurity();case"Authentication":return this._negotiateAuthentication();case"SecurityResult":return this._handleSecurityResult();case"SecurityReason":return this._handleSecurityReason();case"ClientInitialisation":return this._sock.sQpush8(this._shared?1:0),this._sock.flush(),this._rfbInitState="ServerInitialisation",!0;case"ServerInitialisation":return this._negotiateServerInit();default:return this._fail("Unknown init state (state: "+this._rfbInitState+")")}}_resumeAuthentication(){setTimeout(this._initMsg.bind(this),0)}_handleSetColourMapMsg(){return L("SetColorMapEntries"),this._fail("Unexpected SetColorMapEntries message")}_handleServerCutText(){if(L("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);let t=this._sock.rQshift32();if(t=it(t),this._sock.rQwait("ServerCutText content",Math.abs(t),8))return!1;if(t>=0){let e=this._sock.rQshiftStr(t);if(this._viewOnly)return!0;this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:e}}))}else{t=Math.abs(t);let e=this._sock.rQshift32(),s=e&65535,r=e&4278190080;if(!!(r&Vr)){this._clipboardServerCapabilitiesFormats={},this._clipboardServerCapabilitiesActions={};for(let h=0;h<=15;h++){let _=1<<h;s&_&&(this._clipboardServerCapabilitiesFormats[_]=!0,this._sock.rQshift32())}for(let h=24;h<=31;h++){let _=1<<h;this._clipboardServerCapabilitiesActions[_]=!!(r&_)}let a=[Vr,li,Wr,Rt,ci];i.messages.extendedClipboardCaps(this._sock,a,{extendedClipboardFormatText:0})}else if(r===li){if(this._viewOnly)return!0;this._clipboardText!=null&&this._clipboardServerCapabilitiesActions[ci]&&s&de&&i.messages.extendedClipboardProvide(this._sock,[de],[this._clipboardText])}else if(r===Wr){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[Rt]&&(this._clipboardText!=null?i.messages.extendedClipboardNotify(this._sock,[de]):i.messages.extendedClipboardNotify(this._sock,[]))}else if(r===Rt){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[li]&&s&de&&i.messages.extendedClipboardRequest(this._sock,[de])}else if(r===ci){if(this._viewOnly||!(s&de))return!0;this._clipboardText=null;let a=this._sock.rQshiftBytes(t-4),h=new le,_=null;h.setInput(a);for(let o=0;o<=15;o++){let l=1<<o;if(s&l){let x=0,u=h.inflate(4);x|=u[0]<<24,x|=u[1]<<16,x|=u[2]<<8,x|=u[3];let d=h.inflate(x);l===de&&(_=d)}}if(h.setInput(null),_!==null){let o="";for(let l=0;l<_.length;l++)o+=String.fromCharCode(_[l]);_=o,_=Bt(_),_.length>0&&_.charAt(_.length-1)==="\0"&&(_=_.slice(0,-1)),_=_.replaceAll(`\r
|
|
`,`
|
|
`),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:_}}))}}else return this._fail("Unexpected action in extended clipboard message: "+r)}return!0}_handleServerFenceMsg(){if(this._sock.rQwait("ServerFence header",8,1))return!1;this._sock.rQskipBytes(3);let t=this._sock.rQshift32(),e=this._sock.rQshift8();if(this._sock.rQwait("ServerFence payload",e,9))return!1;e>64&&(W("Bad payload length ("+e+") in fence response"),e=64);let s=this._sock.rQshiftStr(e);return this._supportsFence=!0,t&1<<31?(t&=3,i.messages.clientFence(this._sock,t,s),!0):this._fail("Unexpected fence response")}_handleXvpMsg(){if(this._sock.rQwait("XVP version and message",3,1))return!1;this._sock.rQskipBytes(1);let t=this._sock.rQshift8(),e=this._sock.rQshift8();switch(e){case 0:U("XVP operation failed");break;case 1:this._rfbXvpVer=t,V("XVP extensions enabled (version "+this._rfbXvpVer+")"),this._setCapability("power",!0);break;default:this._fail("Illegal server XVP message (msg: "+e+")");break}return!0}_normalMsg(){let t;this._FBU.rects>0?t=0:t=this._sock.rQshift8();let e,s;switch(t){case 0:return s=this._framebufferUpdate(),s&&!this._enabledContinuousUpdates&&i.messages.fbUpdateRequest(this._sock,!0,0,0,this._fbWidth,this._fbHeight),s;case 1:return this._handleSetColourMapMsg();case 2:return L("Bell"),this.dispatchEvent(new CustomEvent("bell",{detail:{}})),!0;case 3:return this._handleServerCutText();case 150:return e=!this._supportsContinuousUpdates,this._supportsContinuousUpdates=!0,this._enabledContinuousUpdates=!1,e&&(this._enabledContinuousUpdates=!0,this._updateContinuousUpdates(),V("Enabling continuous updates.")),!0;case 248:return this._handleServerFenceMsg();case 250:return this._handleXvpMsg();default:return this._fail("Unexpected server message (type "+t+")"),L("sock.rQpeekBytes(30): "+this._sock.rQpeekBytes(30)),!0}}_framebufferUpdate(){if(this._FBU.rects===0){if(this._sock.rQwait("FBU header",3,1))return!1;if(this._sock.rQskipBytes(1),this._FBU.rects=this._sock.rQshift16(),this._display.pending())return this._flushing=!0,this._display.flush().then(()=>{this._flushing=!1,this._sock.rQwait("message",1)||this._handleMessage()}),!1}for(;this._FBU.rects>0;){if(this._FBU.encoding===null){if(this._sock.rQwait("rect header",12))return!1;this._FBU.x=this._sock.rQshift16(),this._FBU.y=this._sock.rQshift16(),this._FBU.width=this._sock.rQshift16(),this._FBU.height=this._sock.rQshift16(),this._FBU.encoding=this._sock.rQshift32(),this._FBU.encoding>>=0}if(!this._handleRect())return!1;this._FBU.rects--,this._FBU.encoding=null}return this._display.flip(),!0}_handleRect(){switch(this._FBU.encoding){case R.pseudoEncodingLastRect:return this._FBU.rects=1,!0;case R.pseudoEncodingVMwareCursor:return this._handleVMwareCursor();case R.pseudoEncodingCursor:return this._handleCursor();case R.pseudoEncodingQEMUExtendedKeyEvent:return this._qemuExtKeyEventSupported=!0,!0;case R.pseudoEncodingDesktopName:return this._handleDesktopName();case R.pseudoEncodingDesktopSize:return this._resize(this._FBU.width,this._FBU.height),!0;case R.pseudoEncodingExtendedDesktopSize:return this._handleExtendedDesktopSize();case R.pseudoEncodingExtendedMouseButtons:return this._extendedPointerEventSupported=!0,!0;case R.pseudoEncodingQEMULedEvent:return this._handleLedEvent();default:return this._handleDataRect()}}_handleVMwareCursor(){let t=this._FBU.x,e=this._FBU.y,s=this._FBU.width,r=this._FBU.height;if(this._sock.rQwait("VMware cursor encoding",1))return!1;let n=this._sock.rQshift8();this._sock.rQshift8();let a,h=4;if(n==0){if(a=new Array(s*r*h),this._sock.rQwait("VMware cursor classic encoding",s*r*h*2,2))return!1;let o=new Array(s*r);for(let x=0;x<s*r;x++)o[x]=this._sock.rQshift32();let l=new Array(s*r);for(let x=0;x<s*r;x++)l[x]=this._sock.rQshift32();for(let x=0;x<s*r;x++)if(o[x]==0){let u=l[x],d=u>>8&255,X=u>>16&255,F=u>>24&255;a[x*h]=d,a[x*h+1]=X,a[x*h+2]=F,a[x*h+3]=255}else(o[x]&-256)==-256?l[x]==0?(a[x*h]=0,a[x*h+1]=0,a[x*h+2]=0,a[x*h+3]=0):(l[x]&-256,a[x*h]=0,a[x*h+1]=0,a[x*h+2]=0,a[x*h+3]=255):(a[x*h]=0,a[x*h+1]=0,a[x*h+2]=0,a[x*h+3]=255)}else if(n==1){if(this._sock.rQwait("VMware cursor alpha encoding",s*r*4,2))return!1;a=new Array(s*r*h);for(let _=0;_<s*r;_++){let o=this._sock.rQshift32();a[_*4]=o>>24&255,a[_*4+1]=o>>16&255,a[_*4+2]=o>>8&255,a[_*4+3]=o&255}}else return W("The given cursor type is not supported: "+n+" given."),!1;return this._updateCursor(a,t,e,s,r),!0}_handleCursor(){let t=this._FBU.x,e=this._FBU.y,s=this._FBU.width,r=this._FBU.height,n=s*r*4,a=Math.ceil(s/8)*r,h=n+a;if(this._sock.rQwait("cursor encoding",h))return!1;let _=this._sock.rQshiftBytes(n),o=this._sock.rQshiftBytes(a),l=new Uint8Array(s*r*4),x=0;for(let u=0;u<r;u++)for(let d=0;d<s;d++){let X=u*Math.ceil(s/8)+Math.floor(d/8),F=o[X]<<d%8&128?255:0;l[x]=_[x+2],l[x+1]=_[x+1],l[x+2]=_[x],l[x+3]=F,x+=4}return this._updateCursor(l,t,e,s,r),!0}_handleDesktopName(){if(this._sock.rQwait("DesktopName",4))return!1;let t=this._sock.rQshift32();if(this._sock.rQwait("DesktopName",t,4))return!1;let e=this._sock.rQshiftStr(t);return e=Bt(e,!0),this._setDesktopName(e),!0}_handleLedEvent(){if(this._sock.rQwait("LED status",1))return!1;let t=this._sock.rQshift8(),e=!!(t&2),s=!!(t&4);return this._remoteCapsLock=s,this._remoteNumLock=e,!0}_handleExtendedDesktopSize(){if(this._sock.rQwait("ExtendedDesktopSize",4))return!1;let t=this._sock.rQpeek8(),e=4+t*16;if(this._sock.rQwait("ExtendedDesktopSize",e))return!1;let s=!this._supportsSetDesktopSize;this._supportsSetDesktopSize=!0,this._sock.rQskipBytes(1),this._sock.rQskipBytes(3);for(let r=0;r<t;r+=1)r===0?(this._screenID=this._sock.rQshift32(),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._screenFlags=this._sock.rQshift32()):this._sock.rQskipBytes(16);if(this._FBU.x===1&&(this._pendingRemoteResize=!1),this._FBU.x===1&&this._FBU.y!==0){let r="";switch(this._FBU.y){case 1:r="Resize is administratively prohibited";break;case 2:r="Out of resources";break;case 3:r="Invalid screen layout";break;default:r="Unknown reason";break}W("Server did not accept the resize request: "+r)}else this._resize(this._FBU.width,this._FBU.height);return s&&this._requestRemoteResize(),this._FBU.x===1&&this._FBU.y===0&&this._requestRemoteResize(),!0}_handleDataRect(){let t=this._decoders[this._FBU.encoding];if(!t)return this._fail("Unsupported encoding (encoding: "+this._FBU.encoding+")"),!1;try{return t.decodeRect(this._FBU.x,this._FBU.y,this._FBU.width,this._FBU.height,this._sock,this._display,this._fbDepth)}catch(e){return this._fail("Error decoding rect: "+e),!1}}_updateContinuousUpdates(){this._enabledContinuousUpdates&&i.messages.enableContinuousUpdates(this._sock,!0,0,0,this._fbWidth,this._fbHeight)}_resize(t,e){this._fbWidth=t,this._fbHeight=e,this._display.resize(this._fbWidth,this._fbHeight),this._updateClip(),this._updateScale(),this._updateContinuousUpdates(),this._saveExpectedClientSize()}_xvpOp(t,e){this._rfbXvpVer<t||(V("Sending XVP operation "+e+" (version "+t+")"),i.messages.xvpOp(this._sock,t,e))}_updateCursor(t,e,s,r,n){this._cursorImage={rgbaPixels:t,hotx:e,hoty:s,w:r,h:n},this._refreshCursor()}_shouldShowDotCursor(){if(!this._showDotCursor)return!1;for(let t=3;t<this._cursorImage.rgbaPixels.length;t+=4)if(this._cursorImage.rgbaPixels[t])return!1;return!0}_refreshCursor(){if(this._rfbConnectionState!=="connecting"&&this._rfbConnectionState!=="connected")return;let t=this._shouldShowDotCursor()?i.cursors.dot:this._cursorImage;this._cursor.change(t.rgbaPixels,t.hotx,t.hoty,t.w,t.h)}static genDES(t,e){let s=t.split("").map(n=>n.charCodeAt(0)),r=O.importKey("raw",s,{name:"DES-ECB"},!1,["encrypt"]);return O.encrypt({name:"DES-ECB"},r,e)}};se.messages={keyEvent(i,t,e){i.sQpush8(4),i.sQpush8(e),i.sQpush16(0),i.sQpush32(t),i.flush()},QEMUExtendedKeyEvent(i,t,e,s){function r(a){let h=s>>8,_=s&255;return h===224&&_<127?_|128:a}i.sQpush8(255),i.sQpush8(0),i.sQpush16(e),i.sQpush32(t);let n=r(s);i.sQpush32(n),i.flush()},pointerEvent(i,t,e,s){i.sQpush8(5),s=s&127,i.sQpush8(s),i.sQpush16(t),i.sQpush16(e),i.flush()},extendedPointerEvent(i,t,e,s){i.sQpush8(5);let r=s>>7&255;if(r&252)throw new Error("Invalid mouse button mask: "+s);let n=s&127;n|=128,i.sQpush8(n),i.sQpush16(t),i.sQpush16(e),i.sQpush8(r),i.flush()},_buildExtendedClipboardFlags(i,t){let e=new Uint8Array(4),s=0,r=0;for(let n=0;n<i.length;n++)r|=i[n];for(let n=0;n<t.length;n++)s|=t[n];return e[0]=r>>24,e[1]=0,e[2]=0,e[3]=s,e},extendedClipboardProvide(i,t,e){let s=new gt,r=[];for(let h=0;h<t.length;h++){if(t[h]!=de)throw new Error("Unsupported extended clipboard format for Provide message.");e[h]=e[h].replace(/\r\n|\r|\n/gm,`\r
|
|
`);let _=he(e[h]+"\0");r.push(_.length>>24&255,_.length>>16&255,_.length>>8&255,_.length&255);for(let o=0;o<_.length;o++)r.push(_.charCodeAt(o))}let n=s.deflate(new Uint8Array(r)),a=new Uint8Array(4+n.length);a.set(se.messages._buildExtendedClipboardFlags([ci],t)),a.set(n,4),se.messages.clientCutText(i,a,!0)},extendedClipboardNotify(i,t){let e=se.messages._buildExtendedClipboardFlags([Rt],t);se.messages.clientCutText(i,e,!0)},extendedClipboardRequest(i,t){let e=se.messages._buildExtendedClipboardFlags([li],t);se.messages.clientCutText(i,e,!0)},extendedClipboardCaps(i,t,e){let s=Object.keys(e),r=new Uint8Array(4+4*s.length);s.map(a=>parseInt(a)),s.sort((a,h)=>a-h),r.set(se.messages._buildExtendedClipboardFlags(t,[]));let n=4;for(let a=0;a<s.length;a++)r[n]=e[s[a]]>>24,r[n+1]=e[s[a]]>>16,r[n+2]=e[s[a]]>>8,r[n+3]=e[s[a]]>>0,n+=4,r[3]|=1<<s[a];se.messages.clientCutText(i,r,!0)},clientCutText(i,t,e=!1){i.sQpush8(6),i.sQpush8(0),i.sQpush8(0),i.sQpush8(0);let s;e?s=ji(-t.length):s=t.length,i.sQpush32(s),i.sQpushBytes(t),i.flush()},setDesktopSize(i,t,e,s,r){i.sQpush8(251),i.sQpush8(0),i.sQpush16(t),i.sQpush16(e),i.sQpush8(1),i.sQpush8(0),i.sQpush32(s),i.sQpush16(0),i.sQpush16(0),i.sQpush16(t),i.sQpush16(e),i.sQpush32(r),i.flush()},clientFence(i,t,e){i.sQpush8(248),i.sQpush8(0),i.sQpush8(0),i.sQpush8(0),i.sQpush32(t),i.sQpush8(e.length),i.sQpushString(e),i.flush()},enableContinuousUpdates(i,t,e,s,r,n){i.sQpush8(150),i.sQpush8(t),i.sQpush16(e),i.sQpush16(s),i.sQpush16(r),i.sQpush16(n),i.flush()},pixelFormat(i,t,e){let s;t>16?s=32:t>8?s=16:s=8;let r=Math.floor(t/3);i.sQpush8(0),i.sQpush8(0),i.sQpush8(0),i.sQpush8(0),i.sQpush8(s),i.sQpush8(t),i.sQpush8(0),i.sQpush8(e?1:0),i.sQpush16((1<<r)-1),i.sQpush16((1<<r)-1),i.sQpush16((1<<r)-1),i.sQpush8(r*0),i.sQpush8(r*1),i.sQpush8(r*2),i.sQpush8(0),i.sQpush8(0),i.sQpush8(0),i.flush()},clientEncodings(i,t){i.sQpush8(2),i.sQpush8(0),i.sQpush16(t.length);for(let e=0;e<t.length;e++)i.sQpush32(t[e]);i.flush()},fbUpdateRequest(i,t,e,s,r,n){typeof e>"u"&&(e=0),typeof s>"u"&&(s=0),i.sQpush8(3),i.sQpush8(t?1:0),i.sQpush16(e),i.sQpush16(s),i.sQpush16(r),i.sQpush16(n),i.flush()},xvpOp(i,t,e){i.sQpush8(250),i.sQpush8(0),i.sQpush8(t),i.sQpush8(e),i.flush()}};se.cursors={none:{rgbaPixels:new Uint8Array,w:0,h:0,hotx:0,hoty:0},dot:{rgbaPixels:new Uint8Array([255,255,255,255,0,0,0,255,255,255,255,255,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,255,255,255,255,255]),w:3,h:3,hotx:1,hoty:1}};var Lo=se;export{Lo as default};
|