9remote 2.0.70 → 2.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.cjs CHANGED
@@ -1,29 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  const __importMetaUrl = require('url').pathToFileURL(__filename).href;
3
- var Ks=Object.create;var ur=Object.defineProperty;var Gs=Object.getOwnPropertyDescriptor;var Ws=Object.getOwnPropertyNames;var Vs=Object.getPrototypeOf,Ys=Object.prototype.hasOwnProperty;var Qs=(e,n)=>()=>(e&&(n=e(e=0)),n);var ae=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),qs=(e,n)=>{for(var r in n)ur(e,r,{get:n[r],enumerable:!0})},Js=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Ws(n))!Ys.call(e,t)&&t!==r&&ur(e,t,{get:()=>n[t],enumerable:!(o=Gs(n,t))||o.enumerable});return e};var A=(e,n,r)=>(r=e!=null?Ks(Vs(e)):{},Js(n||!e||!e.__esModule?ur(r,"default",{value:e,enumerable:!0}):r,e));var yo=ae((Qt,dr)=>{(function(e,n){typeof Qt=="object"&&typeof dr=="object"?dr.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof Qt=="object"?Qt["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(Qt,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};r.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var h,v,T,P=f&u.F,x=f&u.G,b=f&u.S,k=f&u.P,S=f&u.B,g=f&u.W,_=x?s:s[p]||(s[p]={}),O=_[l],D=x?i:b?i[p]:(i[p]||{})[l];x&&(d=p);for(h in d)v=!P&&D&&D[h]!==void 0,v&&h in _||(T=v?D[h]:d[h],_[h]=x&&typeof D[h]!="function"?d[h]:S&&v?a(T,i):g&&D[h]==T?(function(j){var de=function(me,z,ke){if(this instanceof j){switch(arguments.length){case 0:return new j;case 1:return new j(me);case 2:return new j(me,z)}return new j(me,z,ke)}return j.apply(this,arguments)};return de[l]=j[l],de})(T):k&&typeof T=="function"?a(Function.call,T):T,k&&((_.virtual||(_.virtual={}))[h]=T,f&u.R&&O&&!O[h]&&c(O,h,T)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),u=t(10),f=t(45),p=t(18),d=t(52),h=t(1)("iterator"),v=!([].keys&&"next"in[].keys()),T="@@iterator",P="keys",x="values",b=function(){return this};r.exports=function(k,S,g,_,O,D,j){f(g,S,_);var de,me,z,ke=function(w){if(!v&&w in ee)return ee[w];switch(w){case P:return function(){return new g(this,w)};case x:return function(){return new g(this,w)}}return function(){return new g(this,w)}},ht=S+" Iterator",et=O==x,jt=!1,ee=k.prototype,Ne=ee[h]||ee[T]||O&&ee[O],ie=Ne||ke(O),Kt=O?et?ke("entries"):ie:void 0,y=S=="Array"&&ee.entries||Ne;if(y&&(z=d(y.call(new k)),z!==Object.prototype&&(p(z,ht,!0),i||l(z,h)||c(z,h,b))),et&&Ne&&Ne.name!==x&&(jt=!0,ie=function(){return Ne.call(this)}),i&&!j||!v&&!jt&&ee[h]||c(ee,h,ie),u[S]=ie,u[ht]=b,O)if(de={values:et?ie:ke(x),keys:D?ie:ke(P),entries:Kt},j)for(me in de)me in ee||a(ee,me,de[me]);else s(s.P+s.F*(v||jt),S,de);return de}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,t){var i,s,a,c=t(7),l=t(41),u=t(25),f=t(16),p=t(2),d=p.process,h=p.setImmediate,v=p.clearImmediate,T=p.MessageChannel,P=0,x={},b="onreadystatechange",k=function(){var g=+this;if(x.hasOwnProperty(g)){var _=x[g];delete x[g],_()}},S=function(g){k.call(g.data)};h&&v||(h=function(g){for(var _=[],O=1;arguments.length>O;)_.push(arguments[O++]);return x[++P]=function(){l(typeof g=="function"?g:Function(g),_)},i(P),P},v=function(g){delete x[g]},t(11)(d)=="process"?i=function(g){d.nextTick(c(k,g,1))}:T?(s=new T,a=s.port2,s.port1.onmessage=S,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(g){p.postMessage(g+"","*")},p.addEventListener("message",S,!1)):i=b in f("script")?function(g){u.appendChild(f("script"))[b]=function(){u.removeChild(this),k.call(g)}}:function(g){setTimeout(c(k,g,1),0)}),r.exports={set:h,clear:v}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(b){return b&&b.__esModule?b:{default:b}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(b){return(0,h.createHash)("sha256").update(b).digest("hex")}function c(b){switch(T){case"darwin":return b.split("IOPlatformUUID")[1].split(`
4
- `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return b.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(b){var k=c((0,d.execSync)(x[T]).toString());return b?k:a(k)}function u(b){return new p.default(function(k,S){return(0,d.exec)(x[T],{},function(g,_,O){if(g)return S(new Error("Error while obtaining machine id: "+g.stack));var D=c(_.toString());return k(b?D:a(D))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),h=t(71),v=process,T=v.platform,P={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},x={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:P[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),v=a(f,h);if(c&&u!=u){for(;h>v;)if(p=d[v++],p!=p)return!0}else for(;h>v;v++)if((c||v in d)&&d[v]===u)return c||v||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(h,v,T,P,x){var b,k,S,g,_=x?function(){return h}:u(h),O=i(T,P,v?2:1),D=0;if(typeof _!="function")throw TypeError(h+" is not iterable!");if(a(_)){for(b=l(h.length);b>D;D++)if(g=v?O(c(k=h[D])[0],k[1]):O(h[D]),g===f||g===p)return g}else for(S=_.call(h);!(k=S.next()).done;)if(g=s(S,O,k.value,v),g===f||g===p)return g};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var x,b;for(u&&(x=c.domain)&&x.exit();f;){b=f.fn,f=f.next;try{b()}catch(k){throw f?d():p=void 0,k}}p=void 0,x&&x.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var v=!0,T=document.createTextNode("");new a(h).observe(T,{characterData:!0}),d=function(){T.data=v=!v}}else if(l&&l.resolve){var P=l.resolve();d=function(){P.then(h)}}else d=function(){s.call(i,h)};return function(x){var b={fn:x,next:void 0};p&&(p.next=b),f||(f=b,d()),p=b}}},function(r,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),h=a.length,v=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+v),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,t){var i=t(12),s=t(3),a=t(54);r.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,t){r.exports=t(5)},function(r,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),h=(t(3),t(14)),v=t(38),T=t(40),P=(t(58).set,t(60)),x=t(30).set,b=t(48)(),k="Promise",S=l.TypeError,_=l.process,g=l[k],_=l.process,O=f(_)=="process",D=function(){},j=!!(function(){try{var y=g.resolve(1),w=(y.constructor={})[t(1)("species")]=function(R){R(D,D)};return(O||typeof PromiseRejectionEvent=="function")&&y.then(D)instanceof w}catch{}})(),de=function(y,w){return y===w||y===g&&w===a},me=function(y){var w;return!(!d(y)||typeof(w=y.then)!="function")&&w},z=function(y){return de(g,y)?new ke(y):new s(y)},ke=s=function(y){var w,R;this.promise=new y(function($,Y){if(w!==void 0||R!==void 0)throw S("Bad Promise constructor");w=$,R=Y}),this.resolve=h(w),this.reject=h(R)},ht=function(y){try{y()}catch(w){return{error:w}}},et=function(y,w){if(!y._n){y._n=!0;var R=y._c;b(function(){for(var $=y._v,Y=y._s==1,tt=0,gt=function(De){var ve,bn,Gt=Y?De.ok:De.fail,Wt=De.resolve,yt=De.reject,An=De.domain;try{Gt?(Y||(y._h==2&&Ne(y),y._h=1),Gt===!0?ve=$:(An&&An.enter(),ve=Gt($),An&&An.exit()),ve===De.promise?yt(S("Promise-chain cycle")):(bn=me(ve))?bn.call(ve,Wt,yt):Wt(ve)):yt($)}catch(js){yt(js)}};R.length>tt;)gt(R[tt++]);y._c=[],y._n=!1,w&&!y._h&&jt(y)})}},jt=function(y){x.call(l,function(){var w,R,$,Y=y._v;if(ee(y)&&(w=ht(function(){O?_.emit("unhandledRejection",Y,y):(R=l.onunhandledrejection)?R({promise:y,reason:Y}):($=l.console)&&$.error&&$.error("Unhandled promise rejection",Y)}),y._h=O||ee(y)?2:1),y._a=void 0,w)throw w.error})},ee=function(y){if(y._h==1)return!1;for(var w,R=y._a||y._c,$=0;R.length>$;)if(w=R[$++],w.fail||!ee(w.promise))return!1;return!0},Ne=function(y){x.call(l,function(){var w;O?_.emit("rejectionHandled",y):(w=l.onrejectionhandled)&&w({promise:y,reason:y._v})})},ie=function(y){var w=this;w._d||(w._d=!0,w=w._w||w,w._v=y,w._s=2,w._a||(w._a=w._c.slice()),et(w,!0))},Kt=function(y){var w,R=this;if(!R._d){R._d=!0,R=R._w||R;try{if(R===y)throw S("Promise can't be resolved itself");(w=me(y))?b(function(){var $={_w:R,_d:!1};try{w.call(y,u(Kt,$,1),u(ie,$,1))}catch(Y){ie.call($,Y)}}):(R._v=y,R._s=1,et(R,!1))}catch($){ie.call({_w:R,_d:!1},$)}}};j||(g=function(y){v(this,g,k,"_h"),h(y),i.call(this);try{y(u(Kt,this,1),u(ie,this,1))}catch(w){ie.call(this,w)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(g.prototype,{then:function(y,w){var R=z(P(this,g));return R.ok=typeof y!="function"||y,R.fail=typeof w=="function"&&w,R.domain=O?_.domain:void 0,this._c.push(R),this._a&&this._a.push(R),this._s&&et(this,!1),R.promise},catch:function(y){return this.then(void 0,y)}}),ke=function(){var y=new i;this.promise=y,this.resolve=u(Kt,y,1),this.reject=u(ie,y,1)}),p(p.G+p.W+p.F*!j,{Promise:g}),t(18)(g,k),t(59)(k),a=t(6)[k],p(p.S+p.F*!j,k,{reject:function(y){var w=z(this),R=w.reject;return R(y),w.promise}}),p(p.S+p.F*(c||!j),k,{resolve:function(y){if(y instanceof g&&de(y.constructor,this))return y;var w=z(this),R=w.resolve;return R(y),w.promise}}),p(p.S+p.F*!(j&&t(46)(function(y){g.all(y).catch(D)})),k,{all:function(y){var w=this,R=z(w),$=R.resolve,Y=R.reject,tt=ht(function(){var gt=[],De=0,ve=1;T(y,!1,function(bn){var Gt=De++,Wt=!1;gt.push(void 0),ve++,w.resolve(bn).then(function(yt){Wt||(Wt=!0,gt[Gt]=yt,--ve||$(gt))},Y)}),--ve||$(gt)});return tt&&Y(tt.error),R.promise},race:function(y){var w=this,R=z(w),$=R.reject,Y=ht(function(){T(y,!1,function(tt){w.resolve(tt).then(R.resolve,$)})});return Y&&$(Y.error),R.promise}})},function(r,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var Xi={};qs(Xi,{initTray:()=>Yr,killTray:()=>yn,openBrowser:()=>wn,showTrayNotification:()=>Qr,updateTrayTooltip:()=>or});function Ki(e){for(let n of e)try{if(Nt.default.existsSync(n))return n}catch{}return null}function hc(){if(process.platform==="win32"){for(let e of Qi)try{if(Nt.default.existsSync(e))return Nt.default.readFileSync(e).toString("base64")}catch{}return ji}return ji}function gc(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function qi(){let{port:e,tunnelUrl:n,running:r}=Dt,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
3
+ var Hs=Object.create;var ur=Object.defineProperty;var js=Object.getOwnPropertyDescriptor;var Ks=Object.getOwnPropertyNames;var Gs=Object.getPrototypeOf,Ws=Object.prototype.hasOwnProperty;var Vs=(e,n)=>()=>(e&&(n=e(e=0)),n);var ce=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),Ys=(e,n)=>{for(var r in n)ur(e,r,{get:n[r],enumerable:!0})},qs=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Ks(n))!Ws.call(e,t)&&t!==r&&ur(e,t,{get:()=>n[t],enumerable:!(o=js(n,t))||o.enumerable});return e};var A=(e,n,r)=>(r=e!=null?Hs(Gs(e)):{},qs(n||!e||!e.__esModule?ur(r,"default",{value:e,enumerable:!0}):r,e));var go=ce((Yt,dr)=>{(function(e,n){typeof Yt=="object"&&typeof dr=="object"?dr.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof Yt=="object"?Yt["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(Yt,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};r.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var h,v,T,P=f&u.F,x=f&u.G,b=f&u.S,k=f&u.P,S=f&u.B,g=f&u.W,_=x?s:s[p]||(s[p]={}),O=_[l],F=x?i:b?i[p]:(i[p]||{})[l];x&&(d=p);for(h in d)v=!P&&F&&F[h]!==void 0,v&&h in _||(T=v?F[h]:d[h],_[h]=x&&typeof F[h]!="function"?d[h]:S&&v?a(T,i):g&&F[h]==T?(function(j){var de=function(me,ee,ke){if(this instanceof j){switch(arguments.length){case 0:return new j;case 1:return new j(me);case 2:return new j(me,ee)}return new j(me,ee,ke)}return j.apply(this,arguments)};return de[l]=j[l],de})(T):k&&typeof T=="function"?a(Function.call,T):T,k&&((_.virtual||(_.virtual={}))[h]=T,f&u.R&&O&&!O[h]&&c(O,h,T)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),u=t(10),f=t(45),p=t(18),d=t(52),h=t(1)("iterator"),v=!([].keys&&"next"in[].keys()),T="@@iterator",P="keys",x="values",b=function(){return this};r.exports=function(k,S,g,_,O,F,j){f(g,S,_);var de,me,ee,ke=function(w){if(!v&&w in te)return te[w];switch(w){case P:return function(){return new g(this,w)};case x:return function(){return new g(this,w)}}return function(){return new g(this,w)}},gt=S+" Iterator",et=O==x,Ht=!1,te=k.prototype,Ne=te[h]||te[T]||O&&te[O],se=Ne||ke(O),jt=O?et?ke("entries"):se:void 0,y=S=="Array"&&te.entries||Ne;if(y&&(ee=d(y.call(new k)),ee!==Object.prototype&&(p(ee,gt,!0),i||l(ee,h)||c(ee,h,b))),et&&Ne&&Ne.name!==x&&(Ht=!0,se=function(){return Ne.call(this)}),i&&!j||!v&&!Ht&&te[h]||c(te,h,se),u[S]=se,u[gt]=b,O)if(de={values:et?se:ke(x),keys:F?se:ke(P),entries:jt},j)for(me in de)me in te||a(te,me,de[me]);else s(s.P+s.F*(v||Ht),S,de);return de}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,t){var i,s,a,c=t(7),l=t(41),u=t(25),f=t(16),p=t(2),d=p.process,h=p.setImmediate,v=p.clearImmediate,T=p.MessageChannel,P=0,x={},b="onreadystatechange",k=function(){var g=+this;if(x.hasOwnProperty(g)){var _=x[g];delete x[g],_()}},S=function(g){k.call(g.data)};h&&v||(h=function(g){for(var _=[],O=1;arguments.length>O;)_.push(arguments[O++]);return x[++P]=function(){l(typeof g=="function"?g:Function(g),_)},i(P),P},v=function(g){delete x[g]},t(11)(d)=="process"?i=function(g){d.nextTick(c(k,g,1))}:T?(s=new T,a=s.port2,s.port1.onmessage=S,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(g){p.postMessage(g+"","*")},p.addEventListener("message",S,!1)):i=b in f("script")?function(g){u.appendChild(f("script"))[b]=function(){u.removeChild(this),k.call(g)}}:function(g){setTimeout(c(k,g,1),0)}),r.exports={set:h,clear:v}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(b){return b&&b.__esModule?b:{default:b}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(b){return(0,h.createHash)("sha256").update(b).digest("hex")}function c(b){switch(T){case"darwin":return b.split("IOPlatformUUID")[1].split(`
4
+ `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return b.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(b){var k=c((0,d.execSync)(x[T]).toString());return b?k:a(k)}function u(b){return new p.default(function(k,S){return(0,d.exec)(x[T],{},function(g,_,O){if(g)return S(new Error("Error while obtaining machine id: "+g.stack));var F=c(_.toString());return k(b?F:a(F))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),h=t(71),v=process,T=v.platform,P={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},x={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:P[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),v=a(f,h);if(c&&u!=u){for(;h>v;)if(p=d[v++],p!=p)return!0}else for(;h>v;v++)if((c||v in d)&&d[v]===u)return c||v||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(h,v,T,P,x){var b,k,S,g,_=x?function(){return h}:u(h),O=i(T,P,v?2:1),F=0;if(typeof _!="function")throw TypeError(h+" is not iterable!");if(a(_)){for(b=l(h.length);b>F;F++)if(g=v?O(c(k=h[F])[0],k[1]):O(h[F]),g===f||g===p)return g}else for(S=_.call(h);!(k=S.next()).done;)if(g=s(S,O,k.value,v),g===f||g===p)return g};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var x,b;for(u&&(x=c.domain)&&x.exit();f;){b=f.fn,f=f.next;try{b()}catch(k){throw f?d():p=void 0,k}}p=void 0,x&&x.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var v=!0,T=document.createTextNode("");new a(h).observe(T,{characterData:!0}),d=function(){T.data=v=!v}}else if(l&&l.resolve){var P=l.resolve();d=function(){P.then(h)}}else d=function(){s.call(i,h)};return function(x){var b={fn:x,next:void 0};p&&(p.next=b),f||(f=b,d()),p=b}}},function(r,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),h=a.length,v=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+v),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,t){var i=t(12),s=t(3),a=t(54);r.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,t){r.exports=t(5)},function(r,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),h=(t(3),t(14)),v=t(38),T=t(40),P=(t(58).set,t(60)),x=t(30).set,b=t(48)(),k="Promise",S=l.TypeError,_=l.process,g=l[k],_=l.process,O=f(_)=="process",F=function(){},j=!!(function(){try{var y=g.resolve(1),w=(y.constructor={})[t(1)("species")]=function(R){R(F,F)};return(O||typeof PromiseRejectionEvent=="function")&&y.then(F)instanceof w}catch{}})(),de=function(y,w){return y===w||y===g&&w===a},me=function(y){var w;return!(!d(y)||typeof(w=y.then)!="function")&&w},ee=function(y){return de(g,y)?new ke(y):new s(y)},ke=s=function(y){var w,R;this.promise=new y(function(L,Y){if(w!==void 0||R!==void 0)throw S("Bad Promise constructor");w=L,R=Y}),this.resolve=h(w),this.reject=h(R)},gt=function(y){try{y()}catch(w){return{error:w}}},et=function(y,w){if(!y._n){y._n=!0;var R=y._c;b(function(){for(var L=y._v,Y=y._s==1,tt=0,yt=function(De){var ve,Rn,Kt=Y?De.ok:De.fail,Gt=De.resolve,wt=De.reject,bn=De.domain;try{Kt?(Y||(y._h==2&&Ne(y),y._h=1),Kt===!0?ve=L:(bn&&bn.enter(),ve=Kt(L),bn&&bn.exit()),ve===De.promise?wt(S("Promise-chain cycle")):(Rn=me(ve))?Rn.call(ve,Gt,wt):Gt(ve)):wt(L)}catch(Bs){wt(Bs)}};R.length>tt;)yt(R[tt++]);y._c=[],y._n=!1,w&&!y._h&&Ht(y)})}},Ht=function(y){x.call(l,function(){var w,R,L,Y=y._v;if(te(y)&&(w=gt(function(){O?_.emit("unhandledRejection",Y,y):(R=l.onunhandledrejection)?R({promise:y,reason:Y}):(L=l.console)&&L.error&&L.error("Unhandled promise rejection",Y)}),y._h=O||te(y)?2:1),y._a=void 0,w)throw w.error})},te=function(y){if(y._h==1)return!1;for(var w,R=y._a||y._c,L=0;R.length>L;)if(w=R[L++],w.fail||!te(w.promise))return!1;return!0},Ne=function(y){x.call(l,function(){var w;O?_.emit("rejectionHandled",y):(w=l.onrejectionhandled)&&w({promise:y,reason:y._v})})},se=function(y){var w=this;w._d||(w._d=!0,w=w._w||w,w._v=y,w._s=2,w._a||(w._a=w._c.slice()),et(w,!0))},jt=function(y){var w,R=this;if(!R._d){R._d=!0,R=R._w||R;try{if(R===y)throw S("Promise can't be resolved itself");(w=me(y))?b(function(){var L={_w:R,_d:!1};try{w.call(y,u(jt,L,1),u(se,L,1))}catch(Y){se.call(L,Y)}}):(R._v=y,R._s=1,et(R,!1))}catch(L){se.call({_w:R,_d:!1},L)}}};j||(g=function(y){v(this,g,k,"_h"),h(y),i.call(this);try{y(u(jt,this,1),u(se,this,1))}catch(w){se.call(this,w)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(g.prototype,{then:function(y,w){var R=ee(P(this,g));return R.ok=typeof y!="function"||y,R.fail=typeof w=="function"&&w,R.domain=O?_.domain:void 0,this._c.push(R),this._a&&this._a.push(R),this._s&&et(this,!1),R.promise},catch:function(y){return this.then(void 0,y)}}),ke=function(){var y=new i;this.promise=y,this.resolve=u(jt,y,1),this.reject=u(se,y,1)}),p(p.G+p.W+p.F*!j,{Promise:g}),t(18)(g,k),t(59)(k),a=t(6)[k],p(p.S+p.F*!j,k,{reject:function(y){var w=ee(this),R=w.reject;return R(y),w.promise}}),p(p.S+p.F*(c||!j),k,{resolve:function(y){if(y instanceof g&&de(y.constructor,this))return y;var w=ee(this),R=w.resolve;return R(y),w.promise}}),p(p.S+p.F*!(j&&t(46)(function(y){g.all(y).catch(F)})),k,{all:function(y){var w=this,R=ee(w),L=R.resolve,Y=R.reject,tt=gt(function(){var yt=[],De=0,ve=1;T(y,!1,function(Rn){var Kt=De++,Gt=!1;yt.push(void 0),ve++,w.resolve(Rn).then(function(wt){Gt||(Gt=!0,yt[Kt]=wt,--ve||L(yt))},Y)}),--ve||L(yt)});return tt&&Y(tt.error),R.promise},race:function(y){var w=this,R=ee(w),L=R.reject,Y=gt(function(){T(y,!1,function(tt){w.resolve(tt).then(R.resolve,L)})});return Y&&L(Y.error),R.promise}})},function(r,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var Ji={};Ys(Ji,{initTray:()=>Vr,killTray:()=>gn,openBrowser:()=>yn,showTrayNotification:()=>Yr,updateTrayTooltip:()=>or});function Hi(e){for(let n of e)try{if(Mt.default.existsSync(n))return n}catch{}return null}function mc(){if(process.platform==="win32"){for(let e of Vi)try{if(Mt.default.existsSync(e))return Mt.default.readFileSync(e).toString("base64")}catch{}return Bi}return Bi}function hc(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function Yi(){let{port:e,tunnelUrl:n,running:r}=Nt,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
5
5
  Local: ${t}
6
- Right-click to open / quit`}function Ji(){let{port:e,tunnelUrl:n}=Dt,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:hc(),title:r?`9Remote - Port ${e}`:"",tooltip:qi(),items:[{title:o,tooltip:n||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function yc(){try{let e=require(Re.default.join(Yi,"systray2"));return e.default?.default||e.default||e}catch{return null}}function wc({port:e,onQuit:n,onOpenUI:r}){let o=Ki(Qi),t=Ki(mc);if(!o||!t)return null;let i;try{i=(0,$e.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",t,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
7
- `,"utf8")}catch{}};return Gi.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),yn(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function Yr({port:e,onQuit:n,onOpenUI:r}){if(!gc())return null;if(process.platform==="win32")return Dt={port:e,tunnelUrl:"",running:!0},Z=wc({port:e,onQuit:n,onOpenUI:r}),Z;try{let o=yc();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=Re.default.join(Yi,"systray2","traybin",i);if(!Nt.default.existsSync(s))return null;if(process.platform!=="win32")try{Nt.default.chmodSync(s,493)}catch{}return Dt={port:e,tunnelUrl:"",running:!0},Z=new o({menu:Ji(),debug:!1,copyDir:!0}),Z.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),yn(),setTimeout(()=>process.exit(0),500))}),typeof Z.ready=="function"?Z.ready().catch(()=>{}):(Z.onReady(()=>{}),Z.onError(()=>{})),Z}catch{return null}}function or({tunnelUrl:e,running:n}={}){if(e!==void 0&&(Dt.tunnelUrl=e),n!==void 0&&(Dt.running=n),!!Z){if(Z._isWin){Z._setTooltip?.(qi());return}try{Z.sendAction({type:"update-menu",menu:Ji(),seq_id:-1})}catch{}}}function yn(){let e=Z;if(Z=null,e)try{e.kill(!0)}catch{}}function Qr({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(n)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(n)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,$e.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,$e.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,$e.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function wn(e){let n=process.platform;if(n==="win32"){try{(0,$e.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,$e.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{(0,$e.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of r)try{(0,$e.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var $e,Gi,Nt,Re,Wi,Vi,Yi,Z,Dt,rr,ji,Qi,mc,Ft=Qs(()=>{$e=require("child_process"),Gi=A(require("readline"),1),Nt=A(require("fs"),1),Re=A(require("path"),1),Wi=A(require("os"),1),Vi=require("url"),Yi=(0,Re.join)(Wi.default.homedir(),".9remote","runtime","node_modules"),Z=null,Dt={port:0,tunnelUrl:"",running:!1},rr=Re.default.dirname((0,Vi.fileURLToPath)(__importMetaUrl)),ji="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",Qi=[Re.default.join(rr,"assets","trayIcon.ico"),Re.default.join(rr,"..","assets","trayIcon.ico")],mc=[Re.default.join(rr,"assets","tray.ps1"),Re.default.join(rr,"..","assets","tray.ps1")]});var Zr=ae((Iu,os)=>{os.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var as=ae((Ou,ss)=>{var Ec=Zr();function is(e){this.mode=Ec.MODE_8BIT_BYTE,this.data=e}is.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};ss.exports=is});var zr=ae((Cu,cs)=>{var we={glog:function(e){if(e<1)throw new Error("glog("+e+")");return we.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return we.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(H=0;H<8;H++)we.EXP_TABLE[H]=1<<H;var H;for(H=8;H<256;H++)we.EXP_TABLE[H]=we.EXP_TABLE[H-4]^we.EXP_TABLE[H-5]^we.EXP_TABLE[H-6]^we.EXP_TABLE[H-8];var H;for(H=0;H<255;H++)we.LOG_TABLE[we.EXP_TABLE[H]]=H;var H;cs.exports=we});var eo=ae(($u,ls)=>{var dt=zr();function sr(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}sr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=dt.gexp(dt.glog(this.get(r))+dt.glog(e.get(o)));return new sr(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=dt.glog(this.get(0))-dt.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=dt.gexp(dt.glog(e.get(t))+n);return new sr(r,0).mod(e)}};ls.exports=sr});var fs=ae((Lu,us)=>{us.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var ms=ae((Mu,ds)=>{var pe=Zr(),ps=eo(),Tc=zr(),Je=fs(),V={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var n=e<<10;V.getBCHDigit(n)-V.getBCHDigit(V.G15)>=0;)n^=V.G15<<V.getBCHDigit(n)-V.getBCHDigit(V.G15);return(e<<10|n)^V.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;V.getBCHDigit(n)-V.getBCHDigit(V.G18)>=0;)n^=V.G18<<V.getBCHDigit(n)-V.getBCHDigit(V.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return V.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case Je.PATTERN000:return(n+r)%2===0;case Je.PATTERN001:return n%2===0;case Je.PATTERN010:return r%3===0;case Je.PATTERN011:return(n+r)%3===0;case Je.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case Je.PATTERN101:return n*r%2+n*r%3===0;case Je.PATTERN110:return(n*r%2+n*r%3)%2===0;case Je.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new ps([1],0),r=0;r<e;r++)n=n.multiply(new ps([1,Tc.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case pe.MODE_NUMBER:return 10;case pe.MODE_ALPHA_NUM:return 9;case pe.MODE_8BIT_BYTE:return 8;case pe.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case pe.MODE_NUMBER:return 12;case pe.MODE_ALPHA_NUM:return 11;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case pe.MODE_NUMBER:return 14;case pe.MODE_ALPHA_NUM:return 13;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};ds.exports=V});var to=ae((Nu,hs)=>{hs.exports={L:1,M:0,Q:3,H:2}});var ys=ae((Du,gs)=>{var ar=to();function be(e,n){this.totalCount=e,this.dataCount=n}be.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];be.getRSBlocks=function(e,n){var r=be.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new be(a,c));return t};be.getRsBlockTable=function(e,n){switch(n){case ar.L:return be.RS_BLOCK_TABLE[(e-1)*4+0];case ar.M:return be.RS_BLOCK_TABLE[(e-1)*4+1];case ar.Q:return be.RS_BLOCK_TABLE[(e-1)*4+2];case ar.H:return be.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};gs.exports=be});var Ss=ae((Fu,vs)=>{function ws(){this.buffer=[],this.length=0}ws.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};vs.exports=ws});var Rs=ae((Uu,xs)=>{var xc=as(),Xe=ms(),Rc=eo(),Es=ys(),Ts=Ss();function Ae(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Ae.prototype={addData:function(e){var n=new xc(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=Es.getRSBlocks(e,this.errorCorrectLevel),r=new Ts,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),Xe.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Ae.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=Xe.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=Xe.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var n=Xe.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=Xe.getBCHTypeInfo(r),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,n){for(var r=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=Xe.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Ae.PAD0=236;Ae.PAD1=17;Ae.createData=function(e,n,r){for(var o=Es.getRSBlocks(e,n),t=new Ts,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),Xe.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Ae.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Ae.PAD1,8);return Ae.createBytes(t,o)};Ae.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=Xe.getErrorCorrectPolynomial(l),p=new Rc(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var v=h+d.getLength()-s[a].length;s[a][h]=v>=0?d.get(v):0}}for(var T=0,P=0;P<n.length;P++)T+=n[P].totalCount;for(var x=new Array(T),b=0,k=0;k<o;k++)for(var S=0;S<n.length;S++)k<i[S].length&&(x[b++]=i[S][k]);for(var g=0;g<t;g++)for(var _=0;_<n.length;_++)g<s[_].length&&(x[b++]=s[_][g]);return x};xs.exports=Ae});var ks=ae((Bu,As)=>{var bc=Rs(),bs=to(),Ac="\x1B[40m \x1B[0m",cr="\x1B[47m \x1B[0m",kc=function(e){return e?Ac:cr},no=function(e){return{times:function(n){return new Array(n).join(e)}}},_c=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};As.exports={error:bs.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new bc(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(_c(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=no(u.BLACK_WHITE).times(a+3),p=no(u.WHITE_BLACK).times(a+3);t+=f+`
6
+ Right-click to open / quit`}function qi(){let{port:e,tunnelUrl:n}=Nt,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:mc(),title:r?`9Remote - Port ${e}`:"",tooltip:Yi(),items:[{title:o,tooltip:n||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function gc(){try{let e=require(Re.default.join(Wi,"systray2"));return e.default?.default||e.default||e}catch{return null}}function yc({port:e,onQuit:n,onOpenUI:r}){let o=Hi(Vi),t=Hi(dc);if(!o||!t)return null;let i;try{i=(0,$e.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",t,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
7
+ `,"utf8")}catch{}};return ji.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),gn(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function Vr({port:e,onQuit:n,onOpenUI:r}){if(!hc())return null;if(process.platform==="win32")return Nt={port:e,tunnelUrl:"",running:!0},z=yc({port:e,onQuit:n,onOpenUI:r}),z;try{let o=gc();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=Re.default.join(Wi,"systray2","traybin",i);if(!Mt.default.existsSync(s))return null;if(process.platform!=="win32")try{Mt.default.chmodSync(s,493)}catch{}return Nt={port:e,tunnelUrl:"",running:!0},z=new o({menu:qi(),debug:!1,copyDir:!0}),z.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),gn(),setTimeout(()=>process.exit(0),500))}),typeof z.ready=="function"?z.ready().catch(()=>{}):(z.onReady(()=>{}),z.onError(()=>{})),z}catch{return null}}function or({tunnelUrl:e,running:n}={}){if(e!==void 0&&(Nt.tunnelUrl=e),n!==void 0&&(Nt.running=n),!!z){if(z._isWin){z._setTooltip?.(Yi());return}try{z.sendAction({type:"update-menu",menu:qi(),seq_id:-1})}catch{}}}function gn(){let e=z;if(z=null,e)try{e.kill(!0)}catch{}}function Yr({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(n)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(n)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,$e.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,$e.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,$e.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function yn(e){let n=process.platform;if(n==="win32"){try{(0,$e.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,$e.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{(0,$e.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of r)try{(0,$e.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var $e,ji,Mt,Re,Ki,Gi,Wi,z,Nt,rr,Bi,Vi,dc,Dt=Vs(()=>{$e=require("child_process"),ji=A(require("readline"),1),Mt=A(require("fs"),1),Re=A(require("path"),1),Ki=A(require("os"),1),Gi=require("url"),Wi=(0,Re.join)(Ki.default.homedir(),".9remote","runtime","node_modules"),z=null,Nt={port:0,tunnelUrl:"",running:!1},rr=Re.default.dirname((0,Gi.fileURLToPath)(__importMetaUrl)),Bi="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",Vi=[Re.default.join(rr,"assets","trayIcon.ico"),Re.default.join(rr,"..","assets","trayIcon.ico")],dc=[Re.default.join(rr,"assets","tray.ps1"),Re.default.join(rr,"..","assets","tray.ps1")]});var Xr=ce((Pu,ns)=>{ns.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var is=ce((Iu,os)=>{var Sc=Xr();function rs(e){this.mode=Sc.MODE_8BIT_BYTE,this.data=e}rs.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};os.exports=rs});var Zr=ce((Ou,ss)=>{var we={glog:function(e){if(e<1)throw new Error("glog("+e+")");return we.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return we.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(H=0;H<8;H++)we.EXP_TABLE[H]=1<<H;var H;for(H=8;H<256;H++)we.EXP_TABLE[H]=we.EXP_TABLE[H-4]^we.EXP_TABLE[H-5]^we.EXP_TABLE[H-6]^we.EXP_TABLE[H-8];var H;for(H=0;H<255;H++)we.LOG_TABLE[we.EXP_TABLE[H]]=H;var H;ss.exports=we});var zr=ce((Cu,as)=>{var mt=Zr();function sr(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}sr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=mt.gexp(mt.glog(this.get(r))+mt.glog(e.get(o)));return new sr(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=mt.glog(this.get(0))-mt.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=mt.gexp(mt.glog(e.get(t))+n);return new sr(r,0).mod(e)}};as.exports=sr});var ls=ce(($u,cs)=>{cs.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var ps=ce((Lu,fs)=>{var pe=Xr(),us=zr(),Ec=Zr(),Qe=ls(),V={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var n=e<<10;V.getBCHDigit(n)-V.getBCHDigit(V.G15)>=0;)n^=V.G15<<V.getBCHDigit(n)-V.getBCHDigit(V.G15);return(e<<10|n)^V.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;V.getBCHDigit(n)-V.getBCHDigit(V.G18)>=0;)n^=V.G18<<V.getBCHDigit(n)-V.getBCHDigit(V.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return V.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case Qe.PATTERN000:return(n+r)%2===0;case Qe.PATTERN001:return n%2===0;case Qe.PATTERN010:return r%3===0;case Qe.PATTERN011:return(n+r)%3===0;case Qe.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case Qe.PATTERN101:return n*r%2+n*r%3===0;case Qe.PATTERN110:return(n*r%2+n*r%3)%2===0;case Qe.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new us([1],0),r=0;r<e;r++)n=n.multiply(new us([1,Ec.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case pe.MODE_NUMBER:return 10;case pe.MODE_ALPHA_NUM:return 9;case pe.MODE_8BIT_BYTE:return 8;case pe.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case pe.MODE_NUMBER:return 12;case pe.MODE_ALPHA_NUM:return 11;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case pe.MODE_NUMBER:return 14;case pe.MODE_ALPHA_NUM:return 13;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};fs.exports=V});var eo=ce((Mu,ds)=>{ds.exports={L:1,M:0,Q:3,H:2}});var hs=ce((Nu,ms)=>{var ar=eo();function be(e,n){this.totalCount=e,this.dataCount=n}be.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];be.getRSBlocks=function(e,n){var r=be.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new be(a,c));return t};be.getRsBlockTable=function(e,n){switch(n){case ar.L:return be.RS_BLOCK_TABLE[(e-1)*4+0];case ar.M:return be.RS_BLOCK_TABLE[(e-1)*4+1];case ar.Q:return be.RS_BLOCK_TABLE[(e-1)*4+2];case ar.H:return be.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};ms.exports=be});var ws=ce((Du,ys)=>{function gs(){this.buffer=[],this.length=0}gs.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};ys.exports=gs});var Ts=ce((Fu,Es)=>{var Tc=is(),Xe=ps(),xc=zr(),vs=hs(),Ss=ws();function Ae(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Ae.prototype={addData:function(e){var n=new Tc(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=vs.getRSBlocks(e,this.errorCorrectLevel),r=new Ss,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),Xe.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Ae.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=Xe.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=Xe.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var n=Xe.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=Xe.getBCHTypeInfo(r),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,n){for(var r=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=Xe.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Ae.PAD0=236;Ae.PAD1=17;Ae.createData=function(e,n,r){for(var o=vs.getRSBlocks(e,n),t=new Ss,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),Xe.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Ae.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Ae.PAD1,8);return Ae.createBytes(t,o)};Ae.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=Xe.getErrorCorrectPolynomial(l),p=new xc(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var v=h+d.getLength()-s[a].length;s[a][h]=v>=0?d.get(v):0}}for(var T=0,P=0;P<n.length;P++)T+=n[P].totalCount;for(var x=new Array(T),b=0,k=0;k<o;k++)for(var S=0;S<n.length;S++)k<i[S].length&&(x[b++]=i[S][k]);for(var g=0;g<t;g++)for(var _=0;_<n.length;_++)g<s[_].length&&(x[b++]=s[_][g]);return x};Es.exports=Ae});var bs=ce((Uu,Rs)=>{var Rc=Ts(),xs=eo(),bc="\x1B[40m \x1B[0m",cr="\x1B[47m \x1B[0m",Ac=function(e){return e?bc:cr},to=function(e){return{times:function(n){return new Array(n).join(e)}}},kc=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};Rs.exports={error:xs.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new Rc(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(kc(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=to(u.BLACK_WHITE).times(a+3),p=to(u.WHITE_BLACK).times(a+3);t+=f+`
8
8
  `;for(var d=0;d<a;d+=2){t+=u.WHITE_ALL;for(var h=0;h<a;h++)c[d][h]===s&&c[d+1][h]===s?t+=u.WHITE_ALL:c[d][h]===s&&c[d+1][h]===i?t+=u.WHITE_BLACK:c[d][h]===i&&c[d+1][h]===s?t+=u.BLACK_WHITE:t+=u.BLACK_ALL;t+=u.WHITE_ALL+`
9
- `}l||(t+=p)}else{var v=no(cr).times(o.getModuleCount()+3);t+=v+`
10
- `,o.modules.forEach(function(T){t+=cr,t+=T.map(kc).join(""),t+=cr+`
11
- `}),t+=v}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=bs[e]||this.error}}});var _n=require("fs"),Yt=require("path"),ho=require("url"),go=A(require("os"),1);var kn=A(require("dns"),1),_e=A(require("path"),1),co=A(require("os"),1),te="9remote",pr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${te}/latest`,Pe=`${te}@latest`,Fe=_e.default.join(co.default.homedir(),".9remote"),ne={ROOT:Fe,LOGS:_e.default.join(Fe,"logs"),STATE:_e.default.join(Fe,"state"),CONFIG:_e.default.join(Fe,"config"),BIN:_e.default.join(Fe,"bin"),PIDS:_e.default.join(Fe,"pids"),BUFFERS:_e.default.join(Fe,"buffers"),DAEMON:_e.default.join(Fe,"daemon")},lo=new kn.default.promises.Resolver;lo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var fr=kn.default.lookup,Xs=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;kn.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||Xs.test(e))return fr(e,n,r);lo.resolve4(e).then(o=>{if(!o?.length)return fr(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>fr(e,n,r))};var I=2208,ao=5173;var qc=[`http://localhost:${I}`,`http://127.0.0.1:${I}`,`http://localhost:${ao}`,`http://127.0.0.1:${ao}`],Vt={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},uo=60,C={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},fo={showTunnelUrlInMenu:!1};var po={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var mo={checkIntervalMs:3e4,requestTimeoutMs:5e3},ce={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},Zs={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function G(e,n={}){return fetch(e,{...n,headers:{...Zs,...n.headers}})}var zs=(0,Yt.dirname)((0,ho.fileURLToPath)(__importMetaUrl)),ea=[(0,Yt.join)(go.default.homedir(),".9remote",".env"),(0,Yt.join)(zs,"..",".env")];function ta(e){for(let n of e.split(`
12
- `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of ea)if((0,_n.existsSync)(e))try{ta((0,_n.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(po))process.env[e]||(process.env[e]=n);var yr=A(require("path"),1),xo=A(require("fs"),1),Ro=require("url");var wo=A(yo(),1),mr=A(require("crypto"),1),{machineIdSync:na}=wo.default;async function wt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=na();return mr.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),mr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var vo=A(require("crypto"),1),ra=process.env.API_KEY_SECRET||"9remote-api-key-secret";function oa(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function ia(e,n){return vo.default.createHmac("sha256",ra).update(e+n).digest("hex").slice(0,6)}function vt(e){let n=e.slice(0,8),r=oa(),o=ia(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function Pn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var se=A(require("fs"),1),qt=A(require("path"),1);var tl=ne.STATE,hr=qt.default.join(ne.STATE,"state.json"),gr=qt.default.join(ne.ROOT,"keys.json"),In=qt.default.join(ne.STATE,"cmd.json"),nl=qt.default.join(ne.STATE,"settings.json");function On(){for(let e of[ne.ROOT,ne.STATE])se.default.existsSync(e)||se.default.mkdirSync(e,{recursive:!0})}function Cn(e){try{On(),se.default.writeFileSync(hr,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function So(){try{se.default.existsSync(hr)&&se.default.unlinkSync(hr)}catch{}}function $n(){try{return On(),se.default.existsSync(gr)?JSON.parse(se.default.readFileSync(gr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function St(e){try{On(),se.default.writeFileSync(In,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function Eo(){try{if(!se.default.existsSync(In))return null;let e=JSON.parse(se.default.readFileSync(In,"utf8"));return se.default.unlinkSync(In),e.cmd}catch{return null}}function nt(e,n,r="Default"){try{On();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return se.default.writeFileSync(gr,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function To(){return process.env.CODESPACES==="true"}var sa=yr.default.dirname((0,Ro.fileURLToPath)(__importMetaUrl));async function Ue(){let e=await wt();if(To()&&process.env.NREMOTE_API_KEY)return nt(e,process.env.NREMOTE_API_KEY,"Codespace");let n=$n();if(!n.key){let{key:r}=vt(e);n=nt(e,r,"Default")}return n}function Se(){return"2.0.70"}var Ee=A(require("fs"),1),vr=A(require("path"),1);var Ln=ne.LOGS,Xt=vr.default.join(Ln,Vt.fileName),Mn=vr.default.join(Ln,Vt.rotatedName),bo=!1,Ao=null;function aa(){Ee.default.existsSync(Ln)||Ee.default.mkdirSync(Ln,{recursive:!0})}function ca(){try{if(Ee.default.statSync(Xt).size<Vt.maxBytes)return;try{Ee.default.rmSync(Mn,{force:!0})}catch{}Ee.default.renameSync(Xt,Mn)}catch{}}function la(){try{let e=Ee.default.statSync(Mn);Date.now()-e.mtimeMs>Vt.cleanupAfterDays*864e5&&Ee.default.rmSync(Mn,{force:!0})}catch{}}function Sr(e){try{ca(),Ee.default.appendFileSync(Xt,e+`
13
- `)}catch{}}function wr(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function ko(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var ua=/\x1b\[[0-9;]*m/g,fa=/https?:\/\/[^\s]+/g;function pa(e){return String(e).replace(ua,"").replace(fa,"").replace(/\s+$/g,"")}function Jt(e,n,r){let o=pa(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${ko()} [${t}] ${o}`;if(Sr(i),Ao)try{Ao(i)}catch{}}function da(){process.on("uncaughtException",e=>Jt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);Jt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>Sr(`${ko()} [exit] code=${e} pid=${process.pid}`))}function _o(){bo||(bo=!0,aa(),la(),Sr(`
14
- === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),da())}function Po(e=60){try{return Ee.default.readFileSync(Xt,"utf8").split(`
15
- `).filter(Boolean).slice(-e)}catch{return[]}}function Q(e){return{info:(...n)=>Jt(e,"info",wr(n)),warn:(...n)=>Jt(e,"warn",wr(n)),error:(...n)=>Jt(e,"error",wr(n))}}var Zt=Xt;var Io=(e=0)=>n=>`\x1B[${n+e}m`,Oo=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,Co=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,L={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},pl=Object.keys(L.modifier),ma=Object.keys(L.color),ha=Object.keys(L.bgColor),dl=[...ma,...ha];function ga(){let e=new Map;for(let[n,r]of Object.entries(L)){for(let[o,t]of Object.entries(r))L[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=L[o],e.set(t[0],t[1]);Object.defineProperty(L,n,{value:r,enumerable:!1})}return Object.defineProperty(L,"codes",{value:e,enumerable:!1}),L.color.close="\x1B[39m",L.bgColor.close="\x1B[49m",L.color.ansi=Io(),L.color.ansi256=Oo(),L.color.ansi16m=Co(),L.bgColor.ansi=Io(10),L.bgColor.ansi256=Oo(10),L.bgColor.ansi16m=Co(10),Object.defineProperties(L,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:n=>L.rgbToAnsi256(...L.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>L.ansi256ToAnsi(L.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>L.ansi256ToAnsi(L.hexToAnsi256(n)),enumerable:!1}}),L}var ya=ga(),he=ya;var Dn=A(require("node:process"),1),Lo=A(require("node:os"),1),Er=A(require("node:tty"),1);function le(e,n=globalThis.Deno?globalThis.Deno.args:Dn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:M}=Dn.default,Nn;le("no-color")||le("no-colors")||le("color=false")||le("color=never")?Nn=0:(le("color")||le("colors")||le("color=true")||le("color=always"))&&(Nn=1);function wa(){if("FORCE_COLOR"in M)return M.FORCE_COLOR==="true"?1:M.FORCE_COLOR==="false"?0:M.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(M.FORCE_COLOR,10),3)}function va(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Sa(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=wa();o!==void 0&&(Nn=o);let t=r?Nn:o;if(t===0)return 0;if(r){if(le("color=16m")||le("color=full")||le("color=truecolor"))return 3;if(le("color=256"))return 2}if("TF_BUILD"in M&&"AGENT_NAME"in M)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(M.TERM==="dumb")return i;if(Dn.default.platform==="win32"){let s=Lo.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in M)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in M)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in M)||M.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in M)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(M.TEAMCITY_VERSION)?1:0;if(M.COLORTERM==="truecolor"||M.TERM==="xterm-kitty"||M.TERM==="xterm-ghostty"||M.TERM==="wezterm")return 3;if("TERM_PROGRAM"in M){let s=Number.parseInt((M.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(M.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(M.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(M.TERM)||"COLORTERM"in M?1:i}function $o(e,n={}){let r=Sa(e,{streamIsTTY:e&&e.isTTY,...n});return va(r)}var Ea={stdout:$o({isTTY:Er.default.isatty(1)}),stderr:$o({isTTY:Er.default.isatty(2)})},Mo=Ea;function No(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function Do(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
9
+ `}l||(t+=p)}else{var v=to(cr).times(o.getModuleCount()+3);t+=v+`
10
+ `,o.modules.forEach(function(T){t+=cr,t+=T.map(Ac).join(""),t+=cr+`
11
+ `}),t+=v}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=xs[e]||this.error}}});var kn=require("fs"),Vt=require("path"),mo=require("url"),ho=A(require("os"),1);var An=A(require("dns"),1),_e=A(require("path"),1),ao=A(require("os"),1),ne="9remote",pr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ne}/latest`,Pe=`${ne}@latest`,Fe=_e.default.join(ao.default.homedir(),".9remote"),re={ROOT:Fe,LOGS:_e.default.join(Fe,"logs"),STATE:_e.default.join(Fe,"state"),CONFIG:_e.default.join(Fe,"config"),BIN:_e.default.join(Fe,"bin"),PIDS:_e.default.join(Fe,"pids"),BUFFERS:_e.default.join(Fe,"buffers"),DAEMON:_e.default.join(Fe,"daemon")},co=new An.default.promises.Resolver;co.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var fr=An.default.lookup,Js=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;An.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||Js.test(e))return fr(e,n,r);co.resolve4(e).then(o=>{if(!o?.length)return fr(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>fr(e,n,r))};var I=2208,so=5173;var qc=[`http://localhost:${I}`,`http://127.0.0.1:${I}`,`http://localhost:${so}`,`http://127.0.0.1:${so}`],Wt={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},lo=60,C={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},uo={showTunnelUrlInMenu:!1};var fo={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var po={checkIntervalMs:3e4,requestTimeoutMs:5e3},le={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},Qs={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function G(e,n={}){return fetch(e,{...n,headers:{...Qs,...n.headers}})}var Xs=(0,Vt.dirname)((0,mo.fileURLToPath)(__importMetaUrl)),Zs=[(0,Vt.join)(ho.default.homedir(),".9remote",".env"),(0,Vt.join)(Xs,"..",".env")];function zs(e){for(let n of e.split(`
12
+ `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of Zs)if((0,kn.existsSync)(e))try{zs((0,kn.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(fo))process.env[e]||(process.env[e]=n);var yr=A(require("path"),1),To=A(require("fs"),1),xo=require("url");var yo=A(go(),1),mr=A(require("crypto"),1),{machineIdSync:ea}=yo.default;async function vt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=ea();return mr.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),mr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var wo=A(require("crypto"),1),ta=process.env.API_KEY_SECRET||"9remote-api-key-secret";function na(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function ra(e,n){return wo.default.createHmac("sha256",ta).update(e+n).digest("hex").slice(0,6)}function St(e){let n=e.slice(0,8),r=na(),o=ra(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function _n(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var ae=A(require("fs"),1),qt=A(require("path"),1);var el=re.STATE,hr=qt.default.join(re.STATE,"state.json"),gr=qt.default.join(re.ROOT,"keys.json"),Pn=qt.default.join(re.STATE,"cmd.json"),tl=qt.default.join(re.STATE,"settings.json");function In(){for(let e of[re.ROOT,re.STATE])ae.default.existsSync(e)||ae.default.mkdirSync(e,{recursive:!0})}function On(e){try{In(),ae.default.writeFileSync(hr,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function vo(){try{ae.default.existsSync(hr)&&ae.default.unlinkSync(hr)}catch{}}function Cn(){try{return In(),ae.default.existsSync(gr)?JSON.parse(ae.default.readFileSync(gr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function Et(e){try{In(),ae.default.writeFileSync(Pn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function So(){try{if(!ae.default.existsSync(Pn))return null;let e=JSON.parse(ae.default.readFileSync(Pn,"utf8"));return ae.default.unlinkSync(Pn),e.cmd}catch{return null}}function nt(e,n,r="Default"){try{In();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return ae.default.writeFileSync(gr,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function Eo(){return process.env.CODESPACES==="true"}var oa=yr.default.dirname((0,xo.fileURLToPath)(__importMetaUrl));async function Ue(){let e=await vt();if(Eo()&&process.env.NREMOTE_API_KEY)return nt(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Cn();if(!n.key){let{key:r}=St(e);n=nt(e,r,"Default")}return n}function Se(){return"2.0.75"}var Ee=A(require("fs"),1),vr=A(require("path"),1);var $n=re.LOGS,Qt=vr.default.join($n,Wt.fileName),Ln=vr.default.join($n,Wt.rotatedName),Ro=!1,bo=null;function ia(){Ee.default.existsSync($n)||Ee.default.mkdirSync($n,{recursive:!0})}function sa(){try{if(Ee.default.statSync(Qt).size<Wt.maxBytes)return;try{Ee.default.rmSync(Ln,{force:!0})}catch{}Ee.default.renameSync(Qt,Ln)}catch{}}function aa(){try{let e=Ee.default.statSync(Ln);Date.now()-e.mtimeMs>Wt.cleanupAfterDays*864e5&&Ee.default.rmSync(Ln,{force:!0})}catch{}}function Sr(e){try{sa(),Ee.default.appendFileSync(Qt,e+`
13
+ `)}catch{}}function wr(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function Ao(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var ca=/\x1b\[[0-9;]*m/g,la=/https?:\/\/[^\s]+/g;function ua(e){return String(e).replace(ca,"").replace(la,"").replace(/\s+$/g,"")}function Jt(e,n,r){let o=ua(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${Ao()} [${t}] ${o}`;if(Sr(i),bo)try{bo(i)}catch{}}function fa(){process.on("uncaughtException",e=>Jt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);Jt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>Sr(`${Ao()} [exit] code=${e} pid=${process.pid}`))}function ko(){Ro||(Ro=!0,ia(),aa(),Sr(`
14
+ === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),fa())}function _o(e=60){try{return Ee.default.readFileSync(Qt,"utf8").split(`
15
+ `).filter(Boolean).slice(-e)}catch{return[]}}function q(e){return{info:(...n)=>Jt(e,"info",wr(n)),warn:(...n)=>Jt(e,"warn",wr(n)),error:(...n)=>Jt(e,"error",wr(n))}}var Xt=Qt;var Po=(e=0)=>n=>`\x1B[${n+e}m`,Io=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,Oo=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,M={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},fl=Object.keys(M.modifier),pa=Object.keys(M.color),da=Object.keys(M.bgColor),pl=[...pa,...da];function ma(){let e=new Map;for(let[n,r]of Object.entries(M)){for(let[o,t]of Object.entries(r))M[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=M[o],e.set(t[0],t[1]);Object.defineProperty(M,n,{value:r,enumerable:!1})}return Object.defineProperty(M,"codes",{value:e,enumerable:!1}),M.color.close="\x1B[39m",M.bgColor.close="\x1B[49m",M.color.ansi=Po(),M.color.ansi256=Io(),M.color.ansi16m=Oo(),M.bgColor.ansi=Po(10),M.bgColor.ansi256=Io(10),M.bgColor.ansi16m=Oo(10),Object.defineProperties(M,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:n=>M.rgbToAnsi256(...M.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>M.ansi256ToAnsi(M.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>M.ansi256ToAnsi(M.hexToAnsi256(n)),enumerable:!1}}),M}var ha=ma(),he=ha;var Nn=A(require("node:process"),1),$o=A(require("node:os"),1),Er=A(require("node:tty"),1);function ue(e,n=globalThis.Deno?globalThis.Deno.args:Nn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:N}=Nn.default,Mn;ue("no-color")||ue("no-colors")||ue("color=false")||ue("color=never")?Mn=0:(ue("color")||ue("colors")||ue("color=true")||ue("color=always"))&&(Mn=1);function ga(){if("FORCE_COLOR"in N)return N.FORCE_COLOR==="true"?1:N.FORCE_COLOR==="false"?0:N.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(N.FORCE_COLOR,10),3)}function ya(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function wa(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=ga();o!==void 0&&(Mn=o);let t=r?Mn:o;if(t===0)return 0;if(r){if(ue("color=16m")||ue("color=full")||ue("color=truecolor"))return 3;if(ue("color=256"))return 2}if("TF_BUILD"in N&&"AGENT_NAME"in N)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(N.TERM==="dumb")return i;if(Nn.default.platform==="win32"){let s=$o.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in N)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in N)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in N)||N.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in N)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(N.TEAMCITY_VERSION)?1:0;if(N.COLORTERM==="truecolor"||N.TERM==="xterm-kitty"||N.TERM==="xterm-ghostty"||N.TERM==="wezterm")return 3;if("TERM_PROGRAM"in N){let s=Number.parseInt((N.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(N.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(N.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(N.TERM)||"COLORTERM"in N?1:i}function Co(e,n={}){let r=wa(e,{streamIsTTY:e&&e.isTTY,...n});return ya(r)}var va={stdout:Co({isTTY:Er.default.isatty(1)}),stderr:Co({isTTY:Er.default.isatty(2)})},Lo=va;function Mo(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function No(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
16
16
  `:`
17
17
  `)+r,t=o+1,o=e.indexOf(`
18
- `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:Fo,stderr:Uo}=Mo,Tr=Symbol("GENERATOR"),Et=Symbol("STYLER"),zt=Symbol("IS_EMPTY"),Bo=["ansi","ansi","ansi256","ansi16m"],Tt=Object.create(null),Ta=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Fo?Fo.level:0;e.level=n.level===void 0?r:n.level};var xa=e=>{let n=(...r)=>r.join(" ");return Ta(n,e),Object.setPrototypeOf(n,en.prototype),n};function en(e){return xa(e)}Object.setPrototypeOf(en.prototype,Function.prototype);for(let[e,n]of Object.entries(he))Tt[e]={get(){let r=Fn(this,Rr(n.open,n.close,this[Et]),this[zt]);return Object.defineProperty(this,e,{value:r}),r}};Tt.visible={get(){let e=Fn(this,this[Et],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var xr=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?he[r].ansi16m(...o):n==="ansi256"?he[r].ansi256(he.rgbToAnsi256(...o)):he[r].ansi(he.rgbToAnsi(...o)):e==="hex"?xr("rgb",n,r,...he.hexToRgb(...o)):he[r][e](...o),Ra=["rgb","hex","ansi256"];for(let e of Ra){Tt[e]={get(){let{level:r}=this;return function(...o){let t=Rr(xr(e,Bo[r],"color",...o),he.color.close,this[Et]);return Fn(this,t,this[zt])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);Tt[n]={get(){let{level:r}=this;return function(...o){let t=Rr(xr(e,Bo[r],"bgColor",...o),he.bgColor.close,this[Et]);return Fn(this,t,this[zt])}}}}var ba=Object.defineProperties(()=>{},{...Tt,level:{enumerable:!0,get(){return this[Tr].level},set(e){this[Tr].level=e}}}),Rr=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},Fn=(e,n,r)=>{let o=(...t)=>Aa(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,ba),o[Tr]=e,o[Et]=n,o[zt]=r,o},Aa=(e,n)=>{if(e.level<=0||!n)return e[zt]?"":n;let r=e[Et];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=No(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
19
- `);return i!==-1&&(n=Do(n,t,o,i)),o+n+t};Object.defineProperties(en.prototype,Tt);var ka=en(),Sl=en({level:Uo?Uo.level:0});var m=ka;var q=require("fs"),ri=require("url"),nn=require("child_process"),Oe=A(require("path"),1),kt=A(require("os"),1);var xt=A(require("fs"),1),br=A(require("path"),1),Ho=A(require("os"),1),jo=require("child_process"),Un=br.default.join(Ho.default.homedir(),".9remote","pids");function _a(){try{xt.default.existsSync(Un)||xt.default.mkdirSync(Un,{recursive:!0})}catch{}}function Ar(e){return br.default.join(Un,`${e}.pid`)}function Be(e,n){if(n)try{_a(),xt.default.writeFileSync(Ar(e),String(n))}catch{}}function Bn(e){try{let n=xt.default.readFileSync(Ar(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function He(e){try{xt.default.unlinkSync(Ar(e))}catch{}}function Ko(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Pa(e){let n=Bn(e);if(He(e),!n)return!1;try{process.platform==="win32"?(0,jo.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var Ia=["cloudflared","agent"];function Go(){for(let e of Ia)Pa(e)}function Wo(){return Un}var ot=require("child_process"),B=require("fs"),Rt=require("path"),_r=A(require("os"),1),rt=A(require("path"),1),Yo=require("url");var jn=(0,Rt.join)(ne.LOGS,"autostart.log"),Hn="cc.9remote.agent",bt="9Remote",Kn=["--tray","--skip-update","--start"],tn=_r.default.homedir(),Vo=rt.default.dirname((0,Yo.fileURLToPath)(__importMetaUrl)),ue={darwin:(0,Rt.join)(tn,"Library","LaunchAgents",`${Hn}.plist`),linux:(0,Rt.join)(tn,".config","autostart",`${Hn}.desktop`),linuxSystemd:(0,Rt.join)(tn,".config","systemd","user",`${Hn}.service`)};function it(){for(let e=Vo,n=null;e!==n;n=e,e=rt.default.dirname(e)){let r=rt.default.join(e,"package.json");if((0,B.existsSync)(r)){try{let o=JSON.parse((0,B.readFileSync)(r,"utf8"));if(o.name!==te)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[te];if(t){let i=rt.default.resolve(e,t);if((0,B.existsSync)(i))return i}}catch{}break}}return process.argv[1]||rt.default.resolve(Vo,"..","index.js")}function je(){return process.execPath}function Qo(e){let n=je(),r=it();if(process.platform==="win32"){let t=e.join(" "),i=(0,Rt.join)(_r.default.tmpdir(),`${te}-launch.vbs`);return(0,B.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
20
- `),(0,ot.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,ot.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function qo(){let e=rt.default.dirname(je()),n=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return n.includes(e)||n.unshift(e),n.join(":")}function kr(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Oa(e,n){let r=[e,n,...Kn].map(o=>` <string>${kr(o)}</string>`).join(`
18
+ `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:Do,stderr:Fo}=Lo,Tr=Symbol("GENERATOR"),Tt=Symbol("STYLER"),Zt=Symbol("IS_EMPTY"),Uo=["ansi","ansi","ansi256","ansi16m"],xt=Object.create(null),Sa=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Do?Do.level:0;e.level=n.level===void 0?r:n.level};var Ea=e=>{let n=(...r)=>r.join(" ");return Sa(n,e),Object.setPrototypeOf(n,zt.prototype),n};function zt(e){return Ea(e)}Object.setPrototypeOf(zt.prototype,Function.prototype);for(let[e,n]of Object.entries(he))xt[e]={get(){let r=Dn(this,Rr(n.open,n.close,this[Tt]),this[Zt]);return Object.defineProperty(this,e,{value:r}),r}};xt.visible={get(){let e=Dn(this,this[Tt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var xr=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?he[r].ansi16m(...o):n==="ansi256"?he[r].ansi256(he.rgbToAnsi256(...o)):he[r].ansi(he.rgbToAnsi(...o)):e==="hex"?xr("rgb",n,r,...he.hexToRgb(...o)):he[r][e](...o),Ta=["rgb","hex","ansi256"];for(let e of Ta){xt[e]={get(){let{level:r}=this;return function(...o){let t=Rr(xr(e,Uo[r],"color",...o),he.color.close,this[Tt]);return Dn(this,t,this[Zt])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);xt[n]={get(){let{level:r}=this;return function(...o){let t=Rr(xr(e,Uo[r],"bgColor",...o),he.bgColor.close,this[Tt]);return Dn(this,t,this[Zt])}}}}var xa=Object.defineProperties(()=>{},{...xt,level:{enumerable:!0,get(){return this[Tr].level},set(e){this[Tr].level=e}}}),Rr=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},Dn=(e,n,r)=>{let o=(...t)=>Ra(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,xa),o[Tr]=e,o[Tt]=n,o[Zt]=r,o},Ra=(e,n)=>{if(e.level<=0||!n)return e[Zt]?"":n;let r=e[Tt];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=Mo(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
19
+ `);return i!==-1&&(n=No(n,t,o,i)),o+n+t};Object.defineProperties(zt.prototype,xt);var ba=zt(),vl=zt({level:Fo?Fo.level:0});var m=ba;var Q=require("fs"),ti=require("url"),tn=require("child_process"),Oe=A(require("path"),1),At=A(require("os"),1);var Rt=A(require("fs"),1),br=A(require("path"),1),Bo=A(require("os"),1),Ho=require("child_process"),Fn=br.default.join(Bo.default.homedir(),".9remote","pids");function Aa(){try{Rt.default.existsSync(Fn)||Rt.default.mkdirSync(Fn,{recursive:!0})}catch{}}function Ar(e){return br.default.join(Fn,`${e}.pid`)}function Be(e,n){if(n)try{Aa(),Rt.default.writeFileSync(Ar(e),String(n))}catch{}}function Un(e){try{let n=Rt.default.readFileSync(Ar(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function He(e){try{Rt.default.unlinkSync(Ar(e))}catch{}}function jo(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function ka(e){let n=Un(e);if(He(e),!n)return!1;try{process.platform==="win32"?(0,Ho.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var _a=["cloudflared","agent"];function Ko(){for(let e of _a)ka(e)}function Go(){return Fn}var it=require("child_process"),$=require("fs"),rt=require("path"),_r=A(require("os"),1),ot=A(require("path"),1),Vo=require("url");var Hn=(0,rt.join)(re.LOGS,"autostart.log"),Bn="cc.9remote.agent",jn="9Remote",Kn=["--tray","--skip-update","--start"],en=_r.default.homedir(),Wo=ot.default.dirname((0,Vo.fileURLToPath)(__importMetaUrl)),J={darwin:(0,rt.join)(en,"Library","LaunchAgents",`${Bn}.plist`),linux:(0,rt.join)(en,".config","autostart",`${Bn}.desktop`),linuxSystemd:(0,rt.join)(en,".config","systemd","user",`${Bn}.service`),win:(0,rt.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${jn}.vbs`)};function st(){for(let e=Wo,n=null;e!==n;n=e,e=ot.default.dirname(e)){let r=ot.default.join(e,"package.json");if((0,$.existsSync)(r)){try{let o=JSON.parse((0,$.readFileSync)(r,"utf8"));if(o.name!==ne)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ne];if(t){let i=ot.default.resolve(e,t);if((0,$.existsSync)(i))return i}}catch{}break}}return process.argv[1]||ot.default.resolve(Wo,"..","index.js")}function je(){return process.execPath}function Yo(e){let n=je(),r=st();if(process.platform==="win32"){let t=e.join(" "),i=(0,rt.join)(_r.default.tmpdir(),`${ne}-launch.vbs`);return(0,$.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
20
+ `),(0,it.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,it.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function qo(){let e=ot.default.dirname(je()),n=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return n.includes(e)||n.unshift(e),n.join(":")}function kr(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Pa(e,n){let r=[e,n,...Kn].map(o=>` <string>${kr(o)}</string>`).join(`
21
21
  `);return`<?xml version="1.0" encoding="UTF-8"?>
22
22
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
23
23
  <plist version="1.0">
24
24
  <dict>
25
25
  <key>Label</key>
26
- <string>${Hn}</string>
26
+ <string>${Bn}</string>
27
27
  <key>ProgramArguments</key>
28
28
  <array>
29
29
  ${r}
@@ -37,39 +37,41 @@ ${r}
37
37
  <key>PATH</key>
38
38
  <string>${kr(qo())}</string>
39
39
  <key>HOME</key>
40
- <string>${kr(tn)}</string>
40
+ <string>${kr(en)}</string>
41
41
  </dict>
42
42
  <key>StandardOutPath</key>
43
- <string>${jn}</string>
43
+ <string>${Hn}</string>
44
44
  <key>StandardErrorPath</key>
45
- <string>${jn}</string>
45
+ <string>${Hn}</string>
46
46
  </dict>
47
47
  </plist>
48
- `}function Ca(){return(0,B.existsSync)(ue.darwin)}function Jo(){return`"${je()}" "${it()}" ${Kn.join(" ")}`}function Pr(e){return new Promise(n=>{(0,ot.execFile)("reg",e,{windowsHide:!0},(r,o)=>{n({ok:!r,stdout:o||""})})})}async function $a(){let e=Jo(),{ok:n}=await Pr(["ADD","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",bt,"/t","REG_SZ","/D",e,"/F"]);return n}async function La(){let{ok:e,stdout:n}=await Pr(["QUERY","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",bt]);return e&&n.includes(bt)}function Ma(){let e=`${je()} ${it()} ${Kn.join(" ")}`;return`[Desktop Entry]
48
+ `}function Ia(){return(0,$.existsSync)(J.darwin)}function Oa(){let e=Kn.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
49
+ WshShell.Run """${je()}"" ""${st()}"" ${e}", 0, False
50
+ `}function Ca(){try{(0,it.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",jn,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function $a(){return(0,$.existsSync)(J.win)}function La(){let e=`${je()} ${st()} ${Kn.join(" ")}`;return`[Desktop Entry]
49
51
  Type=Application
50
- Name=${bt}
52
+ Name=${jn}
51
53
  Exec=${e}
52
54
  X-GNOME-Autostart-enabled=true
53
55
  NoDisplay=false
54
56
  Terminal=false
55
- `}function Na(){let e=Kn.map(n=>`'${n}'`).join(" ");return`[Unit]
56
- Description=${bt} Agent
57
+ `}function Ma(){let e=Kn.map(n=>`'${n}'`).join(" ");return`[Unit]
58
+ Description=${jn} Agent
57
59
  After=network-online.target
58
60
  Wants=network-online.target
59
61
 
60
62
  [Service]
61
63
  Type=simple
62
- ExecStart=${je()} ${it()} ${e}
64
+ ExecStart=${je()} ${st()} ${e}
63
65
  Restart=always
64
66
  RestartSec=10
65
67
  Environment=PATH=${qo()}
66
- Environment=HOME=${tn}
67
- StandardOutput=append:${jn}
68
- StandardError=append:${jn}
68
+ Environment=HOME=${en}
69
+ StandardOutput=append:${Hn}
70
+ StandardError=append:${Hn}
69
71
 
70
72
  [Install]
71
73
  WantedBy=default.target
72
- `}function Da(e){try{return(0,ot.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Fa(){return(0,B.existsSync)(ue.linux)||(0,B.existsSync)(ue.linuxSystemd)}async function Ua(){try{if(process.platform==="darwin")return Ca();if(process.platform==="win32")return await La();if(process.platform==="linux")return Fa()}catch{}return!1}async function Xo(){try{if(!await Ua())return!1;if(process.platform==="darwin"){let e=Oa(je(),it());return((0,B.existsSync)(ue.darwin)?(0,B.readFileSync)(ue.darwin,"utf8"):"")===e?!1:((0,B.writeFileSync)(ue.darwin,e),!0)}if(process.platform==="win32"){let e=Jo(),{ok:n,stdout:r}=await Pr(["QUERY","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",bt]);return n&&r.includes(e)?!1:await $a()}if(process.platform==="linux"){if((0,B.existsSync)(ue.linuxSystemd)){let e=Na();return(0,B.readFileSync)(ue.linuxSystemd,"utf8")===e?!1:((0,B.writeFileSync)(ue.linuxSystemd,e),Da(["daemon-reload"]),!0)}if((0,B.existsSync)(ue.linux)){let e=Ma();return(0,B.readFileSync)(ue.linux,"utf8")===e?!1:((0,B.writeFileSync)(ue.linux,e),!0)}}}catch{}return!1}var N="https://9remote.cc",Zo=3e4,zo=500,Ir=300,ge={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Ke={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},re={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},Ie={maxLogLines:200,headerWidth:44},At={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},ei=5e3,ti=2,ni=3e4,fe={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Ba=Oe.default.dirname((0,ri.fileURLToPath)(__importMetaUrl)),oi=3e3;var Wn=2208,Or=Oe.default.join(kt.default.homedir(),".9remote","cloudflared.pid");function Ha(){try{Go()}catch{}try{if((0,q.existsSync)(Or)){let e=parseInt((0,q.readFileSync)(Or,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,q.unlinkSync)(Or)}catch{}}}catch{}try{process.platform==="win32"?(0,nn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Wn}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,nn.execSync)(`lsof -ti:${Wn} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function ii(){return"2.0.70"}function si(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function ja(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,q.existsSync)("/.dockerenv")?"Docker":null}function Vn(){Ha()}async function ai(){try{let e=ii();if(!e)return null;let n=await G(pr,{signal:AbortSignal.timeout(oi)});if(!n.ok)return null;let{version:r}=await n.json();return r&&si(e,r)?{current:e,latest:r}:null}catch{return null}}var Gn=Oe.default.join(ne.STATE,At.lockFile);function Ka(){try{if((0,q.existsSync)(Gn)){let{pid:e,ts:n}=JSON.parse((0,q.readFileSync)(Gn,"utf8")),r=Date.now()-n<At.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,q.writeFileSync)(Gn,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Ga(){try{let e=await G(pr,{signal:AbortSignal.timeout(oi)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function Wa(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Va({currentVersion:e,latest:n,agentPid:r}){let o=Wo(),t=Wa(),i=je(),s=it(),a=Gn,c=`--prefer-online --no-audit --no-fund ${t}`.trim();if(process.platform==="win32"){let f=Oe.default.join(kt.default.tmpdir(),`${te}-restart.vbs`),p=`@echo off
74
+ `}function Na(e){try{return(0,it.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Da(){return(0,$.existsSync)(J.linux)||(0,$.existsSync)(J.linuxSystemd)}async function Fa(){try{if(process.platform==="darwin")return Ia();if(process.platform==="win32")return await $a();if(process.platform==="linux")return Da()}catch{}return!1}async function Jo(){try{if(process.platform==="win32"&&Ca(),!await Fa())return!1;if(process.platform==="darwin"){let e=Pa(je(),st());return((0,$.existsSync)(J.darwin)?(0,$.readFileSync)(J.darwin,"utf8"):"")===e?!1:((0,$.writeFileSync)(J.darwin,e),!0)}if(process.platform==="win32"){let e=Oa();return((0,$.existsSync)(J.win)?(0,$.readFileSync)(J.win,"utf8"):"")===e?!1:((0,$.writeFileSync)(J.win,e),!0)}if(process.platform==="linux"){if((0,$.existsSync)(J.linuxSystemd)){let e=Ma();return(0,$.readFileSync)(J.linuxSystemd,"utf8")===e?!1:((0,$.writeFileSync)(J.linuxSystemd,e),Na(["daemon-reload"]),!0)}if((0,$.existsSync)(J.linux)){let e=La();return(0,$.readFileSync)(J.linux,"utf8")===e?!1:((0,$.writeFileSync)(J.linux,e),!0)}}}catch{}return!1}var D="https://9remote.cc",Qo=3e4,Xo=500,Pr=300,ge={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Ke={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},oe={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},Ie={maxLogLines:200,headerWidth:44},bt={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},Zo=5e3,zo=2,ei=3e4,fe={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Ua=Oe.default.dirname((0,ti.fileURLToPath)(__importMetaUrl)),ni=3e3;var Wn=2208,Ir=Oe.default.join(At.default.homedir(),".9remote","cloudflared.pid");function Ba(){try{Ko()}catch{}try{if((0,Q.existsSync)(Ir)){let e=parseInt((0,Q.readFileSync)(Ir,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,Q.unlinkSync)(Ir)}catch{}}}catch{}try{process.platform==="win32"?(0,tn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Wn}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,tn.execSync)(`lsof -ti:${Wn} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function ri(){return"2.0.75"}function oi(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function Ha(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,Q.existsSync)("/.dockerenv")?"Docker":null}function Vn(){Ba()}async function ii(){try{let e=ri();if(!e)return null;let n=await G(pr,{signal:AbortSignal.timeout(ni)});if(!n.ok)return null;let{version:r}=await n.json();return r&&oi(e,r)?{current:e,latest:r}:null}catch{return null}}var Gn=Oe.default.join(re.STATE,bt.lockFile);function ja(){try{if((0,Q.existsSync)(Gn)){let{pid:e,ts:n}=JSON.parse((0,Q.readFileSync)(Gn,"utf8")),r=Date.now()-n<bt.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,Q.writeFileSync)(Gn,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Ka(){try{let e=await G(pr,{signal:AbortSignal.timeout(ni)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function Ga(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Wa({currentVersion:e,latest:n,agentPid:r}){let o=Go(),t=Ga(),i=je(),s=st(),a=Gn,c=`--prefer-online --no-audit --no-fund ${t}`.trim();if(process.platform==="win32"){let f=Oe.default.join(At.default.tmpdir(),`${ne}-restart.vbs`),p=`@echo off
73
75
  setlocal EnableDelayedExpansion
74
76
  set "NODE=${i}"
75
77
  set "CLI=${s}"
@@ -95,7 +97,7 @@ set ATTEMPT=0
95
97
  set /a ATTEMPT+=1
96
98
  call npm install -g ${Pe} ${c} >nul 2>&1
97
99
  if !ERRORLEVEL! EQU 0 goto verify
98
- if !ATTEMPT! GEQ ${At.maxRetry} (
100
+ if !ATTEMPT! GEQ ${bt.maxRetry} (
99
101
  call npm install -g ${Pe} ${c} --omit=optional >nul 2>&1
100
102
  goto verify
101
103
  )
@@ -104,7 +106,7 @@ goto installloop
104
106
 
105
107
  :verify
106
108
  set "NEWVER="
107
- set "VERFILE=%TEMP%\\${te}-ver.txt"
109
+ set "VERFILE=%TEMP%\\${ne}-ver.txt"
108
110
  "%NODE%" "%CLI%" --version > "%VERFILE%" 2>nul
109
111
  REM Read first line + strip surrounding whitespace/CR via for/f tokens
110
112
  for /f "usebackq tokens=* delims= " %%V in ("%VERFILE%") do (
@@ -115,14 +117,14 @@ for /f "usebackq tokens=* delims= " %%V in ("%VERFILE%") do (
115
117
  del /f /q "%VERFILE%" >nul 2>&1
116
118
  if defined NEWVER set "NEWVER=!NEWVER: =!"
117
119
  if not "!NEWVER!"=="${n}" (
118
- call npm install -g ${te}@${e} ${c} >nul 2>&1
120
+ call npm install -g ${ne}@${e} ${c} >nul 2>&1
119
121
  )
120
122
  del /f /q "${a}" >nul 2>&1
121
123
 
122
124
  wscript "${f}"
123
125
  exit /b 0
124
- `,d=Oe.default.join(kt.default.tmpdir(),`${te}-update.bat`);(0,q.writeFileSync)(d,p),(0,q.writeFileSync)(f,'CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" --tray --skip-update --start", 0, False'.replace("%NODE%",i).replace("%CLI%",s)+`
125
- `);let h=Oe.default.join(kt.default.tmpdir(),`${te}-update.vbs`);return(0,q.writeFileSync)(h,`CreateObject("WScript.Shell").Run "cmd /c ""${d}""", 0, False
126
+ `,d=Oe.default.join(At.default.tmpdir(),`${ne}-update.bat`);(0,Q.writeFileSync)(d,p),(0,Q.writeFileSync)(f,'CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" --tray --skip-update --start", 0, False'.replace("%NODE%",i).replace("%CLI%",s)+`
127
+ `);let h=Oe.default.join(At.default.tmpdir(),`${ne}-update.vbs`);return(0,Q.writeFileSync)(h,`CreateObject("WScript.Shell").Run "cmd /c ""${d}""", 0, False
126
128
  `),{shellCmd:["wscript.exe",[h]],windowsVerbatim:!1}}let l=`#!/bin/bash
127
129
  # Wait for agent to exit so it releases the cli.cjs file lock
128
130
  while kill -0 ${r} 2>/dev/null; do sleep 1; done
@@ -140,11 +142,11 @@ lsof -ti:${Wn} | xargs kill -9 2>/dev/null || true
140
142
  sleep 2
141
143
 
142
144
  attempt=0
143
- while [ $attempt -lt ${At.maxRetry} ]; do
145
+ while [ $attempt -lt ${bt.maxRetry} ]; do
144
146
  attempt=$((attempt+1))
145
147
  echo "Installing (attempt $attempt)..."
146
148
  if npm install -g ${Pe} ${c}; then break; fi
147
- if [ $attempt -eq ${At.maxRetry} ]; then
149
+ if [ $attempt -eq ${bt.maxRetry} ]; then
148
150
  npm install -g ${Pe} ${c} --omit=optional || true
149
151
  fi
150
152
  sleep 3
@@ -155,22 +157,22 @@ done
155
157
  NEWVER=$("${i}" "${s}" --version 2>/dev/null | head -1 | sed 's/\x1B[[0-9;?]*[a-zA-Z]//g' | tr -d '[:space:]')
156
158
  if [ "$NEWVER" != "${n}" ]; then
157
159
  echo "Verify failed (got $NEWVER, want ${n}), rolling back to ${e}..."
158
- npm install -g ${te}@${e} ${c} || true
160
+ npm install -g ${ne}@${e} ${c} || true
159
161
  fi
160
162
 
161
163
  rm -f "${a}"
162
164
  "${i}" "${s}" --tray --skip-update --start
163
- `,u=Oe.default.join(kt.default.tmpdir(),`${te}-update.sh`);return(0,q.writeFileSync)(u,l,{mode:493}),{shellCmd:["sh",[u]],windowsVerbatim:!1}}async function ci(){let e=ii();if(!e||ja())return!1;let n=await Ga();if(!n||!si(e,n)||!Ka())return!1;let{shellCmd:r,windowsVerbatim:o}=Va({currentVersion:e,latest:n,agentPid:process.pid});return(0,nn.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var Ti=A(require("os"),1);var Jn=A(require("readline"),1),fi=A(require("http"),1);var Cr=require("child_process"),Ya={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function Yn(e){let n=Ya[e];n&&process.platform==="darwin"&&(0,Cr.exec)(`open "${n}"`,()=>{})}function ye({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function li({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=ye(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var E={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},pi=()=>Math.min(44,process.stdout.columns||44);function Lr(e,n=null){let o=pi()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return E.orange+"\u2551"+E.reset+a+" ".repeat(l)+E.orange+"\u2551"+E.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return E.orange+"\u2551"+E.reset+" ".repeat(u)+c(a)+" ".repeat(f)+E.orange+"\u2551"+E.reset},s=["",E.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+E.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>E.bold+E.orange+a+E.reset),i("Remote terminal access from anywhere",a=>E.dim+a+E.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${Pe}`,a=>E.dim+a+E.reset)),s.push(t())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
164
- `)}function Pt(e,n=null){console.log(Lr(e,n))}var ui=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],$r=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],Qa=process.platform==="win32",qa=Qa?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var di=(e,n)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>di("SIGINT",130));process.on("SIGTERM",()=>di("SIGTERM",143));var Ce=0,st=null,Qn=0,Te=-1,rn=null,_t=null,qn=!1;function mi(){let e=[],n=Te===$r.length-1;return $r.forEach((r,o)=>{let t=o===Te&&rn?rn:r.desc;if(o<Te||n&&o===Te)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),_t&&o===_t.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${_t.text}${E.reset}`);else if(o===Te){let i=ui[Qn%ui.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${t}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function hi(){let e=mi();Ce>0&&process.stdout.write(`\x1B[${Ce}A\x1B[0J`),process.stdout.write(e.join(`
165
+ `,u=Oe.default.join(At.default.tmpdir(),`${ne}-update.sh`);return(0,Q.writeFileSync)(u,l,{mode:493}),{shellCmd:["sh",[u]],windowsVerbatim:!1}}async function si(){let e=ri();if(!e||Ha())return!1;let n=await Ka();if(!n||!oi(e,n)||!ja())return!1;let{shellCmd:r,windowsVerbatim:o}=Wa({currentVersion:e,latest:n,agentPid:process.pid});return(0,tn.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var Si=A(require("os"),1);var Qn=A(require("readline"),1),li=A(require("http"),1);var Or=require("child_process"),Va={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function Yn(e){let n=Va[e];n&&process.platform==="darwin"&&(0,Or.exec)(`open "${n}"`,()=>{})}function ye({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function ai({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=ye(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var E={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},ui=()=>Math.min(44,process.stdout.columns||44);function $r(e,n=null){let o=ui()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return E.orange+"\u2551"+E.reset+a+" ".repeat(l)+E.orange+"\u2551"+E.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return E.orange+"\u2551"+E.reset+" ".repeat(u)+c(a)+" ".repeat(f)+E.orange+"\u2551"+E.reset},s=["",E.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+E.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>E.bold+E.orange+a+E.reset),i("Remote terminal access from anywhere",a=>E.dim+a+E.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${Pe}`,a=>E.dim+a+E.reset)),s.push(t())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
166
+ `)}function _t(e,n=null){console.log($r(e,n))}var ci=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],Cr=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],Ya=process.platform==="win32",qa=Ya?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var fi=(e,n)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>fi("SIGINT",130));process.on("SIGTERM",()=>fi("SIGTERM",143));var Ce=0,at=null,qn=0,Te=-1,nn=null,kt=null,Jn=!1;function pi(){let e=[],n=Te===Cr.length-1;return Cr.forEach((r,o)=>{let t=o===Te&&nn?nn:r.desc;if(o<Te||n&&o===Te)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),kt&&o===kt.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${kt.text}${E.reset}`);else if(o===Te){let i=ci[qn%ci.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${t}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function di(){let e=pi();Ce>0&&process.stdout.write(`\x1B[${Ce}A\x1B[0J`),process.stdout.write(e.join(`
165
167
  `)+`
166
- `),Ce=e.length}function gi(){if(Ce===0||Te<0)return;let e=mi();if(e.length!==Ce){hi();return}let n=Te+(_t&&_t.afterIdx<Te?1:0),r=Ce-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function Ja(){qn||(process.stdout.write("\x1B[?25l"),qn=!0)}function yi(){qn&&(process.stdout.write("\x1B[?25h"),qn=!1)}function wi(e,n=!1,r=null){st&&(clearInterval(st),st=null),Te=e,rn=r,Qn=0,n||(Ce=0),hi(),e<$r.length-1?(Ja(),st=setInterval(()=>{Qn++,gi()},qa)):yi()}function It(e){rn=e,Ce>0&&gi()}function vi(){st&&(clearInterval(st),st=null),yi(),Ce=0,Te=-1,rn=null,_t=null,Qn=0}function xe(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let v=typeof o=="function"?o():o;if(v)for(let T of v.split(`
168
+ `),Ce=e.length}function mi(){if(Ce===0||Te<0)return;let e=pi();if(e.length!==Ce){di();return}let n=Te+(kt&&kt.afterIdx<Te?1:0),r=Ce-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function Ja(){Jn||(process.stdout.write("\x1B[?25l"),Jn=!0)}function hi(){Jn&&(process.stdout.write("\x1B[?25h"),Jn=!1)}function gi(e,n=!1,r=null){at&&(clearInterval(at),at=null),Te=e,nn=r,qn=0,n||(Ce=0),di(),e<Cr.length-1?(Ja(),at=setInterval(()=>{qn++,mi()},qa)):hi()}function Pt(e){nn=e,Ce>0&&mi()}function yi(){at&&(clearInterval(at),at=null),hi(),Ce=0,Te=-1,nn=null,kt=null,qn=0}function xe(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let v=typeof o=="function"?o():o;if(v)for(let T of v.split(`
167
169
  `))process.stdout.write(T+`\x1B[K
168
170
  `);e&&process.stdout.write(`${E.dim}${e}${E.reset}\x1B[K
169
171
  \x1B[K
170
172
  `),n.forEach((T,P)=>{let x=P===a?u?">":"\u2605":u?" ":"\u2606",b=P===a?` \x1B[7m${E.bold}${x} ${T.label}${E.reset}`:` ${x} ${T.label}`;process.stdout.write(b+`\x1B[K
171
- `)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(v,T)=>{!c||!T||(T.name==="up"?(a=(a-1+n.length)%n.length,f()):T.name==="down"?(a=(a+1)%n.length,f()):T.name==="return"?(p(),s(a)):T.name==="escape"?(p(),s(-1)):T.ctrl&&T.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),Jn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),t&&t(f,()=>{c&&(p(),s(-2))})})}function Mr(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),Jn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
173
+ `)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(v,T)=>{!c||!T||(T.name==="up"?(a=(a-1+n.length)%n.length,f()):T.name==="down"?(a=(a+1)%n.length,f()):T.name==="return"?(p(),s(a)):T.name==="escape"?(p(),s(-1)):T.ctrl&&T.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),Qn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),t&&t(f,()=>{c&&(p(),s(-2))})})}function Lr(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),Qn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
172
174
  `),process.exit(0));let i=(t.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
173
- `),n(i)};process.stdin.on("keypress",r)})}function Si(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=pi(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${E.orange}${"\u2550".repeat(t)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
175
+ `),n(i)};process.stdin.on("keypress",r)})}function wi(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=ui(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${E.orange}${"\u2550".repeat(t)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
174
176
  ${s}
175
177
  ${E.orange}${E.bold} \u{1F514} New Device Connection${E.reset}
176
178
  ${s}
@@ -178,74 +180,74 @@ ${s}
178
180
  IP: ${E.cyan}${n}${E.reset}
179
181
  ${s}
180
182
 
181
- Allow this device? ${E.dim}(y/n)${E.reset} `),Jn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let v=p,T=v?`${E.green}y${E.reset}
183
+ Allow this device? ${E.dim}(y/n)${E.reset} `),Qn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let v=p,T=v?`${E.green}y${E.reset}
182
184
 
183
185
  ${E.green}\u2713 Device approved${E.reset}
184
186
  `:`${E.red}n${E.reset}
185
187
 
186
188
  ${E.red}\u2717 Device rejected${E.reset}
187
- `;process.stdout.write(T),setTimeout(()=>{try{a()}catch{}r(v)},500)};process.stdin.on("keypress",c)})}function Ei(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=()=>{o||(r=fi.default.get(`http://localhost:${e}/api/ui/events`,c=>{let l="";s(),c.on("data",u=>{s(),l+=u.toString();let f=l.split(`
188
- `);l=f.pop();let p="";for(let d of f)if(d.startsWith("data: "))p=d.slice(6);else if(d===""&&p){try{let h=JSON.parse(p);n(h.type,h)}catch{}p=""}}),c.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(ce.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(ce.sse,1))}))};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var Nr=!1;function xi(e){Nr=e}async function X(e,n){try{return await fetch(`http://localhost:${I}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return null}}async function W(e){try{let n=await fetch(`http://localhost:${I}${e}`);return n.ok?await n.json():null}catch{return null}}async function F(e){await X("/api/ui/state",e)}async function K(e,n={}){Nr&&wi(e-1,e>C.PREPARING),await F({step:e,stepDesc:"",...n})}function Xn({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";Nr&&It(r),F({stepDesc:r})}async function oe(){return!!await W("/api/health")}async function Dr(){let[e,n,r,o]=await Promise.all([W("/api/ui/state"),W("/api/device/auto-approve"),W("/api/autostart"),W("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function Ri(){let e=Ti.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var vn=require("child_process"),Sn=A(require("path"),1),qr=A(require("fs"),1),es=require("url");var U=A(require("fs"),1),We=A(require("path"),1),Vr=A(require("https"),1),Ve=A(require("os"),1),Mi=A(require("net"),1),lt=require("child_process");var bi=A(require("dns"),1),Ai=require("child_process");var Xa=2e3,Za=5e3,ki=new bi.default.promises.Resolver;ki.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function Ot(){process.platform==="win32"&&(0,Ai.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function Fr(e,n=Xa){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([ki.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Zn(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&Ot(),o){let t=await Fr(o);if(!t.ok)return Ot(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await G(`${e}/api/health`,{signal:AbortSignal.timeout(Za)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var za=Q("tunnel"),on=null,sn=null,Ct=null,at=null,Ge=0,Ur=!1;async function Br(e){try{await fetch(`http://localhost:${I}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function _i(){if(!sn||Ur)return;let e=await Zn(sn),n=e.ok?"healthy":"unreachable";if(n===Ct){at=null,Ge=0;return}if(n!==at){at=n,Ge=1;return}Ge++,!(Ge<ti)&&(za.info(`\u{1FA7A} ${Ct??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),Ct=n,at=null,Ge=0,await Br({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function Pi(e){if(!e)return cn();e!==sn&&(sn=e,Ct=null,at=null,Ge=0,Ot(),on||(on=setInterval(_i,mo.checkIntervalMs)),_i())}var Ii=Pi,$t=Pi;function Oi(){Ur=!0}function Ci(){Ur=!1}function an(e){Ct=e,at=null,Ge=0,Br({tunnelHealth:{status:e,checkedAt:Date.now()}})}function cn(){on&&(clearInterval(on),on=null),sn=null,Ct=null,at=null,Ge=0,Br({tunnelHealth:{status:"unknown",checkedAt:null}})}var J=Q("tunnel"),fn={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},pn=null,zn=null,er=null,dn=null,Mt=!1,ln=0,Gr=!1,mn=null,tr=0,Hr=0,jr=!1,ec=3e4,tc=5e3,un=We.default.join(Ve.default.homedir(),".9remote","bin"),$i="cloudflared",hn=Ve.default.platform()==="win32",nc=hn?`${$i}.exe`:$i,Lt=We.default.join(un,nc),Kr=We.default.join(Ve.default.homedir(),".9remote","cloudflared.pid"),ct=!1,rc="2026.6.1",Ni=`https://github.com/cloudflare/cloudflared/releases/download/${rc}`;function Di(){return new Promise(e=>{let n=new Mi.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(fn.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(fn.internetCheckPort,fn.internetCheckHost)}catch{o(!1)}})}async function oc(){Gr=!0;try{let e=0;for(;;){if(e++,await Di())return;await new Promise(n=>setTimeout(n,ye(ce.internet,e)))}}finally{Gr=!1}}async function nr(e,n){if(!dn){J.warn("\u26A0\uFE0F No restartCallback registered \u2014 skip");return}if(Mt){J.info(`\u23ED restart already in flight, skip (${n})`);return}if(Date.now()-Hr<tc){J.info(`\u23ED restart debounced, skip (${n})`);return}Hr=Date.now(),Mt=!0;try{await oc();let r=ye(ce.tunnelRestart,ln+1);await new Promise(o=>setTimeout(o,r)),await dn(e),ln=0,Hr=0}catch(r){ln++,J.error(`\u274C restart failed (#${ln}): ${r?.message||r}`),setImmediate(()=>{Mt=!1,nr(e,"retry after fail")});return}finally{Mt=!1}}var ic={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function sc(){let e=Ve.default.platform(),n=Ve.default.arch(),r=ic[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${Ni}/${o}`}var ac=150;async function Fi(e,n,r){return new Promise((o,t)=>{let i=U.default.createWriteStream(n);Vr.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),U.default.unlinkSync(n),Fi(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),U.default.unlinkSync(n),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=ac&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",f=>{i.close(),U.default.unlinkSync(n),t(f)})}).on("error",s=>{i.close(),U.default.existsSync(n)&&U.default.unlinkSync(n),t(s)})})}async function gn(e){if(U.default.existsSync(un)||U.default.mkdirSync(un,{recursive:!0}),U.default.existsSync(Lt))return hn||U.default.chmodSync(Lt,"755"),Lt;let n=sc(),r=n.endsWith(".tgz"),o=r?We.default.join(un,"cloudflared.tgz"):Lt;try{return e?.({phase:"download",percent:0}),await Fi(n,o,t=>{e?.({phase:"download",percent:t})}),await cc(n,o),r&&(e?.({phase:"extract"}),(0,lt.execSync)(`tar -xzf "${o}" -C "${un}"`,{stdio:"pipe",windowsHide:!0}),U.default.unlinkSync(o)),hn||U.default.chmodSync(Lt,"755"),Lt}catch(t){try{U.default.existsSync(o)&&U.default.unlinkSync(o)}catch{}throw console.error("\u274C Failed to download cloudflared:",t.message),t}}function Ui(e){return new Promise((n,r)=>{Vr.default.get(e,o=>{if([301,302].includes(o.statusCode))return Ui(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function cc(e,n){let r=We.default.basename(e),o;try{o=await Ui(`${Ni}/sha256sum.txt`)}catch(c){J.warn(`\u26A0\uFE0F sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
189
- `).find(c=>c.includes(r));if(!t){J.warn(`\u26A0\uFE0F No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(U.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`);J.info("\u2713 cloudflared SHA256 verified")}function lc(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Bi(e,n=null,r=null){let o=await gn();r&&(dn=r),er=e;let t=U.default.mkdtempSync(We.default.join(Ve.default.tmpdir(),"9remote-quick-")),i=We.default.join(t,"config.yml");U.default.writeFileSync(i,`# quick-tunnel
190
- `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{U.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,lt.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Be("cloudflared",c.pid),ct=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{f||(f=!0,a(),u(new Error("Quick tunnel timed out after 90s")))},9e4),v=T=>{let P=T.toString();d+=P,d.length>4096&&(d=d.slice(-4096));let x=lc(P);if(x){if(!f){f=!0,p=x,mn=x,tr=Date.now(),clearTimeout(h),a(),pc(),J.info(`\u2705 tunnel ready: ${x}`),l({child:c,tunnelUrl:x});return}x!==p&&(J.info(`\u{1F504} URL rotated: ${x}`),p=x,mn=x,tr=Date.now(),n?.(x))}};c.stdout.on("data",v),c.stderr.on("data",v),c.on("error",T=>{f||(f=!0,clearTimeout(h),a(),u(T))}),c.on("exit",(T,P)=>{if(a(),J.info(`\u{1F4A5} cloudflared exit pid=${c.pid} code=${T} signal=${P} intentional=${ct}`),ct||an("unreachable"),!f){f=!0,clearTimeout(h);let x=d.trim().split(`
191
- `).slice(-5).join(" | ");u(new Error(`cloudflared exited (code=${T}, signal=${P}) output: ${x||"(empty)"}`)),ct||nr(e,`initial spawn failed (code ${T})`);return}ct||nr(e,`quick tunnel exit code ${T}`)})})}function Wr(e){if(hn)try{(0,lt.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function uc(e){try{let n=[];if(hn){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,lt.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,lt.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
192
- `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))Wr(r),J.info(`\u2705 killed orphan cloudflared pid=${r}`)}catch{}}function ut(){if(!jr){jr=!0;try{try{if(U.default.existsSync(Kr)){let n=parseInt(U.default.readFileSync(Kr,"utf8"));Number.isFinite(n)&&(ct=!0,Wr(n)),U.default.unlinkSync(Kr)}}catch{}let e=Bn("cloudflared");ct=!0,e&&(Wr(e),J.info("\u2705 Cloudflared killed"),He("cloudflared")),uc(I)}finally{setTimeout(()=>{jr=!1},2e3)}}}function Hi(){ln=0,Mt=!1,dn=null,er=null,mn=null,dc()}var fc=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Li(){let e=Ve.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!fc.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function pc(){pn||(zn=Li(),pn=setInterval(async()=>{if(Gr||Mt||!dn||er==null)return;let e=Li(),n=e!==zn;zn=e;let r=Bn("cloudflared"),o=!r||!Ko(r);if(!(!n&&!o)){if(n&&!o&&tr&&Date.now()-tr<ec){J.info("\u23F8 Network change in cooldown, skip");return}if(n&&J.info("\u{1F504} Network change detected"),o&&J.info("\u{1F50D} Liveness watchdog: cloudflared not alive"),an("unreachable"),await new Promise(t=>setTimeout(t,fn.networkRestoreDelayMs)),!!await Di()){if(n&&!o&&mn){let t=!1;for(let i=0;i<2;i++){if((await Zn(mn)).ok){t=!0;break}i===0&&await new Promise(a=>setTimeout(a,2e3))}if(t){J.info("\u2705 Tunnel survived network change, skip restart");return}}n&&!o&&ut(),nr(er,n?"network change":"liveness watchdog")}}},fn.networkCheckIntervalMs))}function dc(){pn&&(clearInterval(pn),pn=null),zn=null}Ft();var Le=Q("server"),ts=Sn.default.dirname((0,es.fileURLToPath)(__importMetaUrl)),vc=Sn.default.resolve(ts,"./server.cjs"),Zi=Sn.default.resolve(ts,"../../index.js");function ir(e){try{process.platform==="win32"?(0,vn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,vn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function Ye(e,n,r){let o=null,t=!1,i=!0,s=0,a=null,c=()=>{i&&(ir(I),i=!1);let l=process.env.NODE_ENV==="development"&&qr.default.existsSync(Zi),u=l?Zi:vc;qr.default.existsSync(u)||(Le.error(`\u274C Server not found: ${u}`),process.exit(1));let f={...process.env,PORT:String(I)};l||delete f.NODE_ENV,o=(0,vn.spawn)("node",[u],{cwd:Sn.default.dirname(u),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:f}),a&&clearTimeout(a),a=setTimeout(()=>{s=0},Zo),o.on("exit",(p,d)=>{if(a&&(clearTimeout(a),a=null),t)return;Le.error(`\u{1F4A5} Server exited unexpectedly (code: ${p}, signal: ${d})`),s++;let h=ye(ce.server,s);Le.warn(`\u{1F504} Restarting server in ${h}ms (fail#${s})`),n&&(Le.info("\u2705 Restarting tunnel connection..."),n()),setTimeout(()=>{c(),r?.()},h)}),o.on("error",p=>{Le.error(`\u274C Server error: ${p.message}`)}),e?.(o)};return c(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}}}}function ft({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{cn()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{ut()}catch{}try{yn()}catch{}try{ir(I)}catch{}try{Hi()}catch{}try{So()}catch{}try{He("agent")}catch{}try{He("cloudflared")}catch{}r&&setTimeout(()=>process.exit(o),zo)}var zi=!1;function Qe(e,n){if(zi)return;zi=!0;let r=!1,o=t=>{r||(r=!0,Le.info(`\u{1F6D1} Stopping 9Remote (${t})...`),ft({serverManager:e,tunnelProcess:n}),Le.info("\u2705 Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{Le.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),Ir)}),process.on("unhandledRejection",t=>{Le.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),Ir)})}Ft();var Jr=Q("tunnel");async function pt(e,n,r){let o=0;for(;;){o++;try{return await Bi(e,n,r)}catch(t){let i=ye(ce.tunnelSpawn,o);Jr.warn(`\u26A0\uFE0F spawn attempt ${o} failed: ${t?.message||t} \u2014 retry in ${i}ms`),await new Promise(s=>setTimeout(s,i))}}}function Ut({onUrlUpdate:e,setTunnel:n}){return async r=>{try{let o=await pt(r,e);n(o.child),await e(o.tunnelUrl),Jr.info(`\u2705 Tunnel restarted: ${o.tunnelUrl}`)}catch(o){Jr.error(`\u274C Tunnel restart failed: ${o?.message||o}`)}}}async function qe(e,n={}){let r=n.intervalMs??Ke.intervalMs,o=n.timeoutMs??Ke.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await F({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>Ke.maxLogEntries?c.slice(-Ke.maxLogEntries):c;F({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,Ot(),i){let f=await Fr(i,Ke.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;It(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await G(t,{signal:AbortSignal.timeout(Ke.fetchTimeoutMs)}),p=Date.now()-u;if(It(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await F({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,Ke.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",v=h?"connecting...":d;It(`#${a} \u2192 ${v}`),l({attempt:a,status:v,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await F({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var Tn=Q("tunnel"),Xr=null,ns=null,rs=0;async function Me(e,n){if(n&&n===ns&&Date.now()-rs<ei){Tn.info(`\u23ED urlSync debounced (same URL): ${n}`);return}Xr&&(Xr.cancelled=!0);let r={cancelled:!1};Xr=r;let o=Ri();li({config:ce.urlSync,label:`urlSync ${n}`,log:t=>Tn.warn(t),ctx:r,task:async()=>{let t=await G(`${N}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:n,localIp:o?`${o}:${I}`:null})});if(r.cancelled)return!0;if(t.ok)return ns=n,rs=Date.now(),Tn.info("\u2705 urlSync ok"),Sc(n),!0;let i=await t.text().catch(()=>"");return Tn.warn(`\u26A0\uFE0F urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&Ii(n)}var En=null;async function Sc(e){if(En?.url===e)return;let n={url:e};En=n,Oi();try{let r=await qe(e,{timeoutMs:ni});if(En!==n)return;r&&(an("healthy"),Tn.info("\u2705 fast probe healthy"))}catch{}finally{En===n&&(En=null),Ci()}}var ro=A(ks(),1);var Pc=30;async function Bt(e,n){try{let r=await G(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:Pc})});if(!r.ok){let o=await r.json();throw new Error(o.error||"Failed to create temp key")}return await r.json()}catch(r){return console.error("Error creating temp key:",r),null}}function Ic(e,n="\u{1F4F1} Scan QR to connect:"){console.log(fe.orange(`
193
- ${n}`)),ro.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function Oc(e){return new Promise(n=>{ro.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{n(fe.orangeDim("\u{1F4F1} Scan QR to connect:")+`
194
- `+r.trim())})})}async function lr(e,n){let r=await Bt(e,N);if(!r){console.log(m.red("\u274C Failed to create temp key"));return}let o=`${N}/login?k=${r.tempKey}`,t=Math.min(Ie.headerWidth,process.stdout.columns||55);await K(C.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:o,workerUrl:N}),Ic(o),console.log(m.gray(`
189
+ `;process.stdout.write(T),setTimeout(()=>{try{a()}catch{}r(v)},500)};process.stdin.on("keypress",c)})}function vi(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=()=>{o||(r=li.default.get(`http://localhost:${e}/api/ui/events`,c=>{let l="";s(),c.on("data",u=>{s(),l+=u.toString();let f=l.split(`
190
+ `);l=f.pop();let p="";for(let d of f)if(d.startsWith("data: "))p=d.slice(6);else if(d===""&&p){try{let h=JSON.parse(p);n(h.type,h)}catch{}p=""}}),c.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(le.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(le.sse,1))}))};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var Mr=!1;function Ei(e){Mr=e}async function Z(e,n){try{return await fetch(`http://localhost:${I}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return null}}async function W(e){try{let n=await fetch(`http://localhost:${I}${e}`);return n.ok?await n.json():null}catch{return null}}async function U(e){await Z("/api/ui/state",e)}async function K(e,n={}){Mr&&gi(e-1,e>C.PREPARING),await U({step:e,stepDesc:"",...n})}function Xn({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";Mr&&Pt(r),U({stepDesc:r})}async function ie(){return!!await W("/api/health")}async function Nr(){let[e,n,r,o]=await Promise.all([W("/api/ui/state"),W("/api/device/auto-approve"),W("/api/autostart"),W("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function Ti(){let e=Si.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var wn=require("child_process"),vn=A(require("path"),1),qr=A(require("fs"),1),Zi=require("url");var B=A(require("fs"),1),We=A(require("path"),1),Wr=A(require("https"),1),Ve=A(require("os"),1),$i=A(require("net"),1),ut=require("child_process");var xi=A(require("dns"),1),Ri=require("child_process");var Qa=2e3,Xa=5e3,bi=new xi.default.promises.Resolver;bi.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function It(){process.platform==="win32"&&(0,Ri.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function Dr(e,n=Qa){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([bi.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Zn(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&It(),o){let t=await Dr(o);if(!t.ok)return It(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await G(`${e}/api/health`,{signal:AbortSignal.timeout(Xa)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var Za=q("tunnel"),rn=null,on=null,Ot=null,ct=null,Ge=0,Fr=!1;async function Ur(e){try{await fetch(`http://localhost:${I}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function Ai(){if(!on||Fr)return;let e=await Zn(on),n=e.ok?"healthy":"unreachable";if(n===Ot){ct=null,Ge=0;return}if(n!==ct){ct=n,Ge=1;return}Ge++,!(Ge<zo)&&(Za.info(`\u{1FA7A} ${Ot??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),Ot=n,ct=null,Ge=0,await Ur({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function ki(e){if(!e)return an();e!==on&&(on=e,Ot=null,ct=null,Ge=0,It(),rn||(rn=setInterval(Ai,po.checkIntervalMs)),Ai())}var _i=ki,Ct=ki;function Pi(){Fr=!0}function Ii(){Fr=!1}function sn(e){Ot=e,ct=null,Ge=0,Ur({tunnelHealth:{status:e,checkedAt:Date.now()}})}function an(){rn&&(clearInterval(rn),rn=null),on=null,Ot=null,ct=null,Ge=0,Ur({tunnelHealth:{status:"unknown",checkedAt:null}})}var X=q("tunnel"),un={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},fn=null,zn=null,er=null,pn=null,Lt=!1,cn=0,Kr=!1,dn=null,tr=0,Br=0,Hr=!1,za=3e4,ec=5e3,ln=We.default.join(Ve.default.homedir(),".9remote","bin"),Oi="cloudflared",mn=Ve.default.platform()==="win32",tc=mn?`${Oi}.exe`:Oi,$t=We.default.join(ln,tc),jr=We.default.join(Ve.default.homedir(),".9remote","cloudflared.pid"),lt=!1,nc="2026.6.1",Li=`https://github.com/cloudflare/cloudflared/releases/download/${nc}`;function Mi(){return new Promise(e=>{let n=new $i.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(un.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(un.internetCheckPort,un.internetCheckHost)}catch{o(!1)}})}async function rc(){Kr=!0;try{let e=0;for(;;){if(e++,await Mi())return;await new Promise(n=>setTimeout(n,ye(le.internet,e)))}}finally{Kr=!1}}async function nr(e,n){if(!pn){X.warn("\u26A0\uFE0F No restartCallback registered \u2014 skip");return}if(Lt){X.info(`\u23ED restart already in flight, skip (${n})`);return}if(Date.now()-Br<ec){X.info(`\u23ED restart debounced, skip (${n})`);return}Br=Date.now(),Lt=!0;try{await rc();let r=ye(le.tunnelRestart,cn+1);await new Promise(o=>setTimeout(o,r)),await pn(e),cn=0,Br=0}catch(r){cn++,X.error(`\u274C restart failed (#${cn}): ${r?.message||r}`),setImmediate(()=>{Lt=!1,nr(e,"retry after fail")});return}finally{Lt=!1}}var oc={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function ic(){let e=Ve.default.platform(),n=Ve.default.arch(),r=oc[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${Li}/${o}`}var sc=150;async function Ni(e,n,r){return new Promise((o,t)=>{let i=B.default.createWriteStream(n);Wr.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),B.default.unlinkSync(n),Ni(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),B.default.unlinkSync(n),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=sc&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",f=>{i.close(),B.default.unlinkSync(n),t(f)})}).on("error",s=>{i.close(),B.default.existsSync(n)&&B.default.unlinkSync(n),t(s)})})}async function hn(e){if(B.default.existsSync(ln)||B.default.mkdirSync(ln,{recursive:!0}),B.default.existsSync($t))return mn||B.default.chmodSync($t,"755"),$t;let n=ic(),r=n.endsWith(".tgz"),o=r?We.default.join(ln,"cloudflared.tgz"):$t;try{return e?.({phase:"download",percent:0}),await Ni(n,o,t=>{e?.({phase:"download",percent:t})}),await ac(n,o),r&&(e?.({phase:"extract"}),(0,ut.execSync)(`tar -xzf "${o}" -C "${ln}"`,{stdio:"pipe",windowsHide:!0}),B.default.unlinkSync(o)),mn||B.default.chmodSync($t,"755"),$t}catch(t){try{B.default.existsSync(o)&&B.default.unlinkSync(o)}catch{}throw console.error("\u274C Failed to download cloudflared:",t.message),t}}function Di(e){return new Promise((n,r)=>{Wr.default.get(e,o=>{if([301,302].includes(o.statusCode))return Di(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function ac(e,n){let r=We.default.basename(e),o;try{o=await Di(`${Li}/sha256sum.txt`)}catch(c){X.warn(`\u26A0\uFE0F sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
191
+ `).find(c=>c.includes(r));if(!t){X.warn(`\u26A0\uFE0F No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(B.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`);X.info("\u2713 cloudflared SHA256 verified")}function cc(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Fi(e,n=null,r=null){let o=await hn();r&&(pn=r),er=e;let t=B.default.mkdtempSync(We.default.join(Ve.default.tmpdir(),"9remote-quick-")),i=We.default.join(t,"config.yml");B.default.writeFileSync(i,`# quick-tunnel
192
+ `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{B.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,ut.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Be("cloudflared",c.pid),lt=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{f||(f=!0,a(),u(new Error("Quick tunnel timed out after 90s")))},9e4),v=T=>{let P=T.toString();d+=P,d.length>4096&&(d=d.slice(-4096));let x=cc(P);if(x){if(!f){f=!0,p=x,dn=x,tr=Date.now(),clearTimeout(h),a(),fc(),X.info(`\u2705 tunnel ready: ${x}`),l({child:c,tunnelUrl:x});return}x!==p&&(X.info(`\u{1F504} URL rotated: ${x}`),p=x,dn=x,tr=Date.now(),n?.(x))}};c.stdout.on("data",v),c.stderr.on("data",v),c.on("error",T=>{f||(f=!0,clearTimeout(h),a(),u(T))}),c.on("exit",(T,P)=>{if(a(),X.info(`\u{1F4A5} cloudflared exit pid=${c.pid} code=${T} signal=${P} intentional=${lt}`),lt||sn("unreachable"),!f){f=!0,clearTimeout(h);let x=d.trim().split(`
193
+ `).slice(-5).join(" | ");u(new Error(`cloudflared exited (code=${T}, signal=${P}) output: ${x||"(empty)"}`)),lt||nr(e,`initial spawn failed (code ${T})`);return}lt||nr(e,`quick tunnel exit code ${T}`)})})}function Gr(e){if(mn)try{(0,ut.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function lc(e){try{let n=[];if(mn){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,ut.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,ut.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
194
+ `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))Gr(r),X.info(`\u2705 killed orphan cloudflared pid=${r}`)}catch{}}function ft(){if(!Hr){Hr=!0;try{try{if(B.default.existsSync(jr)){let n=parseInt(B.default.readFileSync(jr,"utf8"));Number.isFinite(n)&&(lt=!0,Gr(n)),B.default.unlinkSync(jr)}}catch{}let e=Un("cloudflared");lt=!0,e&&(Gr(e),X.info("\u2705 Cloudflared killed"),He("cloudflared")),lc(I)}finally{setTimeout(()=>{Hr=!1},2e3)}}}function Ui(){cn=0,Lt=!1,pn=null,er=null,dn=null,pc()}var uc=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Ci(){let e=Ve.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!uc.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function fc(){fn||(zn=Ci(),fn=setInterval(async()=>{if(Kr||Lt||!pn||er==null)return;let e=Ci(),n=e!==zn;zn=e;let r=Un("cloudflared"),o=!r||!jo(r);if(!(!n&&!o)){if(n&&!o&&tr&&Date.now()-tr<za){X.info("\u23F8 Network change in cooldown, skip");return}if(n&&X.info("\u{1F504} Network change detected"),o&&X.info("\u{1F50D} Liveness watchdog: cloudflared not alive"),sn("unreachable"),await new Promise(t=>setTimeout(t,un.networkRestoreDelayMs)),!!await Mi()){if(n&&!o&&dn){let t=!1;for(let i=0;i<2;i++){if((await Zn(dn)).ok){t=!0;break}i===0&&await new Promise(a=>setTimeout(a,2e3))}if(t){X.info("\u2705 Tunnel survived network change, skip restart");return}}n&&!o&&ft(),nr(er,n?"network change":"liveness watchdog")}}},un.networkCheckIntervalMs))}function pc(){fn&&(clearInterval(fn),fn=null),zn=null}Dt();var Le=q("server"),zi=vn.default.dirname((0,Zi.fileURLToPath)(__importMetaUrl)),wc=vn.default.resolve(zi,"./server.cjs"),Qi=vn.default.resolve(zi,"../../index.js");function ir(e){try{process.platform==="win32"?(0,wn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,wn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function Ye(e,n,r){let o=null,t=!1,i=!0,s=0,a=null,c=()=>{i&&(ir(I),i=!1);let l=process.env.NODE_ENV==="development"&&qr.default.existsSync(Qi),u=l?Qi:wc;qr.default.existsSync(u)||(Le.error(`\u274C Server not found: ${u}`),process.exit(1));let f={...process.env,PORT:String(I)};l||delete f.NODE_ENV,o=(0,wn.spawn)("node",[u],{cwd:vn.default.dirname(u),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:f}),a&&clearTimeout(a),a=setTimeout(()=>{s=0},Qo),o.on("exit",(p,d)=>{if(a&&(clearTimeout(a),a=null),t)return;Le.error(`\u{1F4A5} Server exited unexpectedly (code: ${p}, signal: ${d})`),s++;let h=ye(le.server,s);Le.warn(`\u{1F504} Restarting server in ${h}ms (fail#${s})`),n&&(Le.info("\u2705 Restarting tunnel connection..."),n()),setTimeout(()=>{c(),r?.()},h)}),o.on("error",p=>{Le.error(`\u274C Server error: ${p.message}`)}),e?.(o)};return c(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}}}}function pt({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{an()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{ft()}catch{}try{gn()}catch{}try{ir(I)}catch{}try{Ui()}catch{}try{vo()}catch{}try{He("agent")}catch{}try{He("cloudflared")}catch{}r&&setTimeout(()=>process.exit(o),Xo)}var Xi=!1;function qe(e,n){if(Xi)return;Xi=!0;let r=!1,o=t=>{r||(r=!0,Le.info(`\u{1F6D1} Stopping 9Remote (${t})...`),pt({serverManager:e,tunnelProcess:n}),Le.info("\u2705 Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{Le.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),Pr)}),process.on("unhandledRejection",t=>{Le.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),Pr)})}Dt();var Jr=q("tunnel");async function dt(e,n,r){let o=0;for(;;){o++;try{return await Fi(e,n,r)}catch(t){let i=ye(le.tunnelSpawn,o);Jr.warn(`\u26A0\uFE0F spawn attempt ${o} failed: ${t?.message||t} \u2014 retry in ${i}ms`),await new Promise(s=>setTimeout(s,i))}}}function Ft({onUrlUpdate:e,setTunnel:n}){return async r=>{try{let o=await dt(r,e);n(o.child),await e(o.tunnelUrl),Jr.info(`\u2705 Tunnel restarted: ${o.tunnelUrl}`)}catch(o){Jr.error(`\u274C Tunnel restart failed: ${o?.message||o}`)}}}async function Je(e,n={}){let r=n.intervalMs??Ke.intervalMs,o=n.timeoutMs??Ke.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>Ke.maxLogEntries?c.slice(-Ke.maxLogEntries):c;U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,It(),i){let f=await Dr(i,Ke.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;Pt(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await G(t,{signal:AbortSignal.timeout(Ke.fetchTimeoutMs)}),p=Date.now()-u;if(Pt(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await U({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,Ke.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",v=h?"connecting...":d;Pt(`#${a} \u2192 ${v}`),l({attempt:a,status:v,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await U({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var En=q("tunnel"),Qr=null,es=null,ts=0;async function Me(e,n){if(n&&n===es&&Date.now()-ts<Zo){En.info(`\u23ED urlSync debounced (same URL): ${n}`);return}Qr&&(Qr.cancelled=!0);let r={cancelled:!1};Qr=r;let o=Ti();ai({config:le.urlSync,label:`urlSync ${n}`,log:t=>En.warn(t),ctx:r,task:async()=>{let t=await G(`${D}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:n,localIp:o?`${o}:${I}`:null})});if(r.cancelled)return!0;if(t.ok)return es=n,ts=Date.now(),En.info("\u2705 urlSync ok"),vc(n),!0;let i=await t.text().catch(()=>"");return En.warn(`\u26A0\uFE0F urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&_i(n)}var Sn=null;async function vc(e){if(Sn?.url===e)return;let n={url:e};Sn=n,Pi();try{let r=await Je(e,{timeoutMs:ei});if(Sn!==n)return;r&&(sn("healthy"),En.info("\u2705 fast probe healthy"))}catch{}finally{Sn===n&&(Sn=null),Ii()}}var no=A(bs(),1);var _c=30;async function Ut(e,n){try{let r=await G(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:_c})});if(!r.ok){let o=await r.json();throw new Error(o.error||"Failed to create temp key")}return await r.json()}catch(r){return console.error("Error creating temp key:",r),null}}function Pc(e,n="\u{1F4F1} Scan QR to connect:"){console.log(fe.orange(`
195
+ ${n}`)),no.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function Ic(e){return new Promise(n=>{no.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{n(fe.orangeDim("\u{1F4F1} Scan QR to connect:")+`
196
+ `+r.trim())})})}async function lr(e,n){let r=await Ut(e,D);if(!r){console.log(m.red("\u274C Failed to create temp key"));return}let o=`${D}/login?k=${r.tempKey}`,t=Math.min(Ie.headerWidth,process.stdout.columns||55);await K(C.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:o,workerUrl:D}),Pc(o),console.log(m.gray(`
195
197
  QR will expire in 30 minutes (one-time use)
196
- `)),console.log(fe.orange("\u2550".repeat(t))),console.log(m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),console.log(m.white("One-Time Key".padEnd(14))+fe.orange.bold(r.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(fe.orange("\u2550".repeat(t)))}async function xn(e,n,r,o=""){let t=Math.min(Ie.headerWidth,process.stdout.columns||Ie.headerWidth),i=[];return e&&r?(i.push(await Oc(r)),i.push(m.gray(`
198
+ `)),console.log(fe.orange("\u2550".repeat(t))),console.log(m.white("App URL".padEnd(14))+m.gray(`${D}/login`)),console.log(m.white("One-Time Key".padEnd(14))+fe.orange.bold(r.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(fe.orange("\u2550".repeat(t)))}async function Tn(e,n,r,o=""){let t=Math.min(Ie.headerWidth,process.stdout.columns||Ie.headerWidth),i=[];return e&&r?(i.push(await Ic(r)),i.push(m.gray(`
197
199
  QR expires in 30 minutes (one-time use)
198
200
  `))):i.push(m.gray(`
199
201
  (One-time key used \u2014 generate a new one from menu)
200
- `)),i.push(fe.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),fo.showTunnelUrlInMenu&&i.push(m.white("Tunnel".padEnd(14))+(o?m.cyan(o):m.gray("\u2014"))),i.push(m.white("One-Time Key".padEnd(14))+(e?fe.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(n),fe.orange("\u2550".repeat(t))),i.join(`
201
- `)}var mt=Q("cmd");function Ze(e,n,r){let o=!1;setInterval(async()=>{if(o)return;let t=Eo();if(t){o=!0;try{if(t==="stop-tunnel")await _s(e,n);else if(t==="restart-tunnel")await _s(e,n),await Ps(e,n,r);else if(t==="start-tunnel"){if(await Ps(e,n,r)==="alreadyRunning"){o=!1;return}}else t==="regenerate-key"?await Cc():t==="shutdown"?$c(e,n):t==="update"&&await ci()}finally{o=!1}}},ge.cmdMs)}async function _s(e,n){cn();let r=e();r&&(r.kill(),n(null),mt.info("\u{1F6D1} Tunnel stopped")),await K(C.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),or({tunnelUrl:"",running:!0})}async function Ps(e,n,r){let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await W("/api/ui/state");return await K(C.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}mt.info("\u{1F680} Starting tunnel...");try{await K(C.PREPARING),await gn(Xn),await K(C.CONNECTING);let t=await G(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await K(C.TUNNELING);let i=async c=>{await Me(r,c),await F({tunnelUrl:c}),$t(c)},s=await pt(I,i,Ut({onUrlUpdate:i,setTunnel:c=>n(c)}));n(s.child),await K(C.VERIFYING),await qe(s.tunnelUrl)||mt.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Me(r,s.tunnelUrl),or({tunnelUrl:s.tunnelUrl,running:!0}),await new Promise(c=>setTimeout(c,re.postReadyHoldMs)),await lr(r,s.tunnelUrl)}catch(t){mt.error(`\u274C Failed to start tunnel: ${t.message}`),await K(C.STOPPED)}}async function Cc(){let e=await wt(),{key:n}=vt(e),r=$n();nt(e,n,r?.name||"Default"),await F({permanentKey:n}),mt.info(`\u2705 Key regenerated: ${Pn(n)}`)}function $c(e,n){mt.info("\u{1F6D1} Shutting down 9Remote completely...");let r=e();n(null),ft({tunnelProcess:r}),mt.info("\u2705 9Remote stopped")}async function Is(){Be("agent",process.pid),Pt(Se());let e=await Ue(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await oe(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Ye(null,null);o||await new Promise(a=>setTimeout(a,re.serverBootMs));let i=`http://localhost:${I}`;console.log(m.green(`
202
- \u{1F310} UI ready at ${i}`));let s=null;await F({permanentKey:e.key,step:C.STOPPED,theme:r}),Qe(t,null),Ze(()=>s,a=>{s=a},e.key),process.argv.includes("--start")&&St("start-tunnel"),await new Promise(()=>{})}Ft();async function Os(){Be("agent",process.pid),Xo().catch(()=>{});let e=await Ue(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await oe(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Ye(null,null);o||await new Promise(l=>setTimeout(l,re.serverBootMs));let i=`http://localhost:${I}`,s=null;await F({permanentKey:e.key,step:C.STOPPED,theme:r});let a=()=>{let l=s;s=null,ft({serverManager:t,tunnelProcess:l,exit:!1})};Qe(t,null),Ze(()=>s,l=>{s=l},e.key);try{He("cloudflared")}catch{}process.argv.includes("--start")&&St("start-tunnel"),await Yr({port:I,onQuit:a,onOpenUI:()=>wn(i)})&&Qr({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var ze=Q("mode");async function Lc(e){ze.info("\u{1F680} Starting server..."),await K(C.PREPARING);try{ut(),await new Promise(s=>setTimeout(s,re.killCloudflaredMs))}catch{}try{let s=await G(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return ze.error(`\u274C Session create failed: ${s.status}`),null}catch(s){return ze.error(`\u274C Session create failed: ${s.message}`),null}let n=await oe(),r=n?{getProcess:()=>null,shutdown:()=>{}}:Ye(null,null);n||await new Promise(s=>setTimeout(s,re.serverBootMs)),ze.info("\u2705 Starting tunnel..."),await K(C.CONNECTING);let o={current:null},t,i=async s=>{ze.info(`\u{1F504} Tunnel URL rotated: ${s}`),await Me(e,s),F({tunnelUrl:s}),$t(s)};try{let s=await pt(I,i,Ut({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return ze.error(`\u274C Failed to start tunnel: ${s.message}`),r.shutdown(),null}return await qe(t)||ze.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Me(e,t),Cn({apiKey:e,tunnelUrl:t,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:t}}async function Cs(){Pt(Se());let e=await Ue();ze.info(`Using key: ${Pn(e.key)} (${e.name})`);let n=await Lc(e.key);n||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:t}=n;await lr(e.key,t),Qe(r,o.current),Ze(()=>o.current,s=>{o.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;F({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},ge.statsMs),await new Promise(()=>{})}var $s=A(require("path"),1),Ls=A(require("fs"),1);Ft();async function Ms(){let e=`http://localhost:${I}`;await oe()&&(ir(I),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=Zt;try{Ls.default.mkdirSync($s.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=Qo(n),t&&Be("agent",t)}catch(c){console.log(m.red(`
203
- \u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+ge.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await oe()){s=!0;break}await new Promise(c=>setTimeout(c,ge.bgServerReadyIntervalMs))}s||(console.log(m.red(`
202
+ `)),i.push(fe.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${D}/login`)),uo.showTunnelUrlInMenu&&i.push(m.white("Tunnel".padEnd(14))+(o?m.cyan(o):m.gray("\u2014"))),i.push(m.white("One-Time Key".padEnd(14))+(e?fe.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(n),fe.orange("\u2550".repeat(t))),i.join(`
203
+ `)}var ht=q("cmd");function Ze(e,n,r){let o=!1;setInterval(async()=>{if(o)return;let t=So();if(t){o=!0;try{if(t==="stop-tunnel")await As(e,n);else if(t==="restart-tunnel")await As(e,n),await ks(e,n,r);else if(t==="start-tunnel"){if(await ks(e,n,r)==="alreadyRunning"){o=!1;return}}else t==="regenerate-key"?await Oc():t==="shutdown"?Cc(e,n):t==="update"&&await si()}finally{o=!1}}},ge.cmdMs)}async function As(e,n){an();let r=e();r&&(r.kill(),n(null),ht.info("\u{1F6D1} Tunnel stopped")),await K(C.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),or({tunnelUrl:"",running:!0})}async function ks(e,n,r){let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await W("/api/ui/state");return await K(C.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}ht.info("\u{1F680} Starting tunnel...");try{await K(C.PREPARING),await hn(Xn),await K(C.CONNECTING);let t=await G(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await K(C.TUNNELING);let i=async c=>{await Me(r,c),await U({tunnelUrl:c}),Ct(c)},s=await dt(I,i,Ft({onUrlUpdate:i,setTunnel:c=>n(c)}));n(s.child),await K(C.VERIFYING),await Je(s.tunnelUrl)||ht.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Me(r,s.tunnelUrl),or({tunnelUrl:s.tunnelUrl,running:!0}),await new Promise(c=>setTimeout(c,oe.postReadyHoldMs)),await lr(r,s.tunnelUrl)}catch(t){ht.error(`\u274C Failed to start tunnel: ${t.message}`),await K(C.STOPPED)}}async function Oc(){let e=await vt(),{key:n}=St(e),r=Cn();nt(e,n,r?.name||"Default"),await U({permanentKey:n}),ht.info(`\u2705 Key regenerated: ${_n(n)}`)}function Cc(e,n){ht.info("\u{1F6D1} Shutting down 9Remote completely...");let r=e();n(null),pt({tunnelProcess:r}),ht.info("\u2705 9Remote stopped")}async function _s(){Be("agent",process.pid),_t(Se());let e=await Ue(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await ie(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Ye(null,null);o||await new Promise(a=>setTimeout(a,oe.serverBootMs));let i=`http://localhost:${I}`;console.log(m.green(`
204
+ \u{1F310} UI ready at ${i}`));let s=null;await U({permanentKey:e.key,step:C.STOPPED,theme:r}),qe(t,null),Ze(()=>s,a=>{s=a},e.key),process.argv.includes("--start")&&Et("start-tunnel"),await new Promise(()=>{})}Dt();async function Ps(){Be("agent",process.pid),Jo().catch(()=>{});let e=await Ue(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await ie(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Ye(null,null);o||await new Promise(l=>setTimeout(l,oe.serverBootMs));let i=`http://localhost:${I}`,s=null;await U({permanentKey:e.key,step:C.STOPPED,theme:r});let a=()=>{let l=s;s=null,pt({serverManager:t,tunnelProcess:l,exit:!1})};qe(t,null),Ze(()=>s,l=>{s=l},e.key);try{He("cloudflared")}catch{}process.argv.includes("--start")&&Et("start-tunnel"),await Vr({port:I,onQuit:a,onOpenUI:()=>yn(i)})&&Yr({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var ze=q("mode");async function $c(e){ze.info("\u{1F680} Starting server..."),await K(C.PREPARING);try{ft(),await new Promise(s=>setTimeout(s,oe.killCloudflaredMs))}catch{}try{let s=await G(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return ze.error(`\u274C Session create failed: ${s.status}`),null}catch(s){return ze.error(`\u274C Session create failed: ${s.message}`),null}let n=await ie(),r=n?{getProcess:()=>null,shutdown:()=>{}}:Ye(null,null);n||await new Promise(s=>setTimeout(s,oe.serverBootMs)),ze.info("\u2705 Starting tunnel..."),await K(C.CONNECTING);let o={current:null},t,i=async s=>{ze.info(`\u{1F504} Tunnel URL rotated: ${s}`),await Me(e,s),U({tunnelUrl:s}),Ct(s)};try{let s=await dt(I,i,Ft({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return ze.error(`\u274C Failed to start tunnel: ${s.message}`),r.shutdown(),null}return await Je(t)||ze.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Me(e,t),On({apiKey:e,tunnelUrl:t,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:t}}async function Is(){_t(Se());let e=await Ue();ze.info(`Using key: ${_n(e.key)} (${e.name})`);let n=await $c(e.key);n||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:t}=n;await lr(e.key,t),qe(r,o.current),Ze(()=>o.current,s=>{o.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;U({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},ge.statsMs),await new Promise(()=>{})}var Os=A(require("path"),1),Cs=A(require("fs"),1);Dt();async function $s(){let e=`http://localhost:${I}`;await ie()&&(ir(I),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=Xt;try{Cs.default.mkdirSync(Os.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=Yo(n),t&&Be("agent",t)}catch(c){console.log(m.red(`
205
+ \u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+ge.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await ie()){s=!0;break}await new Promise(c=>setTimeout(c,ge.bgServerReadyIntervalMs))}s||(console.log(m.red(`
204
206
  \u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${o}
205
- `)),process.exit(1)),St("start-tunnel"),wn(e);let a=t?` (PID: ${t})`:"";console.log(m.green(`
207
+ `)),process.exit(1)),Et("start-tunnel"),yn(e);let a=t?` (PID: ${t})`:"";console.log(m.green(`
206
208
  \u{1F310} 9Remote running at ${e}${a}`)),console.log(m.gray(`\u{1F4A1} Log: ${o}
207
- `)),await new Promise(c=>setTimeout(c,re.bgSpawnFlushMs)),process.exit(0)}var Ns=A(require("readline"),1);var oo=Q("mode"),Ht=null;async function Ds(){console.clear(),vi(),xi(!0),await K(C.PREPARING);let e=await Ue(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await oe()){r=Ye(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{Ns.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let S=Date.now()+ge.serverReadyTimeoutMs;for(;Date.now()<S&&!await oe();)await new Promise(g=>setTimeout(g,ge.serverReadyIntervalMs))}try{ut(),await new Promise(S=>setTimeout(S,re.killCloudflaredTuiMs))}catch{}await gn(Xn),await K(C.CONNECTING);try{let S=await G(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!S.ok)throw new Error(`Session create failed: ${S.status}`)}catch(S){oo.error(`\u274C Failed to connect: ${S.message}`),process.exit(1)}await K(C.TUNNELING);let t,i,s={current:null},a=async S=>{await Me(e.key,S),await F({tunnelUrl:S}),$t(S)};try{let S=await pt(I,a,Ut({onUrlUpdate:a,setTunnel:g=>{s.current=g}}));t=S.child,i=S.tunnelUrl,s.current=t}catch(S){oo.error(`\u274C Tunnel failed: ${S.message}`),process.exit(1)}await K(C.VERIFYING),await qe(i)||oo.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Me(e.key,i),Cn({apiKey:e.key,tunnelUrl:i,tunnelPid:t.pid});let c=await Bt(e.key,N),l=c?`${N}/login?k=${c.tempKey}`:`${N}/login`;await K(C.READY,{tunnelUrl:i,oneTimeKey:c?.tempKey||"",oneTimeKeyExpiresAt:c?.expiresAt||null,permanentKey:e.key,qrUrl:l,workerUrl:N}),await new Promise(S=>setTimeout(S,re.trayReadyMs));let u=c?.tempKey||"",f=l,p=i,d=await xn(u,e.key,f,p),h=[],v=!1,T=()=>{v||n?.()},P=async(S,g,_)=>{if(!v){v=!0;try{let O=await Si(g,_);await X(`/api/device/${O?"approve":"reject"}`,{socketId:S})}catch{}finally{v=!1,n?.()}}},x=Ei(I,async(S,g)=>{if(S==="log"&&g.message)h.push(g.message),h.length>Ie.maxLogLines&&h.shift();else if(S==="state"){let _=g.permanentKey||e.key,O=g.oneTimeKey!==void 0?g.oneTimeKey:u,D=g.qrUrl!==void 0?g.qrUrl:f,j=g.tunnelUrl!==void 0?g.tunnelUrl:p;(O!==u||_!==e.key||j!==p)&&(u=O,f=D,p=j,g.permanentKey&&(e={...e,key:g.permanentKey}),d=await xn(u,e.key,f,p),T())}else S==="permissions"||S==="autostart"||S==="sleepInhibit"?(v||Ht?.(),T()):S==="deviceApproval"&&g.action==="pending"&&await P(g.socketId,g.deviceId,g.ip)}),b=setInterval(async()=>{if(v)return;let g=(await W("/api/device/pending"))?.pending?.[0];g&&await P(g.socketId,g.deviceId,g.ip)},ge.pendingApprovalMs);Qe({getProcess:r.getProcess,shutdown:()=>{r.shutdown(),x(),clearInterval(b)}},t),Ze(()=>s.current,S=>{s.current=S},e.key),await Mc(e,i,()=>d,S=>{d=S},S=>{n=S},()=>{try{x()}catch{}try{clearInterval(b)}catch{}ft({serverManager:r,tunnelProcess:t,exit:!1})},h)}async function Mc(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await Dr(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?m.green("ON"):m.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${m.dim("(Auto-approve:")} ${l?m.green("ON"):m.gray("OFF")}${m.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:m.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await xe("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${I}`,{openBrowser:v}=await Promise.resolve().then(()=>(Ft(),Xi));v(h),console.log(m.green(`
209
+ `)),await new Promise(c=>setTimeout(c,oe.bgSpawnFlushMs)),process.exit(0)}var Ls=A(require("readline"),1);var ro=q("mode"),Bt=null;async function Ms(){console.clear(),yi(),Ei(!0),await K(C.PREPARING);let e=await Ue(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await ie()){r=Ye(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{Ls.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let S=Date.now()+ge.serverReadyTimeoutMs;for(;Date.now()<S&&!await ie();)await new Promise(g=>setTimeout(g,ge.serverReadyIntervalMs))}try{ft(),await new Promise(S=>setTimeout(S,oe.killCloudflaredTuiMs))}catch{}await hn(Xn),await K(C.CONNECTING);try{let S=await G(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!S.ok)throw new Error(`Session create failed: ${S.status}`)}catch(S){ro.error(`\u274C Failed to connect: ${S.message}`),process.exit(1)}await K(C.TUNNELING);let t,i,s={current:null},a=async S=>{await Me(e.key,S),await U({tunnelUrl:S}),Ct(S)};try{let S=await dt(I,a,Ft({onUrlUpdate:a,setTunnel:g=>{s.current=g}}));t=S.child,i=S.tunnelUrl,s.current=t}catch(S){ro.error(`\u274C Tunnel failed: ${S.message}`),process.exit(1)}await K(C.VERIFYING),await Je(i)||ro.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Me(e.key,i),On({apiKey:e.key,tunnelUrl:i,tunnelPid:t.pid});let c=await Ut(e.key,D),l=c?`${D}/login?k=${c.tempKey}`:`${D}/login`;await K(C.READY,{tunnelUrl:i,oneTimeKey:c?.tempKey||"",oneTimeKeyExpiresAt:c?.expiresAt||null,permanentKey:e.key,qrUrl:l,workerUrl:D}),await new Promise(S=>setTimeout(S,oe.trayReadyMs));let u=c?.tempKey||"",f=l,p=i,d=await Tn(u,e.key,f,p),h=[],v=!1,T=()=>{v||n?.()},P=async(S,g,_)=>{if(!v){v=!0;try{let O=await wi(g,_);await Z(`/api/device/${O?"approve":"reject"}`,{socketId:S})}catch{}finally{v=!1,n?.()}}},x=vi(I,async(S,g)=>{if(S==="log"&&g.message)h.push(g.message),h.length>Ie.maxLogLines&&h.shift();else if(S==="state"){let _=g.permanentKey||e.key,O=g.oneTimeKey!==void 0?g.oneTimeKey:u,F=g.qrUrl!==void 0?g.qrUrl:f,j=g.tunnelUrl!==void 0?g.tunnelUrl:p;(O!==u||_!==e.key||j!==p)&&(u=O,f=F,p=j,g.permanentKey&&(e={...e,key:g.permanentKey}),d=await Tn(u,e.key,f,p),T())}else S==="permissions"||S==="autostart"||S==="sleepInhibit"?(v||Bt?.(),T()):S==="deviceApproval"&&g.action==="pending"&&await P(g.socketId,g.deviceId,g.ip)}),b=setInterval(async()=>{if(v)return;let g=(await W("/api/device/pending"))?.pending?.[0];g&&await P(g.socketId,g.deviceId,g.ip)},ge.pendingApprovalMs);qe({getProcess:r.getProcess,shutdown:()=>{r.shutdown(),x(),clearInterval(b)}},t),Ze(()=>s.current,S=>{s.current=S},e.key),await Lc(e,i,()=>d,S=>{d=S},S=>{n=S},()=>{try{x()}catch{}try{clearInterval(b)}catch{}pt({serverManager:r,tunnelProcess:t,exit:!1})},h)}async function Lc(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await Nr(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?m.green("ON"):m.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${m.dim("(Auto-approve:")} ${l?m.green("ON"):m.gray("OFF")}${m.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:m.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await xe("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${I}`,{openBrowser:v}=await Promise.resolve().then(()=>(Dt(),Ji));v(h),console.log(m.green(`
208
210
  \u{1F310} Opening ${h}
209
- `))}else if(d==="keys")await Nc(e,n,o,r);else if(d==="desktop")await Uc();else if(d==="devices")await Bc();else if(d==="settings")await Fc();else if(d==="logs")await Hc();else{try{i?.()}catch{}console.log(m.gray(`
211
+ `))}else if(d==="keys")await Mc(e,n,o,r);else if(d==="desktop")await Fc();else if(d==="devices")await Uc();else if(d==="settings")await Dc();else if(d==="logs")await Bc();else{try{i?.()}catch{}console.log(m.gray(`
210
212
  Goodbye!
211
- `)),process.exit(0)}}}async function Nc(e,n,r,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await xe("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await Bt(e.key,N);if(a){let c=`${N}/login?k=${a.tempKey}`;r(await xn(a.tempKey,e.key,c,n)),await F({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await Mr(m.yellow("\u26A0\uFE0F Replace current key and disconnect all sessions? Continue?"))){let c=await wt(),{key:l}=vt(c),u=nt(c,l,e.name||"Default");Object.assign(e,u),await F({permanentKey:e.key});let f=await Bt(e.key,N);if(f){let p=`${N}/login?k=${f.tempKey}`;r(await xn(f.tempKey,e.key,p,n)),await F({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var Fs={"30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function Dc(e,n){let r=n.map(s=>({label:Fs[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await xe("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await X("/api/sleep-inhibit",{mode:i})}async function Fc(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(Fs[n]||n)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await Dr();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),Ht=s;let a=await xe("Settings",t,0,"",l=>{i=l});Ht=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await X("/api/autostart",{enabled:!e});else if(c==="sleep")await Dc(n,r);else return}}async function Uc(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],t=null,i=async()=>{let a=await W("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),Ht=i;let s=await xe("Remote Desktop",o,0,"",a=>{t=a});if(Ht=null,s===0)await X("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await X("/api/permissions/request",{type:"screenRecording"})||Yn("screenRecording");else if(s===2&&!n.accessibility)await X("/api/permissions/request",{type:"accessibility"})||Yn("accessibility");else if(s===3||s===-1)return}}async function Bc(){for(;;){let[e,n]=await Promise.all([W("/api/device/approved"),W("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${m.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:m.gray("\u2190 Back"),action:"back"}],i=await xe(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await X("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await Mr(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await X("/api/device/remove",{deviceId:s.deviceId})}}async function Hc(){let e=Po(uo),n=e.length?e.join(`
213
+ `)),process.exit(0)}}}async function Mc(e,n,r,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await xe("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await Ut(e.key,D);if(a){let c=`${D}/login?k=${a.tempKey}`;r(await Tn(a.tempKey,e.key,c,n)),await U({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await Lr(m.yellow("\u26A0\uFE0F Replace current key and disconnect all sessions? Continue?"))){let c=await vt(),{key:l}=St(c),u=nt(c,l,e.name||"Default");Object.assign(e,u),await U({permanentKey:e.key});let f=await Ut(e.key,D);if(f){let p=`${D}/login?k=${f.tempKey}`;r(await Tn(f.tempKey,e.key,p,n)),await U({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var Ns={"30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function Nc(e,n){let r=n.map(s=>({label:Ns[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await xe("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await Z("/api/sleep-inhibit",{mode:i})}async function Dc(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(Ns[n]||n)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await Nr();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),Bt=s;let a=await xe("Settings",t,0,"",l=>{i=l});Bt=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await Z("/api/autostart",{enabled:!e});else if(c==="sleep")await Nc(n,r);else return}}async function Fc(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],t=null,i=async()=>{let a=await W("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),Bt=i;let s=await xe("Remote Desktop",o,0,"",a=>{t=a});if(Bt=null,s===0)await Z("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await Z("/api/permissions/request",{type:"screenRecording"})||Yn("screenRecording");else if(s===2&&!n.accessibility)await Z("/api/permissions/request",{type:"accessibility"})||Yn("accessibility");else if(s===3||s===-1)return}}async function Uc(){for(;;){let[e,n]=await Promise.all([W("/api/device/approved"),W("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${m.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:m.gray("\u2190 Back"),action:"back"}],i=await xe(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await Z("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await Lr(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await Z("/api/device/remove",{deviceId:s.deviceId})}}async function Bc(){let e=_o(lo),n=e.length?e.join(`
212
214
  `):m.gray(" No logs yet"),r=`
213
- ${m.dim("Log file:")} ${m.cyan(Zt)}
214
- ${m.dim(`Tail: tail -f ${Zt}`)}`;await xe("Logs",[{label:m.gray("\u2190 Back")}],0,n+r)}async function Us(){let e=Se(),n=await ai(),r=Lr(e,n?.latest??null),o=[];n?.latest&&o.push({label:m.yellow(`Update to v${n.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let t=await xe("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Ie.headerWidth,process.stdout.columns||Ie.headerWidth);Vn(),console.log(fe.orange(`
215
+ ${m.dim("Log file:")} ${m.cyan(Xt)}
216
+ ${m.dim(`Tail: tail -f ${Xt}`)}`;await xe("Logs",[{label:m.gray("\u2190 Back")}],0,n+r)}async function Ds(){let e=Se(),n=await ii(),r=$r(e,n?.latest??null),o=[];n?.latest&&o.push({label:m.yellow(`Update to v${n.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let t=await xe("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Ie.headerWidth,process.stdout.columns||Ie.headerWidth);Vn(),console.log(fe.orange(`
215
217
  `+"\u2550".repeat(s))),console.log(m.gray(` \u2713 Stopped running instances
216
218
  `)),console.log(m.yellow(` \u2B06 Run this command to update:
217
219
  `)),console.log(m.white.bold(` npm i -g ${Pe}
218
220
  `)),console.log(fe.orange("\u2550".repeat(s))+`
219
- `),process.exit(0)}else i==="ui"?await Ms():i==="tui"?await Ds():process.exit(0)}var Bs=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function io(){Pt(Se()),console.log(m.white.bold(`
221
+ `),process.exit(0)}else i==="ui"?await $s():i==="tui"?await Ms():process.exit(0)}var Fs=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function oo(){_t(Se()),console.log(m.white.bold(`
220
222
  Usage:
221
- `));let e=Math.max(...Bs.map(([n])=>n.length))+2;for(let[n,r]of Bs)console.log(" "+m.cyan(n.padEnd(e))+m.gray(r));console.log()}async function Rn(){return await oe()?!0:(console.log(m.red(`
223
+ `));let e=Math.max(...Fs.map(([n])=>n.length))+2;for(let[n,r]of Fs)console.log(" "+m.cyan(n.padEnd(e))+m.gray(r));console.log()}async function xn(){return await ie()?!0:(console.log(m.red(`
222
224
  \u2717 Server not running. Start it first: `)+m.cyan("9remote start")+`
223
- `),!1)}async function jc(e){if(!await Rn())return;if(e){let r=await X("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
225
+ `),!1)}async function Hc(e){if(!await xn())return;if(e){let r=await Z("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
224
226
  \u2717 Regenerate failed
225
227
  `));return}console.log(m.green(`
226
228
  \u2713 New key: `)+m.white.bold(o.permanentKey)+`
227
229
  `);return}let n=await W("/api/ui/state")||{};if(!n.permanentKey){console.log(m.red(`
228
230
  \u2717 No key yet. Run: `)+m.cyan("9remote start")+`
229
231
  `);return}console.log(m.white(`
230
- Key`.padEnd(14))+m.white.bold(n.permanentKey)),n.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(n.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${N}/login`)+`
231
- `)}async function Kc(){if(!await Rn())return;let e=await X("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(m.red(`
232
+ Key`.padEnd(14))+m.white.bold(n.permanentKey)),n.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(n.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${D}/login`)+`
233
+ `)}async function jc(){if(!await xn())return;let e=await Z("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(m.red(`
232
234
  \u2717 Failed to create one-time key
233
235
  `));return}console.log(m.green(`
234
236
  \u2713 One-time key (30 min): `)+m.white.bold(n.oneTimeKey)),console.log(m.white("Connect URL ")+m.cyan(n.qrUrl)+`
235
- `)}async function Gc(){if(!await Rn())return;let n=(await W("/api/device/approved")||{}).devices||[],r=await W("/api/device/auto-approve")||{};if(console.log(m.white(`
237
+ `)}async function Kc(){if(!await xn())return;let n=(await W("/api/device/approved")||{}).devices||[],r=await W("/api/device/auto-approve")||{};if(console.log(m.white(`
236
238
  Auto-approve: `)+(r.enabled?m.green("ON"):m.gray("OFF"))),!n.length){console.log(m.gray(`No approved devices
237
- `));return}console.log(m.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+m.cyan(o.deviceId));console.log()}async function Wc(e){if(!await Rn())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
239
+ `));return}console.log(m.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+m.cyan(o.deviceId));console.log()}async function Gc(e){if(!await xn())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
238
240
  \u2717 Usage: 9remote auto-approve <on|off>
239
- `));return}let r=await X("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(m.green(`
241
+ `));return}let r=await Z("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(m.green(`
240
242
  \u2713 Auto-approve: `)+(o?.enabled?m.green("ON"):m.gray("OFF"))+`
241
- `)}async function Vc(e){if(!await Rn())return;if(!e){let t=(await W("/api/device/pending")||{}).pending||[];if(!t.length){console.log(m.gray(`
243
+ `)}async function Wc(e){if(!await xn())return;if(!e){let t=(await W("/api/device/pending")||{}).pending||[];if(!t.length){console.log(m.gray(`
242
244
  No pending devices
243
245
  `));return}console.log(m.white(`
244
246
  Pending devices (${t.length}):`));for(let i of t)console.log(" "+m.cyan(i.socketId)+m.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(m.gray(`
245
247
  Approve with: `)+m.cyan("9remote approve <socketId>")+`
246
- `);return}let n=await X("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?m.green(`
248
+ `);return}let n=await Z("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?m.green(`
247
249
  \u2713 Approved
248
250
  `):m.red(`
249
251
  \u2717 Approve failed (invalid socketId?)
250
- `))}async function Hs(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return io(),!0;case"key":return await jc(r.includes("--new")),!0;case"otk":return await Kc(),!0;case"devices":return await Gc(),!0;case"auto-approve":return await Wc(r[0]),!0;case"approve":return await Vc(r[0]),!0;default:return!1}}var so=process.argv[2];(so==="version"||so==="--version"||so==="-v")&&(process.stdout.write(Se()+`
251
- `),process.exit(0));_o();async function Yc(){let e=process.argv[2];if(await Hs(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||Vn(),e==="ui"?await Is():e==="start"||process.argv.includes("--auto")?await Cs():process.argv.includes("--tray")||process.argv.includes("--start")?await Os():process.stdin.isTTY?await Us():io()}Yc().catch(console.error);
252
+ `))}async function Us(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return oo(),!0;case"key":return await Hc(r.includes("--new")),!0;case"otk":return await jc(),!0;case"devices":return await Kc(),!0;case"auto-approve":return await Gc(r[0]),!0;case"approve":return await Wc(r[0]),!0;default:return!1}}var io=process.argv[2];(io==="version"||io==="--version"||io==="-v")&&(process.stdout.write(Se()+`
253
+ `),process.exit(0));ko();async function Vc(){let e=process.argv[2];if(await Us(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||Vn(),e==="ui"?await _s():e==="start"||process.argv.includes("--auto")?await Is():process.argv.includes("--tray")||process.argv.includes("--start")?await Ps():process.stdin.isTTY?await Ds():oo()}Vc().catch(console.error);