@oneuptime/common 13.0.4 → 13.0.5

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.
Files changed (673) hide show
  1. package/Models/DatabaseModels/Index.ts +4 -0
  2. package/Models/DatabaseModels/RumApplication.ts +1 -1
  3. package/Models/DatabaseModels/SecurityEventConnection.ts +457 -0
  4. package/Models/DatabaseModels/SecurityEventConnectionRun.ts +263 -0
  5. package/Models/DatabaseModels/TelemetryIngestionKey.ts +2 -2
  6. package/Server/API/AIInvestigationAPI.ts +484 -24
  7. package/Server/API/GoogleSecOpsConnectionAPI.ts +249 -8
  8. package/Server/API/SecurityEventConnectionAPI.ts +250 -0
  9. package/Server/API/TelemetryAPI.ts +402 -265
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/1792700000000-AddSecurityEventConnections.ts +99 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  12. package/Server/Middleware/TelemetryIngest.ts +101 -6
  13. package/Server/Services/ExceptionAggregationService.ts +7 -16
  14. package/Server/Services/GoogleSecOpsConnectionService.ts +15 -0
  15. package/Server/Services/Index.ts +4 -0
  16. package/Server/Services/InventoryItemService.ts +28 -0
  17. package/Server/Services/LogAggregationService.ts +17 -23
  18. package/Server/Services/MetricAggregationService.ts +4 -14
  19. package/Server/Services/SecurityEventConnectionRunService.ts +10 -0
  20. package/Server/Services/SecurityEventConnectionService.ts +538 -0
  21. package/Server/Services/TraceAggregationService.ts +77 -28
  22. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +9 -0
  23. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +13 -1
  24. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +15 -1
  25. package/Server/Utils/AI/SRE/InvestigationEvidence.ts +658 -0
  26. package/Server/Utils/AI/SRE/InvestigationReferences.ts +324 -0
  27. package/Server/Utils/AI/Toolbox/Index.ts +38 -0
  28. package/Server/Utils/AI/Toolbox/TimelineTools.ts +9 -2
  29. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +80 -0
  30. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +5 -3
  31. package/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubClient.ts +1108 -0
  32. package/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubConnector.ts +732 -0
  33. package/Server/Utils/SecurityEvent/Connectors/ConnectorPlatformHealth.ts +495 -0
  34. package/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconClient.ts +689 -0
  35. package/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconConnector.ts +767 -0
  36. package/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityClient.ts +571 -0
  37. package/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityConnector.ts +827 -0
  38. package/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrClient.ts +610 -0
  39. package/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrConnector.ts +549 -0
  40. package/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelClient.ts +830 -0
  41. package/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelConnector.ts +684 -0
  42. package/Server/Utils/SecurityEvent/Connectors/Okta/OktaClient.ts +487 -0
  43. package/Server/Utils/SecurityEvent/Connectors/Okta/OktaConnector.ts +778 -0
  44. package/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionPoller.ts +1002 -0
  45. package/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionRunExecutor.ts +556 -0
  46. package/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionTester.ts +275 -0
  47. package/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectorRegistry.ts +53 -0
  48. package/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkClient.ts +709 -0
  49. package/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkConnector.ts +596 -0
  50. package/Server/Utils/SecurityEvent/Connectors/Types.ts +191 -0
  51. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +353 -65
  52. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsConnectionTester.ts +777 -0
  53. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +747 -148
  54. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.ts +48 -2
  55. package/Server/Utils/SecurityEvent/SecurityEventDedupe.ts +81 -0
  56. package/Server/Utils/SessionReplay/SessionReplayReadService.ts +741 -40
  57. package/Server/Utils/StartServer.ts +10 -0
  58. package/Server/Utils/Telemetry/EntityRegistry.ts +8 -0
  59. package/Server/Utils/Telemetry/KubernetesResourceAttributes.ts +108 -0
  60. package/Server/Utils/Telemetry/ResourceEntityFilter.ts +174 -93
  61. package/Server/Utils/Telemetry/ResourceFacetPlanner.ts +251 -0
  62. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +248 -413
  63. package/Server/Utils/Telemetry/ServiceDependencyDiscovery.ts +668 -0
  64. package/Server/Utils/Telemetry/TraceContextPropagation.ts +348 -0
  65. package/Server/Utils/Telemetry.ts +18 -0
  66. package/Tests/App/Dashboard/AIInvestigationHeaderStatus.test.tsx +413 -0
  67. package/Tests/App/Dashboard/AIRootCauseFeedItem.test.tsx +285 -0
  68. package/Tests/App/Dashboard/AffectedResourcesDisplay.test.tsx +242 -0
  69. package/Tests/App/Dashboard/AlertEpisodeViewFields.test.tsx +601 -15
  70. package/Tests/App/Dashboard/ChangeAlertStateAIHeader.test.tsx +835 -0
  71. package/Tests/App/Dashboard/CloudResourceTelemetryScope.test.ts +41 -0
  72. package/Tests/App/Dashboard/ConnectionTestModal.test.tsx +604 -0
  73. package/Tests/App/Dashboard/ConnectorTestReportView.test.tsx +738 -0
  74. package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +153 -6
  75. package/Tests/App/Dashboard/EntityDetailPanel.test.tsx +165 -0
  76. package/Tests/App/Dashboard/EpisodeChangeState.test.tsx +1069 -0
  77. package/Tests/App/Dashboard/EpisodeMembersCard.test.tsx +772 -0
  78. package/Tests/App/Dashboard/EventOverviewPages.test.tsx +2354 -0
  79. package/Tests/App/Dashboard/EventOverviewSkeleton.test.tsx +210 -0
  80. package/Tests/App/Dashboard/EventStatBar.test.tsx +392 -0
  81. package/Tests/App/Dashboard/EventStatusPanel.test.tsx +247 -0
  82. package/Tests/App/Dashboard/ExceptionAIAssistance.test.tsx +606 -0
  83. package/Tests/App/Dashboard/ExceptionBreadcrumbTimeline.test.tsx +273 -0
  84. package/Tests/App/Dashboard/ExceptionDetailSideMenu.test.tsx +176 -0
  85. package/Tests/App/Dashboard/ExceptionOverviewCards.test.tsx +366 -0
  86. package/Tests/App/Dashboard/ExceptionSignalPages.test.tsx +371 -0
  87. package/Tests/App/Dashboard/ExceptionStackFrameViewer.test.tsx +440 -0
  88. package/Tests/App/Dashboard/ExceptionSummary.test.tsx +381 -0
  89. package/Tests/App/Dashboard/ExceptionTriage.test.tsx +306 -0
  90. package/Tests/App/Dashboard/ExceptionsResourceFacets.test.tsx +604 -0
  91. package/Tests/App/Dashboard/ExceptionsViewerEntityChips.test.tsx +706 -0
  92. package/Tests/App/Dashboard/FeedOrdering.test.ts +32 -0
  93. package/Tests/App/Dashboard/GoogleSecOpsConnectionForm.test.tsx +838 -0
  94. package/Tests/App/Dashboard/GoogleSecOpsConnectionsErrors.test.tsx +18 -0
  95. package/Tests/App/Dashboard/GoogleSecOpsDiagnostics.test.tsx +297 -20
  96. package/Tests/App/Dashboard/IncidentEpisodeViewFields.test.tsx +618 -13
  97. package/Tests/App/Dashboard/InfrastructureExplorer.test.tsx +254 -207
  98. package/Tests/App/Dashboard/InfrastructureGraph.test.tsx +303 -135
  99. package/Tests/App/Dashboard/InvestigationEvidenceList.test.tsx +1251 -0
  100. package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +303 -0
  101. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +876 -8
  102. package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +35 -0
  103. package/Tests/App/Dashboard/InvestigationReferenceLink.test.tsx +177 -0
  104. package/Tests/App/Dashboard/InvestigationReportView.test.tsx +1295 -0
  105. package/Tests/App/Dashboard/KubernetesImageReferenceView.test.tsx +114 -0
  106. package/Tests/App/Dashboard/KubernetesLogsTabChips.test.tsx +285 -0
  107. package/Tests/App/Dashboard/LogsEntityChipNames.test.tsx +316 -0
  108. package/Tests/App/Dashboard/LogsResourceFacetChips.test.tsx +361 -0
  109. package/Tests/App/Dashboard/ProfileTableEntityNames.test.tsx +432 -0
  110. package/Tests/App/Dashboard/ProfileViewEntityName.test.tsx +250 -0
  111. package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +10 -0
  112. package/Tests/App/Dashboard/ResourceLogsTabsBareLayout.test.tsx +700 -0
  113. package/Tests/App/Dashboard/ResourcePageEntityNameProps.test.tsx +803 -0
  114. package/Tests/App/Dashboard/RumSessionReplaySideMenu.test.tsx +11 -1
  115. package/Tests/App/Dashboard/ScheduledMaintenanceChangeState.test.tsx +1026 -0
  116. package/Tests/App/Dashboard/ScheduledMaintenanceFeedRefresh.test.tsx +436 -0
  117. package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +1195 -0
  118. package/Tests/App/Dashboard/SecurityEventConnectionFormModal.test.tsx +1022 -0
  119. package/Tests/App/Dashboard/SecurityEventConnectionsTable.test.tsx +905 -0
  120. package/Tests/App/Dashboard/SecurityEventsSideMenu.test.tsx +247 -0
  121. package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +375 -274
  122. package/Tests/App/Dashboard/SessionReplayAuditTable.test.tsx +410 -0
  123. package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +774 -0
  124. package/Tests/App/Dashboard/TopErrorsPanelResourceNames.test.tsx +316 -0
  125. package/Tests/App/Dashboard/TopologyDataLoading.test.tsx +30 -0
  126. package/Tests/App/Dashboard/TopologyPageNavigation.test.tsx +88 -24
  127. package/Tests/App/Dashboard/TraceExplorer.test.tsx +1590 -0
  128. package/Tests/App/Dashboard/TraceWaterfall.test.tsx +488 -0
  129. package/Tests/App/Dashboard/TracesAnalyticsSeriesLabels.test.tsx +367 -0
  130. package/Tests/App/Dashboard/TracesEntityNames.test.tsx +585 -0
  131. package/Tests/App/Dashboard/TracesResourceFacets.test.tsx +613 -0
  132. package/Tests/App/Dashboard/UseServiceNames.test.tsx +359 -0
  133. package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +7 -0
  134. package/Tests/Models/InventoryItemNaming.test.ts +132 -16
  135. package/Tests/Models/SecurityDomainAccessControl.test.ts +61 -17
  136. package/Tests/Server/API/AIInvestigationAPI.test.ts +611 -2
  137. package/Tests/Server/API/AIInvestigationEvidenceAPI.test.ts +1098 -0
  138. package/Tests/Server/API/GoogleSecOpsConnectionAPI.test.ts +409 -0
  139. package/Tests/Server/API/SecurityEventConnectionAPI.test.ts +856 -0
  140. package/Tests/Server/API/SessionReplayAPI.test.ts +528 -1
  141. package/Tests/Server/API/TelemetryFacetsAPI.test.ts +810 -0
  142. package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +240 -0
  143. package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +229 -0
  144. package/Tests/Server/Services/InventoryItemDisplayName.test.ts +66 -0
  145. package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +28 -1
  146. package/Tests/Server/Services/SecurityEventConnectionService.test.ts +1233 -0
  147. package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +53 -0
  148. package/Tests/Server/Services/TelemetryResourceFacetCounting.test.ts +218 -0
  149. package/Tests/Server/Services/TelemetryResourceFacetFilters.test.ts +155 -1
  150. package/Tests/Server/Services/TraceAggregationExceptionScope.test.ts +142 -0
  151. package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +85 -24
  152. package/Tests/Server/Types/Database/Permissions/SecurityRoleAccess.test.ts +33 -0
  153. package/Tests/Server/Utils/AI/InvestigationEvidence.test.ts +1395 -0
  154. package/Tests/Server/Utils/AI/InvestigationReferences.test.ts +616 -0
  155. package/Tests/Server/Utils/AI/TimelineTools.test.ts +119 -0
  156. package/Tests/Server/Utils/AI/Toolbox/AIToolbox.test.ts +151 -0
  157. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +65 -0
  158. package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorExceptionScope.test.ts +224 -0
  159. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPerSeriesFanout.test.ts +55 -2
  160. package/Tests/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubClient.test.ts +1240 -0
  161. package/Tests/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubConnector.test.ts +1853 -0
  162. package/Tests/Server/Utils/SecurityEvent/Connectors/ConnectorPlatformHealth.test.ts +1129 -0
  163. package/Tests/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconClient.test.ts +1066 -0
  164. package/Tests/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconConnector.test.ts +1568 -0
  165. package/Tests/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityClient.test.ts +930 -0
  166. package/Tests/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityConnector.test.ts +1409 -0
  167. package/Tests/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrClient.test.ts +763 -0
  168. package/Tests/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrConnector.test.ts +1296 -0
  169. package/Tests/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelClient.test.ts +1102 -0
  170. package/Tests/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelConnector.test.ts +1174 -0
  171. package/Tests/Server/Utils/SecurityEvent/Connectors/Okta/OktaClient.test.ts +1032 -0
  172. package/Tests/Server/Utils/SecurityEvent/Connectors/Okta/OktaConnector.test.ts +1558 -0
  173. package/Tests/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionPoller.test.ts +3041 -0
  174. package/Tests/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionRunExecutor.test.ts +1168 -0
  175. package/Tests/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionTester.test.ts +906 -0
  176. package/Tests/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkClient.test.ts +1068 -0
  177. package/Tests/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkConnector.test.ts +1004 -0
  178. package/Tests/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsConnectionTester.test.ts +784 -0
  179. package/Tests/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.test.ts +113 -1
  180. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +5 -1
  181. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsDiagnostics.test.ts +93 -13
  182. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsHttpIntegration.test.ts +23 -1
  183. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +25 -3
  184. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +22 -8
  185. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +82 -16
  186. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsSearchDetections.test.ts +730 -0
  187. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsThreePassPoller.test.ts +1577 -0
  188. package/Tests/Server/Utils/SessionReplay/SessionReplayOriginAllowlist.test.ts +41 -0
  189. package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +1453 -18
  190. package/Tests/Server/Utils/Telemetry/KubernetesResourceAttributes.test.ts +162 -0
  191. package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +460 -13
  192. package/Tests/Server/Utils/Telemetry/ResourceFacetPlanner.test.ts +678 -0
  193. package/Tests/Server/Utils/Telemetry/ResourceFacetResolver.test.ts +348 -2
  194. package/Tests/Server/Utils/Telemetry/ServiceDependencyDiscovery.test.ts +525 -0
  195. package/Tests/Server/Utils/Telemetry/TraceContextPropagation.test.ts +420 -0
  196. package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +73 -0
  197. package/Tests/Types/Rum/SessionReplayTransportContracts.test.ts +95 -0
  198. package/Tests/Types/SecurityEvent/Connectors/ConnectorDiagnostics.test.ts +82 -0
  199. package/Tests/Types/SecurityEvent/Connectors/SecurityEventConnectorCatalog.test.ts +314 -0
  200. package/Tests/Types/Telemetry/ExceptionSpanScope.test.ts +89 -0
  201. package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +96 -0
  202. package/Tests/Types/Telemetry/ResourceFacetCatalog.test.ts +304 -0
  203. package/Tests/UI/Components/ActiveFilterChipsLockedFilters.test.tsx +357 -0
  204. package/Tests/UI/Components/Card.test.tsx +312 -1
  205. package/Tests/UI/Components/CardModelDetailHeaderLayout.test.tsx +253 -0
  206. package/Tests/UI/Components/CardModelDetailRefresher.test.tsx +342 -0
  207. package/Tests/UI/Components/Checkbox.test.tsx +79 -0
  208. package/Tests/UI/Components/CopyTextButton.test.tsx +142 -0
  209. package/Tests/UI/Components/DetailCompactStyle.test.tsx +621 -0
  210. package/Tests/UI/Components/ErrorBoundary.test.tsx +60 -0
  211. package/Tests/UI/Components/FacetSections.test.tsx +581 -0
  212. package/Tests/UI/Components/FacetSidebarControls.test.tsx +812 -0
  213. package/Tests/UI/Components/FacetVisibility.test.ts +429 -0
  214. package/Tests/UI/Components/LockedFilterActions.test.tsx +396 -0
  215. package/Tests/UI/Components/LockedFilterChip.test.tsx +651 -0
  216. package/Tests/UI/Components/LogsEntityNames.test.ts +1769 -0
  217. package/Tests/UI/Components/LogsEntityNamesComponents.test.tsx +696 -0
  218. package/Tests/UI/Components/LogsFacetSidebarHiddenFacets.test.tsx +600 -0
  219. package/Tests/UI/Components/LogsViewerEntityNames.test.tsx +713 -0
  220. package/Tests/UI/Components/MarkdownInlineReferences.test.tsx +2079 -0
  221. package/Tests/UI/Components/MemberRoleAssignment.test.tsx +446 -0
  222. package/Tests/UI/Components/ModelDetailRefetch.test.tsx +397 -0
  223. package/Tests/UI/Components/ModelListRefetch.test.tsx +233 -0
  224. package/Tests/UI/Components/ModelPageModelChange.test.tsx +409 -0
  225. package/Tests/UI/Components/PaginationIntegration.test.tsx +25 -0
  226. package/Tests/UI/Components/ResourceFacetConfigs.test.ts +172 -0
  227. package/Tests/UI/Components/SavedViewsSidebarIntegration.test.tsx +32 -14
  228. package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +44 -1
  229. package/Tests/UI/Components/TelemetryActiveFilterChipsLockedFilters.test.tsx +304 -0
  230. package/Tests/UI/Components/TelemetryFacetSidebarHiddenFacets.test.tsx +718 -0
  231. package/Tests/UI/Monitor/EvaluationLogList.test.tsx +303 -0
  232. package/Tests/UI/Monitor/MonitorSummarySnapshotRender.test.tsx +55 -1
  233. package/Tests/UI/Rum/FidelityNotices.test.ts +22 -0
  234. package/Tests/UI/Rum/RecordingHealthCard.test.tsx +120 -136
  235. package/Tests/UI/Rum/RecordingHealthDashboard.test.tsx +988 -0
  236. package/Tests/UI/Rum/ReplayCard.test.tsx +32 -0
  237. package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +709 -12
  238. package/Tests/UI/Rum/ReplayHeader.test.tsx +50 -1
  239. package/Tests/UI/Rum/ReplayPinControl.test.tsx +67 -10
  240. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +41 -12
  241. package/Tests/UI/Rum/ReplayStage.test.tsx +663 -1
  242. package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +173 -0
  243. package/Tests/UI/Rum/ReplayUi.test.tsx +189 -2
  244. package/Tests/UI/Rum/ReplayUserSessionsMenu.test.tsx +91 -0
  245. package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +1 -1
  246. package/Tests/UI/Rum/SessionReplaySettingsPolicyLoading.test.tsx +585 -0
  247. package/Tests/UI/Rum/SessionReplayTable.test.tsx +844 -51
  248. package/Tests/UI/Rum/SessionReplayUsersTable.test.tsx +29 -1
  249. package/Tests/UI/Telemetry/TelemetryDetailPanel.test.tsx +288 -0
  250. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +31 -1
  251. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +6 -0
  252. package/Tests/UI/Utils/Clipboard.test.ts +154 -0
  253. package/Tests/UI/Utils/Navigation.test.ts +24 -0
  254. package/Tests/UI/Utils/Telemetry/TelemetryEntityNames.test.ts +2205 -0
  255. package/Tests/UI/Utils/Telemetry/UseTelemetryEntityNames.test.tsx +844 -0
  256. package/Tests/Utils/AI/InvestigationReport.test.ts +2430 -0
  257. package/Tests/Utils/APIOutgoingRequestTracer.test.ts +137 -0
  258. package/Tests/Utils/Rum/SessionReplayHealthDiagnosis.test.ts +40 -0
  259. package/Tests/Utils/Rum/SessionReplayRecordingEnded.test.ts +619 -0
  260. package/Tests/Utils/SecurityEvent/Connectors/AwsSecurityHubNormalizer.test.ts +631 -0
  261. package/Tests/Utils/SecurityEvent/Connectors/CrowdStrikeFalconNormalizer.test.ts +479 -0
  262. package/Tests/Utils/SecurityEvent/Connectors/ElasticSecurityNormalizer.test.ts +507 -0
  263. package/Tests/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdrNormalizer.test.ts +686 -0
  264. package/Tests/Utils/SecurityEvent/Connectors/MicrosoftSentinelNormalizer.test.ts +474 -0
  265. package/Tests/Utils/SecurityEvent/Connectors/OktaNormalizer.test.ts +736 -0
  266. package/Tests/Utils/SecurityEvent/Connectors/SplunkNormalizer.test.ts +407 -0
  267. package/Tests/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.test.ts +129 -0
  268. package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +57 -1
  269. package/Tests/Utils/Telemetry/EntityRelationship.test.ts +36 -0
  270. package/Tests/Utils/Telemetry/LockedFilterSearch.test.ts +600 -0
  271. package/Tests/Utils/Telemetry/NetworkHost.test.ts +48 -0
  272. package/Tests/Utils/Telemetry/OriginAllowList.test.ts +154 -0
  273. package/Tests/Utils/Traces/CriticalPath.test.ts +25 -0
  274. package/Types/AI/AIChatTypes.ts +8 -0
  275. package/Types/AI/InvestigationEvidence.ts +96 -0
  276. package/Types/Monitor/MonitorEvaluationSummary.ts +5 -0
  277. package/Types/Permission.ts +2 -2
  278. package/Types/Rum/SessionReplay.ts +109 -0
  279. package/Types/Rum/SessionReplayApi.ts +31 -0
  280. package/Types/SecurityEvent/Connectors/ConnectorDiagnostics.ts +111 -0
  281. package/Types/SecurityEvent/Connectors/SecurityEventConnectionDiagnostics.ts +87 -0
  282. package/Types/SecurityEvent/Connectors/SecurityEventConnectorCatalog.ts +492 -0
  283. package/Types/SecurityEvent/Connectors/SecurityEventConnectorProvider.ts +41 -0
  284. package/Types/SecurityEvent/GoogleSecOpsDiagnostics.ts +56 -1
  285. package/Types/SecurityEvent/GoogleSecOpsRegion.ts +34 -0
  286. package/Types/Telemetry/EntityType.ts +14 -0
  287. package/Types/Telemetry/ExceptionSpanScope.ts +83 -0
  288. package/Types/Telemetry/LockedFilterDetail.ts +46 -0
  289. package/Types/Telemetry/ResourceEntityFacet.ts +17 -10
  290. package/Types/Telemetry/ResourceFacetCatalog.ts +171 -0
  291. package/UI/Components/Card/Card.tsx +118 -83
  292. package/UI/Components/Checkbox/Checkbox.tsx +8 -5
  293. package/UI/Components/CopyTextButton/CopyTextButton.tsx +7 -1
  294. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +4 -1
  295. package/UI/Components/Detail/Detail.tsx +137 -22
  296. package/UI/Components/ErrorBoundary.tsx +38 -0
  297. package/UI/Components/LogsViewer/LogsEntityNames.ts +912 -0
  298. package/UI/Components/LogsViewer/LogsViewer.tsx +156 -77
  299. package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +28 -11
  300. package/UI/Components/LogsViewer/components/FacetSection.tsx +66 -79
  301. package/UI/Components/LogsViewer/components/FacetValueRow.tsx +17 -2
  302. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +45 -5
  303. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +100 -19
  304. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +156 -39
  305. package/UI/Components/LogsViewer/components/LogsTable.tsx +30 -8
  306. package/UI/Components/LogsViewer/types.ts +6 -0
  307. package/UI/Components/Markdown.tsx/InlineReferences.tsx +628 -0
  308. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +385 -312
  309. package/UI/Components/MemberRoleAssignment/MemberRoleAssignment.tsx +50 -22
  310. package/UI/Components/ModelDetail/CardModelDetail.tsx +15 -0
  311. package/UI/Components/ModelDetail/ModelDetail.tsx +64 -19
  312. package/UI/Components/ModelList/ModelList.tsx +33 -8
  313. package/UI/Components/Page/ModelPage.tsx +119 -54
  314. package/UI/Components/Table/Table.tsx +8 -0
  315. package/UI/Components/Table/TableRow.tsx +13 -5
  316. package/UI/Components/TelemetryViewer/FacetVisibility.ts +229 -0
  317. package/UI/Components/TelemetryViewer/ResourceFacetConfigs.ts +46 -0
  318. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +11 -0
  319. package/UI/Components/TelemetryViewer/components/FacetSearchInput.tsx +79 -0
  320. package/UI/Components/TelemetryViewer/components/FacetSectionHeader.tsx +69 -0
  321. package/UI/Components/TelemetryViewer/components/FacetShowMoreButton.tsx +36 -0
  322. package/UI/Components/TelemetryViewer/components/HiddenFacetsFooter.tsx +88 -0
  323. package/UI/Components/TelemetryViewer/components/LockedFilterActions.tsx +205 -0
  324. package/UI/Components/TelemetryViewer/components/LockedFilterChip.tsx +496 -0
  325. package/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.tsx +30 -10
  326. package/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.tsx +203 -10
  327. package/UI/Components/TelemetryViewer/components/TelemetryFacetSection.tsx +60 -73
  328. package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +94 -7
  329. package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +17 -2
  330. package/UI/Components/TelemetryViewer/types.ts +19 -0
  331. package/UI/Components/TelemetryViewer/useFacetSearchExemptions.ts +158 -0
  332. package/UI/Components/TelemetryViewer/useFacetSectionSearch.ts +102 -0
  333. package/UI/Utils/Clipboard.ts +68 -2
  334. package/UI/Utils/Navigation.ts +17 -2
  335. package/UI/Utils/Telemetry/TelemetryEntityNames.ts +620 -0
  336. package/UI/Utils/Telemetry/UseTelemetryEntityNames.ts +151 -0
  337. package/Utils/AI/InvestigationReport.ts +1789 -0
  338. package/Utils/API.ts +90 -1
  339. package/Utils/Rum/SessionReplayHealth.ts +11 -0
  340. package/Utils/Rum/SessionReplayRecordingEnded.ts +134 -0
  341. package/Utils/SecurityEvent/Connectors/AwsSecurityHubNormalizer.ts +427 -0
  342. package/Utils/SecurityEvent/Connectors/CrowdStrikeFalconNormalizer.ts +197 -0
  343. package/Utils/SecurityEvent/Connectors/ElasticSecurityNormalizer.ts +464 -0
  344. package/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdrNormalizer.ts +567 -0
  345. package/Utils/SecurityEvent/Connectors/MicrosoftSentinelNormalizer.ts +299 -0
  346. package/Utils/SecurityEvent/Connectors/OktaNormalizer.ts +467 -0
  347. package/Utils/SecurityEvent/Connectors/SplunkNormalizer.ts +439 -0
  348. package/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.ts +124 -12
  349. package/Utils/Telemetry/CrossSignalScope.ts +22 -8
  350. package/Utils/Telemetry/EntityRelationship.ts +8 -0
  351. package/Utils/Telemetry/LockedFilterSearch.ts +412 -0
  352. package/Utils/Telemetry/NetworkHost.ts +43 -0
  353. package/Utils/Telemetry/OriginAllowList.ts +139 -4
  354. package/Utils/Traces/CriticalPath.ts +10 -4
  355. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  356. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  357. package/build/dist/Models/DatabaseModels/RumApplication.js +1 -1
  358. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  359. package/build/dist/Models/DatabaseModels/SecurityEventConnection.js +490 -0
  360. package/build/dist/Models/DatabaseModels/SecurityEventConnection.js.map +1 -0
  361. package/build/dist/Models/DatabaseModels/SecurityEventConnectionRun.js +287 -0
  362. package/build/dist/Models/DatabaseModels/SecurityEventConnectionRun.js.map +1 -0
  363. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js +2 -2
  364. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js.map +1 -1
  365. package/build/dist/Server/API/AIInvestigationAPI.js +336 -27
  366. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  367. package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js +182 -7
  368. package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js.map +1 -1
  369. package/build/dist/Server/API/SecurityEventConnectionAPI.js +171 -0
  370. package/build/dist/Server/API/SecurityEventConnectionAPI.js.map +1 -0
  371. package/build/dist/Server/API/TelemetryAPI.js +248 -170
  372. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  373. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792700000000-AddSecurityEventConnections.js +40 -0
  374. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792700000000-AddSecurityEventConnections.js.map +1 -0
  375. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  376. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  377. package/build/dist/Server/Middleware/TelemetryIngest.js +57 -4
  378. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  379. package/build/dist/Server/Services/ExceptionAggregationService.js +7 -16
  380. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  381. package/build/dist/Server/Services/GoogleSecOpsConnectionService.js +8 -0
  382. package/build/dist/Server/Services/GoogleSecOpsConnectionService.js.map +1 -1
  383. package/build/dist/Server/Services/Index.js +4 -0
  384. package/build/dist/Server/Services/Index.js.map +1 -1
  385. package/build/dist/Server/Services/InventoryItemService.js +22 -0
  386. package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
  387. package/build/dist/Server/Services/LogAggregationService.js +8 -17
  388. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  389. package/build/dist/Server/Services/MetricAggregationService.js +4 -14
  390. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  391. package/build/dist/Server/Services/SecurityEventConnectionRunService.js +9 -0
  392. package/build/dist/Server/Services/SecurityEventConnectionRunService.js.map +1 -0
  393. package/build/dist/Server/Services/SecurityEventConnectionService.js +356 -0
  394. package/build/dist/Server/Services/SecurityEventConnectionService.js.map +1 -0
  395. package/build/dist/Server/Services/TraceAggregationService.js +51 -25
  396. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  397. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +9 -0
  398. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  399. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +3 -0
  400. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  401. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +14 -7
  402. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  403. package/build/dist/Server/Utils/AI/SRE/InvestigationEvidence.js +468 -0
  404. package/build/dist/Server/Utils/AI/SRE/InvestigationEvidence.js.map +1 -0
  405. package/build/dist/Server/Utils/AI/SRE/InvestigationReferences.js +230 -0
  406. package/build/dist/Server/Utils/AI/SRE/InvestigationReferences.js.map +1 -0
  407. package/build/dist/Server/Utils/AI/Toolbox/Index.js +32 -0
  408. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  409. package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js +6 -2
  410. package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js.map +1 -1
  411. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +59 -0
  412. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  413. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +5 -3
  414. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  415. package/build/dist/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubClient.js +752 -0
  416. package/build/dist/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubClient.js.map +1 -0
  417. package/build/dist/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubConnector.js +493 -0
  418. package/build/dist/Server/Utils/SecurityEvent/Connectors/AwsSecurityHub/AwsSecurityHubConnector.js.map +1 -0
  419. package/build/dist/Server/Utils/SecurityEvent/Connectors/ConnectorPlatformHealth.js +352 -0
  420. package/build/dist/Server/Utils/SecurityEvent/Connectors/ConnectorPlatformHealth.js.map +1 -0
  421. package/build/dist/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconClient.js +405 -0
  422. package/build/dist/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconClient.js.map +1 -0
  423. package/build/dist/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconConnector.js +466 -0
  424. package/build/dist/Server/Utils/SecurityEvent/Connectors/CrowdStrikeFalcon/CrowdStrikeFalconConnector.js.map +1 -0
  425. package/build/dist/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityClient.js +344 -0
  426. package/build/dist/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityClient.js.map +1 -0
  427. package/build/dist/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityConnector.js +511 -0
  428. package/build/dist/Server/Utils/SecurityEvent/Connectors/ElasticSecurity/ElasticSecurityConnector.js.map +1 -0
  429. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrClient.js +406 -0
  430. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrClient.js.map +1 -0
  431. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrConnector.js +336 -0
  432. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdr/MicrosoftDefenderXdrConnector.js.map +1 -0
  433. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelClient.js +474 -0
  434. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelClient.js.map +1 -0
  435. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelConnector.js +417 -0
  436. package/build/dist/Server/Utils/SecurityEvent/Connectors/MicrosoftSentinel/MicrosoftSentinelConnector.js.map +1 -0
  437. package/build/dist/Server/Utils/SecurityEvent/Connectors/Okta/OktaClient.js +314 -0
  438. package/build/dist/Server/Utils/SecurityEvent/Connectors/Okta/OktaClient.js.map +1 -0
  439. package/build/dist/Server/Utils/SecurityEvent/Connectors/Okta/OktaConnector.js +494 -0
  440. package/build/dist/Server/Utils/SecurityEvent/Connectors/Okta/OktaConnector.js.map +1 -0
  441. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionPoller.js +719 -0
  442. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionPoller.js.map +1 -0
  443. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionRunExecutor.js +404 -0
  444. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionRunExecutor.js.map +1 -0
  445. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionTester.js +209 -0
  446. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectionTester.js.map +1 -0
  447. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectorRegistry.js +40 -0
  448. package/build/dist/Server/Utils/SecurityEvent/Connectors/SecurityEventConnectorRegistry.js.map +1 -0
  449. package/build/dist/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkClient.js +494 -0
  450. package/build/dist/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkClient.js.map +1 -0
  451. package/build/dist/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkConnector.js +379 -0
  452. package/build/dist/Server/Utils/SecurityEvent/Connectors/Splunk/SplunkConnector.js.map +1 -0
  453. package/build/dist/Server/Utils/SecurityEvent/Connectors/Types.js +27 -0
  454. package/build/dist/Server/Utils/SecurityEvent/Connectors/Types.js.map +1 -0
  455. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +234 -61
  456. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
  457. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsConnectionTester.js +537 -0
  458. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsConnectionTester.js.map +1 -0
  459. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +572 -115
  460. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
  461. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js +35 -1
  462. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js.map +1 -1
  463. package/build/dist/Server/Utils/SecurityEvent/SecurityEventDedupe.js +52 -0
  464. package/build/dist/Server/Utils/SecurityEvent/SecurityEventDedupe.js.map +1 -0
  465. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +521 -32
  466. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
  467. package/build/dist/Server/Utils/StartServer.js +10 -0
  468. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  469. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +8 -0
  470. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  471. package/build/dist/Server/Utils/Telemetry/KubernetesResourceAttributes.js +80 -0
  472. package/build/dist/Server/Utils/Telemetry/KubernetesResourceAttributes.js.map +1 -0
  473. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +122 -67
  474. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -1
  475. package/build/dist/Server/Utils/Telemetry/ResourceFacetPlanner.js +146 -0
  476. package/build/dist/Server/Utils/Telemetry/ResourceFacetPlanner.js.map +1 -0
  477. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +174 -248
  478. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  479. package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js +492 -0
  480. package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js.map +1 -0
  481. package/build/dist/Server/Utils/Telemetry/TraceContextPropagation.js +259 -0
  482. package/build/dist/Server/Utils/Telemetry/TraceContextPropagation.js.map +1 -0
  483. package/build/dist/Server/Utils/Telemetry.js +11 -5
  484. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  485. package/build/dist/Types/AI/InvestigationEvidence.js +2 -0
  486. package/build/dist/Types/AI/InvestigationEvidence.js.map +1 -0
  487. package/build/dist/Types/Permission.js +2 -2
  488. package/build/dist/Types/Permission.js.map +1 -1
  489. package/build/dist/Types/Rum/SessionReplay.js +95 -0
  490. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  491. package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -1
  492. package/build/dist/Types/SecurityEvent/Connectors/ConnectorDiagnostics.js +18 -0
  493. package/build/dist/Types/SecurityEvent/Connectors/ConnectorDiagnostics.js.map +1 -0
  494. package/build/dist/Types/SecurityEvent/Connectors/SecurityEventConnectionDiagnostics.js +2 -0
  495. package/build/dist/Types/SecurityEvent/Connectors/SecurityEventConnectionDiagnostics.js.map +1 -0
  496. package/build/dist/Types/SecurityEvent/Connectors/SecurityEventConnectorCatalog.js +374 -0
  497. package/build/dist/Types/SecurityEvent/Connectors/SecurityEventConnectorCatalog.js.map +1 -0
  498. package/build/dist/Types/SecurityEvent/Connectors/SecurityEventConnectorProvider.js +35 -0
  499. package/build/dist/Types/SecurityEvent/Connectors/SecurityEventConnectorProvider.js.map +1 -0
  500. package/build/dist/Types/SecurityEvent/GoogleSecOpsRegion.js +35 -0
  501. package/build/dist/Types/SecurityEvent/GoogleSecOpsRegion.js.map +1 -0
  502. package/build/dist/Types/Telemetry/EntityType.js +14 -0
  503. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  504. package/build/dist/Types/Telemetry/ExceptionSpanScope.js +59 -0
  505. package/build/dist/Types/Telemetry/ExceptionSpanScope.js.map +1 -0
  506. package/build/dist/Types/Telemetry/LockedFilterDetail.js +16 -0
  507. package/build/dist/Types/Telemetry/LockedFilterDetail.js.map +1 -0
  508. package/build/dist/Types/Telemetry/ResourceEntityFacet.js +16 -10
  509. package/build/dist/Types/Telemetry/ResourceEntityFacet.js.map +1 -1
  510. package/build/dist/Types/Telemetry/ResourceFacetCatalog.js +119 -0
  511. package/build/dist/Types/Telemetry/ResourceFacetCatalog.js.map +1 -0
  512. package/build/dist/UI/Components/Card/Card.js +34 -17
  513. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  514. package/build/dist/UI/Components/Checkbox/Checkbox.js +6 -4
  515. package/build/dist/UI/Components/Checkbox/Checkbox.js.map +1 -1
  516. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js +5 -1
  517. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js.map +1 -1
  518. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +1 -1
  519. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  520. package/build/dist/UI/Components/Detail/Detail.js +63 -13
  521. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  522. package/build/dist/UI/Components/ErrorBoundary.js +34 -0
  523. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  524. package/build/dist/UI/Components/LogsViewer/LogsEntityNames.js +535 -0
  525. package/build/dist/UI/Components/LogsViewer/LogsEntityNames.js.map +1 -0
  526. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +117 -57
  527. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  528. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +5 -7
  529. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -1
  530. package/build/dist/UI/Components/LogsViewer/components/FacetSection.js +31 -44
  531. package/build/dist/UI/Components/LogsViewer/components/FacetSection.js.map +1 -1
  532. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js +17 -3
  533. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js.map +1 -1
  534. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +19 -3
  535. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  536. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +64 -18
  537. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  538. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +100 -41
  539. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  540. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +13 -5
  541. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  542. package/build/dist/UI/Components/LogsViewer/types.js.map +1 -1
  543. package/build/dist/UI/Components/Markdown.tsx/InlineReferences.js +403 -0
  544. package/build/dist/UI/Components/Markdown.tsx/InlineReferences.js.map +1 -0
  545. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +197 -179
  546. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  547. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js +30 -21
  548. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js.map +1 -1
  549. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +12 -0
  550. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  551. package/build/dist/UI/Components/ModelDetail/ModelDetail.js +46 -12
  552. package/build/dist/UI/Components/ModelDetail/ModelDetail.js.map +1 -1
  553. package/build/dist/UI/Components/ModelList/ModelList.js +26 -7
  554. package/build/dist/UI/Components/ModelList/ModelList.js.map +1 -1
  555. package/build/dist/UI/Components/Page/ModelPage.js +62 -34
  556. package/build/dist/UI/Components/Page/ModelPage.js.map +1 -1
  557. package/build/dist/UI/Components/Table/Table.js +3 -1
  558. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  559. package/build/dist/UI/Components/Table/TableRow.js +8 -1
  560. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  561. package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js +111 -0
  562. package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js.map +1 -0
  563. package/build/dist/UI/Components/TelemetryViewer/ResourceFacetConfigs.js +22 -0
  564. package/build/dist/UI/Components/TelemetryViewer/ResourceFacetConfigs.js.map +1 -0
  565. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +1 -1
  566. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  567. package/build/dist/UI/Components/TelemetryViewer/components/FacetSearchInput.js +36 -0
  568. package/build/dist/UI/Components/TelemetryViewer/components/FacetSearchInput.js.map +1 -0
  569. package/build/dist/UI/Components/TelemetryViewer/components/FacetSectionHeader.js +21 -0
  570. package/build/dist/UI/Components/TelemetryViewer/components/FacetSectionHeader.js.map +1 -0
  571. package/build/dist/UI/Components/TelemetryViewer/components/FacetShowMoreButton.js +14 -0
  572. package/build/dist/UI/Components/TelemetryViewer/components/FacetShowMoreButton.js.map +1 -0
  573. package/build/dist/UI/Components/TelemetryViewer/components/HiddenFacetsFooter.js +27 -0
  574. package/build/dist/UI/Components/TelemetryViewer/components/HiddenFacetsFooter.js.map +1 -0
  575. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterActions.js +88 -0
  576. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterActions.js.map +1 -0
  577. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js +228 -0
  578. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js.map +1 -0
  579. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.js +6 -6
  580. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.js.map +1 -1
  581. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.js +111 -12
  582. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.js.map +1 -1
  583. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSection.js +27 -40
  584. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSection.js.map +1 -1
  585. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +70 -10
  586. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
  587. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js +17 -3
  588. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js.map +1 -1
  589. package/build/dist/UI/Components/TelemetryViewer/types.js +0 -4
  590. package/build/dist/UI/Components/TelemetryViewer/types.js.map +1 -1
  591. package/build/dist/UI/Components/TelemetryViewer/useFacetSearchExemptions.js +70 -0
  592. package/build/dist/UI/Components/TelemetryViewer/useFacetSearchExemptions.js.map +1 -0
  593. package/build/dist/UI/Components/TelemetryViewer/useFacetSectionSearch.js +52 -0
  594. package/build/dist/UI/Components/TelemetryViewer/useFacetSectionSearch.js.map +1 -0
  595. package/build/dist/UI/Utils/Clipboard.js +59 -2
  596. package/build/dist/UI/Utils/Clipboard.js.map +1 -1
  597. package/build/dist/UI/Utils/Navigation.js +11 -2
  598. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  599. package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js +471 -0
  600. package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js.map +1 -0
  601. package/build/dist/UI/Utils/Telemetry/UseTelemetryEntityNames.js +113 -0
  602. package/build/dist/UI/Utils/Telemetry/UseTelemetryEntityNames.js.map +1 -0
  603. package/build/dist/Utils/AI/InvestigationReport.js +1241 -0
  604. package/build/dist/Utils/AI/InvestigationReport.js.map +1 -0
  605. package/build/dist/Utils/API.js +25 -0
  606. package/build/dist/Utils/API.js.map +1 -1
  607. package/build/dist/Utils/Rum/SessionReplayHealth.js +10 -0
  608. package/build/dist/Utils/Rum/SessionReplayHealth.js.map +1 -1
  609. package/build/dist/Utils/Rum/SessionReplayRecordingEnded.js +54 -0
  610. package/build/dist/Utils/Rum/SessionReplayRecordingEnded.js.map +1 -0
  611. package/build/dist/Utils/SecurityEvent/Connectors/AwsSecurityHubNormalizer.js +311 -0
  612. package/build/dist/Utils/SecurityEvent/Connectors/AwsSecurityHubNormalizer.js.map +1 -0
  613. package/build/dist/Utils/SecurityEvent/Connectors/CrowdStrikeFalconNormalizer.js +150 -0
  614. package/build/dist/Utils/SecurityEvent/Connectors/CrowdStrikeFalconNormalizer.js.map +1 -0
  615. package/build/dist/Utils/SecurityEvent/Connectors/ElasticSecurityNormalizer.js +328 -0
  616. package/build/dist/Utils/SecurityEvent/Connectors/ElasticSecurityNormalizer.js.map +1 -0
  617. package/build/dist/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdrNormalizer.js +405 -0
  618. package/build/dist/Utils/SecurityEvent/Connectors/MicrosoftDefenderXdrNormalizer.js.map +1 -0
  619. package/build/dist/Utils/SecurityEvent/Connectors/MicrosoftSentinelNormalizer.js +212 -0
  620. package/build/dist/Utils/SecurityEvent/Connectors/MicrosoftSentinelNormalizer.js.map +1 -0
  621. package/build/dist/Utils/SecurityEvent/Connectors/OktaNormalizer.js +351 -0
  622. package/build/dist/Utils/SecurityEvent/Connectors/OktaNormalizer.js.map +1 -0
  623. package/build/dist/Utils/SecurityEvent/Connectors/SplunkNormalizer.js +348 -0
  624. package/build/dist/Utils/SecurityEvent/Connectors/SplunkNormalizer.js.map +1 -0
  625. package/build/dist/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.js +103 -10
  626. package/build/dist/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.js.map +1 -1
  627. package/build/dist/Utils/Telemetry/CrossSignalScope.js +16 -5
  628. package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
  629. package/build/dist/Utils/Telemetry/EntityRelationship.js +7 -0
  630. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  631. package/build/dist/Utils/Telemetry/LockedFilterSearch.js +277 -0
  632. package/build/dist/Utils/Telemetry/LockedFilterSearch.js.map +1 -0
  633. package/build/dist/Utils/Telemetry/NetworkHost.js +39 -0
  634. package/build/dist/Utils/Telemetry/NetworkHost.js.map +1 -0
  635. package/build/dist/Utils/Telemetry/OriginAllowList.js +105 -4
  636. package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -1
  637. package/build/dist/Utils/Traces/CriticalPath.js +9 -4
  638. package/build/dist/Utils/Traces/CriticalPath.js.map +1 -1
  639. package/package.json +1 -1
  640. package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +0 -600
  641. package/UI/Components/GanttChart/Bar/BarLabel.tsx +0 -17
  642. package/UI/Components/GanttChart/Bar/Index.tsx +0 -149
  643. package/UI/Components/GanttChart/ChartContainer.tsx +0 -50
  644. package/UI/Components/GanttChart/Index.tsx +0 -90
  645. package/UI/Components/GanttChart/Row/Index.tsx +0 -22
  646. package/UI/Components/GanttChart/Row/Row.tsx +0 -231
  647. package/UI/Components/GanttChart/Row/RowLabel.tsx +0 -30
  648. package/UI/Components/GanttChart/Rows.tsx +0 -59
  649. package/UI/Components/GanttChart/Timeline/Index.tsx +0 -46
  650. package/UI/Components/GanttChart/Timeline/TimelineInterval.tsx +0 -33
  651. package/UI/Components/GanttChart/Timeline/TimelineIntervalMarks.tsx +0 -43
  652. package/build/dist/UI/Components/GanttChart/Bar/BarLabel.js +0 -8
  653. package/build/dist/UI/Components/GanttChart/Bar/BarLabel.js.map +0 -1
  654. package/build/dist/UI/Components/GanttChart/Bar/Index.js +0 -77
  655. package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +0 -1
  656. package/build/dist/UI/Components/GanttChart/ChartContainer.js +0 -33
  657. package/build/dist/UI/Components/GanttChart/ChartContainer.js.map +0 -1
  658. package/build/dist/UI/Components/GanttChart/Index.js +0 -39
  659. package/build/dist/UI/Components/GanttChart/Index.js.map +0 -1
  660. package/build/dist/UI/Components/GanttChart/Row/Index.js +0 -7
  661. package/build/dist/UI/Components/GanttChart/Row/Index.js.map +0 -1
  662. package/build/dist/UI/Components/GanttChart/Row/Row.js +0 -106
  663. package/build/dist/UI/Components/GanttChart/Row/Row.js.map +0 -1
  664. package/build/dist/UI/Components/GanttChart/Row/RowLabel.js +0 -10
  665. package/build/dist/UI/Components/GanttChart/Row/RowLabel.js.map +0 -1
  666. package/build/dist/UI/Components/GanttChart/Rows.js +0 -19
  667. package/build/dist/UI/Components/GanttChart/Rows.js.map +0 -1
  668. package/build/dist/UI/Components/GanttChart/Timeline/Index.js +0 -16
  669. package/build/dist/UI/Components/GanttChart/Timeline/Index.js.map +0 -1
  670. package/build/dist/UI/Components/GanttChart/Timeline/TimelineInterval.js +0 -13
  671. package/build/dist/UI/Components/GanttChart/Timeline/TimelineInterval.js.map +0 -1
  672. package/build/dist/UI/Components/GanttChart/Timeline/TimelineIntervalMarks.js +0 -13
  673. package/build/dist/UI/Components/GanttChart/Timeline/TimelineIntervalMarks.js.map +0 -1
