diff --git a/Desktop.Shared/Services/DtoMessageHandler.cs b/Desktop.Shared/Services/DtoMessageHandler.cs index c03feab2f..def60c956 100644 --- a/Desktop.Shared/Services/DtoMessageHandler.cs +++ b/Desktop.Shared/Services/DtoMessageHandler.cs @@ -5,6 +5,7 @@ using MessagePack; using Microsoft.Extensions.Logging; using Remotely.Desktop.Native.Windows; +using Remotely.Shared.Enums; namespace Remotely.Desktop.Shared.Services; @@ -126,6 +127,9 @@ public async Task ParseMessage(IViewer viewer, byte[] message) case DtoType.OpenFileTransferWindow: OpenFileTransferWindow(viewer); break; + case DtoType.QualityMode: + SetQualityMode(wrapper, viewer); + break; default: break; } @@ -284,6 +288,19 @@ private void OpenFileTransferWindow(IViewer viewer) _fileTransferService.OpenFileTransferWindow(viewer); } + private void SetQualityMode(DtoWrapper wrapper, IViewer viewer) + { + if (!DtoChunker.TryComplete(wrapper, out var dto)) + { + return; + } + + viewer.QualityMode = dto!.QualityMode; + _logger.LogInformation("Quality mode changed to {qualityMode} for viewer {viewerConnectionId}.", + dto.QualityMode, + viewer.ViewerConnectionId); + } + private void SelectScreen(DtoWrapper wrapper, IViewer viewer) { if (!DtoChunker.TryComplete(wrapper, out var dto)) diff --git a/Desktop.Shared/Services/Viewer.cs b/Desktop.Shared/Services/Viewer.cs index 8ee408465..e8bff4af7 100644 --- a/Desktop.Shared/Services/Viewer.cs +++ b/Desktop.Shared/Services/Viewer.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.SignalR.Client; using Remotely.Shared.Services; using Remotely.Desktop.Native.Windows; +using Remotely.Shared.Enums; namespace Remotely.Desktop.Shared.Services; @@ -21,6 +22,7 @@ public interface IViewer : IDisposable int ImageQuality { get; } bool IsResponsive { get; } string Name { get; set; } + RemoteControlQualityMode QualityMode { get; set; } TimeSpan RoundTripLatency { get; } string ViewerConnectionId { get; set; } @@ -44,6 +46,14 @@ public interface IViewer : IDisposable public class Viewer : IViewer { public const int DefaultQuality = 80; + public const int PerformanceQuality = 40; + public const int HighQuality = 100; + + // Auto quality thresholds + private const int AutoQualityDecreaseStep = 10; + private const int AutoQualityIncreaseStep = 2; + private const double HighLatencyThresholdMs = 200; + private const double LowLatencyThresholdMs = 100; private readonly IAudioCapturer _audioCapturer; private readonly IClipboardService _clipboardService; @@ -96,6 +106,7 @@ public bool DisconnectRequested public int ImageQuality { get; private set; } = DefaultQuality; public bool IsResponsive { get; private set; } = true; public string Name { get; set; } = string.Empty; + public RemoteControlQualityMode QualityMode { get; set; } = RemoteControlQualityMode.Auto; public TimeSpan RoundTripLatency { get; private set; } public string ViewerConnectionId { get; set; } = string.Empty; @@ -108,10 +119,33 @@ public void AppendSentFrame(SentFrame sentFrame) public Task ApplyAutoQuality() { - if (ImageQuality < DefaultQuality) + switch (QualityMode) { - ImageQuality = Math.Min(DefaultQuality, ImageQuality + 2); + case RemoteControlQualityMode.Performance: + ImageQuality = PerformanceQuality; + break; + + case RemoteControlQualityMode.Quality: + ImageQuality = HighQuality; + break; + + case RemoteControlQualityMode.Auto: + default: + // Decrease quality when latency is high or viewer is falling behind. + if (RoundTripLatency.TotalMilliseconds > HighLatencyThresholdMs || + _lastFrameSent - _lastFrameReceived > TimeSpan.FromMilliseconds(500)) + { + ImageQuality = Math.Max(PerformanceQuality, ImageQuality - AutoQualityDecreaseStep); + } + else if (RoundTripLatency.TotalMilliseconds < LowLatencyThresholdMs && + _lastFrameSent - _lastFrameReceived < TimeSpan.FromMilliseconds(200)) + { + // Gradually recover quality when conditions improve. + ImageQuality = Math.Min(DefaultQuality, ImageQuality + AutoQualityIncreaseStep); + } + break; } + return Task.CompletedTask; } diff --git a/Desktop.UI/ViewModels/Fakes/FakeMainViewViewModel.cs b/Desktop.UI/ViewModels/Fakes/FakeMainViewViewModel.cs index b1de8b17d..939946a3c 100644 --- a/Desktop.UI/ViewModels/Fakes/FakeMainViewViewModel.cs +++ b/Desktop.UI/ViewModels/Fakes/FakeMainViewViewModel.cs @@ -4,6 +4,7 @@ using Remotely.Desktop.Shared.ViewModels; using Remotely.Shared.Models; using Remotely.Shared.Models.Dtos; +using Remotely.Shared.Enums; using System.Collections.ObjectModel; using System.Windows.Input; @@ -84,6 +85,8 @@ private class FakeViewer : IViewer public string Name { get; set; } = "Rick James"; + public RemoteControlQualityMode QualityMode { get; set; } = RemoteControlQualityMode.Auto; + public TimeSpan RoundTripLatency => default; public string ViewerConnectionId { get; set; } = string.Empty; diff --git a/Server/Pages/Viewer.cshtml b/Server/Pages/Viewer.cshtml index 1c175f6af..bf7413bd0 100644 --- a/Server/Pages/Viewer.cshtml +++ b/Server/Pages/Viewer.cshtml @@ -67,6 +67,27 @@ + +
diff --git a/Server/wwwroot/src/Enums/DtoType.js b/Server/wwwroot/src/Enums/DtoType.js index d96178373..a6a22ff5c 100644 --- a/Server/wwwroot/src/Enums/DtoType.js +++ b/Server/wwwroot/src/Enums/DtoType.js @@ -24,5 +24,6 @@ export var DtoType; DtoType[DtoType["FrameReceived"] = 25] = "FrameReceived"; DtoType[DtoType["OpenFileTransferWindow"] = 27] = "OpenFileTransferWindow"; DtoType[DtoType["SessionMetrics"] = 28] = "SessionMetrics"; + DtoType[DtoType["QualityMode"] = 29] = "QualityMode"; })(DtoType || (DtoType = {})); //# sourceMappingURL=DtoType.js.map \ No newline at end of file diff --git a/Server/wwwroot/src/Enums/DtoType.js.map b/Server/wwwroot/src/Enums/DtoType.js.map index f0bb34bb0..5e0873e8f 100644 --- a/Server/wwwroot/src/Enums/DtoType.js.map +++ b/Server/wwwroot/src/Enums/DtoType.js.map @@ -1 +1 @@ -{"version":3,"file":"DtoType.js","sourceRoot":"","sources":["DtoType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,OAyBX;AAzBD,WAAY,OAAO;IACf,iDAAc,CAAA;IACd,iDAAc,CAAA;IACd,uDAAiB,CAAA;IACjB,mDAAe,CAAA;IACf,qDAAgB,CAAA;IAChB,qDAAgB,CAAA;IAChB,+CAAa,CAAA;IACb,+CAAa,CAAA;IACb,4CAAY,CAAA;IACZ,oCAAQ,CAAA;IACR,kDAAe,CAAA;IACf,4CAAY,CAAA;IACZ,wCAAU,CAAA;IACV,kDAAe,CAAA;IACf,oDAAgB,CAAA;IAChB,8DAAqB,CAAA;IACrB,sDAAiB,CAAA;IACjB,8CAAa,CAAA;IACb,sCAAS,CAAA;IACT,4DAAoB,CAAA;IACpB,0DAAmB,CAAA;IACnB,wDAAkB,CAAA;IAClB,0EAA2B,CAAA;IAC3B,0DAAmB,CAAA;AACvB,CAAC,EAzBW,OAAO,KAAP,OAAO,QAyBlB"} \ No newline at end of file +{"version":3,"file":"DtoType.js","sourceRoot":"","sources":["DtoType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,OA0BX;AA1BD,WAAY,OAAO;IACf,iDAAc,CAAA;IACd,iDAAc,CAAA;IACd,uDAAiB,CAAA;IACjB,mDAAe,CAAA;IACf,qDAAgB,CAAA;IAChB,qDAAgB,CAAA;IAChB,+CAAa,CAAA;IACb,+CAAa,CAAA;IACb,4CAAY,CAAA;IACZ,oCAAQ,CAAA;IACR,kDAAe,CAAA;IACf,4CAAY,CAAA;IACZ,wCAAU,CAAA;IACV,kDAAe,CAAA;IACf,oDAAgB,CAAA;IAChB,8DAAqB,CAAA;IACrB,sDAAiB,CAAA;IACjB,8CAAa,CAAA;IACb,sCAAS,CAAA;IACT,4DAAoB,CAAA;IACpB,0DAAmB,CAAA;IACnB,wDAAkB,CAAA;IAClB,0EAA2B,CAAA;IAC3B,0DAAmB,CAAA;IACnB,oDAAgB,CAAA;AACpB,CAAC,EA1BW,OAAO,KAAP,OAAO,QA0BlB"} \ No newline at end of file diff --git a/Server/wwwroot/src/Enums/DtoType.ts b/Server/wwwroot/src/Enums/DtoType.ts index e50bb0407..b0a47691a 100644 --- a/Server/wwwroot/src/Enums/DtoType.ts +++ b/Server/wwwroot/src/Enums/DtoType.ts @@ -22,5 +22,6 @@ SetKeyStatesUp = 24, FrameReceived = 25, OpenFileTransferWindow = 27, - SessionMetrics = 28 + SessionMetrics = 28, + QualityMode = 29 } \ No newline at end of file diff --git a/Server/wwwroot/src/Enums/RemoteControlQualityMode.js b/Server/wwwroot/src/Enums/RemoteControlQualityMode.js new file mode 100644 index 000000000..1bd5a26be --- /dev/null +++ b/Server/wwwroot/src/Enums/RemoteControlQualityMode.js @@ -0,0 +1,13 @@ +export var RemoteControlQualityMode; +(function (RemoteControlQualityMode) { + /** Auto-adapts quality based on network conditions (latency and frame delivery). + * This is the default mode. */ + RemoteControlQualityMode[RemoteControlQualityMode["Auto"] = 0] = "Auto"; + /** Uses lower image quality to reduce bandwidth usage and improve performance + * on slow or congested networks. */ + RemoteControlQualityMode[RemoteControlQualityMode["Performance"] = 1] = "Performance"; + /** Uses the highest image quality at the cost of increased bandwidth. + * Best for high-speed local networks where quality is the priority. */ + RemoteControlQualityMode[RemoteControlQualityMode["Quality"] = 2] = "Quality"; +})(RemoteControlQualityMode || (RemoteControlQualityMode = {})); +//# sourceMappingURL=RemoteControlQualityMode.js.map \ No newline at end of file diff --git a/Server/wwwroot/src/Enums/RemoteControlQualityMode.js.map b/Server/wwwroot/src/Enums/RemoteControlQualityMode.js.map new file mode 100644 index 000000000..4f4f46ff2 --- /dev/null +++ b/Server/wwwroot/src/Enums/RemoteControlQualityMode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RemoteControlQualityMode.js","sourceRoot":"","sources":["RemoteControlQualityMode.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,wBAYX;AAZD,WAAY,wBAAwB;IAChC;mCAC+B;IAC/B,uEAAQ,CAAA;IAER;wCACoC;IACpC,qFAAe,CAAA;IAEf;2EACuE;IACvE,6EAAW,CAAA;AACf,CAAC,EAZW,wBAAwB,KAAxB,wBAAwB,QAYnC"} \ No newline at end of file diff --git a/Server/wwwroot/src/Enums/RemoteControlQualityMode.ts b/Server/wwwroot/src/Enums/RemoteControlQualityMode.ts new file mode 100644 index 000000000..b6abb76e4 --- /dev/null +++ b/Server/wwwroot/src/Enums/RemoteControlQualityMode.ts @@ -0,0 +1,13 @@ +export enum RemoteControlQualityMode { + /** Auto-adapts quality based on network conditions (latency and frame delivery). + * This is the default mode. */ + Auto = 0, + + /** Uses lower image quality to reduce bandwidth usage and improve performance + * on slow or congested networks. */ + Performance = 1, + + /** Uses the highest image quality at the cost of increased bandwidth. + * Best for high-speed local networks where quality is the priority. */ + Quality = 2 +} diff --git a/Server/wwwroot/src/InputEventHandlers.js b/Server/wwwroot/src/InputEventHandlers.js index 2d78d5926..16548181f 100644 --- a/Server/wwwroot/src/InputEventHandlers.js +++ b/Server/wwwroot/src/InputEventHandlers.js @@ -1,8 +1,9 @@ -import { AudioButton, ChangeScreenButton, ScreenSelectMenu, ClipboardTransferButton, ClipboardTransferMenu, TypeClipboardButton, ConnectButton, CtrlAltDelButton, DisconnectButton, FileTransferButton, FileTransferInput, FitToScreenButton, ScreenViewer, BlockInputButton, InviteButton, KeyboardButton, TouchKeyboardInput, MenuFrame, MenuButton, ScreenViewerWrapper, WindowsSessionSelect, FileTransferMenu, FileUploadButtton, FileDownloadButton, ViewOnlyButton, FullScreenButton, RequesterNameInput, SessionIDInput, ConnectForm, CloseAllPopupMenus, ExtrasMenu, ExtrasMenuButton, WindowsSessionMenuButton, WindowsSessionMenu, MetricsButton, MetricsFrame, SetStatusMessage, BetaPillPullDown, } from "./UI.js"; +import { AudioButton, ChangeScreenButton, ScreenSelectMenu, ClipboardTransferButton, ClipboardTransferMenu, TypeClipboardButton, ConnectButton, CtrlAltDelButton, DisconnectButton, FileTransferButton, FileTransferInput, FitToScreenButton, ScreenViewer, BlockInputButton, InviteButton, KeyboardButton, TouchKeyboardInput, MenuFrame, MenuButton, ScreenViewerWrapper, WindowsSessionSelect, FileTransferMenu, FileUploadButtton, FileDownloadButton, ViewOnlyButton, FullScreenButton, RequesterNameInput, SessionIDInput, ConnectForm, CloseAllPopupMenus, ExtrasMenu, ExtrasMenuButton, WindowsSessionMenuButton, WindowsSessionMenu, MetricsButton, MetricsFrame, SetStatusMessage, BetaPillPullDown, QualityModeButton, QualityModeMenu, QualityModeLabel, QualityAutoButton, QualityPerformanceButton, QualityHighButton, } from "./UI.js"; import { Sound } from "./Sound.js"; import { ViewerApp } from "./App.js"; import { UploadFiles } from "./FileTransferService.js"; import { RemoteControlMode } from "./Enums/RemoteControlMode.js"; +import { RemoteControlQualityMode } from "./Enums/RemoteControlQualityMode.js"; import { GetDistanceBetween } from "./Utilities.js"; import { ShowToast } from "./UI.js"; var isDragging; @@ -260,6 +261,49 @@ export function ApplyInputHandlers() { MetricsButton.addEventListener("click", () => { MetricsFrame.classList.toggle("d-none"); }); + QualityModeButton.addEventListener("click", (ev) => { + ev.stopPropagation(); + CloseAllPopupMenus(QualityModeMenu.id); + const x = document.body.clientWidth - + QualityModeButton.getBoundingClientRect().right; + const right = `${x.toFixed(0)}px`; + const y = QualityModeButton.getBoundingClientRect().bottom; + const top = `${y.toFixed(0)}px`; + QualityModeMenu.style.right = right; + QualityModeMenu.style.top = top; + QualityModeMenu.classList.toggle("open"); + window.addEventListener("click", () => { + CloseAllPopupMenus(null); + }, { once: true }); + }); + const setQualityMode = async (mode, label) => { + [QualityAutoButton, QualityPerformanceButton, QualityHighButton].forEach(btn => { + btn.classList.remove("toggled"); + }); + switch (mode) { + case RemoteControlQualityMode.Auto: + QualityAutoButton.classList.add("toggled"); + break; + case RemoteControlQualityMode.Performance: + QualityPerformanceButton.classList.add("toggled"); + break; + case RemoteControlQualityMode.Quality: + QualityHighButton.classList.add("toggled"); + break; + } + QualityModeLabel.innerText = label; + await ViewerApp.MessageSender.SendQualityMode(mode); + ShowToast(`Quality mode set to: ${label}`); + }; + QualityAutoButton.addEventListener("click", async () => { + await setQualityMode(RemoteControlQualityMode.Auto, "Auto"); + }); + QualityPerformanceButton.addEventListener("click", async () => { + await setQualityMode(RemoteControlQualityMode.Performance, "Performance"); + }); + QualityHighButton.addEventListener("click", async () => { + await setQualityMode(RemoteControlQualityMode.Quality, "Quality"); + }); ScreenViewer.addEventListener("pointerup", async (ev) => { if (ViewerApp.ViewOnlyMode) { return; diff --git a/Server/wwwroot/src/InputEventHandlers.js.map b/Server/wwwroot/src/InputEventHandlers.js.map index af323835e..1e2e30779 100644 --- a/Server/wwwroot/src/InputEventHandlers.js.map +++ b/Server/wwwroot/src/InputEventHandlers.js.map @@ -1 +1 @@ -{"version":3,"file":"InputEventHandlers.js","sourceRoot":"","sources":["InputEventHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,kBAAkB,EAElB,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,IAAI,UAAmB,CAAC;AACxB,IAAI,oBAA4B,CAAC;AACjC,IAAI,iBAAyB,CAAC;AAC9B,IAAI,cAAuB,CAAC;AAC5B,IAAI,gBAAuB,CAAC;AAC5B,IAAI,gBAAuB,CAAC;AAC5B,IAAI,iBAAyB,CAAC;AAC9B,IAAI,gBAAyB,CAAC;AAC9B,IAAI,qBAA6B,CAAC;AAClC,IAAI,qBAA6B,CAAC;AAClC,IAAI,gBAAwB,CAAC;AAC7B,IAAI,gBAAwB,CAAC;AAC7B,IAAI,WAAoB,CAAC;AACzB,IAAI,cAAsB,CAAC;AAC3B,IAAI,iBAAyB,CAAC;AAC9B,IAAI,iBAAyB,CAAC;AAC9B,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACjC,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAE5B,MAAM,UAAU,kBAAkB;IAC9B,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QAC/C,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAChD,EAAE,CAAC,eAAe,EAAE,CAAC;QAErB,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExC,qEAAqE;QACrE,8DAA8D;QAC9D,mDAAmD;QACnD,MAAM,CAAC,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,MAAM,CAAC,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACnC,gBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACjC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1C,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,GAAG,EAAE;YACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACjB,CAAC;IACN,CAAC,CAAC,CAAC;IACH,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACrD,EAAE,CAAC,eAAe,EAAE,CAAC;QAErB,kBAAkB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAE7C,MAAM,CAAC,GAAG,uBAAuB,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;QAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,MAAM,CAAC,GAAG,uBAAuB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QACjE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhC,qBAAqB,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACxC,qBAAqB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACtC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,GAAG,EAAE;YACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACjB,CAAC;IACN,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC1C,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,SAAS,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;;QACjD,IACI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EACxC,CAAC;YACC,KAAK,CACD,yEAAyE,CAC5E,CAAC;YACF,OAAO;QACX,CAAC;QAED,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,SAAS,0CAAE,QAAQ,CAAA,EAAE,CAAC;YACjC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAC3D,OAAO;QACX,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACpC,OAAO;QACX,CAAC;QAED,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,CAC/B,KAAK,EAAE,IAAI,EAAE,EAAE;YACX,MAAM,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3D,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACP,KAAK,CAAC,2DAA2D,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,qCAAqC,GAAG,MAAM,CAAC,CAAC;QAChE,CAAC,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IACH,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACzC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QACD,SAAS,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAClD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACpC,OAAO;QACX,CAAC;QAED,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC9C,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1C,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;QACpC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QACvC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/C,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,EAAiB,EAAE,EAAE;YACjD,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBACrD,OAAO;YACX,CAAC;YAED,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE,CAAC;gBAClC,SAAS,CAAC,eAAe,EAAE,CAAC;YAChC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBACrD,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC9C,EAAE,CAAC,eAAe,EAAE,CAAC;QAErB,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAElC,MAAM,CAAC,GACH,QAAQ,CAAC,IAAI,CAAC,WAAW;YACzB,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC/B,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAC3B,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,GAAG,EAAE;YACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACjB,CAAC;IACN,CAAC,CAAC,CAAC;IACH,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAChD,EAAE,CAAC,eAAe,EAAE,CAAC;QAErB,MAAM,CAAC,GACH,QAAQ,CAAC,IAAI,CAAC,WAAW;YACzB,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QACrD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACrC,gBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACjC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAChC,gBAAgB,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,MAAM,CAC5D,CAAC;QACF,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;QAEtD,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,GAAG,EAAE;YACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACjB,CAAC;IACN,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC/C,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACtD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACpC,OAAO;QACX,CAAC;QAED,MAAM,SAAS,CAAC,aAAa,CAAC,0BAA0B,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;QAChD,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC/C,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC5C,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACpD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACpC,OAAO;QACX,CAAC;QACD,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACJ,MAAM,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1C,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,SAAS,CAAC,IAAI,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC/C,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,cAAc,SAAS,CAAC,SAAS,EAAE,CAAC;QACpF,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,8BAA8B,SAAS,CAAC,SAAS,cAAc,SAAS,CAAC,SAAS,EAAE,CAAC;QACrI,CAAC;QACD,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACjD,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC5C,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;aACI,CAAC;YACF,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACxC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACJ,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;QACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACzC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC,EAAE,EAAC,EAAE;QAClD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACvD,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QAExD,IAAI,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAAC;YACjC,uDAAuD;YACvD,MAAM,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE;QAChD,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE;QAC7C,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE;QAC/C,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,WAAW,CAAa;QACpE,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAErC,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAAC;YACjC,CAAC,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3D,CAAC,CAAC,eAAe,EAAE,CAAC;YAEpB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,MAAM,IAAI,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YAE9C,MAAM,YAAY,GAAG,kBAAkB,CACnC,qBAAqB,EACrB,qBAAqB,EACrB,OAAO,EACP,OAAO,CACV,CAAC;YAEF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACnB,UAAU,GAAG,IAAI,CAAC;gBAClB,yEAAyE;gBACzE,MAAM,QAAQ,GAAG,qBAAqB,GAAG,YAAY,CAAC,WAAW,CAAC;gBAClE,MAAM,QAAQ,GAAG,qBAAqB,GAAG,YAAY,CAAC,YAAY,CAAC;gBACnE,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAChE,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvE,CAAC;YACD,OAAO;QACX,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACb,CAAC,CAAC,eAAe,EAAE,CAAC;YAEpB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,IAAI,gBAAgB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;YACjE,IAAI,eAAe,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;YAC/D,IAAI,YAAY,GACZ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC;YACvE,IAAI,YAAY,GACZ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC;YACvE,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAElE,OAAO;QACX,CAAC;QAED,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,UAAU,GAAG,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACxD,IAAI,UAAU,GAAG,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAExD,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClE,6EAA6E;gBAE7E,IAAI,CAAC,WAAW,EAAE,CAAC;oBACf,0EAA0E;oBAC1E,sEAAsE;oBACtE,IAAI,gBAAgB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;oBACjE,IAAI,eAAe,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;oBAC/D,IAAI,YAAY,GACZ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC;oBACvE,IAAI,YAAY,GACZ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC;oBACvE,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CACvC,YAAY,EACZ,YAAY,CACf,CAAC;gBACN,CAAC;gBAED,WAAW,GAAG,IAAI,CAAC;gBACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,CAAC;oBACpC,OAAO;gBACX,CAAC;gBACD,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClD,MAAM,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvD,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvC,OAAO;YACX,CAAC;YAED,IAAI,WAAW,GAAG;gBACd,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,OAAO,EAAE,KAAK;aACjB,CAAC;YACF,IAAI,WAAW,GAAG;gBACd,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,OAAO,EAAE,KAAK;aACjB,CAAC;YACF,IAAI,aAAa,GAAG,kBAAkB,CAClC,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,CAChB,CAAC;YAEF,IAAI,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAEvD,mBAAmB,CAAC,QAAQ,CACxB,gBAAgB,GAAG,YAAY,EAC/B,gBAAgB,GAAG,YAAY,CAClC,CAAC;YAEF,gBAAgB,GAAG,YAAY,CAAC;YAChC,gBAAgB,GAAG,YAAY,CAAC;YAEhC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,cAAc,GAAG,IAAI,CAAC;gBACtB,IAAI,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClD,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC9B,CAAC;gBAED,IAAI,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC;gBAC5C,IAAI,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC;gBAE9C,IAAI,+BAA+B,GAC/B,CAAC,mBAAmB,CAAC,UAAU;oBAC3B,mBAAmB,CAAC,WAAW,GAAG,GAAG,CAAC;oBAC1C,mBAAmB,CAAC,WAAW,CAAC;gBACpC,IAAI,8BAA8B,GAC9B,CAAC,mBAAmB,CAAC,SAAS;oBAC1B,mBAAmB,CAAC,YAAY,GAAG,GAAG,CAAC;oBAC3C,mBAAmB,CAAC,YAAY,CAAC;gBAErC,IAAI,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxE,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAC1B,GAAG,EACH,mBAAmB;oBACnB,CAAC,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,CACpE,CAAC;gBACF,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;gBAClD,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;gBAEzD,IAAI,YAAY,GAAG,YAAY,CAAC,YAAY,GAAG,aAAa,CAAC;gBAC7D,IAAI,WAAW,GAAG,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC;gBAE1D,IAAI,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;gBAC1D,IAAI,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;gBAE3D,IAAI,SAAS,GACT,WAAW;oBACX,CAAC,+BAA+B;wBAC5B,CAAC,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC;4BAChD,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACzC,IAAI,SAAS,GACT,YAAY;oBACZ,CAAC,8BAA8B;wBAC3B,CAAC,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC;4BACjD,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAE1C,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAEnD,iBAAiB,GAAG,aAAa,CAAC;YACtC,CAAC;YACD,OAAO;QACX,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAe;QAClE,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAe;QACnE,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAe;QAClE,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC;IACzC,CAAC,CAAC,CAAC;IAGH,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,WAAW,CAAa;QACpE,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,IAAI,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,2EAA2E;QAC3E,8DAA8D;QAC9D,IAAI,GAAG,GAAG,eAAe,GAAG,EAAE,EAAE,CAAC;YAC7B,kBAAkB,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gBACvC,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpE,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,OAAO;QACX,CAAC;QAED,eAAe,GAAG,GAAG,CAAC;QACtB,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,WAAW,CAAa;QACpE,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QACrD,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,WAAW,CAAa;QAClE,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QACrD,MAAM,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAa;QAC/D,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAErC,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;YACzB,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACvC,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACvC,gBAAgB,GAAG;gBACf,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,OAAO,EAAE,KAAK;aACjB,CAAC;YACF,gBAAgB,GAAG;gBACf,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;gBACrB,OAAO,EAAE,KAAK;aACjB,CAAC;YACF,iBAAiB,GAAG,kBAAkB,CAClC,gBAAgB,CAAC,CAAC,EAClB,gBAAgB,CAAC,CAAC,EAClB,gBAAgB,CAAC,CAAC,EAClB,gBAAgB,CAAC,CAAC,CACrB,CAAC;YACF,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjE,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,UAAU,GAAG,KAAK,CAAC;QACnB,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CACrC,aAAa,CACI,CAAC;QAEtB,IAAI,YAAY,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;IACL,CAAC,CAAC,CAAC;IAGH,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,WAAW,CAAa;QACnE,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAErC,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;YACzB,cAAc,GAAG,KAAK,CAAC;YACvB,WAAW,GAAG,KAAK,CAAC;YACpB,iBAAiB,GAAG,IAAI,CAAC;YACzB,iBAAiB,GAAG,IAAI,CAAC;YACzB,gBAAgB,GAAG,IAAI,CAAC;YACxB,gBAAgB,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,QAAQ,GACR,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;YACvE,YAAY,CAAC,WAAW,CAAC;QAC7B,IAAI,QAAQ,GACR,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;YACtE,YAAY,CAAC,YAAY,CAAC;QAE9B,IAAI,gBAAgB,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAC7D,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,gBAAgB,GAAG,KAAK,CAAC;QACzB,UAAU,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACtD,EAAE,CAAC,cAAc,EAAE,CAAC;QAEpB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,IAAI,oBAAoB,IAAI,OAAO,EAAE,CAAC;YAClC,2DAA2D;YAC3D,gEAAgE;YAChE,MAAM,QAAQ,GACV,CAAC,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;gBACtD,YAAY,CAAC,WAAW,CAAC;YAC7B,MAAM,QAAQ,GACV,CAAC,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;gBACrD,YAAY,CAAC,YAAY,CAAC;YAC9B,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEhE,gBAAgB,GAAG,IAAI,CAAC;YACxB,qBAAqB,GAAG,EAAE,CAAC,OAAO,CAAC;YACnC,qBAAqB,GAAG,EAAE,CAAC,OAAO,CAAC;QACvC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,WAAW,CAAa;QAChE,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACxD,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACtD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC;QACtC,kBAAkB,CAAC,KAAK,GAAG,EAAE,CAAC;QAE9B,MAAM,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QAC7C,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,wBAAwB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACtD,EAAE,CAAC,eAAe,EAAE,CAAC;QAErB,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAE1C,MAAM,CAAC,GACH,QAAQ,CAAC,IAAI,CAAC,WAAW;YACzB,wBAAwB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,GAAG,wBAAwB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAClE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhC,kBAAkB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACvC,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACnC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,GAAG,EAAE;YACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACjB,CAAC;IACN,CAAC,CAAC,CAAC;IACH,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAClD,EAAE,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,SAAS,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,oBAAoB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACvD,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QACvC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAC9C,MAAM,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACxD,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,WAAW,CAAC;QAChD,IACI,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;YACrC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAC1C,CAAC;YACC,OAAO;QACX,CAAC;QACD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC;YAC1D,CAAC,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC;QAC9C,IACI,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;YACrC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAC1C,CAAC;YACC,OAAO;QACX,CAAC;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;QACvC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;QACvC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;IACvC,CAAC,CAAC;IACF,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;QACvB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO;QACX,CAAC;QACD,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,eAAe;IACpB,gBAAgB,GAAG,KAAK,CAAC;IACzB,UAAU,GAAG,KAAK,CAAC;IACnB,cAAc,GAAG,KAAK,CAAC;IACvB,WAAW,GAAG,KAAK,CAAC;AACxB,CAAC"} \ No newline at end of file +{"version":3,"file":"InputEventHandlers.js","sourceRoot":"","sources":["InputEventHandlers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/src/InputEventHandlers.ts b/Server/wwwroot/src/InputEventHandlers.ts index 893808ff5..d74492016 100644 --- a/Server/wwwroot/src/InputEventHandlers.ts +++ b/Server/wwwroot/src/InputEventHandlers.ts @@ -38,12 +38,19 @@ import { MetricsFrame, SetStatusMessage, BetaPillPullDown, + QualityModeButton, + QualityModeMenu, + QualityModeLabel, + QualityAutoButton, + QualityPerformanceButton, + QualityHighButton, } from "./UI.js"; import { Sound } from "./Sound.js"; import { ViewerApp } from "./App.js"; import { Point } from "./Models/Point.js"; import { UploadFiles } from "./FileTransferService.js"; import { RemoteControlMode } from "./Enums/RemoteControlMode.js"; +import { RemoteControlQualityMode } from "./Enums/RemoteControlQualityMode.js"; import { GetDistanceBetween } from "./Utilities.js"; import { ShowToast } from "./UI.js"; @@ -349,6 +356,65 @@ export function ApplyInputHandlers() { MetricsFrame.classList.toggle("d-none"); }); + QualityModeButton.addEventListener("click", (ev) => { + ev.stopPropagation(); + + CloseAllPopupMenus(QualityModeMenu.id); + + const x = + document.body.clientWidth - + QualityModeButton.getBoundingClientRect().right; + const right = `${x.toFixed(0)}px`; + const y = QualityModeButton.getBoundingClientRect().bottom; + const top = `${y.toFixed(0)}px`; + + QualityModeMenu.style.right = right; + QualityModeMenu.style.top = top; + QualityModeMenu.classList.toggle("open"); + + window.addEventListener( + "click", + () => { + CloseAllPopupMenus(null); + }, + { once: true } + ); + }); + + const setQualityMode = async (mode: RemoteControlQualityMode, label: string) => { + [QualityAutoButton, QualityPerformanceButton, QualityHighButton].forEach(btn => { + btn.classList.remove("toggled"); + }); + + switch (mode) { + case RemoteControlQualityMode.Auto: + QualityAutoButton.classList.add("toggled"); + break; + case RemoteControlQualityMode.Performance: + QualityPerformanceButton.classList.add("toggled"); + break; + case RemoteControlQualityMode.Quality: + QualityHighButton.classList.add("toggled"); + break; + } + + QualityModeLabel.innerText = label; + await ViewerApp.MessageSender.SendQualityMode(mode); + ShowToast(`Quality mode set to: ${label}`); + }; + + QualityAutoButton.addEventListener("click", async () => { + await setQualityMode(RemoteControlQualityMode.Auto, "Auto"); + }); + + QualityPerformanceButton.addEventListener("click", async () => { + await setQualityMode(RemoteControlQualityMode.Performance, "Performance"); + }); + + QualityHighButton.addEventListener("click", async () => { + await setQualityMode(RemoteControlQualityMode.Quality, "Quality"); + }); + ScreenViewer.addEventListener("pointerup", async ev => { if (ViewerApp.ViewOnlyMode) { return; diff --git a/Server/wwwroot/src/Interfaces/Dtos.js b/Server/wwwroot/src/Interfaces/Dtos.js index 3f0a81e63..7d2a84d1a 100644 --- a/Server/wwwroot/src/Interfaces/Dtos.js +++ b/Server/wwwroot/src/Interfaces/Dtos.js @@ -70,6 +70,11 @@ export class FrameReceivedDto { this.Timestamp = timestamp; } } +export class SetQualityModeDto { + constructor(qualityMode) { + this.QualityMode = qualityMode; + } +} export class TapDto { constructor(percentX, percentY) { this.PercentX = percentX; diff --git a/Server/wwwroot/src/Interfaces/Dtos.js.map b/Server/wwwroot/src/Interfaces/Dtos.js.map index a45802b00..88edbc9f0 100644 --- a/Server/wwwroot/src/Interfaces/Dtos.js.map +++ b/Server/wwwroot/src/Interfaces/Dtos.js.map @@ -1 +1 @@ -{"version":3,"file":"Dtos.js","sourceRoot":"","sources":["Dtos.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,UAAU;CAQtB;AAED,MAAM,OAAO,QAAQ;CAEpB;AAWD,MAAM,OAAO,eAAe;IACxB,YAAY,IAAY,EAAE,QAAgB;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAIJ;AAGD,MAAM,OAAO,aAAa;CACzB;AASD,MAAM,OAAO,OAAO;IAChB,YAAY,MAAkB,EAC1B,QAAgB,EAChB,SAAiB,EACjB,SAAkB,EAClB,WAAoB;QAEpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CAOJ;AAED,MAAM,OAAO,UAAU;IACnB,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CAGJ;AAED,MAAM,OAAO,WAAW;IACpB,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CAGJ;AAED,MAAM,OAAO,QAAQ;IACjB,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CAGJ;AAED,MAAM,OAAO,YAAY;IACrB,YAAY,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAKJ;AAED,MAAM,OAAO,YAAY;IACrB,YAAY,QAAgB,EAAE,QAAgB;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAIJ;AAED,MAAM,OAAO,UAAU;IACnB,YAAY,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAKJ;AAED,MAAM,OAAO,aAAa;IACtB,YAAY,MAAc,EAAE,MAAc;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CAIJ;AAmBD,MAAM,OAAO,eAAe;IACxB,YAAY,WAAmB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CAGJ;AAED,MAAM,OAAO,gBAAgB;IACzB,YAAY,SAAiB;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;CAGJ;AASD,MAAM,OAAO,MAAM;IACf,YAAY,QAAgB,EAAE,QAAgB;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAIJ;AAED,MAAM,OAAO,cAAc;IACvB,YAAY,QAAiB;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAGJ;AAGD,MAAM,OAAO,mBAAmB;IAC5B,YAAY,QAAiB;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAGJ;AAGD,MAAM,OAAO,kBAAkB;CAG9B"} \ No newline at end of file +{"version":3,"file":"Dtos.js","sourceRoot":"","sources":["Dtos.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/src/Interfaces/Dtos.ts b/Server/wwwroot/src/Interfaces/Dtos.ts index 678f655bd..5e1404c1c 100644 --- a/Server/wwwroot/src/Interfaces/Dtos.ts +++ b/Server/wwwroot/src/Interfaces/Dtos.ts @@ -174,6 +174,14 @@ export interface SessionMetricsDto { IsGpuAccelerated: boolean; } +export class SetQualityModeDto { + constructor(qualityMode: number) { + this.QualityMode = qualityMode; + } + + QualityMode: number; +} + export class TapDto { constructor(percentX: number, percentY: number) { this.PercentX = percentX; diff --git a/Server/wwwroot/src/MessageSender.js b/Server/wwwroot/src/MessageSender.js index 81277f0a8..69aa68afc 100644 --- a/Server/wwwroot/src/MessageSender.js +++ b/Server/wwwroot/src/MessageSender.js @@ -1,5 +1,5 @@ import { ViewerApp } from "./App.js"; -import { CtrlAltDelDto, KeyDownDto, KeyPressDto, KeyUpDto, MouseDownDto, MouseMoveDto, MouseUpDto, MouseWheelDto, SelectScreenDto, TapDto, ToggleAudioDto, ToggleBlockInputDto, TextTransferDto, FileDto, WindowsSessionsDto, EmptyDto, FrameReceivedDto } from "./Interfaces/Dtos.js"; +import { CtrlAltDelDto, KeyDownDto, KeyPressDto, KeyUpDto, MouseDownDto, MouseMoveDto, MouseUpDto, MouseWheelDto, SelectScreenDto, TapDto, ToggleAudioDto, ToggleBlockInputDto, TextTransferDto, FileDto, WindowsSessionsDto, EmptyDto, FrameReceivedDto, SetQualityModeDto } from "./Interfaces/Dtos.js"; import { CreateGUID } from "./Utilities.js"; import { FileTransferProgress } from "./UI.js"; import { DtoType } from "./Enums/DtoType.js"; @@ -94,5 +94,9 @@ export class MessageSender { var dto = new TextTransferDto(text, typeText); await ViewerApp.ViewerHubConnection.SendDtoToClient(dto, DtoType.TextTransfer); } + async SendQualityMode(qualityMode) { + var dto = new SetQualityModeDto(qualityMode); + await ViewerApp.ViewerHubConnection.SendDtoToClient(dto, DtoType.QualityMode); + } } //# sourceMappingURL=MessageSender.js.map \ No newline at end of file diff --git a/Server/wwwroot/src/MessageSender.js.map b/Server/wwwroot/src/MessageSender.js.map index 2bbe872c1..562d2a5ec 100644 --- a/Server/wwwroot/src/MessageSender.js.map +++ b/Server/wwwroot/src/MessageSender.js.map @@ -1 +1 @@ -{"version":3,"file":"MessageSender.js","sourceRoot":"","sources":["MessageSender.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MessageSender.js","sourceRoot":"","sources":["MessageSender.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/src/MessageSender.ts b/Server/wwwroot/src/MessageSender.ts index 536ea5a20..73dbe078b 100644 --- a/Server/wwwroot/src/MessageSender.ts +++ b/Server/wwwroot/src/MessageSender.ts @@ -17,7 +17,8 @@ import { WindowsSessionsDto, DtoWrapper, EmptyDto, - FrameReceivedDto + FrameReceivedDto, + SetQualityModeDto } from "./Interfaces/Dtos.js"; import { CreateGUID } from "./Utilities.js"; import { FileTransferProgress } from "./UI.js"; @@ -128,4 +129,9 @@ export class MessageSender { await ViewerApp.ViewerHubConnection.SendDtoToClient(dto, DtoType.TextTransfer); } + + async SendQualityMode(qualityMode: number) { + var dto = new SetQualityModeDto(qualityMode); + await ViewerApp.ViewerHubConnection.SendDtoToClient(dto, DtoType.QualityMode); + } } diff --git a/Server/wwwroot/src/UI.js b/Server/wwwroot/src/UI.js index 67e679655..de41d2ff2 100644 --- a/Server/wwwroot/src/UI.js +++ b/Server/wwwroot/src/UI.js @@ -54,6 +54,12 @@ export var WindowsSessionMenuButton = document.getElementById("windowsSessionMen export var MetricsButton = document.getElementById("metricsButton"); export var MetricsFrame = document.getElementById("metricsFrame"); export var BetaPillPullDown = document.getElementById("betaPillPullDown"); +export var QualityModeButton = document.getElementById("qualityModeButton"); +export var QualityModeMenu = document.getElementById("qualityModeMenu"); +export var QualityModeLabel = document.getElementById("qualityModeLabel"); +export var QualityAutoButton = document.getElementById("qualityAutoButton"); +export var QualityPerformanceButton = document.getElementById("qualityPerformanceButton"); +export var QualityHighButton = document.getElementById("qualityHighButton"); export function CloseAllPopupMenus(exceptMenuId) { PopupMenus.forEach(x => { if (x.id != exceptMenuId) { diff --git a/Server/wwwroot/src/UI.js.map b/Server/wwwroot/src/UI.js.map index 2d86e5a3c..09f3ca7ca 100644 --- a/Server/wwwroot/src/UI.js.map +++ b/Server/wwwroot/src/UI.js.map @@ -1 +1 @@ -{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/src/UI.ts b/Server/wwwroot/src/UI.ts index c50fec5ff..6ba2f2dbc 100644 --- a/Server/wwwroot/src/UI.ts +++ b/Server/wwwroot/src/UI.ts @@ -57,6 +57,12 @@ export var WindowsSessionMenuButton = document.getElementById("windowsSessionMen export var MetricsButton = document.getElementById("metricsButton") as HTMLButtonElement; export var MetricsFrame = document.getElementById("metricsFrame") as HTMLDivElement; export var BetaPillPullDown = document.getElementById("betaPillPullDown") as HTMLDivElement; +export var QualityModeButton = document.getElementById("qualityModeButton") as HTMLButtonElement; +export var QualityModeMenu = document.getElementById("qualityModeMenu") as HTMLDivElement; +export var QualityModeLabel = document.getElementById("qualityModeLabel") as HTMLSpanElement; +export var QualityAutoButton = document.getElementById("qualityAutoButton") as HTMLButtonElement; +export var QualityPerformanceButton = document.getElementById("qualityPerformanceButton") as HTMLButtonElement; +export var QualityHighButton = document.getElementById("qualityHighButton") as HTMLButtonElement; export function CloseAllPopupMenus(exceptMenuId: string) { PopupMenus.forEach(x => { diff --git a/Shared/Enums/RemoteControlQualityMode.cs b/Shared/Enums/RemoteControlQualityMode.cs new file mode 100644 index 000000000..cc7a52c39 --- /dev/null +++ b/Shared/Enums/RemoteControlQualityMode.cs @@ -0,0 +1,22 @@ +namespace Remotely.Shared.Enums; + +public enum RemoteControlQualityMode +{ + /// + /// Automatically adapts quality based on network conditions (latency and frame delivery). + /// This is the default mode. + /// + Auto = 0, + + /// + /// Uses lower image quality to reduce bandwidth usage and improve performance + /// on slow or congested networks. + /// + Performance = 1, + + /// + /// Uses the highest image quality at the cost of increased bandwidth. + /// Best for high-speed local networks where quality is the priority. + /// + Quality = 2 +} diff --git a/Shared/Models/Dtos/DtoType.cs b/Shared/Models/Dtos/DtoType.cs index 860ddf68c..b8a758032 100644 --- a/Shared/Models/Dtos/DtoType.cs +++ b/Shared/Models/Dtos/DtoType.cs @@ -52,5 +52,7 @@ public enum DtoType [EnumMember] OpenFileTransferWindow = 27, [EnumMember] - SessionMetrics = 28 + SessionMetrics = 28, + [EnumMember] + QualityMode = 29 } diff --git a/Shared/Models/Dtos/SetQualityModeDto.cs b/Shared/Models/Dtos/SetQualityModeDto.cs new file mode 100644 index 000000000..801d446f3 --- /dev/null +++ b/Shared/Models/Dtos/SetQualityModeDto.cs @@ -0,0 +1,11 @@ +using System.Runtime.Serialization; +using Remotely.Shared.Enums; + +namespace Remotely.Shared.Models.Dtos; + +[DataContract] +public class SetQualityModeDto +{ + [DataMember] + public RemoteControlQualityMode QualityMode { get; set; } +}