prismcast 1.8.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/app.d.ts +1 -1
- package/dist/app.js +41 -13
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.d.ts +4 -6
- package/dist/browser/cdp.js +18 -22
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +41 -11
- package/dist/browser/channelSelection.js +75 -24
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +1 -1
- package/dist/browser/index.d.ts +8 -8
- package/dist/browser/index.js +44 -45
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/login.d.ts +2 -2
- package/dist/browser/login.js +1 -1
- package/dist/browser/manifestInterceptor.d.ts +77 -0
- package/dist/browser/manifestInterceptor.js +323 -0
- package/dist/browser/manifestInterceptor.js.map +1 -0
- package/dist/browser/precaching.d.ts +1 -1
- package/dist/browser/precaching.js +23 -23
- package/dist/browser/precaching.js.map +1 -1
- package/dist/browser/tuning/comcastPolymer.d.ts +1 -1
- package/dist/browser/tuning/cox.d.ts +1 -1
- package/dist/browser/tuning/directv.d.ts +1 -1
- package/dist/browser/tuning/directv.js +65 -69
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +1 -1
- package/dist/browser/tuning/fox.js +172 -15
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.d.ts +1 -1
- package/dist/browser/tuning/hbo.js +7 -7
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +1 -1
- package/dist/browser/tuning/hulu.js +120 -113
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +3 -3
- package/dist/browser/tuning/shared.js +5 -5
- package/dist/browser/tuning/sling.d.ts +1 -1
- package/dist/browser/tuning/sling.js +30 -30
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.d.ts +1 -1
- package/dist/browser/tuning/spectrum.js +21 -22
- package/dist/browser/tuning/spectrum.js.map +1 -1
- package/dist/browser/tuning/thumbnailRow.d.ts +1 -1
- package/dist/browser/tuning/thumbnailRow.js +1 -1
- package/dist/browser/tuning/tileClick.d.ts +1 -1
- package/dist/browser/tuning/tileClick.js +5 -5
- package/dist/browser/tuning/xfinity.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.js +17 -18
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +20 -6
- package/dist/browser/video.js +30 -38
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.d.ts +1 -2
- package/dist/channels/index.js +475 -442
- package/dist/channels/index.js.map +1 -1
- package/dist/config/channelForm.d.ts +58 -0
- package/dist/config/channelForm.js +129 -0
- package/dist/config/channelForm.js.map +1 -0
- package/dist/config/consistencyProbe.d.ts +7 -0
- package/dist/config/consistencyProbe.js +143 -0
- package/dist/config/consistencyProbe.js.map +1 -0
- package/dist/config/health.d.ts +7 -6
- package/dist/config/health.js +78 -65
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +21 -14
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +9 -3
- package/dist/config/paths.js +12 -4
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.context.d.ts +8 -0
- package/dist/config/persistence.context.js +30 -0
- package/dist/config/persistence.context.js.map +1 -0
- package/dist/config/persistence.d.ts +157 -0
- package/dist/config/persistence.js +446 -0
- package/dist/config/persistence.js.map +1 -0
- package/dist/config/presets.d.ts +14 -4
- package/dist/config/presets.js +84 -75
- package/dist/config/presets.js.map +1 -1
- package/dist/config/profiles.d.ts +2 -2
- package/dist/config/profiles.js +7 -9
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/servicePacks.d.ts +46 -0
- package/dist/config/{providerPacks.js → servicePacks.js} +50 -53
- package/dist/config/servicePacks.js.map +1 -0
- package/dist/config/services.d.ts +228 -0
- package/dist/config/services.js +772 -0
- package/dist/config/services.js.map +1 -0
- package/dist/config/sites.d.ts +3 -3
- package/dist/config/sites.js +75 -75
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +522 -54
- package/dist/config/userChannels.js +1343 -366
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +108 -13
- package/dist/config/userConfig.js +296 -143
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +34 -16
- package/dist/config/userProfiles.js +189 -100
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.d.ts +1 -1
- package/dist/hdhr/channelMap.js +10 -16
- package/dist/hdhr/channelMap.js.map +1 -1
- package/dist/hdhr/deviceId.js +10 -9
- package/dist/hdhr/deviceId.js.map +1 -1
- package/dist/hdhr/discover.js +4 -5
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/index.js +12 -19
- package/dist/hdhr/index.js.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/native/codecInference.d.ts +44 -0
- package/dist/native/codecInference.js +327 -0
- package/dist/native/codecInference.js.map +1 -0
- package/dist/native/decrypt.d.ts +1 -1
- package/dist/native/index.d.ts +5 -5
- package/dist/native/index.js +45 -67
- package/dist/native/index.js.map +1 -1
- package/dist/native/probe.d.ts +27 -9
- package/dist/native/probe.js +159 -68
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +4 -2
- package/dist/native/proxy.js +56 -53
- package/dist/native/proxy.js.map +1 -1
- package/dist/native/tokenExpiry.d.ts +22 -0
- package/dist/native/tokenExpiry.js +153 -0
- package/dist/native/tokenExpiry.js.map +1 -0
- package/dist/routes/assets.js +3 -3
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/auth.js +9 -13
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/components.js +2 -2
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/browse.js +195 -0
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -0
- package/dist/routes/config/channels/endpoints/bulk.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/bulk.js +128 -0
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -0
- package/dist/routes/config/channels/endpoints/crud.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/crud.js +504 -0
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -0
- package/dist/routes/config/channels/endpoints/importExport.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/importExport.js +131 -0
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -0
- package/dist/routes/config/channels/endpoints/predefined.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/predefined.js +78 -0
- package/dist/routes/config/channels/endpoints/predefined.js.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/prefs.js +58 -0
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -0
- package/dist/routes/config/channels/endpoints/service.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/service.js +149 -0
- package/dist/routes/config/channels/endpoints/service.js.map +1 -0
- package/dist/routes/config/channels/endpoints/tags.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/tags.js +185 -0
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -0
- package/dist/routes/config/channels/http/handler.d.ts +10 -0
- package/dist/routes/config/channels/http/handler.js +20 -0
- package/dist/routes/config/channels/http/handler.js.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.d.ts +25 -0
- package/dist/routes/config/channels/http/playlistHint.js +40 -0
- package/dist/routes/config/channels/http/playlistHint.js.map +1 -0
- package/dist/routes/config/channels/http/serviceWarning.d.ts +10 -0
- package/dist/routes/config/channels/http/serviceWarning.js +28 -0
- package/dist/routes/config/channels/http/serviceWarning.js.map +1 -0
- package/dist/routes/config/channels/index.d.ts +3 -3
- package/dist/routes/config/channels/index.js +2 -2
- package/dist/routes/config/channels/index.js.map +1 -1
- package/dist/routes/config/channels/{routes.d.ts → setup.d.ts} +1 -1
- package/dist/routes/config/channels/setup.js +23 -0
- package/dist/routes/config/channels/setup.js.map +1 -0
- package/dist/routes/config/channels/table.d.ts +13 -13
- package/dist/routes/config/channels/table.js +291 -184
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +111 -0
- package/dist/routes/config/http/envelope.js +103 -0
- package/dist/routes/config/http/envelope.js.map +1 -0
- package/dist/routes/config/index.d.ts +9 -9
- package/dist/routes/config/index.js +5 -5
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/{providers.js → services.js} +105 -99
- package/dist/routes/config/services.js.map +1 -0
- package/dist/routes/config/settings.d.ts +1 -1
- package/dist/routes/config/settings.js +85 -60
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.js +17 -18
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/icons.js +2 -2
- package/dist/routes/icons.js.map +1 -1
- package/dist/routes/index.js +2 -2
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/logs.js +23 -34
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/mpegts.js +1 -1
- package/dist/routes/playlist.d.ts +5 -5
- package/dist/routes/playlist.js +84 -61
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.js +82 -61
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.js +2 -5
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +538 -581
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.js +868 -1022
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +4 -4
- package/dist/routes/root/scripts/shared.js +445 -197
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.d.ts +4 -0
- package/dist/routes/root/scripts/status.handlers.d.ts +182 -0
- package/dist/routes/root/scripts/status.handlers.js +713 -0
- package/dist/routes/root/scripts/status.handlers.js.map +1 -0
- package/dist/routes/root/scripts/status.js +85 -436
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.js +16 -8
- package/dist/routes/root/styles.js.map +1 -1
- package/dist/routes/services.d.ts +6 -0
- package/dist/routes/{providers.js → services.js} +58 -55
- package/dist/routes/services.js.map +1 -0
- package/dist/routes/sse.d.ts +16 -0
- package/dist/routes/sse.js +29 -0
- package/dist/routes/sse.js.map +1 -0
- package/dist/routes/streams.js +10 -23
- package/dist/routes/streams.js.map +1 -1
- package/dist/routes/ui.d.ts +2 -2
- package/dist/routes/ui.js +2 -0
- package/dist/routes/ui.js.map +1 -1
- package/dist/routes/upgrade.js +6 -7
- package/dist/routes/upgrade.js.map +1 -1
- package/dist/service/commands.context.d.ts +6 -0
- package/dist/service/commands.context.js +47 -0
- package/dist/service/commands.context.js.map +1 -0
- package/dist/service/commands.d.ts +53 -8
- package/dist/service/commands.js +172 -192
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.context.d.ts +6 -0
- package/dist/service/generators.context.js +45 -0
- package/dist/service/generators.context.js.map +1 -0
- package/dist/service/generators.d.ts +56 -16
- package/dist/service/generators.js +509 -291
- package/dist/service/generators.js.map +1 -1
- package/dist/service/index.d.ts +2 -2
- package/dist/streaming/clients.d.ts +2 -2
- package/dist/streaming/clients.js +2 -2
- package/dist/streaming/codec.d.ts +2 -2
- package/dist/streaming/codec.js +0 -1
- package/dist/streaming/codec.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +2 -2
- package/dist/streaming/fmp4Segmenter.js +12 -12
- package/dist/streaming/hls.d.ts +7 -7
- package/dist/streaming/hls.js +104 -92
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +3 -3
- package/dist/streaming/hlsResume.js +6 -6
- package/dist/streaming/hlsResume.js.map +1 -1
- package/dist/streaming/hlsSegments.d.ts +5 -2
- package/dist/streaming/hlsSegments.js +14 -9
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/monitor.d.ts +12 -12
- package/dist/streaming/monitor.js +98 -66
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +34 -4
- package/dist/streaming/mp4Parser.js +111 -29
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +1 -1
- package/dist/streaming/mpegts.js +13 -10
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +1 -1
- package/dist/streaming/playlistBuilder.js +2 -2
- package/dist/streaming/preroll.d.ts +9 -9
- package/dist/streaming/preroll.js +40 -42
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.js +4 -4
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/recovery.d.ts +3 -3
- package/dist/streaming/recovery.js +4 -4
- package/dist/streaming/registry.d.ts +6 -6
- package/dist/streaming/registry.js +4 -8
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +11 -10
- package/dist/streaming/setup.js +120 -71
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +9 -3
- package/dist/streaming/showInfo.js +33 -27
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +8 -7
- package/dist/streaming/statusEmitter.js +5 -5
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +139 -36
- package/dist/types/channels.js +39 -1
- package/dist/types/channels.js.map +1 -1
- package/dist/types/config.d.ts +22 -3
- package/dist/types/index.d.ts +9 -8
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +14 -13
- package/dist/types/selection.d.ts +49 -5
- package/dist/types/shared.d.ts +1 -1
- package/dist/types/streaming.d.ts +2 -2
- package/dist/upgrade/commands.context.d.ts +6 -0
- package/dist/upgrade/commands.context.js +29 -0
- package/dist/upgrade/commands.context.js.map +1 -0
- package/dist/upgrade/commands.d.ts +29 -2
- package/dist/upgrade/commands.js +87 -134
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.d.ts +6 -0
- package/dist/upgrade/detection.context.js +24 -0
- package/dist/upgrade/detection.context.js.map +1 -0
- package/dist/upgrade/detection.d.ts +140 -10
- package/dist/upgrade/detection.js +153 -66
- package/dist/upgrade/detection.js.map +1 -1
- package/dist/upgrade/index.d.ts +2 -2
- package/dist/utils/chromeFetch.d.ts +1 -1
- package/dist/utils/chromeFetch.js +2 -2
- package/dist/utils/clock.d.ts +14 -0
- package/dist/utils/clock.js +28 -0
- package/dist/utils/clock.js.map +1 -0
- package/dist/utils/debugFilter.d.ts +1 -1
- package/dist/utils/debugFilter.js +8 -6
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +2 -3
- package/dist/utils/delay.js +10 -16
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/evaluate.js +12 -14
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.context.d.ts +6 -0
- package/dist/utils/ffmpeg.context.js +31 -0
- package/dist/utils/ffmpeg.context.js.map +1 -0
- package/dist/utils/ffmpeg.d.ts +85 -29
- package/dist/utils/ffmpeg.js +126 -129
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +18 -2
- package/dist/utils/fileLogger.js +60 -31
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +7 -1
- package/dist/utils/format.js +22 -2
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/html.js +1 -3
- package/dist/utils/html.js.map +1 -1
- package/dist/utils/index.d.ts +21 -20
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +31 -45
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/m3u.d.ts +18 -3
- package/dist/utils/m3u.js +28 -14
- package/dist/utils/m3u.js.map +1 -1
- package/dist/utils/memo.d.ts +19 -0
- package/dist/utils/memo.js +53 -0
- package/dist/utils/memo.js.map +1 -0
- package/dist/utils/morganStream.js +4 -4
- package/dist/utils/morganStream.js.map +1 -1
- package/dist/utils/pid.d.ts +2 -2
- package/dist/utils/pid.js +2 -2
- package/dist/utils/platform.d.ts +1 -1
- package/dist/utils/platform.js +3 -2
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/retry.d.ts +2 -0
- package/dist/utils/retry.js +9 -7
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/sanitize.d.ts +2 -2
- package/dist/utils/sanitize.js +4 -4
- package/dist/utils/streamContext.d.ts +7 -0
- package/dist/utils/streamContext.js +10 -1
- package/dist/utils/streamContext.js.map +1 -1
- package/dist/utils/timing.d.ts +6 -3
- package/dist/utils/timing.js +10 -6
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.d.ts +3 -2
- package/dist/utils/version.js +15 -28
- package/dist/utils/version.js.map +1 -1
- package/package.json +14 -10
- package/dist/config/providerPacks.d.ts +0 -46
- package/dist/config/providerPacks.js.map +0 -1
- package/dist/config/providers.d.ts +0 -175
- package/dist/config/providers.js +0 -691
- package/dist/config/providers.js.map +0 -1
- package/dist/native/intercept.d.ts +0 -35
- package/dist/native/intercept.js +0 -184
- package/dist/native/intercept.js.map +0 -1
- package/dist/routes/config/channels/routes.js +0 -1477
- package/dist/routes/config/channels/routes.js.map +0 -1
- package/dist/routes/config/providers.js.map +0 -1
- package/dist/routes/providers.d.ts +0 -6
- package/dist/routes/providers.js.map +0 -1
- /package/dist/routes/config/{providers.d.ts → services.d.ts} +0 -0
package/dist/streaming/hls.js
CHANGED
|
@@ -10,9 +10,9 @@ import { createInitialStreamStatus, emitStreamAdded } from "./statusEmitter.js";
|
|
|
10
10
|
import { deleteResumeData, getResumeSegmentIndex, peekResumeData } from "./hlsResume.js";
|
|
11
11
|
import { emitCurrentSystemStatus, isLoginModeActive, unregisterManagedPage } from "../browser/index.js";
|
|
12
12
|
import { generatePrerollPlaylist, getPrerollCodec, getPrerollSegmentCount, isPrerollReady } from "./preroll.js";
|
|
13
|
-
import { getAllChannels, isPredefinedChannelDisabled } from "../config/userChannels.js";
|
|
13
|
+
import { getAllChannels, getChannelLogo, isPredefinedChannelDisabled } from "../config/userChannels.js";
|
|
14
14
|
import { getAudioPlaylist, getAudioSegment, getInitSegment, getPlaylist, getSegment, getVideoPlaylist, waitForPlaylist } from "./hlsSegments.js";
|
|
15
|
-
import { getAuthDomainForChannel,
|
|
15
|
+
import { getAuthDomainForChannel, getResolvedChannel, getServiceTagForChannel, isChannelAvailableByService, resolveServiceKey } from "../config/services.js";
|
|
16
16
|
import { getChannelStreamId, isTerminationInitiated, setChannelStreamId, terminateStream } from "./lifecycle.js";
|
|
17
17
|
import { markChannelFailure, markChannelSuccess } from "../config/health.js";
|
|
18
18
|
import { CONFIG } from "../config/index.js";
|
|
@@ -27,17 +27,17 @@ import { triggerShowNameUpdate } from "./showInfo.js";
|
|
|
27
27
|
/* This module handles HLS (HTTP Live Streaming) output using fMP4 (fragmented MP4) segments. HLS mode uses MP4/AAC capture from puppeteer-stream, which is then
|
|
28
28
|
* segmented natively without any external dependencies. The stream initialization flow has three phases:
|
|
29
29
|
*
|
|
30
|
-
* Phase 1
|
|
30
|
+
* Phase 1 - Registration (synchronous, in the request handler):
|
|
31
31
|
* The client requests a playlist. If no stream exists and preroll is available, a pending registry entry is registered immediately with a deferred preroll timer.
|
|
32
|
-
* The client receives a valid, playable playlist on the first request
|
|
32
|
+
* The client receives a valid, playable playlist on the first request - no blocking wait for the real stream. If preroll is unavailable, the request blocks until
|
|
33
33
|
* stream setup completes (fallback path).
|
|
34
34
|
*
|
|
35
|
-
* Phase 2
|
|
35
|
+
* Phase 2 - Browser setup (async, fire-and-forget from the request handler):
|
|
36
36
|
* setupStream() creates the browser page, navigates to the URL, initializes playback, and starts capture. This produces the StreamSetupResult with the capture
|
|
37
37
|
* stream, page, profile, and monitor. The pending registry entry is filled in with these references.
|
|
38
38
|
*
|
|
39
|
-
* Phase 3
|
|
40
|
-
* If the
|
|
39
|
+
* Phase 3 - Streaming pipeline (async, after browser setup):
|
|
40
|
+
* If the service's manifest is interceptable, native HLS streaming is attempted via startNativeProxy(). If native is viable, the capture pipeline is stopped and
|
|
41
41
|
* the proxy takes over. Otherwise, createCaptureSegmenter() creates the fMP4 segmenter and pipes the capture stream. When the first real playlist arrives
|
|
42
42
|
* (from either the segmenter or native proxy), the preroll timer is cancelled and the client receives live content on the next poll.
|
|
43
43
|
*
|
|
@@ -46,13 +46,44 @@ import { triggerShowNameUpdate } from "./showInfo.js";
|
|
|
46
46
|
* URL and profile, allowing them to use the same channelToStreamId deduplication mechanism as predefined channels.
|
|
47
47
|
*/
|
|
48
48
|
// Delay before seeding the preroll playlist in milliseconds. If stream setup completes before this timer fires, the preroll is skipped and the client receives real
|
|
49
|
-
// content directly. This ensures fast-tuning
|
|
49
|
+
// content directly. This ensures fast-tuning services (native HLS at 2-3s, most capture services at 4-7s) never see preroll, while slow services (Xfinity/Cox at
|
|
50
50
|
// 13-15s) get preroll content after the delay to prevent HTTP timeouts.
|
|
51
51
|
const PREROLL_DELAY_MS = 9_000;
|
|
52
|
+
/**
|
|
53
|
+
* Builds the onError/onStop callbacks for createFMP4Segmenter. Both callbacks share the same termination chain (skip-if-already-terminating guard, log error,
|
|
54
|
+
* terminate stream, emit current system status); the only differences between callsites are the log-message and termination-reason suffixes used to mark the
|
|
55
|
+
* post-tab-replacement scenario. Centralizing the shape prevents drift if the termination contract evolves.
|
|
56
|
+
* @param streamId - The numeric stream id.
|
|
57
|
+
* @param channelName - The channel name for log messages.
|
|
58
|
+
* @param options - Optional logSuffix appended to the log message; optional reasonSuffix appended to the termination reason. Both default to no suffix.
|
|
59
|
+
* @returns onError and onStop callbacks ready to spread into createFMP4Segmenter options.
|
|
60
|
+
*/
|
|
61
|
+
function buildSegmenterTerminationHandlers(streamId, channelName, options = {}) {
|
|
62
|
+
const logSfx = options.logSuffix ? " " + options.logSuffix : "";
|
|
63
|
+
const reasonSfx = options.reasonSuffix ? " " + options.reasonSuffix : "";
|
|
64
|
+
return {
|
|
65
|
+
onError: (error) => {
|
|
66
|
+
if (isTerminationInitiated(streamId)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
LOG.error("Segmenter error" + logSfx + " for %s: %s.", channelName, formatError(error));
|
|
70
|
+
terminateStream(streamId, channelName, "stream processing error" + reasonSfx);
|
|
71
|
+
void emitCurrentSystemStatus();
|
|
72
|
+
},
|
|
73
|
+
onStop: () => {
|
|
74
|
+
if (isTerminationInitiated(streamId)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
LOG.error("Segmenter stopped unexpectedly" + logSfx + " for %s.", channelName);
|
|
78
|
+
terminateStream(streamId, channelName, "stream ended unexpectedly" + reasonSfx);
|
|
79
|
+
void emitCurrentSystemStatus();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
52
83
|
// Login mode error body used by both validateChannel() and handlePlayStream() to ensure consistent response format.
|
|
53
84
|
const LOGIN_MODE_BODY = { error: "Login in progress", message: "Please complete authentication before starting new streams." };
|
|
54
85
|
/**
|
|
55
|
-
* Validates a channel name for streaming. Performs all fast, synchronous checks: disabled status,
|
|
86
|
+
* Validates a channel name for streaming. Performs all fast, synchronous checks: disabled status, service resolution, channel lookup, and login mode. Returns a
|
|
56
87
|
* discriminated union so callers can handle success and failure without coupling to Express response objects.
|
|
57
88
|
*
|
|
58
89
|
* This is extracted from ensureChannelStream() so it can be called by both HLS and MPEG-TS code paths without duplicating the validation logic.
|
|
@@ -64,23 +95,31 @@ export function validateChannel(channelName) {
|
|
|
64
95
|
if (isPredefinedChannelDisabled(channelName)) {
|
|
65
96
|
return { body: "Channel is disabled.", statusCode: 404, valid: false };
|
|
66
97
|
}
|
|
67
|
-
// Resolve
|
|
98
|
+
// Resolve service selection. For multi-service channels, this returns the user's selected service key (e.g., "espn-disneyplus"). For single-service channels
|
|
68
99
|
// or if no selection exists, it returns the canonical key unchanged.
|
|
69
|
-
const resolvedKey =
|
|
70
|
-
// Get the resolved channel with inheritance applied. For
|
|
100
|
+
const resolvedKey = resolveServiceKey(channelName);
|
|
101
|
+
// Get the resolved channel with inheritance applied. For service variants, this merges the variant's properties with inherited properties from the canonical
|
|
71
102
|
// entry (name, stationId).
|
|
72
103
|
const channel = getResolvedChannel(resolvedKey);
|
|
73
104
|
// Fall back to getAllChannels if the resolved channel doesn't exist (e.g., for ad-hoc streams or non-grouped channels).
|
|
74
105
|
const effectiveChannel = channel ?? getAllChannels()[channelName];
|
|
75
|
-
// Log a warning if a
|
|
106
|
+
// Log a warning if a service selection resolved to a missing variant (e.g., variant was removed from channels after selection was saved).
|
|
76
107
|
if (!channel && (resolvedKey !== channelName)) {
|
|
77
|
-
LOG.warn("
|
|
108
|
+
LOG.warn("Service '%s' not found for channel '%s'. Using default service.", resolvedKey, channelName);
|
|
78
109
|
}
|
|
79
110
|
// Runtime check needed even though TypeScript thinks channel is always defined (Record indexing quirk).
|
|
80
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
81
111
|
if (!effectiveChannel) {
|
|
82
112
|
return { body: "Channel not found.", statusCode: 404, valid: false };
|
|
83
113
|
}
|
|
114
|
+
// Enforce the user's active service filter at the streaming boundary. A channel whose every variant tag is excluded by enabledServices is structurally hidden
|
|
115
|
+
// from the M3U playlist (built from getVisibleChannels), from the HDHomeRun lineup (iterates getAllChannels which filters through the same predicate), and
|
|
116
|
+
// from getAllChannels itself. Letting a stream request through here would diverge from those views: capture a browser tab for a service the user explicitly
|
|
117
|
+
// excluded, increment recovery budget on that service, and surface confusing logs for a channel the user cannot see. The predicate takes the canonical key
|
|
118
|
+
// (channelName here is the URL-supplied canonical, not the post-resolveServiceKey variant) and is the single source of truth for service-filter visibility -
|
|
119
|
+
// the same predicate already used by getVisibleChannels, the channel table renderer, and the bulk-action allowlist builders.
|
|
120
|
+
if (!isChannelAvailableByService(channelName)) {
|
|
121
|
+
return { body: "Channel not available.", statusCode: 404, valid: false };
|
|
122
|
+
}
|
|
84
123
|
// Block new stream requests while login mode is active. This prevents the browser from being disrupted during authentication.
|
|
85
124
|
if (isLoginModeActive()) {
|
|
86
125
|
return { body: LOGIN_MODE_BODY, statusCode: 503, valid: false };
|
|
@@ -108,8 +147,8 @@ export function sendValidationError(validation, res) {
|
|
|
108
147
|
* The existing-stream check runs first so that ad-hoc streams (registered under synthetic keys like "play-a1b2c3d4") can be served without failing the
|
|
109
148
|
* "Channel not found" check.
|
|
110
149
|
*
|
|
111
|
-
* For channels with multiple
|
|
112
|
-
* The stream is registered under the canonical key (channelName) for deduplication, but uses the resolved
|
|
150
|
+
* For channels with multiple services (e.g., ESPN via ESPN.com or Disney+), the user's service selection is resolved before looking up the channel definition.
|
|
151
|
+
* The stream is registered under the canonical key (channelName) for deduplication, but uses the resolved service's URL and settings.
|
|
113
152
|
*
|
|
114
153
|
* @param channelName - The channel key (or synthetic ad-hoc key) to stream.
|
|
115
154
|
* @param req - Express request object (for profile override and client IP).
|
|
@@ -124,7 +163,7 @@ export async function ensureChannelStream(channelName, req, res) {
|
|
|
124
163
|
if (streamId !== undefined) {
|
|
125
164
|
return streamId;
|
|
126
165
|
}
|
|
127
|
-
// No existing stream
|
|
166
|
+
// No existing stream - validate the channel and start a new one. Channel validation is only needed for new streams because existing streams were already validated
|
|
128
167
|
// at startup time.
|
|
129
168
|
const validation = validateChannel(channelName);
|
|
130
169
|
if (!validation.valid) {
|
|
@@ -136,7 +175,7 @@ export async function ensureChannelStream(channelName, req, res) {
|
|
|
136
175
|
const prerollCodec = getPrerollCodec();
|
|
137
176
|
if (isPrerollReady(prerollCodec)) {
|
|
138
177
|
// Check capacity before registering the pending entry. The pending entry occupies a registry slot, so registering it at max capacity would cause setupStream's
|
|
139
|
-
// capacity check to reject
|
|
178
|
+
// capacity check to reject - after we've already returned a preroll playlist to the client. By gating here, we can still send a proper 503 error response.
|
|
140
179
|
if (getStreamCount() >= CONFIG.streaming.maxConcurrentStreams) {
|
|
141
180
|
if (!reclaimIdleStream()) {
|
|
142
181
|
res.setHeader("Retry-After", "10");
|
|
@@ -153,7 +192,7 @@ export async function ensureChannelStream(channelName, req, res) {
|
|
|
153
192
|
channelName,
|
|
154
193
|
clientAddress,
|
|
155
194
|
numericStreamId: pending.numericStreamId,
|
|
156
|
-
profileOverride: req.query
|
|
195
|
+
profileOverride: req.query["profile"],
|
|
157
196
|
streamIdStr: pending.streamIdStr,
|
|
158
197
|
url: validation.channel.url
|
|
159
198
|
}).catch((error) => {
|
|
@@ -280,15 +319,15 @@ export function handleHLSVariantPlaylist(req, res) {
|
|
|
280
319
|
* @param res - Express response object.
|
|
281
320
|
*/
|
|
282
321
|
export async function handlePlayStream(req, res) {
|
|
283
|
-
const url = req.query
|
|
322
|
+
const url = req.query["url"]?.trim();
|
|
284
323
|
if (!url) {
|
|
285
324
|
res.status(400).send("The url query parameter is required.");
|
|
286
325
|
return;
|
|
287
326
|
}
|
|
288
|
-
const clickSelector = req.query
|
|
289
|
-
const clickToPlay = req.query
|
|
290
|
-
const profileOverride = req.query
|
|
291
|
-
const selector = req.query
|
|
327
|
+
const clickSelector = req.query["clickSelector"];
|
|
328
|
+
const clickToPlay = req.query["clickToPlay"] === "true";
|
|
329
|
+
const profileOverride = req.query["profile"];
|
|
330
|
+
const selector = req.query["selector"];
|
|
292
331
|
// Generate a deterministic synthetic key from the trimmed URL, profile, selector, clickToPlay, and clickSelector. Including these ensures that the same URL with
|
|
293
332
|
// different options produces separate streams. The newline delimiter is safe since URLs cannot contain literal newlines.
|
|
294
333
|
const channelName = "play-" + createHash("sha256").update(url + "\n" + (profileOverride ?? "") + "\n" + (selector ?? "") + "\n" + (clickToPlay ? "1" : "") + "\n" + (clickSelector ?? "")).digest("hex").slice(0, 8);
|
|
@@ -329,7 +368,7 @@ export async function handlePlayStream(req, res) {
|
|
|
329
368
|
}
|
|
330
369
|
// Response Helpers.
|
|
331
370
|
/**
|
|
332
|
-
* Sends the playlist for a stream. With the deferred preroll timer, the playlist may not be available immediately after stream registration
|
|
371
|
+
* Sends the playlist for a stream. With the deferred preroll timer, the playlist may not be available immediately after stream registration - it arrives when either
|
|
333
372
|
* the timer fires (seeding preroll) or the segmenter produces real content, whichever comes first. This function awaits the playlistReady promise to handle that
|
|
334
373
|
* window. For the blocking fallback path (no FFmpeg / no preroll), the playlist is guaranteed to exist because initializeStream blocks until the segmenter produces
|
|
335
374
|
* it. Returns 404 only if the stream was terminated or the playlist wait timed out.
|
|
@@ -354,7 +393,7 @@ async function sendPlaylistResponse(streamId, clientAddress, res) {
|
|
|
354
393
|
updateLastAccess(streamId);
|
|
355
394
|
registerClient(streamId, clientAddress, "hls");
|
|
356
395
|
// When still serving preroll, regenerate the progressive playlist on each poll so the sliding window advances based on elapsed wall-clock time. This simulates a
|
|
357
|
-
// live stream
|
|
396
|
+
// live stream - the client sees new segments appear on each poll and keeps playing without stalling. Once real content arrives, hasRealPlaylist becomes true and
|
|
358
397
|
// the segmenter's playlist takes over.
|
|
359
398
|
const stream = getStream(streamId);
|
|
360
399
|
if (stream && !stream.hls.hasRealPlaylist) {
|
|
@@ -404,7 +443,7 @@ function cleanupOrphanedSetup(segmenter) {
|
|
|
404
443
|
LOG.debug("streaming:setup", "Stream was terminated during setup. Stopping orphaned segmenter.");
|
|
405
444
|
segmenter.stop();
|
|
406
445
|
}
|
|
407
|
-
// Maps vertical resolution heights to standard display labels. Used by formatNativeQuality() to convert "1920x1080"
|
|
446
|
+
// Maps vertical resolution heights to standard display labels. Used by formatNativeQuality() to convert "1920x1080" -> "1080p".
|
|
408
447
|
const RESOLUTION_LABELS = { "1080": "1080p", "2160": "4K", "360": "360p", "480": "480p", "720": "720p" };
|
|
409
448
|
/**
|
|
410
449
|
* Formats the native HLS quality string for the "Streaming..." log line. Combines codec, bandwidth (as Mbps), and resolution (as standard label like "1080p")
|
|
@@ -425,7 +464,7 @@ function formatNativeQuality(bandwidth, codec, resolution) {
|
|
|
425
464
|
if (resolution) {
|
|
426
465
|
// Map the vertical resolution to a standard label. Parse the height from "WIDTHxHEIGHT" format.
|
|
427
466
|
const height = resolution.split("x")[1];
|
|
428
|
-
parts.push(RESOLUTION_LABELS[height] ?? resolution);
|
|
467
|
+
parts.push((height ? RESOLUTION_LABELS[height] : undefined) ?? resolution);
|
|
429
468
|
}
|
|
430
469
|
if (parts.length === 0) {
|
|
431
470
|
return "";
|
|
@@ -524,22 +563,7 @@ function createTabReplacementHandler(numericStreamId, streamId, channelName, url
|
|
|
524
563
|
// for monotonic baseMediaDecodeTime, and mark the first segment with a discontinuity tag so clients know the stream parameters may have changed.
|
|
525
564
|
const newSegmenter = createFMP4Segmenter({
|
|
526
565
|
initialTrackTimestamps: currentTrackTimestamps,
|
|
527
|
-
|
|
528
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
529
|
-
return;
|
|
530
|
-
}
|
|
531
|
-
LOG.error("Segmenter error after tab replacement for %s: %s.", channelName, formatError(error));
|
|
532
|
-
terminateStream(numericStreamId, channelName, "stream processing error after recovery");
|
|
533
|
-
void emitCurrentSystemStatus();
|
|
534
|
-
},
|
|
535
|
-
onStop: () => {
|
|
536
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
LOG.error("Segmenter stopped unexpectedly after tab replacement for %s.", channelName);
|
|
540
|
-
terminateStream(numericStreamId, channelName, "stream ended unexpectedly after recovery");
|
|
541
|
-
void emitCurrentSystemStatus();
|
|
542
|
-
},
|
|
566
|
+
...buildSegmenterTerminationHandlers(numericStreamId, channelName, { logSuffix: "after tab replacement", reasonSuffix: "after recovery" }),
|
|
543
567
|
pendingDiscontinuity: true,
|
|
544
568
|
previousInitSegment: currentInitSegment,
|
|
545
569
|
priorSessionStats: currentSessionStats,
|
|
@@ -584,15 +608,15 @@ export async function initializeStream(options) {
|
|
|
584
608
|
return await completeStreamSetup({ ...options, numericStreamId, streamIdStr });
|
|
585
609
|
}
|
|
586
610
|
catch (error) {
|
|
587
|
-
// Skip logging
|
|
611
|
+
// Skip logging - callers (startHLSStream, handlePlayStream, handleMpegTsStream) handle the re-thrown error with their own error responses and logging.
|
|
588
612
|
handleSetupFailure(numericStreamId, channelName, channel, error, false);
|
|
589
613
|
throw error;
|
|
590
614
|
}
|
|
591
615
|
}
|
|
592
616
|
/**
|
|
593
617
|
* Registers a pending stream entry in the registry with deferred preroll. This is the synchronous Phase 1 of the two-phase stream initialization used by the HLS
|
|
594
|
-
* playlist handler. The pending entry has a real stream ID but no playlist yet
|
|
595
|
-
* or real content arrives from the segmenter/native proxy. This ensures that fast-tuning streams (native, most capture
|
|
618
|
+
* playlist handler. The pending entry has a real stream ID but no playlist yet - the response is held until either the preroll timer fires (after PREROLL_DELAY_MS)
|
|
619
|
+
* or real content arrives from the segmenter/native proxy. This ensures that fast-tuning streams (native, most capture services) skip preroll entirely, while slow
|
|
596
620
|
* streams (Xfinity/Cox at 13-15s) get preroll content after the delay.
|
|
597
621
|
* @param channelName - The channel key for registration and deduplication.
|
|
598
622
|
* @param channel - The resolved channel definition.
|
|
@@ -607,10 +631,10 @@ function registerPendingStream(channelName, channel, clientAddress, req, codec)
|
|
|
607
631
|
// Derive the base URL from the request for absolute preroll segment URLs.
|
|
608
632
|
const protocol = req.protocol;
|
|
609
633
|
const forwardedHost = req.get("x-forwarded-host");
|
|
610
|
-
const host = forwardedHost ? forwardedHost.split(",")[0].trim() : req.get("host");
|
|
634
|
+
const host = forwardedHost ? (forwardedHost.split(",")[0] ?? "").trim() : req.get("host");
|
|
611
635
|
const fallbackHost = CONFIG.server.host + ":" + String(CONFIG.server.port);
|
|
612
636
|
const baseUrl = protocol + "://" + (host ?? fallbackHost);
|
|
613
|
-
// Create HLS state with a deferred preroll timer. The timer fires after PREROLL_DELAY_MS
|
|
637
|
+
// Create HLS state with a deferred preroll timer. The timer fires after PREROLL_DELAY_MS - if stream setup hasn't completed by then, preroll is seeded and the
|
|
614
638
|
// playlist response is unblocked. For resume streams, the preroll's MEDIA-SEQUENCE is offset by the saved segment index so it continues from the prior session's
|
|
615
639
|
// sequence range. The timer is cancelled by completeStreamSetup() when the segmenter or native proxy is created, preventing races.
|
|
616
640
|
const hls = createHLSState();
|
|
@@ -621,7 +645,7 @@ function registerPendingStream(channelName, channel, clientAddress, req, codec)
|
|
|
621
645
|
const streamStartTime = new Date();
|
|
622
646
|
if (isPrerollReady(codec)) {
|
|
623
647
|
// Set preroll metadata immediately at registration so the segmenter and native proxy can read it regardless of whether the deferred timer has fired. The segment
|
|
624
|
-
// count, codec, and base URL are structural properties of the preroll system
|
|
648
|
+
// count, codec, and base URL are structural properties of the preroll system - they determine segment index offsets, codec-aware URL paths, and composite playlist
|
|
625
649
|
// behavior. The timer controls only the client-facing timing (when the standalone preroll playlist begins serving). Decoupling these ensures correct behavior for
|
|
626
650
|
// fast-tune/slow-proxy scenarios (e.g., Fox native at 5s tune but 15s proxy first poll) where setup completes before the timer fires.
|
|
627
651
|
hls.prerollBaseUrl = baseUrl;
|
|
@@ -688,7 +712,7 @@ function createPendingEntry(options) {
|
|
|
688
712
|
function handleSetupFailure(numericStreamId, channelName, channel, error, logError = true) {
|
|
689
713
|
// Mark channel health as failed. Only for predefined channels (channel is defined). Ad-hoc URL streams have no persistent channel identity.
|
|
690
714
|
if (channel) {
|
|
691
|
-
const failVariantKey =
|
|
715
|
+
const failVariantKey = resolveServiceKey(channelName);
|
|
692
716
|
const failAuthDomain = getAuthDomainForChannel(failVariantKey);
|
|
693
717
|
markChannelFailure(channelName, failAuthDomain);
|
|
694
718
|
}
|
|
@@ -719,7 +743,8 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
719
743
|
if (!setup.manifestInterception) {
|
|
720
744
|
return null;
|
|
721
745
|
}
|
|
722
|
-
setup.manifestInterception.
|
|
746
|
+
// The manifest interception was finalized and verified during setupStream(). By the time we get here, setup.manifestInterception.promise has already resolved
|
|
747
|
+
// (or is about to) with the URL setupStream verified. We just consume it.
|
|
723
748
|
// Read the preroll segment count from the pending entry to pass to the native coordinator. This value is set at registration time (not in the timer callback),
|
|
724
749
|
// so it's available regardless of whether the deferred preroll timer has fired. The proxy uses it for segment index offset. The base URL for composite playlists
|
|
725
750
|
// is read dynamically from the stream's HLS state at playlist generation time.
|
|
@@ -753,14 +778,14 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
753
778
|
nativeResult.proxy.stop();
|
|
754
779
|
return null;
|
|
755
780
|
}
|
|
756
|
-
// Stop the capture pipeline
|
|
781
|
+
// Stop the capture pipeline - native streaming replaces it entirely.
|
|
757
782
|
if (!setup.rawCaptureStream.destroyed) {
|
|
758
783
|
setup.rawCaptureStream.destroy();
|
|
759
784
|
}
|
|
760
785
|
if (setup.ffmpegProcess) {
|
|
761
786
|
setup.ffmpegProcess.kill();
|
|
762
787
|
}
|
|
763
|
-
// Update the registry entry to reflect native mode. For streams with separate audio, clear preroll state
|
|
788
|
+
// Update the registry entry to reflect native mode. For streams with separate audio, clear preroll state - preroll is muxed video+audio and can't be
|
|
764
789
|
// split into separate renditions. For muxed-audio streams, preserve preroll state so the proxy can build composite playlists with preroll entries.
|
|
765
790
|
currentStream.ffmpegProcess = null;
|
|
766
791
|
currentStream.hls.hasAudio = nativeResult.hasAudio;
|
|
@@ -776,12 +801,12 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
776
801
|
currentStream.nativeResolution = nativeResult.resolution;
|
|
777
802
|
currentStream.rawCaptureStream = null;
|
|
778
803
|
currentStream.streamingMode = "native";
|
|
779
|
-
// Start the native proxy. Signal init segment readiness immediately
|
|
804
|
+
// Start the native proxy. Signal init segment readiness immediately - native MPEG-TS segments carry their own PAT/PMT codec configuration in every
|
|
780
805
|
// segment, so there is no separate init segment to wait for. Without this, MPEG-TS clients block on waitForInitSegment() and time out before the proxy's
|
|
781
806
|
// first poll cycle completes.
|
|
782
807
|
nativeResult.proxy.start();
|
|
783
808
|
currentStream.hls.signalInitSegmentReady();
|
|
784
|
-
// Suppress audio on the browser page. The page stays alive for token refresh but the video element's audio is not part of the native stream
|
|
809
|
+
// Suppress audio on the browser page. The page stays alive for token refresh but the video element's audio is not part of the native stream - without
|
|
785
810
|
// suppression, it plays audibly on the local machine.
|
|
786
811
|
await suppressPageAudio(setup.page);
|
|
787
812
|
LOG.debug("native:coordinator", "Capture pipeline stopped for %s. Native proxy active.", channelName);
|
|
@@ -797,16 +822,16 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
797
822
|
*/
|
|
798
823
|
function createCaptureSegmenter(setup, numericStreamId, channelName) {
|
|
799
824
|
// Peek at resume data from a previous shutdown without consuming it. The data is consumed (deleted) only after the segmenter is successfully created and
|
|
800
|
-
// stored in the registry. This ensures resume data survives if segmenter creation fails
|
|
825
|
+
// stored in the registry. This ensures resume data survives if segmenter creation fails - the next stream start retries with the same resume state instead
|
|
801
826
|
// of losing it and causing an HLS sequence reset.
|
|
802
827
|
const resumeData = peekResumeData(channelName);
|
|
803
828
|
const currentStream = getStream(numericStreamId);
|
|
804
829
|
const prerollSegmentCount = currentStream?.hls.prerollSegmentCount ?? 0;
|
|
805
830
|
// When preroll is active, use the snapshotted resume index (stored on HLS state at registration) so the segmenter's starting index is guaranteed to match
|
|
806
|
-
// the preroll playlist's MEDIA-SEQUENCE offset. When preroll is inactive, use the resume data directly
|
|
831
|
+
// the preroll playlist's MEDIA-SEQUENCE offset. When preroll is inactive, use the resume data directly - no preroll playlist to be consistent with.
|
|
807
832
|
const baseSegmentIndex = (prerollSegmentCount > 0) ? (currentStream?.hls.resumeSegmentIndex ?? 0) : (resumeData?.segmentIndex ?? 0);
|
|
808
833
|
// Create the fMP4 segmenter. The starting segment index accounts for both the resume offset and the preroll segment range. When preroll is active, the
|
|
809
|
-
// segmenter includes preroll entries in its sliding window via the compositor. The pending discontinuity at the preroll-to-real boundary is always needed
|
|
834
|
+
// segmenter includes preroll entries in its sliding window via the compositor. The pending discontinuity at the preroll-to-real boundary is always needed -
|
|
810
835
|
// previousInitSegment is only passed without preroll, because the preroll init segment differs from the real init and the discontinuity must not be
|
|
811
836
|
// suppressed by an init-match comparison against the prior session.
|
|
812
837
|
const segmenter = createFMP4Segmenter({
|
|
@@ -824,24 +849,7 @@ function createCaptureSegmenter(setup, numericStreamId, channelName) {
|
|
|
824
849
|
pendingDiscontinuity: true,
|
|
825
850
|
startingSegmentIndex: baseSegmentIndex + prerollSegmentCount
|
|
826
851
|
} : {}),
|
|
827
|
-
|
|
828
|
-
// Skip error handling if termination was already initiated.
|
|
829
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
830
|
-
return;
|
|
831
|
-
}
|
|
832
|
-
LOG.error("Segmenter error for %s: %s.", channelName, formatError(error));
|
|
833
|
-
terminateStream(numericStreamId, channelName, "stream processing error");
|
|
834
|
-
void emitCurrentSystemStatus();
|
|
835
|
-
},
|
|
836
|
-
onStop: () => {
|
|
837
|
-
// Skip handling if termination was already initiated.
|
|
838
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
839
|
-
return;
|
|
840
|
-
}
|
|
841
|
-
LOG.error("Segmenter stopped unexpectedly for %s.", channelName);
|
|
842
|
-
terminateStream(numericStreamId, channelName, "stream ended unexpectedly");
|
|
843
|
-
void emitCurrentSystemStatus();
|
|
844
|
-
},
|
|
852
|
+
...buildSegmenterTerminationHandlers(numericStreamId, channelName),
|
|
845
853
|
streamId: numericStreamId
|
|
846
854
|
});
|
|
847
855
|
// Pipe the capture stream to the segmenter.
|
|
@@ -873,7 +881,7 @@ function createCaptureSegmenter(setup, numericStreamId, channelName) {
|
|
|
873
881
|
*/
|
|
874
882
|
async function completeStreamSetup(options) {
|
|
875
883
|
const { channel, channelName, channelSelector, clickSelector, clickToPlay, mpegTsClient, numericStreamId, profileOverride, streamIdStr, url } = options;
|
|
876
|
-
// Circuit breaker callback
|
|
884
|
+
// Circuit breaker callback - terminate the stream on unrecoverable errors.
|
|
877
885
|
const onCircuitBreak = () => {
|
|
878
886
|
const currentStreamId = getChannelStreamId(channelName);
|
|
879
887
|
if (currentStreamId !== undefined) {
|
|
@@ -890,7 +898,7 @@ async function completeStreamSetup(options) {
|
|
|
890
898
|
reclaimIdleStream();
|
|
891
899
|
}
|
|
892
900
|
// Pass the pre-allocated IDs to setupStream so it uses them instead of generating new ones. This ensures the abort controller, health monitor, and tab replacement
|
|
893
|
-
// handler all reference the same stream identity as the pending registry entry. Pass channelName only for predefined channels
|
|
901
|
+
// handler all reference the same stream identity as the pending registry entry. Pass channelName only for predefined channels - for ad-hoc streams, omitting it
|
|
894
902
|
// causes generateStreamId to derive the stream ID string from the URL (e.g., "foxsports-abc123"), which is more informative in logs.
|
|
895
903
|
const setup = await setupStream({
|
|
896
904
|
channel,
|
|
@@ -924,7 +932,7 @@ async function completeStreamSetup(options) {
|
|
|
924
932
|
return runWithStreamContext({ channelName: channel?.name, streamId: setup.streamId, url: setup.url }, async () => {
|
|
925
933
|
// The deferred preroll timer is NOT cancelled here. It continues running until the first real playlist arrives (cancelled in updatePlaylist() in
|
|
926
934
|
// hlsSegments.ts). This is critical for native streams where the browser setup completes quickly but the native proxy's first poll cycle can take 10-15+
|
|
927
|
-
// seconds. If we cancelled the timer at setup completion, the client would have no playlist during the proxy's first poll
|
|
935
|
+
// seconds. If we cancelled the timer at setup completion, the client would have no playlist during the proxy's first poll - the preroll timer fires after
|
|
928
936
|
// PREROLL_DELAY_MS and provides content during that gap. For the capture path, the segmenter produces its first playlist within ~2 seconds of creation, so
|
|
929
937
|
// the timer is cancelled almost immediately after setup anyway.
|
|
930
938
|
// Attempt native streaming if a manifest interception handle is available. If native is viable, the capture pipeline is stopped and the proxy takes over.
|
|
@@ -950,14 +958,14 @@ async function completeStreamSetup(options) {
|
|
|
950
958
|
(CONFIG.streaming.captureMode === "ffmpeg" ? "FFmpeg [" + ffmpegCodec + "]" : "Native fMP4");
|
|
951
959
|
const displayName = channel?.name ?? url;
|
|
952
960
|
const tuneTime = ((Date.now() - setup.startTime.getTime()) / 1000).toFixed(1);
|
|
953
|
-
LOG.info("Streaming %s: %s, %s, %s. Tuned in %ss%s.", displayName, setup.
|
|
954
|
-
// Mark channel health as successful. Only for predefined channels (channel is defined). Ad-hoc URL streams have no persistent channel identity. Domain
|
|
955
|
-
// is conditionally skipped when the provider defines validateTune and the tuned channel does not prove paid access (e.g., Sling Freestream
|
|
961
|
+
LOG.info("Streaming %s: %s, %s, %s. Tuned in %ss%s.", displayName, setup.serviceName, setup.profileName, captureMode, tuneTime, setup.directTune ? " (direct)" : "");
|
|
962
|
+
// Mark channel health as successful. Only for predefined channels (channel is defined). Ad-hoc URL streams have no persistent channel identity. Domain
|
|
963
|
+
// auth is conditionally skipped when the provider module defines validateTune and the tuned channel does not prove paid access (e.g., Sling Freestream).
|
|
956
964
|
if (channel) {
|
|
957
|
-
const successVariantKey =
|
|
965
|
+
const successVariantKey = resolveServiceKey(channelName);
|
|
958
966
|
const successAuthDomain = getAuthDomainForChannel(successVariantKey);
|
|
959
|
-
const
|
|
960
|
-
const provider = getProviderBySlug(
|
|
967
|
+
const successServiceTag = getServiceTagForChannel(successVariantKey);
|
|
968
|
+
const provider = getProviderBySlug(successServiceTag);
|
|
961
969
|
const markAuth = !provider?.validateTune || provider.validateTune(channel.channelSelector ?? channelName);
|
|
962
970
|
markChannelSuccess(channelName, successAuthDomain, markAuth);
|
|
963
971
|
}
|
|
@@ -974,8 +982,9 @@ async function completeStreamSetup(options) {
|
|
|
974
982
|
captureCodec: streamCodec,
|
|
975
983
|
channelName: channel?.name ?? null,
|
|
976
984
|
hardwareAccelerated: hwAccelerated,
|
|
985
|
+
logoUrl: getChannelLogo(channelName) ?? "",
|
|
977
986
|
numericStreamId,
|
|
978
|
-
|
|
987
|
+
serviceName: setup.serviceName,
|
|
979
988
|
startTime: setup.startTime,
|
|
980
989
|
streamingMode,
|
|
981
990
|
url: setup.url
|
|
@@ -992,14 +1001,14 @@ async function completeStreamSetup(options) {
|
|
|
992
1001
|
* initializeStream() for the actual setup. Error responses are sent directly to the client, including HDHomeRun-specific headers for capacity errors.
|
|
993
1002
|
*
|
|
994
1003
|
* @param channelName - The channel key (canonical key for stream registration and deduplication).
|
|
995
|
-
* @param url - The URL to stream (from the resolved
|
|
1004
|
+
* @param url - The URL to stream (from the resolved service).
|
|
996
1005
|
* @param req - Express request object (for profile override and client IP).
|
|
997
1006
|
* @param res - Express response object (for error responses).
|
|
998
|
-
* @param channel - The resolved channel definition (with inheritance applied for
|
|
1007
|
+
* @param channel - The resolved channel definition (with inheritance applied for service variants).
|
|
999
1008
|
* @returns The stream ID if successful, null if an error occurred (error response already sent).
|
|
1000
1009
|
*/
|
|
1001
1010
|
async function startHLSStream(channelName, url, req, res, channel) {
|
|
1002
|
-
const profileOverride = req.query
|
|
1011
|
+
const profileOverride = req.query["profile"];
|
|
1003
1012
|
const clientAddress = req.ip ?? req.socket.remoteAddress ?? null;
|
|
1004
1013
|
try {
|
|
1005
1014
|
return await initializeStream({ channel, channelName, clientAddress, profileOverride, url });
|
|
@@ -1020,7 +1029,7 @@ async function startHLSStream(channelName, url, req, res, channel) {
|
|
|
1020
1029
|
}
|
|
1021
1030
|
// Idle Detection.
|
|
1022
1031
|
/**
|
|
1023
|
-
* Returns all streams that have exceeded the idle timeout and have no active MPEG-TS clients. Pretuned streams are excluded
|
|
1032
|
+
* Returns all streams that have exceeded the idle timeout and have no active MPEG-TS clients. Pretuned streams are excluded - they have no clients by design and
|
|
1024
1033
|
* the pretune module manages their lifecycle via a safety timeout. The result is sorted by last access time (oldest first) so callers can efficiently pick the
|
|
1025
1034
|
* longest-idle stream for reclamation.
|
|
1026
1035
|
* @returns Idle streams sorted by last access time ascending (oldest first).
|
|
@@ -1055,6 +1064,9 @@ function reclaimIdleStream() {
|
|
|
1055
1064
|
return false;
|
|
1056
1065
|
}
|
|
1057
1066
|
const oldest = idle[0];
|
|
1067
|
+
if (!oldest) {
|
|
1068
|
+
return false;
|
|
1069
|
+
}
|
|
1058
1070
|
LOG.info("Reclaiming idle stream %s (%s) to free capacity.", oldest.id, oldest.info.storeKey);
|
|
1059
1071
|
terminateStream(oldest.id, oldest.info.storeKey, "reclaimed for new stream");
|
|
1060
1072
|
void emitCurrentSystemStatus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hls.js","sourceRoot":"","sources":["../../src/streaming/hls.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hls.js","sourceRoot":"","sources":["../../src/streaming/hls.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAqB,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAEvG,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,OAAO,EAAE,gBAAgB,EAA0B,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5I,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjJ,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7J,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,oKAAoK;AACpK,iKAAiK;AACjK,wEAAwE;AACxE,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B;;;;;;;;GAQG;AACH,SAAS,iCAAiC,CAAC,QAAgB,EAAE,WAAmB,EAC9E,UAAyD,EAAE;IAE3D,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO;QAEL,OAAO,EAAE,CAAC,KAAY,EAAQ,EAAE;YAE9B,IAAG,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAEpC,OAAO;YACT,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,MAAM,GAAG,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAExF,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC;YAC9E,KAAK,uBAAuB,EAAE,CAAC;QACjC,CAAC;QACD,MAAM,EAAE,GAAS,EAAE;YAEjB,IAAG,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAEpC,OAAO;YACT,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,MAAM,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC;YAE/E,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,2BAA2B,GAAG,SAAS,CAAC,CAAC;YAChF,KAAK,uBAAuB,EAAE,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAYD,oHAAoH;AACpH,MAAM,eAAe,GAA2B,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,6DAA6D,EAAE,CAAC;AAEvJ;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IAEjD,IAAG,2BAA2B,CAAC,WAAW,CAAC,EAAE,CAAC;QAE5C,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,6JAA6J;IAC7J,qEAAqE;IACrE,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAEnD,6JAA6J;IAC7J,2BAA2B;IAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEhD,wHAAwH;IACxH,MAAM,gBAAgB,GAAG,OAAO,IAAI,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC;IAElE,0IAA0I;IAC1I,IAAG,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,CAAC;QAE7C,GAAG,CAAC,IAAI,CAAC,iEAAiE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACxG,CAAC;IAED,wGAAwG;IAExG,IAAG,CAAC,gBAAgB,EAAE,CAAC;QAErB,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,8JAA8J;IAC9J,2JAA2J;IAC3J,4JAA4J;IAC5J,2JAA2J;IAC3J,6JAA6J;IAC7J,6HAA6H;IAC7H,IAAG,CAAC,2BAA2B,CAAC,WAAW,CAAC,EAAE,CAAC;QAE7C,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC3E,CAAC;IAED,8HAA8H;IAC9H,IAAG,iBAAiB,EAAE,EAAE,CAAC;QAEvB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAyE,EAAE,GAAa;IAE1H,IAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAEvC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QAEN,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,4BAA4B;AAE5B;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB,EAAE,GAAY,EAAE,GAAa;IAExF,mKAAmK;IACnK,gKAAgK;IAChK,qIAAqI;IACrI,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;QAE1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,mKAAmK;IACnK,mBAAmB;IACnB,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAErB,mBAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kKAAkK;IAClK,wIAAwI;IACxI,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAG,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;QAEhC,+JAA+J;QAC/J,2JAA2J;QAC3J,IAAG,cAAc,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YAE7D,IAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAExB,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBACnC,GAAG,CAAC,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;gBACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,6BAA6B,CAAC,CAAC;gBAErI,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAqB,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;QACnF,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAEzG,6GAA6G;QAC7G,KAAK,mBAAmB,CAAC;YAEvB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,WAAW;YACX,aAAa;YACb,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAuB;YAC3D,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG;SAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAE1B,kBAAkB,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAED,0EAA0E;IAC1E,OAAO,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAY,EAAE,GAAa;IAEjE,MAAM,WAAW,GAAI,GAAG,CAAC,MAA4B,CAAC,IAAI,CAAC;IAE3D,IAAG,CAAC,WAAW,EAAE,CAAC;QAEhB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAElD,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;IAEtE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAElE,IAAG,QAAQ,KAAK,IAAI,EAAE,CAAC;QAErB,OAAO;IACT,CAAC;IAED,MAAM,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY,EAAE,GAAa;IAE1D,MAAM,WAAW,GAAI,GAAG,CAAC,MAA4B,CAAC,IAAI,CAAC;IAC3D,MAAM,WAAW,GAAI,GAAG,CAAC,MAA+B,CAAC,OAAO,CAAC;IAEjE,IAAG,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QAEhC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAEpE,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;QAE1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE1C,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,IAAG,WAAW,KAAK,UAAU,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAG,CAAC,WAAW,EAAE,CAAC;YAEhB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAEhD,OAAO;QACT,CAAC;QAED,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAE1C,OAAO;IACT,CAAC;IAED,mFAAmF;IACnF,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE5F,IAAG,CAAC,OAAO,EAAE,CAAC;QAEZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAE3C,OAAO;IACT,CAAC;IAED,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3B,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAY,EAAE,GAAa;IAElE,MAAM,WAAW,GAAI,GAAG,CAAC,MAA4B,CAAC,IAAI,CAAC;IAE3D,kKAAkK;IAClK,0CAA0C;IAC1C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhF,IAAG,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;QAEjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAErE,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;QAE1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE1C,OAAO;IACT,CAAC;IAED,IAAI,QAA4B,CAAC;IAEjC,IAAG,YAAY,KAAK,YAAY,EAAE,CAAC;QAEjC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;SAAM,IAAG,YAAY,KAAK,YAAY,EAAE,CAAC;QAExC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,IAAG,CAAC,QAAQ,EAAE,CAAC;QAEb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAE5C,OAAO;IACT,CAAC;IAED,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3B,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,oBAAoB;AAEpB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY,EAAE,GAAa;IAEhE,MAAM,GAAG,GAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAwB,EAAE,IAAI,EAAE,CAAC;IAE7D,IAAG,CAAC,GAAG,EAAE,CAAC;QAER,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAE7D,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAuB,CAAC;IACvE,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC;IACxD,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAuB,CAAC;IACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAuB,CAAC;IAE7D,iKAAiK;IACjK,yHAAyH;IACzH,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CACvD,GAAG,GAAG,IAAI,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAChI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,sIAAsI;IACtI,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;QAE1B,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC;QAE1D,OAAO;IACT,CAAC;IAED,wDAAwD;IACxD,IAAG,iBAAiB,EAAE,EAAE,CAAC;QAEvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEtC,OAAO;IACT,CAAC;IAED,sDAAsD;IACtD,MAAM,aAAa,GAAqB,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;IAEnF,mIAAmI;IACnI,IAAI,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;QAExJ,IAAG,WAAW,KAAK,IAAI,EAAE,CAAC;YAExB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAE1D,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,IAAG,KAAK,YAAY,gBAAgB,EAAE,CAAC;YAErC,IAAG,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAE5B,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACrC,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAErD,OAAO;QACT,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAElF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAE/C,OAAO;IACT,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC;AAC5D,CAAC;AAED,oBAAoB;AAEpB;;;;;;;;GAQG;AACH,KAAK,UAAU,oBAAoB,CAAC,QAAgB,EAAE,aAAqB,EAAE,GAAa;IAExF,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAErC,iKAAiK;IACjK,6HAA6H;IAC7H,IAAG,CAAC,QAAQ,EAAE,CAAC;QAEb,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAG,KAAK,EAAE,CAAC;YAET,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAG,CAAC,QAAQ,EAAE,CAAC;QAEb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE1C,OAAO;IACT,CAAC;IAED,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3B,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAE/C,iKAAiK;IACjK,iKAAiK;IACjK,uCAAuC;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAEzC,IAAG,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAEvF,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACrJ,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,yCAAyC,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAED,IAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;QAEpB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAExB,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,wEAAwE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACpI,CAAC;IAED,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,QAAgB,EAAE,GAAa;IAEnD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC3C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;IAC/D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,WAAmB,EAAE,GAAa;IAEnE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IAE7E,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC3C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED,oBAAoB;AAEpB;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,SAA8B;IAE1D,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,kEAAkE,CAAC,CAAC;IACjG,SAAS,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC;AAED,gIAAgI;AAChI,MAAM,iBAAiB,GAA2B,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAEjI;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,SAAiB,EAAE,KAAuB,EAAE,UAA4B;IAEnG,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAG,KAAK,EAAE,CAAC;QAET,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,IAAG,SAAS,GAAG,CAAC,EAAE,CAAC;QAEjB,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,IAAG,UAAU,EAAE,CAAC;QAEd,gGAAgG;QAChG,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAExC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,CAAC;IAC7E,CAAC;IAED,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAEtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,2BAA2B,CAClC,eAAuB,EACvB,QAAgB,EAChB,WAAmB,EACnB,GAAW,EACX,OAA4B,EAC5B,eAAmC,EACnC,cAA0B;IAG1B,OAAO,KAAK,IAA6C,EAAE;QAEzD,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAEhC,gCAAgC;QAChC,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAG,CAAC,MAAM,EAAE,CAAC;YAEX,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,2DAA2D,EAAE,QAAQ,CAAC,CAAC;YAEjG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0JAA0J;QAC1J,+JAA+J;QAC/J,+CAA+C;QAC/C,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC;QAC9D,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;QAChE,MAAM,sBAAsB,GAAG,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAEtE,yJAAyJ;QACzJ,uFAAuF;QACvF,IAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAEjE,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,oDAAoD,CAAC,CAAC;YAChF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,2CAA2C;QAC3C,IAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAEpB,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,iDAAiD,CAAC,CAAC;YAC7E,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,wCAAwC;QACxC,IAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YAExB,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,8CAA8C,CAAC,CAAC;YAC1E,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,4GAA4G;QAC5G,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;QAE5B,IAAG,OAAO,EAAE,CAAC;YAEX,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAE/B,IAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAEvB,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,gDAAgD,CAAC,CAAC;gBAE5E,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBAEvC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,8CAA8C,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChG,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC,CAAC;QAE3E,kCAAkC;QAClC,IAAI,aAAa,CAAC;QAElB,IAAI,CAAC;YAEH,aAAa,GAAG,MAAM,qBAAqB,CAAC;gBAE1C,OAAO,EAAE,eAAe;gBACxB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;oBAEvB,GAAG,CAAC,KAAK,CAAC,mDAAmD,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;oBACnF,cAAc,EAAE,CAAC;gBACnB,CAAC;gBACD,OAAO;gBACP,QAAQ;gBACR,cAAc,EAAE,IAAI;gBACpB,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YAEd,GAAG,CAAC,IAAI,CAAC,uDAAuD,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,wCAAwC,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhF,4JAA4J;QAC5J,iJAAiJ;QACjJ,MAAM,YAAY,GAAG,mBAAmB,CAAC;YAEvC,sBAAsB,EAAE,sBAAsB;YAE9C,GAAG,iCAAiC,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;YAC1I,oBAAoB,EAAE,IAAI;YAC1B,mBAAmB,EAAE,kBAAkB;YACvC,iBAAiB,EAAE,mBAAmB;YACtC,mBAAmB,EAAE,kBAAkB;YACvC,oBAAoB,EAAE,mBAAmB;YACzC,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAC;QAEH,6CAA6C;QAC7C,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAE/C,oDAAoD;QACpD,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;QACnD,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;QACjC,MAAM,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;QACzD,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC;QAEhC,GAAG,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QAEnF,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,wCAAwC,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhF,OAAO;YAEL,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA4CD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgC;IAErE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAE9C,gKAAgK;IAChK,8EAA8E;IAC9E,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE7E,wIAAwI;IACxI,kBAAkB,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC;IAExF,IAAI,CAAC;QAEH,OAAO,MAAM,mBAAmB,CAAC,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,uJAAuJ;QACvJ,kBAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAExE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAgBD;;;;;;;;;;;GAWG;AACH,SAAS,qBAAqB,CAAC,WAAmB,EAAE,OAAwB,EAAE,aAA+B,EAAE,GAAY,EAAE,KAAmB;IAE9I,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAE/D,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;IAE1D,+JAA+J;IAC/J,iKAAiK;IACjK,mIAAmI;IACnI,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAE7B,kKAAkK;IAClK,sFAAsF;IACtF,GAAG,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEjE,uIAAuI;IACvI,MAAM,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;IAEnC,IAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAEzB,iKAAiK;QACjK,mKAAmK;QACnK,kKAAkK;QAClK,sIAAsI;QACtI,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC;QAC7B,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QACzB,GAAG,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAExD,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAEjC,wJAAwJ;YACxJ,yFAAyF;YACzF,GAAG,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;YAClC,GAAG,CAAC,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACrG,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACvB,CAAC;IAED,8BAA8B;IAC9B,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnJ,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAqCD;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,OAAkC;IAE5D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEjF,cAAc,CAAC;QAEb,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;QAClC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC5C,aAAa,EAAE,IAAI;QACnB,mBAAmB,EAAE,KAAK;QAC1B,GAAG;QACH,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE;YAEJ,mBAAmB,EAAE,IAAI,CAAC,GAAG,EAAE;YAC/B,QAAQ,EAAE,WAAW;SACtB;QACD,iBAAiB,EAAE,CAAC;QACpB,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,IAAI;QACjB,gBAAgB,EAAE,IAAI;QACtB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;QACnC,OAAO,EAAE,IAAI;QACb,gBAAgB,EAAE,IAAI;QACtB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE;QAChD,WAAW,EAAE,IAAI;QACjB,WAAW;QACX,aAAa,EAAE,SAAS;QACxB,GAAG;KACJ,CAAC,CAAC;IAEH,kBAAkB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,eAAuB,EAAE,WAAmB,EAAE,OAAoC,EAAE,KAAc,EAAE,QAAQ,GAAG,IAAI;IAE7I,4IAA4I;IAC5I,IAAG,OAAO,EAAE,CAAC;QAEX,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;QAE/D,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,8BAA8B;IAC9B,eAAe,CAAC,eAAe,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAC9D,KAAK,uBAAuB,EAAE,CAAC;IAE/B,8GAA8G;IAC9G,IAAG,QAAQ,EAAE,CAAC;QAEZ,IAAG,KAAK,YAAY,gBAAgB,EAAE,CAAC;YAErC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YAEN,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;AACH,CAAC;AAaD;;;;;;;;;GASG;AACH,KAAK,UAAU,gBAAgB,CAAC,KAAwB,EAAE,eAAuB,EAAE,WAAmB,EAAE,GAAW,EACjH,YAAsB;IAEtB,IAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8JAA8J;IAC9J,0EAA0E;IAE1E,+JAA+J;IAC/J,iKAAiK;IACjK,+EAA+E;IAC/E,MAAM,gBAAgB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,yBAAyB,GAAG,gBAAgB,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC,CAAC;IAEjF,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC;QAEhD,WAAW;QACX,mBAAmB,EAAE,KAAK,CAAC,oBAAoB,CAAC,OAAO;QACvD,YAAY;QACZ,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAEjB,IAAG,sBAAsB,CAAC,eAAe,CAAC,EAAE,CAAC;gBAE3C,OAAO;YACT,CAAC;YAED,2IAA2I;YAC3I,6HAA6H;YAC7H,GAAG,CAAC,IAAI,CAAC,yDAAyD,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAExF,eAAe,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,gBAAgB,EAAE,GAAG,CAAC,YAAY,IAAI,MAAM;QAC1D,mBAAmB,EAAE,yBAAyB;QAC9C,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,KAAK,CAAC,QAAQ;QAC3B,GAAG;KACJ,CAAC,CAAC;IAEH,IAAG,CAAC,YAAY,EAAE,CAAC;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAEjD,IAAG,CAAC,aAAa,EAAE,CAAC;QAElB,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qEAAqE;IACrE,IAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAErC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,IAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAEvB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,qJAAqJ;IACrJ,mJAAmJ;IACnJ,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;IAEnD,IAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAEzB,aAAa,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QACxC,aAAa,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;QACtC,aAAa,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;IAChD,aAAa,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAC1C,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC;IACvD,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;IAC/C,aAAa,CAAC,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC;IACzD,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACtC,aAAa,CAAC,aAAa,GAAG,QAAQ,CAAC;IAEvC,mJAAmJ;IACnJ,yJAAyJ;IACzJ,8BAA8B;IAC9B,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3B,aAAa,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;IAE3C,sJAAsJ;IACtJ,sDAAsD;IACtD,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpC,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,uDAAuD,EAAE,WAAW,CAAC,CAAC;IAEtG,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1I,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAAC,KAAwB,EAAE,eAAuB,EAAE,WAAmB;IAEpG,yJAAyJ;IACzJ,2JAA2J;IAC3J,kDAAkD;IAClD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,mBAAmB,GAAG,aAAa,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC,CAAC;IAExE,0JAA0J;IAC1J,oJAAoJ;IACpJ,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;IAEpI,uJAAuJ;IACvJ,4JAA4J;IAC5J,oJAAoJ;IACpJ,oEAAoE;IACpE,MAAM,SAAS,GAAG,mBAAmB,CAAC;QAEpC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAEf,sBAAsB,EAAE,UAAU,CAAC,eAAe;YAClD,GAAG,CAAC,CAAC,mBAAmB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,mBAAmB,EAAE,UAAU,CAAC,WAAW;SAC5C,CAAC,CAAC,CAAC,EAAE,CAAC;QAEP,GAAG,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9B,cAAc,EAAE,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;YACzD,YAAY,EAAE,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,MAAM;YACvD,mBAAmB;SACpB,CAAC,CAAC,CAAC,EAAE,CAAC;QAEP,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9C,oBAAoB,EAAE,IAAI;YAC1B,oBAAoB,EAAE,gBAAgB,GAAG,mBAAmB;SAC7D,CAAC,CAAC,CAAC,EAAE,CAAC;QAEP,GAAG,iCAAiC,CAAC,eAAe,EAAE,WAAW,CAAC;QAClE,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAC;IAEH,4CAA4C;IAC5C,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEpC,iDAAiD;IACjD,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAEjD,IAAG,aAAa,EAAE,CAAC;QAEjB,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;QAEpC,0JAA0J;QAC1J,IAAG,UAAU,EAAE,CAAC;YAEd,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6FAA6F;IAC7F,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,KAAK,CAAC;AACf,CAAC;AAcD;;;;;;;;;;GAUG;AACH,KAAK,UAAU,mBAAmB,CAAC,OAAmC;IAEpE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAExJ,2EAA2E;IAC3E,MAAM,cAAc,GAAG,GAAS,EAAE;QAEhC,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAExD,IAAG,eAAe,KAAK,SAAS,EAAE,CAAC;YAEjC,eAAe,CAAC,eAAe,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;YACjE,KAAK,uBAAuB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,mKAAmK;IACnK,MAAM,qBAAqB,GAAiC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE;QAEpG,OAAO,2BAA2B,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAC5H,CAAC,CAAC;IAEF,0IAA0I;IAC1I,IAAG,cAAc,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;QAE7D,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED,mKAAmK;IACnK,gKAAgK;IAChK,qIAAqI;IACrI,MAAM,KAAK,GAAG,MAAM,WAAW,CAC7B;QAEE,OAAO;QACP,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC9C,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;QACtD,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;QAClD,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAC9C,eAAe;QACf,uBAAuB,EAAE,qBAAqB;QAC9C,eAAe;QACf,QAAQ,EAAE,WAAW;QACrB,GAAG;KACJ,EACD,cAAc,CACf,CAAC;IAEF,mJAAmJ;IACnJ,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAE1C,IAAG,CAAC,MAAM,EAAE,CAAC;QAEX,gHAAgH;QAChH,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAEvC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,kDAAkD,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC3C,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACjD,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACvC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAEvB,yDAAyD;IACzD,OAAO,oBAAoB,CACzB,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EACxE,KAAK,IAAI,EAAE;QAET,iJAAiJ;QACjJ,yJAAyJ;QACzJ,0JAA0J;QAC1J,2JAA2J;QAC3J,gEAAgE;QAEhE,0JAA0J;QAC1J,IAAI,WAAW,GAAqB,IAAI,CAAC;QACzC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,aAAa,GAAyB,SAAS,CAAC;QAEpD,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAE1G,IAAG,kBAAkB,EAAE,CAAC;YAEtB,aAAa,GAAG,QAAQ,CAAC;YACzB,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC;YACvC,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC7C,CAAC;QAED,mGAAmG;QACnG,IAAG,aAAa,KAAK,SAAS,EAAE,CAAC;YAE/B,IAAG,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC;gBAEhE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,4BAA4B,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAC/G,MAAM,WAAW,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC;YACjF,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC/F,MAAM,WAAW,GAAG,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC;QAEzC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE9E,GAAG,CAAC,IAAI,CAAC,2CAA2C,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAClH,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEjD,uJAAuJ;QACvJ,yJAAyJ;QACzJ,IAAG,OAAO,EAAE,CAAC;YAEX,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACzD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YACrE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC,CAAC;YAE1G,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAED,2JAA2J;QAC3J,2GAA2G;QAC3G,MAAM,WAAW,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAC9F,MAAM,aAAa,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,cAAc,CAAC;QACrE,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;QAEhD,IAAG,YAAY,EAAE,CAAC;YAEhB,YAAY,CAAC,YAAY,GAAG,WAAW,CAAC;YACxC,YAAY,CAAC,mBAAmB,GAAG,aAAa,CAAC;QACnD,CAAC;QAED,eAAe,CAAC,yBAAyB,CAAC;YAExC,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;YAClC,mBAAmB,EAAE,aAAa;YAClC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE;YAC1C,eAAe;YACf,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa;YACb,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CAAC,CAAC;QACJ,KAAK,uBAAuB,EAAE,CAAC;QAE/B,+CAA+C;QAC/C,qBAAqB,EAAE,CAAC;QAExB,OAAO,eAAe,CAAC;IACzB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,0BAA0B;AAE1B;;;;;;;;;;GAUG;AACH,KAAK,UAAU,cAAc,CAAC,WAAmB,EAAE,GAAW,EAAE,GAAY,EAAE,GAAa,EAAE,OAAyB;IAEpH,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAuB,CAAC;IACnE,MAAM,aAAa,GAAqB,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;IAEnF,IAAI,CAAC;QAEH,OAAO,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,IAAG,KAAK,YAAY,gBAAgB,EAAE,CAAC;YAErC,IAAG,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAE5B,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBACnC,GAAG,CAAC,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YAC1D,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAErD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kBAAkB;AAElB;;;;;GAKG;AACH,SAAS,cAAc;IAErB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,OAAO,aAAa,EAAE;SACnB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;SAC/I,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAEhC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,KAAI,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAEzB,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACxE,CAAC;IAED,iEAAiE;IACjE,IAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAEnB,KAAK,uBAAuB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB;IAExB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,IAAG,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAErB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvB,IAAG,CAAC,MAAM,EAAE,CAAC;QAEX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,kDAAkD,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE9F,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IAC7E,KAAK,uBAAuB,EAAE,CAAC;IAE/B,OAAO,IAAI,CAAC;AACd,CAAC"}
|