@@ -0,0 +1,494 @@
1
+ import BadDataException from "../../../../../Types/Exception/BadDataException";
2
+ import SecurityEventConnectorProvider from "../../../../../Types/SecurityEvent/Connectors/SecurityEventConnectorProvider";
3
+ import { getSecurityEventConnectorDefinition, } from "../../../../../Types/SecurityEvent/Connectors/SecurityEventConnectorCatalog";
4
+ import OktaNormalizer from "../../../../../Utils/SecurityEvent/Connectors/OktaNormalizer";
5
+ import DataSourceHttpFetch from "../../../DataSource/HttpFetch";
6
+ import { redactLogString } from "../../../LogRedaction";
7
+ import ConnectorErrorMessage from "../../ConnectorErrorMessage";
8
+ import { makeCheck, readSettingString, } from "../Types";
9
+ import OktaClient, { OKTA_DEFAULT_EVENT_FILTER, OKTA_MAX_PAGE_SIZE, OktaHttpError, } from "./OktaClient";
10
+ /*
11
+ * The Admin Console is served from a `-admin` host; the API is not. A
12
+ * pasted admin URL answers with a redirect (refused) or a 404, neither of
13
+ * which says why.
14
+ */
15
+ const ADMIN_HOST_REGEX = /-admin\.[^.]+\.[^.]+$/i;
16
+ // The header scheme pasted along with the token.
17
+ const TOKEN_SCHEME_PREFIX_REGEX = /^ssws\s/i;
18
+ const WHITESPACE_REGEX = /\s/;
19
+ // Okta rejects filters on `published`; it would only surface as a 400 later.
20
+ const PUBLISHED_ATTRIBUTE_REGEX = /(^|[^A-Za-z0-9_.])published\s*[A-Za-z]{2}\s/i;
21
+ /*
22
+ * A filter is one line of printable text. Control characters (newlines,
23
+ * tabs, NUL, DEL) can only come from a paste gone wrong, and Okta would
24
+ * answer 400 to them anyway. Checked by code point because the lint rule
25
+ * no-control-regex forbids spelling the range in a regular expression.
26
+ */
27
+ function hasControlCharacter(value) {
28
+ for (let index = 0; index < value.length; index++) {
29
+ const code = value.charCodeAt(index);
30
+ if (code < 0x20 || code === 0x7f) {
31
+ return true;
32
+ }
33
+ }
34
+ return false;
35
+ }
36
+ const MAX_FILTER_LENGTH = 2000;
37
+ const DAY_IN_MS = 24 * 60 * 60 * 1000;
38
+ // Normalization failures quoted into warnings before the rest are counted only.
39
+ const MAX_NORMALIZATION_WARNINGS = 5;
40
+ export default class OktaConnector {
41
+ constructor(transport) {
42
+ this.provider = SecurityEventConnectorProvider.OktaSystemLog;
43
+ this.transport =
44
+ transport ||
45
+ ((request) => {
46
+ return DataSourceHttpFetch.fetch(request);
47
+ });
48
+ }
49
+ static getDefinition() {
50
+ const definition = getSecurityEventConnectorDefinition(SecurityEventConnectorProvider.OktaSystemLog);
51
+ if (!definition) {
52
+ throw new BadDataException("Okta System Log is missing from the connector catalog.");
53
+ }
54
+ return definition;
55
+ }
56
+ /*
57
+ * Validation messages name the field by the title the form shows, read
58
+ * from the catalog so a retitled field cannot leave a stale name here.
59
+ */
60
+ static fieldTitle(key) {
61
+ const definition = this.getDefinition();
62
+ const field = [
63
+ ...definition.configFields,
64
+ ...definition.secretFields,
65
+ ].find((candidate) => {
66
+ return candidate.key === key;
67
+ });
68
+ return (field === null || field === void 0 ? void 0 : field.title) || key;
69
+ }
70
+ static parseSettings(settings) {
71
+ const orgUrl = readSettingString(settings.config, "orgUrl");
72
+ const filter = readSettingString(settings.config, "filter");
73
+ const apiToken = readSettingString(settings.secrets, "apiToken");
74
+ if (!orgUrl) {
75
+ throw new BadDataException(`${this.fieldTitle("orgUrl")} is required.`);
76
+ }
77
+ let parsed;
78
+ try {
79
+ parsed = new URL(orgUrl);
80
+ }
81
+ catch (_a) {
82
+ throw new BadDataException(`${this.fieldTitle("orgUrl")} must be an absolute URL such as https://acme.okta.com.`);
83
+ }
84
+ /*
85
+ * Okta orgs are only ever served over TLS; an http URL means the
86
+ * token would be sent in clear text to whatever answers there.
87
+ */
88
+ if (parsed.protocol !== "https:") {
89
+ throw new BadDataException(`${this.fieldTitle("orgUrl")} must use https.`);
90
+ }
91
+ if (parsed.search || parsed.hash) {
92
+ throw new BadDataException(`${this.fieldTitle("orgUrl")} must not contain a query string or fragment.`);
93
+ }
94
+ if (parsed.pathname !== "/" && parsed.pathname !== "") {
95
+ throw new BadDataException(`${this.fieldTitle("orgUrl")} must be the org's base URL without a path (for example https://acme.okta.com, not https://acme.okta.com/api/v1/logs).`);
96
+ }
97
+ if (ADMIN_HOST_REGEX.test(parsed.hostname)) {
98
+ throw new BadDataException(`${this.fieldTitle("orgUrl")} must be the org URL users sign in to (for example https://acme.okta.com), not the Admin Console's -admin URL.`);
99
+ }
100
+ if (filter.length > MAX_FILTER_LENGTH) {
101
+ throw new BadDataException(`${this.fieldTitle("filter")} must be at most ${MAX_FILTER_LENGTH} characters.`);
102
+ }
103
+ if (hasControlCharacter(filter)) {
104
+ throw new BadDataException(`${this.fieldTitle("filter")} must be a single-line filter expression.`);
105
+ }
106
+ if (PUBLISHED_ATTRIBUTE_REGEX.test(filter)) {
107
+ throw new BadDataException(`${this.fieldTitle("filter")} must not filter on the published attribute; the connector sets the time range itself.`);
108
+ }
109
+ if (!apiToken) {
110
+ throw new BadDataException(`${this.fieldTitle("apiToken")} is required.`);
111
+ }
112
+ if (TOKEN_SCHEME_PREFIX_REGEX.test(apiToken)) {
113
+ throw new BadDataException(`${this.fieldTitle("apiToken")} must be pasted without the 'SSWS' prefix.`);
114
+ }
115
+ if (WHITESPACE_REGEX.test(apiToken)) {
116
+ throw new BadDataException(`${this.fieldTitle("apiToken")} must be the token value alone, without spaces.`);
117
+ }
118
+ return { orgUrl: parsed.origin, filter, apiToken };
119
+ }
120
+ validateSettings(settings) {
121
+ OktaConnector.parseSettings(settings);
122
+ }
123
+ buildClient(parsed, requestTimeoutInMs) {
124
+ return new OktaClient({
125
+ orgUrl: parsed.orgUrl,
126
+ apiToken: parsed.apiToken,
127
+ transport: this.transport,
128
+ requestTimeoutInMs,
129
+ });
130
+ }
131
+ /*
132
+ * The filter sent with every listing: the tenant's own expression when
133
+ * it set one, otherwise the connector's default event families.
134
+ */
135
+ static effectiveFilter(filter) {
136
+ return filter.trim() || OKTA_DEFAULT_EVENT_FILTER;
137
+ }
138
+ /*
139
+ * Three provider checks, in dependency order. Each later check is
140
+ * skipped rather than failed when an earlier one fails, so the report
141
+ * names one root cause instead of three symptoms of it.
142
+ */
143
+ async testConnection(settings, options) {
144
+ const checks = [];
145
+ let parsed;
146
+ let startedAtMs = Date.now();
147
+ try {
148
+ parsed = OktaConnector.parseSettings(settings);
149
+ }
150
+ catch (error) {
151
+ checks.push(makeCheck({
152
+ key: "authentication",
153
+ name: "Authenticate with Okta",
154
+ status: "fail",
155
+ startedAtMs,
156
+ message: redactLogString(ConnectorErrorMessage.toMessage(error)),
157
+ remediation: "Correct the highlighted setting and test again. Nothing was contacted.",
158
+ }));
159
+ checks.push(OktaConnector.skipped("read-permission", "Read System Log events", "Skipped because the configuration is invalid."));
160
+ checks.push(OktaConnector.skipped("detections-available", "Events available to import", "Skipped because the configuration is invalid."));
161
+ return checks;
162
+ }
163
+ const client = this.buildClient(parsed, options.requestTimeoutInMs);
164
+ const hostLabel = new URL(parsed.orgUrl).host;
165
+ const filter = OktaConnector.effectiveFilter(parsed.filter);
166
+ const usingDefaultFilter = !parsed.filter.trim();
167
+ // 1. Authentication: one event, no bounds, no filter.
168
+ let authenticated = false;
169
+ try {
170
+ const page = await client.probe();
171
+ authenticated = true;
172
+ checks.push(makeCheck({
173
+ key: "authentication",
174
+ name: "Authenticate with Okta",
175
+ status: "pass",
176
+ startedAtMs,
177
+ message: `Okta at ${hostLabel} accepted the API token for the System Log.`,
178
+ details: { probeReturnedEvents: page.events.length },
179
+ }));
180
+ }
181
+ catch (error) {
182
+ checks.push(makeCheck({
183
+ key: "authentication",
184
+ name: "Authenticate with Okta",
185
+ status: "fail",
186
+ startedAtMs,
187
+ message: OktaConnector.errorMessage(error),
188
+ remediation: OktaConnector.remediationFor(error, "authentication"),
189
+ }));
190
+ }
191
+ if (!authenticated) {
192
+ checks.push(OktaConnector.skipped("read-permission", "Read System Log events", "Skipped because authentication did not succeed."));
193
+ checks.push(OktaConnector.skipped("detections-available", "Events available to import", "Skipped because authentication did not succeed."));
194
+ return checks;
195
+ }
196
+ const now = new Date();
197
+ const dayAgo = new Date(now.getTime() - DAY_IN_MS);
198
+ const weekAgo = new Date(now.getTime() - 7 * DAY_IN_MS);
199
+ /*
200
+ * 2. Read permission: one event from the last 24 hours through the
201
+ * filter polling will use, so an invalid custom filter fails here
202
+ * (HTTP 400) with its own remediation instead of on the first poll.
203
+ */
204
+ startedAtMs = Date.now();
205
+ let readable = false;
206
+ try {
207
+ const page = await client.listLogEvents({
208
+ startTime: dayAgo,
209
+ endTime: now,
210
+ limit: 1,
211
+ filter,
212
+ });
213
+ readable = true;
214
+ const first = page.events[0];
215
+ const filterLabel = usingDefaultFilter
216
+ ? "the default event filter"
217
+ : "the connection's Event filter";
218
+ checks.push(makeCheck({
219
+ key: "read-permission",
220
+ name: "Read System Log events",
221
+ status: "pass",
222
+ startedAtMs,
223
+ message: first
224
+ ? `The System Log is readable through ${filterLabel}; the one-record probe over the last 24 hours returned a "${OktaConnector.describeEvent(first)}" event.`
225
+ : `The System Log is readable through ${filterLabel}. No matching event was published in the last 24 hours.`,
226
+ details: { usingDefaultFilter },
227
+ }));
228
+ }
229
+ catch (error) {
230
+ checks.push(makeCheck({
231
+ key: "read-permission",
232
+ name: "Read System Log events",
233
+ status: "fail",
234
+ startedAtMs,
235
+ message: OktaConnector.errorMessage(error),
236
+ remediation: OktaConnector.remediationFor(error, "read-permission"),
237
+ }));
238
+ }
239
+ if (!readable) {
240
+ checks.push(OktaConnector.skipped("detections-available", "Events available to import", "Skipped because System Log events could not be read."));
241
+ return checks;
242
+ }
243
+ // 3. Availability: counts over the last 24 hours and 7 days.
244
+ startedAtMs = Date.now();
245
+ try {
246
+ const last24h = await client.countLogEvents({
247
+ startTime: dayAgo,
248
+ endTime: now,
249
+ filter,
250
+ });
251
+ const last7d = await client.countLogEvents({
252
+ startTime: weekAgo,
253
+ endTime: now,
254
+ filter,
255
+ });
256
+ const label24h = OktaConnector.countLabel(last24h);
257
+ const label7d = OktaConnector.countLabel(last7d);
258
+ const nothing = last24h.count === 0 && last7d.count === 0;
259
+ const details = {
260
+ createdLast24h: last24h.count,
261
+ createdLast7d: last7d.count,
262
+ hasMoreLast24h: last24h.hasMore,
263
+ hasMoreLast7d: last7d.hasMore,
264
+ usingDefaultFilter,
265
+ };
266
+ checks.push(makeCheck(Object.assign(Object.assign({ key: "detections-available", name: "Events available to import", status: nothing ? "warn" : "pass", startedAtMs, message: nothing
267
+ ? "No matching events were published in the last 7 days. Polling will import new events as Okta publishes them."
268
+ : `${label24h} event${label24h === "1" ? "" : "s"} published in the last 24 hours and ${label7d} in the last 7 days.` }, (nothing
269
+ ? {
270
+ remediation: usingDefaultFilter
271
+ ? "An active Okta org publishes sign-in events constantly, so an empty week usually means the org URL points at a sandbox or an unused org. Check the Okta organization URL."
272
+ : "The connection's Event filter matched nothing in seven days. Check the expression against the event types in Okta's System Log, or clear it to use the default event families.",
273
+ }
274
+ : {})), { details })));
275
+ }
276
+ catch (error) {
277
+ checks.push(makeCheck({
278
+ key: "detections-available",
279
+ name: "Events available to import",
280
+ status: "fail",
281
+ startedAtMs,
282
+ message: OktaConnector.errorMessage(error),
283
+ remediation: OktaConnector.remediationFor(error, "detections-available"),
284
+ }));
285
+ }
286
+ return checks;
287
+ }
288
+ /*
289
+ * Read every event published in the window, page by page, within the
290
+ * request and event budgets. A budget hit returns complete=false with a
291
+ * warning and resumeAfter set to the `published` time of the last event
292
+ * read, so the poller moves on from there instead of re-reading the
293
+ * same oldest events forever.
294
+ */
295
+ async fetchEvents(settings, window, options) {
296
+ const parsed = OktaConnector.parseSettings(settings);
297
+ const client = this.buildClient(parsed, options.requestTimeoutInMs);
298
+ const result = {
299
+ events: [],
300
+ fetchedCount: 0,
301
+ rejectedCount: 0,
302
+ failedCount: 0,
303
+ complete: true,
304
+ requestCount: 0,
305
+ warnings: [],
306
+ samples: [],
307
+ };
308
+ const pageSize = Math.max(1, Math.min(OKTA_MAX_PAGE_SIZE, Math.trunc(options.maxEvents)));
309
+ const startIso = window.startTime.toISOString();
310
+ const endIso = window.endTime.toISOString();
311
+ const seenIds = new Set();
312
+ let nextUrl = null;
313
+ /*
314
+ * `published` of the last event read. Bounded requests are ordered by
315
+ * `published`, so this is also the latest one read. Events the
316
+ * normalizer rejects still count: this measures how far the read got.
317
+ */
318
+ let lastPublished = undefined;
319
+ for (;;) {
320
+ if (result.requestCount >= options.maxRequests) {
321
+ result.complete = false;
322
+ result.resumeAfter = lastPublished;
323
+ result.warnings.push(`Stopped after ${options.maxRequests} requests with events still unread in the window ${startIso} to ${endIso}. ${OktaConnector.progressSentence(lastPublished)}`);
324
+ break;
325
+ }
326
+ const page = nextUrl
327
+ ? await client.listNextPage(nextUrl)
328
+ : await client.listLogEvents({
329
+ startTime: startIso,
330
+ endTime: endIso,
331
+ limit: pageSize,
332
+ filter: OktaConnector.effectiveFilter(parsed.filter),
333
+ });
334
+ result.requestCount += 1;
335
+ let reachedEventBound = false;
336
+ for (const event of page.events) {
337
+ /*
338
+ * `uuid` is the event's own identifier. An event without one is
339
+ * keyed by its content, so an identical copy on a later page is
340
+ * still recognized as the same event.
341
+ */
342
+ const key = OktaConnector.readText(event["uuid"]) || JSON.stringify(event);
343
+ if (seenIds.has(key)) {
344
+ continue;
345
+ }
346
+ if (result.fetchedCount >= options.maxEvents) {
347
+ reachedEventBound = true;
348
+ break;
349
+ }
350
+ seenIds.add(key);
351
+ result.fetchedCount += 1;
352
+ const published = OktaConnector.readPublished(event);
353
+ if (published) {
354
+ lastPublished = published;
355
+ }
356
+ this.collect(event, result, options.sampleLimit);
357
+ }
358
+ if (reachedEventBound) {
359
+ result.complete = false;
360
+ result.resumeAfter = lastPublished;
361
+ result.warnings.push(`Stopped after collecting ${options.maxEvents} events; the window holds more. ${OktaConnector.progressSentence(lastPublished)}`);
362
+ break;
363
+ }
364
+ /*
365
+ * A bounded request's last page carries no next link; an empty page
366
+ * is also the end (Okta's own guidance for consumers). Both stop
367
+ * the loop cleanly.
368
+ */
369
+ if (!page.nextUrl || page.events.length === 0) {
370
+ break;
371
+ }
372
+ nextUrl = page.nextUrl;
373
+ }
374
+ return result;
375
+ }
376
+ collect(raw, result, sampleLimit) {
377
+ if (!OktaNormalizer.isRecognized(raw)) {
378
+ result.rejectedCount += 1;
379
+ return;
380
+ }
381
+ let normalized;
382
+ try {
383
+ normalized = OktaNormalizer.normalize(raw);
384
+ }
385
+ catch (error) {
386
+ result.failedCount += 1;
387
+ if (result.warnings.length < MAX_NORMALIZATION_WARNINGS) {
388
+ result.warnings.push(`Event ${OktaConnector.readText(raw["uuid"]) || "(no uuid)"} could not be normalized: ${redactLogString(ConnectorErrorMessage.toMessage(error))}`);
389
+ }
390
+ return;
391
+ }
392
+ result.events.push(normalized);
393
+ if (result.samples.length < sampleLimit) {
394
+ const published = OktaConnector.readText(raw["published"]);
395
+ const sample = Object.assign(Object.assign({ id: normalized.eventUid, title: normalized.message, severity: normalized.severityName }, (published ? { createdTime: published } : {})), { eventTime: normalized.time.toISOString() });
396
+ result.samples.push(sample);
397
+ }
398
+ }
399
+ /*
400
+ * The event type for the read-permission message. A record the
401
+ * normalizer cannot read must not turn a successful read into a failed
402
+ * check, so this never throws.
403
+ */
404
+ static describeEvent(raw) {
405
+ try {
406
+ if (!OktaNormalizer.isRecognized(raw)) {
407
+ return "unrecognized record";
408
+ }
409
+ return redactLogString(OktaConnector.readText(raw["eventType"]) || "unnamed");
410
+ }
411
+ catch (_a) {
412
+ return "unreadable record";
413
+ }
414
+ }
415
+ /*
416
+ * An event's `published` time as a Date, or undefined when it is
417
+ * missing or unparseable (such an event does not move the resume point).
418
+ */
419
+ static readPublished(event) {
420
+ const value = OktaConnector.readText(event["published"]).trim();
421
+ if (!value) {
422
+ return undefined;
423
+ }
424
+ const parsed = new Date(value);
425
+ return Number.isNaN(parsed.getTime()) ? undefined : parsed;
426
+ }
427
+ /*
428
+ * How far a stopped read got, in the warning the run records. The
429
+ * poller decides what the next poll does with it and says so itself.
430
+ */
431
+ static progressSentence(lastPublished) {
432
+ return lastPublished
433
+ ? `The last event read was published at ${lastPublished.toISOString()}.`
434
+ : "No event read carried a readable published time, so no resume point is reported.";
435
+ }
436
+ static readText(value) {
437
+ if (value === null || value === undefined || typeof value === "object") {
438
+ return "";
439
+ }
440
+ return String(value);
441
+ }
442
+ static skipped(key, name, message) {
443
+ return makeCheck({
444
+ key,
445
+ name,
446
+ status: "skip",
447
+ startedAtMs: Date.now(),
448
+ message,
449
+ });
450
+ }
451
+ static countLabel(count) {
452
+ return count.hasMore ? `${count.count}+` : String(count.count);
453
+ }
454
+ static errorMessage(error) {
455
+ return redactLogString(ConnectorErrorMessage.toMessage(error, { truncate: false }));
456
+ }
457
+ /*
458
+ * Remediation is chosen by HTTP status when the failure carried one,
459
+ * and by the step otherwise (a timeout or a non-JSON body means the URL
460
+ * is not reaching Okta at all).
461
+ */
462
+ static remediationFor(error, step) {
463
+ const status = error instanceof OktaHttpError ? error.statusCode : null;
464
+ if (status === 400) {
465
+ if (step === "authentication") {
466
+ return "Okta rejected the probe request. Check the Okta organization URL points at an Okta org and test again.";
467
+ }
468
+ return "Okta rejected the request parameters, which after a successful authentication almost always means the Event filter is not a valid System Log filter expression. Compare it with the examples in the Okta System Log documentation (operators eq, ne, co, sw, ew, pr, gt, ge, lt, le joined with and/or, string values in double quotes, no published attribute), or clear it to use the default event families.";
469
+ }
470
+ if (status === 401) {
471
+ return "Create a new API token in the Okta Admin Console (Security > API > Tokens) as a Read-only Administrator and paste it with Update credentials. SSWS tokens expire after 30 days without use and are deprovisioned when their creator is deactivated.";
472
+ }
473
+ if (status === 403) {
474
+ return "The token's admin cannot read the System Log. Create the token as a Read-only Administrator or Super Administrator (API tokens inherit the privileges of the admin who created them), and if the token has a network zone restriction, allow the addresses OneUptime calls from.";
475
+ }
476
+ if (status === 404) {
477
+ return "Check the Okta organization URL. It must be the org's base URL such as https://acme.okta.com or https://acme.oktapreview.com, without a path, and not the -admin URL of the Admin Console.";
478
+ }
479
+ if (status === 429) {
480
+ return "Okta is rate limiting this token. Wait for the limit to reset and test again; raise the token's rate limit percentage in the Admin Console (Security > API > Tokens) or use a longer poll interval.";
481
+ }
482
+ if (status !== null && status >= 500) {
483
+ return "Okta failed internally or the query timed out on Okta's side. Test again; if it persists, check status.okta.com.";
484
+ }
485
+ if (step === "authentication") {
486
+ return "OneUptime could not get an answer from Okta. Check that the Okta organization URL is reachable from the OneUptime API and worker processes, uses https, and is not behind a proxy that rewrites responses.";
487
+ }
488
+ if (step === "read-permission") {
489
+ return "Okta answered the probe but not the filtered read over the last 24 hours. Test again; if it persists, simplify the Event filter.";
490
+ }
491
+ return "The event count request failed after a successful read. Test again; if it persists, the org may be rate limiting the token.";
492
+ }
493
+ }
494
+ //# sourceMappingURL=OktaConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OktaConnector.js","sourceRoot":"","sources":["../../../../../../../Server/Utils/SecurityEvent/Connectors/Okta/OktaConnector.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,iDAAiD,CAAC;AAO/E,OAAO,8BAA8B,MAAM,8EAA8E,CAAC;AAC1H,OAAO,EAEL,mCAAmC,GACpC,MAAM,6EAA6E,CAAC;AACrF,OAAO,cAAc,MAAM,8DAA8D,CAAC;AAC1F,OAAO,mBAGN,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,qBAAqB,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAQL,SAAS,EACT,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,UAAU,EAAE,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,GAGd,MAAM,cAAc,CAAC;AA+BtB;;;;GAIG;AACH,MAAM,gBAAgB,GAAW,wBAAwB,CAAC;AAC1D,iDAAiD;AACjD,MAAM,yBAAyB,GAAW,UAAU,CAAC;AACrD,MAAM,gBAAgB,GAAW,IAAI,CAAC;AACtC,6EAA6E;AAC7E,MAAM,yBAAyB,GAC7B,8CAA8C,CAAC;AACjD;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,KAAK,IAAI,KAAK,GAAW,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAW,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,iBAAiB,GAAW,IAAI,CAAC;AACvC,MAAM,SAAS,GAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9C,gFAAgF;AAChF,MAAM,0BAA0B,GAAW,CAAC,CAAC;AAO7C,MAAM,CAAC,OAAO,OAAO,aAAa;IAMhC,YAAmB,SAA0C;QALtD,aAAQ,GACb,8BAA8B,CAAC,aAAa,CAAC;QAK7C,IAAI,CAAC,SAAS;YACZ,SAAS;gBACT,CAAC,CAAC,OAA8B,EAAmC,EAAE;oBACnE,OAAO,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,aAAa;QAC1B,MAAM,UAAU,GACd,mCAAmC,CACjC,8BAA8B,CAAC,aAAa,CAC7C,CAAC;QAEJ,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,UAAU,CAAC,GAAW;QACnC,MAAM,UAAU,GAAqC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAkC;YAC3C,GAAG,UAAU,CAAC,YAAY;YAC1B,GAAG,UAAU,CAAC,YAAY;SAC3B,CAAC,IAAI,CAAC,CAAC,SAA0B,EAAW,EAAE;YAC7C,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,GAAG,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,aAAa,CAC1B,QAAmC;QAEnC,MAAM,MAAM,GAAW,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE,MAAM,MAAM,GAAW,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAW,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,gBAAgB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,MAAW,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,yDAAyD,CACtF,CAAC;QACJ,CAAC;QAED;;;WAGG;QACH,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAC/C,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,+CAA+C,CAC5E,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,wHAAwH,CACrJ,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,gHAAgH,CAC7I,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACtC,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,iBAAiB,cAAc,CAChF,CAAC;QACJ,CAAC;QAED,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,2CAA2C,CACxE,CAAC;QACJ,CAAC;QAED,IAAI,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,wFAAwF,CACrH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,4CAA4C,CAC3E,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,gBAAgB,CACxB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,iDAAiD,CAChF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACrD,CAAC;IAEM,gBAAgB,CAAC,QAAmC;QACzD,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEO,WAAW,CACjB,MAAsB,EACtB,kBAA0B;QAE1B,OAAO,IAAI,UAAU,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,kBAAkB;SACnB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,eAAe,CAAC,MAAc;QAC1C,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,yBAAyB,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CACzB,QAAmC,EACnC,OAA6B;QAE7B,MAAM,MAAM,GAAkC,EAAE,CAAC;QACjD,IAAI,MAAsB,CAAC;QAC3B,IAAI,WAAW,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,SAAS,CAAC;gBACR,GAAG,EAAE,gBAAgB;gBACrB,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,OAAO,EAAE,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChE,WAAW,EACT,wEAAwE;aAC3E,CAAC,CACH,CAAC;YACF,MAAM,CAAC,IAAI,CACT,aAAa,CAAC,OAAO,CACnB,iBAAiB,EACjB,wBAAwB,EACxB,+CAA+C,CAChD,CACF,CAAC;YACF,MAAM,CAAC,IAAI,CACT,aAAa,CAAC,OAAO,CACnB,sBAAsB,EACtB,4BAA4B,EAC5B,+CAA+C,CAChD,CACF,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAe,IAAI,CAAC,WAAW,CACzC,MAAM,EACN,OAAO,CAAC,kBAAkB,CAC3B,CAAC;QACF,MAAM,SAAS,GAAW,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACtD,MAAM,MAAM,GAAW,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,kBAAkB,GAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAE1D,sDAAsD;QACtD,IAAI,aAAa,GAAY,KAAK,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAsB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrD,aAAa,GAAG,IAAI,CAAC;YAErB,MAAM,CAAC,IAAI,CACT,SAAS,CAAC;gBACR,GAAG,EAAE,gBAAgB;gBACrB,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,OAAO,EAAE,WAAW,SAAS,6CAA6C;gBAC1E,OAAO,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;aACrD,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,SAAS,CAAC;gBACR,GAAG,EAAE,gBAAgB;gBACrB,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC1C,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC;aACnE,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CACT,aAAa,CAAC,OAAO,CACnB,iBAAiB,EACjB,wBAAwB,EACxB,iDAAiD,CAClD,CACF,CAAC;YACF,MAAM,CAAC,IAAI,CACT,aAAa,CAAC,OAAO,CACnB,sBAAsB,EACtB,4BAA4B,EAC5B,iDAAiD,CAClD,CACF,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAS,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;QACzD,MAAM,OAAO,GAAS,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QAE9D;;;;WAIG;QACH,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,QAAQ,GAAY,KAAK,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAsB,MAAM,MAAM,CAAC,aAAa,CAAC;gBACzD,SAAS,EAAE,MAAM;gBACjB,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE,CAAC;gBACR,MAAM;aACP,CAAC,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC;YAEhB,MAAM,KAAK,GAA2B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,WAAW,GAAW,kBAAkB;gBAC5C,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,+BAA+B,CAAC;YAEpC,MAAM,CAAC,IAAI,CACT,SAAS,CAAC;gBACR,GAAG,EAAE,iBAAiB;gBACtB,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,OAAO,EAAE,KAAK;oBACZ,CAAC,CAAC,sCAAsC,WAAW,6DAA6D,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU;oBAC5J,CAAC,CAAC,sCAAsC,WAAW,yDAAyD;gBAC9G,OAAO,EAAE,EAAE,kBAAkB,EAAE;aAChC,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,SAAS,CAAC;gBACR,GAAG,EAAE,iBAAiB;gBACtB,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC1C,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC;aACpE,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CACT,aAAa,CAAC,OAAO,CACnB,sBAAsB,EACtB,4BAA4B,EAC5B,sDAAsD,CACvD,CACF,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6DAA6D;QAC7D,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAsB,MAAM,MAAM,CAAC,cAAc,CAAC;gBAC7D,SAAS,EAAE,MAAM;gBACjB,OAAO,EAAE,GAAG;gBACZ,MAAM;aACP,CAAC,CAAC;YACH,MAAM,MAAM,GAAsB,MAAM,MAAM,CAAC,cAAc,CAAC;gBAC5D,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,GAAG;gBACZ,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAW,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAW,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM,OAAO,GAAY,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;YAEnE,MAAM,OAAO,GAAe;gBAC1B,cAAc,EAAE,OAAO,CAAC,KAAK;gBAC7B,aAAa,EAAE,MAAM,CAAC,KAAK;gBAC3B,cAAc,EAAE,OAAO,CAAC,OAAO;gBAC/B,aAAa,EAAE,MAAM,CAAC,OAAO;gBAC7B,kBAAkB;aACnB,CAAC;YAEF,MAAM,CAAC,IAAI,CACT,SAAS,+BACP,GAAG,EAAE,sBAAsB,EAC3B,IAAI,EAAE,4BAA4B,EAClC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACjC,WAAW,EACX,OAAO,EAAE,OAAO;oBACd,CAAC,CAAC,8GAA8G;oBAChH,CAAC,CAAC,GAAG,QAAQ,SAAS,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,uCAAuC,OAAO,sBAAsB,IACpH,CAAC,OAAO;gBACT,CAAC,CAAC;oBACE,WAAW,EAAE,kBAAkB;wBAC7B,CAAC,CAAC,2KAA2K;wBAC7K,CAAC,CAAC,gLAAgL;iBACrL;gBACH,CAAC,CAAC,EAAE,CAAC,KACP,OAAO,IACP,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,SAAS,CAAC;gBACR,GAAG,EAAE,sBAAsB;gBAC3B,IAAI,EAAE,4BAA4B;gBAClC,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC1C,WAAW,EAAE,aAAa,CAAC,cAAc,CACvC,KAAK,EACL,sBAAsB,CACvB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,WAAW,CACtB,QAAmC,EACnC,MAA4B,EAC5B,OAA8B;QAE9B,MAAM,MAAM,GAAmB,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,MAAM,GAAe,IAAI,CAAC,WAAW,CACzC,MAAM,EACN,OAAO,CAAC,kBAAkB,CAC3B,CAAC;QAEF,MAAM,MAAM,GAAyB;YACnC,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,MAAM,QAAQ,GAAW,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAC5D,CAAC;QACF,MAAM,QAAQ,GAAW,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,MAAM,GAAW,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAU,CAAC;QAC/C,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC;;;;WAIG;QACH,IAAI,aAAa,GAAqB,SAAS,CAAC;QAEhD,SAAS,CAAC;YACR,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC/C,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;gBACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,iBAAiB,OAAO,CAAC,WAAW,oDAAoD,QAAQ,OAAO,MAAM,KAAK,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAClK,CAAC;gBACF,MAAM;YACR,CAAC;YAED,MAAM,IAAI,GAAsB,OAAO;gBACrC,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC;gBACpC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC;oBACzB,SAAS,EAAE,QAAQ;oBACnB,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;iBACrD,CAAC,CAAC;YACP,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;YAEzB,IAAI,iBAAiB,GAAY,KAAK,CAAC;YAEvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC;;;;mBAIG;gBACH,MAAM,GAAG,GACP,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAEjE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,SAAS;gBACX,CAAC;gBAED,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC7C,iBAAiB,GAAG,IAAI,CAAC;oBACzB,MAAM;gBACR,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;gBAEzB,MAAM,SAAS,GAAqB,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAEvE,IAAI,SAAS,EAAE,CAAC;oBACd,aAAa,GAAG,SAAS,CAAC;gBAC5B,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;gBACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,4BAA4B,OAAO,CAAC,SAAS,mCAAmC,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAChI,CAAC;gBACF,MAAM;YACR,CAAC;YAED;;;;eAIG;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM;YACR,CAAC;YAED,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,OAAO,CACb,GAAe,EACf,MAA4B,EAC5B,WAAmB;QAEnB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,UAAmC,CAAC;QAExC,IAAI,CAAC;YACH,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;YAExB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;gBACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,SAAS,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,6BAA6B,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAClJ,CAAC;YACJ,CAAC;YAED,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YACxC,MAAM,SAAS,GAAW,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACnE,MAAM,MAAM,iCACV,EAAE,EAAE,UAAU,CAAC,QAAQ,EACvB,KAAK,EAAE,UAAU,CAAC,OAAO,EACzB,QAAQ,EAAE,UAAU,CAAC,YAAY,IAC9B,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAChD,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GACzC,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,aAAa,CAAC,GAAe;QAC1C,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,qBAAqB,CAAC;YAC/B,CAAC;YAED,OAAO,eAAe,CACpB,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,SAAS,CACtD,CAAC;QACJ,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,mBAAmB,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,aAAa,CAAC,KAAiB;QAC5C,MAAM,KAAK,GAAW,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAExE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,gBAAgB,CAAC,aAA+B;QAC7D,OAAO,aAAa;YAClB,CAAC,CAAC,wCAAwC,aAAa,CAAC,WAAW,EAAE,GAAG;YACxE,CAAC,CAAC,kFAAkF,CAAC;IACzF,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,KAAc;QACpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,OAAO,CACpB,GAAW,EACX,IAAY,EACZ,OAAe;QAEf,OAAO,SAAS,CAAC;YACf,GAAG;YACH,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,KAAwB;QAChD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,KAAc;QACxC,OAAO,eAAe,CACpB,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,cAAc,CAC3B,KAAc,EACd,IAAuB;QAEvB,MAAM,MAAM,GACV,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3D,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC9B,OAAO,wGAAwG,CAAC;YAClH,CAAC;YAED,OAAO,iZAAiZ,CAAC;QAC3Z,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,qPAAqP,CAAC;QAC/P,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,kRAAkR,CAAC;QAC5R,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,4LAA4L,CAAC;QACtM,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,qMAAqM,CAAC;QAC/M,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YACrC,OAAO,kHAAkH,CAAC;QAC5H,CAAC;QAED,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,OAAO,4MAA4M,CAAC;QACtN,CAAC;QAED,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/B,OAAO,kIAAkI,CAAC;QAC5I,CAAC;QAED,OAAO,6HAA6H,CAAC;IACvI,CAAC;CACF"}