import {getServerConf} from "./ljw.js?v=7" import {F as na, J as Oe, L as Ne, l as T4, m as r, s as oa, z as Z4} from "./vendor.js?v=0b990c6e"; import {ids as langIds, lang} from './lang.js?v=7' var ta = Object.defineProperty; var aa = (u, e, i) => e in u ? ta(u, e, {enumerable: !0, configurable: !0, writable: !0, value: i}) : u[e] = i; var d = (u, e, i) => (aa(u, typeof e != "symbol" ? e + "" : e, i), i), ue = (u, e, i) => { if (!e.has(u)) throw TypeError("Cannot " + i) }; var h = (u, e, i) => (ue(u, e, "read from private field"), i ? i.call(u) : e.get(u)), pu = (u, e, i) => { if (e.has(u)) throw TypeError("Cannot add the same private member more than once"); e instanceof WeakSet ? e.add(u) : e.set(u, i) }, B4 = (u, e, i, o) => (ue(u, e, "write to private field"), o ? o.call(u, i) : e.set(u, i), i), Te = (u, e, i, o) => ({ set _(a) { B4(u, e, a, i) }, get _() { return h(u, e, o) } }), je = (u, e, i) => (ue(u, e, "access private method"), i); const sa = function () { const e = document.createElement("link").relList; if (e && e.supports && e.supports("modulepreload")) return; for (const a of document.querySelectorAll('link[rel="modulepreload"]')) o(a); new MutationObserver(a => { for (const t of a) if (t.type === "childList") for (const s of t.addedNodes) s.tagName === "LINK" && s.rel === "modulepreload" && o(s) }).observe(document, {childList: !0, subtree: !0}); function i(a) { const t = {}; return a.integrity && (t.integrity = a.integrity), a.referrerpolicy && (t.referrerPolicy = a.referrerpolicy), a.crossorigin === "use-credentials" ? t.credentials = "include" : a.crossorigin === "anonymous" ? t.credentials = "omit" : t.credentials = "same-origin", t } function o(a) { if (a.ep) return; a.ep = !0; const t = i(a); fetch(a.href, t) } }; sa(); var ae = (u => (u[u.I420 = 0] = "I420", u[u.I444 = 1] = "I444", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(ae || {}); function la(u) { switch (u) { case 0: case"I420": return 0; case 1: case"I444": return 1; case-1: case"UNRECOGNIZED": default: return -1 } } function Ea(u) { switch (u) { case 0: return "I420"; case 1: return "I444"; case-1: default: return "UNRECOGNIZED" } } var D4 = (u => (u[u.Legacy = 0] = "Legacy", u[u.Map = 1] = "Map", u[u.Translate = 2] = "Translate", u[u.Auto = 3] = "Auto", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(D4 || {}); function da(u) { switch (u) { case 0: case"Legacy": return 0; case 1: case"Map": return 1; case 2: case"Translate": return 2; case 3: case"Auto": return 3; case-1: case"UNRECOGNIZED": default: return -1 } } function ca(u) { switch (u) { case 0: return "Legacy"; case 1: return "Map"; case 2: return "Translate"; case 3: return "Auto"; case-1: default: return "UNRECOGNIZED" } } var j = (u => (u[u.Unknown = 0] = "Unknown", u[u.Alt = 1] = "Alt", u[u.Backspace = 2] = "Backspace", u[u.CapsLock = 3] = "CapsLock", u[u.Control = 4] = "Control", u[u.Delete = 5] = "Delete", u[u.DownArrow = 6] = "DownArrow", u[u.End = 7] = "End", u[u.Escape = 8] = "Escape", u[u.F1 = 9] = "F1", u[u.F10 = 10] = "F10", u[u.F11 = 11] = "F11", u[u.F12 = 12] = "F12", u[u.F2 = 13] = "F2", u[u.F3 = 14] = "F3", u[u.F4 = 15] = "F4", u[u.F5 = 16] = "F5", u[u.F6 = 17] = "F6", u[u.F7 = 18] = "F7", u[u.F8 = 19] = "F8", u[u.F9 = 20] = "F9", u[u.Home = 21] = "Home", u[u.LeftArrow = 22] = "LeftArrow", u[u.Meta = 23] = "Meta", u[u.Option = 24] = "Option", u[u.PageDown = 25] = "PageDown", u[u.PageUp = 26] = "PageUp", u[u.Return = 27] = "Return", u[u.RightArrow = 28] = "RightArrow", u[u.Shift = 29] = "Shift", u[u.Space = 30] = "Space", u[u.Tab = 31] = "Tab", u[u.UpArrow = 32] = "UpArrow", u[u.Numpad0 = 33] = "Numpad0", u[u.Numpad1 = 34] = "Numpad1", u[u.Numpad2 = 35] = "Numpad2", u[u.Numpad3 = 36] = "Numpad3", u[u.Numpad4 = 37] = "Numpad4", u[u.Numpad5 = 38] = "Numpad5", u[u.Numpad6 = 39] = "Numpad6", u[u.Numpad7 = 40] = "Numpad7", u[u.Numpad8 = 41] = "Numpad8", u[u.Numpad9 = 42] = "Numpad9", u[u.Cancel = 43] = "Cancel", u[u.Clear = 44] = "Clear", u[u.Menu = 45] = "Menu", u[u.Pause = 46] = "Pause", u[u.Kana = 47] = "Kana", u[u.Hangul = 48] = "Hangul", u[u.Junja = 49] = "Junja", u[u.Final = 50] = "Final", u[u.Hanja = 51] = "Hanja", u[u.Kanji = 52] = "Kanji", u[u.Convert = 53] = "Convert", u[u.Select = 54] = "Select", u[u.Print = 55] = "Print", u[u.Execute = 56] = "Execute", u[u.Snapshot = 57] = "Snapshot", u[u.Insert = 58] = "Insert", u[u.Help = 59] = "Help", u[u.Sleep = 60] = "Sleep", u[u.Separator = 61] = "Separator", u[u.Scroll = 62] = "Scroll", u[u.NumLock = 63] = "NumLock", u[u.RWin = 64] = "RWin", u[u.Apps = 65] = "Apps", u[u.Multiply = 66] = "Multiply", u[u.Add = 67] = "Add", u[u.Subtract = 68] = "Subtract", u[u.Decimal = 69] = "Decimal", u[u.Divide = 70] = "Divide", u[u.Equals = 71] = "Equals", u[u.NumpadEnter = 72] = "NumpadEnter", u[u.RShift = 73] = "RShift", u[u.RControl = 74] = "RControl", u[u.RAlt = 75] = "RAlt", u[u.VolumeMute = 76] = "VolumeMute", u[u.VolumeUp = 77] = "VolumeUp", u[u.VolumeDown = 78] = "VolumeDown", u[u.Power = 79] = "Power", u[u.CtrlAltDel = 100] = "CtrlAltDel", u[u.LockScreen = 101] = "LockScreen", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(j || {}); function v4(u) { switch (u) { case 0: case"Unknown": return 0; case 1: case"Alt": return 1; case 2: case"Backspace": return 2; case 3: case"CapsLock": return 3; case 4: case"Control": return 4; case 5: case"Delete": return 5; case 6: case"DownArrow": return 6; case 7: case"End": return 7; case 8: case"Escape": return 8; case 9: case"F1": return 9; case 10: case"F10": return 10; case 11: case"F11": return 11; case 12: case"F12": return 12; case 13: case"F2": return 13; case 14: case"F3": return 14; case 15: case"F4": return 15; case 16: case"F5": return 16; case 17: case"F6": return 17; case 18: case"F7": return 18; case 19: case"F8": return 19; case 20: case"F9": return 20; case 21: case"Home": return 21; case 22: case"LeftArrow": return 22; case 23: case"Meta": return 23; case 24: case"Option": return 24; case 25: case"PageDown": return 25; case 26: case"PageUp": return 26; case 27: case"Return": return 27; case 28: case"RightArrow": return 28; case 29: case"Shift": return 29; case 30: case"Space": return 30; case 31: case"Tab": return 31; case 32: case"UpArrow": return 32; case 33: case"Numpad0": return 33; case 34: case"Numpad1": return 34; case 35: case"Numpad2": return 35; case 36: case"Numpad3": return 36; case 37: case"Numpad4": return 37; case 38: case"Numpad5": return 38; case 39: case"Numpad6": return 39; case 40: case"Numpad7": return 40; case 41: case"Numpad8": return 41; case 42: case"Numpad9": return 42; case 43: case"Cancel": return 43; case 44: case"Clear": return 44; case 45: case"Menu": return 45; case 46: case"Pause": return 46; case 47: case"Kana": return 47; case 48: case"Hangul": return 48; case 49: case"Junja": return 49; case 50: case"Final": return 50; case 51: case"Hanja": return 51; case 52: case"Kanji": return 52; case 53: case"Convert": return 53; case 54: case"Select": return 54; case 55: case"Print": return 55; case 56: case"Execute": return 56; case 57: case"Snapshot": return 57; case 58: case"Insert": return 58; case 59: case"Help": return 59; case 60: case"Sleep": return 60; case 61: case"Separator": return 61; case 62: case"Scroll": return 62; case 63: case"NumLock": return 63; case 64: case"RWin": return 64; case 65: case"Apps": return 65; case 66: case"Multiply": return 66; case 67: case"Add": return 67; case 68: case"Subtract": return 68; case 69: case"Decimal": return 69; case 70: case"Divide": return 70; case 71: case"Equals": return 71; case 72: case"NumpadEnter": return 72; case 73: case"RShift": return 73; case 74: case"RControl": return 74; case 75: case"RAlt": return 75; case 76: case"VolumeMute": return 76; case 77: case"VolumeUp": return 77; case 78: case"VolumeDown": return 78; case 79: case"Power": return 79; case 100: case"CtrlAltDel": return 100; case 101: case"LockScreen": return 101; case-1: case"UNRECOGNIZED": default: return -1 } } function j4(u) { switch (u) { case 0: return "Unknown"; case 1: return "Alt"; case 2: return "Backspace"; case 3: return "CapsLock"; case 4: return "Control"; case 5: return "Delete"; case 6: return "DownArrow"; case 7: return "End"; case 8: return "Escape"; case 9: return "F1"; case 10: return "F10"; case 11: return "F11"; case 12: return "F12"; case 13: return "F2"; case 14: return "F3"; case 15: return "F4"; case 16: return "F5"; case 17: return "F6"; case 18: return "F7"; case 19: return "F8"; case 20: return "F9"; case 21: return "Home"; case 22: return "LeftArrow"; case 23: return "Meta"; case 24: return "Option"; case 25: return "PageDown"; case 26: return "PageUp"; case 27: return "Return"; case 28: return "RightArrow"; case 29: return "Shift"; case 30: return "Space"; case 31: return "Tab"; case 32: return "UpArrow"; case 33: return "Numpad0"; case 34: return "Numpad1"; case 35: return "Numpad2"; case 36: return "Numpad3"; case 37: return "Numpad4"; case 38: return "Numpad5"; case 39: return "Numpad6"; case 40: return "Numpad7"; case 41: return "Numpad8"; case 42: return "Numpad9"; case 43: return "Cancel"; case 44: return "Clear"; case 45: return "Menu"; case 46: return "Pause"; case 47: return "Kana"; case 48: return "Hangul"; case 49: return "Junja"; case 50: return "Final"; case 51: return "Hanja"; case 52: return "Kanji"; case 53: return "Convert"; case 54: return "Select"; case 55: return "Print"; case 56: return "Execute"; case 57: return "Snapshot"; case 58: return "Insert"; case 59: return "Help"; case 60: return "Sleep"; case 61: return "Separator"; case 62: return "Scroll"; case 63: return "NumLock"; case 64: return "RWin"; case 65: return "Apps"; case 66: return "Multiply"; case 67: return "Add"; case 68: return "Subtract"; case 69: return "Decimal"; case 70: return "Divide"; case 71: return "Equals"; case 72: return "NumpadEnter"; case 73: return "RShift"; case 74: return "RControl"; case 75: return "RAlt"; case 76: return "VolumeMute"; case 77: return "VolumeUp"; case 78: return "VolumeDown"; case 79: return "Power"; case 100: return "CtrlAltDel"; case 101: return "LockScreen"; case-1: default: return "UNRECOGNIZED" } } var du = (u => (u[u.Text = 0] = "Text", u[u.Rtf = 1] = "Rtf", u[u.Html = 2] = "Html", u[u.ImageRgba = 21] = "ImageRgba", u[u.ImagePng = 22] = "ImagePng", u[u.ImageSvg = 23] = "ImageSvg", u[u.Special = 31] = "Special", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(du || {}); function Ca(u) { switch (u) { case 0: case"Text": return 0; case 1: case"Rtf": return 1; case 2: case"Html": return 2; case 21: case"ImageRgba": return 21; case 22: case"ImagePng": return 22; case 23: case"ImageSvg": return 23; case 31: case"Special": return 31; case-1: case"UNRECOGNIZED": default: return -1 } } function pa(u) { switch (u) { case 0: return "Text"; case 1: return "Rtf"; case 2: return "Html"; case 21: return "ImageRgba"; case 22: return "ImagePng"; case 23: return "ImageSvg"; case 31: return "Special"; case-1: default: return "UNRECOGNIZED" } } var dt = (u => (u[u.Dir = 0] = "Dir", u[u.DirLink = 2] = "DirLink", u[u.DirDrive = 3] = "DirDrive", u[u.File = 4] = "File", u[u.FileLink = 5] = "FileLink", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(dt || {}); function Da(u) { switch (u) { case 0: case"Dir": return 0; case 2: case"DirLink": return 2; case 3: case"DirDrive": return 3; case 4: case"File": return 4; case 5: case"FileLink": return 5; case-1: case"UNRECOGNIZED": default: return -1 } } function Ba(u) { switch (u) { case 0: return "Dir"; case 2: return "DirLink"; case 3: return "DirDrive"; case 4: return "File"; case 5: return "FileLink"; case-1: default: return "UNRECOGNIZED" } } var S4 = (u => (u[u.NotSet = 0] = "NotSet", u[u.Low = 2] = "Low", u[u.Balanced = 3] = "Balanced", u[u.Best = 4] = "Best", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(S4 || {}); function ma(u) { switch (u) { case 0: case"NotSet": return 0; case 2: case"Low": return 2; case 3: case"Balanced": return 3; case 4: case"Best": return 4; case-1: case"UNRECOGNIZED": default: return -1 } } function Aa(u) { switch (u) { case 0: return "NotSet"; case 2: return "Low"; case 3: return "Balanced"; case 4: return "Best"; case-1: default: return "UNRECOGNIZED" } } var t0 = (u => (u[u.Keyboard = 0] = "Keyboard", u[u.Clipboard = 2] = "Clipboard", u[u.Audio = 3] = "Audio", u[u.File = 4] = "File", u[u.Restart = 5] = "Restart", u[u.Recording = 6] = "Recording", u[u.BlockInput = 7] = "BlockInput", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(t0 || {}); function Fa(u) { switch (u) { case 0: case"Keyboard": return 0; case 2: case"Clipboard": return 2; case 3: case"Audio": return 3; case 4: case"File": return 4; case 5: case"Restart": return 5; case 6: case"Recording": return 6; case 7: case"BlockInput": return 7; case-1: case"UNRECOGNIZED": default: return -1 } } function _a(u) { switch (u) { case 0: return "Keyboard"; case 2: return "Clipboard"; case 3: return "Audio"; case 4: return "File"; case 5: return "Restart"; case 6: return "Recording"; case 7: return "BlockInput"; case-1: default: return "UNRECOGNIZED" } } var Au = (u => (u[u.Auto = 0] = "Auto", u[u.VP9 = 1] = "VP9", u[u.H264 = 2] = "H264", u[u.H265 = 3] = "H265", u[u.VP8 = 4] = "VP8", u[u.AV1 = 5] = "AV1", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(Au || {}); function va(u) { switch (u) { case 0: case"Auto": return 0; case 1: case"VP9": return 1; case 2: case"H264": return 2; case 3: case"H265": return 3; case 4: case"VP8": return 4; case 5: case"AV1": return 5; case-1: case"UNRECOGNIZED": default: return -1 } } function ka(u) { switch (u) { case 0: return "Auto"; case 1: return "VP9"; case 2: return "H264"; case 3: return "H265"; case 4: return "VP8"; case 5: return "AV1"; case-1: default: return "UNRECOGNIZED" } } var x = (u => (u[u.NotSet = 0] = "NotSet", u[u.No = 1] = "No", u[u.Yes = 2] = "Yes", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(x || {}); function tu(u) { switch (u) { case 0: case"NotSet": return 0; case 1: case"No": return 1; case 2: case"Yes": return 2; case-1: case"UNRECOGNIZED": default: return -1 } } function au(u) { switch (u) { case 0: return "NotSet"; case 1: return "No"; case 2: return "Yes"; case-1: default: return "UNRECOGNIZED" } } var A4 = (u => (u[u.BlkStateUnknown = 0] = "BlkStateUnknown", u[u.BlkOnSucceeded = 2] = "BlkOnSucceeded", u[u.BlkOnFailed = 3] = "BlkOnFailed", u[u.BlkOffSucceeded = 4] = "BlkOffSucceeded", u[u.BlkOffFailed = 5] = "BlkOffFailed", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(A4 || {}); function ga(u) { switch (u) { case 0: case"BlkStateUnknown": return 0; case 2: case"BlkOnSucceeded": return 2; case 3: case"BlkOnFailed": return 3; case 4: case"BlkOffSucceeded": return 4; case 5: case"BlkOffFailed": return 5; case-1: case"UNRECOGNIZED": default: return -1 } } function ha(u) { switch (u) { case 0: return "BlkStateUnknown"; case 2: return "BlkOnSucceeded"; case 3: return "BlkOnFailed"; case 4: return "BlkOffSucceeded"; case 5: return "BlkOffFailed"; case-1: default: return "UNRECOGNIZED" } } var ou = (u => (u[u.PrvStateUnknown = 0] = "PrvStateUnknown", u[u.PrvOnByOther = 2] = "PrvOnByOther", u[u.PrvNotSupported = 3] = "PrvNotSupported", u[u.PrvOnSucceeded = 4] = "PrvOnSucceeded", u[u.PrvOnFailedDenied = 5] = "PrvOnFailedDenied", u[u.PrvOnFailedPlugin = 6] = "PrvOnFailedPlugin", u[u.PrvOnFailed = 7] = "PrvOnFailed", u[u.PrvOffSucceeded = 8] = "PrvOffSucceeded", u[u.PrvOffByPeer = 9] = "PrvOffByPeer", u[u.PrvOffFailed = 10] = "PrvOffFailed", u[u.PrvOffUnknown = 11] = "PrvOffUnknown", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(ou || {}); function fa(u) { switch (u) { case 0: case"PrvStateUnknown": return 0; case 2: case"PrvOnByOther": return 2; case 3: case"PrvNotSupported": return 3; case 4: case"PrvOnSucceeded": return 4; case 5: case"PrvOnFailedDenied": return 5; case 6: case"PrvOnFailedPlugin": return 6; case 7: case"PrvOnFailed": return 7; case 8: case"PrvOffSucceeded": return 8; case 9: case"PrvOffByPeer": return 9; case 10: case"PrvOffFailed": return 10; case 11: case"PrvOffUnknown": return 11; case-1: case"UNRECOGNIZED": default: return -1 } } function xa(u) { switch (u) { case 0: return "PrvStateUnknown"; case 2: return "PrvOnByOther"; case 3: return "PrvNotSupported"; case 4: return "PrvOnSucceeded"; case 5: return "PrvOnFailedDenied"; case 6: return "PrvOnFailedPlugin"; case 7: return "PrvOnFailed"; case 8: return "PrvOffSucceeded"; case 9: return "PrvOffByPeer"; case 10: return "PrvOffFailed"; case 11: return "PrvOffUnknown"; case-1: default: return "UNRECOGNIZED" } } function Me() { return {data: new Uint8Array(0), key: !1, pts: 0} } const a0 = { encode(u, e = r.Writer.create()) { return u.data.length !== 0 && e.uint32(10).bytes(u.data), u.key !== !1 && e.uint32(16).bool(u.key), u.pts !== 0 && e.uint32(24).int64(u.pts), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Me(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.data = i.bytes(); continue; case 2: if (t !== 16) break; a.key = i.bool(); continue; case 3: if (t !== 24) break; a.pts = V(i.int64()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { data: n(u.data) ? R(u.data) : new Uint8Array(0), key: n(u.key) ? globalThis.Boolean(u.key) : !1, pts: n(u.pts) ? globalThis.Number(u.pts) : 0 } }, toJSON(u) { const e = {}; return u.data.length !== 0 && (e.data = I(u.data)), u.key !== !1 && (e.key = u.key), u.pts !== 0 && (e.pts = Math.round(u.pts)), e }, create(u) { return a0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = Me(); return e.data = (i = u.data) != null ? i : new Uint8Array(0), e.key = (o = u.key) != null ? o : !1, e.pts = (a = u.pts) != null ? a : 0, e } }; function Ue() { return {frames: []} } const k = { encode(u, e = r.Writer.create()) { for (const i of u.frames) a0.encode(i, e.uint32(10).fork()).ldelim(); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ue(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.frames.push(a0.decode(i, i.uint32())); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {frames: globalThis.Array.isArray(u == null ? void 0 : u.frames) ? u.frames.map(e => a0.fromJSON(e)) : []} }, toJSON(u) { var i; const e = {}; return (i = u.frames) != null && i.length && (e.frames = u.frames.map(o => a0.toJSON(o))), e }, create(u) { return k.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Ue(); return e.frames = ((i = u.frames) == null ? void 0 : i.map(o => a0.fromPartial(o))) || [], e } }; function Le() { return {compress: !1} } const o0 = { encode(u, e = r.Writer.create()) { return u.compress !== !1 && e.uint32(8).bool(u.compress), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Le(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.compress = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {compress: n(u.compress) ? globalThis.Boolean(u.compress) : !1} }, toJSON(u) { const e = {}; return u.compress !== !1 && (e.compress = u.compress), e }, create(u) { return o0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Le(); return e.compress = (i = u.compress) != null ? i : !1, e } }; function We() { return {compress: !1, stride: 0} } const n0 = { encode(u, e = r.Writer.create()) { return u.compress !== !1 && e.uint32(8).bool(u.compress), u.stride !== 0 && e.uint32(16).int32(u.stride), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = We(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.compress = i.bool(); continue; case 2: if (t !== 16) break; a.stride = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { compress: n(u.compress) ? globalThis.Boolean(u.compress) : !1, stride: n(u.stride) ? globalThis.Number(u.stride) : 0 } }, toJSON(u) { const e = {}; return u.compress !== !1 && (e.compress = u.compress), u.stride !== 0 && (e.stride = Math.round(u.stride)), e }, create(u) { return n0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = We(); return e.compress = (i = u.compress) != null ? i : !1, e.stride = (o = u.stride) != null ? o : 0, e } }; function Ve() { return { vp9s: void 0, rgb: void 0, yuv: void 0, h264s: void 0, h265s: void 0, vp8s: void 0, av1s: void 0, display: 0 } } const r0 = { encode(u, e = r.Writer.create()) { return u.vp9s !== void 0 && k.encode(u.vp9s, e.uint32(50).fork()).ldelim(), u.rgb !== void 0 && o0.encode(u.rgb, e.uint32(58).fork()).ldelim(), u.yuv !== void 0 && n0.encode(u.yuv, e.uint32(66).fork()).ldelim(), u.h264s !== void 0 && k.encode(u.h264s, e.uint32(82).fork()).ldelim(), u.h265s !== void 0 && k.encode(u.h265s, e.uint32(90).fork()).ldelim(), u.vp8s !== void 0 && k.encode(u.vp8s, e.uint32(98).fork()).ldelim(), u.av1s !== void 0 && k.encode(u.av1s, e.uint32(106).fork()).ldelim(), u.display !== 0 && e.uint32(112).int32(u.display), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ve(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 6: if (t !== 50) break; a.vp9s = k.decode(i, i.uint32()); continue; case 7: if (t !== 58) break; a.rgb = o0.decode(i, i.uint32()); continue; case 8: if (t !== 66) break; a.yuv = n0.decode(i, i.uint32()); continue; case 10: if (t !== 82) break; a.h264s = k.decode(i, i.uint32()); continue; case 11: if (t !== 90) break; a.h265s = k.decode(i, i.uint32()); continue; case 12: if (t !== 98) break; a.vp8s = k.decode(i, i.uint32()); continue; case 13: if (t !== 106) break; a.av1s = k.decode(i, i.uint32()); continue; case 14: if (t !== 112) break; a.display = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { vp9s: n(u.vp9s) ? k.fromJSON(u.vp9s) : void 0, rgb: n(u.rgb) ? o0.fromJSON(u.rgb) : void 0, yuv: n(u.yuv) ? n0.fromJSON(u.yuv) : void 0, h264s: n(u.h264s) ? k.fromJSON(u.h264s) : void 0, h265s: n(u.h265s) ? k.fromJSON(u.h265s) : void 0, vp8s: n(u.vp8s) ? k.fromJSON(u.vp8s) : void 0, av1s: n(u.av1s) ? k.fromJSON(u.av1s) : void 0, display: n(u.display) ? globalThis.Number(u.display) : 0 } }, toJSON(u) { const e = {}; return u.vp9s !== void 0 && (e.vp9s = k.toJSON(u.vp9s)), u.rgb !== void 0 && (e.rgb = o0.toJSON(u.rgb)), u.yuv !== void 0 && (e.yuv = n0.toJSON(u.yuv)), u.h264s !== void 0 && (e.h264s = k.toJSON(u.h264s)), u.h265s !== void 0 && (e.h265s = k.toJSON(u.h265s)), u.vp8s !== void 0 && (e.vp8s = k.toJSON(u.vp8s)), u.av1s !== void 0 && (e.av1s = k.toJSON(u.av1s)), u.display !== 0 && (e.display = Math.round(u.display)), e }, create(u) { return r0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Ve(); return e.vp9s = u.vp9s !== void 0 && u.vp9s !== null ? k.fromPartial(u.vp9s) : void 0, e.rgb = u.rgb !== void 0 && u.rgb !== null ? o0.fromPartial(u.rgb) : void 0, e.yuv = u.yuv !== void 0 && u.yuv !== null ? n0.fromPartial(u.yuv) : void 0, e.h264s = u.h264s !== void 0 && u.h264s !== null ? k.fromPartial(u.h264s) : void 0, e.h265s = u.h265s !== void 0 && u.h265s !== null ? k.fromPartial(u.h265s) : void 0, e.vp8s = u.vp8s !== void 0 && u.vp8s !== null ? k.fromPartial(u.vp8s) : void 0, e.av1s = u.av1s !== void 0 && u.av1s !== null ? k.fromPartial(u.av1s) : void 0, e.display = (i = u.display) != null ? i : 0, e } }; function qe() { return {id: "", pk: new Uint8Array(0)} } const oe = { encode(u, e = r.Writer.create()) { return u.id !== "" && e.uint32(10).string(u.id), u.pk.length !== 0 && e.uint32(18).bytes(u.pk), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = qe(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 18) break; a.pk = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: n(u.id) ? globalThis.String(u.id) : "", pk: n(u.pk) ? R(u.pk) : new Uint8Array(0)} }, toJSON(u) { const e = {}; return u.id !== "" && (e.id = u.id), u.pk.length !== 0 && (e.pk = I(u.pk)), e }, create(u) { return oe.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = qe(); return e.id = (i = u.id) != null ? i : "", e.pk = (o = u.pk) != null ? o : new Uint8Array(0), e } }; function Ke() { return { x: 0, y: 0, width: 0, height: 0, name: "", online: !1, cursor_embedded: !1, original_resolution: void 0, scale: 0 } } const s0 = { encode(u, e = r.Writer.create()) { return u.x !== 0 && e.uint32(8).sint32(u.x), u.y !== 0 && e.uint32(16).sint32(u.y), u.width !== 0 && e.uint32(24).int32(u.width), u.height !== 0 && e.uint32(32).int32(u.height), u.name !== "" && e.uint32(42).string(u.name), u.online !== !1 && e.uint32(48).bool(u.online), u.cursor_embedded !== !1 && e.uint32(56).bool(u.cursor_embedded), u.original_resolution !== void 0 && v.encode(u.original_resolution, e.uint32(66).fork()).ldelim(), u.scale !== 0 && e.uint32(73).double(u.scale), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ke(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.x = i.sint32(); continue; case 2: if (t !== 16) break; a.y = i.sint32(); continue; case 3: if (t !== 24) break; a.width = i.int32(); continue; case 4: if (t !== 32) break; a.height = i.int32(); continue; case 5: if (t !== 42) break; a.name = i.string(); continue; case 6: if (t !== 48) break; a.online = i.bool(); continue; case 7: if (t !== 56) break; a.cursor_embedded = i.bool(); continue; case 8: if (t !== 66) break; a.original_resolution = v.decode(i, i.uint32()); continue; case 9: if (t !== 73) break; a.scale = i.double(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { x: n(u.x) ? globalThis.Number(u.x) : 0, y: n(u.y) ? globalThis.Number(u.y) : 0, width: n(u.width) ? globalThis.Number(u.width) : 0, height: n(u.height) ? globalThis.Number(u.height) : 0, name: n(u.name) ? globalThis.String(u.name) : "", online: n(u.online) ? globalThis.Boolean(u.online) : !1, cursor_embedded: n(u.cursor_embedded) ? globalThis.Boolean(u.cursor_embedded) : !1, original_resolution: n(u.original_resolution) ? v.fromJSON(u.original_resolution) : void 0, scale: n(u.scale) ? globalThis.Number(u.scale) : 0 } }, toJSON(u) { const e = {}; return u.x !== 0 && (e.x = Math.round(u.x)), u.y !== 0 && (e.y = Math.round(u.y)), u.width !== 0 && (e.width = Math.round(u.width)), u.height !== 0 && (e.height = Math.round(u.height)), u.name !== "" && (e.name = u.name), u.online !== !1 && (e.online = u.online), u.cursor_embedded !== !1 && (e.cursor_embedded = u.cursor_embedded), u.original_resolution !== void 0 && (e.original_resolution = v.toJSON(u.original_resolution)), u.scale !== 0 && (e.scale = u.scale), e }, create(u) { return s0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c; const e = Ke(); return e.x = (i = u.x) != null ? i : 0, e.y = (o = u.y) != null ? o : 0, e.width = (a = u.width) != null ? a : 0, e.height = (t = u.height) != null ? t : 0, e.name = (s = u.name) != null ? s : "", e.online = (l = u.online) != null ? l : !1, e.cursor_embedded = (E = u.cursor_embedded) != null ? E : !1, e.original_resolution = u.original_resolution !== void 0 && u.original_resolution !== null ? v.fromPartial(u.original_resolution) : void 0, e.scale = (c = u.scale) != null ? c : 0, e } }; function He() { return {host: "", port: 0} } const l0 = { encode(u, e = r.Writer.create()) { return u.host !== "" && e.uint32(10).string(u.host), u.port !== 0 && e.uint32(16).int32(u.port), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = He(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.host = i.string(); continue; case 2: if (t !== 16) break; a.port = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {host: n(u.host) ? globalThis.String(u.host) : "", port: n(u.port) ? globalThis.Number(u.port) : 0} }, toJSON(u) { const e = {}; return u.host !== "" && (e.host = u.host), u.port !== 0 && (e.port = Math.round(u.port)), e }, create(u) { return l0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = He(); return e.host = (i = u.host) != null ? i : "", e.port = (o = u.port) != null ? o : 0, e } }; function Je() { return {dir: "", show_hidden: !1} } const Fu = { encode(u, e = r.Writer.create()) { return u.dir !== "" && e.uint32(10).string(u.dir), u.show_hidden !== !1 && e.uint32(16).bool(u.show_hidden), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Je(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.dir = i.string(); continue; case 2: if (t !== 16) break; a.show_hidden = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { dir: n(u.dir) ? globalThis.String(u.dir) : "", show_hidden: n(u.show_hidden) ? globalThis.Boolean(u.show_hidden) : !1 } }, toJSON(u) { const e = {}; return u.dir !== "" && (e.dir = u.dir), u.show_hidden !== !1 && (e.show_hidden = u.show_hidden), e }, create(u) { return Fu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Je(); return e.dir = (i = u.dir) != null ? i : "", e.show_hidden = (o = u.show_hidden) != null ? o : !1, e } }; function Ge() { return {username: "", password: ""} } const E0 = { encode(u, e = r.Writer.create()) { return u.username !== "" && e.uint32(10).string(u.username), u.password !== "" && e.uint32(18).string(u.password), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ge(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.username = i.string(); continue; case 2: if (t !== 18) break; a.password = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { username: n(u.username) ? globalThis.String(u.username) : "", password: n(u.password) ? globalThis.String(u.password) : "" } }, toJSON(u) { const e = {}; return u.username !== "" && (e.username = u.username), u.password !== "" && (e.password = u.password), e }, create(u) { return E0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Ge(); return e.username = (i = u.username) != null ? i : "", e.password = (o = u.password) != null ? o : "", e } }; function Ze() { return { username: "", password: new Uint8Array(0), my_id: "", my_name: "", option: void 0, file_transfer: void 0, port_forward: void 0, video_ack_required: !1, session_id: 0, version: "", os_login: void 0, my_platform: "", hwid: new Uint8Array(0) } } const H = { encode(u, e = r.Writer.create()) { return u.username !== "" && e.uint32(10).string(u.username), u.password.length !== 0 && e.uint32(18).bytes(u.password), u.my_id !== "" && e.uint32(34).string(u.my_id), u.my_name !== "" && e.uint32(42).string(u.my_name), u.option !== void 0 && z.encode(u.option, e.uint32(50).fork()).ldelim(), u.file_transfer !== void 0 && Fu.encode(u.file_transfer, e.uint32(58).fork()).ldelim(), u.port_forward !== void 0 && l0.encode(u.port_forward, e.uint32(66).fork()).ldelim(), u.video_ack_required !== !1 && e.uint32(72).bool(u.video_ack_required), u.session_id !== 0 && e.uint32(80).uint64(u.session_id), u.version !== "" && e.uint32(90).string(u.version), u.os_login !== void 0 && E0.encode(u.os_login, e.uint32(98).fork()).ldelim(), u.my_platform !== "" && e.uint32(106).string(u.my_platform), u.hwid.length !== 0 && e.uint32(114).bytes(u.hwid), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ze(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.username = i.string(); continue; case 2: if (t !== 18) break; a.password = i.bytes(); continue; case 4: if (t !== 34) break; a.my_id = i.string(); continue; case 5: if (t !== 42) break; a.my_name = i.string(); continue; case 6: if (t !== 50) break; a.option = z.decode(i, i.uint32()); continue; case 7: if (t !== 58) break; a.file_transfer = Fu.decode(i, i.uint32()); continue; case 8: if (t !== 66) break; a.port_forward = l0.decode(i, i.uint32()); continue; case 9: if (t !== 72) break; a.video_ack_required = i.bool(); continue; case 10: if (t !== 80) break; a.session_id = V(i.uint64()); continue; case 11: if (t !== 90) break; a.version = i.string(); continue; case 12: if (t !== 98) break; a.os_login = E0.decode(i, i.uint32()); continue; case 13: if (t !== 106) break; a.my_platform = i.string(); continue; case 14: if (t !== 114) break; a.hwid = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { username: n(u.username) ? globalThis.String(u.username) : "", password: n(u.password) ? R(u.password) : new Uint8Array(0), my_id: n(u.my_id) ? globalThis.String(u.my_id) : "", my_name: n(u.my_name) ? globalThis.String(u.my_name) : "", option: n(u.option) ? z.fromJSON(u.option) : void 0, file_transfer: n(u.file_transfer) ? Fu.fromJSON(u.file_transfer) : void 0, port_forward: n(u.port_forward) ? l0.fromJSON(u.port_forward) : void 0, video_ack_required: n(u.video_ack_required) ? globalThis.Boolean(u.video_ack_required) : !1, session_id: n(u.session_id) ? globalThis.Number(u.session_id) : 0, version: n(u.version) ? globalThis.String(u.version) : "", os_login: n(u.os_login) ? E0.fromJSON(u.os_login) : void 0, my_platform: n(u.my_platform) ? globalThis.String(u.my_platform) : "", hwid: n(u.hwid) ? R(u.hwid) : new Uint8Array(0) } }, toJSON(u) { const e = {}; return u.username !== "" && (e.username = u.username), u.password.length !== 0 && (e.password = I(u.password)), u.my_id !== "" && (e.my_id = u.my_id), u.my_name !== "" && (e.my_name = u.my_name), u.option !== void 0 && (e.option = z.toJSON(u.option)), u.file_transfer !== void 0 && (e.file_transfer = Fu.toJSON(u.file_transfer)), u.port_forward !== void 0 && (e.port_forward = l0.toJSON(u.port_forward)), u.video_ack_required !== !1 && (e.video_ack_required = u.video_ack_required), u.session_id !== 0 && (e.session_id = Math.round(u.session_id)), u.version !== "" && (e.version = u.version), u.os_login !== void 0 && (e.os_login = E0.toJSON(u.os_login)), u.my_platform !== "" && (e.my_platform = u.my_platform), u.hwid.length !== 0 && (e.hwid = I(u.hwid)), e }, create(u) { return H.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c, C; const e = Ze(); return e.username = (i = u.username) != null ? i : "", e.password = (o = u.password) != null ? o : new Uint8Array(0), e.my_id = (a = u.my_id) != null ? a : "", e.my_name = (t = u.my_name) != null ? t : "", e.option = u.option !== void 0 && u.option !== null ? z.fromPartial(u.option) : void 0, e.file_transfer = u.file_transfer !== void 0 && u.file_transfer !== null ? Fu.fromPartial(u.file_transfer) : void 0, e.port_forward = u.port_forward !== void 0 && u.port_forward !== null ? l0.fromPartial(u.port_forward) : void 0, e.video_ack_required = (s = u.video_ack_required) != null ? s : !1, e.session_id = (l = u.session_id) != null ? l : 0, e.version = (E = u.version) != null ? E : "", e.os_login = u.os_login !== void 0 && u.os_login !== null ? E0.fromPartial(u.os_login) : void 0, e.my_platform = (c = u.my_platform) != null ? c : "", e.hwid = (C = u.hwid) != null ? C : new Uint8Array(0), e } }; function Qe() { return {code: "", hwid: new Uint8Array(0)} } const _u = { encode(u, e = r.Writer.create()) { return u.code !== "" && e.uint32(10).string(u.code), u.hwid.length !== 0 && e.uint32(18).bytes(u.hwid), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Qe(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.code = i.string(); continue; case 2: if (t !== 18) break; a.hwid = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {code: n(u.code) ? globalThis.String(u.code) : "", hwid: n(u.hwid) ? R(u.hwid) : new Uint8Array(0)} }, toJSON(u) { const e = {}; return u.code !== "" && (e.code = u.code), u.hwid.length !== 0 && (e.hwid = I(u.hwid)), e }, create(u) { return _u.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Qe(); return e.code = (i = u.code) != null ? i : "", e.hwid = (o = u.hwid) != null ? o : new Uint8Array(0), e } }; function Xe() { return {text: ""} } const vu = { encode(u, e = r.Writer.create()) { return u.text !== "" && e.uint32(10).string(u.text), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Xe(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.text = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {text: n(u.text) ? globalThis.String(u.text) : ""} }, toJSON(u) { const e = {}; return u.text !== "" && (e.text = u.text), e }, create(u) { return vu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Xe(); return e.text = (i = u.text) != null ? i : "", e } }; function Ye() { return {privacy_mode: !1} } const d0 = { encode(u, e = r.Writer.create()) { return u.privacy_mode !== !1 && e.uint32(8).bool(u.privacy_mode), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ye(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.privacy_mode = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {privacy_mode: n(u.privacy_mode) ? globalThis.Boolean(u.privacy_mode) : !1} }, toJSON(u) { const e = {}; return u.privacy_mode !== !1 && (e.privacy_mode = u.privacy_mode), e }, create(u) { return d0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Ye(); return e.privacy_mode = (i = u.privacy_mode) != null ? i : !1, e } }; function $e() { return {vp8: !1, vp9: !1, av1: !1, h264: !1, h265: !1} } const J = { encode(u, e = r.Writer.create()) { return u.vp8 !== !1 && e.uint32(8).bool(u.vp8), u.vp9 !== !1 && e.uint32(16).bool(u.vp9), u.av1 !== !1 && e.uint32(24).bool(u.av1), u.h264 !== !1 && e.uint32(32).bool(u.h264), u.h265 !== !1 && e.uint32(40).bool(u.h265), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = $e(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.vp8 = i.bool(); continue; case 2: if (t !== 16) break; a.vp9 = i.bool(); continue; case 3: if (t !== 24) break; a.av1 = i.bool(); continue; case 4: if (t !== 32) break; a.h264 = i.bool(); continue; case 5: if (t !== 40) break; a.h265 = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { vp8: n(u.vp8) ? globalThis.Boolean(u.vp8) : !1, vp9: n(u.vp9) ? globalThis.Boolean(u.vp9) : !1, av1: n(u.av1) ? globalThis.Boolean(u.av1) : !1, h264: n(u.h264) ? globalThis.Boolean(u.h264) : !1, h265: n(u.h265) ? globalThis.Boolean(u.h265) : !1 } }, toJSON(u) { const e = {}; return u.vp8 !== !1 && (e.vp8 = u.vp8), u.vp9 !== !1 && (e.vp9 = u.vp9), u.av1 !== !1 && (e.av1 = u.av1), u.h264 !== !1 && (e.h264 = u.h264), u.h265 !== !1 && (e.h265 = u.h265), e }, create(u) { return J.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s; const e = $e(); return e.vp8 = (i = u.vp8) != null ? i : !1, e.vp9 = (o = u.vp9) != null ? o : !1, e.av1 = (a = u.av1) != null ? a : !1, e.h264 = (t = u.h264) != null ? t : !1, e.h265 = (s = u.h265) != null ? s : !1, e } }; function u3() { return {h264: !1, h265: !1, vp8: !1, av1: !1, i444: void 0} } const G = { encode(u, e = r.Writer.create()) { return u.h264 !== !1 && e.uint32(8).bool(u.h264), u.h265 !== !1 && e.uint32(16).bool(u.h265), u.vp8 !== !1 && e.uint32(24).bool(u.vp8), u.av1 !== !1 && e.uint32(32).bool(u.av1), u.i444 !== void 0 && J.encode(u.i444, e.uint32(42).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = u3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.h264 = i.bool(); continue; case 2: if (t !== 16) break; a.h265 = i.bool(); continue; case 3: if (t !== 24) break; a.vp8 = i.bool(); continue; case 4: if (t !== 32) break; a.av1 = i.bool(); continue; case 5: if (t !== 42) break; a.i444 = J.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { h264: n(u.h264) ? globalThis.Boolean(u.h264) : !1, h265: n(u.h265) ? globalThis.Boolean(u.h265) : !1, vp8: n(u.vp8) ? globalThis.Boolean(u.vp8) : !1, av1: n(u.av1) ? globalThis.Boolean(u.av1) : !1, i444: n(u.i444) ? J.fromJSON(u.i444) : void 0 } }, toJSON(u) { const e = {}; return u.h264 !== !1 && (e.h264 = u.h264), u.h265 !== !1 && (e.h265 = u.h265), u.vp8 !== !1 && (e.vp8 = u.vp8), u.av1 !== !1 && (e.av1 = u.av1), u.i444 !== void 0 && (e.i444 = J.toJSON(u.i444)), e }, create(u) { return G.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = u3(); return e.h264 = (i = u.h264) != null ? i : !1, e.h265 = (o = u.h265) != null ? o : !1, e.vp8 = (a = u.vp8) != null ? a : !1, e.av1 = (t = u.av1) != null ? t : !1, e.i444 = u.i444 !== void 0 && u.i444 !== null ? J.fromPartial(u.i444) : void 0, e } }; function e3() { return { username: "", hostname: "", platform: "", displays: [], current_display: 0, sas_enabled: !1, version: "", features: void 0, encoding: void 0, resolutions: void 0, platform_additions: "", windows_sessions: void 0 } } const Y = { encode(u, e = r.Writer.create()) { u.username !== "" && e.uint32(10).string(u.username), u.hostname !== "" && e.uint32(18).string(u.hostname), u.platform !== "" && e.uint32(26).string(u.platform); for (const i of u.displays) s0.encode(i, e.uint32(34).fork()).ldelim(); return u.current_display !== 0 && e.uint32(40).int32(u.current_display), u.sas_enabled !== !1 && e.uint32(48).bool(u.sas_enabled), u.version !== "" && e.uint32(58).string(u.version), u.features !== void 0 && d0.encode(u.features, e.uint32(74).fork()).ldelim(), u.encoding !== void 0 && G.encode(u.encoding, e.uint32(82).fork()).ldelim(), u.resolutions !== void 0 && uu.encode(u.resolutions, e.uint32(90).fork()).ldelim(), u.platform_additions !== "" && e.uint32(98).string(u.platform_additions), u.windows_sessions !== void 0 && K0.encode(u.windows_sessions, e.uint32(106).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = e3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.username = i.string(); continue; case 2: if (t !== 18) break; a.hostname = i.string(); continue; case 3: if (t !== 26) break; a.platform = i.string(); continue; case 4: if (t !== 34) break; a.displays.push(s0.decode(i, i.uint32())); continue; case 5: if (t !== 40) break; a.current_display = i.int32(); continue; case 6: if (t !== 48) break; a.sas_enabled = i.bool(); continue; case 7: if (t !== 58) break; a.version = i.string(); continue; case 9: if (t !== 74) break; a.features = d0.decode(i, i.uint32()); continue; case 10: if (t !== 82) break; a.encoding = G.decode(i, i.uint32()); continue; case 11: if (t !== 90) break; a.resolutions = uu.decode(i, i.uint32()); continue; case 12: if (t !== 98) break; a.platform_additions = i.string(); continue; case 13: if (t !== 106) break; a.windows_sessions = K0.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { username: n(u.username) ? globalThis.String(u.username) : "", hostname: n(u.hostname) ? globalThis.String(u.hostname) : "", platform: n(u.platform) ? globalThis.String(u.platform) : "", displays: globalThis.Array.isArray(u == null ? void 0 : u.displays) ? u.displays.map(e => s0.fromJSON(e)) : [], current_display: n(u.current_display) ? globalThis.Number(u.current_display) : 0, sas_enabled: n(u.sas_enabled) ? globalThis.Boolean(u.sas_enabled) : !1, version: n(u.version) ? globalThis.String(u.version) : "", features: n(u.features) ? d0.fromJSON(u.features) : void 0, encoding: n(u.encoding) ? G.fromJSON(u.encoding) : void 0, resolutions: n(u.resolutions) ? uu.fromJSON(u.resolutions) : void 0, platform_additions: n(u.platform_additions) ? globalThis.String(u.platform_additions) : "", windows_sessions: n(u.windows_sessions) ? K0.fromJSON(u.windows_sessions) : void 0 } }, toJSON(u) { var i; const e = {}; return u.username !== "" && (e.username = u.username), u.hostname !== "" && (e.hostname = u.hostname), u.platform !== "" && (e.platform = u.platform), (i = u.displays) != null && i.length && (e.displays = u.displays.map(o => s0.toJSON(o))), u.current_display !== 0 && (e.current_display = Math.round(u.current_display)), u.sas_enabled !== !1 && (e.sas_enabled = u.sas_enabled), u.version !== "" && (e.version = u.version), u.features !== void 0 && (e.features = d0.toJSON(u.features)), u.encoding !== void 0 && (e.encoding = G.toJSON(u.encoding)), u.resolutions !== void 0 && (e.resolutions = uu.toJSON(u.resolutions)), u.platform_additions !== "" && (e.platform_additions = u.platform_additions), u.windows_sessions !== void 0 && (e.windows_sessions = K0.toJSON(u.windows_sessions)), e }, create(u) { return Y.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c; const e = e3(); return e.username = (i = u.username) != null ? i : "", e.hostname = (o = u.hostname) != null ? o : "", e.platform = (a = u.platform) != null ? a : "", e.displays = ((t = u.displays) == null ? void 0 : t.map(C => s0.fromPartial(C))) || [], e.current_display = (s = u.current_display) != null ? s : 0, e.sas_enabled = (l = u.sas_enabled) != null ? l : !1, e.version = (E = u.version) != null ? E : "", e.features = u.features !== void 0 && u.features !== null ? d0.fromPartial(u.features) : void 0, e.encoding = u.encoding !== void 0 && u.encoding !== null ? G.fromPartial(u.encoding) : void 0, e.resolutions = u.resolutions !== void 0 && u.resolutions !== null ? uu.fromPartial(u.resolutions) : void 0, e.platform_additions = (c = u.platform_additions) != null ? c : "", e.windows_sessions = u.windows_sessions !== void 0 && u.windows_sessions !== null ? K0.fromPartial(u.windows_sessions) : void 0, e } }; function i3() { return {sid: 0, name: ""} } const c0 = { encode(u, e = r.Writer.create()) { return u.sid !== 0 && e.uint32(8).uint32(u.sid), u.name !== "" && e.uint32(18).string(u.name), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = i3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.sid = i.uint32(); continue; case 2: if (t !== 18) break; a.name = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {sid: n(u.sid) ? globalThis.Number(u.sid) : 0, name: n(u.name) ? globalThis.String(u.name) : ""} }, toJSON(u) { const e = {}; return u.sid !== 0 && (e.sid = Math.round(u.sid)), u.name !== "" && (e.name = u.name), e }, create(u) { return c0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = i3(); return e.sid = (i = u.sid) != null ? i : 0, e.name = (o = u.name) != null ? o : "", e } }; function t3() { return {error: void 0, peer_info: void 0, enable_trusted_devices: !1} } const C0 = { encode(u, e = r.Writer.create()) { return u.error !== void 0 && e.uint32(10).string(u.error), u.peer_info !== void 0 && Y.encode(u.peer_info, e.uint32(18).fork()).ldelim(), u.enable_trusted_devices !== !1 && e.uint32(24).bool(u.enable_trusted_devices), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = t3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.error = i.string(); continue; case 2: if (t !== 18) break; a.peer_info = Y.decode(i, i.uint32()); continue; case 3: if (t !== 24) break; a.enable_trusted_devices = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { error: n(u.error) ? globalThis.String(u.error) : void 0, peer_info: n(u.peer_info) ? Y.fromJSON(u.peer_info) : void 0, enable_trusted_devices: n(u.enable_trusted_devices) ? globalThis.Boolean(u.enable_trusted_devices) : !1 } }, toJSON(u) { const e = {}; return u.error !== void 0 && (e.error = u.error), u.peer_info !== void 0 && (e.peer_info = Y.toJSON(u.peer_info)), u.enable_trusted_devices !== !1 && (e.enable_trusted_devices = u.enable_trusted_devices), e }, create(u) { return C0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = t3(); return e.error = (i = u.error) != null ? i : void 0, e.peer_info = u.peer_info !== void 0 && u.peer_info !== null ? Y.fromPartial(u.peer_info) : void 0, e.enable_trusted_devices = (o = u.enable_trusted_devices) != null ? o : !1, e } }; function a3() { return {scale: 0} } const p0 = { encode(u, e = r.Writer.create()) { return u.scale !== 0 && e.uint32(8).int32(u.scale), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = a3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.scale = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {scale: n(u.scale) ? globalThis.Number(u.scale) : 0} }, toJSON(u) { const e = {}; return u.scale !== 0 && (e.scale = Math.round(u.scale)), e }, create(u) { return p0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = a3(); return e.scale = (i = u.scale) != null ? i : 0, e } }; function o3() { return {x: 0, y: 0} } const D0 = { encode(u, e = r.Writer.create()) { return u.x !== 0 && e.uint32(8).int32(u.x), u.y !== 0 && e.uint32(16).int32(u.y), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = o3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.x = i.int32(); continue; case 2: if (t !== 16) break; a.y = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {x: n(u.x) ? globalThis.Number(u.x) : 0, y: n(u.y) ? globalThis.Number(u.y) : 0} }, toJSON(u) { const e = {}; return u.x !== 0 && (e.x = Math.round(u.x)), u.y !== 0 && (e.y = Math.round(u.y)), e }, create(u) { return D0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = o3(); return e.x = (i = u.x) != null ? i : 0, e.y = (o = u.y) != null ? o : 0, e } }; function n3() { return {x: 0, y: 0} } const B0 = { encode(u, e = r.Writer.create()) { return u.x !== 0 && e.uint32(8).int32(u.x), u.y !== 0 && e.uint32(16).int32(u.y), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = n3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.x = i.int32(); continue; case 2: if (t !== 16) break; a.y = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {x: n(u.x) ? globalThis.Number(u.x) : 0, y: n(u.y) ? globalThis.Number(u.y) : 0} }, toJSON(u) { const e = {}; return u.x !== 0 && (e.x = Math.round(u.x)), u.y !== 0 && (e.y = Math.round(u.y)), e }, create(u) { return B0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = n3(); return e.x = (i = u.x) != null ? i : 0, e.y = (o = u.y) != null ? o : 0, e } }; function r3() { return {x: 0, y: 0} } const m0 = { encode(u, e = r.Writer.create()) { return u.x !== 0 && e.uint32(8).int32(u.x), u.y !== 0 && e.uint32(16).int32(u.y), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = r3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.x = i.int32(); continue; case 2: if (t !== 16) break; a.y = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {x: n(u.x) ? globalThis.Number(u.x) : 0, y: n(u.y) ? globalThis.Number(u.y) : 0} }, toJSON(u) { const e = {}; return u.x !== 0 && (e.x = Math.round(u.x)), u.y !== 0 && (e.y = Math.round(u.y)), e }, create(u) { return m0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = r3(); return e.x = (i = u.x) != null ? i : 0, e.y = (o = u.y) != null ? o : 0, e } }; function s3() { return {scale_update: void 0, pan_start: void 0, pan_update: void 0, pan_end: void 0} } const A0 = { encode(u, e = r.Writer.create()) { return u.scale_update !== void 0 && p0.encode(u.scale_update, e.uint32(10).fork()).ldelim(), u.pan_start !== void 0 && D0.encode(u.pan_start, e.uint32(18).fork()).ldelim(), u.pan_update !== void 0 && B0.encode(u.pan_update, e.uint32(26).fork()).ldelim(), u.pan_end !== void 0 && m0.encode(u.pan_end, e.uint32(34).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = s3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.scale_update = p0.decode(i, i.uint32()); continue; case 2: if (t !== 18) break; a.pan_start = D0.decode(i, i.uint32()); continue; case 3: if (t !== 26) break; a.pan_update = B0.decode(i, i.uint32()); continue; case 4: if (t !== 34) break; a.pan_end = m0.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { scale_update: n(u.scale_update) ? p0.fromJSON(u.scale_update) : void 0, pan_start: n(u.pan_start) ? D0.fromJSON(u.pan_start) : void 0, pan_update: n(u.pan_update) ? B0.fromJSON(u.pan_update) : void 0, pan_end: n(u.pan_end) ? m0.fromJSON(u.pan_end) : void 0 } }, toJSON(u) { const e = {}; return u.scale_update !== void 0 && (e.scale_update = p0.toJSON(u.scale_update)), u.pan_start !== void 0 && (e.pan_start = D0.toJSON(u.pan_start)), u.pan_update !== void 0 && (e.pan_update = B0.toJSON(u.pan_update)), u.pan_end !== void 0 && (e.pan_end = m0.toJSON(u.pan_end)), e }, create(u) { return A0.fromPartial(u != null ? u : {}) }, fromPartial(u) { const e = s3(); return e.scale_update = u.scale_update !== void 0 && u.scale_update !== null ? p0.fromPartial(u.scale_update) : void 0, e.pan_start = u.pan_start !== void 0 && u.pan_start !== null ? D0.fromPartial(u.pan_start) : void 0, e.pan_update = u.pan_update !== void 0 && u.pan_update !== null ? B0.fromPartial(u.pan_update) : void 0, e.pan_end = u.pan_end !== void 0 && u.pan_end !== null ? m0.fromPartial(u.pan_end) : void 0, e } }; function l3() { return {touch_event: void 0, modifiers: []} } const F0 = { encode(u, e = r.Writer.create()) { u.touch_event !== void 0 && A0.encode(u.touch_event, e.uint32(10).fork()).ldelim(), e.uint32(18).fork(); for (const i of u.modifiers) e.int32(i); return e.ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = l3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.touch_event = A0.decode(i, i.uint32()); continue; case 2: if (t === 16) { a.modifiers.push(i.int32()); continue } if (t === 18) { const s = i.uint32() + i.pos; for (; i.pos < s;) a.modifiers.push(i.int32()); continue } break } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { touch_event: n(u.touch_event) ? A0.fromJSON(u.touch_event) : void 0, modifiers: globalThis.Array.isArray(u == null ? void 0 : u.modifiers) ? u.modifiers.map(e => v4(e)) : [] } }, toJSON(u) { var i; const e = {}; return u.touch_event !== void 0 && (e.touch_event = A0.toJSON(u.touch_event)), (i = u.modifiers) != null && i.length && (e.modifiers = u.modifiers.map(o => j4(o))), e }, create(u) { return F0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = l3(); return e.touch_event = u.touch_event !== void 0 && u.touch_event !== null ? A0.fromPartial(u.touch_event) : void 0, e.modifiers = ((i = u.modifiers) == null ? void 0 : i.map(o => o)) || [], e } }; function E3() { return {mask: 0, x: 0, y: 0, modifiers: []} } const ku = { encode(u, e = r.Writer.create()) { u.mask !== 0 && e.uint32(8).int32(u.mask), u.x !== 0 && e.uint32(16).sint32(u.x), u.y !== 0 && e.uint32(24).sint32(u.y), e.uint32(34).fork(); for (const i of u.modifiers) e.int32(i); return e.ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = E3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.mask = i.int32(); continue; case 2: if (t !== 16) break; a.x = i.sint32(); continue; case 3: if (t !== 24) break; a.y = i.sint32(); continue; case 4: if (t === 32) { a.modifiers.push(i.int32()); continue } if (t === 34) { const s = i.uint32() + i.pos; for (; i.pos < s;) a.modifiers.push(i.int32()); continue } break } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { mask: n(u.mask) ? globalThis.Number(u.mask) : 0, x: n(u.x) ? globalThis.Number(u.x) : 0, y: n(u.y) ? globalThis.Number(u.y) : 0, modifiers: globalThis.Array.isArray(u == null ? void 0 : u.modifiers) ? u.modifiers.map(e => v4(e)) : [] } }, toJSON(u) { var i; const e = {}; return u.mask !== 0 && (e.mask = Math.round(u.mask)), u.x !== 0 && (e.x = Math.round(u.x)), u.y !== 0 && (e.y = Math.round(u.y)), (i = u.modifiers) != null && i.length && (e.modifiers = u.modifiers.map(o => j4(o))), e }, create(u) { return ku.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = E3(); return e.mask = (i = u.mask) != null ? i : 0, e.x = (o = u.x) != null ? o : 0, e.y = (a = u.y) != null ? a : 0, e.modifiers = ((t = u.modifiers) == null ? void 0 : t.map(s => s)) || [], e } }; function d3() { return { down: !1, press: !1, control_key: void 0, chr: void 0, unicode: void 0, seq: void 0, win2win_hotkey: void 0, modifiers: [], mode: 0 } } const w = { encode(u, e = r.Writer.create()) { u.down !== !1 && e.uint32(8).bool(u.down), u.press !== !1 && e.uint32(16).bool(u.press), u.control_key !== void 0 && e.uint32(24).int32(u.control_key), u.chr !== void 0 && e.uint32(32).uint32(u.chr), u.unicode !== void 0 && e.uint32(40).uint32(u.unicode), u.seq !== void 0 && e.uint32(50).string(u.seq), u.win2win_hotkey !== void 0 && e.uint32(56).uint32(u.win2win_hotkey), e.uint32(66).fork(); for (const i of u.modifiers) e.int32(i); return e.ldelim(), u.mode !== 0 && e.uint32(72).int32(u.mode), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = d3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.down = i.bool(); continue; case 2: if (t !== 16) break; a.press = i.bool(); continue; case 3: if (t !== 24) break; a.control_key = i.int32(); continue; case 4: if (t !== 32) break; a.chr = i.uint32(); continue; case 5: if (t !== 40) break; a.unicode = i.uint32(); continue; case 6: if (t !== 50) break; a.seq = i.string(); continue; case 7: if (t !== 56) break; a.win2win_hotkey = i.uint32(); continue; case 8: if (t === 64) { a.modifiers.push(i.int32()); continue } if (t === 66) { const s = i.uint32() + i.pos; for (; i.pos < s;) a.modifiers.push(i.int32()); continue } break; case 9: if (t !== 72) break; a.mode = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { down: n(u.down) ? globalThis.Boolean(u.down) : !1, press: n(u.press) ? globalThis.Boolean(u.press) : !1, control_key: n(u.control_key) ? v4(u.control_key) : void 0, chr: n(u.chr) ? globalThis.Number(u.chr) : void 0, unicode: n(u.unicode) ? globalThis.Number(u.unicode) : void 0, seq: n(u.seq) ? globalThis.String(u.seq) : void 0, win2win_hotkey: n(u.win2win_hotkey) ? globalThis.Number(u.win2win_hotkey) : void 0, modifiers: globalThis.Array.isArray(u == null ? void 0 : u.modifiers) ? u.modifiers.map(e => v4(e)) : [], mode: n(u.mode) ? da(u.mode) : 0 } }, toJSON(u) { var i; const e = {}; return u.down !== !1 && (e.down = u.down), u.press !== !1 && (e.press = u.press), u.control_key !== void 0 && (e.control_key = j4(u.control_key)), u.chr !== void 0 && (e.chr = Math.round(u.chr)), u.unicode !== void 0 && (e.unicode = Math.round(u.unicode)), u.seq !== void 0 && (e.seq = u.seq), u.win2win_hotkey !== void 0 && (e.win2win_hotkey = Math.round(u.win2win_hotkey)), (i = u.modifiers) != null && i.length && (e.modifiers = u.modifiers.map(o => j4(o))), u.mode !== 0 && (e.mode = ca(u.mode)), e }, create(u) { return w.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c, C; const e = d3(); return e.down = (i = u.down) != null ? i : !1, e.press = (o = u.press) != null ? o : !1, e.control_key = (a = u.control_key) != null ? a : void 0, e.chr = (t = u.chr) != null ? t : void 0, e.unicode = (s = u.unicode) != null ? s : void 0, e.seq = (l = u.seq) != null ? l : void 0, e.win2win_hotkey = (E = u.win2win_hotkey) != null ? E : void 0, e.modifiers = ((c = u.modifiers) == null ? void 0 : c.map(D => D)) || [], e.mode = (C = u.mode) != null ? C : 0, e } }; function c3() { return {id: 0, hotx: 0, hoty: 0, width: 0, height: 0, colors: new Uint8Array(0)} } const _0 = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).uint64(u.id), u.hotx !== 0 && e.uint32(16).sint32(u.hotx), u.hoty !== 0 && e.uint32(24).sint32(u.hoty), u.width !== 0 && e.uint32(32).int32(u.width), u.height !== 0 && e.uint32(40).int32(u.height), u.colors.length !== 0 && e.uint32(50).bytes(u.colors), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = c3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = V(i.uint64()); continue; case 2: if (t !== 16) break; a.hotx = i.sint32(); continue; case 3: if (t !== 24) break; a.hoty = i.sint32(); continue; case 4: if (t !== 32) break; a.width = i.int32(); continue; case 5: if (t !== 40) break; a.height = i.int32(); continue; case 6: if (t !== 50) break; a.colors = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, hotx: n(u.hotx) ? globalThis.Number(u.hotx) : 0, hoty: n(u.hoty) ? globalThis.Number(u.hoty) : 0, width: n(u.width) ? globalThis.Number(u.width) : 0, height: n(u.height) ? globalThis.Number(u.height) : 0, colors: n(u.colors) ? R(u.colors) : new Uint8Array(0) } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.hotx !== 0 && (e.hotx = Math.round(u.hotx)), u.hoty !== 0 && (e.hoty = Math.round(u.hoty)), u.width !== 0 && (e.width = Math.round(u.width)), u.height !== 0 && (e.height = Math.round(u.height)), u.colors.length !== 0 && (e.colors = I(u.colors)), e }, create(u) { return _0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l; const e = c3(); return e.id = (i = u.id) != null ? i : 0, e.hotx = (o = u.hotx) != null ? o : 0, e.hoty = (a = u.hoty) != null ? a : 0, e.width = (t = u.width) != null ? t : 0, e.height = (s = u.height) != null ? s : 0, e.colors = (l = u.colors) != null ? l : new Uint8Array(0), e } }; function C3() { return {x: 0, y: 0} } const v0 = { encode(u, e = r.Writer.create()) { return u.x !== 0 && e.uint32(8).sint32(u.x), u.y !== 0 && e.uint32(16).sint32(u.y), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = C3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.x = i.sint32(); continue; case 2: if (t !== 16) break; a.y = i.sint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {x: n(u.x) ? globalThis.Number(u.x) : 0, y: n(u.y) ? globalThis.Number(u.y) : 0} }, toJSON(u) { const e = {}; return u.x !== 0 && (e.x = Math.round(u.x)), u.y !== 0 && (e.y = Math.round(u.y)), e }, create(u) { return v0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = C3(); return e.x = (i = u.x) != null ? i : 0, e.y = (o = u.y) != null ? o : 0, e } }; function p3() { return {salt: "", challenge: ""} } const k0 = { encode(u, e = r.Writer.create()) { return u.salt !== "" && e.uint32(10).string(u.salt), u.challenge !== "" && e.uint32(18).string(u.challenge), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = p3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.salt = i.string(); continue; case 2: if (t !== 18) break; a.challenge = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { salt: n(u.salt) ? globalThis.String(u.salt) : "", challenge: n(u.challenge) ? globalThis.String(u.challenge) : "" } }, toJSON(u) { const e = {}; return u.salt !== "" && (e.salt = u.salt), u.challenge !== "" && (e.challenge = u.challenge), e }, create(u) { return k0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = p3(); return e.salt = (i = u.salt) != null ? i : "", e.challenge = (o = u.challenge) != null ? o : "", e } }; function D3() { return {compress: !1, content: new Uint8Array(0), width: 0, height: 0, format: 0, special_name: ""} } const L = { encode(u, e = r.Writer.create()) { return u.compress !== !1 && e.uint32(8).bool(u.compress), u.content.length !== 0 && e.uint32(18).bytes(u.content), u.width !== 0 && e.uint32(24).int32(u.width), u.height !== 0 && e.uint32(32).int32(u.height), u.format !== 0 && e.uint32(40).int32(u.format), u.special_name !== "" && e.uint32(50).string(u.special_name), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = D3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.compress = i.bool(); continue; case 2: if (t !== 18) break; a.content = i.bytes(); continue; case 3: if (t !== 24) break; a.width = i.int32(); continue; case 4: if (t !== 32) break; a.height = i.int32(); continue; case 5: if (t !== 40) break; a.format = i.int32(); continue; case 6: if (t !== 50) break; a.special_name = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { compress: n(u.compress) ? globalThis.Boolean(u.compress) : !1, content: n(u.content) ? R(u.content) : new Uint8Array(0), width: n(u.width) ? globalThis.Number(u.width) : 0, height: n(u.height) ? globalThis.Number(u.height) : 0, format: n(u.format) ? Ca(u.format) : 0, special_name: n(u.special_name) ? globalThis.String(u.special_name) : "" } }, toJSON(u) { const e = {}; return u.compress !== !1 && (e.compress = u.compress), u.content.length !== 0 && (e.content = I(u.content)), u.width !== 0 && (e.width = Math.round(u.width)), u.height !== 0 && (e.height = Math.round(u.height)), u.format !== 0 && (e.format = pa(u.format)), u.special_name !== "" && (e.special_name = u.special_name), e }, create(u) { return L.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l; const e = D3(); return e.compress = (i = u.compress) != null ? i : !1, e.content = (o = u.content) != null ? o : new Uint8Array(0), e.width = (a = u.width) != null ? a : 0, e.height = (t = u.height) != null ? t : 0, e.format = (s = u.format) != null ? s : 0, e.special_name = (l = u.special_name) != null ? l : "", e } }; function B3() { return {clipboards: []} } const gu = { encode(u, e = r.Writer.create()) { for (const i of u.clipboards) L.encode(i, e.uint32(10).fork()).ldelim(); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = B3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.clipboards.push(L.decode(i, i.uint32())); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {clipboards: globalThis.Array.isArray(u == null ? void 0 : u.clipboards) ? u.clipboards.map(e => L.fromJSON(e)) : []} }, toJSON(u) { var i; const e = {}; return (i = u.clipboards) != null && i.length && (e.clipboards = u.clipboards.map(o => L.toJSON(o))), e }, create(u) { return gu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = B3(); return e.clipboards = ((i = u.clipboards) == null ? void 0 : i.map(o => L.fromPartial(o))) || [], e } }; function m3() { return {entry_type: 0, name: "", is_hidden: !1, size: 0, modified_time: 0} } const W = { encode(u, e = r.Writer.create()) { return u.entry_type !== 0 && e.uint32(8).int32(u.entry_type), u.name !== "" && e.uint32(18).string(u.name), u.is_hidden !== !1 && e.uint32(24).bool(u.is_hidden), u.size !== 0 && e.uint32(32).uint64(u.size), u.modified_time !== 0 && e.uint32(40).uint64(u.modified_time), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = m3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.entry_type = i.int32(); continue; case 2: if (t !== 18) break; a.name = i.string(); continue; case 3: if (t !== 24) break; a.is_hidden = i.bool(); continue; case 4: if (t !== 32) break; a.size = V(i.uint64()); continue; case 5: if (t !== 40) break; a.modified_time = V(i.uint64()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { entry_type: n(u.entry_type) ? Da(u.entry_type) : 0, name: n(u.name) ? globalThis.String(u.name) : "", is_hidden: n(u.is_hidden) ? globalThis.Boolean(u.is_hidden) : !1, size: n(u.size) ? globalThis.Number(u.size) : 0, modified_time: n(u.modified_time) ? globalThis.Number(u.modified_time) : 0 } }, toJSON(u) { const e = {}; return u.entry_type !== 0 && (e.entry_type = Ba(u.entry_type)), u.name !== "" && (e.name = u.name), u.is_hidden !== !1 && (e.is_hidden = u.is_hidden), u.size !== 0 && (e.size = Math.round(u.size)), u.modified_time !== 0 && (e.modified_time = Math.round(u.modified_time)), e }, create(u) { return W.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s; const e = m3(); return e.entry_type = (i = u.entry_type) != null ? i : 0, e.name = (o = u.name) != null ? o : "", e.is_hidden = (a = u.is_hidden) != null ? a : !1, e.size = (t = u.size) != null ? t : 0, e.modified_time = (s = u.modified_time) != null ? s : 0, e } }; function A3() { return {id: 0, path: "", entries: []} } const $ = { encode(u, e = r.Writer.create()) { u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path); for (const i of u.entries) W.encode(i, e.uint32(26).fork()).ldelim(); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = A3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue; case 3: if (t !== 26) break; a.entries.push(W.decode(i, i.uint32())); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : "", entries: globalThis.Array.isArray(u == null ? void 0 : u.entries) ? u.entries.map(e => W.fromJSON(e)) : [] } }, toJSON(u) { var i; const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), (i = u.entries) != null && i.length && (e.entries = u.entries.map(o => W.toJSON(o))), e }, create(u) { return $.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = A3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e.entries = ((a = u.entries) == null ? void 0 : a.map(t => W.fromPartial(t))) || [], e } }; function F3() { return {path: "", include_hidden: !1} } const hu = { encode(u, e = r.Writer.create()) { return u.path !== "" && e.uint32(10).string(u.path), u.include_hidden !== !1 && e.uint32(16).bool(u.include_hidden), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = F3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.path = i.string(); continue; case 2: if (t !== 16) break; a.include_hidden = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { path: n(u.path) ? globalThis.String(u.path) : "", include_hidden: n(u.include_hidden) ? globalThis.Boolean(u.include_hidden) : !1 } }, toJSON(u) { const e = {}; return u.path !== "" && (e.path = u.path), u.include_hidden !== !1 && (e.include_hidden = u.include_hidden), e }, create(u) { return hu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = F3(); return e.path = (i = u.path) != null ? i : "", e.include_hidden = (o = u.include_hidden) != null ? o : !1, e } }; function _3() { return {path: "", include_hidden: !1} } const fu = { encode(u, e = r.Writer.create()) { return u.path !== "" && e.uint32(10).string(u.path), u.include_hidden !== !1 && e.uint32(16).bool(u.include_hidden), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = _3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.path = i.string(); continue; case 2: if (t !== 16) break; a.include_hidden = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { path: n(u.path) ? globalThis.String(u.path) : "", include_hidden: n(u.include_hidden) ? globalThis.Boolean(u.include_hidden) : !1 } }, toJSON(u) { const e = {}; return u.path !== "" && (e.path = u.path), u.include_hidden !== !1 && (e.include_hidden = u.include_hidden), e }, create(u) { return fu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = _3(); return e.path = (i = u.path) != null ? i : "", e.include_hidden = (o = u.include_hidden) != null ? o : !1, e } }; function v3() { return {path: "", empty_dirs: []} } const g0 = { encode(u, e = r.Writer.create()) { u.path !== "" && e.uint32(10).string(u.path); for (const i of u.empty_dirs) $.encode(i, e.uint32(18).fork()).ldelim(); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = v3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.path = i.string(); continue; case 2: if (t !== 18) break; a.empty_dirs.push($.decode(i, i.uint32())); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { path: n(u.path) ? globalThis.String(u.path) : "", empty_dirs: globalThis.Array.isArray(u == null ? void 0 : u.empty_dirs) ? u.empty_dirs.map(e => $.fromJSON(e)) : [] } }, toJSON(u) { var i; const e = {}; return u.path !== "" && (e.path = u.path), (i = u.empty_dirs) != null && i.length && (e.empty_dirs = u.empty_dirs.map(o => $.toJSON(o))), e }, create(u) { return g0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = v3(); return e.path = (i = u.path) != null ? i : "", e.empty_dirs = ((o = u.empty_dirs) == null ? void 0 : o.map(a => $.fromPartial(a))) || [], e } }; function k3() { return {id: 0, path: "", include_hidden: !1} } const xu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path), u.include_hidden !== !1 && e.uint32(24).bool(u.include_hidden), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = k3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue; case 3: if (t !== 24) break; a.include_hidden = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : "", include_hidden: n(u.include_hidden) ? globalThis.Boolean(u.include_hidden) : !1 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), u.include_hidden !== !1 && (e.include_hidden = u.include_hidden), e }, create(u) { return xu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = k3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e.include_hidden = (a = u.include_hidden) != null ? a : !1, e } }; function g3() { return {id: 0, path: "", new_name: ""} } const yu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path), u.new_name !== "" && e.uint32(26).string(u.new_name), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = g3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue; case 3: if (t !== 26) break; a.new_name = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : "", new_name: n(u.new_name) ? globalThis.String(u.new_name) : "" } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), u.new_name !== "" && (e.new_name = u.new_name), e }, create(u) { return yu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = g3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e.new_name = (a = u.new_name) != null ? a : "", e } }; function h3() { return { read_dir: void 0, send: void 0, receive: void 0, create: void 0, remove_dir: void 0, remove_file: void 0, all_files: void 0, cancel: void 0, send_confirm: void 0, rename: void 0, read_empty_dirs: void 0 } } const P = { encode(u, e = r.Writer.create()) { return u.read_dir !== void 0 && hu.encode(u.read_dir, e.uint32(10).fork()).ldelim(), u.send !== void 0 && Pu.encode(u.send, e.uint32(18).fork()).ldelim(), u.receive !== void 0 && Iu.encode(u.receive, e.uint32(26).fork()).ldelim(), u.create !== void 0 && Nu.encode(u.create, e.uint32(34).fork()).ldelim(), u.remove_dir !== void 0 && Tu.encode(u.remove_dir, e.uint32(42).fork()).ldelim(), u.remove_file !== void 0 && ju.encode(u.remove_file, e.uint32(50).fork()).ldelim(), u.all_files !== void 0 && xu.encode(u.all_files, e.uint32(58).fork()).ldelim(), u.cancel !== void 0 && bu.encode(u.cancel, e.uint32(66).fork()).ldelim(), u.send_confirm !== void 0 && cu.encode(u.send_confirm, e.uint32(74).fork()).ldelim(), u.rename !== void 0 && yu.encode(u.rename, e.uint32(82).fork()).ldelim(), u.read_empty_dirs !== void 0 && fu.encode(u.read_empty_dirs, e.uint32(90).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = h3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.read_dir = hu.decode(i, i.uint32()); continue; case 2: if (t !== 18) break; a.send = Pu.decode(i, i.uint32()); continue; case 3: if (t !== 26) break; a.receive = Iu.decode(i, i.uint32()); continue; case 4: if (t !== 34) break; a.create = Nu.decode(i, i.uint32()); continue; case 5: if (t !== 42) break; a.remove_dir = Tu.decode(i, i.uint32()); continue; case 6: if (t !== 50) break; a.remove_file = ju.decode(i, i.uint32()); continue; case 7: if (t !== 58) break; a.all_files = xu.decode(i, i.uint32()); continue; case 8: if (t !== 66) break; a.cancel = bu.decode(i, i.uint32()); continue; case 9: if (t !== 74) break; a.send_confirm = cu.decode(i, i.uint32()); continue; case 10: if (t !== 82) break; a.rename = yu.decode(i, i.uint32()); continue; case 11: if (t !== 90) break; a.read_empty_dirs = fu.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { read_dir: n(u.read_dir) ? hu.fromJSON(u.read_dir) : void 0, send: n(u.send) ? Pu.fromJSON(u.send) : void 0, receive: n(u.receive) ? Iu.fromJSON(u.receive) : void 0, create: n(u.create) ? Nu.fromJSON(u.create) : void 0, remove_dir: n(u.remove_dir) ? Tu.fromJSON(u.remove_dir) : void 0, remove_file: n(u.remove_file) ? ju.fromJSON(u.remove_file) : void 0, all_files: n(u.all_files) ? xu.fromJSON(u.all_files) : void 0, cancel: n(u.cancel) ? bu.fromJSON(u.cancel) : void 0, send_confirm: n(u.send_confirm) ? cu.fromJSON(u.send_confirm) : void 0, rename: n(u.rename) ? yu.fromJSON(u.rename) : void 0, read_empty_dirs: n(u.read_empty_dirs) ? fu.fromJSON(u.read_empty_dirs) : void 0 } }, toJSON(u) { const e = {}; return u.read_dir !== void 0 && (e.read_dir = hu.toJSON(u.read_dir)), u.send !== void 0 && (e.send = Pu.toJSON(u.send)), u.receive !== void 0 && (e.receive = Iu.toJSON(u.receive)), u.create !== void 0 && (e.create = Nu.toJSON(u.create)), u.remove_dir !== void 0 && (e.remove_dir = Tu.toJSON(u.remove_dir)), u.remove_file !== void 0 && (e.remove_file = ju.toJSON(u.remove_file)), u.all_files !== void 0 && (e.all_files = xu.toJSON(u.all_files)), u.cancel !== void 0 && (e.cancel = bu.toJSON(u.cancel)), u.send_confirm !== void 0 && (e.send_confirm = cu.toJSON(u.send_confirm)), u.rename !== void 0 && (e.rename = yu.toJSON(u.rename)), u.read_empty_dirs !== void 0 && (e.read_empty_dirs = fu.toJSON(u.read_empty_dirs)), e }, create(u) { return P.fromPartial(u != null ? u : {}) }, fromPartial(u) { const e = h3(); return e.read_dir = u.read_dir !== void 0 && u.read_dir !== null ? hu.fromPartial(u.read_dir) : void 0, e.send = u.send !== void 0 && u.send !== null ? Pu.fromPartial(u.send) : void 0, e.receive = u.receive !== void 0 && u.receive !== null ? Iu.fromPartial(u.receive) : void 0, e.create = u.create !== void 0 && u.create !== null ? Nu.fromPartial(u.create) : void 0, e.remove_dir = u.remove_dir !== void 0 && u.remove_dir !== null ? Tu.fromPartial(u.remove_dir) : void 0, e.remove_file = u.remove_file !== void 0 && u.remove_file !== null ? ju.fromPartial(u.remove_file) : void 0, e.all_files = u.all_files !== void 0 && u.all_files !== null ? xu.fromPartial(u.all_files) : void 0, e.cancel = u.cancel !== void 0 && u.cancel !== null ? bu.fromPartial(u.cancel) : void 0, e.send_confirm = u.send_confirm !== void 0 && u.send_confirm !== null ? cu.fromPartial(u.send_confirm) : void 0, e.rename = u.rename !== void 0 && u.rename !== null ? yu.fromPartial(u.rename) : void 0, e.read_empty_dirs = u.read_empty_dirs !== void 0 && u.read_empty_dirs !== null ? fu.fromPartial(u.read_empty_dirs) : void 0, e } }; function f3() { return {id: 0} } const bu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = f3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: n(u.id) ? globalThis.Number(u.id) : 0} }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), e }, create(u) { return bu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = f3(); return e.id = (i = u.id) != null ? i : 0, e } }; function x3() { return {dir: void 0, block: void 0, error: void 0, done: void 0, digest: void 0, empty_dirs: void 0} } const nu = { encode(u, e = r.Writer.create()) { return u.dir !== void 0 && $.encode(u.dir, e.uint32(10).fork()).ldelim(), u.block !== void 0 && Su.encode(u.block, e.uint32(18).fork()).ldelim(), u.error !== void 0 && zu.encode(u.error, e.uint32(26).fork()).ldelim(), u.done !== void 0 && Ru.encode(u.done, e.uint32(34).fork()).ldelim(), u.digest !== void 0 && wu.encode(u.digest, e.uint32(42).fork()).ldelim(), u.empty_dirs !== void 0 && g0.encode(u.empty_dirs, e.uint32(50).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = x3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.dir = $.decode(i, i.uint32()); continue; case 2: if (t !== 18) break; a.block = Su.decode(i, i.uint32()); continue; case 3: if (t !== 26) break; a.error = zu.decode(i, i.uint32()); continue; case 4: if (t !== 34) break; a.done = Ru.decode(i, i.uint32()); continue; case 5: if (t !== 42) break; a.digest = wu.decode(i, i.uint32()); continue; case 6: if (t !== 50) break; a.empty_dirs = g0.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { dir: n(u.dir) ? $.fromJSON(u.dir) : void 0, block: n(u.block) ? Su.fromJSON(u.block) : void 0, error: n(u.error) ? zu.fromJSON(u.error) : void 0, done: n(u.done) ? Ru.fromJSON(u.done) : void 0, digest: n(u.digest) ? wu.fromJSON(u.digest) : void 0, empty_dirs: n(u.empty_dirs) ? g0.fromJSON(u.empty_dirs) : void 0 } }, toJSON(u) { const e = {}; return u.dir !== void 0 && (e.dir = $.toJSON(u.dir)), u.block !== void 0 && (e.block = Su.toJSON(u.block)), u.error !== void 0 && (e.error = zu.toJSON(u.error)), u.done !== void 0 && (e.done = Ru.toJSON(u.done)), u.digest !== void 0 && (e.digest = wu.toJSON(u.digest)), u.empty_dirs !== void 0 && (e.empty_dirs = g0.toJSON(u.empty_dirs)), e }, create(u) { return nu.fromPartial(u != null ? u : {}) }, fromPartial(u) { const e = x3(); return e.dir = u.dir !== void 0 && u.dir !== null ? $.fromPartial(u.dir) : void 0, e.block = u.block !== void 0 && u.block !== null ? Su.fromPartial(u.block) : void 0, e.error = u.error !== void 0 && u.error !== null ? zu.fromPartial(u.error) : void 0, e.done = u.done !== void 0 && u.done !== null ? Ru.fromPartial(u.done) : void 0, e.digest = u.digest !== void 0 && u.digest !== null ? wu.fromPartial(u.digest) : void 0, e.empty_dirs = u.empty_dirs !== void 0 && u.empty_dirs !== null ? g0.fromPartial(u.empty_dirs) : void 0, e } }; function y3() { return {id: 0, file_num: 0, last_modified: 0, file_size: 0, is_upload: !1, is_identical: !1} } const wu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.file_num !== 0 && e.uint32(16).sint32(u.file_num), u.last_modified !== 0 && e.uint32(24).uint64(u.last_modified), u.file_size !== 0 && e.uint32(32).uint64(u.file_size), u.is_upload !== !1 && e.uint32(40).bool(u.is_upload), u.is_identical !== !1 && e.uint32(48).bool(u.is_identical), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = y3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 16) break; a.file_num = i.sint32(); continue; case 3: if (t !== 24) break; a.last_modified = V(i.uint64()); continue; case 4: if (t !== 32) break; a.file_size = V(i.uint64()); continue; case 5: if (t !== 40) break; a.is_upload = i.bool(); continue; case 6: if (t !== 48) break; a.is_identical = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0, last_modified: n(u.last_modified) ? globalThis.Number(u.last_modified) : 0, file_size: n(u.file_size) ? globalThis.Number(u.file_size) : 0, is_upload: n(u.is_upload) ? globalThis.Boolean(u.is_upload) : !1, is_identical: n(u.is_identical) ? globalThis.Boolean(u.is_identical) : !1 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), u.last_modified !== 0 && (e.last_modified = Math.round(u.last_modified)), u.file_size !== 0 && (e.file_size = Math.round(u.file_size)), u.is_upload !== !1 && (e.is_upload = u.is_upload), u.is_identical !== !1 && (e.is_identical = u.is_identical), e }, create(u) { return wu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l; const e = y3(); return e.id = (i = u.id) != null ? i : 0, e.file_num = (o = u.file_num) != null ? o : 0, e.last_modified = (a = u.last_modified) != null ? a : 0, e.file_size = (t = u.file_size) != null ? t : 0, e.is_upload = (s = u.is_upload) != null ? s : !1, e.is_identical = (l = u.is_identical) != null ? l : !1, e } }; function b3() { return {id: 0, file_num: 0, data: new Uint8Array(0), compressed: !1, blk_id: 0} } const Su = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.file_num !== 0 && e.uint32(16).sint32(u.file_num), u.data.length !== 0 && e.uint32(26).bytes(u.data), u.compressed !== !1 && e.uint32(32).bool(u.compressed), u.blk_id !== 0 && e.uint32(40).uint32(u.blk_id), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = b3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 16) break; a.file_num = i.sint32(); continue; case 3: if (t !== 26) break; a.data = i.bytes(); continue; case 4: if (t !== 32) break; a.compressed = i.bool(); continue; case 5: if (t !== 40) break; a.blk_id = i.uint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0, data: n(u.data) ? R(u.data) : new Uint8Array(0), compressed: n(u.compressed) ? globalThis.Boolean(u.compressed) : !1, blk_id: n(u.blk_id) ? globalThis.Number(u.blk_id) : 0 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), u.data.length !== 0 && (e.data = I(u.data)), u.compressed !== !1 && (e.compressed = u.compressed), u.blk_id !== 0 && (e.blk_id = Math.round(u.blk_id)), e }, create(u) { return Su.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s; const e = b3(); return e.id = (i = u.id) != null ? i : 0, e.file_num = (o = u.file_num) != null ? o : 0, e.data = (a = u.data) != null ? a : new Uint8Array(0), e.compressed = (t = u.compressed) != null ? t : !1, e.blk_id = (s = u.blk_id) != null ? s : 0, e } }; function w3() { return {id: 0, error: "", file_num: 0} } const zu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.error !== "" && e.uint32(18).string(u.error), u.file_num !== 0 && e.uint32(24).sint32(u.file_num), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = w3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.error = i.string(); continue; case 3: if (t !== 24) break; a.file_num = i.sint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, error: n(u.error) ? globalThis.String(u.error) : "", file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.error !== "" && (e.error = u.error), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), e }, create(u) { return zu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = w3(); return e.id = (i = u.id) != null ? i : 0, e.error = (o = u.error) != null ? o : "", e.file_num = (a = u.file_num) != null ? a : 0, e } }; function S3() { return {id: 0, path: "", include_hidden: !1, file_num: 0} } const Pu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path), u.include_hidden !== !1 && e.uint32(24).bool(u.include_hidden), u.file_num !== 0 && e.uint32(32).int32(u.file_num), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = S3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue; case 3: if (t !== 24) break; a.include_hidden = i.bool(); continue; case 4: if (t !== 32) break; a.file_num = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : "", include_hidden: n(u.include_hidden) ? globalThis.Boolean(u.include_hidden) : !1, file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), u.include_hidden !== !1 && (e.include_hidden = u.include_hidden), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), e }, create(u) { return Pu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = S3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e.include_hidden = (a = u.include_hidden) != null ? a : !1, e.file_num = (t = u.file_num) != null ? t : 0, e } }; function z3() { return {id: 0, file_num: 0, skip: void 0, offset_blk: void 0} } const cu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.file_num !== 0 && e.uint32(16).sint32(u.file_num), u.skip !== void 0 && e.uint32(24).bool(u.skip), u.offset_blk !== void 0 && e.uint32(32).uint32(u.offset_blk), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = z3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 16) break; a.file_num = i.sint32(); continue; case 3: if (t !== 24) break; a.skip = i.bool(); continue; case 4: if (t !== 32) break; a.offset_blk = i.uint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0, skip: n(u.skip) ? globalThis.Boolean(u.skip) : void 0, offset_blk: n(u.offset_blk) ? globalThis.Number(u.offset_blk) : void 0 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), u.skip !== void 0 && (e.skip = u.skip), u.offset_blk !== void 0 && (e.offset_blk = Math.round(u.offset_blk)), e }, create(u) { return cu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = z3(); return e.id = (i = u.id) != null ? i : 0, e.file_num = (o = u.file_num) != null ? o : 0, e.skip = (a = u.skip) != null ? a : void 0, e.offset_blk = (t = u.offset_blk) != null ? t : void 0, e } }; function P3() { return {id: 0, file_num: 0} } const Ru = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.file_num !== 0 && e.uint32(16).sint32(u.file_num), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = P3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 16) break; a.file_num = i.sint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: n(u.id) ? globalThis.Number(u.id) : 0, file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0} }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), e }, create(u) { return Ru.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = P3(); return e.id = (i = u.id) != null ? i : 0, e.file_num = (o = u.file_num) != null ? o : 0, e } }; function R3() { return {id: 0, path: "", files: [], file_num: 0, total_size: 0} } const Iu = { encode(u, e = r.Writer.create()) { u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path); for (const i of u.files) W.encode(i, e.uint32(26).fork()).ldelim(); return u.file_num !== 0 && e.uint32(32).int32(u.file_num), u.total_size !== 0 && e.uint32(40).uint64(u.total_size), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = R3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue; case 3: if (t !== 26) break; a.files.push(W.decode(i, i.uint32())); continue; case 4: if (t !== 32) break; a.file_num = i.int32(); continue; case 5: if (t !== 40) break; a.total_size = V(i.uint64()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : "", files: globalThis.Array.isArray(u == null ? void 0 : u.files) ? u.files.map(e => W.fromJSON(e)) : [], file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0, total_size: n(u.total_size) ? globalThis.Number(u.total_size) : 0 } }, toJSON(u) { var i; const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), (i = u.files) != null && i.length && (e.files = u.files.map(o => W.toJSON(o))), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), u.total_size !== 0 && (e.total_size = Math.round(u.total_size)), e }, create(u) { return Iu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s; const e = R3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e.files = ((a = u.files) == null ? void 0 : a.map(l => W.fromPartial(l))) || [], e.file_num = (t = u.file_num) != null ? t : 0, e.total_size = (s = u.total_size) != null ? s : 0, e } }; function I3() { return {id: 0, path: "", recursive: !1} } const Tu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path), u.recursive !== !1 && e.uint32(24).bool(u.recursive), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = I3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue; case 3: if (t !== 24) break; a.recursive = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : "", recursive: n(u.recursive) ? globalThis.Boolean(u.recursive) : !1 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), u.recursive !== !1 && (e.recursive = u.recursive), e }, create(u) { return Tu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = I3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e.recursive = (a = u.recursive) != null ? a : !1, e } }; function T3() { return {id: 0, path: "", file_num: 0} } const ju = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path), u.file_num !== 0 && e.uint32(24).sint32(u.file_num), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = T3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue; case 3: if (t !== 24) break; a.file_num = i.sint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : "", file_num: n(u.file_num) ? globalThis.Number(u.file_num) : 0 } }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), u.file_num !== 0 && (e.file_num = Math.round(u.file_num)), e }, create(u) { return ju.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = T3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e.file_num = (a = u.file_num) != null ? a : 0, e } }; function j3() { return {id: 0, path: ""} } const Nu = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(8).int32(u.id), u.path !== "" && e.uint32(18).string(u.path), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = j3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.id = i.int32(); continue; case 2: if (t !== 18) break; a.path = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: n(u.id) ? globalThis.Number(u.id) : 0, path: n(u.path) ? globalThis.String(u.path) : ""} }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.path !== "" && (e.path = u.path), e }, create(u) { return Nu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = j3(); return e.id = (i = u.id) != null ? i : 0, e.path = (o = u.path) != null ? o : "", e } }; function N3() { return {} } const h0 = { encode(u, e = r.Writer.create()) { return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = N3(); for (; i.pos < o;) { const t = i.uint32(); if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {} }, toJSON(u) { return {} }, create(u) { return h0.fromPartial(u != null ? u : {}) }, fromPartial(u) { return N3() } }; function O3() { return {id: 0, format: ""} } const f0 = { encode(u, e = r.Writer.create()) { return u.id !== 0 && e.uint32(16).int32(u.id), u.format !== "" && e.uint32(26).string(u.format), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = O3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 2: if (t !== 16) break; a.id = i.int32(); continue; case 3: if (t !== 26) break; a.format = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: n(u.id) ? globalThis.Number(u.id) : 0, format: n(u.format) ? globalThis.String(u.format) : ""} }, toJSON(u) { const e = {}; return u.id !== 0 && (e.id = Math.round(u.id)), u.format !== "" && (e.format = u.format), e }, create(u) { return f0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = O3(); return e.id = (i = u.id) != null ? i : 0, e.format = (o = u.format) != null ? o : "", e } }; function M3() { return {formats: []} } const x0 = { encode(u, e = r.Writer.create()) { for (const i of u.formats) f0.encode(i, e.uint32(18).fork()).ldelim(); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = M3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 2: if (t !== 18) break; a.formats.push(f0.decode(i, i.uint32())); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {formats: globalThis.Array.isArray(u == null ? void 0 : u.formats) ? u.formats.map(e => f0.fromJSON(e)) : []} }, toJSON(u) { var i; const e = {}; return (i = u.formats) != null && i.length && (e.formats = u.formats.map(o => f0.toJSON(o))), e }, create(u) { return x0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = M3(); return e.formats = ((i = u.formats) == null ? void 0 : i.map(o => f0.fromPartial(o))) || [], e } }; function U3() { return {msg_flags: 0} } const y0 = { encode(u, e = r.Writer.create()) { return u.msg_flags !== 0 && e.uint32(16).int32(u.msg_flags), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = U3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 2: if (t !== 16) break; a.msg_flags = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {msg_flags: n(u.msg_flags) ? globalThis.Number(u.msg_flags) : 0} }, toJSON(u) { const e = {}; return u.msg_flags !== 0 && (e.msg_flags = Math.round(u.msg_flags)), e }, create(u) { return y0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = U3(); return e.msg_flags = (i = u.msg_flags) != null ? i : 0, e } }; function L3() { return {requested_format_id: 0} } const b0 = { encode(u, e = r.Writer.create()) { return u.requested_format_id !== 0 && e.uint32(16).int32(u.requested_format_id), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = L3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 2: if (t !== 16) break; a.requested_format_id = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {requested_format_id: n(u.requested_format_id) ? globalThis.Number(u.requested_format_id) : 0} }, toJSON(u) { const e = {}; return u.requested_format_id !== 0 && (e.requested_format_id = Math.round(u.requested_format_id)), e }, create(u) { return b0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = L3(); return e.requested_format_id = (i = u.requested_format_id) != null ? i : 0, e } }; function W3() { return {msg_flags: 0, format_data: new Uint8Array(0)} } const w0 = { encode(u, e = r.Writer.create()) { return u.msg_flags !== 0 && e.uint32(16).int32(u.msg_flags), u.format_data.length !== 0 && e.uint32(26).bytes(u.format_data), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = W3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 2: if (t !== 16) break; a.msg_flags = i.int32(); continue; case 3: if (t !== 26) break; a.format_data = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { msg_flags: n(u.msg_flags) ? globalThis.Number(u.msg_flags) : 0, format_data: n(u.format_data) ? R(u.format_data) : new Uint8Array(0) } }, toJSON(u) { const e = {}; return u.msg_flags !== 0 && (e.msg_flags = Math.round(u.msg_flags)), u.format_data.length !== 0 && (e.format_data = I(u.format_data)), e }, create(u) { return w0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = W3(); return e.msg_flags = (i = u.msg_flags) != null ? i : 0, e.format_data = (o = u.format_data) != null ? o : new Uint8Array(0), e } }; function V3() { return { stream_id: 0, list_index: 0, dw_flags: 0, n_position_low: 0, n_position_high: 0, cb_requested: 0, have_clip_data_id: !1, clip_data_id: 0 } } const S0 = { encode(u, e = r.Writer.create()) { return u.stream_id !== 0 && e.uint32(16).int32(u.stream_id), u.list_index !== 0 && e.uint32(24).int32(u.list_index), u.dw_flags !== 0 && e.uint32(32).int32(u.dw_flags), u.n_position_low !== 0 && e.uint32(40).int32(u.n_position_low), u.n_position_high !== 0 && e.uint32(48).int32(u.n_position_high), u.cb_requested !== 0 && e.uint32(56).int32(u.cb_requested), u.have_clip_data_id !== !1 && e.uint32(64).bool(u.have_clip_data_id), u.clip_data_id !== 0 && e.uint32(72).int32(u.clip_data_id), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = V3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 2: if (t !== 16) break; a.stream_id = i.int32(); continue; case 3: if (t !== 24) break; a.list_index = i.int32(); continue; case 4: if (t !== 32) break; a.dw_flags = i.int32(); continue; case 5: if (t !== 40) break; a.n_position_low = i.int32(); continue; case 6: if (t !== 48) break; a.n_position_high = i.int32(); continue; case 7: if (t !== 56) break; a.cb_requested = i.int32(); continue; case 8: if (t !== 64) break; a.have_clip_data_id = i.bool(); continue; case 9: if (t !== 72) break; a.clip_data_id = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { stream_id: n(u.stream_id) ? globalThis.Number(u.stream_id) : 0, list_index: n(u.list_index) ? globalThis.Number(u.list_index) : 0, dw_flags: n(u.dw_flags) ? globalThis.Number(u.dw_flags) : 0, n_position_low: n(u.n_position_low) ? globalThis.Number(u.n_position_low) : 0, n_position_high: n(u.n_position_high) ? globalThis.Number(u.n_position_high) : 0, cb_requested: n(u.cb_requested) ? globalThis.Number(u.cb_requested) : 0, have_clip_data_id: n(u.have_clip_data_id) ? globalThis.Boolean(u.have_clip_data_id) : !1, clip_data_id: n(u.clip_data_id) ? globalThis.Number(u.clip_data_id) : 0 } }, toJSON(u) { const e = {}; return u.stream_id !== 0 && (e.stream_id = Math.round(u.stream_id)), u.list_index !== 0 && (e.list_index = Math.round(u.list_index)), u.dw_flags !== 0 && (e.dw_flags = Math.round(u.dw_flags)), u.n_position_low !== 0 && (e.n_position_low = Math.round(u.n_position_low)), u.n_position_high !== 0 && (e.n_position_high = Math.round(u.n_position_high)), u.cb_requested !== 0 && (e.cb_requested = Math.round(u.cb_requested)), u.have_clip_data_id !== !1 && (e.have_clip_data_id = u.have_clip_data_id), u.clip_data_id !== 0 && (e.clip_data_id = Math.round(u.clip_data_id)), e }, create(u) { return S0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c; const e = V3(); return e.stream_id = (i = u.stream_id) != null ? i : 0, e.list_index = (o = u.list_index) != null ? o : 0, e.dw_flags = (a = u.dw_flags) != null ? a : 0, e.n_position_low = (t = u.n_position_low) != null ? t : 0, e.n_position_high = (s = u.n_position_high) != null ? s : 0, e.cb_requested = (l = u.cb_requested) != null ? l : 0, e.have_clip_data_id = (E = u.have_clip_data_id) != null ? E : !1, e.clip_data_id = (c = u.clip_data_id) != null ? c : 0, e } }; function q3() { return {msg_flags: 0, stream_id: 0, requested_data: new Uint8Array(0)} } const z0 = { encode(u, e = r.Writer.create()) { return u.msg_flags !== 0 && e.uint32(24).int32(u.msg_flags), u.stream_id !== 0 && e.uint32(32).int32(u.stream_id), u.requested_data.length !== 0 && e.uint32(42).bytes(u.requested_data), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = q3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 3: if (t !== 24) break; a.msg_flags = i.int32(); continue; case 4: if (t !== 32) break; a.stream_id = i.int32(); continue; case 5: if (t !== 42) break; a.requested_data = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { msg_flags: n(u.msg_flags) ? globalThis.Number(u.msg_flags) : 0, stream_id: n(u.stream_id) ? globalThis.Number(u.stream_id) : 0, requested_data: n(u.requested_data) ? R(u.requested_data) : new Uint8Array(0) } }, toJSON(u) { const e = {}; return u.msg_flags !== 0 && (e.msg_flags = Math.round(u.msg_flags)), u.stream_id !== 0 && (e.stream_id = Math.round(u.stream_id)), u.requested_data.length !== 0 && (e.requested_data = I(u.requested_data)), e }, create(u) { return z0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = q3(); return e.msg_flags = (i = u.msg_flags) != null ? i : 0, e.stream_id = (o = u.stream_id) != null ? o : 0, e.requested_data = (a = u.requested_data) != null ? a : new Uint8Array(0), e } }; function K3() { return { ready: void 0, format_list: void 0, format_list_response: void 0, format_data_request: void 0, format_data_response: void 0, file_contents_request: void 0, file_contents_response: void 0 } } const P0 = { encode(u, e = r.Writer.create()) { return u.ready !== void 0 && h0.encode(u.ready, e.uint32(10).fork()).ldelim(), u.format_list !== void 0 && x0.encode(u.format_list, e.uint32(18).fork()).ldelim(), u.format_list_response !== void 0 && y0.encode(u.format_list_response, e.uint32(26).fork()).ldelim(), u.format_data_request !== void 0 && b0.encode(u.format_data_request, e.uint32(34).fork()).ldelim(), u.format_data_response !== void 0 && w0.encode(u.format_data_response, e.uint32(42).fork()).ldelim(), u.file_contents_request !== void 0 && S0.encode(u.file_contents_request, e.uint32(50).fork()).ldelim(), u.file_contents_response !== void 0 && z0.encode(u.file_contents_response, e.uint32(58).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = K3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.ready = h0.decode(i, i.uint32()); continue; case 2: if (t !== 18) break; a.format_list = x0.decode(i, i.uint32()); continue; case 3: if (t !== 26) break; a.format_list_response = y0.decode(i, i.uint32()); continue; case 4: if (t !== 34) break; a.format_data_request = b0.decode(i, i.uint32()); continue; case 5: if (t !== 42) break; a.format_data_response = w0.decode(i, i.uint32()); continue; case 6: if (t !== 50) break; a.file_contents_request = S0.decode(i, i.uint32()); continue; case 7: if (t !== 58) break; a.file_contents_response = z0.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { ready: n(u.ready) ? h0.fromJSON(u.ready) : void 0, format_list: n(u.format_list) ? x0.fromJSON(u.format_list) : void 0, format_list_response: n(u.format_list_response) ? y0.fromJSON(u.format_list_response) : void 0, format_data_request: n(u.format_data_request) ? b0.fromJSON(u.format_data_request) : void 0, format_data_response: n(u.format_data_response) ? w0.fromJSON(u.format_data_response) : void 0, file_contents_request: n(u.file_contents_request) ? S0.fromJSON(u.file_contents_request) : void 0, file_contents_response: n(u.file_contents_response) ? z0.fromJSON(u.file_contents_response) : void 0 } }, toJSON(u) { const e = {}; return u.ready !== void 0 && (e.ready = h0.toJSON(u.ready)), u.format_list !== void 0 && (e.format_list = x0.toJSON(u.format_list)), u.format_list_response !== void 0 && (e.format_list_response = y0.toJSON(u.format_list_response)), u.format_data_request !== void 0 && (e.format_data_request = b0.toJSON(u.format_data_request)), u.format_data_response !== void 0 && (e.format_data_response = w0.toJSON(u.format_data_response)), u.file_contents_request !== void 0 && (e.file_contents_request = S0.toJSON(u.file_contents_request)), u.file_contents_response !== void 0 && (e.file_contents_response = z0.toJSON(u.file_contents_response)), e }, create(u) { return P0.fromPartial(u != null ? u : {}) }, fromPartial(u) { const e = K3(); return e.ready = u.ready !== void 0 && u.ready !== null ? h0.fromPartial(u.ready) : void 0, e.format_list = u.format_list !== void 0 && u.format_list !== null ? x0.fromPartial(u.format_list) : void 0, e.format_list_response = u.format_list_response !== void 0 && u.format_list_response !== null ? y0.fromPartial(u.format_list_response) : void 0, e.format_data_request = u.format_data_request !== void 0 && u.format_data_request !== null ? b0.fromPartial(u.format_data_request) : void 0, e.format_data_response = u.format_data_response !== void 0 && u.format_data_response !== null ? w0.fromPartial(u.format_data_response) : void 0, e.file_contents_request = u.file_contents_request !== void 0 && u.file_contents_request !== null ? S0.fromPartial(u.file_contents_request) : void 0, e.file_contents_response = u.file_contents_response !== void 0 && u.file_contents_response !== null ? z0.fromPartial(u.file_contents_response) : void 0, e } }; function H3() { return {width: 0, height: 0} } const v = { encode(u, e = r.Writer.create()) { return u.width !== 0 && e.uint32(8).int32(u.width), u.height !== 0 && e.uint32(16).int32(u.height), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = H3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.width = i.int32(); continue; case 2: if (t !== 16) break; a.height = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { width: n(u.width) ? globalThis.Number(u.width) : 0, height: n(u.height) ? globalThis.Number(u.height) : 0 } }, toJSON(u) { const e = {}; return u.width !== 0 && (e.width = Math.round(u.width)), u.height !== 0 && (e.height = Math.round(u.height)), e }, create(u) { return v.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = H3(); return e.width = (i = u.width) != null ? i : 0, e.height = (o = u.height) != null ? o : 0, e } }; function J3() { return {display: 0, resolution: void 0} } const Ou = { encode(u, e = r.Writer.create()) { return u.display !== 0 && e.uint32(8).int32(u.display), u.resolution !== void 0 && v.encode(u.resolution, e.uint32(18).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = J3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.display = i.int32(); continue; case 2: if (t !== 18) break; a.resolution = v.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { display: n(u.display) ? globalThis.Number(u.display) : 0, resolution: n(u.resolution) ? v.fromJSON(u.resolution) : void 0 } }, toJSON(u) { const e = {}; return u.display !== 0 && (e.display = Math.round(u.display)), u.resolution !== void 0 && (e.resolution = v.toJSON(u.resolution)), e }, create(u) { return Ou.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = J3(); return e.display = (i = u.display) != null ? i : 0, e.resolution = u.resolution !== void 0 && u.resolution !== null ? v.fromPartial(u.resolution) : void 0, e } }; function G3() { return {resolutions: []} } const uu = { encode(u, e = r.Writer.create()) { for (const i of u.resolutions) v.encode(i, e.uint32(10).fork()).ldelim(); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = G3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.resolutions.push(v.decode(i, i.uint32())); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {resolutions: globalThis.Array.isArray(u == null ? void 0 : u.resolutions) ? u.resolutions.map(e => v.fromJSON(e)) : []} }, toJSON(u) { var i; const e = {}; return (i = u.resolutions) != null && i.length && (e.resolutions = u.resolutions.map(o => v.toJSON(o))), e }, create(u) { return uu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = G3(); return e.resolutions = ((i = u.resolutions) == null ? void 0 : i.map(o => v.fromPartial(o))) || [], e } }; function Z3() { return { display: 0, x: 0, y: 0, width: 0, height: 0, cursor_embedded: !1, resolutions: void 0, original_resolution: void 0 } } const Mu = { encode(u, e = r.Writer.create()) { return u.display !== 0 && e.uint32(8).int32(u.display), u.x !== 0 && e.uint32(16).sint32(u.x), u.y !== 0 && e.uint32(24).sint32(u.y), u.width !== 0 && e.uint32(32).int32(u.width), u.height !== 0 && e.uint32(40).int32(u.height), u.cursor_embedded !== !1 && e.uint32(48).bool(u.cursor_embedded), u.resolutions !== void 0 && uu.encode(u.resolutions, e.uint32(58).fork()).ldelim(), u.original_resolution !== void 0 && v.encode(u.original_resolution, e.uint32(66).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Z3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.display = i.int32(); continue; case 2: if (t !== 16) break; a.x = i.sint32(); continue; case 3: if (t !== 24) break; a.y = i.sint32(); continue; case 4: if (t !== 32) break; a.width = i.int32(); continue; case 5: if (t !== 40) break; a.height = i.int32(); continue; case 6: if (t !== 48) break; a.cursor_embedded = i.bool(); continue; case 7: if (t !== 58) break; a.resolutions = uu.decode(i, i.uint32()); continue; case 8: if (t !== 66) break; a.original_resolution = v.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { display: n(u.display) ? globalThis.Number(u.display) : 0, x: n(u.x) ? globalThis.Number(u.x) : 0, y: n(u.y) ? globalThis.Number(u.y) : 0, width: n(u.width) ? globalThis.Number(u.width) : 0, height: n(u.height) ? globalThis.Number(u.height) : 0, cursor_embedded: n(u.cursor_embedded) ? globalThis.Boolean(u.cursor_embedded) : !1, resolutions: n(u.resolutions) ? uu.fromJSON(u.resolutions) : void 0, original_resolution: n(u.original_resolution) ? v.fromJSON(u.original_resolution) : void 0 } }, toJSON(u) { const e = {}; return u.display !== 0 && (e.display = Math.round(u.display)), u.x !== 0 && (e.x = Math.round(u.x)), u.y !== 0 && (e.y = Math.round(u.y)), u.width !== 0 && (e.width = Math.round(u.width)), u.height !== 0 && (e.height = Math.round(u.height)), u.cursor_embedded !== !1 && (e.cursor_embedded = u.cursor_embedded), u.resolutions !== void 0 && (e.resolutions = uu.toJSON(u.resolutions)), u.original_resolution !== void 0 && (e.original_resolution = v.toJSON(u.original_resolution)), e }, create(u) { return Mu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l; const e = Z3(); return e.display = (i = u.display) != null ? i : 0, e.x = (o = u.x) != null ? o : 0, e.y = (a = u.y) != null ? a : 0, e.width = (t = u.width) != null ? t : 0, e.height = (s = u.height) != null ? s : 0, e.cursor_embedded = (l = u.cursor_embedded) != null ? l : !1, e.resolutions = u.resolutions !== void 0 && u.resolutions !== null ? uu.fromPartial(u.resolutions) : void 0, e.original_resolution = u.original_resolution !== void 0 && u.original_resolution !== null ? v.fromPartial(u.original_resolution) : void 0, e } }; function Q3() { return {add: [], sub: [], set: []} } const Uu = { encode(u, e = r.Writer.create()) { e.uint32(10).fork(); for (const i of u.add) e.int32(i); e.ldelim(), e.uint32(18).fork(); for (const i of u.sub) e.int32(i); e.ldelim(), e.uint32(26).fork(); for (const i of u.set) e.int32(i); return e.ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Q3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t === 8) { a.add.push(i.int32()); continue } if (t === 10) { const s = i.uint32() + i.pos; for (; i.pos < s;) a.add.push(i.int32()); continue } break; case 2: if (t === 16) { a.sub.push(i.int32()); continue } if (t === 18) { const s = i.uint32() + i.pos; for (; i.pos < s;) a.sub.push(i.int32()); continue } break; case 3: if (t === 24) { a.set.push(i.int32()); continue } if (t === 26) { const s = i.uint32() + i.pos; for (; i.pos < s;) a.set.push(i.int32()); continue } break } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { add: globalThis.Array.isArray(u == null ? void 0 : u.add) ? u.add.map(e => globalThis.Number(e)) : [], sub: globalThis.Array.isArray(u == null ? void 0 : u.sub) ? u.sub.map(e => globalThis.Number(e)) : [], set: globalThis.Array.isArray(u == null ? void 0 : u.set) ? u.set.map(e => globalThis.Number(e)) : [] } }, toJSON(u) { var i, o, a; const e = {}; return (i = u.add) != null && i.length && (e.add = u.add.map(t => Math.round(t))), (o = u.sub) != null && o.length && (e.sub = u.sub.map(t => Math.round(t))), (a = u.set) != null && a.length && (e.set = u.set.map(t => Math.round(t))), e }, create(u) { return Uu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = Q3(); return e.add = ((i = u.add) == null ? void 0 : i.map(t => t)) || [], e.sub = ((o = u.sub) == null ? void 0 : o.map(t => t)) || [], e.set = ((a = u.set) == null ? void 0 : a.map(t => t)) || [], e } }; function X3() { return {display: 0, on: !1} } const Lu = { encode(u, e = r.Writer.create()) { return u.display !== 0 && e.uint32(8).int32(u.display), u.on !== !1 && e.uint32(16).bool(u.on), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = X3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.display = i.int32(); continue; case 2: if (t !== 16) break; a.on = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {display: n(u.display) ? globalThis.Number(u.display) : 0, on: n(u.on) ? globalThis.Boolean(u.on) : !1} }, toJSON(u) { const e = {}; return u.display !== 0 && (e.display = Math.round(u.display)), u.on !== !1 && (e.on = u.on), e }, create(u) { return Lu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = X3(); return e.display = (i = u.display) != null ? i : 0, e.on = (o = u.on) != null ? o : !1, e } }; function Y3() { return {impl_key: "", on: !1} } const Wu = { encode(u, e = r.Writer.create()) { return u.impl_key !== "" && e.uint32(10).string(u.impl_key), u.on !== !1 && e.uint32(16).bool(u.on), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Y3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.impl_key = i.string(); continue; case 2: if (t !== 16) break; a.on = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { impl_key: n(u.impl_key) ? globalThis.String(u.impl_key) : "", on: n(u.on) ? globalThis.Boolean(u.on) : !1 } }, toJSON(u) { const e = {}; return u.impl_key !== "" && (e.impl_key = u.impl_key), u.on !== !1 && (e.on = u.on), e }, create(u) { return Wu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Y3(); return e.impl_key = (i = u.impl_key) != null ? i : "", e.on = (o = u.on) != null ? o : !1, e } }; function $3() { return {permission: 0, enabled: !1} } const R0 = { encode(u, e = r.Writer.create()) { return u.permission !== 0 && e.uint32(8).int32(u.permission), u.enabled !== !1 && e.uint32(16).bool(u.enabled), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = $3(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.permission = i.int32(); continue; case 2: if (t !== 16) break; a.enabled = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { permission: n(u.permission) ? Fa(u.permission) : 0, enabled: n(u.enabled) ? globalThis.Boolean(u.enabled) : !1 } }, toJSON(u) { const e = {}; return u.permission !== 0 && (e.permission = _a(u.permission)), u.enabled !== !1 && (e.enabled = u.enabled), e }, create(u) { return R0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = $3(); return e.permission = (i = u.permission) != null ? i : 0, e.enabled = (o = u.enabled) != null ? o : !1, e } }; function ui() { return { ability_vp9: 0, ability_h264: 0, ability_h265: 0, prefer: 0, ability_vp8: 0, ability_av1: 0, i444: void 0, prefer_chroma: 0 } } const Vu = { encode(u, e = r.Writer.create()) { return u.ability_vp9 !== 0 && e.uint32(8).int32(u.ability_vp9), u.ability_h264 !== 0 && e.uint32(16).int32(u.ability_h264), u.ability_h265 !== 0 && e.uint32(24).int32(u.ability_h265), u.prefer !== 0 && e.uint32(32).int32(u.prefer), u.ability_vp8 !== 0 && e.uint32(40).int32(u.ability_vp8), u.ability_av1 !== 0 && e.uint32(48).int32(u.ability_av1), u.i444 !== void 0 && J.encode(u.i444, e.uint32(58).fork()).ldelim(), u.prefer_chroma !== 0 && e.uint32(64).int32(u.prefer_chroma), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ui(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.ability_vp9 = i.int32(); continue; case 2: if (t !== 16) break; a.ability_h264 = i.int32(); continue; case 3: if (t !== 24) break; a.ability_h265 = i.int32(); continue; case 4: if (t !== 32) break; a.prefer = i.int32(); continue; case 5: if (t !== 40) break; a.ability_vp8 = i.int32(); continue; case 6: if (t !== 48) break; a.ability_av1 = i.int32(); continue; case 7: if (t !== 58) break; a.i444 = J.decode(i, i.uint32()); continue; case 8: if (t !== 64) break; a.prefer_chroma = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { ability_vp9: n(u.ability_vp9) ? globalThis.Number(u.ability_vp9) : 0, ability_h264: n(u.ability_h264) ? globalThis.Number(u.ability_h264) : 0, ability_h265: n(u.ability_h265) ? globalThis.Number(u.ability_h265) : 0, prefer: n(u.prefer) ? va(u.prefer) : 0, ability_vp8: n(u.ability_vp8) ? globalThis.Number(u.ability_vp8) : 0, ability_av1: n(u.ability_av1) ? globalThis.Number(u.ability_av1) : 0, i444: n(u.i444) ? J.fromJSON(u.i444) : void 0, prefer_chroma: n(u.prefer_chroma) ? la(u.prefer_chroma) : 0 } }, toJSON(u) { const e = {}; return u.ability_vp9 !== 0 && (e.ability_vp9 = Math.round(u.ability_vp9)), u.ability_h264 !== 0 && (e.ability_h264 = Math.round(u.ability_h264)), u.ability_h265 !== 0 && (e.ability_h265 = Math.round(u.ability_h265)), u.prefer !== 0 && (e.prefer = ka(u.prefer)), u.ability_vp8 !== 0 && (e.ability_vp8 = Math.round(u.ability_vp8)), u.ability_av1 !== 0 && (e.ability_av1 = Math.round(u.ability_av1)), u.i444 !== void 0 && (e.i444 = J.toJSON(u.i444)), u.prefer_chroma !== 0 && (e.prefer_chroma = Ea(u.prefer_chroma)), e }, create(u) { return Vu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E; const e = ui(); return e.ability_vp9 = (i = u.ability_vp9) != null ? i : 0, e.ability_h264 = (o = u.ability_h264) != null ? o : 0, e.ability_h265 = (a = u.ability_h265) != null ? a : 0, e.prefer = (t = u.prefer) != null ? t : 0, e.ability_vp8 = (s = u.ability_vp8) != null ? s : 0, e.ability_av1 = (l = u.ability_av1) != null ? l : 0, e.i444 = u.i444 !== void 0 && u.i444 !== null ? J.fromPartial(u.i444) : void 0, e.prefer_chroma = (E = u.prefer_chroma) != null ? E : 0, e } }; function ei() { return { image_quality: 0, lock_after_session_end: 0, show_remote_cursor: 0, privacy_mode: 0, block_input: 0, custom_image_quality: 0, disable_audio: 0, disable_clipboard: 0, enable_file_transfer: 0, supported_decoding: void 0, custom_fps: 0, disable_keyboard: 0, follow_remote_cursor: 0, follow_remote_window: 0 } } const z = { encode(u, e = r.Writer.create()) { return u.image_quality !== 0 && e.uint32(8).int32(u.image_quality), u.lock_after_session_end !== 0 && e.uint32(16).int32(u.lock_after_session_end), u.show_remote_cursor !== 0 && e.uint32(24).int32(u.show_remote_cursor), u.privacy_mode !== 0 && e.uint32(32).int32(u.privacy_mode), u.block_input !== 0 && e.uint32(40).int32(u.block_input), u.custom_image_quality !== 0 && e.uint32(48).int32(u.custom_image_quality), u.disable_audio !== 0 && e.uint32(56).int32(u.disable_audio), u.disable_clipboard !== 0 && e.uint32(64).int32(u.disable_clipboard), u.enable_file_transfer !== 0 && e.uint32(72).int32(u.enable_file_transfer), u.supported_decoding !== void 0 && Vu.encode(u.supported_decoding, e.uint32(82).fork()).ldelim(), u.custom_fps !== 0 && e.uint32(88).int32(u.custom_fps), u.disable_keyboard !== 0 && e.uint32(96).int32(u.disable_keyboard), u.follow_remote_cursor !== 0 && e.uint32(120).int32(u.follow_remote_cursor), u.follow_remote_window !== 0 && e.uint32(128).int32(u.follow_remote_window), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ei(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.image_quality = i.int32(); continue; case 2: if (t !== 16) break; a.lock_after_session_end = i.int32(); continue; case 3: if (t !== 24) break; a.show_remote_cursor = i.int32(); continue; case 4: if (t !== 32) break; a.privacy_mode = i.int32(); continue; case 5: if (t !== 40) break; a.block_input = i.int32(); continue; case 6: if (t !== 48) break; a.custom_image_quality = i.int32(); continue; case 7: if (t !== 56) break; a.disable_audio = i.int32(); continue; case 8: if (t !== 64) break; a.disable_clipboard = i.int32(); continue; case 9: if (t !== 72) break; a.enable_file_transfer = i.int32(); continue; case 10: if (t !== 82) break; a.supported_decoding = Vu.decode(i, i.uint32()); continue; case 11: if (t !== 88) break; a.custom_fps = i.int32(); continue; case 12: if (t !== 96) break; a.disable_keyboard = i.int32(); continue; case 15: if (t !== 120) break; a.follow_remote_cursor = i.int32(); continue; case 16: if (t !== 128) break; a.follow_remote_window = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { image_quality: n(u.image_quality) ? ma(u.image_quality) : 0, lock_after_session_end: n(u.lock_after_session_end) ? tu(u.lock_after_session_end) : 0, show_remote_cursor: n(u.show_remote_cursor) ? tu(u.show_remote_cursor) : 0, privacy_mode: n(u.privacy_mode) ? tu(u.privacy_mode) : 0, block_input: n(u.block_input) ? tu(u.block_input) : 0, custom_image_quality: n(u.custom_image_quality) ? globalThis.Number(u.custom_image_quality) : 0, disable_audio: n(u.disable_audio) ? tu(u.disable_audio) : 0, disable_clipboard: n(u.disable_clipboard) ? tu(u.disable_clipboard) : 0, enable_file_transfer: n(u.enable_file_transfer) ? tu(u.enable_file_transfer) : 0, supported_decoding: n(u.supported_decoding) ? Vu.fromJSON(u.supported_decoding) : void 0, custom_fps: n(u.custom_fps) ? globalThis.Number(u.custom_fps) : 0, disable_keyboard: n(u.disable_keyboard) ? tu(u.disable_keyboard) : 0, follow_remote_cursor: n(u.follow_remote_cursor) ? tu(u.follow_remote_cursor) : 0, follow_remote_window: n(u.follow_remote_window) ? tu(u.follow_remote_window) : 0 } }, toJSON(u) { const e = {}; return u.image_quality !== 0 && (e.image_quality = Aa(u.image_quality)), u.lock_after_session_end !== 0 && (e.lock_after_session_end = au(u.lock_after_session_end)), u.show_remote_cursor !== 0 && (e.show_remote_cursor = au(u.show_remote_cursor)), u.privacy_mode !== 0 && (e.privacy_mode = au(u.privacy_mode)), u.block_input !== 0 && (e.block_input = au(u.block_input)), u.custom_image_quality !== 0 && (e.custom_image_quality = Math.round(u.custom_image_quality)), u.disable_audio !== 0 && (e.disable_audio = au(u.disable_audio)), u.disable_clipboard !== 0 && (e.disable_clipboard = au(u.disable_clipboard)), u.enable_file_transfer !== 0 && (e.enable_file_transfer = au(u.enable_file_transfer)), u.supported_decoding !== void 0 && (e.supported_decoding = Vu.toJSON(u.supported_decoding)), u.custom_fps !== 0 && (e.custom_fps = Math.round(u.custom_fps)), u.disable_keyboard !== 0 && (e.disable_keyboard = au(u.disable_keyboard)), u.follow_remote_cursor !== 0 && (e.follow_remote_cursor = au(u.follow_remote_cursor)), u.follow_remote_window !== 0 && (e.follow_remote_window = au(u.follow_remote_window)), e }, create(u) { return z.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c, C, D, B, F, y; const e = ei(); return e.image_quality = (i = u.image_quality) != null ? i : 0, e.lock_after_session_end = (o = u.lock_after_session_end) != null ? o : 0, e.show_remote_cursor = (a = u.show_remote_cursor) != null ? a : 0, e.privacy_mode = (t = u.privacy_mode) != null ? t : 0, e.block_input = (s = u.block_input) != null ? s : 0, e.custom_image_quality = (l = u.custom_image_quality) != null ? l : 0, e.disable_audio = (E = u.disable_audio) != null ? E : 0, e.disable_clipboard = (c = u.disable_clipboard) != null ? c : 0, e.enable_file_transfer = (C = u.enable_file_transfer) != null ? C : 0, e.supported_decoding = u.supported_decoding !== void 0 && u.supported_decoding !== null ? Vu.fromPartial(u.supported_decoding) : void 0, e.custom_fps = (D = u.custom_fps) != null ? D : 0, e.disable_keyboard = (B = u.disable_keyboard) != null ? B : 0, e.follow_remote_cursor = (F = u.follow_remote_cursor) != null ? F : 0, e.follow_remote_window = (y = u.follow_remote_window) != null ? y : 0, e } }; function ii() { return {time: 0, from_client: !1, last_delay: 0, target_bitrate: 0} } const I0 = { encode(u, e = r.Writer.create()) { return u.time !== 0 && e.uint32(8).int64(u.time), u.from_client !== !1 && e.uint32(16).bool(u.from_client), u.last_delay !== 0 && e.uint32(24).uint32(u.last_delay), u.target_bitrate !== 0 && e.uint32(32).uint32(u.target_bitrate), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ii(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.time = V(i.int64()); continue; case 2: if (t !== 16) break; a.from_client = i.bool(); continue; case 3: if (t !== 24) break; a.last_delay = i.uint32(); continue; case 4: if (t !== 32) break; a.target_bitrate = i.uint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { time: n(u.time) ? globalThis.Number(u.time) : 0, from_client: n(u.from_client) ? globalThis.Boolean(u.from_client) : !1, last_delay: n(u.last_delay) ? globalThis.Number(u.last_delay) : 0, target_bitrate: n(u.target_bitrate) ? globalThis.Number(u.target_bitrate) : 0 } }, toJSON(u) { const e = {}; return u.time !== 0 && (e.time = Math.round(u.time)), u.from_client !== !1 && (e.from_client = u.from_client), u.last_delay !== 0 && (e.last_delay = Math.round(u.last_delay)), u.target_bitrate !== 0 && (e.target_bitrate = Math.round(u.target_bitrate)), e }, create(u) { return I0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = ii(); return e.time = (i = u.time) != null ? i : 0, e.from_client = (o = u.from_client) != null ? o : !1, e.last_delay = (a = u.last_delay) != null ? a : 0, e.target_bitrate = (t = u.target_bitrate) != null ? t : 0, e } }; function ti() { return {asymmetric_value: new Uint8Array(0), symmetric_value: new Uint8Array(0)} } const K = { encode(u, e = r.Writer.create()) { return u.asymmetric_value.length !== 0 && e.uint32(10).bytes(u.asymmetric_value), u.symmetric_value.length !== 0 && e.uint32(18).bytes(u.symmetric_value), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ti(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.asymmetric_value = i.bytes(); continue; case 2: if (t !== 18) break; a.symmetric_value = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { asymmetric_value: n(u.asymmetric_value) ? R(u.asymmetric_value) : new Uint8Array(0), symmetric_value: n(u.symmetric_value) ? R(u.symmetric_value) : new Uint8Array(0) } }, toJSON(u) { const e = {}; return u.asymmetric_value.length !== 0 && (e.asymmetric_value = I(u.asymmetric_value)), u.symmetric_value.length !== 0 && (e.symmetric_value = I(u.symmetric_value)), e }, create(u) { return K.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = ti(); return e.asymmetric_value = (i = u.asymmetric_value) != null ? i : new Uint8Array(0), e.symmetric_value = (o = u.symmetric_value) != null ? o : new Uint8Array(0), e } }; function ai() { return {id: new Uint8Array(0)} } const T0 = { encode(u, e = r.Writer.create()) { return u.id.length !== 0 && e.uint32(10).bytes(u.id), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ai(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: n(u.id) ? R(u.id) : new Uint8Array(0)} }, toJSON(u) { const e = {}; return u.id.length !== 0 && (e.id = I(u.id)), e }, create(u) { return T0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = ai(); return e.id = (i = u.id) != null ? i : new Uint8Array(0), e } }; function oi() { return {sample_rate: 0, channels: 0} } const j0 = { encode(u, e = r.Writer.create()) { return u.sample_rate !== 0 && e.uint32(8).uint32(u.sample_rate), u.channels !== 0 && e.uint32(16).uint32(u.channels), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = oi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.sample_rate = i.uint32(); continue; case 2: if (t !== 16) break; a.channels = i.uint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { sample_rate: n(u.sample_rate) ? globalThis.Number(u.sample_rate) : 0, channels: n(u.channels) ? globalThis.Number(u.channels) : 0 } }, toJSON(u) { const e = {}; return u.sample_rate !== 0 && (e.sample_rate = Math.round(u.sample_rate)), u.channels !== 0 && (e.channels = Math.round(u.channels)), e }, create(u) { return j0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = oi(); return e.sample_rate = (i = u.sample_rate) != null ? i : 0, e.channels = (o = u.channels) != null ? o : 0, e } }; function ni() { return {data: new Uint8Array(0)} } const N0 = { encode(u, e = r.Writer.create()) { return u.data.length !== 0 && e.uint32(10).bytes(u.data), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ni(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.data = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {data: n(u.data) ? R(u.data) : new Uint8Array(0)} }, toJSON(u) { const e = {}; return u.data.length !== 0 && (e.data = I(u.data)), e }, create(u) { return N0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = ni(); return e.data = (i = u.data) != null ? i : new Uint8Array(0), e } }; function ri() { return {msgtype: "", title: "", text: "", link: ""} } const O0 = { encode(u, e = r.Writer.create()) { return u.msgtype !== "" && e.uint32(10).string(u.msgtype), u.title !== "" && e.uint32(18).string(u.title), u.text !== "" && e.uint32(26).string(u.text), u.link !== "" && e.uint32(34).string(u.link), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ri(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.msgtype = i.string(); continue; case 2: if (t !== 18) break; a.title = i.string(); continue; case 3: if (t !== 26) break; a.text = i.string(); continue; case 4: if (t !== 34) break; a.link = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { msgtype: n(u.msgtype) ? globalThis.String(u.msgtype) : "", title: n(u.title) ? globalThis.String(u.title) : "", text: n(u.text) ? globalThis.String(u.text) : "", link: n(u.link) ? globalThis.String(u.link) : "" } }, toJSON(u) { const e = {}; return u.msgtype !== "" && (e.msgtype = u.msgtype), u.title !== "" && (e.title = u.title), u.text !== "" && (e.text = u.text), u.link !== "" && (e.link = u.link), e }, create(u) { return O0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = ri(); return e.msgtype = (i = u.msgtype) != null ? i : "", e.title = (o = u.title) != null ? o : "", e.text = (a = u.text) != null ? a : "", e.link = (t = u.link) != null ? t : "", e } }; function si() { return {privacy_mode_state: void 0, block_input_state: void 0, details: "", impl_key: ""} } const M0 = { encode(u, e = r.Writer.create()) { return u.privacy_mode_state !== void 0 && e.uint32(8).int32(u.privacy_mode_state), u.block_input_state !== void 0 && e.uint32(16).int32(u.block_input_state), u.details !== "" && e.uint32(26).string(u.details), u.impl_key !== "" && e.uint32(34).string(u.impl_key), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = si(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.privacy_mode_state = i.int32(); continue; case 2: if (t !== 16) break; a.block_input_state = i.int32(); continue; case 3: if (t !== 26) break; a.details = i.string(); continue; case 4: if (t !== 34) break; a.impl_key = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { privacy_mode_state: n(u.privacy_mode_state) ? fa(u.privacy_mode_state) : void 0, block_input_state: n(u.block_input_state) ? ga(u.block_input_state) : void 0, details: n(u.details) ? globalThis.String(u.details) : "", impl_key: n(u.impl_key) ? globalThis.String(u.impl_key) : "" } }, toJSON(u) { const e = {}; return u.privacy_mode_state !== void 0 && (e.privacy_mode_state = xa(u.privacy_mode_state)), u.block_input_state !== void 0 && (e.block_input_state = ha(u.block_input_state)), u.details !== "" && (e.details = u.details), u.impl_key !== "" && (e.impl_key = u.impl_key), e }, create(u) { return M0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = si(); return e.privacy_mode_state = (i = u.privacy_mode_state) != null ? i : void 0, e.block_input_state = (o = u.block_input_state) != null ? o : void 0, e.details = (a = u.details) != null ? a : "", e.impl_key = (t = u.impl_key) != null ? t : "", e } }; function li() { return {username: "", password: ""} } const qu = { encode(u, e = r.Writer.create()) { return u.username !== "" && e.uint32(10).string(u.username), u.password !== "" && e.uint32(18).string(u.password), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = li(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.username = i.string(); continue; case 2: if (t !== 18) break; a.password = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { username: n(u.username) ? globalThis.String(u.username) : "", password: n(u.password) ? globalThis.String(u.password) : "" } }, toJSON(u) { const e = {}; return u.username !== "" && (e.username = u.username), u.password !== "" && (e.password = u.password), e }, create(u) { return qu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = li(); return e.username = (i = u.username) != null ? i : "", e.password = (o = u.password) != null ? o : "", e } }; function Ei() { return {direct: void 0, logon: void 0} } const Du = { encode(u, e = r.Writer.create()) { return u.direct !== void 0 && e.uint32(8).bool(u.direct), u.logon !== void 0 && qu.encode(u.logon, e.uint32(18).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ei(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.direct = i.bool(); continue; case 2: if (t !== 18) break; a.logon = qu.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { direct: n(u.direct) ? globalThis.Boolean(u.direct) : void 0, logon: n(u.logon) ? qu.fromJSON(u.logon) : void 0 } }, toJSON(u) { const e = {}; return u.direct !== void 0 && (e.direct = u.direct), u.logon !== void 0 && (e.logon = qu.toJSON(u.logon)), e }, create(u) { return Du.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Ei(); return e.direct = (i = u.direct) != null ? i : void 0, e.logon = u.logon !== void 0 && u.logon !== null ? qu.fromPartial(u.logon) : void 0, e } }; function di() { return {uuid: new Uint8Array(0)} } const U0 = { encode(u, e = r.Writer.create()) { return u.uuid.length !== 0 && e.uint32(10).bytes(u.uuid), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = di(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.uuid = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {uuid: n(u.uuid) ? R(u.uuid) : new Uint8Array(0)} }, toJSON(u) { const e = {}; return u.uuid.length !== 0 && (e.uuid = I(u.uuid)), e }, create(u) { return U0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = di(); return e.uuid = (i = u.uuid) != null ? i : new Uint8Array(0), e } }; function ci() { return {uuid: new Uint8Array(0), lr: void 0} } const L0 = { encode(u, e = r.Writer.create()) { return u.uuid.length !== 0 && e.uint32(10).bytes(u.uuid), u.lr !== void 0 && H.encode(u.lr, e.uint32(18).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ci(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.uuid = i.bytes(); continue; case 2: if (t !== 18) break; a.lr = H.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {uuid: n(u.uuid) ? R(u.uuid) : new Uint8Array(0), lr: n(u.lr) ? H.fromJSON(u.lr) : void 0} }, toJSON(u) { const e = {}; return u.uuid.length !== 0 && (e.uuid = I(u.uuid)), u.lr !== void 0 && (e.lr = H.toJSON(u.lr)), e }, create(u) { return L0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = ci(); return e.uuid = (i = u.uuid) != null ? i : new Uint8Array(0), e.lr = u.lr !== void 0 && u.lr !== null ? H.fromPartial(u.lr) : void 0, e } }; function Ci() { return {} } const W0 = { encode(u, e = r.Writer.create()) { return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ci(); for (; i.pos < o;) { const t = i.uint32(); if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {} }, toJSON(u) { return {} }, create(u) { return W0.fromPartial(u != null ? u : {}) }, fromPartial(u) { return Ci() } }; function pi() { return {id: "", content: new Uint8Array(0)} } const V0 = { encode(u, e = r.Writer.create()) { return u.id !== "" && e.uint32(10).string(u.id), u.content.length !== 0 && e.uint32(18).bytes(u.content), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = pi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 18) break; a.content = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: n(u.id) ? globalThis.String(u.id) : "", content: n(u.content) ? R(u.content) : new Uint8Array(0)} }, toJSON(u) { const e = {}; return u.id !== "" && (e.id = u.id), u.content.length !== 0 && (e.content = I(u.content)), e }, create(u) { return V0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = pi(); return e.id = (i = u.id) != null ? i : "", e.content = (o = u.content) != null ? o : new Uint8Array(0), e } }; function Di() { return {id: "", name: "", msg: ""} } const q0 = { encode(u, e = r.Writer.create()) { return u.id !== "" && e.uint32(10).string(u.id), u.name !== "" && e.uint32(18).string(u.name), u.msg !== "" && e.uint32(26).string(u.msg), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Di(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 18) break; a.name = i.string(); continue; case 3: if (t !== 26) break; a.msg = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: n(u.id) ? globalThis.String(u.id) : "", name: n(u.name) ? globalThis.String(u.name) : "", msg: n(u.msg) ? globalThis.String(u.msg) : "" } }, toJSON(u) { const e = {}; return u.id !== "" && (e.id = u.id), u.name !== "" && (e.name = u.name), u.msg !== "" && (e.msg = u.msg), e }, create(u) { return q0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = Di(); return e.id = (i = u.id) != null ? i : "", e.name = (o = u.name) != null ? o : "", e.msg = (a = u.msg) != null ? a : "", e } }; function Bi() { return {sessions: [], current_sid: 0} } const K0 = { encode(u, e = r.Writer.create()) { for (const i of u.sessions) c0.encode(i, e.uint32(10).fork()).ldelim(); return u.current_sid !== 0 && e.uint32(16).uint32(u.current_sid), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Bi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.sessions.push(c0.decode(i, i.uint32())); continue; case 2: if (t !== 16) break; a.current_sid = i.uint32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { sessions: globalThis.Array.isArray(u == null ? void 0 : u.sessions) ? u.sessions.map(e => c0.fromJSON(e)) : [], current_sid: n(u.current_sid) ? globalThis.Number(u.current_sid) : 0 } }, toJSON(u) { var i; const e = {}; return (i = u.sessions) != null && i.length && (e.sessions = u.sessions.map(o => c0.toJSON(o))), u.current_sid !== 0 && (e.current_sid = Math.round(u.current_sid)), e }, create(u) { return K0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Bi(); return e.sessions = ((i = u.sessions) == null ? void 0 : i.map(a => c0.fromPartial(a))) || [], e.current_sid = (o = u.current_sid) != null ? o : 0, e } }; function mi() { return {switch_display: 0} } const H0 = { encode(u, e = r.Writer.create()) { return u.switch_display !== 0 && e.uint32(8).int32(u.switch_display), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = mi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.switch_display = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {switch_display: n(u.switch_display) ? globalThis.Number(u.switch_display) : 0} }, toJSON(u) { const e = {}; return u.switch_display !== 0 && (e.switch_display = Math.round(u.switch_display)), e }, create(u) { return H0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = mi(); return e.switch_display = (i = u.switch_display) != null ? i : 0, e } }; function Ai() { return { chat_message: void 0, switch_display: void 0, permission_info: void 0, option: void 0, audio_format: void 0, close_reason: void 0, refresh_video: void 0, video_received: void 0, back_notification: void 0, restart_remote_device: void 0, uac: void 0, foreground_window_elevated: void 0, stop_service: void 0, elevation_request: void 0, elevation_response: void 0, portable_service_running: void 0, switch_sides_request: void 0, switch_back: void 0, change_resolution: void 0, plugin_request: void 0, plugin_failure: void 0, full_speed_fps: void 0, auto_adjust_fps: void 0, client_record_status: void 0, capture_displays: void 0, refresh_video_display: void 0, toggle_virtual_display: void 0, toggle_privacy_mode: void 0, supported_encoding: void 0, selected_sid: void 0, change_display_resolution: void 0, message_query: void 0, follow_current_display: void 0 } } const f = { encode(u, e = r.Writer.create()) { return u.chat_message !== void 0 && vu.encode(u.chat_message, e.uint32(34).fork()).ldelim(), u.switch_display !== void 0 && Mu.encode(u.switch_display, e.uint32(42).fork()).ldelim(), u.permission_info !== void 0 && R0.encode(u.permission_info, e.uint32(50).fork()).ldelim(), u.option !== void 0 && z.encode(u.option, e.uint32(58).fork()).ldelim(), u.audio_format !== void 0 && j0.encode(u.audio_format, e.uint32(66).fork()).ldelim(), u.close_reason !== void 0 && e.uint32(74).string(u.close_reason), u.refresh_video !== void 0 && e.uint32(80).bool(u.refresh_video), u.video_received !== void 0 && e.uint32(96).bool(u.video_received), u.back_notification !== void 0 && M0.encode(u.back_notification, e.uint32(106).fork()).ldelim(), u.restart_remote_device !== void 0 && e.uint32(112).bool(u.restart_remote_device), u.uac !== void 0 && e.uint32(120).bool(u.uac), u.foreground_window_elevated !== void 0 && e.uint32(128).bool(u.foreground_window_elevated), u.stop_service !== void 0 && e.uint32(136).bool(u.stop_service), u.elevation_request !== void 0 && Du.encode(u.elevation_request, e.uint32(146).fork()).ldelim(), u.elevation_response !== void 0 && e.uint32(154).string(u.elevation_response), u.portable_service_running !== void 0 && e.uint32(160).bool(u.portable_service_running), u.switch_sides_request !== void 0 && U0.encode(u.switch_sides_request, e.uint32(170).fork()).ldelim(), u.switch_back !== void 0 && W0.encode(u.switch_back, e.uint32(178).fork()).ldelim(), u.change_resolution !== void 0 && v.encode(u.change_resolution, e.uint32(194).fork()).ldelim(), u.plugin_request !== void 0 && V0.encode(u.plugin_request, e.uint32(202).fork()).ldelim(), u.plugin_failure !== void 0 && q0.encode(u.plugin_failure, e.uint32(210).fork()).ldelim(), u.full_speed_fps !== void 0 && e.uint32(216).uint32(u.full_speed_fps), u.auto_adjust_fps !== void 0 && e.uint32(224).uint32(u.auto_adjust_fps), u.client_record_status !== void 0 && e.uint32(232).bool(u.client_record_status), u.capture_displays !== void 0 && Uu.encode(u.capture_displays, e.uint32(242).fork()).ldelim(), u.refresh_video_display !== void 0 && e.uint32(248).int32(u.refresh_video_display), u.toggle_virtual_display !== void 0 && Lu.encode(u.toggle_virtual_display, e.uint32(258).fork()).ldelim(), u.toggle_privacy_mode !== void 0 && Wu.encode(u.toggle_privacy_mode, e.uint32(266).fork()).ldelim(), u.supported_encoding !== void 0 && G.encode(u.supported_encoding, e.uint32(274).fork()).ldelim(), u.selected_sid !== void 0 && e.uint32(280).uint32(u.selected_sid), u.change_display_resolution !== void 0 && Ou.encode(u.change_display_resolution, e.uint32(290).fork()).ldelim(), u.message_query !== void 0 && H0.encode(u.message_query, e.uint32(298).fork()).ldelim(), u.follow_current_display !== void 0 && e.uint32(304).int32(u.follow_current_display), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ai(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 4: if (t !== 34) break; a.chat_message = vu.decode(i, i.uint32()); continue; case 5: if (t !== 42) break; a.switch_display = Mu.decode(i, i.uint32()); continue; case 6: if (t !== 50) break; a.permission_info = R0.decode(i, i.uint32()); continue; case 7: if (t !== 58) break; a.option = z.decode(i, i.uint32()); continue; case 8: if (t !== 66) break; a.audio_format = j0.decode(i, i.uint32()); continue; case 9: if (t !== 74) break; a.close_reason = i.string(); continue; case 10: if (t !== 80) break; a.refresh_video = i.bool(); continue; case 12: if (t !== 96) break; a.video_received = i.bool(); continue; case 13: if (t !== 106) break; a.back_notification = M0.decode(i, i.uint32()); continue; case 14: if (t !== 112) break; a.restart_remote_device = i.bool(); continue; case 15: if (t !== 120) break; a.uac = i.bool(); continue; case 16: if (t !== 128) break; a.foreground_window_elevated = i.bool(); continue; case 17: if (t !== 136) break; a.stop_service = i.bool(); continue; case 18: if (t !== 146) break; a.elevation_request = Du.decode(i, i.uint32()); continue; case 19: if (t !== 154) break; a.elevation_response = i.string(); continue; case 20: if (t !== 160) break; a.portable_service_running = i.bool(); continue; case 21: if (t !== 170) break; a.switch_sides_request = U0.decode(i, i.uint32()); continue; case 22: if (t !== 178) break; a.switch_back = W0.decode(i, i.uint32()); continue; case 24: if (t !== 194) break; a.change_resolution = v.decode(i, i.uint32()); continue; case 25: if (t !== 202) break; a.plugin_request = V0.decode(i, i.uint32()); continue; case 26: if (t !== 210) break; a.plugin_failure = q0.decode(i, i.uint32()); continue; case 27: if (t !== 216) break; a.full_speed_fps = i.uint32(); continue; case 28: if (t !== 224) break; a.auto_adjust_fps = i.uint32(); continue; case 29: if (t !== 232) break; a.client_record_status = i.bool(); continue; case 30: if (t !== 242) break; a.capture_displays = Uu.decode(i, i.uint32()); continue; case 31: if (t !== 248) break; a.refresh_video_display = i.int32(); continue; case 32: if (t !== 258) break; a.toggle_virtual_display = Lu.decode(i, i.uint32()); continue; case 33: if (t !== 266) break; a.toggle_privacy_mode = Wu.decode(i, i.uint32()); continue; case 34: if (t !== 274) break; a.supported_encoding = G.decode(i, i.uint32()); continue; case 35: if (t !== 280) break; a.selected_sid = i.uint32(); continue; case 36: if (t !== 290) break; a.change_display_resolution = Ou.decode(i, i.uint32()); continue; case 37: if (t !== 298) break; a.message_query = H0.decode(i, i.uint32()); continue; case 38: if (t !== 304) break; a.follow_current_display = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { chat_message: n(u.chat_message) ? vu.fromJSON(u.chat_message) : void 0, switch_display: n(u.switch_display) ? Mu.fromJSON(u.switch_display) : void 0, permission_info: n(u.permission_info) ? R0.fromJSON(u.permission_info) : void 0, option: n(u.option) ? z.fromJSON(u.option) : void 0, audio_format: n(u.audio_format) ? j0.fromJSON(u.audio_format) : void 0, close_reason: n(u.close_reason) ? globalThis.String(u.close_reason) : void 0, refresh_video: n(u.refresh_video) ? globalThis.Boolean(u.refresh_video) : void 0, video_received: n(u.video_received) ? globalThis.Boolean(u.video_received) : void 0, back_notification: n(u.back_notification) ? M0.fromJSON(u.back_notification) : void 0, restart_remote_device: n(u.restart_remote_device) ? globalThis.Boolean(u.restart_remote_device) : void 0, uac: n(u.uac) ? globalThis.Boolean(u.uac) : void 0, foreground_window_elevated: n(u.foreground_window_elevated) ? globalThis.Boolean(u.foreground_window_elevated) : void 0, stop_service: n(u.stop_service) ? globalThis.Boolean(u.stop_service) : void 0, elevation_request: n(u.elevation_request) ? Du.fromJSON(u.elevation_request) : void 0, elevation_response: n(u.elevation_response) ? globalThis.String(u.elevation_response) : void 0, portable_service_running: n(u.portable_service_running) ? globalThis.Boolean(u.portable_service_running) : void 0, switch_sides_request: n(u.switch_sides_request) ? U0.fromJSON(u.switch_sides_request) : void 0, switch_back: n(u.switch_back) ? W0.fromJSON(u.switch_back) : void 0, change_resolution: n(u.change_resolution) ? v.fromJSON(u.change_resolution) : void 0, plugin_request: n(u.plugin_request) ? V0.fromJSON(u.plugin_request) : void 0, plugin_failure: n(u.plugin_failure) ? q0.fromJSON(u.plugin_failure) : void 0, full_speed_fps: n(u.full_speed_fps) ? globalThis.Number(u.full_speed_fps) : void 0, auto_adjust_fps: n(u.auto_adjust_fps) ? globalThis.Number(u.auto_adjust_fps) : void 0, client_record_status: n(u.client_record_status) ? globalThis.Boolean(u.client_record_status) : void 0, capture_displays: n(u.capture_displays) ? Uu.fromJSON(u.capture_displays) : void 0, refresh_video_display: n(u.refresh_video_display) ? globalThis.Number(u.refresh_video_display) : void 0, toggle_virtual_display: n(u.toggle_virtual_display) ? Lu.fromJSON(u.toggle_virtual_display) : void 0, toggle_privacy_mode: n(u.toggle_privacy_mode) ? Wu.fromJSON(u.toggle_privacy_mode) : void 0, supported_encoding: n(u.supported_encoding) ? G.fromJSON(u.supported_encoding) : void 0, selected_sid: n(u.selected_sid) ? globalThis.Number(u.selected_sid) : void 0, change_display_resolution: n(u.change_display_resolution) ? Ou.fromJSON(u.change_display_resolution) : void 0, message_query: n(u.message_query) ? H0.fromJSON(u.message_query) : void 0, follow_current_display: n(u.follow_current_display) ? globalThis.Number(u.follow_current_display) : void 0 } }, toJSON(u) { const e = {}; return u.chat_message !== void 0 && (e.chat_message = vu.toJSON(u.chat_message)), u.switch_display !== void 0 && (e.switch_display = Mu.toJSON(u.switch_display)), u.permission_info !== void 0 && (e.permission_info = R0.toJSON(u.permission_info)), u.option !== void 0 && (e.option = z.toJSON(u.option)), u.audio_format !== void 0 && (e.audio_format = j0.toJSON(u.audio_format)), u.close_reason !== void 0 && (e.close_reason = u.close_reason), u.refresh_video !== void 0 && (e.refresh_video = u.refresh_video), u.video_received !== void 0 && (e.video_received = u.video_received), u.back_notification !== void 0 && (e.back_notification = M0.toJSON(u.back_notification)), u.restart_remote_device !== void 0 && (e.restart_remote_device = u.restart_remote_device), u.uac !== void 0 && (e.uac = u.uac), u.foreground_window_elevated !== void 0 && (e.foreground_window_elevated = u.foreground_window_elevated), u.stop_service !== void 0 && (e.stop_service = u.stop_service), u.elevation_request !== void 0 && (e.elevation_request = Du.toJSON(u.elevation_request)), u.elevation_response !== void 0 && (e.elevation_response = u.elevation_response), u.portable_service_running !== void 0 && (e.portable_service_running = u.portable_service_running), u.switch_sides_request !== void 0 && (e.switch_sides_request = U0.toJSON(u.switch_sides_request)), u.switch_back !== void 0 && (e.switch_back = W0.toJSON(u.switch_back)), u.change_resolution !== void 0 && (e.change_resolution = v.toJSON(u.change_resolution)), u.plugin_request !== void 0 && (e.plugin_request = V0.toJSON(u.plugin_request)), u.plugin_failure !== void 0 && (e.plugin_failure = q0.toJSON(u.plugin_failure)), u.full_speed_fps !== void 0 && (e.full_speed_fps = Math.round(u.full_speed_fps)), u.auto_adjust_fps !== void 0 && (e.auto_adjust_fps = Math.round(u.auto_adjust_fps)), u.client_record_status !== void 0 && (e.client_record_status = u.client_record_status), u.capture_displays !== void 0 && (e.capture_displays = Uu.toJSON(u.capture_displays)), u.refresh_video_display !== void 0 && (e.refresh_video_display = Math.round(u.refresh_video_display)), u.toggle_virtual_display !== void 0 && (e.toggle_virtual_display = Lu.toJSON(u.toggle_virtual_display)), u.toggle_privacy_mode !== void 0 && (e.toggle_privacy_mode = Wu.toJSON(u.toggle_privacy_mode)), u.supported_encoding !== void 0 && (e.supported_encoding = G.toJSON(u.supported_encoding)), u.selected_sid !== void 0 && (e.selected_sid = Math.round(u.selected_sid)), u.change_display_resolution !== void 0 && (e.change_display_resolution = Ou.toJSON(u.change_display_resolution)), u.message_query !== void 0 && (e.message_query = H0.toJSON(u.message_query)), u.follow_current_display !== void 0 && (e.follow_current_display = Math.round(u.follow_current_display)), e }, create(u) { return f.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c, C, D, B, F, y, S, g; const e = Ai(); return e.chat_message = u.chat_message !== void 0 && u.chat_message !== null ? vu.fromPartial(u.chat_message) : void 0, e.switch_display = u.switch_display !== void 0 && u.switch_display !== null ? Mu.fromPartial(u.switch_display) : void 0, e.permission_info = u.permission_info !== void 0 && u.permission_info !== null ? R0.fromPartial(u.permission_info) : void 0, e.option = u.option !== void 0 && u.option !== null ? z.fromPartial(u.option) : void 0, e.audio_format = u.audio_format !== void 0 && u.audio_format !== null ? j0.fromPartial(u.audio_format) : void 0, e.close_reason = (i = u.close_reason) != null ? i : void 0, e.refresh_video = (o = u.refresh_video) != null ? o : void 0, e.video_received = (a = u.video_received) != null ? a : void 0, e.back_notification = u.back_notification !== void 0 && u.back_notification !== null ? M0.fromPartial(u.back_notification) : void 0, e.restart_remote_device = (t = u.restart_remote_device) != null ? t : void 0, e.uac = (s = u.uac) != null ? s : void 0, e.foreground_window_elevated = (l = u.foreground_window_elevated) != null ? l : void 0, e.stop_service = (E = u.stop_service) != null ? E : void 0, e.elevation_request = u.elevation_request !== void 0 && u.elevation_request !== null ? Du.fromPartial(u.elevation_request) : void 0, e.elevation_response = (c = u.elevation_response) != null ? c : void 0, e.portable_service_running = (C = u.portable_service_running) != null ? C : void 0, e.switch_sides_request = u.switch_sides_request !== void 0 && u.switch_sides_request !== null ? U0.fromPartial(u.switch_sides_request) : void 0, e.switch_back = u.switch_back !== void 0 && u.switch_back !== null ? W0.fromPartial(u.switch_back) : void 0, e.change_resolution = u.change_resolution !== void 0 && u.change_resolution !== null ? v.fromPartial(u.change_resolution) : void 0, e.plugin_request = u.plugin_request !== void 0 && u.plugin_request !== null ? V0.fromPartial(u.plugin_request) : void 0, e.plugin_failure = u.plugin_failure !== void 0 && u.plugin_failure !== null ? q0.fromPartial(u.plugin_failure) : void 0, e.full_speed_fps = (D = u.full_speed_fps) != null ? D : void 0, e.auto_adjust_fps = (B = u.auto_adjust_fps) != null ? B : void 0, e.client_record_status = (F = u.client_record_status) != null ? F : void 0, e.capture_displays = u.capture_displays !== void 0 && u.capture_displays !== null ? Uu.fromPartial(u.capture_displays) : void 0, e.refresh_video_display = (y = u.refresh_video_display) != null ? y : void 0, e.toggle_virtual_display = u.toggle_virtual_display !== void 0 && u.toggle_virtual_display !== null ? Lu.fromPartial(u.toggle_virtual_display) : void 0, e.toggle_privacy_mode = u.toggle_privacy_mode !== void 0 && u.toggle_privacy_mode !== null ? Wu.fromPartial(u.toggle_privacy_mode) : void 0, e.supported_encoding = u.supported_encoding !== void 0 && u.supported_encoding !== null ? G.fromPartial(u.supported_encoding) : void 0, e.selected_sid = (S = u.selected_sid) != null ? S : void 0, e.change_display_resolution = u.change_display_resolution !== void 0 && u.change_display_resolution !== null ? Ou.fromPartial(u.change_display_resolution) : void 0, e.message_query = u.message_query !== void 0 && u.message_query !== null ? H0.fromPartial(u.message_query) : void 0, e.follow_current_display = (g = u.follow_current_display) != null ? g : void 0, e } }; function Fi() { return {req_timestamp: 0, is_connect: !1} } const J0 = { encode(u, e = r.Writer.create()) { return u.req_timestamp !== 0 && e.uint32(8).int64(u.req_timestamp), u.is_connect !== !1 && e.uint32(16).bool(u.is_connect), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Fi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.req_timestamp = V(i.int64()); continue; case 2: if (t !== 16) break; a.is_connect = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { req_timestamp: n(u.req_timestamp) ? globalThis.Number(u.req_timestamp) : 0, is_connect: n(u.is_connect) ? globalThis.Boolean(u.is_connect) : !1 } }, toJSON(u) { const e = {}; return u.req_timestamp !== 0 && (e.req_timestamp = Math.round(u.req_timestamp)), u.is_connect !== !1 && (e.is_connect = u.is_connect), e }, create(u) { return J0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Fi(); return e.req_timestamp = (i = u.req_timestamp) != null ? i : 0, e.is_connect = (o = u.is_connect) != null ? o : !1, e } }; function _i() { return {accepted: !1, req_timestamp: 0, ack_timestamp: 0} } const G0 = { encode(u, e = r.Writer.create()) { return u.accepted !== !1 && e.uint32(8).bool(u.accepted), u.req_timestamp !== 0 && e.uint32(16).int64(u.req_timestamp), u.ack_timestamp !== 0 && e.uint32(24).int64(u.ack_timestamp), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = _i(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.accepted = i.bool(); continue; case 2: if (t !== 16) break; a.req_timestamp = V(i.int64()); continue; case 3: if (t !== 24) break; a.ack_timestamp = V(i.int64()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { accepted: n(u.accepted) ? globalThis.Boolean(u.accepted) : !1, req_timestamp: n(u.req_timestamp) ? globalThis.Number(u.req_timestamp) : 0, ack_timestamp: n(u.ack_timestamp) ? globalThis.Number(u.ack_timestamp) : 0 } }, toJSON(u) { const e = {}; return u.accepted !== !1 && (e.accepted = u.accepted), u.req_timestamp !== 0 && (e.req_timestamp = Math.round(u.req_timestamp)), u.ack_timestamp !== 0 && (e.ack_timestamp = Math.round(u.ack_timestamp)), e }, create(u) { return G0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = _i(); return e.accepted = (i = u.accepted) != null ? i : !1, e.req_timestamp = (o = u.req_timestamp) != null ? o : 0, e.ack_timestamp = (a = u.ack_timestamp) != null ? a : 0, e } }; function vi() { return { signed_id: void 0, public_key: void 0, test_delay: void 0, video_frame: void 0, login_request: void 0, login_response: void 0, hash: void 0, mouse_event: void 0, audio_frame: void 0, cursor_data: void 0, cursor_position: void 0, cursor_id: void 0, key_event: void 0, clipboard: void 0, file_action: void 0, file_response: void 0, misc: void 0, cliprdr: void 0, message_box: void 0, switch_sides_response: void 0, voice_call_request: void 0, voice_call_response: void 0, peer_info: void 0, pointer_device_event: void 0, auth_2fa: void 0, multi_clipboards: void 0 } } const iu = { encode(u, e = r.Writer.create()) { return u.signed_id !== void 0 && T0.encode(u.signed_id, e.uint32(26).fork()).ldelim(), u.public_key !== void 0 && K.encode(u.public_key, e.uint32(34).fork()).ldelim(), u.test_delay !== void 0 && I0.encode(u.test_delay, e.uint32(42).fork()).ldelim(), u.video_frame !== void 0 && r0.encode(u.video_frame, e.uint32(50).fork()).ldelim(), u.login_request !== void 0 && H.encode(u.login_request, e.uint32(58).fork()).ldelim(), u.login_response !== void 0 && C0.encode(u.login_response, e.uint32(66).fork()).ldelim(), u.hash !== void 0 && k0.encode(u.hash, e.uint32(74).fork()).ldelim(), u.mouse_event !== void 0 && ku.encode(u.mouse_event, e.uint32(82).fork()).ldelim(), u.audio_frame !== void 0 && N0.encode(u.audio_frame, e.uint32(90).fork()).ldelim(), u.cursor_data !== void 0 && _0.encode(u.cursor_data, e.uint32(98).fork()).ldelim(), u.cursor_position !== void 0 && v0.encode(u.cursor_position, e.uint32(106).fork()).ldelim(), u.cursor_id !== void 0 && e.uint32(112).uint64(u.cursor_id), u.key_event !== void 0 && w.encode(u.key_event, e.uint32(122).fork()).ldelim(), u.clipboard !== void 0 && L.encode(u.clipboard, e.uint32(130).fork()).ldelim(), u.file_action !== void 0 && P.encode(u.file_action, e.uint32(138).fork()).ldelim(), u.file_response !== void 0 && nu.encode(u.file_response, e.uint32(146).fork()).ldelim(), u.misc !== void 0 && f.encode(u.misc, e.uint32(154).fork()).ldelim(), u.cliprdr !== void 0 && P0.encode(u.cliprdr, e.uint32(162).fork()).ldelim(), u.message_box !== void 0 && O0.encode(u.message_box, e.uint32(170).fork()).ldelim(), u.switch_sides_response !== void 0 && L0.encode(u.switch_sides_response, e.uint32(178).fork()).ldelim(), u.voice_call_request !== void 0 && J0.encode(u.voice_call_request, e.uint32(186).fork()).ldelim(), u.voice_call_response !== void 0 && G0.encode(u.voice_call_response, e.uint32(194).fork()).ldelim(), u.peer_info !== void 0 && Y.encode(u.peer_info, e.uint32(202).fork()).ldelim(), u.pointer_device_event !== void 0 && F0.encode(u.pointer_device_event, e.uint32(210).fork()).ldelim(), u.auth_2fa !== void 0 && _u.encode(u.auth_2fa, e.uint32(218).fork()).ldelim(), u.multi_clipboards !== void 0 && gu.encode(u.multi_clipboards, e.uint32(226).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = vi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 3: if (t !== 26) break; a.signed_id = T0.decode(i, i.uint32()); continue; case 4: if (t !== 34) break; a.public_key = K.decode(i, i.uint32()); continue; case 5: if (t !== 42) break; a.test_delay = I0.decode(i, i.uint32()); continue; case 6: if (t !== 50) break; a.video_frame = r0.decode(i, i.uint32()); continue; case 7: if (t !== 58) break; a.login_request = H.decode(i, i.uint32()); continue; case 8: if (t !== 66) break; a.login_response = C0.decode(i, i.uint32()); continue; case 9: if (t !== 74) break; a.hash = k0.decode(i, i.uint32()); continue; case 10: if (t !== 82) break; a.mouse_event = ku.decode(i, i.uint32()); continue; case 11: if (t !== 90) break; a.audio_frame = N0.decode(i, i.uint32()); continue; case 12: if (t !== 98) break; a.cursor_data = _0.decode(i, i.uint32()); continue; case 13: if (t !== 106) break; a.cursor_position = v0.decode(i, i.uint32()); continue; case 14: if (t !== 112) break; a.cursor_id = V(i.uint64()); continue; case 15: if (t !== 122) break; a.key_event = w.decode(i, i.uint32()); continue; case 16: if (t !== 130) break; a.clipboard = L.decode(i, i.uint32()); continue; case 17: if (t !== 138) break; a.file_action = P.decode(i, i.uint32()); continue; case 18: if (t !== 146) break; a.file_response = nu.decode(i, i.uint32()); continue; case 19: if (t !== 154) break; a.misc = f.decode(i, i.uint32()); continue; case 20: if (t !== 162) break; a.cliprdr = P0.decode(i, i.uint32()); continue; case 21: if (t !== 170) break; a.message_box = O0.decode(i, i.uint32()); continue; case 22: if (t !== 178) break; a.switch_sides_response = L0.decode(i, i.uint32()); continue; case 23: if (t !== 186) break; a.voice_call_request = J0.decode(i, i.uint32()); continue; case 24: if (t !== 194) break; a.voice_call_response = G0.decode(i, i.uint32()); continue; case 25: if (t !== 202) break; a.peer_info = Y.decode(i, i.uint32()); continue; case 26: if (t !== 210) break; a.pointer_device_event = F0.decode(i, i.uint32()); continue; case 27: if (t !== 218) break; a.auth_2fa = _u.decode(i, i.uint32()); continue; case 28: if (t !== 226) break; a.multi_clipboards = gu.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { signed_id: n(u.signed_id) ? T0.fromJSON(u.signed_id) : void 0, public_key: n(u.public_key) ? K.fromJSON(u.public_key) : void 0, test_delay: n(u.test_delay) ? I0.fromJSON(u.test_delay) : void 0, video_frame: n(u.video_frame) ? r0.fromJSON(u.video_frame) : void 0, login_request: n(u.login_request) ? H.fromJSON(u.login_request) : void 0, login_response: n(u.login_response) ? C0.fromJSON(u.login_response) : void 0, hash: n(u.hash) ? k0.fromJSON(u.hash) : void 0, mouse_event: n(u.mouse_event) ? ku.fromJSON(u.mouse_event) : void 0, audio_frame: n(u.audio_frame) ? N0.fromJSON(u.audio_frame) : void 0, cursor_data: n(u.cursor_data) ? _0.fromJSON(u.cursor_data) : void 0, cursor_position: n(u.cursor_position) ? v0.fromJSON(u.cursor_position) : void 0, cursor_id: n(u.cursor_id) ? globalThis.Number(u.cursor_id) : void 0, key_event: n(u.key_event) ? w.fromJSON(u.key_event) : void 0, clipboard: n(u.clipboard) ? L.fromJSON(u.clipboard) : void 0, file_action: n(u.file_action) ? P.fromJSON(u.file_action) : void 0, file_response: n(u.file_response) ? nu.fromJSON(u.file_response) : void 0, misc: n(u.misc) ? f.fromJSON(u.misc) : void 0, cliprdr: n(u.cliprdr) ? P0.fromJSON(u.cliprdr) : void 0, message_box: n(u.message_box) ? O0.fromJSON(u.message_box) : void 0, switch_sides_response: n(u.switch_sides_response) ? L0.fromJSON(u.switch_sides_response) : void 0, voice_call_request: n(u.voice_call_request) ? J0.fromJSON(u.voice_call_request) : void 0, voice_call_response: n(u.voice_call_response) ? G0.fromJSON(u.voice_call_response) : void 0, peer_info: n(u.peer_info) ? Y.fromJSON(u.peer_info) : void 0, pointer_device_event: n(u.pointer_device_event) ? F0.fromJSON(u.pointer_device_event) : void 0, auth_2fa: n(u.auth_2fa) ? _u.fromJSON(u.auth_2fa) : void 0, multi_clipboards: n(u.multi_clipboards) ? gu.fromJSON(u.multi_clipboards) : void 0 } }, toJSON(u) { const e = {}; return u.signed_id !== void 0 && (e.signed_id = T0.toJSON(u.signed_id)), u.public_key !== void 0 && (e.public_key = K.toJSON(u.public_key)), u.test_delay !== void 0 && (e.test_delay = I0.toJSON(u.test_delay)), u.video_frame !== void 0 && (e.video_frame = r0.toJSON(u.video_frame)), u.login_request !== void 0 && (e.login_request = H.toJSON(u.login_request)), u.login_response !== void 0 && (e.login_response = C0.toJSON(u.login_response)), u.hash !== void 0 && (e.hash = k0.toJSON(u.hash)), u.mouse_event !== void 0 && (e.mouse_event = ku.toJSON(u.mouse_event)), u.audio_frame !== void 0 && (e.audio_frame = N0.toJSON(u.audio_frame)), u.cursor_data !== void 0 && (e.cursor_data = _0.toJSON(u.cursor_data)), u.cursor_position !== void 0 && (e.cursor_position = v0.toJSON(u.cursor_position)), u.cursor_id !== void 0 && (e.cursor_id = Math.round(u.cursor_id)), u.key_event !== void 0 && (e.key_event = w.toJSON(u.key_event)), u.clipboard !== void 0 && (e.clipboard = L.toJSON(u.clipboard)), u.file_action !== void 0 && (e.file_action = P.toJSON(u.file_action)), u.file_response !== void 0 && (e.file_response = nu.toJSON(u.file_response)), u.misc !== void 0 && (e.misc = f.toJSON(u.misc)), u.cliprdr !== void 0 && (e.cliprdr = P0.toJSON(u.cliprdr)), u.message_box !== void 0 && (e.message_box = O0.toJSON(u.message_box)), u.switch_sides_response !== void 0 && (e.switch_sides_response = L0.toJSON(u.switch_sides_response)), u.voice_call_request !== void 0 && (e.voice_call_request = J0.toJSON(u.voice_call_request)), u.voice_call_response !== void 0 && (e.voice_call_response = G0.toJSON(u.voice_call_response)), u.peer_info !== void 0 && (e.peer_info = Y.toJSON(u.peer_info)), u.pointer_device_event !== void 0 && (e.pointer_device_event = F0.toJSON(u.pointer_device_event)), u.auth_2fa !== void 0 && (e.auth_2fa = _u.toJSON(u.auth_2fa)), u.multi_clipboards !== void 0 && (e.multi_clipboards = gu.toJSON(u.multi_clipboards)), e }, create(u) { return iu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = vi(); return e.signed_id = u.signed_id !== void 0 && u.signed_id !== null ? T0.fromPartial(u.signed_id) : void 0, e.public_key = u.public_key !== void 0 && u.public_key !== null ? K.fromPartial(u.public_key) : void 0, e.test_delay = u.test_delay !== void 0 && u.test_delay !== null ? I0.fromPartial(u.test_delay) : void 0, e.video_frame = u.video_frame !== void 0 && u.video_frame !== null ? r0.fromPartial(u.video_frame) : void 0, e.login_request = u.login_request !== void 0 && u.login_request !== null ? H.fromPartial(u.login_request) : void 0, e.login_response = u.login_response !== void 0 && u.login_response !== null ? C0.fromPartial(u.login_response) : void 0, e.hash = u.hash !== void 0 && u.hash !== null ? k0.fromPartial(u.hash) : void 0, e.mouse_event = u.mouse_event !== void 0 && u.mouse_event !== null ? ku.fromPartial(u.mouse_event) : void 0, e.audio_frame = u.audio_frame !== void 0 && u.audio_frame !== null ? N0.fromPartial(u.audio_frame) : void 0, e.cursor_data = u.cursor_data !== void 0 && u.cursor_data !== null ? _0.fromPartial(u.cursor_data) : void 0, e.cursor_position = u.cursor_position !== void 0 && u.cursor_position !== null ? v0.fromPartial(u.cursor_position) : void 0, e.cursor_id = (i = u.cursor_id) != null ? i : void 0, e.key_event = u.key_event !== void 0 && u.key_event !== null ? w.fromPartial(u.key_event) : void 0, e.clipboard = u.clipboard !== void 0 && u.clipboard !== null ? L.fromPartial(u.clipboard) : void 0, e.file_action = u.file_action !== void 0 && u.file_action !== null ? P.fromPartial(u.file_action) : void 0, e.file_response = u.file_response !== void 0 && u.file_response !== null ? nu.fromPartial(u.file_response) : void 0, e.misc = u.misc !== void 0 && u.misc !== null ? f.fromPartial(u.misc) : void 0, e.cliprdr = u.cliprdr !== void 0 && u.cliprdr !== null ? P0.fromPartial(u.cliprdr) : void 0, e.message_box = u.message_box !== void 0 && u.message_box !== null ? O0.fromPartial(u.message_box) : void 0, e.switch_sides_response = u.switch_sides_response !== void 0 && u.switch_sides_response !== null ? L0.fromPartial(u.switch_sides_response) : void 0, e.voice_call_request = u.voice_call_request !== void 0 && u.voice_call_request !== null ? J0.fromPartial(u.voice_call_request) : void 0, e.voice_call_response = u.voice_call_response !== void 0 && u.voice_call_response !== null ? G0.fromPartial(u.voice_call_response) : void 0, e.peer_info = u.peer_info !== void 0 && u.peer_info !== null ? Y.fromPartial(u.peer_info) : void 0, e.pointer_device_event = u.pointer_device_event !== void 0 && u.pointer_device_event !== null ? F0.fromPartial(u.pointer_device_event) : void 0, e.auth_2fa = u.auth_2fa !== void 0 && u.auth_2fa !== null ? _u.fromPartial(u.auth_2fa) : void 0, e.multi_clipboards = u.multi_clipboards !== void 0 && u.multi_clipboards !== null ? gu.fromPartial(u.multi_clipboards) : void 0, e } }; function R(u) { if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(u, "base64")); { const e = globalThis.atob(u), i = new Uint8Array(e.length); for (let o = 0; o < e.length; ++o) i[o] = e.charCodeAt(o); return i } } function I(u) { if (globalThis.Buffer) return globalThis.Buffer.from(u).toString("base64"); { const e = []; return u.forEach(i => { e.push(globalThis.String.fromCharCode(i)) }), globalThis.btoa(e.join("")) } } function V(u) { if (u.gt(globalThis.Number.MAX_SAFE_INTEGER)) throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); if (u.lt(globalThis.Number.MIN_SAFE_INTEGER)) throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); return u.toNumber() } r.util.Long !== Ne && (r.util.Long = Ne, r.configure()); function n(u) { return u != null } var ne = (u => (u[u.DEFAULT_CONN = 0] = "DEFAULT_CONN", u[u.FILE_TRANSFER = 1] = "FILE_TRANSFER", u[u.PORT_FORWARD = 2] = "PORT_FORWARD", u[u.RDP = 3] = "RDP", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(ne || {}); function ct(u) { switch (u) { case 0: case"DEFAULT_CONN": return 0; case 1: case"FILE_TRANSFER": return 1; case 2: case"PORT_FORWARD": return 2; case 3: case"RDP": return 3; case-1: case"UNRECOGNIZED": default: return -1 } } function Ct(u) { switch (u) { case 0: return "DEFAULT_CONN"; case 1: return "FILE_TRANSFER"; case 2: return "PORT_FORWARD"; case 3: return "RDP"; case-1: default: return "UNRECOGNIZED" } } var pt = (u => (u[u.UNKNOWN_NAT = 0] = "UNKNOWN_NAT", u[u.ASYMMETRIC = 1] = "ASYMMETRIC", u[u.SYMMETRIC = 2] = "SYMMETRIC", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(pt || {}); function Q4(u) { switch (u) { case 0: case"UNKNOWN_NAT": return 0; case 1: case"ASYMMETRIC": return 1; case 2: case"SYMMETRIC": return 2; case-1: case"UNRECOGNIZED": default: return -1 } } function X4(u) { switch (u) { case 0: return "UNKNOWN_NAT"; case 1: return "ASYMMETRIC"; case 2: return "SYMMETRIC"; case-1: default: return "UNRECOGNIZED" } } function ya(u) { switch (u) { case 0: case"OK": return 0; case 2: case"UUID_MISMATCH": return 2; case 3: case"ID_EXISTS": return 3; case 4: case"TOO_FREQUENT": return 4; case 5: case"INVALID_ID_FORMAT": return 5; case 6: case"NOT_SUPPORT": return 6; case 7: case"SERVER_ERROR": return 7; case-1: case"UNRECOGNIZED": default: return -1 } } function ba(u) { switch (u) { case 0: return "OK"; case 2: return "UUID_MISMATCH"; case 3: return "ID_EXISTS"; case 4: return "TOO_FREQUENT"; case 5: return "INVALID_ID_FORMAT"; case 6: return "NOT_SUPPORT"; case 7: return "SERVER_ERROR"; case-1: default: return "UNRECOGNIZED" } } var Z0 = (u => (u[u.ID_NOT_EXIST = 0] = "ID_NOT_EXIST", u[u.OFFLINE = 2] = "OFFLINE", u[u.LICENSE_MISMATCH = 3] = "LICENSE_MISMATCH", u[u.LICENSE_OVERUSE = 4] = "LICENSE_OVERUSE", u[u.UNRECOGNIZED = -1] = "UNRECOGNIZED", u))(Z0 || {}); function wa(u) { switch (u) { case 0: case"ID_NOT_EXIST": return 0; case 2: case"OFFLINE": return 2; case 3: case"LICENSE_MISMATCH": return 3; case 4: case"LICENSE_OVERUSE": return 4; case-1: case"UNRECOGNIZED": default: return -1 } } function Sa(u) { switch (u) { case 0: return "ID_NOT_EXIST"; case 2: return "OFFLINE"; case 3: return "LICENSE_MISMATCH"; case 4: return "LICENSE_OVERUSE"; case-1: default: return "UNRECOGNIZED" } } function ki() { return {id: "", serial: 0} } const Q0 = { encode(u, e = r.Writer.create()) { return u.id !== "" && e.uint32(10).string(u.id), u.serial !== 0 && e.uint32(16).int32(u.serial), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ki(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 16) break; a.serial = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {id: p(u.id) ? globalThis.String(u.id) : "", serial: p(u.serial) ? globalThis.Number(u.serial) : 0} }, toJSON(u) { const e = {}; return u.id !== "" && (e.id = u.id), u.serial !== 0 && (e.serial = Math.round(u.serial)), e }, create(u) { return Q0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = ki(); return e.id = (i = u.id) != null ? i : "", e.serial = (o = u.serial) != null ? o : 0, e } }; function gi() { return {request_pk: !1} } const X0 = { encode(u, e = r.Writer.create()) { return u.request_pk !== !1 && e.uint32(16).bool(u.request_pk), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = gi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 2: if (t !== 16) break; a.request_pk = i.bool(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {request_pk: p(u.request_pk) ? globalThis.Boolean(u.request_pk) : !1} }, toJSON(u) { const e = {}; return u.request_pk !== !1 && (e.request_pk = u.request_pk), e }, create(u) { return X0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = gi(); return e.request_pk = (i = u.request_pk) != null ? i : !1, e } }; function hi() { return {id: "", nat_type: 0, licence_key: "", conn_type: 0, token: "", version: ""} } const Ku = { encode(u, e = r.Writer.create()) { return u.id !== "" && e.uint32(10).string(u.id), u.nat_type !== 0 && e.uint32(16).int32(u.nat_type), u.licence_key !== "" && e.uint32(26).string(u.licence_key), u.conn_type !== 0 && e.uint32(32).int32(u.conn_type), u.token !== "" && e.uint32(42).string(u.token), u.version !== "" && e.uint32(50).string(u.version), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = hi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 16) break; a.nat_type = i.int32(); continue; case 3: if (t !== 26) break; a.licence_key = i.string(); continue; case 4: if (t !== 32) break; a.conn_type = i.int32(); continue; case 5: if (t !== 42) break; a.token = i.string(); continue; case 6: if (t !== 50) break; a.version = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: p(u.id) ? globalThis.String(u.id) : "", nat_type: p(u.nat_type) ? Q4(u.nat_type) : 0, licence_key: p(u.licence_key) ? globalThis.String(u.licence_key) : "", conn_type: p(u.conn_type) ? ct(u.conn_type) : 0, token: p(u.token) ? globalThis.String(u.token) : "", version: p(u.version) ? globalThis.String(u.version) : "" } }, toJSON(u) { const e = {}; return u.id !== "" && (e.id = u.id), u.nat_type !== 0 && (e.nat_type = X4(u.nat_type)), u.licence_key !== "" && (e.licence_key = u.licence_key), u.conn_type !== 0 && (e.conn_type = Ct(u.conn_type)), u.token !== "" && (e.token = u.token), u.version !== "" && (e.version = u.version), e }, create(u) { return Ku.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l; const e = hi(); return e.id = (i = u.id) != null ? i : "", e.nat_type = (o = u.nat_type) != null ? o : 0, e.licence_key = (a = u.licence_key) != null ? a : "", e.conn_type = (t = u.conn_type) != null ? t : 0, e.token = (s = u.token) != null ? s : "", e.version = (l = u.version) != null ? l : "", e } }; function fi() { return {socket_addr: new Uint8Array(0), relay_server: "", nat_type: 0} } const Y0 = { encode(u, e = r.Writer.create()) { return u.socket_addr.length !== 0 && e.uint32(10).bytes(u.socket_addr), u.relay_server !== "" && e.uint32(18).string(u.relay_server), u.nat_type !== 0 && e.uint32(24).int32(u.nat_type), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = fi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.socket_addr = i.bytes(); continue; case 2: if (t !== 18) break; a.relay_server = i.string(); continue; case 3: if (t !== 24) break; a.nat_type = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { socket_addr: p(u.socket_addr) ? O(u.socket_addr) : new Uint8Array(0), relay_server: p(u.relay_server) ? globalThis.String(u.relay_server) : "", nat_type: p(u.nat_type) ? Q4(u.nat_type) : 0 } }, toJSON(u) { const e = {}; return u.socket_addr.length !== 0 && (e.socket_addr = M(u.socket_addr)), u.relay_server !== "" && (e.relay_server = u.relay_server), u.nat_type !== 0 && (e.nat_type = X4(u.nat_type)), e }, create(u) { return Y0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a; const e = fi(); return e.socket_addr = (i = u.socket_addr) != null ? i : new Uint8Array(0), e.relay_server = (o = u.relay_server) != null ? o : "", e.nat_type = (a = u.nat_type) != null ? a : 0, e } }; function xi() { return {serial: 0} } const $0 = { encode(u, e = r.Writer.create()) { return u.serial !== 0 && e.uint32(8).int32(u.serial), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = xi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.serial = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {serial: p(u.serial) ? globalThis.Number(u.serial) : 0} }, toJSON(u) { const e = {}; return u.serial !== 0 && (e.serial = Math.round(u.serial)), e }, create(u) { return $0.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = xi(); return e.serial = (i = u.serial) != null ? i : 0, e } }; function yi() { return {port: 0, cu: void 0} } const u4 = { encode(u, e = r.Writer.create()) { return u.port !== 0 && e.uint32(8).int32(u.port), u.cu !== void 0 && eu.encode(u.cu, e.uint32(18).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = yi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.port = i.int32(); continue; case 2: if (t !== 18) break; a.cu = eu.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {port: p(u.port) ? globalThis.Number(u.port) : 0, cu: p(u.cu) ? eu.fromJSON(u.cu) : void 0} }, toJSON(u) { const e = {}; return u.port !== 0 && (e.port = Math.round(u.port)), u.cu !== void 0 && (e.cu = eu.toJSON(u.cu)), e }, create(u) { return u4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = yi(); return e.port = (i = u.port) != null ? i : 0, e.cu = u.cu !== void 0 && u.cu !== null ? eu.fromPartial(u.cu) : void 0, e } }; function bi() { return {socket_addr: new Uint8Array(0), id: "", relay_server: "", nat_type: 0, version: ""} } const e4 = { encode(u, e = r.Writer.create()) { return u.socket_addr.length !== 0 && e.uint32(10).bytes(u.socket_addr), u.id !== "" && e.uint32(18).string(u.id), u.relay_server !== "" && e.uint32(26).string(u.relay_server), u.nat_type !== 0 && e.uint32(32).int32(u.nat_type), u.version !== "" && e.uint32(42).string(u.version), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = bi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.socket_addr = i.bytes(); continue; case 2: if (t !== 18) break; a.id = i.string(); continue; case 3: if (t !== 26) break; a.relay_server = i.string(); continue; case 4: if (t !== 32) break; a.nat_type = i.int32(); continue; case 5: if (t !== 42) break; a.version = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { socket_addr: p(u.socket_addr) ? O(u.socket_addr) : new Uint8Array(0), id: p(u.id) ? globalThis.String(u.id) : "", relay_server: p(u.relay_server) ? globalThis.String(u.relay_server) : "", nat_type: p(u.nat_type) ? Q4(u.nat_type) : 0, version: p(u.version) ? globalThis.String(u.version) : "" } }, toJSON(u) { const e = {}; return u.socket_addr.length !== 0 && (e.socket_addr = M(u.socket_addr)), u.id !== "" && (e.id = u.id), u.relay_server !== "" && (e.relay_server = u.relay_server), u.nat_type !== 0 && (e.nat_type = X4(u.nat_type)), u.version !== "" && (e.version = u.version), e }, create(u) { return e4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s; const e = bi(); return e.socket_addr = (i = u.socket_addr) != null ? i : new Uint8Array(0), e.id = (o = u.id) != null ? o : "", e.relay_server = (a = u.relay_server) != null ? a : "", e.nat_type = (t = u.nat_type) != null ? t : 0, e.version = (s = u.version) != null ? s : "", e } }; function wi() { return {id: "", uuid: new Uint8Array(0), pk: new Uint8Array(0), old_id: ""} } const i4 = { encode(u, e = r.Writer.create()) { return u.id !== "" && e.uint32(10).string(u.id), u.uuid.length !== 0 && e.uint32(18).bytes(u.uuid), u.pk.length !== 0 && e.uint32(26).bytes(u.pk), u.old_id !== "" && e.uint32(34).string(u.old_id), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = wi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 18) break; a.uuid = i.bytes(); continue; case 3: if (t !== 26) break; a.pk = i.bytes(); continue; case 4: if (t !== 34) break; a.old_id = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: p(u.id) ? globalThis.String(u.id) : "", uuid: p(u.uuid) ? O(u.uuid) : new Uint8Array(0), pk: p(u.pk) ? O(u.pk) : new Uint8Array(0), old_id: p(u.old_id) ? globalThis.String(u.old_id) : "" } }, toJSON(u) { const e = {}; return u.id !== "" && (e.id = u.id), u.uuid.length !== 0 && (e.uuid = M(u.uuid)), u.pk.length !== 0 && (e.pk = M(u.pk)), u.old_id !== "" && (e.old_id = u.old_id), e }, create(u) { return i4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t; const e = wi(); return e.id = (i = u.id) != null ? i : "", e.uuid = (o = u.uuid) != null ? o : new Uint8Array(0), e.pk = (a = u.pk) != null ? a : new Uint8Array(0), e.old_id = (t = u.old_id) != null ? t : "", e } }; function Si() { return {result: 0, keep_alive: 0} } const t4 = { encode(u, e = r.Writer.create()) { return u.result !== 0 && e.uint32(8).int32(u.result), u.keep_alive !== 0 && e.uint32(16).int32(u.keep_alive), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Si(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.result = i.int32(); continue; case 2: if (t !== 16) break; a.keep_alive = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { result: p(u.result) ? ya(u.result) : 0, keep_alive: p(u.keep_alive) ? globalThis.Number(u.keep_alive) : 0 } }, toJSON(u) { const e = {}; return u.result !== 0 && (e.result = ba(u.result)), u.keep_alive !== 0 && (e.keep_alive = Math.round(u.keep_alive)), e }, create(u) { return t4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Si(); return e.result = (i = u.result) != null ? i : 0, e.keep_alive = (o = u.keep_alive) != null ? o : 0, e } }; function zi() { return { socket_addr: new Uint8Array(0), pk: new Uint8Array(0), failure: 0, relay_server: "", nat_type: void 0, is_local: void 0, other_failure: "", feedback: 0 } } const a4 = { encode(u, e = r.Writer.create()) { return u.socket_addr.length !== 0 && e.uint32(10).bytes(u.socket_addr), u.pk.length !== 0 && e.uint32(18).bytes(u.pk), u.failure !== 0 && e.uint32(24).int32(u.failure), u.relay_server !== "" && e.uint32(34).string(u.relay_server), u.nat_type !== void 0 && e.uint32(40).int32(u.nat_type), u.is_local !== void 0 && e.uint32(48).bool(u.is_local), u.other_failure !== "" && e.uint32(58).string(u.other_failure), u.feedback !== 0 && e.uint32(64).int32(u.feedback), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = zi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.socket_addr = i.bytes(); continue; case 2: if (t !== 18) break; a.pk = i.bytes(); continue; case 3: if (t !== 24) break; a.failure = i.int32(); continue; case 4: if (t !== 34) break; a.relay_server = i.string(); continue; case 5: if (t !== 40) break; a.nat_type = i.int32(); continue; case 6: if (t !== 48) break; a.is_local = i.bool(); continue; case 7: if (t !== 58) break; a.other_failure = i.string(); continue; case 8: if (t !== 64) break; a.feedback = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { socket_addr: p(u.socket_addr) ? O(u.socket_addr) : new Uint8Array(0), pk: p(u.pk) ? O(u.pk) : new Uint8Array(0), failure: p(u.failure) ? wa(u.failure) : 0, relay_server: p(u.relay_server) ? globalThis.String(u.relay_server) : "", nat_type: p(u.nat_type) ? Q4(u.nat_type) : void 0, is_local: p(u.is_local) ? globalThis.Boolean(u.is_local) : void 0, other_failure: p(u.other_failure) ? globalThis.String(u.other_failure) : "", feedback: p(u.feedback) ? globalThis.Number(u.feedback) : 0 } }, toJSON(u) { const e = {}; return u.socket_addr.length !== 0 && (e.socket_addr = M(u.socket_addr)), u.pk.length !== 0 && (e.pk = M(u.pk)), u.failure !== 0 && (e.failure = Sa(u.failure)), u.relay_server !== "" && (e.relay_server = u.relay_server), u.nat_type !== void 0 && (e.nat_type = X4(u.nat_type)), u.is_local !== void 0 && (e.is_local = u.is_local), u.other_failure !== "" && (e.other_failure = u.other_failure), u.feedback !== 0 && (e.feedback = Math.round(u.feedback)), e }, create(u) { return a4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c; const e = zi(); return e.socket_addr = (i = u.socket_addr) != null ? i : new Uint8Array(0), e.pk = (o = u.pk) != null ? o : new Uint8Array(0), e.failure = (a = u.failure) != null ? a : 0, e.relay_server = (t = u.relay_server) != null ? t : "", e.nat_type = (s = u.nat_type) != null ? s : void 0, e.is_local = (l = u.is_local) != null ? l : void 0, e.other_failure = (E = u.other_failure) != null ? E : "", e.feedback = (c = u.feedback) != null ? c : 0, e } }; function Pi() { return {serial: 0, rendezvous_servers: []} } const eu = { encode(u, e = r.Writer.create()) { u.serial !== 0 && e.uint32(8).int32(u.serial); for (const i of u.rendezvous_servers) e.uint32(18).string(i); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Pi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 8) break; a.serial = i.int32(); continue; case 2: if (t !== 18) break; a.rendezvous_servers.push(i.string()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { serial: p(u.serial) ? globalThis.Number(u.serial) : 0, rendezvous_servers: globalThis.Array.isArray(u == null ? void 0 : u.rendezvous_servers) ? u.rendezvous_servers.map(e => globalThis.String(e)) : [] } }, toJSON(u) { var i; const e = {}; return u.serial !== 0 && (e.serial = Math.round(u.serial)), (i = u.rendezvous_servers) != null && i.length && (e.rendezvous_servers = u.rendezvous_servers), e }, create(u) { return eu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Pi(); return e.serial = (i = u.serial) != null ? i : 0, e.rendezvous_servers = ((o = u.rendezvous_servers) == null ? void 0 : o.map(a => a)) || [], e } }; function Ri() { return { id: "", uuid: "", socket_addr: new Uint8Array(0), relay_server: "", secure: !1, licence_key: "", conn_type: 0, token: "" } } const Hu = { encode(u, e = r.Writer.create()) { return u.id !== "" && e.uint32(10).string(u.id), u.uuid !== "" && e.uint32(18).string(u.uuid), u.socket_addr.length !== 0 && e.uint32(26).bytes(u.socket_addr), u.relay_server !== "" && e.uint32(34).string(u.relay_server), u.secure !== !1 && e.uint32(40).bool(u.secure), u.licence_key !== "" && e.uint32(50).string(u.licence_key), u.conn_type !== 0 && e.uint32(56).int32(u.conn_type), u.token !== "" && e.uint32(66).string(u.token), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ri(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 18) break; a.uuid = i.string(); continue; case 3: if (t !== 26) break; a.socket_addr = i.bytes(); continue; case 4: if (t !== 34) break; a.relay_server = i.string(); continue; case 5: if (t !== 40) break; a.secure = i.bool(); continue; case 6: if (t !== 50) break; a.licence_key = i.string(); continue; case 7: if (t !== 56) break; a.conn_type = i.int32(); continue; case 8: if (t !== 66) break; a.token = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: p(u.id) ? globalThis.String(u.id) : "", uuid: p(u.uuid) ? globalThis.String(u.uuid) : "", socket_addr: p(u.socket_addr) ? O(u.socket_addr) : new Uint8Array(0), relay_server: p(u.relay_server) ? globalThis.String(u.relay_server) : "", secure: p(u.secure) ? globalThis.Boolean(u.secure) : !1, licence_key: p(u.licence_key) ? globalThis.String(u.licence_key) : "", conn_type: p(u.conn_type) ? ct(u.conn_type) : 0, token: p(u.token) ? globalThis.String(u.token) : "" } }, toJSON(u) { const e = {}; return u.id !== "" && (e.id = u.id), u.uuid !== "" && (e.uuid = u.uuid), u.socket_addr.length !== 0 && (e.socket_addr = M(u.socket_addr)), u.relay_server !== "" && (e.relay_server = u.relay_server), u.secure !== !1 && (e.secure = u.secure), u.licence_key !== "" && (e.licence_key = u.licence_key), u.conn_type !== 0 && (e.conn_type = Ct(u.conn_type)), u.token !== "" && (e.token = u.token), e }, create(u) { return Hu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c; const e = Ri(); return e.id = (i = u.id) != null ? i : "", e.uuid = (o = u.uuid) != null ? o : "", e.socket_addr = (a = u.socket_addr) != null ? a : new Uint8Array(0), e.relay_server = (t = u.relay_server) != null ? t : "", e.secure = (s = u.secure) != null ? s : !1, e.licence_key = (l = u.licence_key) != null ? l : "", e.conn_type = (E = u.conn_type) != null ? E : 0, e.token = (c = u.token) != null ? c : "", e } }; function Ii() { return { socket_addr: new Uint8Array(0), uuid: "", relay_server: "", id: void 0, pk: void 0, refuse_reason: "", version: "", feedback: 0 } } const o4 = { encode(u, e = r.Writer.create()) { return u.socket_addr.length !== 0 && e.uint32(10).bytes(u.socket_addr), u.uuid !== "" && e.uint32(18).string(u.uuid), u.relay_server !== "" && e.uint32(26).string(u.relay_server), u.id !== void 0 && e.uint32(34).string(u.id), u.pk !== void 0 && e.uint32(42).bytes(u.pk), u.refuse_reason !== "" && e.uint32(50).string(u.refuse_reason), u.version !== "" && e.uint32(58).string(u.version), u.feedback !== 0 && e.uint32(72).int32(u.feedback), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ii(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.socket_addr = i.bytes(); continue; case 2: if (t !== 18) break; a.uuid = i.string(); continue; case 3: if (t !== 26) break; a.relay_server = i.string(); continue; case 4: if (t !== 34) break; a.id = i.string(); continue; case 5: if (t !== 42) break; a.pk = i.bytes(); continue; case 6: if (t !== 50) break; a.refuse_reason = i.string(); continue; case 7: if (t !== 58) break; a.version = i.string(); continue; case 9: if (t !== 72) break; a.feedback = i.int32(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { socket_addr: p(u.socket_addr) ? O(u.socket_addr) : new Uint8Array(0), uuid: p(u.uuid) ? globalThis.String(u.uuid) : "", relay_server: p(u.relay_server) ? globalThis.String(u.relay_server) : "", id: p(u.id) ? globalThis.String(u.id) : void 0, pk: p(u.pk) ? O(u.pk) : void 0, refuse_reason: p(u.refuse_reason) ? globalThis.String(u.refuse_reason) : "", version: p(u.version) ? globalThis.String(u.version) : "", feedback: p(u.feedback) ? globalThis.Number(u.feedback) : 0 } }, toJSON(u) { const e = {}; return u.socket_addr.length !== 0 && (e.socket_addr = M(u.socket_addr)), u.uuid !== "" && (e.uuid = u.uuid), u.relay_server !== "" && (e.relay_server = u.relay_server), u.id !== void 0 && (e.id = u.id), u.pk !== void 0 && (e.pk = M(u.pk)), u.refuse_reason !== "" && (e.refuse_reason = u.refuse_reason), u.version !== "" && (e.version = u.version), u.feedback !== 0 && (e.feedback = Math.round(u.feedback)), e }, create(u) { return o4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E, c; const e = Ii(); return e.socket_addr = (i = u.socket_addr) != null ? i : new Uint8Array(0), e.uuid = (o = u.uuid) != null ? o : "", e.relay_server = (a = u.relay_server) != null ? a : "", e.id = (t = u.id) != null ? t : void 0, e.pk = (s = u.pk) != null ? s : void 0, e.refuse_reason = (l = u.refuse_reason) != null ? l : "", e.version = (E = u.version) != null ? E : "", e.feedback = (c = u.feedback) != null ? c : 0, e } }; function Ti() { return {url: ""} } const n4 = { encode(u, e = r.Writer.create()) { return u.url !== "" && e.uint32(10).string(u.url), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ti(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.url = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {url: p(u.url) ? globalThis.String(u.url) : ""} }, toJSON(u) { const e = {}; return u.url !== "" && (e.url = u.url), e }, create(u) { return n4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Ti(); return e.url = (i = u.url) != null ? i : "", e } }; function ji() { return {socket_addr: new Uint8Array(0), relay_server: ""} } const r4 = { encode(u, e = r.Writer.create()) { return u.socket_addr.length !== 0 && e.uint32(10).bytes(u.socket_addr), u.relay_server !== "" && e.uint32(18).string(u.relay_server), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = ji(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.socket_addr = i.bytes(); continue; case 2: if (t !== 18) break; a.relay_server = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { socket_addr: p(u.socket_addr) ? O(u.socket_addr) : new Uint8Array(0), relay_server: p(u.relay_server) ? globalThis.String(u.relay_server) : "" } }, toJSON(u) { const e = {}; return u.socket_addr.length !== 0 && (e.socket_addr = M(u.socket_addr)), u.relay_server !== "" && (e.relay_server = u.relay_server), e }, create(u) { return r4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = ji(); return e.socket_addr = (i = u.socket_addr) != null ? i : new Uint8Array(0), e.relay_server = (o = u.relay_server) != null ? o : "", e } }; function Ni() { return {socket_addr: new Uint8Array(0), local_addr: new Uint8Array(0), relay_server: "", id: "", version: ""} } const s4 = { encode(u, e = r.Writer.create()) { return u.socket_addr.length !== 0 && e.uint32(10).bytes(u.socket_addr), u.local_addr.length !== 0 && e.uint32(18).bytes(u.local_addr), u.relay_server !== "" && e.uint32(26).string(u.relay_server), u.id !== "" && e.uint32(34).string(u.id), u.version !== "" && e.uint32(42).string(u.version), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ni(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.socket_addr = i.bytes(); continue; case 2: if (t !== 18) break; a.local_addr = i.bytes(); continue; case 3: if (t !== 26) break; a.relay_server = i.string(); continue; case 4: if (t !== 34) break; a.id = i.string(); continue; case 5: if (t !== 42) break; a.version = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { socket_addr: p(u.socket_addr) ? O(u.socket_addr) : new Uint8Array(0), local_addr: p(u.local_addr) ? O(u.local_addr) : new Uint8Array(0), relay_server: p(u.relay_server) ? globalThis.String(u.relay_server) : "", id: p(u.id) ? globalThis.String(u.id) : "", version: p(u.version) ? globalThis.String(u.version) : "" } }, toJSON(u) { const e = {}; return u.socket_addr.length !== 0 && (e.socket_addr = M(u.socket_addr)), u.local_addr.length !== 0 && (e.local_addr = M(u.local_addr)), u.relay_server !== "" && (e.relay_server = u.relay_server), u.id !== "" && (e.id = u.id), u.version !== "" && (e.version = u.version), e }, create(u) { return s4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s; const e = Ni(); return e.socket_addr = (i = u.socket_addr) != null ? i : new Uint8Array(0), e.local_addr = (o = u.local_addr) != null ? o : new Uint8Array(0), e.relay_server = (a = u.relay_server) != null ? a : "", e.id = (t = u.id) != null ? t : "", e.version = (s = u.version) != null ? s : "", e } }; function Oi() { return {cmd: "", mac: "", id: "", username: "", hostname: "", platform: "", misc: ""} } const l4 = { encode(u, e = r.Writer.create()) { return u.cmd !== "" && e.uint32(10).string(u.cmd), u.mac !== "" && e.uint32(18).string(u.mac), u.id !== "" && e.uint32(26).string(u.id), u.username !== "" && e.uint32(34).string(u.username), u.hostname !== "" && e.uint32(42).string(u.hostname), u.platform !== "" && e.uint32(50).string(u.platform), u.misc !== "" && e.uint32(58).string(u.misc), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Oi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.cmd = i.string(); continue; case 2: if (t !== 18) break; a.mac = i.string(); continue; case 3: if (t !== 26) break; a.id = i.string(); continue; case 4: if (t !== 34) break; a.username = i.string(); continue; case 5: if (t !== 42) break; a.hostname = i.string(); continue; case 6: if (t !== 50) break; a.platform = i.string(); continue; case 7: if (t !== 58) break; a.misc = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { cmd: p(u.cmd) ? globalThis.String(u.cmd) : "", mac: p(u.mac) ? globalThis.String(u.mac) : "", id: p(u.id) ? globalThis.String(u.id) : "", username: p(u.username) ? globalThis.String(u.username) : "", hostname: p(u.hostname) ? globalThis.String(u.hostname) : "", platform: p(u.platform) ? globalThis.String(u.platform) : "", misc: p(u.misc) ? globalThis.String(u.misc) : "" } }, toJSON(u) { const e = {}; return u.cmd !== "" && (e.cmd = u.cmd), u.mac !== "" && (e.mac = u.mac), u.id !== "" && (e.id = u.id), u.username !== "" && (e.username = u.username), u.hostname !== "" && (e.hostname = u.hostname), u.platform !== "" && (e.platform = u.platform), u.misc !== "" && (e.misc = u.misc), e }, create(u) { return l4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o, a, t, s, l, E; const e = Oi(); return e.cmd = (i = u.cmd) != null ? i : "", e.mac = (o = u.mac) != null ? o : "", e.id = (a = u.id) != null ? a : "", e.username = (t = u.username) != null ? t : "", e.hostname = (s = u.hostname) != null ? s : "", e.platform = (l = u.platform) != null ? l : "", e.misc = (E = u.misc) != null ? E : "", e } }; function Mi() { return {id: "", peers: []} } const Ju = { encode(u, e = r.Writer.create()) { u.id !== "" && e.uint32(10).string(u.id); for (const i of u.peers) e.uint32(18).string(i); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Mi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.id = i.string(); continue; case 2: if (t !== 18) break; a.peers.push(i.string()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { id: p(u.id) ? globalThis.String(u.id) : "", peers: globalThis.Array.isArray(u == null ? void 0 : u.peers) ? u.peers.map(e => globalThis.String(e)) : [] } }, toJSON(u) { var i; const e = {}; return u.id !== "" && (e.id = u.id), (i = u.peers) != null && i.length && (e.peers = u.peers), e }, create(u) { return Ju.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i, o; const e = Mi(); return e.id = (i = u.id) != null ? i : "", e.peers = ((o = u.peers) == null ? void 0 : o.map(a => a)) || [], e } }; function Ui() { return {states: new Uint8Array(0)} } const E4 = { encode(u, e = r.Writer.create()) { return u.states.length !== 0 && e.uint32(10).bytes(u.states), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Ui(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.states = i.bytes(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {states: p(u.states) ? O(u.states) : new Uint8Array(0)} }, toJSON(u) { const e = {}; return u.states.length !== 0 && (e.states = M(u.states)), e }, create(u) { return E4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Ui(); return e.states = (i = u.states) != null ? i : new Uint8Array(0), e } }; function Li() { return {keys: []} } const d4 = { encode(u, e = r.Writer.create()) { for (const i of u.keys) e.uint32(10).bytes(i); return e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Li(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.keys.push(i.bytes()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {keys: globalThis.Array.isArray(u == null ? void 0 : u.keys) ? u.keys.map(e => O(e)) : []} }, toJSON(u) { var i; const e = {}; return (i = u.keys) != null && i.length && (e.keys = u.keys.map(o => M(o))), e }, create(u) { return d4.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Li(); return e.keys = ((i = u.keys) == null ? void 0 : i.map(o => o)) || [], e } }; function Wi() { return {token: ""} } const Gu = { encode(u, e = r.Writer.create()) { return u.token !== "" && e.uint32(10).string(u.token), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Wi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 1: if (t !== 10) break; a.token = i.string(); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return {token: p(u.token) ? globalThis.String(u.token) : ""} }, toJSON(u) { const e = {}; return u.token !== "" && (e.token = u.token), e }, create(u) { return Gu.fromPartial(u != null ? u : {}) }, fromPartial(u) { var i; const e = Wi(); return e.token = (i = u.token) != null ? i : "", e } }; function Vi() { return { register_peer: void 0, register_peer_response: void 0, punch_hole_request: void 0, punch_hole: void 0, punch_hole_sent: void 0, punch_hole_response: void 0, fetch_local_addr: void 0, local_addr: void 0, configure_update: void 0, register_pk: void 0, register_pk_response: void 0, software_update: void 0, request_relay: void 0, relay_response: void 0, test_nat_request: void 0, test_nat_response: void 0, peer_discovery: void 0, online_request: void 0, online_response: void 0, key_exchange: void 0, hc: void 0 } } const z4 = { encode(u, e = r.Writer.create()) { return u.register_peer !== void 0 && Q0.encode(u.register_peer, e.uint32(50).fork()).ldelim(), u.register_peer_response !== void 0 && X0.encode(u.register_peer_response, e.uint32(58).fork()).ldelim(), u.punch_hole_request !== void 0 && Ku.encode(u.punch_hole_request, e.uint32(66).fork()).ldelim(), u.punch_hole !== void 0 && Y0.encode(u.punch_hole, e.uint32(74).fork()).ldelim(), u.punch_hole_sent !== void 0 && e4.encode(u.punch_hole_sent, e.uint32(82).fork()).ldelim(), u.punch_hole_response !== void 0 && a4.encode(u.punch_hole_response, e.uint32(90).fork()).ldelim(), u.fetch_local_addr !== void 0 && r4.encode(u.fetch_local_addr, e.uint32(98).fork()).ldelim(), u.local_addr !== void 0 && s4.encode(u.local_addr, e.uint32(106).fork()).ldelim(), u.configure_update !== void 0 && eu.encode(u.configure_update, e.uint32(114).fork()).ldelim(), u.register_pk !== void 0 && i4.encode(u.register_pk, e.uint32(122).fork()).ldelim(), u.register_pk_response !== void 0 && t4.encode(u.register_pk_response, e.uint32(130).fork()).ldelim(), u.software_update !== void 0 && n4.encode(u.software_update, e.uint32(138).fork()).ldelim(), u.request_relay !== void 0 && Hu.encode(u.request_relay, e.uint32(146).fork()).ldelim(), u.relay_response !== void 0 && o4.encode(u.relay_response, e.uint32(154).fork()).ldelim(), u.test_nat_request !== void 0 && $0.encode(u.test_nat_request, e.uint32(162).fork()).ldelim(), u.test_nat_response !== void 0 && u4.encode(u.test_nat_response, e.uint32(170).fork()).ldelim(), u.peer_discovery !== void 0 && l4.encode(u.peer_discovery, e.uint32(178).fork()).ldelim(), u.online_request !== void 0 && Ju.encode(u.online_request, e.uint32(186).fork()).ldelim(), u.online_response !== void 0 && E4.encode(u.online_response, e.uint32(194).fork()).ldelim(), u.key_exchange !== void 0 && d4.encode(u.key_exchange, e.uint32(202).fork()).ldelim(), u.hc !== void 0 && Gu.encode(u.hc, e.uint32(210).fork()).ldelim(), e }, decode(u, e) { const i = u instanceof r.Reader ? u : r.Reader.create(u); let o = e === void 0 ? i.len : i.pos + e; const a = Vi(); for (; i.pos < o;) { const t = i.uint32(); switch (t >>> 3) { case 6: if (t !== 50) break; a.register_peer = Q0.decode(i, i.uint32()); continue; case 7: if (t !== 58) break; a.register_peer_response = X0.decode(i, i.uint32()); continue; case 8: if (t !== 66) break; a.punch_hole_request = Ku.decode(i, i.uint32()); continue; case 9: if (t !== 74) break; a.punch_hole = Y0.decode(i, i.uint32()); continue; case 10: if (t !== 82) break; a.punch_hole_sent = e4.decode(i, i.uint32()); continue; case 11: if (t !== 90) break; a.punch_hole_response = a4.decode(i, i.uint32()); continue; case 12: if (t !== 98) break; a.fetch_local_addr = r4.decode(i, i.uint32()); continue; case 13: if (t !== 106) break; a.local_addr = s4.decode(i, i.uint32()); continue; case 14: if (t !== 114) break; a.configure_update = eu.decode(i, i.uint32()); continue; case 15: if (t !== 122) break; a.register_pk = i4.decode(i, i.uint32()); continue; case 16: if (t !== 130) break; a.register_pk_response = t4.decode(i, i.uint32()); continue; case 17: if (t !== 138) break; a.software_update = n4.decode(i, i.uint32()); continue; case 18: if (t !== 146) break; a.request_relay = Hu.decode(i, i.uint32()); continue; case 19: if (t !== 154) break; a.relay_response = o4.decode(i, i.uint32()); continue; case 20: if (t !== 162) break; a.test_nat_request = $0.decode(i, i.uint32()); continue; case 21: if (t !== 170) break; a.test_nat_response = u4.decode(i, i.uint32()); continue; case 22: if (t !== 178) break; a.peer_discovery = l4.decode(i, i.uint32()); continue; case 23: if (t !== 186) break; a.online_request = Ju.decode(i, i.uint32()); continue; case 24: if (t !== 194) break; a.online_response = E4.decode(i, i.uint32()); continue; case 25: if (t !== 202) break; a.key_exchange = d4.decode(i, i.uint32()); continue; case 26: if (t !== 210) break; a.hc = Gu.decode(i, i.uint32()); continue } if ((t & 7) === 4 || t === 0) break; i.skipType(t & 7) } return a }, fromJSON(u) { return { register_peer: p(u.register_peer) ? Q0.fromJSON(u.register_peer) : void 0, register_peer_response: p(u.register_peer_response) ? X0.fromJSON(u.register_peer_response) : void 0, punch_hole_request: p(u.punch_hole_request) ? Ku.fromJSON(u.punch_hole_request) : void 0, punch_hole: p(u.punch_hole) ? Y0.fromJSON(u.punch_hole) : void 0, punch_hole_sent: p(u.punch_hole_sent) ? e4.fromJSON(u.punch_hole_sent) : void 0, punch_hole_response: p(u.punch_hole_response) ? a4.fromJSON(u.punch_hole_response) : void 0, fetch_local_addr: p(u.fetch_local_addr) ? r4.fromJSON(u.fetch_local_addr) : void 0, local_addr: p(u.local_addr) ? s4.fromJSON(u.local_addr) : void 0, configure_update: p(u.configure_update) ? eu.fromJSON(u.configure_update) : void 0, register_pk: p(u.register_pk) ? i4.fromJSON(u.register_pk) : void 0, register_pk_response: p(u.register_pk_response) ? t4.fromJSON(u.register_pk_response) : void 0, software_update: p(u.software_update) ? n4.fromJSON(u.software_update) : void 0, request_relay: p(u.request_relay) ? Hu.fromJSON(u.request_relay) : void 0, relay_response: p(u.relay_response) ? o4.fromJSON(u.relay_response) : void 0, test_nat_request: p(u.test_nat_request) ? $0.fromJSON(u.test_nat_request) : void 0, test_nat_response: p(u.test_nat_response) ? u4.fromJSON(u.test_nat_response) : void 0, peer_discovery: p(u.peer_discovery) ? l4.fromJSON(u.peer_discovery) : void 0, online_request: p(u.online_request) ? Ju.fromJSON(u.online_request) : void 0, online_response: p(u.online_response) ? E4.fromJSON(u.online_response) : void 0, key_exchange: p(u.key_exchange) ? d4.fromJSON(u.key_exchange) : void 0, hc: p(u.hc) ? Gu.fromJSON(u.hc) : void 0 } }, toJSON(u) { const e = {}; return u.register_peer !== void 0 && (e.register_peer = Q0.toJSON(u.register_peer)), u.register_peer_response !== void 0 && (e.register_peer_response = X0.toJSON(u.register_peer_response)), u.punch_hole_request !== void 0 && (e.punch_hole_request = Ku.toJSON(u.punch_hole_request)), u.punch_hole !== void 0 && (e.punch_hole = Y0.toJSON(u.punch_hole)), u.punch_hole_sent !== void 0 && (e.punch_hole_sent = e4.toJSON(u.punch_hole_sent)), u.punch_hole_response !== void 0 && (e.punch_hole_response = a4.toJSON(u.punch_hole_response)), u.fetch_local_addr !== void 0 && (e.fetch_local_addr = r4.toJSON(u.fetch_local_addr)), u.local_addr !== void 0 && (e.local_addr = s4.toJSON(u.local_addr)), u.configure_update !== void 0 && (e.configure_update = eu.toJSON(u.configure_update)), u.register_pk !== void 0 && (e.register_pk = i4.toJSON(u.register_pk)), u.register_pk_response !== void 0 && (e.register_pk_response = t4.toJSON(u.register_pk_response)), u.software_update !== void 0 && (e.software_update = n4.toJSON(u.software_update)), u.request_relay !== void 0 && (e.request_relay = Hu.toJSON(u.request_relay)), u.relay_response !== void 0 && (e.relay_response = o4.toJSON(u.relay_response)), u.test_nat_request !== void 0 && (e.test_nat_request = $0.toJSON(u.test_nat_request)), u.test_nat_response !== void 0 && (e.test_nat_response = u4.toJSON(u.test_nat_response)), u.peer_discovery !== void 0 && (e.peer_discovery = l4.toJSON(u.peer_discovery)), u.online_request !== void 0 && (e.online_request = Ju.toJSON(u.online_request)), u.online_response !== void 0 && (e.online_response = E4.toJSON(u.online_response)), u.key_exchange !== void 0 && (e.key_exchange = d4.toJSON(u.key_exchange)), u.hc !== void 0 && (e.hc = Gu.toJSON(u.hc)), e }, create(u) { return z4.fromPartial(u != null ? u : {}) }, fromPartial(u) { const e = Vi(); return e.register_peer = u.register_peer !== void 0 && u.register_peer !== null ? Q0.fromPartial(u.register_peer) : void 0, e.register_peer_response = u.register_peer_response !== void 0 && u.register_peer_response !== null ? X0.fromPartial(u.register_peer_response) : void 0, e.punch_hole_request = u.punch_hole_request !== void 0 && u.punch_hole_request !== null ? Ku.fromPartial(u.punch_hole_request) : void 0, e.punch_hole = u.punch_hole !== void 0 && u.punch_hole !== null ? Y0.fromPartial(u.punch_hole) : void 0, e.punch_hole_sent = u.punch_hole_sent !== void 0 && u.punch_hole_sent !== null ? e4.fromPartial(u.punch_hole_sent) : void 0, e.punch_hole_response = u.punch_hole_response !== void 0 && u.punch_hole_response !== null ? a4.fromPartial(u.punch_hole_response) : void 0, e.fetch_local_addr = u.fetch_local_addr !== void 0 && u.fetch_local_addr !== null ? r4.fromPartial(u.fetch_local_addr) : void 0, e.local_addr = u.local_addr !== void 0 && u.local_addr !== null ? s4.fromPartial(u.local_addr) : void 0, e.configure_update = u.configure_update !== void 0 && u.configure_update !== null ? eu.fromPartial(u.configure_update) : void 0, e.register_pk = u.register_pk !== void 0 && u.register_pk !== null ? i4.fromPartial(u.register_pk) : void 0, e.register_pk_response = u.register_pk_response !== void 0 && u.register_pk_response !== null ? t4.fromPartial(u.register_pk_response) : void 0, e.software_update = u.software_update !== void 0 && u.software_update !== null ? n4.fromPartial(u.software_update) : void 0, e.request_relay = u.request_relay !== void 0 && u.request_relay !== null ? Hu.fromPartial(u.request_relay) : void 0, e.relay_response = u.relay_response !== void 0 && u.relay_response !== null ? o4.fromPartial(u.relay_response) : void 0, e.test_nat_request = u.test_nat_request !== void 0 && u.test_nat_request !== null ? $0.fromPartial(u.test_nat_request) : void 0, e.test_nat_response = u.test_nat_response !== void 0 && u.test_nat_response !== null ? u4.fromPartial(u.test_nat_response) : void 0, e.peer_discovery = u.peer_discovery !== void 0 && u.peer_discovery !== null ? l4.fromPartial(u.peer_discovery) : void 0, e.online_request = u.online_request !== void 0 && u.online_request !== null ? Ju.fromPartial(u.online_request) : void 0, e.online_response = u.online_response !== void 0 && u.online_response !== null ? E4.fromPartial(u.online_response) : void 0, e.key_exchange = u.key_exchange !== void 0 && u.key_exchange !== null ? d4.fromPartial(u.key_exchange) : void 0, e.hc = u.hc !== void 0 && u.hc !== null ? Gu.fromPartial(u.hc) : void 0, e } }; function O(u) { if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(u, "base64")); { const e = globalThis.atob(u), i = new Uint8Array(e.length); for (let o = 0; o < e.length; ++o) i[o] = e.charCodeAt(o); return i } } function M(u) { if (globalThis.Buffer) return globalThis.Buffer.from(u).toString("base64"); { const e = []; return u.forEach(i => { e.push(globalThis.String.fromCharCode(i)) }), globalThis.btoa(e.join("")) } } function p(u) { return u != null } class N4 { constructor(e, i = !0, o = "") { d(this, "_websocket"); d(this, "_eventHandlers"); d(this, "_buf"); d(this, "_status"); d(this, "_latency"); d(this, "_secretKey"); d(this, "_uri"); d(this, "_isRendezvous"); d(this, "_recvDataCount"); d(this, "_tag"); d(this, "_isProcessing"); this._eventHandlers = { message: void 0, open: void 0, close: void 0, error: void 0, status_change: void 0 }, this._uri = e, this._status = "", this._buf = [], this._websocket = new WebSocket(e), this._websocket.onmessage = this._recv_message.bind(this), this._websocket.binaryType = "arraybuffer", this._latency = new Date().getTime(), this._isRendezvous = i, this._recvDataCount = 0, this._tag = o, this._isProcessing = !1 } resetRecvDataCount() { this._recvDataCount = 0 } getRecvDataCount() { return this._recvDataCount } latency() { return this._latency } setSecretKey(e) { this._secretKey = [e, 0, 0] } sendMessage(e) { let i = iu.encode(iu.fromPartial(e)).finish(), o = this._secretKey; o && (o[1] += 1, i = st(i, o[1], o[0])), this._websocket.send(i) } sendRendezvous(e) { this._websocket.send(z4.encode(z4.fromPartial(e)).finish()) } sendBytes(e) { let i = this._secretKey; i && (i[1] += 1, e = st(e, i[1], i[0])), this._websocket.send(e) } parseMessage(e) { return iu.decode(e) } parseRendezvous(e) { return z4.decode(e) } off(e) { this._eventHandlers[e] = void 0 } on(e, i) { this._eventHandlers[e] = i } setStatus(e) { this._status = e, this._eventHandlers.status_change && this._eventHandlers.status_change(e) } async open(e = 12e3) { return new Promise((i, o) => { setTimeout(() => { this._status != "open" && o(this._status || "Timeout") }, e), this._websocket.onopen = () => { var a; this._latency = new Date().getTime() - this._latency, this.setStatus("open"), console.debug(">> WebSock.onopen " + this._tag), (a = this._websocket) != null && a.protocol && console.info("Server " + this._tag + " choose sub-protocol: " + this._websocket.protocol), this._eventHandlers.open && this._eventHandlers.open(), console.info("WebSock.onopen " + this._tag), i(this) }, this._websocket.onclose = a => { this._status == "open", this.setStatus(a), this._tag == "query onlines" ? console.info("WebSock.onclose " + this._tag) : a.code == 1e3 ? console.info("WebSock.onclose " + this._tag + ": " + a.reason) : (console.error("WebSock.onclose: " + this._tag), console.error(a)), this._eventHandlers.close && this._eventHandlers.close(a), o("Reset by the peer") }, this._websocket.onerror = a => { if (!this._status) { o("Failed to connect to " + (this._isRendezvous ? "rendezvous" : "relay") + " server, " + this._uri); return } this.setStatus(a), console.error("WebSock.onerror: " + this._tag), console.error(a), this._eventHandlers.error && this._eventHandlers.error(a) } }) } async next(e = 12e3) { let i = this._eventHandlers.message; this.off("message"); try { let o = await this._next(e); return this.on("message", i), o } catch (o) { throw this.on("message", i), o } } async _next(e = 12e3) { const i = (o, a, t) => { if (this._buf.length) o(this._buf[0]), this._buf.splice(0, 1); else { if (this._status != "open") { a(this._status); return } new Date().getTime() > t + e ? a("Timeout") : setTimeout(() => i(o, a, t), 1) } }; return new Promise((o, a) => { i(o, a, new Date().getTime()) }) } close() { this.setStatus(""), this._websocket && ((this._websocket.readyState === WebSocket.OPEN || this._websocket.readyState === WebSocket.CONNECTING) && (console.info("Closing WebSocket(" + this._tag + ") connection"), this._websocket.close(1e3, "Normal closure")), this._websocket.onmessage = () => { }) } _recv_message(e) { if (e.data instanceof window.ArrayBuffer) { let i = new Uint8Array(e.data); this._recvDataCount += i.length; const o = this._secretKey; o && (o[2] += 1, i = Kn(i, o[2], o[0])); let a; i.length == 0 ? a = new Uint8Array : a = this._isRendezvous ? this.parseRendezvous(i) : this.parseMessage(i), this._buf.push(a), this._eventHandlers.message && (this._isProcessing || this.processQueue()) } } async processQueue() { this._isProcessing = !0; try { for (; this._buf.length > 0 && this._eventHandlers.message;) { const e = this._buf.shift(); await this._eventHandlers.message(e) } } catch (e) { console.log("Error in processQueue: " + e) } this._isProcessing = !1 } } let mu = null; const qi = "."; var X, Bu, $u, J4, Eu, G4, Dt, h4; class za { constructor() { pu(this, G4); pu(this, X, null); pu(this, Bu, {}); pu(this, $u, {}); pu(this, J4, 0); pu(this, Eu, []); pu(this, h4, async (e, i) => { const o = await (await fetch(e)).arrayBuffer(), a = new Blob([o], {type: i}); return URL.createObjectURL(a) }) } async load() { if (!h(this, X)) { B4(this, X, new Worker("./ffmpeg.js?v=dddac33a", {type: "module"})), je(this, G4, Dt).call(this); const e = await h(this, h4).call(this, `${qi}/ffmpeg-core.js?v=16fa4bb1`, "text/javascript"), i = await h(this, h4).call(this, `${qi}/ffmpeg-core.wasm?v=241ebe18`, "application/wasm"); return this.send({type: "LOAD", data: {coreURL: e, wasmURL: i}}) } } async decode(e, i) { let o = [i]; var a = null; return h(this, Eu).length > 0 && (a = h(this, Eu).pop(), o.push(a)), this.send({ type: "DECODE", data: {codec: e, data: i, arrayBuffer: a} }, o) } async send({type: e, data: i}, o) { return h(this, X) ? new Promise((a, t) => { const s = Te(this, J4)._++; h(this, Bu)[s] = a, h(this, $u)[s] = t, h(this, X).postMessage({id: s, type: e, data: i}, o) }) : Promise.reject("FFmpeg not loaded") } close() { h(this, X) && (this.send({type: "CLOSE", data: {}}), h(this, X).terminate(), B4(this, X, null)) } } X = new WeakMap, Bu = new WeakMap, $u = new WeakMap, J4 = new WeakMap, Eu = new WeakMap, G4 = new WeakSet, Dt = function () { h(this, X).onmessage = ({data: {id: e, type: i, data: o}}) => { i == "LOAD" ? (console.log("FFmpeg loaded"), h(this, Bu)[e](o)) : i == "DECODE" ? (h(this, Eu).push(o.data.data), h(this, Eu).length > 8 && h(this, Eu).shift(), h(this, Bu)[e](o)) : i == "CLOSE" ? (B4(this, Eu, []), h(this, Bu)[e](o)) : i == "ERROR" ? h(this, $u)[e](o) : h(this, $u)[e](o), delete h(this, Bu)[e], delete h(this, $u)[e] } }, h4 = new WeakMap; async function Pa() { try { return mu = new za, mu ? mu.load() : Promise.reject("Failed to create FFmpeg instance") } catch (u) { return console.log("Failed to load FFmpeg", u), Promise.reject("Failed to load FFmpeg") } } async function Ra(u, e) { return mu ? mu.decode(u, e) : Promise.reject("FFmpeg is uninitialized") } async function Ia() { mu && (mu.close(), mu = null) } const Ta = "Desktop session not ready", ja = "Desktop xsession failed", Na = "Desktop session another user login", Oa = "Desktop xorg not found", Ma = "Desktop none", Ua = "Desktop session not ready, password empty", La = "Desktop session not ready, password wrong", Wa = "Empty Password", Va = "Wrong Password", qa = "Wrong 2FA Code", Ki = "2FA Required", Ka = "No Password Access", Ha = "Wayland login screen is not supported", Ja = "x11 expected", Bt = "https://rustdesk.com/docs/en/manual/linux/#x11-required", Ga = "https://rustdesk.com/docs/en/", Za = Bt, Qa = "https://github.com/rustdesk/rustdesk/wiki/Headless-Linux-Support", Hi = {"rustdesk docs home": Ga, "rustdesk docs x11-required": Za, "rustdesk x11 headless": Qa}, Ji = "Input source 1", Xa = "map", Gi = "translate", Ya = "ShiftLeft", $a = "ShiftRight", F4 = "ControlLeft", mt = "ControlRight", De = "AltLeft", At = "AltRight", Ft = "MetaLeft", _t = "MetaRight", Y4 = "Windows", Be = "Linux", me = "Mac OS", vt = "Android", uo = "iOS", eo = "web", io = "ISO", to = 1, ao = 2, Zi = 3, Qi = 4, y4 = 1, b4 = 2, oo = 4, no = 8, ro = 16, ee = "public", Xi = "OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=", so = 1e3, lo = 6e4, re = lang, Eo = langIds; function co(u, e, i, o) { return u == "error" && e == "Connection Error" && ((i.indexOf("10054") < 0 || i.indexOf("104") < 0) && o || i.toLowerCase().indexOf("offline") < 0 && i.toLowerCase().indexOf("exist") < 0 && i.toLowerCase().indexOf("handshake") < 0 && i.toLowerCase().indexOf("failed") < 0 && i.toLowerCase().indexOf("resolve") < 0 && i.toLowerCase().indexOf("mismatch") < 0 && i.toLowerCase().indexOf("manually") < 0 && i.toLowerCase().indexOf("not allowed") < 0) } const Co = { VK_A: "a", VK_B: "b", VK_C: "c", VK_D: "d", VK_E: "e", VK_F: "f", VK_G: "g", VK_H: "h", VK_I: "i", VK_J: "j", VK_K: "k", VK_L: "l", VK_M: "m", VK_N: "n", VK_O: "o", VK_P: "p", VK_Q: "q", VK_R: "r", VK_S: "s", VK_T: "t", VK_U: "u", VK_V: "v", VK_W: "w", VK_X: "x", VK_Y: "y", VK_Z: "z", VK_0: "0", VK_1: "1", VK_2: "2", VK_3: "3", VK_4: "4", VK_5: "5", VK_6: "6", VK_7: "7", VK_8: "8", VK_9: "9", VK_COMMA: ",", VK_SLASH: "/", VK_SEMICOLON: ";", VK_QUOTE: "'", VK_LBRACKET: "[", VK_RBRACKET: "]", VK_BACKSLASH: "\\", VK_MINUS: "-", VK_PLUS: "=", VK_DIVIDE: "Divide", VK_MULTIPLY: "Multiply", VK_SUBTRACT: "Subtract", VK_ADD: "Add", VK_DECIMAL: "Decimal", VK_F1: "F1", VK_F2: "F2", VK_F3: "F3", VK_F4: "F4", VK_F5: "F5", VK_F6: "F6", VK_F7: "F7", VK_F8: "F8", VK_F9: "F9", VK_F10: "F10", VK_F11: "F11", VK_F12: "F12", VK_ENTER: "Return", VK_CANCEL: "Cancel", VK_BACK: "Backspace", VK_TAB: "Tab", VK_CLEAR: "Clear", VK_RETURN: "Return", VK_SHIFT: "Shift", VK_CONTROL: "Control", VK_MENU: "Alt", VK_PAUSE: "Pause", VK_CAPITAL: "CapsLock", VK_KANA: "Kana", VK_HANGUL: "Hangul", VK_JUNJA: "Junja", VK_FINAL: "Final", VK_HANJA: "Hanja", VK_KANJI: "Kanji", VK_ESCAPE: "Escape", VK_CONVERT: "Convert", VK_SPACE: "Space", VK_PRIOR: "PageUp", VK_NEXT: "PageDown", VK_END: "End", VK_HOME: "Home", VK_LEFT: "LeftArrow", VK_UP: "UpArrow", VK_RIGHT: "RightArrow", VK_DOWN: "DownArrow", VK_SELECT: "Select", VK_PRINT: "Print", VK_EXECUTE: "Execute", VK_SNAPSHOT: "Snapshot", VK_SCROLL: "Scroll", VK_INSERT: "Insert", VK_DELETE: "Delete", VK_HELP: "Help", VK_SLEEP: "Sleep", VK_SEPARATOR: "Separator", VK_NUMPAD0: "Numpad0", VK_NUMPAD1: "Numpad1", VK_NUMPAD2: "Numpad2", VK_NUMPAD3: "Numpad3", VK_NUMPAD4: "Numpad4", VK_NUMPAD5: "Numpad5", VK_NUMPAD6: "Numpad6", VK_NUMPAD7: "Numpad7", VK_NUMPAD8: "Numpad8", VK_NUMPAD9: "Numpad9", Apps: "Apps", Meta: "Meta", RAlt: "RAlt", RWin: "RWin", RControl: "RControl", RShift: "RShift", CTRL_ALT_DEL: "CtrlAltDel", LOCK_SCREEN: "LockScreen" }, se = "1.3.7", po = "2025-01-21 01:12"; class A { static setItem(e, i) { localStorage.setItem(this.prefix + e, i) } static getItem(e) { return localStorage.getItem(this.prefix + e) } static removeItem(e) { localStorage.removeItem(this.prefix + e) } static clear() { for (let e = localStorage.length - 1; e >= 0; e--) { const i = localStorage.key(e); i && i.startsWith(this.prefix) && localStorage.removeItem(i) } } } d(A, "prefix", "wc-"); class N { static async init() { if (!this.db) return new Promise((e, i) => { const o = indexedDB.open(this.dbName, 1); o.onupgradeneeded = a => { const t = a.target.result; t.objectStoreNames.contains(this.storeName) || t.createObjectStore(this.storeName) }, o.onsuccess = async a => { this.db = a.target.result; try { await this.loadCache(), e() } catch (t) { i(t) } }, o.onerror = a => { i(a.target.error) } }) } static async loadCache() { return new Promise((e, i) => { const a = this.db.transaction([this.storeName], "readonly").objectStore(this.storeName), t = a.getAllKeys(); t.onsuccess = s => { const E = s.target.result.map(c => new Promise((C, D) => { const B = a.get(c); B.onsuccess = F => { this.cache[c] = F.target.result, C() }, B.onerror = F => { D(F.target.error) } })); Promise.all(E).then(() => e()).catch(i) }, t.onerror = s => { i(s.target.error) } }) } static setItem(e, i) { this.cache[this.prefix + e] = i; const t = this.db.transaction([this.storeName], "readwrite").objectStore(this.storeName).put(i, this.prefix + e); t.onerror = s => { console.error("IndexedDB setItem error:", s.target.error) } } static getItem(e) { var i; return (i = this.cache[this.prefix + e]) != null ? i : null } static removeItem(e) { delete this.cache[this.prefix + e]; const a = this.db.transaction([this.storeName], "readwrite").objectStore(this.storeName).delete(this.prefix + e); a.onerror = t => { console.error("IndexedDB removeItem error:", t.target.error) } } static clear() { this.cache = {}; const o = this.db.transaction([this.storeName], "readwrite").objectStore(this.storeName).clear(); o.onerror = a => { console.error("IndexedDB clear error:", a.target.error) } } } d(N, "dbName", "wc-database"), d(N, "storeName", "wc-store"), d(N, "prefix", "wc-"), d(N, "db", null), d(N, "cache", {}); const Cu = () => { try { return JSON.parse(N.getItem("peers")) || {} } catch { return {} } }, Ae = u => { N.setItem("peers", JSON.stringify(u)) }, Do = u => { const e = Cu(); delete e[u], Ae(e) }, le = u => Cu()[u], Bo = (u, e) => { const i = Cu(); i[u] = e, Ae(i) }, mo = (u, e) => { var o; return (o = le(u)[e]) != null ? o : u0(e) }, kt = (u, e, i) => { const o = Cu(), a = o[u] || {}; i == null ? delete a[e] : a[e] = i, a.tm = new Date().getTime(), o[u] = a, Ae(o) }, Fe = u => A.getItem(`option:local:${u}`), gt = (u, e) => { A.setItem(`option:local:${u}`, e) }, Ao = u => A.getItem(`option:flutter:local:${u}`), Fo = (u, e) => { A.setItem(`option:flutter:local:${u}`, e) }, ht = async u => { const e = Gt(), i = Xu.publicKey, o = $4(0), a = e.from_string(u), t = await ua(a), s = e.crypto_secretbox_easy(t, o, i); return Z(s) }, ft = async u => { const e = Gt(), i = Xu.publicKey, o = c4(u), a = e.crypto_secretbox_open_easy(o, $4(0), i), t = await ea(a); return e.to_string(t) }, _o = async u => { let e = await ht(u); N.setItem("ab", e) }, xt = async () => { try { let u = N.getItem("ab"); if (u) return JSON.parse(await ft(u)) } catch (u) { console.error("loadAb error", u) } return {access_token: "", ab_entries: []} }, vo = () => { N.removeItem("ab") }, ko = async u => { let e = await ht(u); N.setItem("group", e) }, go = async () => { try { let u = N.getItem("group"); if (u) return JSON.parse(await ft(u)) } catch (u) { console.error("loadGroup error", u) } return {access_token: "", users: [], peers: []} }, ho = () => { N.removeItem("group") }, fo = u => u.name == "My address book" || u.name == "Legacy address book"; var yt = bt(); function xo() { yt = bt() } function yo(u, e) { const i = yt || u.substring(u.length - 2).toLowerCase(); let o = re.en, a = re[i]; a || (a = o); let t = a[e]; return !t && i != "en" && (t = o[e]), t || e } const bo = "z".charCodeAt(0), wo = "a".charCodeAt(0); function So(u, e) { const i = Co[u] || u; if (i.length == 1) { const a = i.charCodeAt(0); return !e && (a > bo || a < wo) ? w.fromPartial({unicode: a}) : w.fromPartial({chr: a}) } const o = v4(i); return o == j.UNRECOGNIZED && console.error("Unknown control key " + i), w.fromPartial({control_key: o}) } async function ie(u) { await new Promise(e => setTimeout(e, u)) } function bt() { let u = A.getItem("option:local:lang"); if (u && (u.includes("-") && (u = u.split("-")[1]), u.includes("_") && (u = u.split("_")[1]), re.hasOwnProperty(u))) return u; try { const e = window.location.search; return new URLSearchParams(e).get("lang") || "" } catch { return "" } } var Xu = {privateKey: new Uint8Array([]), publicKey: new Uint8Array([])}; async function zo() { try { const u = "app-data"; try { const i = A.getItem(u); if (i) { const o = JSON.parse(i); if (Xu = { privateKey: new Uint8Array(c4(o.a)), publicKey: new Uint8Array(c4(o.b)) }, Xu.publicKey.length === 32 && Xu.privateKey.length === 64) return } } catch (i) { console.error(i) } const e = await Po(); A.setItem(u, JSON.stringify({a: Z(e.privateKey), b: Z(e.publicKey)})), Xu = e } catch (u) { console.error("failed to init key pair", u) } } function Z(u) { return Ln(u) } function c4(u) { return Zt(u) } async function Po() { return await $n() } function O4() { return "web" } function wt() { return "web" } function St() { return Z(Xu.publicKey) } function Ro() { return Zu([St()]) } function Zu(u) { const e = new oa.exports.Hash; return u.forEach(i => (typeof i == "string" && (i = new TextEncoder().encode(i)), e.update(i))), e.digest() } function zt() { const u = navigator.userAgent.toLowerCase(); return u.includes("win") ? Y4 : u.includes("mac") ? me : u.includes("linux") ? Be : u.includes("android") ? vt : u.includes("iphone") || u.includes("ipad") ? uo : "Unknown OS" } async function Io(u, e) { for (let i = 0; i < 2; i++) { const a = e === void 0 ? await u.next() : await u.next(e); if (!(!a || (a == null ? void 0 : a.key_exchange))) return a } } function To() { return A.getItem("key") || void 0 } function Pt() { return A.getItem("option:local:access_token") || void 0 } function jo() { return A.getItem("option:local:user_info") || void 0 } function _4() { return Yu } const _e = { Alt: 56, AltGr: 57400, Backspace: 14, CapsLock: 58, ControlLeft: 29, ControlRight: 57373, Delete: 57427, UpArrow: 57416, DownArrow: 57424, LeftArrow: 57419, RightArrow: 57421, End: 57423, Escape: 1, F1: 59, F2: 60, F3: 61, F4: 62, F5: 63, F6: 64, F7: 65, F8: 66, F9: 67, F10: 68, F11: 87, F12: 88, F13: 100, F14: 101, F15: 102, F16: 103, F17: 104, F18: 105, F19: 106, F20: 107, F21: 108, F22: 109, F23: 110, F24: 118, Home: 57415, MetaLeft: 57435, PageDown: 57425, PageUp: 57417, Return: 28, ShiftLeft: 42, ShiftRight: 54, Space: 57, Tab: 15, PrintScreen: 57399, ScrollLock: 70, NumLock: 69, BackQuote: 41, Num1: 2, Num2: 3, Num3: 4, Num4: 5, Num5: 6, Num6: 7, Num7: 8, Num8: 9, Num9: 10, Num0: 11, Minus: 12, Equal: 13, KeyQ: 16, KeyW: 17, KeyE: 18, KeyR: 19, KeyT: 20, KeyY: 21, KeyU: 22, KeyI: 23, KeyO: 24, KeyP: 25, LeftBracket: 26, RightBracket: 27, BackSlash: 43, KeyA: 30, KeyS: 31, KeyD: 32, KeyF: 33, KeyG: 34, KeyH: 35, KeyJ: 36, KeyK: 37, KeyL: 38, SemiColon: 39, Quote: 40, IntlBackslash: 86, IntlRo: 115, IntlYen: 125, KanaMode: 112, KeyZ: 44, KeyX: 45, KeyC: 46, KeyV: 47, KeyB: 48, KeyN: 49, KeyM: 50, Comma: 51, Dot: 52, Slash: 53, Insert: 57426, KpMinus: 74, KpPlus: 78, KpMultiply: 55, KpDivide: 57397, KpDecimal: 83, KpReturn: 57372, KpEqual: 89, KpComma: 126, Kp0: 82, Kp1: 79, Kp2: 80, Kp3: 81, Kp4: 75, Kp5: 76, Kp6: 77, Kp7: 71, Kp8: 72, Kp9: 73, MetaRight: 57436, Apps: 57437, VolumeUp: 57392, VolumeDown: 57390, VolumeMute: 57376, Lang1: 123, Lang2: 121, Lang3: 120, Lang4: 119, Lang5: 118, Kana: 128, Hanja: 241 }, No = { Alt: 64, AltGr: 108, Backspace: 22, CapsLock: 66, ControlLeft: 37, ControlRight: 105, Delete: 119, DownArrow: 116, End: 115, Escape: 9, F1: 67, F10: 76, F11: 95, F12: 96, F13: 191, F14: 192, F15: 193, F16: 194, F17: 195, F18: 196, F19: 197, F20: 198, F21: 199, F22: 200, F23: 201, F24: 202, F2: 68, F3: 69, F4: 70, F5: 71, F6: 72, F7: 73, F8: 74, F9: 75, Home: 110, LeftArrow: 113, MetaLeft: 133, PageDown: 117, PageUp: 112, Return: 36, RightArrow: 114, ShiftLeft: 50, ShiftRight: 62, Space: 65, Tab: 23, UpArrow: 111, PrintScreen: 107, ScrollLock: 78, Pause: 127, NumLock: 77, BackQuote: 49, Num1: 10, Num2: 11, Num3: 12, Num4: 13, Num5: 14, Num6: 15, Num7: 16, Num8: 17, Num9: 18, Num0: 19, Minus: 20, Equal: 21, KeyQ: 24, KeyW: 25, KeyE: 26, KeyR: 27, KeyT: 28, KeyY: 29, KeyU: 30, KeyI: 31, KeyO: 32, KeyP: 33, LeftBracket: 34, RightBracket: 35, KeyA: 38, KeyS: 39, KeyD: 40, KeyF: 41, KeyG: 42, KeyH: 43, KeyJ: 44, KeyK: 45, KeyL: 46, SemiColon: 47, Quote: 48, BackSlash: 51, IntlBackslash: 94, IntlRo: 97, IntlYen: 132, KanaMode: 101, KeyZ: 52, KeyX: 53, KeyC: 54, KeyV: 55, KeyB: 56, KeyN: 57, KeyM: 58, Comma: 59, Dot: 60, Slash: 61, Insert: 118, KpDecimal: 91, KpReturn: 104, KpMinus: 82, KpPlus: 86, KpMultiply: 63, KpDivide: 106, KpEqual: 125, KpComma: 129, Kp0: 90, Kp1: 87, Kp2: 88, Kp3: 89, Kp4: 83, Kp5: 84, Kp6: 85, Kp7: 79, Kp8: 80, Kp9: 81, MetaRight: 134, Apps: 135, VolumeUp: 123, VolumeDown: 122, VolumeMute: 121, Lang1: 102, Lang2: 100, Lang3: 98, Lang4: 99, Lang5: 93 }, Oo = { Alt: 57, AltGr: 58, Backspace: 67, CapsLock: 115, ControlLeft: 113, ControlRight: 114, Delete: 112, DownArrow: 20, End: 123, Escape: 111, F1: 131, F10: 140, F11: 141, F12: 142, F2: 132, F3: 133, F4: 134, F5: 135, F6: 136, F7: 137, F8: 138, F9: 139, Home: 3, LeftArrow: 21, MetaLeft: 117, PageDown: 93, PageUp: 92, Return: 66, RightArrow: 22, ShiftLeft: 59, ShiftRight: 60, Space: 62, Tab: 61, UpArrow: 19, PrintScreen: 120, ScrollLock: 116, NumLock: 143, Pause: 121, BackQuote: 75, Num1: 8, Num2: 9, Num3: 10, Num4: 11, Num5: 12, Num6: 13, Num7: 14, Num8: 15, Num9: 16, Num0: 7, Minus: 69, Equal: 70, KeyA: 29, KeyB: 30, KeyC: 31, KeyD: 32, KeyE: 33, KeyF: 34, KeyG: 35, KeyH: 36, KeyI: 37, KeyJ: 38, KeyK: 39, KeyL: 40, KeyM: 41, KeyN: 42, KeyO: 43, KeyP: 44, KeyQ: 45, KeyR: 46, KeyS: 47, KeyT: 48, KeyU: 49, KeyV: 50, KeyW: 51, KeyX: 52, KeyY: 53, KeyZ: 54, LeftBracket: 71, RightBracket: 72, SemiColon: 74, Quote: 75, BackSlash: 73, KanaMode: 218, Comma: 55, Dot: 56, Slash: 76, Insert: 124 }, Mo = { 226: "Alt", 230: "AltGr", 42: "Backspace", 57: "CapsLock", 224: "ControlLeft", 228: "ControlRight", 76: "Delete", 82: "UpArrow", 81: "DownArrow", 80: "LeftArrow", 79: "RightArrow", 77: "End", 41: "Escape", 58: "F1", 59: "F2", 60: "F3", 61: "F4", 62: "F5", 63: "F6", 64: "F7", 65: "F8", 66: "F9", 67: "F10", 68: "F11", 69: "F12", 104: "F13", 105: "F14", 106: "F15", 107: "F16", 108: "F17", 109: "F18", 110: "F19", 111: "F20", 112: "F21", 113: "F22", 114: "F23", 115: "F24", 74: "Home", 227: "MetaLeft", 78: "PageDown", 75: "PageUp", 40: "Return", 225: "ShiftLeft", 229: "ShiftRight", 44: "Space", 43: "Tab", 70: "PrintScreen", 71: "ScrollLock", 83: "NumLock", 53: "BackQuote", 30: "Num1", 31: "Num2", 32: "Num3", 33: "Num4", 34: "Num5", 35: "Num6", 36: "Num7", 37: "Num8", 38: "Num9", 39: "Num0", 45: "Minus", 46: "Equal", 20: "KeyQ", 26: "KeyW", 8: "KeyE", 21: "KeyR", 23: "KeyT", 28: "KeyY", 24: "KeyU", 12: "KeyI", 18: "KeyO", 19: "KeyP", 47: "LeftBracket", 48: "RightBracket", 49: "BackSlash", 4: "KeyA", 22: "KeyS", 7: "KeyD", 9: "KeyF", 10: "KeyG", 11: "KeyH", 13: "KeyJ", 14: "KeyK", 15: "KeyL", 51: "SemiColon", 52: "Quote", 100: "IntlBackslash", 135: "IntlRo", 137: "IntlYen", 29: "KeyZ", 27: "KeyX", 6: "KeyC", 25: "KeyV", 5: "KeyB", 17: "KeyN", 16: "KeyM", 54: "Comma", 55: "Dot", 56: "Slash", 73: "Insert", 86: "KpMinus", 87: "KpPlus", 85: "KpMultiply", 84: "KpDivide", 99: "KpDecimal", 88: "KpReturn", 103: "KpEqual", 133: "KpComma", 98: "Kp0", 89: "Kp1", 90: "Kp2", 91: "Kp3", 92: "Kp4", 93: "Kp5", 94: "Kp6", 95: "Kp7", 96: "Kp8", 97: "Kp9", 231: "MetaRight", 128: "VolumeUp", 129: "VolumeDown", 127: "VolumeMute", 139: "Lang1", 138: "Lang2", 146: "Lang3", 147: "Lang4", 148: "Lang5", 155: "Cancel", 156: "Clear", 136: "Kana", 145: "Hanja", 119: "Select", 116: "Execute", 117: "Help", 159: "Separator" }, Uo = { KeyA: 0, KeyS: 1, KeyD: 2, KeyF: 3, KeyH: 4, KeyG: 5, KeyZ: 6, KeyX: 7, KeyC: 8, KeyV: 9, IntlBackslash: 10, KeyB: 11, KeyQ: 12, KeyW: 13, KeyE: 14, KeyR: 15, KeyY: 16, KeyT: 17, Num1: 18, Num2: 19, Num3: 20, Num4: 21, Num6: 22, Num5: 23, Equal: 24, Num9: 25, Num7: 26, Minus: 27, Num8: 28, Num0: 29, RightBracket: 30, KeyO: 31, KeyU: 32, LeftBracket: 33, KeyI: 34, KeyP: 35, Return: 36, KeyL: 37, KeyJ: 38, Quote: 39, KeyK: 40, SemiColon: 41, BackSlash: 42, Comma: 43, Slash: 44, KeyN: 45, KeyM: 46, Dot: 47, Tab: 48, Space: 49, BackQuote: 50, Backspace: 51, Escape: 53, MetaRight: 54, MetaLeft: 55, ShiftLeft: 56, CapsLock: 57, Alt: 58, ControlLeft: 59, ShiftRight: 60, AltGr: 61, ControlRight: 62, Function: 63, F17: 64, KpDecimal: 65, KpMultiply: 67, KpPlus: 69, NumLock: 71, VolumeUp: 72, VolumeDown: 73, VolumeMute: 74, KpDivide: 75, KpReturn: 76, KpMinus: 78, F18: 79, F19: 80, KpEqual: 81, Kp0: 82, Kp1: 83, Kp2: 84, Kp3: 85, Kp4: 86, Kp5: 87, Kp6: 88, Kp7: 89, F20: 90, Kp8: 91, Kp9: 92, IntlYen: 93, IntlRo: 94, KpComma: 95, F5: 96, F6: 97, F7: 98, F3: 99, F8: 100, F9: 101, Lang2: 102, F11: 103, Lang1: 104, F13: 105, F16: 106, F14: 107, F10: 109, F12: 111, F15: 113, Insert: 114, Home: 115, PageUp: 116, Delete: 117, F4: 118, End: 119, F2: 120, PageDown: 121, F1: 122, LeftArrow: 123, RightArrow: 124, DownArrow: 125, UpArrow: 126, Apps: 110 }, Lo = { AltLeft: "Alt", AltRight: "AltGr", Backspace: "Backspace", CapsLock: "CapsLock", ControlLeft: "ControlLeft", ControlRight: "ControlRight", Delete: "Delete", ArrowUp: "UpArrow", ArrowDown: "DownArrow", ArrowLeft: "LeftArrow", ArrowRight: "RightArrow", End: "End", Escape: "Escape", F1: "F1", F2: "F2", F3: "F3", F4: "F4", F5: "F5", F6: "F6", F7: "F7", F8: "F8", F9: "F9", F10: "F10", F11: "F11", F12: "F12", F13: "F13", F14: "F14", F15: "F15", F16: "F16", F17: "F17", F18: "F18", F19: "F19", F20: "F20", F21: "F21", F22: "F22", F23: "F23", F24: "F24", Home: "Home", MetaLeft: "MetaLeft", PageDown: "PageDown", PageUp: "PageUp", Enter: "Return", ShiftLeft: "ShiftLeft", ShiftRight: "ShiftRight", Space: "Space", Tab: "Tab", PrintScreen: "PrintScreen", ScrollLock: "ScrollLock", NumLock: "NumLock", Backquote: "BackQuote", Digit1: "Num1", Digit2: "Num2", Digit3: "Num3", Digit4: "Num4", Digit5: "Num5", Digit6: "Num6", Digit7: "Num7", Digit8: "Num8", Digit9: "Num9", Digit0: "Num0", Minus: "Minus", Equal: "Equal", KeyQ: "KeyQ", KeyW: "KeyW", KeyE: "KeyE", KeyR: "KeyR", KeyT: "KeyT", KeyY: "KeyY", KeyU: "KeyU", KeyI: "KeyI", KeyO: "KeyO", KeyP: "KeyP", BracketLeft: "LeftBracket", BracketRight: "RightBracket", Backslash: "BackSlash", KeyA: "KeyA", KeyS: "KeyS", KeyD: "KeyD", KeyF: "KeyF", KeyG: "KeyG", KeyH: "KeyH", KeyJ: "KeyJ", KeyK: "KeyK", KeyL: "KeyL", Semicolon: "SemiColon", Quote: "Quote", IntlBackslash: "IntlBackslash", IntlRo: "IntlRo", IntlYen: "IntlYen", KanaMode: "KanaMode", KeyZ: "KeyZ", KeyX: "KeyX", KeyC: "KeyC", KeyV: "KeyV", KeyB: "KeyB", KeyN: "KeyN", KeyM: "KeyM", Comma: "Comma", Period: "Dot", Slash: "Slash", Insert: "Insert", NumpadSubtract: "KpMinus", NumpadAdd: "KpPlus", NumpadMultiply: "KpMultiply", NumpadDivide: "KpDivide", NumpadDecimal: "KpDecimal", NumpadEnter: "KpReturn", NumpadEqual: "KpEqual", NumpadComma: "KpComma", Numpad0: "Kp0", Numpad1: "Kp1", Numpad2: "Kp2", Numpad3: "Kp3", Numpad4: "Kp4", Numpad5: "Kp5", Numpad6: "Kp6", Numpad7: "Kp7", Numpad8: "Kp8", Numpad9: "Kp9", MetaRight: "MetaRight", ContextMenu: "Apps", AudioVolumeUp: "VolumeUp", AudioVolumeDown: "VolumeDown", AudioVolumeMute: "VolumeMute", NonConvert: "Lang1", Convert: "Lang2", Lang3: "Lang3", Lang4: "Lang4", Lang5: "Lang5" }, Wo = new Set(["BackQuote", "Num1", "Num2", "Num3", "Num4", "Num5", "Num6", "Num7", "Num8", "Num9", "Num0", "Minus", "Equal", "KeyA", "KeyB", "KeyC", "KeyD", "KeyE", "KeyF", "KeyG", "KeyH", "KeyI", "KeyJ", "KeyK", "KeyL", "KeyM", "KeyN", "KeyO", "KeyP", "KeyQ", "KeyR", "KeyS", "KeyT", "KeyU", "KeyV", "KeyW", "KeyX", "KeyY", "KeyZ", "LeftBracket", "RightBracket", "BackSlash", "SemiColon", "Quote", "Comma", "Dot", "Slash", "IntlBackslash", "Space"]), Vo = new Set(["Kp0", "Kp1", "Kp2", "Kp3", "Kp4", "Kp5", "Kp6", "Kp7", "Kp8", "Kp9", "KpMinus", "KpMultiply", "KpDivide", "KpPlus", "KpDecimal"]); let m4 = !1, ru = !1; const b = {}; b[Ya] = !1; b[$a] = !1; b[F4] = !1; b[mt] = !1; b[De] = !1; b[At] = !1; b[Ft] = !1; b[_t] = !1; const k4 = {}, ve = u => Vo.has(u), ke = u => Wo.has(u), qo = () => b[F4] || b[mt] || b[De] || b[At] || b[Ft] || b[_t]; let _, M4 = !1; function Ko() { if (M4) { console.info("Keyboard event listener is already started"); return } document.addEventListener("keydown", U4), document.addEventListener("keyup", U4), _ || (_ = document.createElement("div"), _.setAttribute("contenteditable", "true"), _.id = "hiddenInput", _.style.position = "absolute", _.style.left = "-9999px", _.style.height = "1px", _.style.width = "1px", document.body.appendChild(_), Yu ? _.addEventListener("input", L4) : (H4 || Qu) && _.addEventListener("compositionend", L4), _.focus()), M4 = !0, console.info("Keyboard event listener started") } function Ee() { if (!M4) { console.info("Keyboard event listener is not started"); return } document.removeEventListener("keydown", U4), document.removeEventListener("keyup", U4), _ && (Yu || H4 ? _.removeEventListener("input", L4) : Qu && _.removeEventListener("compositionend", L4), _.remove(), _ = void 0), M4 = !1, console.info("Keyboard event listener stopped") } function ge(u, e) { u.sendMessage({key_event: e}) } function U4(u) { const e = e0(); if (!e) return; const i = u.type === "keydown"; i && !ru && u.preventDefault(), Rt(e, u, i) } function L4(u) { var a, t; const e = e0(); if (!e) return; u.preventDefault(); let i = null; if ((u instanceof InputEvent || u instanceof CompositionEvent) && (i = u.data), !i) return; const o = w.fromPartial({seq: i, mode: D4.Translate, down: !0, press: !1}); ge(e, o), ((t = (a = _ == null ? void 0 : _.textContent) == null ? void 0 : a.length) != null ? t : 0) > 10 && (_.textContent = "") } function Rt(u, e, i) { const o = Go(u, e, i); for (const a of o) ge(u, a) } function Ho(u, e, i, o) { const a = Mo[e]; if (!a) { console.error("Unknown USB HID code " + e); return } const t = W4(u, a, i); if (!t) return; const s = ve(a), l = ke(a); (l || s) && It(t, o, s, l); for (const E of t) ge(u, E) } function Jo() { const u = e0(); if (!!u) for (const e in k4) { const i = k4[e]; i && Rt(u, i, !1) } } function Go(u, e, i) { var c; const o = e.code, a = Lo[o]; if (!a) return console.error("Key code is not supported " + o), []; const t = u.getOption("keyboard_mode"), s = Zo(e); Xo(e, i), i ? k4[o] = e : delete k4[o]; let l = []; switch (t) { case Xa: l = (c = W4(u, a, i)) != null ? c : []; break; case Gi: l = Yo(u, e, a, i); break } if (!l) return []; const E = ve(a); if (t !== Gi || E) { const C = ke(a); It(l, s, E, C) } return l } function It(u, e, i, o) { for (const s of u) o && (e & 1 << 1) != 0 && s.modifiers.push(j.CapsLock), i && (e & 1 << 2) != 0 && s.modifiers.push(j.NumLock) } function Zo(u) { let a = 0; return u.getModifierState("CapsLock") && (a |= 1 << 1), u.getModifierState("NumLock") && (a |= 1 << 2), u.getModifierState("ScrollLock") && (a |= 1 << 3), a } function Qo(u, e) { return u == Y4 ? _e[e] : u == Be ? No[e] : u == vt ? Oo[e] : u == me ? (A.getItem("option:local:kb_layout") == io && (e == "IntlBackslash" ? e = "BackQuote" : e == "BackQuote" && (e = "IntlBackslash")), Uo[e]) : null } function Xo(u, e) { const i = u.code; i in b && (b[i] = e) } function W4(u, e, i) { const o = u.getPeerPlatform(), a = u.isSwapControlCommand(); e == "ControlLeft" || e == "ControlRight" ? a && (e = "MetaLeft") : (e == "MetaLeft" || e == "MetaRight") && a && (e = "ControlLeft"); const t = Qo(o, e); return t == null ? (console.error("Unknown key code " + e + " for platform " + o), []) : [w.fromPartial({ chr: t, mode: D4.Map, down: i, press: !1 })] } function Yo(u, e, i, o) { const a = _ === document.activeElement; if (_ && _.focus(), H4 && _ && a && e.key === "Process") return []; const t = ke(i), s = e.key === "Dead"; if (o && ru && t) return Qu ? ru = s : ru = !1, []; if (s) return o && (Qu ? ru = !0 : ru = !ru), ru && _ && !a && Yu && _.dispatchEvent(new KeyboardEvent(e.type, {...e})), []; if (ru = !1, !Qu && ve(i)) return W4(u, i, o); if (Qu && e.code === "AltRight") return []; if (e.key === "AltGraph") return m4 && !o && (m4 = !1), !m4 && o && b[F4] ? (m4 = !0, b[F4] = !1, delete k4[F4], [w.fromPartial({ chr: _e.ControlLeft, mode: D4.Map, down: !1, press: !1 })]) : []; const E = u.getPeerPlatform(); let c = []; return Yu && (c = $o(E, e, o)), (Yu || H4) && c.length === 0 && o && t && (c = Yi(e, o)), Yu && m4 || (Qu && o && t && !b[De] && c.push(...Yi(e, o)), c.length === 0 && c.push(...W4(u, i, o))), c } function $o(u, e, i) { if (u !== Y4 || !qo()) return []; let o; const a = _e[e.code]; return a === void 0 ? (console.error("Key code cannot be converted to scan code: " + e.code), []) : (i ? e.key.length === 1 && (o = e.key.charCodeAt(0) & 65535 | a << 16) : o = a << 16, o === void 0 ? [] : [w.fromPartial({ win2win_hotkey: o, mode: D4.Translate, down: i, press: !1 })]) } function Yi(u, e) { return u.key ? [w.fromPartial({seq: u.key, mode: D4.Translate, down: e, press: !1})] : [] } class un { constructor(e, i, o, a) { d(this, "_uri"); d(this, "_feedback"); d(this, "_key"); d(this, "_token"); d(this, "_ws"); d(this, "_interval"); d(this, "_keepAlive"); d(this, "_lastRecvMsg"); d(this, "_aliveFailed"); this._uri = e, this._feedback = i, this._key = o, this._token = a, this._keepAlive = lo, this._lastRecvMsg = new Date, this._aliveFailed = !1 } close() { var e; this._interval && (clearInterval(this._interval), this._interval = void 0), (e = this._ws) == null || e.close(), this._ws = void 0 } async start() { if (this._feedback == 0 || !this._uri || !this._token || !this._key) return; const e = new N4(this._uri, !0, "health check"); await e.open(), console.log(new Date + ": Connected to relay server"), this._ws = e; const i = Gu.fromPartial({token: this._token}); e.sendRendezvous({hc: i}), this.startInterval(), await this.msgLoop(), this.close() } startInterval() { this._interval = setInterval(() => { new Date().getTime() - this._lastRecvMsg.getTime() > this._keepAlive * 3 / 2 && (this._aliveFailed = !0) }, so) } async msgLoop() { var e; for (this._lastRecvMsg = new Date; ;) { if (!this._ws) { console.info("HC connection is closed as controlling connection exits"); break } try { const i = await ((e = this._ws) == null ? void 0 : e.next(300)); i && (this._lastRecvMsg = new Date, this.handleMsg(i)) } catch (i) { if (i === "Timeout") { if (this._aliveFailed) { console.error("HC connection is timeout"); break } } else { console.error("An error occurred on health check:", i); break } } } } handleMsg(e) { var i; if (e instanceof Uint8Array) { (i = this._ws) == null || i.sendBytes(new Uint8Array); return } else { const o = e.register_pk_response; o && o.keep_alive > 0 && (this._keepAlive = o.keep_alive * 1e3, console.log("keep_alive: " + this._keepAlive + "ms")) } } } let C4 = [], p4 = "", V4 = [], g4 = [], q4, de = !1; const he = ["text/plain", "text/html", "image/svg+xml", "image/png"]; function fe() { V4 = [], g4 = [], q4 = void 0 } function en(u) { de = u } async function tn() { try { C4 = await navigator.clipboard.read(), C4.length === 0 && (p4 = await navigator.clipboard.readText()) } catch (u) { console.error("Failed to read clipboard items before connection, ", u) } } async function Tt(u) { if (!de) { var e = [], i = ""; for (let o = 0; o < 3; o++) try { e = await navigator.clipboard.read(), e.length === 0 && (i = await navigator.clipboard.readText()); break } catch (a) { if (a.name === "NotAllowedError" && a.message.includes("Document is not focused")) await new Promise(t => setTimeout(t, 300)); else return } e.length === 0 && i === "" || (de = !0, await an(e) ? (C4 = e, await nn(u)) : i !== p4 && (p4 = i, await rn(u))) } } async function an(u) { if (u.length !== C4.length) return !0; for (let e = 0; e < u.length; e++) { const i = u[e], o = C4[e]; if (!await on(i, o)) return !0 } return !1 } async function on(u, e) { if (u.types.length !== e.types.length) return !1; for (let i = 0; i < u.types.length; i++) { if (u.types[i] !== e.types[i]) return !1; if (!he.includes(u.types[i])) continue; const o = await u.getType(u.types[i]), a = await e.getType(e.types[i]); if (o.size !== a.size) return !1; const t = new Uint8Array(await o.arrayBuffer()), s = new Uint8Array(await a.arrayBuffer()); for (let l = 0; l < t.length; l++) if (t[l] !== s[l]) return !1 } return !0 } function jt(u) { switch (u) { case"text/plain": return du.Text; case"text/html": return du.Html; case"image/svg+xml": return du.ImageSvg; case"image/png": return du.ImagePng; default: return du.UNRECOGNIZED } } async function nn(u) { const e = [], i = (await Promise.all(C4.map(async o => { const a = []; for (const t of o.types) { if (!he.includes(t)) continue; const s = await o.getType(t); e.push(t), a.push(new Uint8Array(await s.arrayBuffer())) } return a }))).flat(); e.length !== 0 && $t(i, !0, o => { const a = o.map((t, s) => { let l = !1; t && (l = t.length < p4.length); const E = l && t != null ? t : i[s]; return L.fromPartial({content: E, compress: l, format: jt(e[s])}) }); u.sendMessage(iu.fromPartial({multi_clipboards: gu.fromPartial({clipboards: a})})) }) } async function rn(u) { const e = new TextEncoder().encode(p4); $t(e, !1, i => { let o = !1; i && (o = i.length < p4.length); const a = o && i != null ? i : e; let t = L.fromPartial({content: a, compress: o, format: du.Text}); u.sendMessage(iu.fromPartial({clipboard: t})) }) } function xe(u, e = void 0) { const i = () => { try { Xn(new TextDecoder().decode(u.content)), fe(), e == null || e() } catch (o) { console.error("Failed to copy to clipboard, ", o), document.hasFocus() || (q4 = u) } }; u.compress ? Re(u.content, !1, o => { o && (u.content = o, i()) }) : i() } const P4 = document.createElement("canvas"), te = P4.getContext("2d"); function sn(u, e, i) { if (P4.width = e, P4.height = i, !te) return new Uint8Array(0); const o = te.createImageData(e, i); return o.data.set(u), te.putImageData(o, 0, 0), Uint8Array.from(atob(P4.toDataURL("image/png").split(",")[1]), a => a.charCodeAt(0)) } function ln(u, e = void 0) { fe(); const i = u.clipboards, o = i.filter(a => a.compress).map(a => a.content); Re(o, !0, async a => { var c; let t = 0; for (const C of i) C.compress && (C.content = (c = a[t]) != null ? c : C.content, t++), C.compress = !1; const s = {}; for (const C of i) { const D = he.find(B => C.format === jt(B)); if (D) { const B = new Blob([C.content], {type: D}); s[D] = B } } if (!(s["image/png"] !== void 0)) { for (const C of i) if (C.format === du.ImageRgba) { const D = sn(C.content, C.width, C.height); D.length > 0 && (s["image/png"] = new Blob([D], {type: "image/png"})); break } } if (Object.keys(s).length === 0) return; const E = new ClipboardItem(s); await Nt(i, E, e) }) } async function Nt(u, e, i = void 0) { if (!document.hasFocus()) { V4 = u, g4 = [e]; return } try { await navigator.clipboard.write([e]), fe(), i == null || i() } catch (o) { if (console.error("Failed to write to clipboard, ", o), !document.hasFocus()) { V4 = u, g4 = [e]; return } const a = u.find(t => t.format === du.Text); a && xe(a, i) } } function $i() { Un("info", "Clipboard is synchronized", 2e3) } window.addEventListener("focus", function () { g4.length > 0 ? Nt(V4, g4[0], $i) : q4 && xe(q4, $i) }); class En { constructor({id: e, path: i}) { d(this, "id"); d(this, "path"); d(this, "empty_dirs"); this.id = e, this.path = i, this.empty_dirs = void 0 } } const su = class { constructor({ id: e, remote: i, path: o, show_hidden: a, is_remote: t, is_last_job: s, file_num: l, files: E, conn_id: c, total_size: C, finished_size: D, transferred: B, enable_overwrite_detection: F, file_confirmed: y, file_skipped: S, file_is_waiting: g, is_dir: U }) { d(this, "id"); d(this, "remote"); d(this, "path"); d(this, "show_hidden"); d(this, "is_remote"); d(this, "is_last_job"); d(this, "file_num"); d(this, "files"); d(this, "conn_id"); d(this, "total_size"); d(this, "finished_size"); d(this, "transferred"); d(this, "lastTransferred"); d(this, "enable_overwrite_detection"); d(this, "file_confirmed"); d(this, "file_skipped"); d(this, "file_is_waiting"); d(this, "default_overwrite_strategy"); d(this, "is_dir"); d(this, "stream"); d(this, "writer"); d(this, "zip"); d(this, "currentData"); d(this, "fileHandles"); d(this, "currentReader"); d(this, "write", async (e, i) => { var t; if (e.id !== this.id) throw new Error("Wrong id"); const o = e.file_num; if (o >= this.files.length) throw new Error("Wrong file number"); const a = this.is_dir; if (o !== this.file_num || a && !this.zip || !a && !this.writer) if (a) { if (this.zip || (this.zip = new Oe), this.currentData) { const s = this.files[this.file_num]; this.zip.file(s.name, this.currentData), this.currentData = void 0 } this.file_num = e.file_num } else { this.writer && await this.writer.close(), this.stream && (this.stream = void 0), this.file_num = e.file_num; const s = this.files[o], l = su.join(this.path, s.name); this.stream = streamSaver.createWriteStream(l, {size: s.size}), this.writer = (t = this.stream) == null ? void 0 : t.getWriter() } if (e.compressed) { const s = await ea(e.data); if (!s) throw new Error("Failed to decompress"); if (a) this.currentData ? this.currentData = new Uint8Array([...this.currentData, ...s]) : this.currentData = s; else { if (!this.writer) throw new Error("file is None"); try { await this.writer.write(s) } catch (l) { throw ce(this.id, "write failed", this.file_num), i(), l } } this.finished_size += s.length } else { if (a) this.currentData ? this.currentData = new Uint8Array([...this.currentData, ...e.data]) : this.currentData = e.data; else { if (!this.writer) throw new Error("file is None"); try { await this.writer.write(e.data) } catch (s) { throw ce(this.id, "write failed", this.file_num), i(), s } } this.finished_size += e.data.length } this.transferred += e.data.length }); d(this, "read", async e => { var c; let i = this.file_num; if (i >= this.files.length) { (c = this.currentReader) == null || c.cancel(), this.currentReader = void 0; return } let o = this.files[i]; if (!this.currentReader) { if (!this.fileHandles || !this.fileHandles[i]) throw new Error("file is None"); let D = (await this.fileHandles[i].getFile()).stream(); this.currentReader = D.getReader({mode: "byob"}), this.file_confirmed = !1, this.file_is_waiting = !1 } if (this.enable_overwrite_detection && !this.file_confirmed) { this.file_is_waiting || (this.send_current_digest(e), this.file_is_waiting = !0); return } const a = 128 * 1024; let t = new ArrayBuffer(a), s = !1, l = 0; for (; l < t.byteLength;) { const {value: C, done: D} = await this.currentReader.read(new Uint8Array(t, l, t.byteLength - l)); if (!C) { this.file_num += 1, this.file_confirmed = !1, this.file_is_waiting = !1, this.currentReader = void 0, t = new ArrayBuffer(0); break } if (l += C.byteLength, t = C.buffer, D) break } let E = new Uint8Array(t, 0, l); if (l === 0) this.file_num += 1, this.currentReader = void 0, this.file_confirmed = !1, this.file_is_waiting = !1; else { if (this.finished_size += l, !yn(su.join(this.path, o.name))) { const C = await ua(new Uint8Array(t, 0, l)); if (C) C.length < l && (E = new Uint8Array(C), s = !0); else throw new Error("Failed to compress") } this.transferred += l } return Su.fromPartial({id: this.id, file_num: i, data: E, compressed: s}) }); d(this, "send_current_digest", async e => { if (!this.fileHandles || !this.fileHandles[this.file_num]) throw new Error("file is None"); let i = await this.fileHandles[this.file_num].getFile(); if (!i) throw new Error("file is None"); let o = Math.floor(i.lastModified / 1e3), a = i.size, t = wu.fromPartial({id: this.id, file_num: this.file_num, last_modified: o, file_size: a}), s = nu.fromPartial({digest: t}), l = iu.fromPartial({file_response: s}); e(l) }); d(this, "read_digest", e => { let i = this.files[e.file_num], o = su.join(this.path, i.name), a = this.default_overwrite_strategy; if (a !== void 0) { let t = cu.fromPartial({ id: e.id, file_num: e.file_num, offset_blk: a ? 0 : void 0, skip: a ? void 0 : !0 }); return this.confirm(t), su.new_send_confirm(t) } else { bn(e.id, e.file_num, o, !0, e.is_identical); return } }); d(this, "write_digest", e => { let i = cu.fromPartial({id: e.id, file_num: e.file_num, offset_blk: 0}); return this.confirm(i), su.new_send_confirm(i) }); d(this, "write_done", (e, i, o) => { if (this.writer) { this.writer.close(); return } if (this.zip || (this.zip = new Oe), this.currentData) { const t = this.files[this.file_num]; this.zip.file(t.name, this.currentData), this.currentData = void 0 } if (i != null) { const t = i(); if (t != null) if (t.empty_dirs != null) for (let s of t.empty_dirs) { var a = s.substring(t.path.length + 1); _4() ? a = a.replace(/\//g, "\\") : a = a.replace(/\\/g, "/"), this.zip.folder(a) } else { setTimeout(() => { this.write_done(e, i, o) }, 1e3); return } } this.zip.generateAsync({type: "blob"}).then(t => { na.exports.saveAs(t, `${this.path}.zip`) }), o() }); d(this, "confirm", e => (this.file_num !== e.file_num ? console.log("file num truncated, ignoring") : e.skip !== void 0 ? e.skip ? this.set_file_skipped() : this.set_file_confirmed(!0) : e.offset_blk !== void 0 && this.set_file_confirmed(!0), !0)); d(this, "set_file_skipped", () => { var e; (e = this.writer) == null || e.abort(), this.writer = void 0, this.stream = void 0, this.set_file_confirmed(!1), this.set_file_is_waiting(!1), this.file_num += 1, this.file_skipped = !0 }); d(this, "set_file_confirmed", e => { this.file_confirmed = e, this.file_skipped = !1 }); d(this, "set_file_is_waiting", e => { this.file_is_waiting = e }); d(this, "update_job_status", e => { if (e <= 0) return; let i = Math.floor((this.transferred - this.lastTransferred) / (e * 1 / 1e3)); this.lastTransferred = this.transferred; let o = this.file_num - 1; this.job_progress(this.id, o, i, this.finished_size) }); d(this, "job_progress", (e, i, o, a) => { m("job_progress", { id: e.toString(), file_num: i.toString(), speed: o.toString(), finished_size: a.toString() }) }); d(this, "job_skipped", () => this.file_skipped && this.files.length === 1); d(this, "job_error", () => { if (this.job_skipped()) return "skipped" }); d(this, "job_completed", () => !this.enable_overwrite_detection || !this.file_confirmed && !this.file_is_waiting); d(this, "remove_download_file", () => { if (this.writer) try { this.writer.abort() } catch { } this.writer = void 0, this.stream = void 0, this.currentData = void 0, this.zip = void 0 }); this.id = e, this.remote = i, this.path = o, this.show_hidden = a, this.is_remote = t, this.is_last_job = s, this.file_num = l, this.files = E, this.conn_id = c, this.total_size = C, this.finished_size = D, this.transferred = B, this.lastTransferred = 0, this.enable_overwrite_detection = F, this.file_confirmed = y, this.file_skipped = S, this.file_is_waiting = g, this.is_dir = U } }; let lu = su; d(lu, "newWrite", (e, i, o, a, t, s, l, E, c) => { let C = l.reduce((B, F) => B + F.size, 0); return new su({ id: e, remote: i, path: o, file_num: a, show_hidden: t, is_remote: s, files: l, total_size: C, enable_overwrite_detection: E, is_dir: c, is_last_job: !1, conn_id: 0, finished_size: 0, transferred: 0, file_confirmed: !1, file_skipped: !1, file_is_waiting: !1 }) }), d(lu, "newRead", (e, i, o, a, t, s, l, E, c) => { let C = l.reduce((B, F) => B + F.size, 0), D = new su({ id: e, remote: i, path: o, file_num: a, show_hidden: t, is_remote: s, files: l, total_size: C, enable_overwrite_detection: E, is_dir: !1, is_last_job: !1, conn_id: 0, finished_size: 0, transferred: 0, file_confirmed: !1, file_skipped: !1, file_is_waiting: !1 }); return D.fileHandles = c, D }), d(lu, "new_send_confirm", e => iu.fromPartial({file_action: P.fromPartial({send_confirm: e})})), d(lu, "join", (e, i) => i === "" ? e : e.endsWith("/") || e.endsWith("\\") ? e + i : _4() ? e + "\\" + i : e + "/" + i); const dn = (u, e, i, o) => { let a = Pu.fromPartial({id: u, path: e, include_hidden: o, file_num: i}); return P.fromPartial({send: a}) }, ut = (u, e, i, o) => { if (!o) return; let a = ju.fromPartial({id: u, path: e, file_num: i}); return P.fromPartial({remove_file: a}) }, cn = (u, e, i) => { let o = xu.fromPartial({id: u, path: e, include_hidden: i}); return P.fromPartial({all_files: o}) }, Cn = (u, e) => { let i = Nu.fromPartial({id: u, path: e}); return P.fromPartial({create: i}) }, pn = u => { let e = bu.fromPartial({id: u}); return P.fromPartial({cancel: e}) }, Dn = (u, e) => { let i = Tu.fromPartial({id: u, path: e, recursive: !0}); return P.fromPartial({remove_dir: i}) }, Bn = (u, e, i) => { let o = yu.fromPartial({id: u, path: e, new_name: i}); return P.fromPartial({rename: o}) }, mn = (u, e, i, o, a) => { let t = Iu.fromPartial({id: u, path: e, file_num: i, files: o, total_size: a}); return P.fromPartial({receive: t}) }, An = u => { let e = nu.fromPartial({block: u}); return iu.fromPartial({file_response: e}) }, et = (u, e, i) => { let o = nu.fromPartial({error: zu.fromPartial({id: u, error: e, file_num: i})}); return iu.fromPartial({file_response: o}) }, Fn = (u, e) => { let i = nu.fromPartial({done: Ru.fromPartial({id: u, file_num: e})}); return iu.fromPartial({file_response: i}) }, _n = (u, e) => { let i = fu.fromPartial({path: u, include_hidden: e}); return P.fromPartial({read_empty_dirs: i}) }, it = (u, e, i, o, a) => { a ? m("update_folder_files", {info: vn(u, e, a)}) : m("file_dir", {is_local: "false", value: kn(u, i, e)}) }, vn = (u, e, i) => { let o = { id: u, entries: e.map(a => ({name: a.name, type: a.entry_type, time: a.modified_time, size: a.size})), total_size: e.reduce((a, t) => a + t.size, 0) }; return i && (o.num_entries = e.length, delete o.entries), JSON.stringify(o) }, kn = (u, e, i) => { let o = { id: u, path: e, entries: i.map(a => ({entry_type: a.entry_type, name: a.name, size: a.size, modified_time: a.modified_time})) }; return JSON.stringify(o) }, ce = (u, e, i) => { m("job_error", {id: u.toString(), err: e, file_num: i.toString()}) }, gn = (u, e) => { m("job_done", {id: u.toString(), file_num: e.toString()}) }; var i0 = 0; const hn = async (u, e) => { try { if (u) { const i = await window.showDirectoryPicker(); let o = {name: i.name, size: 0, entry_type: 2, modified_time: 0}; i0++, e(i0, i), m("selected_files", {handleIndex: i0, file: o}) } else { const i = {multiple: !0}, o = await window.showOpenFilePicker(i); for (const a of o) { const t = await a.getFile(); let s = {name: t.name, size: t.size, entry_type: 4, modified_time: Math.floor(t.lastModified / 1e3)}; i0++, e(i0, a), m("selected_files", {handleIndex: i0, file: s}) } } } catch (i) { console.error("Failed to choose file:", i) } }, fn = async (u, e) => { let i = []; for (let o of u) if (!o.is_last_job) try { let a = await o.read(e); if (a) e(An(a)); else if (o.job_completed()) { i.push(o.id); let t = o.job_error(); e(t ? et(o.id, t, o.file_num) : Fn(o.id, o.file_num)) } } catch (a) { e(et(o.id, (a != null ? a : "read failed").toString(), o.file_num)) } return i }, xn = u => { let e = u.lastIndexOf("."); return e >= 0 ? u.substring(e + 1) : "" }, yn = u => { let e = xn(u); return e === "xz" || e === "gz" || e === "zip" || e === "7z" || e === "rar" || e === "bz2" || e === "tgz" || e === "png" || e === "jpg" }, bn = (u, e, i, o, a) => { m("override_file_confirm", { id: u.toString(), file_num: e.toString(), read_path: i, is_upload: o.toString(), is_identical: a.toString() }) }, K4 = (u, e) => u === "" ? e : lu.join(u, e), Ot = async (u, e) => { const i = []; let o = []; for await(const a of u.values()) if (a.kind === "file") i.push(a.getFile().then(t => { o.push({ entry: W.fromPartial({ name: K4(e, t.name), size: t.size, entry_type: dt.File, modified_time: Math.floor(t.lastModified / 1e3) }), handle: a }) })); else if (a.kind === "directory") { let t = K4(e, a.name); const s = await Ot(a, t); o = o.concat(s) } return await Promise.all(i), o }, Mt = async (u, e) => { let i = [], o = !0; for await(const a of u.values()) { if (a.kind === "directory") { let t = K4(e, a.name); const s = await Mt(a, t); i = i.concat(s) } o = !1 } return o && i.push(K4(e, "")), i }, Ut = 21116, defaultIdServerPort = 21116, Lt = "rs-ny.rustdesk.com", tt = 100, w4 = "trust-this-device"; class Wt { constructor() { d(this, "_msgs"); d(this, "_ws"); d(this, "_interval"); d(this, "_updateInterval"); d(this, "_id"); d(this, "_otherServer"); d(this, "_hash"); d(this, "_msgbox"); d(this, "_draw"); d(this, "_peerInfo"); d(this, "_firstFrame"); d(this, "_frameCount"); d(this, "_videoFormat"); d(this, "_password"); d(this, "_presetPassword"); d(this, "_sharedPassword"); d(this, "_passwordSource"); d(this, "_options"); d(this, "_fpsCalc"); d(this, "_updateTs"); d(this, "_serverPerms"); d(this, "_elevationRequested"); d(this, "_supportedEncoding"); d(this, "_i444"); d(this, "_healthCheck"); d(this, "_sessionId"); d(this, "_isFileTransfer"); d(this, "_readJobs"); d(this, "_writeJobs"); d(this, "_removeJobs"); d(this, "_readRemoteEmptyDirsJobs"); d(this, "_last_update_jobs_ms"); d(this, "_fileHandles"); d(this, "_ftTimer"); d(this, "_restartingRemoteDevice"); d(this, "_enableTrustedDevices"); d(this, "_lastChangeDisplay"); d(this, "_lastSendFps"); d(this, "_videoQueue"); d(this, "_decodingVideo"); d(this, "_selectedWindowsSessionId"); d(this, "enableEmptyDirs", () => { var e; return Q((e = this._peerInfo) == null ? void 0 : e.version) >= Q("1.3.3") }); d(this, "enableOverwriteDetection", () => { var e; return Q((e = this._peerInfo) == null ? void 0 : e.version) >= Q("1.1.10") }); this._msgbox = Vt, this._draw = pe, this._msgs = [], this._id = "", this._frameCount = {}, this._fpsCalc = { videoTestSpeed: [0, 0], skipBegining: 0, fps: void 0 }, this._updateTs = new Date().getTime(), this._serverPerms = { keyboardEnabled: !0, fileTransferEnabled: !0, clipboardEnabled: !0 }, this._elevationRequested = !1, this._supportedEncoding = G.fromPartial({}), this._sessionId = 0, this._isFileTransfer = !1, this._readJobs = [], this._writeJobs = [], this._removeJobs = {}, this._readRemoteEmptyDirsJobs = [], this._last_update_jobs_ms = 0, this._fileHandles = {}, this._restartingRemoteDevice = !1, this._enableTrustedDevices = !1, this._passwordSource = {type: "Undefined"}, this._videoQueue = [], this._decodingVideo = !1 } getPeerPlatform() { var e, i; return (i = (e = this._peerInfo) == null ? void 0 : e.platform) != null ? i : "" } isSupportVirtualDisplay() { if (!this._peerInfo || !this._peerInfo.platform_additions) return !1; try { const e = JSON.parse(this._peerInfo.platform_additions), i = e.is_installed, o = e.idd_impl; return i && this._peerInfo.platform == "Windows" && (o == "rustdesk_idd" || o == "amyuni_idd") } catch (e) { return console.error("Failed to check virtual display support, ", e), !1 } } sendMessage(e) { var i; (i = this._ws) == null || i.sendMessage(e) } handleRelayId(e) { return e.endsWith("\\r") || e.endsWith("/r") ? e.substring(0, e.length - 2) : e } setRemoteId(e) { var o, a, t, s, l; let i = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); if (i == 0 && (i = 1), this._sessionId = i, this._restartingRemoteDevice = !1, this._id = e, e.includes("@")) { const E = e.split("@"), c = E[0], C = ((o = E[1]) != null ? o : "").split("?"), D = (a = C[0]) != null ? a : "", B = (t = C[1]) != null ? t : "", F = D == ee ? Xi : (s = B.split("&").reduce((S, g) => { const U = g.indexOf("="); if (U != -1) { const f4 = g.substring(0, U).toLowerCase(), x4 = g.substring(U + 1); S[f4] = x4 } return S }, {}).key) != null ? s : "", y = this.handleRelayId(c); this._otherServer = {realId: y, server: D, key: F}, this._id = `${y}@${D}` } else this._id = this.handleRelayId(e); if (this._options = (l = Cu()[this._id]) != null ? l : this.getUserDefaultToggleOptions(), this._otherServer && !this._otherServer.key) { const E = this.getOption("other-server-key"); E && (this._otherServer.key = E) } } setSessionInfo(e) { this._isFileTransfer = e.isFileTransfer, e.is_shared_password ? this._sharedPassword = e.password : this._presetPassword = e.password } async start() { try { tn(), await this._start() } catch (e) { this.msgbox("error", "Connection Error", e.type == "close" ? "Reset by the peer" : String(e)) } } getId() { var e, i; return (i = (e = this._otherServer) == null ? void 0 : e.realId) != null ? i : this._id } async _start() { var F, y; let e = this.getId(), i = To(), o = Pt(), a = (F = this._otherServer) == null ? void 0 : F.server; this._otherServer && (i = this._otherServer.key, o = ""); let t = ""; a ? a == ee ? t = I4(Lt) : t = I4(a) : t = R4(), this._options || (this._options = (y = Cu()[this._id]) != null ? y : this.getUserDefaultToggleOptions()), this._interval = setInterval(() => { var S; for (; this._msgs.length;) (S = this._ws) == null || S.sendMessage(this._msgs[0]), this._msgs.splice(0, 1) }, 1); const s = new N4(t, !0, "rendezvous"); this._ws = s, console.log(new Date + ": Connecting to rendezvous server: " + t + ", for " + e), await s.open(), console.log(new Date + ": Connected to rendezvous server"); const l = this._isFileTransfer ? ne.FILE_TRANSFER : ne.DEFAULT_CONN, E = pt.SYMMETRIC, c = Ku.fromPartial({id: e, licence_key: i, conn_type: l, nat_type: E, token: o, version: se}); s.sendRendezvous({punch_hole_request: c}); const C = await s.next(); s.close(), console.log(new Date + ": Got relay response"); const D = C.punch_hole_response, B = C.relay_response; if (D) { if (D != null && D.other_failure) { this.msgbox("error", "Error", D == null ? void 0 : D.other_failure); return } if (D.failure != Z0.UNRECOGNIZED) switch (D == null ? void 0 : D.failure) { case Z0.ID_NOT_EXIST: this.msgbox("error", "Error", "ID does not exist"); break; case Z0.OFFLINE: this.msgbox("error", "Error", "Remote desktop is offline"); break; case Z0.LICENSE_MISMATCH: this.msgbox("error", "Error", "Key mismatch"); break; case Z0.LICENSE_OVERUSE: this.msgbox("error", "Error", "Key overuse"); break } } else if (B) { if (!B.version) { this.msgbox("error", "Error", "Remote version is low, not support web"); return } this._healthCheck = new un(t, B.feedback, i, o), this._healthCheck.start(), await this.connectRelay(B, i) } } async connectRelay(e, i) { var c, C; const o = e.pk; let a = e.relay_server; a ? a = I4(a, !0, 2) : a = R4(!0); const t = e.uuid; console.log(new Date + ": Connecting to relay server: " + a); const s = new N4(a, !1, "relay"); await s.open(), console.log(new Date + ": Connected to relay server"), this._ws = s; const l = Hu.fromPartial({licence_key: i, uuid: t}); s.sendRendezvous({request_relay: l}); const E = await this.secure(o, i) || !1; m("connection_ready", {secure: E, direct: !1}), this._updateInterval = setInterval(() => { this.updateStatus() }, 1e3), (c = this._ws) == null || c.on("message", this.msgHandler.bind(this)), (C = this._ws) == null || C.on("status_change", this.onStatusChange.bind(this)) } async secure(e, i) { var F, y, S, g, U, f4, x4, Ie; if (e) { try { if (e = await rt(e, i || Xi), e) { const T = oe.decode(e); T.id == this.getId() && (e = T.pk) } (e == null ? void 0 : e.length) != 32 && (e = void 0) } catch (T) { console.error("Failed to verify id pk, ", T), e = void 0 } e || console.error("Handshake failed: invalid public key from rendezvous server") } if (!e) { const T = K.fromPartial({}); (F = this._ws) == null || F.sendMessage({public_key: T}); return } const o = await ((y = this._ws) == null ? void 0 : y.next()); let a = o == null ? void 0 : o.signed_id; if (!a) { console.error("Handshake failed: invalid message type"); const T = K.fromPartial({}); (S = this._ws) == null || S.sendMessage({public_key: T}); return } try { a = await rt(a.id, Uint8Array.from(e)) } catch (T) { console.error("Failed to verify signed id pk, ", T), console.error("pk mismatch, fall back to non-secure"); const ia = K.fromPartial({}); (g = this._ws) == null || g.sendMessage({public_key: ia}); return } const t = oe.decode(a), s = t.id, l = t.pk; if (s != this.getId()) { console.error("Handshake failed: sign failure"); const T = K.fromPartial({}); (U = this._ws) == null || U.sendMessage({public_key: T}); return } if (l.length != 32) { console.error("Handshake failed: invalid public box key length from peer"); const T = K.fromPartial({}); (f4 = this._ws) == null || f4.sendMessage({public_key: T}); return } const [E, c] = Wn(), C = Vn(), D = qn(C, l, E), B = K.fromPartial({asymmetric_value: c, symmetric_value: D}); return (x4 = this._ws) == null || x4.sendMessage({public_key: B}), (Ie = this._ws) == null || Ie.setSecretKey(C), console.log("secured"), !0 } async msgHandler(e) { var i; if (this._ws) { if (e != null && e.hash) await this.handleHash(e.hash); else if (e != null && e.test_delay) { const o = e == null ? void 0 : e.test_delay; o.from_client || (m("update_quality_status", { delay: `${o.last_delay}`, target_bitrate: `${o.target_bitrate}` }), (i = this._ws) == null || i.sendMessage({test_delay: o})) } else if (e != null && e.login_response) this.handleLoginResponse(e == null ? void 0 : e.login_response); else if (e != null && e.video_frame) this.handleVideoFrame(e == null ? void 0 : e.video_frame); else if (e != null && e.clipboard) xe(e == null ? void 0 : e.clipboard); else if (e != null && e.multi_clipboards) ln(e == null ? void 0 : e.multi_clipboards); else if (e != null && e.cursor_data) { const o = e == null ? void 0 : e.cursor_data; Re(o.colors, !1, a => { a && (o.colors = a, m("cursor_data", o)) }) } else if (e != null && e.cursor_id) m("cursor_id", {id: e == null ? void 0 : e.cursor_id}); else if (e != null && e.cursor_position) m("cursor_position", e == null ? void 0 : e.cursor_position); else if (e != null && e.misc) this.handleMisc(e == null ? void 0 : e.misc); else if (e != null && e.audio_frame) Zn(e == null ? void 0 : e.audio_frame.data); else if (e != null && e.message_box) this.handleMsgBox(e == null ? void 0 : e.message_box); else if (e != null && e.peer_info) this.handleSyncPeerInfo(e.peer_info); else if (e.file_response) await this.handleFileResponse(e.file_response); else if (e.file_action) { const o = e.file_action; await this.handleFileAction(o) } } } onStatusChange(e) { if (e === "" || e === "open") return; if (this._restartingRemoteDevice) { this.msgbox("restarting", "Restarting remote device", "remote_restarting_tip", ""); return } if (e instanceof CloseEvent && e.code == 1e3 || !this._ws) return; e && console.error("msgLoop error: ", e); const i = "Connection Error"; let o = ""; if (e === "Timeout") o = "Connection timeout"; else if (e instanceof CloseEvent) { let a = `code: ${e.code}`; e.reason && (a += `, reason: ${e.reason}`), o = `Connection closed, ${a}` } else e instanceof Error ? o = e.message : typeof e.toString == "function" ? o = e.toString() : o = ""; this.msgbox("error", i, o, "") } enterOrLeave(e) { e === !1 ? (Jo(), Ee(), en(!1)) : (Ce(), Tt(this)) } makeDisplaysMsg(e) { let i = []; return e.forEach(o => { let a = {}; a.x = o.x, a.y = o.y, a.width = o.width, a.height = o.height, a.cursor_embedded = o.cursor_embedded ? 1 : 0, o.original_resolution && (a.original_width = o.original_resolution.width, a.original_height = o.original_resolution.height), a.scale = Math.floor(o.scale * 100), i.push(a) }), JSON.stringify(i) } handleSyncPeerInfo(e) { this._peerInfo && (this._peerInfo.displays = e.displays), m("sync_peer_info", {displays: this.makeDisplaysMsg(e.displays)}), m("sync_platform_additions", {platform_additions: e.platform_additions}) } handleMsgBox(e) { let i = e.link; i in Hi ? i = Hi[i] : (console.warn("Message box ignore link " + i + " for security"), i = ""), this.msgbox(e.msgtype, e.title, e.text, i) } updateStatus() { var s, l; const e = new Date().getTime(), i = e - this._updateTs; if (i < 1e3) return; this._updateTs = e; const o = ((s = this._ws) == null ? void 0 : s.getRecvDataCount()) || 0; (l = this._ws) == null || l.resetRecvDataCount(); const a = `${(o / 1024 / i * 1e3).toFixed(2)} kb/s`, t = {}; for (const E in this._frameCount) if (this._frameCount.hasOwnProperty(E)) { const c = this._frameCount[E]; t[E] = Math.floor(c / (i / 1e3)) } this._frameCount = {}, m("update_quality_status", {speed: a, fps: JSON.stringify(t)}) } handleLoginResponse(e) { const i = { [Ha]: { msgtype: "error", title: "Login Error", text: "Login screen using Wayland is not supported", link: "https://rustdesk.com/docs/en/manual/linux/#login-screen", try_again: !0 }, [Ta]: {msgtype: "session-login", title: "", text: "", link: "", try_again: !0}, [ja]: {msgtype: "session-re-login", title: "", text: "", link: "", try_again: !0}, [Na]: { msgtype: "info-nocancel", title: "another_user_login_title_tip", text: "another_user_login_text_tip", link: "", try_again: !1 }, [Oa]: { msgtype: "info-nocancel", title: "xorg_not_found_title_tip", text: "xorg_not_found_text_tip", link: "https://rustdesk.com/docs/en/manual/linux/#login-screen", try_again: !0 }, [Ma]: { msgtype: "info-nocancel", title: "no_desktop_title_tip", text: "no_desktop_text_tip", link: "https://rustdesk.com/docs/en/manual/linux/#login-screen", try_again: !0 }, [Ua]: {msgtype: "session-login-password", title: "", text: "", link: "", try_again: !0}, [La]: {msgtype: "session-login-re-password", title: "", text: "", link: "", try_again: !0}, [Ka]: { msgtype: "wait-remote-accept-nook", title: "Prompt", text: "Please wait for the remote side to accept your session request...", link: "", try_again: !0 } }, o = e.error; if (o) if (o == Ki && (this._enableTrustedDevices = e.enable_trusted_devices), o == Wa && (this._password = void 0, this.msgbox("input-password", "Password Required", "", "")), o == Va) this._password = void 0, this.msgbox("re-input-password", o, "Do you want to enter again?"); else if (o == qa || o == Ki) this.getOption(w4) == "Y" && this.setOption(w4, void 0), this.msgbox("input-2fa", o, ""); else if (o in i) { const a = i[o]; this.msgbox(a.msgtype, a.title, a.text, a.link) } else o.includes(Ja) ? this.msgbox("error", "Login Error", o, Bt) : this.msgbox("error", "Login Error", o); else e.peer_info && (this._firstFrame = !1, this.handlePeerInfo(e.peer_info)) } enableTrustedDevices() { return this._enableTrustedDevices } msgbox(e, i, o, a = "") { var t; (t = this._msgbox) == null || t.call(this, e, i, o, a) } cancelMsgbox(e) { m("cancel_msgbox", {tag: e}) } draw(e, i) { pe(e, new Uint8Array(i.data)) } close() { var e, i; this._msgs = [], this._interval && (clearInterval(this._interval), this._interval = void 0), this._updateInterval && (clearInterval(this._updateInterval), this._updateInterval = void 0), this._ftTimer && (clearTimeout(this._ftTimer), this._ftTimer = void 0), (e = this._ws) == null || e.close(), this._ws = void 0, (i = this._healthCheck) == null || i.close(), this._healthCheck = void 0, this._readJobs = [], this._writeJobs = [], this._removeJobs = {}, this._fileHandles = {}, this._readRemoteEmptyDirsJobs = [], Ee(), this._lastChangeDisplay = void 0, this._lastSendFps = void 0, this._videoQueue = [], this._decodingVideo = !1 } refresh() { var i; const e = f.fromPartial({refresh_video: !0}); (i = this._ws) == null || i.sendMessage({misc: e}) } setMsgbox(e) { this._msgbox = e } setDraw(e) { this._draw = e } async handleHash(e) { this._hash = e; let i = this._password; (!i || i.length === 0) && this._presetPassword && (i = Zu([this._presetPassword, e.salt]), this._passwordSource = {type: "Undefined"}); let o = this._sharedPassword; if (this._sharedPassword = void 0, o && (i = Zu([o, e.salt]), this._passwordSource = { type: "SharedAb", value: o }), !i || i.length === 0) { const l = this.getOption("password"); typeof l == "string" && l.length > 0 && (i = c4(l), this._passwordSource = {type: "Undefined"}) } if (!i || i.length === 0) { let l = Fe("access_token"), E = await xt(); if (l && l === E.access_token) { let c = E.ab_entries.find(C => fo(C)); if (c) { let C = c.peers.find(D => D.id == this._id); if (C) { let D = c4(C.hash); D.length > 0 && (i = D, this._passwordSource = {type: "PersonalAb", value: D}) } } } } this._password = i; let a; !i || i.length === 0 ? (a = new Uint8Array(0), this.msgbox("input-password", "Password Required", "")) : a = Zu([i, e.challenge]); let t = this.getOption("os-username") || "", s = this.getOption("os-password") || ""; this._sendLoginMessage({os_login: {username: t, password: s}, password: a}) } handle_login_from_ui(e, i, o, a) { let t; if (o === "") { let l = this._password; if (!l || l.length === 0) { const E = this.getOption("password"); typeof E == "string" && E.length > 0 && (l = c4(E), this._passwordSource = {type: "Undefined"}) } t = l } else this._passwordSource = {type: "Undefined"}, t = Zu([o, this._hash.salt]), this.setRemember(a); this._password = t; let s = Zu([t != null ? t : Uint8Array.from([]), this._hash.challenge]); this._sendLoginMessage({os_login: {username: e, password: i}, password: s}) } changePreferCodec() { var a; const e = this.getSupportedDecoding(), i = z.fromPartial({supported_decoding: e}), o = f.fromPartial({option: i}); (a = this._ws) == null || a.sendMessage({misc: o}) } async reconnect() { this.close(), await this.start() } _getHwid(e = void 0) { return (e != null ? e : this.getOption(w4) == "Y") ? Ro() : new Uint8Array } _sendLoginMessage(e) { var E; const i = this._otherServer ? `${O4()}@${R4()}` : O4(), o = jo(); let a = wt(); if (o) try { const c = JSON.parse(o); c.name && (a = c.name) } catch (c) { console.error("Failed to get user info, ", c) } let t; if (this._isFileTransfer) { let c = this.getOption("remote_dir"), C = this.getOption("remote_show_hidden") === "Y"; t = Fu.fromPartial({dir: c, show_hidden: C}) } const s = this._getHwid(), l = H.fromPartial({ username: this.getId(), my_id: i, my_name: a, session_id: this._sessionId, password: e.password, option: this.getOptionMessage(), video_ack_required: !0, os_login: e.os_login, version: se, my_platform: eo, file_transfer: t, hwid: s }); (E = this._ws) == null || E.sendMessage({login_request: l}) } getOptionMessage() { if (this._isFileTransfer) return; let e = 0; const i = z.fromPartial({}), o = this.getImageQuality(), a = this.getImageQualityEnum(o, !0), t = x.Yes; if (a != null) i.image_quality = a, e += 1; else if (o === "custom") { let l = 50, E = this.getOption("custom_image_quality"); if (E) try { l = parseInt(E) } catch { } i.custom_image_quality = l << 8, e += 1; let c = this.getOption("custom-fps"); if (c) try { i.custom_fps = parseInt(c), this._lastSendFps = i.custom_fps, e += 1 } catch { } } const s = this.getOption("view-only"); return s && (i.disable_keyboard = t), (s || this._options["show-remote-cursor"]) && (i.show_remote_cursor = t, e += 1), this._options["follow-remote-cursor"] && (i.follow_remote_cursor = t, e += 1), this._options["follow-remote-window"] && (i.follow_remote_window = t, e += 1), !s && this._options["lock-after-session-end"] && (i.lock_after_session_end = t, e += 1), this._options["disable-audio"] && (i.disable_audio = t, e += 1), (s || this._options["disable-clipboard"]) && (i.disable_clipboard = t, e += 1), i.supported_decoding = this.getSupportedDecoding(), e += 1, e > 0 ? i : void 0 } sendVideoReceived() { var i; const e = f.fromPartial({video_received: !0}); (i = this._ws) == null || i.sendMessage({misc: e}) } getCodecFormat(e) { return e.vp9s ? "VP9" : e.vp8s ? "VP8" : e.av1s ? "AV1" : e.h264s ? "H264" : e.h265s ? "H265" : "Unknown" } getSupportedEncoding() { return this._supportedEncoding } getSupportedDecoding() { let e = this.getOption("codec-preference"); e == "vp8" ? e = Au.VP8 : e == "vp9" ? e = Au.VP9 : e == "av1" ? e = Au.AV1 : e == "h264" ? e = Au.H264 : e == "h265" ? e = Au.H265 : e = Au.Auto; let i = this.getOption("i444") == "Y" ? ae.I444 : ae.I420; return Vu.fromPartial({ ability_vp8: 1, ability_vp9: 1, ability_av1: 1, ability_h264: 1, ability_h265: 1, prefer: e, prefer_chroma: i, i444: J.fromPartial({vp9: !0, av1: !0}) }) } getAlternativeCodecs() { const e = this.getSupportedEncoding(), i = this.getSupportedDecoding(); return JSON.stringify({ vp8: e.vp8 && i.ability_vp8 == 1, av1: e.av1 && i.ability_av1 == 1, h264: e.h264 && i.ability_h264 == 1, h265: e.h265 && i.ability_h265 == 1 }) } fpsCalculate(e, i) { if (e) { this._fpsCalc.skipBegining = 0, this._fpsCalc.videoTestSpeed = [0, 0]; return } if (this._fpsCalc.skipBegining < 3) { this._fpsCalc.skipBegining += 1; return } this._fpsCalc.videoTestSpeed[1] += i, this._fpsCalc.videoTestSpeed[0] += 1, this._fpsCalc.videoTestSpeed[0] % 10 == 0 && i > 0 && (this._fpsCalc.fps = Math.floor(this._fpsCalc.videoTestSpeed[0] * 1e3 / this._fpsCalc.videoTestSpeed[1]), console.log("max decode fps: " + this._fpsCalc.fps)), this._fpsCalc.videoTestSpeed[0] >= 30 && (this._fpsCalc.videoTestSpeed = [0, 0]) } handleVideoFrame(e) { if (!this._firstFrame) { this.msgbox("", "", ""), this._firstFrame = !0, this.sendToggleVirtualDisplayMsg(), this.sendTogglePrivacyModeMsg(), Ce(); const i = 0; for (let o = 0; o < i; o++) this.sendVideoReceived(); console.log(`send ${i} video received in advance for high fps`) } this._videoQueue.push(e), this._decodingVideo || this.processVideoQueue() } async processVideoQueue() { this._decodingVideo = !0; try { for (; this._videoQueue.length > 0;) await this.handleOneVideoFrame(this._videoQueue.shift()) } catch (e) { console.error("deal video queue failed", e) } this._decodingVideo = !1 } async handleOneVideoFrame(e) { const i = this.getCodecFormat(e), o = this._videoFormat != i; o && (this._videoFormat = i, m("update_quality_status", {codec_format: i})); var a = new Date().getTime(), t = 0, s = void 0; if (e.vp8s) t = 0, s = e.vp8s; else if (e.vp9s) t = 1, s = e.vp9s; else if (e.av1s) t = 2, s = e.av1s; else if (e.h264s) t = 3, s = e.h264s; else if (e.h265s) t = 4, s = e.h265s; else { console.log("unknown codec"); return } const l = s == null ? void 0 : s.frames.length; this._frameCount[e.display] = (this._frameCount[e.display] || 0) + l, this.sendVideoReceived(); try { for (let E = 0; E < l; E++) { let c = s.frames[E]; const C = await Ra(t, c.data.slice(0).buffer); if (C.data && l - 1 == E) { this.draw(e.display, C.data); const D = new Date().getTime(); this.fpsCalculate(o, D - a); const B = C.data.yuvFormat == 5; this._i444 != B && (this._i444 = B, m("update_quality_status", {chroma: B ? "4:4:4" : "4:2:0"})) } } } catch (E) { console.error("decode error: ", E) } } sendToggleVirtualDisplayMsg() { if (!this.isSupportVirtualDisplay()) return; const e = this.getOption("virtual-display"); !e || e.split(",").forEach(i => { const o = Number(i); isNaN(o) || this._sendToggleVirtualDisplayMsg(o, !0) }) } sendTogglePrivacyModeMsg() { if (!!this._peerInfo && !(Q(this._peerInfo.version) < Q("1.2.4")) && this.getOption("privacy-mode")) { const e = this.getOption("privacy-mode-impl-key"); if (e == "privacy_mode_impl_virtual_display" && this.isSupportVirtualDisplay()) return; this._sendTogglePrivacyModeMsg(e, !0) } } handlePeerInfo(e) { var a, t, s; if (this._peerInfo = e, e.current_display > e.displays.length && (e.current_display = 0), Q(e.version) < Q("1.1.10") && this.setPermission("restart", !1), this._isFileTransfer) { if (!e.username.length && !((a = e.windows_sessions) != null && a.sessions.length)) { this.msgbox("error", "Error", "No active console user logged on, please connect and logon first."); return } } else if (e.displays.length == 0) { this.lcHandlePeerInfo(e), m("update_privacy_mode", {}), this.msgbox("error", "Remote Error", "No Display"); return } m("peer_info", { ...e, displays: this.makeDisplaysMsg(e.displays), resolutions: JSON.stringify(e.resolutions) }), this._isFileTransfer || (this.msgbox("success", "Successful", "Connected, waiting for image..."), this.tryChangeInitResolution(e.current_display)); const i = this.shouldAutoLogin(); i && this.inputOsPassword(i); const o = (t = this.getOption("info")) == null ? void 0 : t.username; o && !e.username && (e.username = o), m("update_privacy_mode", {}), this.lcHandlePeerInfo(e), (s = e.windows_sessions) != null && s.sessions.length && (this._selectedWindowsSessionId == e.windows_sessions.current_sid ? this.sendSelectedSessionId(e.windows_sessions.current_sid.toString()) : this.setMultipleWindowsSession(e.windows_sessions.sessions)) } lcHandlePeerInfo(e) { var l; let i = le(this._id) || {}; i.info = {username: e.username, hostname: e.hostname, platform: e.platform}; let o = this._password, a = i.password, t = this.getRemember(), s = this._hash; t ? o && o.length > 0 && Z(o) !== a && !at(this._passwordSource, o, s) && (i.password = Z(o), console.log("remember password of " + this._id)) : o && o.length > 0 && ot(this._passwordSource, o) ? (i.password = Z(o), console.log("save ab password of " + this._id + " to recent")) : a && (i.password = void 0, console.log("remove password of " + this._id)), (l = this._otherServer) != null && l.server && this._otherServer.server != ee && this.setOption("other-server-key", this._otherServer.key), i.password && o && o.length > 0 && !at(this._passwordSource, o, s) && !ot(this._passwordSource, o) && m("sync_peer_hash_password_to_personal_ab", { id: this._id, hash: Z(o) }), this.saveConfig(i), e.encoding && (this._supportedEncoding = e.encoding) } setPermission(e, i) { m("permission", {[e]: i}) } shouldAutoLogin() { const e = this.getOption("lock-after-session-end"), i = !!this.getOption("auto-login"), o = this.getOption("os-password"); return o && e && i ? o : "" } handleMisc(e) { if (e.audio_format) Gn(e.audio_format.channels, e.audio_format.sample_rate); else if (e.chat_message) m("chat_client_mode", {text: e.chat_message.text}); else if (e.permission_info) { const i = e.permission_info; console.info("Change permission " + i.permission + " -> " + i.enabled); let o; switch (i.permission) { case t0.Keyboard: this._serverPerms.keyboardEnabled = i.enabled, o = "keyboard"; break; case t0.Clipboard: this._serverPerms.clipboardEnabled = i.enabled, o = "clipboard"; break; case t0.Audio: o = "audio"; break; case t0.Restart: o = "restart"; break; case t0.BlockInput: o = "block_input"; break; default: return !0 } this.setPermission(o, i.enabled) } else if (e.switch_display) m("switch_display", e.switch_display), this.setCustomResolution(e.switch_display); else { if (e.close_reason) return this.msgbox("error", "Connection Error", e.close_reason), this.close(), !1; if (e.back_notification) { if (!this.handleBackNotification(e.back_notification)) return this.close(), !1 } else e.uac !== void 0 ? e.uac && this._serverPerms.keyboardEnabled ? this.msgbox("on-uac", "Prompt", "Please wait for confirmation of UAC...", "") : (this.cancelMsgbox("on-uac"), this.cancelMsgbox("wait-uac"), this.cancelMsgbox("elevation-error")) : e.foreground_window_elevated !== void 0 ? e.foreground_window_elevated && this._serverPerms.keyboardEnabled ? this.msgbox("on-foreground-elevated", "Prompt", "elevated_foreground_window_tip", "") : (this.cancelMsgbox("on-foreground-elevated"), this.cancelMsgbox("wait-uac"), this.cancelMsgbox("elevation-error")) : e.elevation_response !== void 0 ? e.elevation_response === "" ? this.msgbox("wait-uac", "", "", "") : (this.cancelMsgbox("wait-uac"), this.msgbox("elevation-error", "Elevation Error", e.elevation_response, "")) : e.portable_service_running !== void 0 ? (this.portableServiceRunning(e.portable_service_running), this._elevationRequested && e.portable_service_running && this.msgbox("custom-nocancel-success", "Successful", "Elevate successfully", "")) : e.supported_encoding ? this._supportedEncoding = e.supported_encoding : e.follow_current_display !== void 0 && this.handleFollowCurrentDisplay(e.follow_current_display) } return !0 } portableServiceRunning(e) { m("portable_service_running", {running: e.toString()}) } handleFollowCurrentDisplay(e) { m("follow_current_display", {display_idx: e.toString()}) } handleBackNotification(e) { if (e.block_input_state) this.handleBackMsgBlockInput(e.block_input_state, e.details); else if (e.privacy_mode_state) return this.handleBackMsgPrivacyMode(e.privacy_mode_state, e.details, e.impl_key); return !0 } updateBlockInputState(e) { m("update_block_input_state", {input_state: e ? "on" : "off"}) } handleBackMsgBlockInput(e, i) { switch (e) { case A4.BlkOnSucceeded: this.updateBlockInputState(!0); break; case A4.BlkOnFailed: this.msgbox("custom-error", "Block user input", i == "" ? "Failed" : i, ""), this.updateBlockInputState(!1); break; case A4.BlkOffSucceeded: this.updateBlockInputState(!1); break; case A4.BlkOffFailed: this.msgbox("custom-error", "Unblock user input", i == "" ? "Failed" : i, ""); break } } updatePrivacyMode(e, i) { i && (e == "" && (e = "privacy_mode_impl_mag"), this.setOption("privacy-mode-impl-key", e)), this.setOption("privacy-mode", i), m("update_privacy_mode", {}) } handleBackMsgPrivacyMode(e, i, o) { switch (e) { case ou.PrvOnByOther: return this.msgbox("error", "Connecting...", "Someone turns on privacy mode, exit", ""), !1; case ou.PrvNotSupported: this.msgbox("custom-error", "Privacy mode", "Unsupported", ""), this.updatePrivacyMode(o, !1); break; case ou.PrvOnSucceeded: this.msgbox("custom-nocancel", "Privacy mode", "Enter privacy mode", ""), this.updatePrivacyMode(o, !0); break; case ou.PrvOnFailedDenied: this.msgbox("custom-error", "Privacy mode", "Peer denied", ""), this.updatePrivacyMode(o, !1); break; case ou.PrvOnFailedPlugin: this.msgbox("custom-error", "Privacy mode", "Please install plugins", ""), this.updatePrivacyMode(o, !1); break; case ou.PrvOnFailed: this.msgbox("custom-error", "Privacy mode", i == "" ? "Failed" : i, ""), this.updatePrivacyMode(o, !1); break; case ou.PrvOffSucceeded: this.msgbox("custom-nocancel", "Privacy mode", "Exit privacy mode", ""), this.updatePrivacyMode(o, !1); break; case ou.PrvOffFailed: this.msgbox("custom-error", "Privacy mode", i == "" ? "Failed to turn off" : i, ""); break; case ou.PrvOffUnknown: this.msgbox("custom-error", "Privacy mode", "Turned off", ""), this.updatePrivacyMode(o, !1); break } return !0 } getRemember() { return this._options.remember || !1 } setRemember(e) { this.setOption("remember", e) } getOption(e) { var i; return (i = this._options[e]) != null ? i : u0(e) } getUserDefaultToggleOptions() { const e = {}, i = { "show-remote-cursor": "show_remote_cursor", "lock-after-session-end": "lock_after_session_end", "privacy-mode": "privacy_mode", "enable-file-copy-paste": "enable-file-copy-paste", "disable-audio": "disable_audio", "disable-clipboard": "disable_clipboard", "show-quality-monitor": "show_quality_monitor", allow_swap_key: "allow_swap_key", "view-only": "view_only", "follow-remote-cursor": "follow_remote_cursor", "follow-remote-window": "follow_remote_window" }; for (const [a, t] of Object.entries(i)) e[a] = u0(t) == "Y"; const o = ["codec-preference", "custom-fps", "zoom-cursor", "touch-mode", "i444", "swap-left-right-mouse", "collapse_toolbar"]; for (const a of o) e[a] = u0(a); return e } getToggleOption(e) { const i = ["show-remote-cursor", "privacy-mode", "enable-file-copy-paste"], o = this._options[e]; return typeof o == "string" ? o != "" : o != null ? o : !!i.includes(e) } getStatus() { return JSON.stringify({status_num: 10}) } checkConnStatus() { } saveConfig(e) { this._options = e, this._options.tm = new Date().getTime(), Bo(this._id, e) } loadConfig() { return le(this._id) || {} } setOption(e, i) { i == null ? delete this._options[e] : this._options[e] = i, this._options.tm = new Date().getTime(), kt(this._id, e, i) } setFlutterUiOption(e, i) { this.setOption(`flutter_ui:${e}`, i) } getFlutterUiOption(e) { return this.getOption(`flutter_ui:${e}`) } inputKey(e, i, o, a, t, s, l) { var c; const E = So(e, Mn()); !E || (a && (e == "VK_MENU" || e == "RAlt") && (a = !1), t && (e == "VK_CONTROL" || e == "RControl") && (t = !1), s && (e == "VK_SHIFT" || e == "RShift") && (s = !1), l && (e == "Meta" || e == "RWin") && (l = !1), E.down = i, E.press = o, E.modifiers = this.getMod(a, t, s, l), (c = this._ws) == null || c.sendMessage({key_event: E})) } ctrlAltDel() { var i, o; const e = w.fromPartial({down: !0}); ((i = this._peerInfo) == null ? void 0 : i.platform) == "Windows" ? e.control_key = j.CtrlAltDel : (e.control_key = j.Delete, e.modifiers = this.getMod(!0, !0, !1, !1)), (o = this._ws) == null || o.sendMessage({key_event: e}) } restart() { var i; this._restartingRemoteDevice = !0; const e = f.fromPartial({}); e.restart_remote_device = !0, (i = this._ws) == null || i.sendMessage({misc: e}) } inputString(e) { var o; const i = w.fromPartial({seq: e}); (o = this._ws) == null || o.sendMessage({key_event: i}) } send2fa(e) { var i; try { const o = JSON.parse(e), a = o.code, t = o.trust_this_device; t && this.setOption(w4, "Y"); const s = this._getHwid(t), l = _u.fromPartial({code: a, hwid: s}); (i = this._ws) == null || i.sendMessage({auth_2fa: l}) } catch { console.log('Failed to switch display, invalid param "' + e + '"') } } _captureDisplays({add: e, sub: i, set: o}) { var s; const a = Uu.fromPartial({add: e, sub: i, set: o}), t = f.fromPartial({capture_displays: a}); (s = this._ws) == null || s.sendMessage({misc: t}) } switchDisplay(e) { var i; try { const o = JSON.parse(e), a = o.value, t = o.isDesktop; if (a.length == 1) { let s = this.getCustomResolution(a[0]); const l = Mu.fromPartial({display: a[0], width: s ? s[0] : void 0, height: s ? s[1] : void 0}), E = f.fromPartial({switch_display: l}); (i = this._ws) == null || i.sendMessage({misc: E}), t || this._captureDisplays({set: a}) } else this._captureDisplays({set: a}) } catch { console.log('Failed to switch display, invalid param "' + e + '"') } } elevateDirect() { var o; const e = Du.fromPartial({direct: !0}), i = f.fromPartial({elevation_request: e}); (o = this._ws) == null || o.sendMessage({misc: i}), this._elevationRequested = !0 } elevateWithLogon(e) { var i; try { const o = JSON.parse(e), a = qu.fromPartial({username: o.username, password: o.password}), t = Du.fromPartial({logon: a}), s = f.fromPartial({elevation_request: t}); (i = this._ws) == null || i.sendMessage({misc: s}), this._elevationRequested = !0 } catch { console.log('Failed to elevate with logon, invalid param "' + e + '"') } } async inputOsPassword(e) { var a, t; this.inputMouse(), await ie(50), this.inputMouse(0, 3, 3), await ie(50), this.inputMouse(1 | 1 << 3), this.inputMouse(2 | 1 << 3), await ie(1200); const i = w.fromPartial({press: !0, seq: e}); (a = this._ws) == null || a.sendMessage({key_event: i}); const o = w.fromPartial({press: !0, control_key: j.Return}); (t = this._ws) == null || t.sendMessage({key_event: o}) } lockScreen() { var i; const e = w.fromPartial({down: !0, control_key: j.LockScreen}); (i = this._ws) == null || i.sendMessage({key_event: e}) } isSwapControlCommand() { return this.getToggleOption("allow_swap_key") } getMod(e, i, o, a) { const t = []; return e && t.push(j.Alt), i && (this.isSwapControlCommand() ? t.push(j.Meta) : t.push(j.Control)), o && t.push(j.Shift), a && (this.isSwapControlCommand() ? t.push(j.Control) : t.push(j.Meta)), t } inputMouse(e = 0, i = 0, o = 0, a = !1, t = !1, s = !1, l = !1) { var c; const E = ku.fromPartial({mask: e, x: i, y: o, modifiers: this.getMod(a, t, s, l)}); (c = this._ws) == null || c.sendMessage({mouse_event: E}) } toggleOption(e) { var s; const i = !this._options[e], o = z.fromPartial({}), a = i ? x.Yes : x.No; switch (e) { case"show-remote-cursor": o.show_remote_cursor = a; break; case"follow-remote-cursor": o.follow_remote_cursor = a; break; case"follow-remote-window": o.follow_remote_window = a; break; case"disable-audio": o.disable_audio = a; break; case"disable-clipboard": o.disable_clipboard = a; break; case"lock-after-session-end": o.lock_after_session_end = a; break; case"privacy-mode": o.privacy_mode = a; break; case"enable-file-copy-paste": o.enable_file_transfer = a; break; case"block-input": o.block_input = x.Yes; break; case"unblock-input": o.block_input = x.No; break; case"show-quality-monitor": case"allow_swap_key": break; case"view-only": i ? (o.disable_keyboard = x.Yes, o.disable_clipboard = x.Yes, o.show_remote_cursor = x.Yes, o.enable_file_transfer = x.No, o.lock_after_session_end = x.No) : (o.disable_keyboard = x.No, o.disable_clipboard = this.getToggleOption("disable-clipboard") ? x.Yes : x.No, o.show_remote_cursor = this.getToggleOption("show-remote-cursor") ? x.Yes : x.No, o.enable_file_transfer = this.getToggleOption("enable-file-copy-paste") ? x.Yes : x.No, o.lock_after_session_end = this.getToggleOption("lock-after-session-end") ? x.Yes : x.No); break; default: this.setOption(e, this._options[e] ? void 0 : "Y"); return } e.indexOf("block-input") < 0 && this.setOption(e, i); const t = f.fromPartial({option: o}); (s = this._ws) == null || s.sendMessage({misc: t}) } toggleVirtualDisplay(e) { try { const i = JSON.parse(e); this._sendToggleVirtualDisplayMsg(i.index, i.on), this.updateVirtualDisplay(i.index, i.on) } catch { console.log('Failed to toggle virtual display, invalid param "' + e + '"') } } togglePrivacyMode(e) { try { const i = JSON.parse(e); this._sendTogglePrivacyModeMsg(i.impl_key, i.on) } catch { console.log('Failed to toggle privacy mode, invalid param "' + e + '"') } } _sendToggleVirtualDisplayMsg(e, i) { var t; const o = Lu.fromPartial({display: e, on: i}), a = f.fromPartial({toggle_virtual_display: o}); (t = this._ws) == null || t.sendMessage({misc: a}) } _sendTogglePrivacyModeMsg(e, i) { var t; const o = Wu.fromPartial({impl_key: e, on: i}), a = f.fromPartial({toggle_privacy_mode: o}); (t = this._ws) == null || t.sendMessage({misc: a}) } updateVirtualDisplay(e, i) { const o = "virtual-display", a = this.getOption(o); if (i) { const t = a.split(","), s = t.length; e == 0 ? t.splice(0, t.length) : t.indexOf(e.toString()) < 0 && t.push(e.toString()), t.length != s && this.setOption(o, t.join(",")) } else if (e == -1) a != "" && this.setOption(o, ""); else { const t = a.split(","), s = t.length; if (e == 0) t.pop(); else { const l = t.indexOf(e.toString()); l >= 0 && t.splice(l, 1) } t.length != s && this.setOption(o, t.join(",")) } } getImageQuality() { return this.getOption("image_quality") } getImageQualityEnum(e, i) { switch (e) { case"low": return S4.Low; case"best": return S4.Best; case"balanced": return i ? void 0 : S4.Balanced; default: return } } setImageQuality(e) { var t; this.setOption("image_quality", e); const i = this.getImageQualityEnum(e, !1); if (i == null) return; const o = z.fromPartial({image_quality: i}), a = f.fromPartial({option: o}); (t = this._ws) == null || t.sendMessage({misc: a}), this._lastSendFps != 30 && this.setCustomFps(30, !1) } setCustomImageQuality(e) { var t; const i = e << 8, o = z.fromPartial({custom_image_quality: i}), a = f.fromPartial({option: o}); (t = this._ws) == null || t.sendMessage({misc: a}), this.setOption("custom_image_quality", e.toString()), this.setOption("image_quality", "custom") } setCustomFps(e, i) { var s; const o = e, a = z.fromPartial({custom_fps: o}), t = f.fromPartial({option: a}); (s = this._ws) == null || s.sendMessage({misc: t}), this._lastSendFps = o, i && this.setOption("custom-fps", e.toString()) } sendNote(e, i) { let o = i; fetch(e, { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({id: this._id, session_id: this._sessionId, note: o}) }).then(a => { if (!a.ok) throw new Error(a.statusText); return a.text() }).then(a => { console.log("Send note response:", a) }).catch(a => { console.error("Failed to send note:", a) }) } getPlatform() { var e; return ((e = this._peerInfo) == null ? void 0 : e.platform) || "" } async handleFileResponse(e) { var i, o; if (e.dir) { let a = e.dir, t = a.entries; if (!_4() && this.getPeerPlatform() == "Windows") for (let s = 0; s < t.length; s++) t[s].name = t[s].name.replace(/\\/g, "/"); it(a.id, t, a.path, !1, !1), this._writeJobs.forEach(s => { s.id == a.id && (s.files = t) }), this._removeJobs[a.id] && (this._removeJobs[a.id].files = t) } else if (e.empty_dirs != null) { const a = e.empty_dirs; for (let t = 0; t < this._readRemoteEmptyDirsJobs.length; t++) this._readRemoteEmptyDirsJobs[t].path == a.path && (this._readRemoteEmptyDirsJobs[t].empty_dirs = a.empty_dirs.map(s => s.path)) } else if (e.block) { const a = e.block, t = this._writeJobs.find(s => s.id == a.id); if (t) try { await t.write(a, () => { console.log(`cancel job ${t.id} due to write failed`), this.cancelJob(t.id) }) } catch (s) { console.log("write file failed", s) } this.update_jobs_status() } else if (e.digest) { const a = e.digest; if (a.is_upload) { const t = this._readJobs.find(s => s.id == a.id); if (t) { const s = t.read_digest(a); s && ((i = this._ws) == null || i.sendMessage(s)) } } else { const t = this._writeJobs.find(s => s.id == a.id); if (t) { const s = t.write_digest(a); s && ((o = this._ws) == null || o.sendMessage(s)) } } } else if (e.done) { const a = e.done, t = this._writeJobs.find(l => l.id == a.id); let s; t && (t.write_done(a, () => this._readRemoteEmptyDirsJobs.find(l => l.id == a.id), () => this.removeReadRemoteEmptryDirJob(a.id)), s = t.job_error(), this._writeJobs = this._writeJobs.filter(l => l.id != a.id)), this.handle_job_status(a.id, a.file_num, s) } else if (e.error) { const a = e.error; this._writeJobs = this._writeJobs.filter(t => t.id != a.id), this.removeReadRemoteEmptryDirJob(a.id), this.handle_job_status(a.id, a.file_num, a.error) } } removeReadRemoteEmptryDirJob(e) { this._readRemoteEmptyDirsJobs = this._readRemoteEmptyDirsJobs.filter(i => i.id != e) } readRemoteDir(e) { var i; try { const o = JSON.parse(e), a = P.fromPartial({read_dir: hu.fromPartial({path: o.path, include_hidden: o.include_hidden})}); (i = this._ws) == null || i.sendMessage({file_action: a}) } catch (o) { console.error("Failed to read remote dir:", o) } } async sendFiles(e) { var i; try { const o = JSON.parse(e), { id: a, path: t, to: s, file_num: l, include_hidden: E, is_remote: c, is_dir: C } = o, D = this.enableOverwriteDetection(); if (c) { this._writeJobs.push(lu.newWrite(a, t, s, l, E, c, [], D, C)); const B = dn(a, t, l, E); (i = this._ws) == null || i.sendMessage({file_action: B}), C && this.enableEmptyDirs() && (this._readRemoteEmptyDirsJobs.find(F => F.id == a) == null && this._readRemoteEmptyDirsJobs.push(new En({ id: a, path: t })), this.sendMessage({file_action: _n(t, E)})) } } catch (o) { console.error("Failed to send files:", o) } } async sendLocalFiles(e) { try { const i = JSON.parse(e), { handle_index: o, id: a, path: t, to: s, file_num: l, include_hidden: E, is_remote: c } = i, C = this.enableOverwriteDetection(); if (!c) try { let D = this._fileHandles[o]; if (!D) throw new Error("Failed to get file handle"); let B = [], F = []; if (D instanceof FileSystemFileHandle) { let g = await D.getFile(); B = [W.fromPartial({ size: g.size, entry_type: 4, modified_time: Math.floor(g.lastModified / 1e3) })], F = [D] } else { let g = await Ot(D, ""); B = g.map(U => U.entry), F = g.map(U => U.handle) } let y = lu.newRead(a, t, s, l, E, c, B, C, F); it(a, B, t, !c, !0), this._readJobs.push(y), this._ftTimer || (this._ftTimer = setTimeout(this.readJobTimerCallback.bind(this), tt)); let S = [...B]; if (_4() && this.getPeerPlatform() != "Windows") for (let g = 0; g < S.length; g++) S[g].name = S[g].name.replace(/\\/g, "/"); if (this.sendMessage({file_action: mn(a, s, l, S, y.total_size)}), this.enableEmptyDirs()) { const g = await Mt(D, D.name); g.length > 0 && m("send_emptry_dirs", {dirs: g}) } } catch (D) { console.error("Failed to send files:", D), this.handle_job_status(a, -1, (D != null ? D : "Failed to send files").toString()) } } catch (i) { console.error("Failed to send files:", i) } } async readJobTimerCallback() { let e = await fn(this._readJobs, this.sendMessage.bind(this)); this._readJobs = this._readJobs.filter(i => !e.includes(i.id)), this.update_jobs_status(), this._readJobs.length == 0 ? (clearTimeout(this._ftTimer), this._ftTimer = void 0) : this._ftTimer = setTimeout(this.readJobTimerCallback.bind(this), tt) } update_jobs_status() { const e = new Date().getTime() - this._last_update_jobs_ms; e >= 1e3 && (this._readJobs.forEach(i => { i.update_job_status(e) }), this._writeJobs.forEach(i => { i.update_job_status(e) }), this._last_update_jobs_ms = new Date().getTime()) } handle_job_status(e, i, o) { var a; if (this._removeJobs[e] && this._removeJobs[e].no_confirm) { const t = this._removeJobs[e].files; if (i + 1 < t.length) { const s = this._removeJobs[e].path + this._removeJobs[e].sep + t[i + 1].name; if ((a = this._ws) == null || a.sendMessage({file_action: ut(e, s, i + 1, this._removeJobs[e].is_remote)}), new Date().getTime() - this._removeJobs[e].last_update_job_status >= 1e3) this._removeJobs[e].last_update_job_status = new Date().getTime(); else return } else delete this._removeJobs[e], console.log("remove jobs:", this._removeJobs) } o ? ce(e, o, i) : gn(e, i) } cancelJob(e) { var o; (o = this._ws) == null || o.sendMessage({file_action: pn(e)}); let i = this._writeJobs.find(a => a.id == e); i && i.remove_download_file(), this._writeJobs = this._writeJobs.filter(a => a.id != e), this._readJobs = this._readJobs.filter(a => a.id != e), delete this._removeJobs[e] } removeAllEmptyDirs(e) { var i; try { const o = JSON.parse(e); (i = this._ws) == null || i.sendMessage({file_action: Dn(o.id, o.path)}) } catch (o) { console.error("Failed to remove all empty dirs:", o) } } removeFile(e) { var i; try { const o = JSON.parse(e), {id: a, path: t, file_num: s, is_remote: l} = o; l && ((i = this._ws) == null || i.sendMessage({file_action: ut(a, t, s, l)})) } catch (o) { console.error("Failed to remove files:", o) } } readDirToRemoveRecursive(e) { var i; try { const o = JSON.parse(e), {id: a, path: t, is_remote: s, show_hidden: l} = o; if (s) { (i = this._ws) == null || i.sendMessage({file_action: cn(a, t, l)}); const E = (c, C) => (c ? C === "Windows" : _4()) ? "\\" : "/"; this._removeJobs[a] = { path: t, files: [], no_confirm: !1, is_remote: s, sep: E(s, this.getPeerPlatform()), last_update_job_status: new Date().getTime() } } } catch (o) { console.error("Failed to read dir to remove recursive:", o) } } createDir(e) { var i; try { const o = JSON.parse(e), {id: a, path: t, is_remote: s} = o; s && ((i = this._ws) == null || i.sendMessage({file_action: Cn(a, t)})) } catch (o) { console.error("Failed to create dir:", o) } } renameFile(e) { var i; try { const o = JSON.parse(e), {id: a, path: t, new_name: s, is_remote: l} = o; l && ((i = this._ws) == null || i.sendMessage({file_action: Bn(a, t, s)})) } catch (o) { console.error("Failed to rename file:", o) } } async seletFiles(e) { await hn(e, (i, o) => { this._fileHandles[i] = o }) } async handleFileAction(e) { if (e.send_confirm) { const i = e.send_confirm, o = this._readJobs.find(a => a.id == i.id); o && o.confirm(i) } } async confirmOverrideFile(e) { try { const i = JSON.parse(e), {id: o, file_num: a, need_override: t, remember: s, is_upload: l} = i; if (l) { const E = this._readJobs.find(c => c.id == o); E && (s && (E.default_overwrite_strategy = t), E.confirm(cu.fromPartial({ id: o, file_num: a, offset_blk: t ? 0 : void 0, skip: t ? void 0 : !0 }))) } } catch (i) { console.error("Failed to confirm override file:", i) } } sendChat(e) { const i = vu.fromPartial({text: e}), o = f.fromPartial({chat_message: i}); this.sendMessage({misc: o}) } changeResolution(e) { var i; try { const o = JSON.parse(e), a = v.fromPartial({width: o.width, height: o.height}); let t; this._peerInfo && Q(this._peerInfo.version) >= Q("1.2.4") ? t = f.fromPartial({ change_display_resolution: Ou.fromPartial({ display: o.display, resolution: a }) }) : t = f.fromPartial({change_resolution: a}), (i = this._ws) == null || i.sendMessage({misc: t}), this._lastChangeDisplay = { display: o.display, width: o.width, height: o.height, time: new Date().getTime() } } catch (o) { console.error("Failed to change resolution:", o) } } setCustomResolution(e) { var a, t; const i = (s, l) => { const E = s.toString(), c = this.loadConfig(); c.custom_resolutions || (c.custom_resolutions = {}), l ? c.custom_resolutions[E] = { w: l[0], h: l[1] } : delete c.custom_resolutions[E], this.saveConfig(c) }, o = () => { var s, l, E; return ((s = this._lastChangeDisplay) == null ? void 0 : s.display) == e.display && ((l = this._lastChangeDisplay) == null ? void 0 : l.width) == e.width && ((E = this._lastChangeDisplay) == null ? void 0 : E.height) == e.height && new Date().getTime() - this._lastChangeDisplay.time < 15e3 }; if (e.width == ((a = e.original_resolution) == null ? void 0 : a.width) && e.height == ((t = e.original_resolution) == null ? void 0 : t.height)) i(e.display, void 0); else { const s = this._lastChangeDisplay; if ((s == null ? void 0 : s.display) == e.display) { const l = o() ? [e.width, e.height] : void 0; i(e.display, l) } } } getCustomResolution(e) { const o = this.loadConfig().custom_resolutions; if (o) { const a = o[e.toString()]; if (a && a.w && a.h) return [a.w, a.h] } } tryChangeInitResolution(e) { const i = this.getCustomResolution(e); i && this.changeResolution(JSON.stringify({display: e, width: i[0], height: i[1]})) } setMultipleWindowsSession(e) { let i = []; e.forEach(o => { let a = {}; a.sid = o.sid.toString(), a.name = o.name, i.push(a) }), m("set_multiple_windows_session", {windows_sessions: JSON.stringify(i)}) } sendSelectedSessionId(e) { var o, a; const i = parseInt(e); if (isNaN(i)) console.error("selected invalid sid: ", e); else { this._selectedWindowsSessionId = i; const t = f.fromPartial({selected_sid: i}); (o = this._ws) == null || o.sendMessage({misc: t}); const s = this._peerInfo; s && ((a = s.windows_sessions) == null ? void 0 : a.current_sid) == i && (this._isFileTransfer ? s.username || this.msgbox("error", "Error", "No active console user logged on, please connect and logon first.") : this.msgbox("success", "Successful", "Connected, waiting for image...")) } } } function R4(u = !1) { const e = A.getItem("custom-rendezvous-server"); return I4(e || Lt, u) } function getUriFromRs(uri, isRelay = false, roffset = 0) { const p = isHttps() ? "wss://" : "ws://" const [domain, uriport] = uri.split(":") if (isHttps() && (!uriport)) { return p + domain + "/ws/" + (isRelay ? "relay" : "id"); } if (uriport) { const port = parseInt(uriport); uri = domain + ":" + (port + (isRelay ? roffset || 3 : 2)) } else uri += ":" + (defaultIdServerPort + (isRelay ? 3 : 2)); return p + uri } function isHttps() { return window.location.protocol === "https:" } function I4(u, e = !1, i = 0) { return getUriFromRs(u, e, i) } function wn() { return window.location.protocol === "https:" } function Sn(u) { return u.indexOf(":") > 0 ? u.split(":")[0] : u } const at = (u, e, i) => e && u.type == "SharedAb" ? Z(Zu([u.value, i.salt])) === Z(e) : !1, ot = (u, e) => e && u.type == "PersonalAb" ? Z(u.value) === Z(e) : !1; function zn() { return R4() } function nt(u, e) { be("callback_query_onlines", {onlines: u.join(","), offlines: e.join(",")}) } const onlineCache = {} // Query onlines async function myQueryOnline(id) { const last_online = onlineCache[id] if (last_online && new Date().getTime() - last_online < 20 * 1000) { return true } // 映射 方便后期更新 const maps = { uri: R4(), ws: N4, conn_type: ne.DEFAULT_CONN, nat_type: pt.SYMMETRIC, token: Pt(), version: se, licence_key: To(), rendezvousPunchHoleRequest: Ku, rendezvousPunchHoleResponse_Failure: Z0 } const s = new maps.ws(maps.uri, !0, "rendezvous"); await s.open(); const punch_hole_request = maps.rendezvousPunchHoleRequest.fromPartial({ id: id, licence_key: maps.licence_key, conn_type: maps.conn_type, nat_type: maps.nat_type, token: maps.token, version: maps.version }); s.sendRendezvous({punch_hole_request: punch_hole_request}); const msg = await s.next(); s.close(); let online = false const phr = msg.punch_hole_response, rr = msg.relay_response; if (phr) { online = true if (phr != null && phr.other_failure) { online = false return online } if (phr.failure != maps.rendezvousPunchHoleResponse_Failure.UNRECOGNIZED) switch (phr == null ? void 0 : phr.failure) { case maps.rendezvousPunchHoleResponse_Failure.ID_NOT_EXIST: case maps.rendezvousPunchHoleResponse_Failure.OFFLINE: case maps.rendezvousPunchHoleResponse_Failure.LICENSE_MISMATCH: case maps.rendezvousPunchHoleResponse_Failure.LICENSE_OVERUSE: online = false break } } else if (rr) { online = true if (!rr.version) { online = false return online } } if (online) { onlineCache[id] = new Date().getTime() } else if (onlineCache[id]) { delete onlineCache[id] } return online } async function Pn(u) { let e = []; try { e = JSON.parse(u) } catch (a) { console.error("Failed to query onlines, ", a); return } if (e.length === 0) return; if (window.webclient_magic_queryonline) { const onlines = [] const offlines = [] for (let i = 0; i < e.length; i++) { let online = await myQueryOnline(e[i]) if (online) { onlines.push(e[i]) } else { offlines.push(e[i]) } } nt(onlines, offlines) } else { const i = zn(), o = new N4(i, !0, "query onlines"); try { await o.open(); const a = Ju.fromPartial({id: O4(), peers: e}); o.sendRendezvous({online_request: a}) } catch (a) { console.error("Failed to query onlines, ", a), nt([], e), o.close(); return } for (let a = 0; a < 2; a++) { const t = await Io(o, 3e3); if (!t || (t == null ? void 0 : t.key_exchange) || (t == null ? void 0 : t.online_response) === void 0) continue; const s = t.online_response.states; let l = [], E = []; for (let c = 0; c < e.length; c++) { const C = 1 << 7 - c % 8; (s[Math.floor(c / 8)] & C) === C ? l.push(e[c]) : E.push(e[c]) } nt(l, E), o.close(); return } o.close(), console.error("Failed to query online states, no online response") } } const Rn = "rustdesk-client"; function In() { if (typeof navigator != "undefined") { const u = navigator.platform.toLowerCase(); return u.includes("win") ? "windows" : u.includes("mac") ? "macos" : u.includes("linux") ? "linux" : u } return "unknown" } function Tn() { const u = In(); return u === "windows" ? navigator.userAgent.includes("Win64") ? "x86_64" : "x86" : u === "macos" ? navigator.userAgent.includes("Intel") ? "x86_64" : "arm64" : navigator.userAgent.includes("x64") ? "x86_64" : "x86" } function jn() { const u = navigator.userAgent; let e = "", i = ""; if (u.includes("Windows")) { e = "windows"; const o = u.match(/Windows NT (\d+\.\d+)/); o && (i = o[1]) } else if (u.includes("Mac OS X")) { e = "macos"; const o = u.match(/Mac OS X (\d+[._]\d+[._]\d+)/); o && (i = o[1].replace(/_/g, ".")) } else if (u.includes("Linux")) { e = "linux"; const o = u.match(/Linux\s*([\d.]+)?/); o && o[1] && (i = o[1]) } else e = "unknown", i = ""; return e += "-" + navigator.userAgent, {os: e, os_version: i} } async function Nn(u) { const e = "https://api.rustdesk.com/version/latest", {os: i, os_version: o} = jn(), a = Tn(); return [{os: i, os_version: o, arch: a, device_id: [], typ: u}, e] } async function On() { try { const [u, e] = await Nn(Rn); return await (await fetch(e, { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify(u) })).json() } catch { return null } } window.curConn = void 0; window.isMobile = () => /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4)); const ye = zt(), Yu = ye === Y4, H4 = ye === Be, Qu = ye === me; function Mn() { return !isMobile() } function Vt(u, e, i, o) { if (!(!u || u == "error" && !i)) { i.toLowerCase(); var a = co(u, e, i) ? "true" : ""; onGlobalEvent(JSON.stringify({ name: "msgbox", type: u, title: e, text: i, link: o != null ? o : "", hasRetry: a })) } } function Un(u, e, i) { onGlobalEvent(JSON.stringify({name: "toast", type: u, text: e, dur_msec: i})) } function qt(u) { var e = {}; for (const [i, o] of Object.entries(u)) !i || (o instanceof String || typeof o == "string" ? e[i] = o : o instanceof Uint8Array ? e[i] = "[" + o.toString() + "]" : e[i] = JSON.stringify(o)); return e } function m(u, e) { e = qt(e), e.name = u, onGlobalEvent(JSON.stringify(e)) } function Ce() { var e; ((e = Fe("input-source")) != null ? e : Ji) === Ji ? Ko() : Ee() } function be(u, e) { e = qt(e), e.name = u, onRegisteredEvent(JSON.stringify(e)) } function pe(u, e) { onRgba(u, e) } function we(u) { window.curConn = u } function e0() { return window.curConn } async function Kt() { await curConn.start() } function Se() { var u; (u = e0()) == null || u.close(), we(void 0) } function Ht() { var e; (e = window.curConn) == null || e.close(); const u = new Wt; return we(u), u } let q; async function Jt() { try { q || (await T4.ready, q = T4) } catch (u) { console.error("Failed to init sodium: " + u.message) } } function Gt() { return q } async function rt(u, e) { return await Jt(), typeof e == "string" && (e = Zt(e)), q.crypto_sign_open(u, e) } function Zt(u) { return q.from_base64(u, q.base64_variants.ORIGINAL) } function Ln(u) { return q.to_base64(u, q.base64_variants.ORIGINAL) } function Wn() { const u = q.crypto_box_keypair(), e = u.privateKey, i = u.publicKey; return [e, i] } function Vn() { return q.crypto_secretbox_keygen() } function qn(u, e, i) { const o = Uint8Array.from(Array(24).fill(0)); return q.crypto_box_easy(u, o, e, i) } function $4(u) { for (var e = Array(24).fill(0), i = 0; i < e.length && u > 0; i++) { var o = u & 255; e[i] = o, u = (u - o) / 256 } return Uint8Array.from(e) } function st(u, e, i) { return q.crypto_secretbox_easy(u, $4(e), i) } function Kn(u, e, i) { return q.crypto_secretbox_open_easy(u, $4(e), i) } window.setByName = (u, e) => { switch (u) { case"connect": Ht(), Kt(); break; case"login": e = JSON.parse(e), curConn.handle_login_from_ui(e.os_username, e.os_password, e.password, e.remember); break; case"close": Se(); break; case"refresh": curConn.refresh(); break; case"reconnect": curConn == null || curConn.reconnect(); break; case"toggle_virtual_display": curConn.toggleVirtualDisplay(e); break; case"toggle_privacy_mode": curConn.togglePrivacyMode(e); break; case"image_quality": curConn.setImageQuality(e); break; case"custom_image_quality": curConn.setCustomImageQuality(e); break; case"custom-fps": curConn.setCustomFps(e, !0); break; case"lock_screen": curConn.lockScreen(); break; case"ctrl_alt_del": curConn.ctrlAltDel(); break; case"switch_display": curConn.switchDisplay(e); break; case"remove_peer": Do(e); break; case"input_key": e = JSON.parse(e), curConn.inputKey(e.name, e.down == "true", e.press == "true", e.alt == "true", e.ctrl == "true", e.shift == "true", e.command == "true"); break; case"input_string": curConn.inputString(e); break; case"flutter_key_event": e = JSON.parse(e), Ho(curConn, e.usb_hid, e.down == "true", e.lock_modes); break; case"send_mouse": Hn(e); break; case"send_2fa": curConn == null || curConn.send2fa(e); break; case"option": e = JSON.parse(e), A.setItem(e.name, e.value); break; case"options": e = JSON.parse(e); for (const [o, a] of Object.entries(a)) A.setItem(o, a); break; case"option:local": { let o = JSON.parse(e); if (o.name == 'access_token' && o.value) { getServerConf(o.value) } gt(o.name, o.value), o.name === "input-source" && Ce(), o.name == "lang" && xo() } break; case"option:flutter:local": e = JSON.parse(e), Fo(e.name, e.value); break; case"option:flutter:peer": e = JSON.parse(e), curConn.setFlutterUiOption(e.name, e.value); break; case"option:user:default": ur(e); break; case"option:session": e = JSON.parse(e), curConn.setOption(e.name, e.value); break; case"option:peer": try { e = JSON.parse(e), kt(e.id, e.name, e.value) } catch (o) { console.error('Failed to set peer option: "' + e + '", ' + o.message) } break; case"option:toggle": return curConn.toggleOption(e); case"input_os_password": curConn.inputOsPassword(e); break; case"session_add_sync": return tr(e); case"session_start": ar(); break; case"session_close": or(); break; case"elevate_direct": curConn.elevateDirect(); break; case"elevate_with_logon": curConn.elevateWithLogon(e); break; case"peer_exists": return !!Cu()[e]; case"restart": curConn.restart(); break; case"fav": return A.setItem("fav", e); case"query_onlines": Pn(e); break; case"change_prefer_codec": curConn.changePreferCodec(e); break; case"cursor": Yn(e); break; case"enter_or_leave": curConn == null || curConn.enterOrLeave(e); break; case"fullscreen": e == "Y" ? rr() : sr(); break; case"send_note": const i = Yt("conn"); i && (curConn == null || curConn.sendNote(i, e)); break; case"read_remote_dir": curConn == null || curConn.readRemoteDir(e); break; case"send_files": curConn == null || curConn.sendFiles(e); break; case"send_local_files": curConn == null || curConn.sendLocalFiles(e); break; case"cancel_job": curConn == null || curConn.cancelJob(e); break; case"remove_all_empty_dirs": curConn == null || curConn.removeAllEmptyDirs(e); break; case"remove_file": curConn == null || curConn.removeFile(e); break; case"create_dir": curConn == null || curConn.createDir(e); break; case"rename_file": curConn == null || curConn.renameFile(e); break; case"read_dir_to_remove_recursive": curConn == null || curConn.readDirToRemoveRecursive(e); break; case"select_files": curConn == null || curConn.seletFiles(e); break; case"confirm_override_file": curConn == null || curConn.confirmOverrideFile(e); break; case"send_chat": curConn == null || curConn.sendChat(e); break; case"load_ab": dr(); break; case"save_ab": _o(e); break; case"clear_ab": vo(); break; case"load_group": cr(); break; case"save_group": ko(e); break; case"clear_group": ho(); break; case"change_resolution": curConn == null || curConn.changeResolution(e); break; case"selected_sid": curConn == null || curConn.sendSelectedSessionId(e); break } }; function Hn(u) { if (!curConn) return; let e = 0; switch (u = JSON.parse(u), u.type) { case"down": e = to, setTimeout(() => { Tt(curConn) }, 100); break; case"up": e = ao; break; case"wheel": e = Zi; break; case"trackpad": e = Qi; break } switch (u.buttons) { case"left": e |= y4 << 3; break; case"right": e |= b4 << 3; break; case"wheel": e |= oo << 3; break; case"back": e |= no << 3; break; case"forward": e |= ro << 3; break } let i = parseInt(u.x || "0"), o = parseInt(u.y || "0"); (e == Zi || e == Qi) && curConn.getOption("reverse_mouse_wheel") == "Y" && (i = -i, o = -o); const a = (e & y4 << 3) > 0 ? 1 : 0, t = (e & b4 << 3) > 0 ? 1 : 0; a ^ t && curConn.getToggleOption("swap-left-right-mouse") && (a ? e = e & ~(y4 << 3) | b4 << 3 : e = e & ~(b4 << 3) | y4 << 3), curConn.inputMouse(e, i, o, u.alt == "true", u.ctrl == "true", u.shift == "true", u.command == "true") } window.getByName = (u, e) => { let i = Jn(u, e); return typeof i == "string" || i instanceof String ? i : i == null || i == null ? "" : JSON.stringify(i) }; function Jn(u, e) { var o, a, t, s; switch (u) { case"remember": return curConn.getRemember(); case"option": return A.getItem(e); case"options": const l = ["custom-rendezvous-server", "relay-server", "api-server", "key"], E = {}; return l.forEach(C => { const D = A.getItem(C); D && (E[C] = D) }), JSON.stringify(E); case"option:local": const res = Fe(e) || "" if (e == 'access_token' && res) { getServerConf(res) } return res; case"option:flutter:local": return Ao(e) || ""; case"option:flutter:peer": return curConn.getFlutterUiOption(e) || ""; case"image_quality": return curConn.getImageQuality(); case"translate": return e = JSON.parse(e), yo(e.locale, e.text); case"option:user:default": return u0(e); case"option:session": return curConn ? curConn.getOption(e) : u0(e); case"option:peer": try { const C = JSON.parse(e); return (o = mo(C.id, C.name)) != null ? o : u0(C.name) } catch (C) { return console.error('Failed to get peer option: "' + e + '", ' + C.message), "" } case"option:toggle": return curConn == null ? void 0 : curConn.getToggleOption(e); case"get_conn_status": return curConn ? curConn.getStatus() : JSON.stringify({status_num: 0}); case"test_if_valid_server": break; case"version": return se; case"load_recent_peers": er(); break; case"load_fav_peers": ir(); break; case"fav": return (a = A.getItem("fav")) != null ? a : "[]"; case"load_recent_peers_sync": return JSON.stringify({peers: JSON.stringify(Pe())}); case"api_server": return Xt(); case"is_using_public_server": return !A.getItem("custom-rendezvous-server"); case"get_version_number": return Q(e); case"audit_server": return Yt(e); case"alternative_codecs": return curConn.getAlternativeCodecs(); case"screen_info": return JSON.stringify({ frame: { l: window.screenX, t: window.screenY, r: window.screenX + window.innerWidth, b: window.screenY + window.innerHeight }, visibleFrame: { l: window.screen.availLeft, t: window.screen.availTop, r: window.screen.availLeft + window.screen.availWidth, b: window.screen.availTop + window.screen.availHeight }, scaleFactor: window.devicePixelRatio }); case"main_display": return JSON.stringify({ w: window.screen.availWidth, h: window.screen.availHeight, scaleFactor: window.devicePixelRatio }); case"langs": var i = Object.entries(Eo).map(([C, D]) => [C, `${D} (${C})`]); return i.sort((C, D) => C[0].localeCompare(D[0])), JSON.stringify(i); case"build_date": return po; case"my_id": return O4(); case"my_name": return wt(); case"uuid": return St(); case"local_os": return zt(); case"peer_has_password": return ((t = (Cu()[e] || {}).password) != null ? t : "") !== ""; case"fullscreen": return lr() ? "Y" : "N"; case"platform": return curConn.getPlatform(); case"enable_trusted_devices": return (s = curConn == null ? void 0 : curConn.enableTrustedDevices()) != null && s ? "Y" : "N" } return "" } let ze = new Worker("./libopus.js?v=02816afa"), Qt; function Gn(u, e) { Qt = Qn(u, e), ze.postMessage({channels: u, sampleRate: e}) } function Zn(u) { ze.postMessage(u, [u.buffer]) } window.init = async () => { try { ze.onmessage = u => { Qt.feed(u.data) }, await Jt(), await zo(), await Pa(), await N.init(), console.log("init done"), onInitFinished(), await On() } catch (u) { console.error("Failed to init: " + u.message), onInitFinished() } }; window.onunload = () => { console.log("window close"), Ia() }; function Qn(u, e) { return new ra({channels: u, sampleRate: e, flushingTime: 2e3}) } function Xn(u) { if (window.clipboardData && window.clipboardData.setData) return window.clipboardData.setData("Text", u); if (document.queryCommandSupported && document.queryCommandSupported("copy")) { var e = document.createElement("textarea"); e.textContent = u, e.style.position = "fixed", document.body.appendChild(e), e.select(); try { return document.execCommand("copy") } catch (i) { console.warn("Copy to clipboard failed.", i) } finally { document.body.removeChild(e) } } } function Q(u) { try { let e = u.split("-"), i = 0; if (e.length > 0) { let o = 0; for (let a of e[0].split(".")) o = parseInt(a) || 0, i = i * 1e3 + o; i -= o, i += o * 10 } return e.length > 1 && (i += parseInt(e[1]) || 0), i } catch (e) { return console.error('Failed to parse version number: "' + u + '" ' + e.message), 0 } } function Yn(u) { let e = "auto"; if (u != "auto") try { const t = JSON.parse(u); if (!t.url) return; e = `url(${t.url}) ${t.hotx} ${t.hoty}, auto` } catch (t) { console.error("Failed to set custom cursor: " + t.message); return } for (var i = document.body, o = 0; o < i.children.length; o++) { var a = i.children[o]; a.tagName == "FLUTTER-VIEW" && (a.style.cursor = e) } } async function $n() { await T4.ready; const u = T4.crypto_sign_keypair(); return {publicKey: u.publicKey, privateKey: u.privateKey} } function ur(u) { try { const e = JSON.parse(u), i = JSON.parse(A.getItem("user-default-options")) || {}; i[e.name] = e.value, A.setItem("user-default-options", JSON.stringify(i)) } catch (e) { console.error("Failed to set user default options: " + e.message) } } function u0(u) { var i, o, a; const e = { view_style: "original", scroll_style: "scrollauto", image_quality: "balanced", "codec-preference": "auto", custom_image_quality: "50", "custom-fps": "30" }; try { return (o = (i = (JSON.parse(A.getItem("user-default-options")) || {})[u]) != null ? i : e[u]) != null ? o : "" } catch (t) { return console.error("Failed to get user default options: " + t.message), (a = e[u]) != null ? a : "" } } function Pe() { const u = []; for (const [e, i] of Object.entries(Cu())) { if (!e) continue; const o = i.tm, a = i.info, t = { id: e, username: a.username || "", hostname: a.hostname || "", platform: a.platform || "", alias: i.alias || "" }; !o || !t || u.push([o, e, t]) } return u.sort().reverse().map(e => e[2]) } function er() { const u = Pe(); u && be("load_recent_peers", {peers: JSON.stringify(u)}) } function ir() { var u; try { const e = (u = A.getItem("fav")) != null ? u : "[]", i = JSON.parse(e), o = Pe().filter(a => i.includes(a.id)); o && be("load_fav_peers", {peers: JSON.stringify(o)}) } catch (e) { console.error("Failed to load fav peers: " + e.message) } } function tr(u) { var e; try { const i = JSON.parse(u), o = i.id; if (o) { (e = window.curConn) == null || e.close(); const a = new Wt; return a.setRemoteId(o), a.setSessionInfo(i), we(a), gt("last_remote_id", o), "" } else return "No id found in session data " + u } catch (i) { return i.message } } function ar(u) { try { if (!e0()) return; Kt() } catch (e) { Vt("error", "Error", e.message, "") } } function or(u) { Se() } function nr(u, e) { function i(o) { return /^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$/.test(o) } if (i(u)) { if (u.startsWith("[")) { let o = u.split("]:"); if (o.length === 2) { let a = parseInt(o[1]) || 0; if (a > 0) return `${o[0]}]:${a + e}` } } } else if (u.includes(":")) { let o = u.split(":"); if (o.length === 2) { let a = parseInt(o[1]) || 0; if (a > 0) return `${o[0]}:${a + e}` } } return u } function Xt() { const u = A.getItem("api-server"); if (u) return u; const e = A.getItem("custom-rendezvous-server"); if (e) { let i = nr(e, -2); return i == e ? `http://${i}:${Ut - 2}` : `http://${i}` } return "https://admin.rustdesk.com" } function Yt(u) { if (!Pt()) return ""; const e = Xt(); return !e || e.includes("rustdesk.com") ? "" : e + "/api/audit/" + u } function $t(u, e, i) { try { Z4.exports.ZstdCodec.run(a => { var t = new a.Simple; i(e ? u.map(s => t.compress(s, 3)) : t.compress(u, 3)) }) } catch (o) { console.error("Compress failed: ", o) } } function Re(u, e, i) { try { Z4.exports.ZstdCodec.run(o => { var a = new o.Simple; i(e ? u.map(t => a.decompress(t)) : a.decompress(u)) }) } catch (o) { console.error("Decompress failed: ", o) } } async function ua(u, e) { return new Promise((i, o) => { try { Z4.exports.ZstdCodec.run(a => { var t = new a.Simple; i(t.compress(u, 3)) }) } catch (a) { o(a) } }) } async function ea(u, e) { return new Promise((i, o) => { try { Z4.exports.ZstdCodec.run(a => { var t = new a.Simple; i(t.decompress(u)) }) } catch (a) { o(a) } }) } function rr() { const u = document.documentElement; u.requestFullscreen ? u.requestFullscreen() : u.mozRequestFullScreen ? u.mozRequestFullScreen() : u.webkitRequestFullscreen ? u.webkitRequestFullscreen() : u.msRequestFullscreen && u.msRequestFullscreen() } function sr() { document.exitFullscreen ? document.exitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.msExitFullscreen && document.msExitFullscreen() } function lr() { return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement } var lt = !1; function Er() { lt || (console.log("listen fullscreen"), lt = !0, document.addEventListener("fullscreenchange", () => onFullscreenChanged(!!document.fullscreenElement)), document.addEventListener("mozfullscreenchange", () => onFullscreenChanged(!!document.mozFullScreen)), document.addEventListener("webkitfullscreenchange", () => onFullscreenChanged(!!document.webkitFullscreenElement)), document.addEventListener("msfullscreenchange", () => onFullscreenChanged(!!document.msFullscreenElement))) } Er(); async function dr() { try { let u = await xt(); onLoadAbFinished(JSON.stringify(u)) } catch (u) { console.error("Failed to load ab: " + u.message), onLoadAbFinished("") } } async function cr() { try { let u = await go(); onLoadGroupFinished(JSON.stringify(u)) } catch (u) { console.error("Failed to load group: " + u.message), onLoadGroupFinished("") } } const Et = document.querySelector("#app"); if (Et) { let e = function (i, o, a) { !e0() || (i == "input-password" ? (document.querySelector("div#status").style.display = "none", document.querySelector("div#password").style.display = "block") : i ? i == "error" ? (document.querySelector("div#status").style.display = "block", document.querySelector("div#canvas").style.display = "none", document.querySelector("div#text").innerHTML = '
' + a + "
") : (document.querySelector("div#password").style.display = "none", document.querySelector("div#status").style.display = "block", document.querySelector("div#text").innerHTML = '
' + a + "
") : (document.querySelector("div#canvas").style.display = "block", document.querySelector("div#password").style.display = "none", document.querySelector("div#status").style.display = "none")) }; Et.innerHTML = `
Host:
Key:
Id:
`; let u; window.init(), document.body.onload = () => { const i = document.querySelector("#host"); i.value = A.getItem("custom-rendezvous-server"); const o = document.querySelector("#id"); o.value = A.getItem("id"); const a = document.querySelector("#key"); a.value = A.getItem("key"), u = YUVCanvas.attach(document.getElementById("player")) }, window.connect = () => { const i = document.querySelector("#host"); A.setItem("custom-rendezvous-server", i.value); const o = document.querySelector("#id"); A.setItem("id", o.value); const a = document.querySelector("#key"); A.setItem("key", a.value), (async () => { const s = Ht(); s.setMsgbox(e), s.setDraw(l => { pe(l), u.drawFrame(l) }), document.querySelector("div#status").style.display = "block", document.querySelector("div#connect").style.display = "none", document.querySelector("div#text").innerHTML = "Connecting ...", s.setPeerId(o.value), await s.start() })() }, window.cancel = () => { Se(), document.querySelector("div#connect").style.display = "block", document.querySelector("div#password").style.display = "none", document.querySelector("div#status").style.display = "none", document.querySelector("div#canvas").style.display = "none" }, window.confirm = () => { const i = document.querySelector("input#password").value; i && (document.querySelector("div#password").style.display = "none", e0().login(i)) } }