@dollhousemcp/mcp-server 2.0.0-rc.5 → 2.0.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/CHANGELOG.md +54 -17
- package/README.github.md +2 -2
- package/README.md +2 -2
- package/README.md.backup +284 -224
- package/README.npm.md +2 -2
- package/dist/cache/LRUCache.d.ts +3 -0
- package/dist/cache/LRUCache.d.ts.map +1 -1
- package/dist/cache/LRUCache.js +36 -26
- package/dist/config/env.d.ts +14 -4
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +20 -6
- package/dist/di/Container.d.ts +21 -0
- package/dist/di/Container.d.ts.map +1 -1
- package/dist/di/Container.js +250 -53
- package/dist/elements/BaseElement.d.ts.map +1 -1
- package/dist/elements/BaseElement.js +5 -10
- package/dist/elements/base/BaseElementManager.d.ts +22 -0
- package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
- package/dist/elements/base/BaseElementManager.js +47 -7
- package/dist/elements/memories/Memory.d.ts +1 -0
- package/dist/elements/memories/Memory.d.ts.map +1 -1
- package/dist/elements/memories/Memory.js +12 -8
- package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
- package/dist/elements/memories/MemoryManager.js +23 -42
- package/dist/elements/memories/MemorySearchIndex.js +2 -2
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.d.ts.map +1 -1
- package/dist/generated/version.js +3 -3
- package/dist/handlers/EnhancedIndexHandler.js +6 -6
- package/dist/handlers/element-crud/editElement.d.ts.map +1 -1
- package/dist/handlers/element-crud/editElement.js +39 -18
- package/dist/handlers/element-crud/helpers.d.ts.map +1 -1
- package/dist/handlers/element-crud/helpers.js +30 -3
- package/dist/handlers/element-crud/listElements.d.ts +2 -0
- package/dist/handlers/element-crud/listElements.d.ts.map +1 -1
- package/dist/handlers/element-crud/listElements.js +3 -1
- package/dist/handlers/mcp-aql/Gatekeeper.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/Gatekeeper.js +23 -17
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts +4 -0
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/GatekeeperTypes.js +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +33 -0
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +232 -23
- package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationRouter.js +13 -1
- package/dist/handlers/mcp-aql/OperationSchema.d.ts +7 -0
- package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationSchema.js +52 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.js +4 -3
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts +53 -0
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -0
- package/dist/handlers/mcp-aql/evaluatePermission.js +132 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +17 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.js +91 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts +5 -3
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.js +56 -2
- package/dist/handlers/mcp-aql/types.d.ts +22 -0
- package/dist/handlers/mcp-aql/types.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/types.js +47 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/logging/LogHooks.js +11 -11
- package/dist/logging/LogManager.d.ts +0 -2
- package/dist/logging/LogManager.d.ts.map +1 -1
- package/dist/logging/LogManager.js +1 -3
- package/dist/logging/sinks/MemoryLogSink.d.ts +2 -0
- package/dist/logging/sinks/MemoryLogSink.d.ts.map +1 -1
- package/dist/logging/sinks/MemoryLogSink.js +12 -3
- package/dist/logging/types.d.ts +0 -2
- package/dist/logging/types.d.ts.map +1 -1
- package/dist/logging/types.js +1 -1
- package/dist/metrics/GatekeeperMetricsTracker.d.ts +32 -0
- package/dist/metrics/GatekeeperMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/GatekeeperMetricsTracker.js +42 -0
- package/dist/metrics/MetricsManager.d.ts +47 -0
- package/dist/metrics/MetricsManager.d.ts.map +1 -0
- package/dist/metrics/MetricsManager.js +232 -0
- package/dist/metrics/OperationMetricsTracker.d.ts +32 -0
- package/dist/metrics/OperationMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/OperationMetricsTracker.js +53 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts +27 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.js +69 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts +16 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/FileLockManagerCollector.js +51 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.js +76 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts +18 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/LRUCacheCollector.js +95 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationMetricsCollector.js +80 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts +17 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.js +26 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts +14 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.js +141 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts +21 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.js +56 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts +15 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.js +112 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts +16 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.js +26 -0
- package/dist/metrics/collectors/index.d.ts +11 -0
- package/dist/metrics/collectors/index.d.ts.map +1 -0
- package/dist/metrics/collectors/index.js +11 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts +22 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts.map +1 -0
- package/dist/metrics/sinks/MemoryMetricsSink.js +121 -0
- package/dist/metrics/types.d.ts +98 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +24 -0
- package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
- package/dist/portfolio/DefaultElementProvider.js +1 -7
- package/dist/portfolio/EnhancedIndexManager.d.ts.map +1 -1
- package/dist/portfolio/EnhancedIndexManager.js +18 -18
- package/dist/portfolio/NLPScoringManager.d.ts.map +1 -1
- package/dist/portfolio/NLPScoringManager.js +5 -9
- package/dist/portfolio/PortfolioIndexManager.js +2 -2
- package/dist/portfolio/RelationshipManager.js +2 -2
- package/dist/portfolio/VerbTriggerManager.d.ts.map +1 -1
- package/dist/portfolio/VerbTriggerManager.js +5 -19
- package/dist/portfolio/config/IndexConfig.d.ts.map +1 -1
- package/dist/portfolio/config/IndexConfig.js +1 -12
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.js +3 -15
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.js +2 -16
- package/dist/portfolio/types/RelationshipTypes.d.ts.map +1 -1
- package/dist/portfolio/types/RelationshipTypes.js +3 -17
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +36 -8
- package/dist/security/constants.d.ts.map +1 -1
- package/dist/security/constants.js +10 -6
- package/dist/security/fileLockManager.d.ts.map +1 -1
- package/dist/security/fileLockManager.js +8 -6
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +1 -13
- package/dist/security/securityMonitor.d.ts +2 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +14 -3
- package/dist/security/telemetry/SecurityTelemetry.d.ts +16 -0
- package/dist/security/telemetry/SecurityTelemetry.d.ts.map +1 -1
- package/dist/security/telemetry/SecurityTelemetry.js +30 -2
- package/dist/security/tokenManager.d.ts +3 -0
- package/dist/security/tokenManager.d.ts.map +1 -1
- package/dist/security/tokenManager.js +13 -5
- package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
- package/dist/security/validation/BackgroundValidator.js +7 -7
- package/dist/server/startup.d.ts.map +1 -1
- package/dist/server/startup.js +8 -24
- package/dist/server/tools/MCPAQLTools.js +8 -1
- package/dist/services/ActivationStore.d.ts.map +1 -1
- package/dist/services/ActivationStore.js +9 -3
- package/dist/services/FileWatchService.d.ts +1 -0
- package/dist/services/FileWatchService.d.ts.map +1 -1
- package/dist/services/FileWatchService.js +83 -48
- package/dist/services/MetadataService.d.ts.map +1 -1
- package/dist/services/MetadataService.js +7 -2
- package/dist/services/PolicyExportService.d.ts.map +1 -1
- package/dist/services/PolicyExportService.js +8 -1
- package/dist/services/query/ElementQueryService.d.ts.map +1 -1
- package/dist/services/query/ElementQueryService.js +1 -41
- package/dist/services/query/PaginationService.d.ts.map +1 -1
- package/dist/services/query/PaginationService.js +1 -14
- package/dist/services/query/SortService.d.ts.map +1 -1
- package/dist/services/query/SortService.js +1 -6
- package/dist/services/validation/ValidationService.d.ts.map +1 -1
- package/dist/services/validation/ValidationService.js +3 -8
- package/dist/storage/ElementStorageLayer.d.ts.map +1 -1
- package/dist/storage/ElementStorageLayer.js +5 -2
- package/dist/storage/MemoryStorageLayer.d.ts.map +1 -1
- package/dist/storage/MemoryStorageLayer.js +5 -2
- package/dist/telemetry/OperationalTelemetry.js +2 -2
- package/dist/utils/EventDeduplicator.d.ts +44 -0
- package/dist/utils/EventDeduplicator.d.ts.map +1 -0
- package/dist/utils/EventDeduplicator.js +93 -0
- package/dist/utils/FileLock.d.ts.map +1 -1
- package/dist/utils/FileLock.js +1 -9
- package/dist/utils/PerformanceMonitor.d.ts.map +1 -1
- package/dist/utils/PerformanceMonitor.js +5 -5
- package/dist/utils/SlidingWindowRateLimiter.d.ts +13 -0
- package/dist/utils/SlidingWindowRateLimiter.d.ts.map +1 -0
- package/dist/utils/SlidingWindowRateLimiter.js +23 -0
- package/dist/web/console/IngestRoutes.d.ts +84 -0
- package/dist/web/console/IngestRoutes.d.ts.map +1 -0
- package/dist/web/console/IngestRoutes.js +252 -0
- package/dist/web/console/LeaderElection.d.ts +89 -0
- package/dist/web/console/LeaderElection.d.ts.map +1 -0
- package/dist/web/console/LeaderElection.js +205 -0
- package/dist/web/console/LeaderForwardingSink.d.ts +61 -0
- package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -0
- package/dist/web/console/LeaderForwardingSink.js +197 -0
- package/dist/web/console/SessionNames.d.ts +46 -0
- package/dist/web/console/SessionNames.d.ts.map +1 -0
- package/dist/web/console/SessionNames.js +257 -0
- package/dist/web/console/UnifiedConsole.d.ts +64 -0
- package/dist/web/console/UnifiedConsole.d.ts.map +1 -0
- package/dist/web/console/UnifiedConsole.js +119 -0
- package/dist/web/contentPipeline.d.ts +58 -0
- package/dist/web/contentPipeline.d.ts.map +1 -0
- package/dist/web/contentPipeline.js +112 -0
- package/dist/web/portDiscovery.d.ts +58 -0
- package/dist/web/portDiscovery.d.ts.map +1 -0
- package/dist/web/portDiscovery.js +143 -0
- package/dist/web/public/app.js +148 -60
- package/dist/web/public/logs.js +638 -0
- package/dist/web/public/metrics.js +682 -0
- package/dist/web/public/permissions.js +394 -0
- package/dist/web/public/sessions.js +369 -0
- package/dist/web/routes/healthRoutes.d.ts +16 -0
- package/dist/web/routes/healthRoutes.d.ts.map +1 -0
- package/dist/web/routes/healthRoutes.js +29 -0
- package/dist/web/routes/logRoutes.d.ts +18 -0
- package/dist/web/routes/logRoutes.d.ts.map +1 -0
- package/dist/web/routes/logRoutes.js +126 -0
- package/dist/web/routes/metricsRoutes.d.ts +17 -0
- package/dist/web/routes/metricsRoutes.d.ts.map +1 -0
- package/dist/web/routes/metricsRoutes.js +90 -0
- package/dist/web/routes/permissionRoutes.d.ts +16 -0
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -0
- package/dist/web/routes/permissionRoutes.js +133 -0
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +309 -339
- package/dist/web/server.d.ts +21 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +42 -4
- package/dist/web/sinks/WebSSELogSink.d.ts +15 -0
- package/dist/web/sinks/WebSSELogSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSELogSink.js +22 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts +16 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSEMetricsSink.js +23 -0
- package/package.json +2 -2
- package/server.json +2 -2
- package/dist/constants/version.d.ts +0 -3
- package/dist/constants/version.d.ts.map +0 -1
- package/dist/constants/version.js +0 -4
- package/dist/logging/sinks/SSELogSink.d.ts +0 -35
- package/dist/logging/sinks/SSELogSink.d.ts.map +0 -1
- package/dist/logging/sinks/SSELogSink.js +0 -181
- package/dist/logging/viewer/viewerHtml.d.ts +0 -8
- package/dist/logging/viewer/viewerHtml.d.ts.map +0 -1
- package/dist/logging/viewer/viewerHtml.js +0 -204
- package/dist/web/public/public/app.js +0 -1878
package/dist/logging/LogHooks.js
CHANGED
|
@@ -175,28 +175,28 @@ export function wireLogHooks(logManager, container) {
|
|
|
175
175
|
'element:save:success': 'info',
|
|
176
176
|
'element:delete:success': 'info',
|
|
177
177
|
};
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
'element:cache:refresh', 'element:cache:evict',
|
|
184
|
-
'element:external-change', 'element:lock-timeout',
|
|
185
|
-
];
|
|
186
|
-
for (const eventName of allEvents) {
|
|
178
|
+
// Only log events that have a mapped level (errors, warnings, success, activate/deactivate).
|
|
179
|
+
// Skip start/cache/external-change events — they fire per-element and create noise
|
|
180
|
+
// without adding value beyond the completion/error logs.
|
|
181
|
+
const loggedEvents = Object.keys(eventLevelMap);
|
|
182
|
+
for (const eventName of loggedEvents) {
|
|
187
183
|
const unsub = dispatcher.on(eventName, (payload) => {
|
|
188
184
|
const level = eventLevelMap[eventName] ?? 'debug';
|
|
189
185
|
const requestCorrelationId = contextTracker?.getCorrelationId();
|
|
186
|
+
// Use elementId if available, fall back to filename from filePath
|
|
187
|
+
const elementName = payload.elementId
|
|
188
|
+
|| (payload.filePath ? payload.filePath.replace(/\.[^.]+$/, '') : '');
|
|
190
189
|
const entry = {
|
|
191
190
|
id: logManager.generateId(),
|
|
192
191
|
timestamp: new Date().toISOString(),
|
|
193
192
|
category: 'application',
|
|
194
193
|
level,
|
|
195
194
|
source: 'ElementEventDispatcher',
|
|
196
|
-
message: `${eventName} [${payload.elementType ?? 'unknown'}:${
|
|
195
|
+
message: `${eventName} [${payload.elementType ?? 'unknown'}:${elementName}]`,
|
|
197
196
|
data: {
|
|
198
197
|
...payload.extra,
|
|
199
198
|
...(payload.correlationId ? { operationId: payload.correlationId } : {}),
|
|
199
|
+
...(payload.filePath ? { filePath: payload.filePath } : {}),
|
|
200
200
|
},
|
|
201
201
|
correlationId: requestCorrelationId ?? payload.correlationId,
|
|
202
202
|
};
|
|
@@ -300,4 +300,4 @@ export function wireLogHooks(logManager, container) {
|
|
|
300
300
|
catch { /* StateChangeNotifier not registered */ }
|
|
301
301
|
return cleanups;
|
|
302
302
|
}
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nSG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2luZy9Mb2dIb29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFJSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELDhFQUE4RTtBQUM5RSw0RUFBNEU7QUFDNUUsbUJBQW1CO0FBQ25CLDhFQUE4RTtBQUU5RSxNQUFNLGlCQUFpQixHQUE2QjtJQUNsRCxRQUFRLEVBQUUsT0FBTztJQUNqQixJQUFJLEVBQUUsT0FBTztJQUNiLE1BQU0sRUFBRSxNQUFNO0lBQ2QsR0FBRyxFQUFFLE1BQU07SUFDWCxRQUFRLEVBQUUsT0FBTztJQUNqQixJQUFJLEVBQUUsT0FBTztJQUNiLE1BQU0sRUFBRSxNQUFNO0lBQ2QsR0FBRyxFQUFFLE1BQU07Q0FDWixDQUFDO0FBUUYsOEVBQThFO0FBQzlFLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFFOUUsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxVQUFzQixFQUN0QixjQUFzQztJQUV0QyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUM5QixNQUFNLEtBQUssR0FBb0I7WUFDN0IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDM0IsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLEtBQUs7WUFDTCxNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLE9BQU87WUFDUCxJQUFJO1lBQ0osYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRTtTQUNsRCxDQUFDO1FBQ0YsVUFBVSxDQUFDLEdBQUcs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QUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUM7UUFDRixRQUFRLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFFcEQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGhhc2UgNDogSW50ZWdyYXRpb24gSG9va3MgZm9yIFVuaWZpZWQgTG9nZ2luZyBTeXN0ZW0uXG4gKlxuICogTWFwcyBuYXRpdmUgZXZlbnRzIGZyb20gMTAgbW9uaXRvcmluZy9sb2dnaW5nIHN5c3RlbXMgaW50byBVbmlmaWVkTG9nRW50cnlcbiAqIG9iamVjdHMgYW5kIHJvdXRlcyB0aGVtIHRocm91Z2ggTG9nTWFuYWdlci4gIEVhY2ggc291cmNlIHN5c3RlbSBleHBvc2VzIGFcbiAqIGxpZ2h0d2VpZ2h0IGBhZGRMb2dMaXN0ZW5lcmAgY2FsbGJhY2s7IHRoZSB0cmFuc2xhdGlvbiBsb2dpYyBsaXZlcyBoZXJlIHNvXG4gKiBzb3VyY2UgZmlsZXMgc3RheSBtaW5pbWFsIGFuZCBuZXZlciBpbXBvcnQgVW5pZmllZExvZ0VudHJ5LlxuICpcbiAqIFVzYWdlOlxuICogICBjb25zdCBjbGVhbnVwcyA9IHdpcmVMb2dIb29rcyhsb2dNYW5hZ2VyLCBjb250YWluZXIpO1xuICogICAvLyBsYXRlciDigKZcbiAqICAgY2xlYW51cHMuZm9yRWFjaChmbiA9PiBmbigpKTtcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExvZ01hbmFnZXIgfSBmcm9tICcuL0xvZ01hbmFnZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCwgVW5pZmllZExvZ0VudHJ5IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgRGVmYXVsdEVsZW1lbnRQcm92aWRlciB9IGZyb20gJy4uL3BvcnRmb2xpby9EZWZhdWx0RWxlbWVudFByb3ZpZGVyLmpzJztcbmltcG9ydCB7IExSVUNhY2hlIH0gZnJvbSAnLi4vY2FjaGUvTFJVQ2FjaGUuanMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldmVyaXR5IOKGkiBMb2dMZXZlbCBoZWxwZXIgKHNoYXJlZCBieSBTZWN1cml0eU1vbml0b3IsIFNlY3VyaXR5VGVsZW1ldHJ5LFxuLy8gU2VjdXJpdHlBdWRpdG9yKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IFNFVkVSSVRZX1RPX0xFVkVMOiBSZWNvcmQ8c3RyaW5nLCBMb2dMZXZlbD4gPSB7XG4gIENSSVRJQ0FMOiAnZXJyb3InLFxuICBISUdIOiAnZXJyb3InLFxuICBNRURJVU06ICd3YXJuJyxcbiAgTE9XOiAnaW5mbycsXG4gIGNyaXRpY2FsOiAnZXJyb3InLFxuICBoaWdoOiAnZXJyb3InLFxuICBtZWRpdW06ICd3YXJuJyxcbiAgbG93OiAnaW5mbycsXG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvcnJlbGF0aW9uSWQgcHJvdmlkZXIgaW50ZXJmYWNlIChzdWJzZXQgb2YgQ29udGV4dFRyYWNrZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudHlwZSBDb3JyZWxhdGlvbklkUHJvdmlkZXIgPSB7IGdldENvcnJlbGF0aW9uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIH07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRXhwb3J0ZWQgZmFjdG9yeSBmb3IgVHJpZ2dlck1ldHJpY3NUcmFja2VyIChjcmVhdGVkIG91dHNpZGUgREkgY29udGFpbmVyKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmlnZ2VyTWV0cmljc0xvZ0xpc3RlbmVyKFxuICBsb2dNYW5hZ2VyOiBMb2dNYW5hZ2VyLFxuICBjb250ZXh0VHJhY2tlcj86IENvcnJlbGF0aW9uSWRQcm92aWRlcixcbik6IChsZXZlbDogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkIHtcbiAgcmV0dXJuIChsZXZlbCwgbWVzc2FnZSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNhdGVnb3J5OiAndGVsZW1ldHJ5JyxcbiAgICAgIGxldmVsLFxuICAgICAgc291cmNlOiAnVHJpZ2dlck1ldHJpY3NUcmFja2VyJyxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkYXRhLFxuICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICB9O1xuICAgIGxvZ01hbmFnZXIubG9nKGVudHJ5KTtcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeHBvcnRlZCBmYWN0b3J5IGZvciBTZWN1cml0eUF1ZGl0b3IgKGNyZWF0ZWQgb3V0c2lkZSBESSBjb250YWluZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY3VyaXR5QXVkaXRvckxvZ0xpc3RlbmVyKFxuICBsb2dNYW5hZ2VyOiBMb2dNYW5hZ2VyLFxuICBjb250ZXh0VHJhY2tlcj86IENvcnJlbGF0aW9uSWRQcm92aWRlcixcbik6IChsZXZlbDogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkIHtcbiAgcmV0dXJuIChsZXZlbCwgbWVzc2FnZSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNhdGVnb3J5OiAnc2VjdXJpdHknLFxuICAgICAgbGV2ZWwsXG4gICAgICBzb3VyY2U6ICdTZWN1cml0eUF1ZGl0b3InLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgICBjb3JyZWxhdGlvbklkOiBjb250ZXh0VHJhY2tlcj8uZ2V0Q29ycmVsYXRpb25JZCgpLFxuICAgIH07XG4gICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1haW4gd2lyaW5nIGZ1bmN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBXaXJlIGFsbCBtb25pdG9yaW5nIHN5c3RlbXMgaW50byB0aGUgdW5pZmllZCBsb2dnaW5nIHBpcGVsaW5lLlxuICpcbiAqIEBwYXJhbSBsb2dNYW5hZ2VyICBUaGUgTG9nTWFuYWdlciBzaW5nbGV0b24gZnJvbSB0aGUgREkgY29udGFpbmVyLlxuICogQHBhcmFtIGNvbnRhaW5lciAgIFRoZSBESSBjb250YWluZXIgKHVzZWQgdG8gcmVzb2x2ZSBzb3VyY2Ugc2VydmljZXMpLlxuICogQHJldHVybnMgQXJyYXkgb2YgdW5zdWJzY3JpYmUgZnVuY3Rpb25zIOKAlCBjYWxsIHRoZW0gZHVyaW5nIHNodXRkb3duLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2lyZUxvZ0hvb2tzKFxuICBsb2dNYW5hZ2VyOiBMb2dNYW5hZ2VyLFxuICBjb250YWluZXI6IHsgcmVzb2x2ZTxUPihuYW1lOiBzdHJpbmcpOiBUIH0sXG4pOiAoKCkgPT4gdm9pZClbXSB7XG4gIGNvbnN0IGNsZWFudXBzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIC8vIFJlc29sdmUgQ29udGV4dFRyYWNrZXIgZm9yIGNvcnJlbGF0aW9uSWQgaW5qZWN0aW9uXG4gIGxldCBjb250ZXh0VHJhY2tlcjogQ29ycmVsYXRpb25JZFByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XG4gIHRyeSB7XG4gICAgY29udGV4dFRyYWNrZXIgPSBjb250YWluZXIucmVzb2x2ZTxDb3JyZWxhdGlvbklkUHJvdmlkZXI+KCdDb250ZXh0VHJhY2tlcicpO1xuICB9IGNhdGNoIHsgLyogQ29udGV4dFRyYWNrZXIgbm90IHJlZ2lzdGVyZWQgKi8gfVxuXG4gIC8vIC0tLSBNQ1BMb2dnZXIgKGFwcGxpY2F0aW9uKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3QgbWNwTG9nZ2VyID0gY29udGFpbmVyLnJlc29sdmU8e1xuICAgICAgYWRkTG9nTGlzdGVuZXIoZm46IChlbnRyeTogeyB0aW1lc3RhbXA6IERhdGU7IGxldmVsOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZzsgZGF0YT86IGFueSB9KSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgICB9PignTUNQTG9nZ2VyJyk7XG4gICAgY29uc3QgdW5zdWIgPSBtY3BMb2dnZXIuYWRkTG9nTGlzdGVuZXIoKGxvZ0VudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeTogVW5pZmllZExvZ0VudHJ5ID0ge1xuICAgICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICAgIHRpbWVzdGFtcDogbG9nRW50cnkudGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAnYXBwbGljYXRpb24nLFxuICAgICAgICBsZXZlbDogbG9nRW50cnkubGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ01DUExvZ2dlcicsXG4gICAgICAgIG1lc3NhZ2U6IGxvZ0VudHJ5Lm1lc3NhZ2UsXG4gICAgICAgIGRhdGE6IGxvZ0VudHJ5LmRhdGEgIT0gbnVsbCA/IGxvZ0VudHJ5LmRhdGEgOiB1bmRlZmluZWQsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvbnRleHRUcmFja2VyPy5nZXRDb3JyZWxhdGlvbklkKCksXG4gICAgICB9O1xuICAgICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICAgIH0pO1xuICAgIGNsZWFudXBzLnB1c2godW5zdWIpO1xuICB9IGNhdGNoIHsgLyogTUNQTG9nZ2VyIG5vdCByZWdpc3RlcmVkICovIH1cblxuICAvLyAtLS0gU2VjdXJpdHlNb25pdG9yIChzZWN1cml0eSwgc3RhdGljKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAge1xuICAgIGNvbnN0IHVuc3ViID0gU2VjdXJpdHlNb25pdG9yLmFkZExvZ0xpc3RlbmVyKChsb2dFbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnk6IFVuaWZpZWRMb2dFbnRyeSA9IHtcbiAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICB0aW1lc3RhbXA6IGxvZ0VudHJ5LnRpbWVzdGFtcCxcbiAgICAgICAgY2F0ZWdvcnk6ICdzZWN1cml0eScsXG4gICAgICAgIGxldmVsOiBTRVZFUklUWV9UT19MRVZFTFtsb2dFbnRyeS5zZXZlcml0eV0gPz8gJ2luZm8nLFxuICAgICAgICBzb3VyY2U6ICdTZWN1cml0eU1vbml0b3InLFxuICAgICAgICBtZXNzYWdlOiBgWyR7bG9nRW50cnkudHlwZX1dICR7bG9nRW50cnkuZGV0YWlsc31gLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ubG9nRW50cnkuYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgZXZlbnRUeXBlOiBsb2dFbnRyeS50eXBlLFxuICAgICAgICAgIHNldmVyaXR5OiBsb2dFbnRyeS5zZXZlcml0eSxcbiAgICAgICAgICBzb3VyY2VDb21wb25lbnQ6IGxvZ0VudHJ5LnNvdXJjZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfSk7XG4gICAgY2xlYW51cHMucHVzaCh1bnN1Yik7XG4gIH1cblxuICAvLyAtLS0gU2VjdXJpdHlUZWxlbWV0cnkgKHNlY3VyaXR5KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgdHJ5IHtcbiAgICBjb25zdCBzZWNUZWxlbWV0cnkgPSBjb250YWluZXIucmVzb2x2ZTx7XG4gICAgICBhZGRMb2dMaXN0ZW5lcihmbjogKGVudHJ5OiB7XG4gICAgICAgIHRpbWVzdGFtcDogc3RyaW5nOyBhdHRhY2tUeXBlOiBzdHJpbmc7IHBhdHRlcm46IHN0cmluZztcbiAgICAgICAgc2V2ZXJpdHk6IHN0cmluZzsgc291cmNlOiBzdHJpbmc7IG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgIH0pID0+IHZvaWQpOiAoKSA9PiB2b2lkO1xuICAgIH0+KCdTZWN1cml0eVRlbGVtZXRyeScpO1xuICAgIGNvbnN0IHVuc3ViID0gc2VjVGVsZW1ldHJ5LmFkZExvZ0xpc3RlbmVyKCh0ZWxFbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnk6IFVuaWZpZWRMb2dFbnRyeSA9IHtcbiAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICB0aW1lc3RhbXA6IHRlbEVudHJ5LnRpbWVzdGFtcCxcbiAgICAgICAgY2F0ZWdvcnk6ICdzZWN1cml0eScsXG4gICAgICAgIGxldmVsOiBTRVZFUklUWV9UT19MRVZFTFt0ZWxFbnRyeS5zZXZlcml0eV0gPz8gJ2luZm8nLFxuICAgICAgICBzb3VyY2U6ICdTZWN1cml0eVRlbGVtZXRyeScsXG4gICAgICAgIG1lc3NhZ2U6IGBCbG9ja2VkICR7dGVsRW50cnkuYXR0YWNrVHlwZX06ICR7dGVsRW50cnkucGF0dGVybn1gLFxuICAgICAgICBkYXRhOiB0ZWxFbnRyeS5tZXRhZGF0YSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfSk7XG4gICAgY2xlYW51cHMucHVzaCh1bnN1Yik7XG4gIH0gY2F0Y2ggeyAvKiBTZWN1cml0eVRlbGVtZXRyeSBub3QgcmVnaXN0ZXJlZCAqLyB9XG5cbiAgLy8gLS0tIFBlcmZvcm1hbmNlTW9uaXRvciAocGVyZm9ybWFuY2UpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3QgcGVyZk1vbml0b3IgPSBjb250YWluZXIucmVzb2x2ZTx7XG4gICAgICBhZGRMb2dMaXN0ZW5lcihmbjogKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgICB9PignUGVyZm9ybWFuY2VNb25pdG9yJyk7XG4gICAgY29uc3QgdW5zdWIgPSBwZXJmTW9uaXRvci5hZGRMb2dMaXN0ZW5lcigobGV2ZWwsIG1lc3NhZ2UsIGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgIGlkOiBsb2dNYW5hZ2VyLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLFxuICAgICAgICBsZXZlbDogbGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ1BlcmZvcm1hbmNlTW9uaXRvcicsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvbnRleHRUcmFja2VyPy5nZXRDb3JyZWxhdGlvbklkKCksXG4gICAgICB9O1xuICAgICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICAgIH0pO1xuICAgIGNsZWFudXBzLnB1c2godW5zdWIpO1xuICB9IGNhdGNoIHsgLyogUGVyZm9ybWFuY2VNb25pdG9yIG5vdCByZWdpc3RlcmVkICovIH1cblxuICAvLyAtLS0gRWxlbWVudEV2ZW50RGlzcGF0Y2hlciAoYXBwbGljYXRpb24pIOKAlCBhbHJlYWR5IGhhcyBvbigpIC0tLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3QgZGlzcGF0Y2hlciA9IGNvbnRhaW5lci5yZXNvbHZlPHtcbiAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGhhbmRsZXI6IChwYXlsb2FkOiBhbnkpID0+IHZvaWQpOiAoKSA9PiB2b2lkO1xuICAgIH0+KCdFbGVtZW50RXZlbnREaXNwYXRjaGVyJyk7XG5cbiAgICBjb25zdCBldmVudExldmVsTWFwOiBSZWNvcmQ8c3RyaW5nLCBMb2dMZXZlbD4gPSB7XG4gICAgICAnZWxlbWVudDpsb2FkOmVycm9yJzogJ2Vycm9yJyxcbiAgICAgICdlbGVtZW50OnNhdmU6ZXJyb3InOiAnZXJyb3InLFxuICAgICAgJ2VsZW1lbnQ6ZGVsZXRlOmVycm9yJzogJ2Vycm9yJyxcbiAgICAgICdlbGVtZW50OmxvY2stdGltZW91dCc6ICd3YXJuJyxcbiAgICAgICdlbGVtZW50OmFjdGl2YXRlJzogJ2luZm8nLFxuICAgICAgJ2VsZW1lbnQ6ZGVhY3RpdmF0ZSc6ICdpbmZvJyxcbiAgICAgICdlbGVtZW50OmxvYWQ6c3VjY2Vzcyc6ICdpbmZvJyxcbiAgICAgICdlbGVtZW50OnNhdmU6c3VjY2Vzcyc6ICdpbmZvJyxcbiAgICAgICdlbGVtZW50OmRlbGV0ZTpzdWNjZXNzJzogJ2luZm8nLFxuICAgIH07XG5cbiAgICBjb25zdCBhbGxFdmVudHMgPSBbXG4gICAgICAnZWxlbWVudDpsb2FkOnN0YXJ0JywgJ2VsZW1lbnQ6bG9hZDpzdWNjZXNzJywgJ2VsZW1lbnQ6bG9hZDplcnJvcicsXG4gICAgICAnZWxlbWVudDpzYXZlOnN0YXJ0JywgJ2VsZW1lbnQ6c2F2ZTpzdWNjZXNzJywgJ2VsZW1lbnQ6c2F2ZTplcnJvcicsXG4gICAgICAnZWxlbWVudDpkZWxldGU6c3RhcnQnLCAnZWxlbWVudDpkZWxldGU6c3VjY2VzcycsICdlbGVtZW50OmRlbGV0ZTplcnJvcicsXG4gICAgICAnZWxlbWVudDphY3RpdmF0ZScsICdlbGVtZW50OmRlYWN0aXZhdGUnLFxuICAgICAgJ2VsZW1lbnQ6Y2FjaGU6cmVmcmVzaCcsICdlbGVtZW50OmNhY2hlOmV2aWN0JyxcbiAgICAgICdlbGVtZW50OmV4dGVybmFsLWNoYW5nZScsICdlbGVtZW50OmxvY2stdGltZW91dCcsXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgZXZlbnROYW1lIG9mIGFsbEV2ZW50cykge1xuICAgICAgY29uc3QgdW5zdWIgPSBkaXNwYXRjaGVyLm9uKGV2ZW50TmFtZSwgKHBheWxvYWQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBsZXZlbCA9IGV2ZW50TGV2ZWxNYXBbZXZlbnROYW1lXSA/PyAnZGVidWcnO1xuICAgICAgICBjb25zdCByZXF1ZXN0Q29ycmVsYXRpb25JZCA9IGNvbnRleHRUcmFja2VyPy5nZXRDb3JyZWxhdGlvbklkKCk7XG4gICAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGNhdGVnb3J5OiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIHNvdXJjZTogJ0VsZW1lbnRFdmVudERpc3BhdGNoZXInLFxuICAgICAgICAgIG1lc3NhZ2U6IGAke2V2ZW50TmFtZX0gWyR7cGF5bG9hZC5lbGVtZW50VHlwZSA/PyAndW5rbm93bid9OiR7cGF5bG9hZC5lbGVtZW50SWQgPz8gJyd9XWAsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgLi4ucGF5bG9hZC5leHRyYSxcbiAgICAgICAgICAgIC4uLihwYXlsb2FkLmNvcnJlbGF0aW9uSWQgPyB7IG9wZXJhdGlvbklkOiBwYXlsb2FkLmNvcnJlbGF0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcnJlbGF0aW9uSWQ6IHJlcXVlc3RDb3JyZWxhdGlvbklkID8/IHBheWxvYWQuY29ycmVsYXRpb25JZCxcbiAgICAgICAgfTtcbiAgICAgICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICAgICAgfSk7XG4gICAgICBjbGVhbnVwcy5wdXNoKHVuc3ViKTtcbiAgICB9XG4gIH0gY2F0Y2ggeyAvKiBFbGVtZW50RXZlbnREaXNwYXRjaGVyIG5vdCByZWdpc3RlcmVkICovIH1cblxuICAvLyAtLS0gT3BlcmF0aW9uYWxUZWxlbWV0cnkgKHRlbGVtZXRyeSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgdHJ5IHtcbiAgICBjb25zdCBvcHNUZWxlbWV0cnkgPSBjb250YWluZXIucmVzb2x2ZTx7XG4gICAgICBhZGRMb2dMaXN0ZW5lcihmbjogKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgICB9PignT3BlcmF0aW9uYWxUZWxlbWV0cnknKTtcbiAgICBjb25zdCB1bnN1YiA9IG9wc1RlbGVtZXRyeS5hZGRMb2dMaXN0ZW5lcigobGV2ZWwsIG1lc3NhZ2UsIGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgIGlkOiBsb2dNYW5hZ2VyLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAndGVsZW1ldHJ5JyxcbiAgICAgICAgbGV2ZWw6IGxldmVsIGFzIExvZ0xldmVsLFxuICAgICAgICBzb3VyY2U6ICdPcGVyYXRpb25hbFRlbGVtZXRyeScsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvbnRleHRUcmFja2VyPy5nZXRDb3JyZWxhdGlvbklkKCksXG4gICAgICB9O1xuICAgICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICAgIH0pO1xuICAgIGNsZWFudXBzLnB1c2godW5zdWIpO1xuICB9IGNhdGNoIHsgLyogT3BlcmF0aW9uYWxUZWxlbWV0cnkgbm90IHJlZ2lzdGVyZWQgKi8gfVxuXG4gIC8vIC0tLSBGaWxlTG9ja01hbmFnZXIgKHBlcmZvcm1hbmNlKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICB0cnkge1xuICAgIGNvbnN0IGxvY2tNYW5hZ2VyID0gY29udGFpbmVyLnJlc29sdmU8e1xuICAgICAgYWRkTG9nTGlzdGVuZXIoZm46IChsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gdm9pZCk6ICgpID0+IHZvaWQ7XG4gICAgfT4oJ0ZpbGVMb2NrTWFuYWdlcicpO1xuICAgIGNvbnN0IHVuc3ViID0gbG9ja01hbmFnZXIuYWRkTG9nTGlzdGVuZXIoKGxldmVsLCBtZXNzYWdlLCBkYXRhKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeTogVW5pZmllZExvZ0VudHJ5ID0ge1xuICAgICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJyxcbiAgICAgICAgbGV2ZWw6IGxldmVsIGFzIExvZ0xldmVsLFxuICAgICAgICBzb3VyY2U6ICdGaWxlTG9ja01hbmFnZXInLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBkYXRhLFxuICAgICAgICBjb3JyZWxhdGlvbklkOiBjb250ZXh0VHJhY2tlcj8uZ2V0Q29ycmVsYXRpb25JZCgpLFxuICAgICAgfTtcbiAgICAgIGxvZ01hbmFnZXIubG9nKGVudHJ5KTtcbiAgICB9KTtcbiAgICBjbGVhbnVwcy5wdXNoKHVuc3ViKTtcbiAgfSBjYXRjaCB7IC8qIEZpbGVMb2NrTWFuYWdlciBub3QgcmVnaXN0ZXJlZCAqLyB9XG5cbiAgLy8gLS0tIERlZmF1bHRFbGVtZW50UHJvdmlkZXIgKHBlcmZvcm1hbmNlLCBzdGF0aWMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHtcbiAgICBjb25zdCB1bnN1YiA9IERlZmF1bHRFbGVtZW50UHJvdmlkZXIuYWRkTG9nTGlzdGVuZXIoKGxldmVsLCBtZXNzYWdlLCBkYXRhKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeTogVW5pZmllZExvZ0VudHJ5ID0ge1xuICAgICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJyxcbiAgICAgICAgbGV2ZWw6IGxldmVsIGFzIExvZ0xldmVsLFxuICAgICAgICBzb3VyY2U6ICdEZWZhdWx0RWxlbWVudFByb3ZpZGVyJyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfSk7XG4gICAgY2xlYW51cHMucHVzaCh1bnN1Yik7XG4gIH1cblxuICAvLyAtLS0gTFJVQ2FjaGUgKHBlcmZvcm1hbmNlLCBzdGF0aWMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICB7XG4gICAgY29uc3QgdW5zdWIgPSBMUlVDYWNoZS5hZGRMb2dMaXN0ZW5lcigobGV2ZWwsIG1lc3NhZ2UsIGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgIGlkOiBsb2dNYW5hZ2VyLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLFxuICAgICAgICBsZXZlbDogbGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ0xSVUNhY2hlJyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfSk7XG4gICAgY2xlYW51cHMucHVzaCh1bnN1Yik7XG4gIH1cblxuICAvLyAtLS0gU3RhdGVDaGFuZ2VOb3RpZmllciAoYXBwbGljYXRpb24pIOKAlCBleHRlbmRzIEV2ZW50RW1pdHRlciAtLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3Qgbm90aWZpZXIgPSBjb250YWluZXIucmVzb2x2ZTx7XG4gICAgICBvbihldmVudDogc3RyaW5nLCBoYW5kbGVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiBhbnk7XG4gICAgICByZW1vdmVMaXN0ZW5lcihldmVudDogc3RyaW5nLCBoYW5kbGVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiBhbnk7XG4gICAgfT4oJ1N0YXRlQ2hhbmdlTm90aWZpZXInKTtcbiAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiB7IHR5cGU6IHN0cmluZzsgcHJldmlvdXNWYWx1ZTogc3RyaW5nIHwgbnVsbDsgbmV3VmFsdWU6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xuICAgICAgY29uc3QgZW50cnk6IFVuaWZpZWRMb2dFbnRyeSA9IHtcbiAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgY2F0ZWdvcnk6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIGxldmVsOiAnaW5mbycsXG4gICAgICAgIHNvdXJjZTogJ1N0YXRlQ2hhbmdlTm90aWZpZXInLFxuICAgICAgICBtZXNzYWdlOiBgU3RhdGUgY2hhbmdlOiAke2V2ZW50LnR5cGV9YCxcbiAgICAgICAgZGF0YTogeyBwcmV2aW91c1ZhbHVlOiBldmVudC5wcmV2aW91c1ZhbHVlLCBuZXdWYWx1ZTogZXZlbnQubmV3VmFsdWUgfSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfTtcbiAgICBub3RpZmllci5vbignc3RhdGUtY2hhbmdlJywgaGFuZGxlcik7XG4gICAgY2xlYW51cHMucHVzaCgoKSA9PiBub3RpZmllci5yZW1vdmVMaXN0ZW5lcignc3RhdGUtY2hhbmdlJywgaGFuZGxlcikpO1xuICB9IGNhdGNoIHsgLyogU3RhdGVDaGFuZ2VOb3RpZmllciBub3QgcmVnaXN0ZXJlZCAqLyB9XG5cbiAgcmV0dXJuIGNsZWFudXBzO1xufVxuIl19
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nSG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2luZy9Mb2dIb29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFJSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELDhFQUE4RTtBQUM5RSw0RUFBNEU7QUFDNUUsbUJBQW1CO0FBQ25CLDhFQUE4RTtBQUU5RSxNQUFNLGlCQUFpQixHQUE2QjtJQUNsRCxRQUFRLEVBQUUsT0FBTztJQUNqQixJQUFJLEVBQUUsT0FBTztJQUNiLE1BQU0sRUFBRSxNQUFNO0lBQ2QsR0FBRyxFQUFFLE1BQU07SUFDWCxRQUFRLEVBQUUsT0FBTztJQUNqQixJQUFJLEVBQUUsT0FBTztJQUNiLE1BQU0sRUFBRSxNQUFNO0lBQ2QsR0FBRyxFQUFFLE1BQU07Q0FDWixDQUFDO0FBUUYsOEVBQThFO0FBQzlFLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFFOUUsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxVQUFzQixFQUN0QixjQUFzQztJQUV0QyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUM5QixNQUFNLEtBQUssR0FBb0I7WUFDN0IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDM0IsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLEtBQUs7WUFDTCxNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLE9BQU87WUFDUCxJQUFJO1lBQ0osYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRTtTQUNsRCxDQUFDO1FBQ0YsVUFBVSxDQUFDLEdBQUcs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QyxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDdEUsYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRTthQUNsRCxDQUFDO1lBQ0YsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUM7UUFDRixRQUFRLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFFcEQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGhhc2UgNDogSW50ZWdyYXRpb24gSG9va3MgZm9yIFVuaWZpZWQgTG9nZ2luZyBTeXN0ZW0uXG4gKlxuICogTWFwcyBuYXRpdmUgZXZlbnRzIGZyb20gMTAgbW9uaXRvcmluZy9sb2dnaW5nIHN5c3RlbXMgaW50byBVbmlmaWVkTG9nRW50cnlcbiAqIG9iamVjdHMgYW5kIHJvdXRlcyB0aGVtIHRocm91Z2ggTG9nTWFuYWdlci4gIEVhY2ggc291cmNlIHN5c3RlbSBleHBvc2VzIGFcbiAqIGxpZ2h0d2VpZ2h0IGBhZGRMb2dMaXN0ZW5lcmAgY2FsbGJhY2s7IHRoZSB0cmFuc2xhdGlvbiBsb2dpYyBsaXZlcyBoZXJlIHNvXG4gKiBzb3VyY2UgZmlsZXMgc3RheSBtaW5pbWFsIGFuZCBuZXZlciBpbXBvcnQgVW5pZmllZExvZ0VudHJ5LlxuICpcbiAqIFVzYWdlOlxuICogICBjb25zdCBjbGVhbnVwcyA9IHdpcmVMb2dIb29rcyhsb2dNYW5hZ2VyLCBjb250YWluZXIpO1xuICogICAvLyBsYXRlciDigKZcbiAqICAgY2xlYW51cHMuZm9yRWFjaChmbiA9PiBmbigpKTtcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExvZ01hbmFnZXIgfSBmcm9tICcuL0xvZ01hbmFnZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCwgVW5pZmllZExvZ0VudHJ5IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgRGVmYXVsdEVsZW1lbnRQcm92aWRlciB9IGZyb20gJy4uL3BvcnRmb2xpby9EZWZhdWx0RWxlbWVudFByb3ZpZGVyLmpzJztcbmltcG9ydCB7IExSVUNhY2hlIH0gZnJvbSAnLi4vY2FjaGUvTFJVQ2FjaGUuanMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldmVyaXR5IOKGkiBMb2dMZXZlbCBoZWxwZXIgKHNoYXJlZCBieSBTZWN1cml0eU1vbml0b3IsIFNlY3VyaXR5VGVsZW1ldHJ5LFxuLy8gU2VjdXJpdHlBdWRpdG9yKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IFNFVkVSSVRZX1RPX0xFVkVMOiBSZWNvcmQ8c3RyaW5nLCBMb2dMZXZlbD4gPSB7XG4gIENSSVRJQ0FMOiAnZXJyb3InLFxuICBISUdIOiAnZXJyb3InLFxuICBNRURJVU06ICd3YXJuJyxcbiAgTE9XOiAnaW5mbycsXG4gIGNyaXRpY2FsOiAnZXJyb3InLFxuICBoaWdoOiAnZXJyb3InLFxuICBtZWRpdW06ICd3YXJuJyxcbiAgbG93OiAnaW5mbycsXG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvcnJlbGF0aW9uSWQgcHJvdmlkZXIgaW50ZXJmYWNlIChzdWJzZXQgb2YgQ29udGV4dFRyYWNrZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudHlwZSBDb3JyZWxhdGlvbklkUHJvdmlkZXIgPSB7IGdldENvcnJlbGF0aW9uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIH07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRXhwb3J0ZWQgZmFjdG9yeSBmb3IgVHJpZ2dlck1ldHJpY3NUcmFja2VyIChjcmVhdGVkIG91dHNpZGUgREkgY29udGFpbmVyKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmlnZ2VyTWV0cmljc0xvZ0xpc3RlbmVyKFxuICBsb2dNYW5hZ2VyOiBMb2dNYW5hZ2VyLFxuICBjb250ZXh0VHJhY2tlcj86IENvcnJlbGF0aW9uSWRQcm92aWRlcixcbik6IChsZXZlbDogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkIHtcbiAgcmV0dXJuIChsZXZlbCwgbWVzc2FnZSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNhdGVnb3J5OiAndGVsZW1ldHJ5JyxcbiAgICAgIGxldmVsLFxuICAgICAgc291cmNlOiAnVHJpZ2dlck1ldHJpY3NUcmFja2VyJyxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkYXRhLFxuICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICB9O1xuICAgIGxvZ01hbmFnZXIubG9nKGVudHJ5KTtcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeHBvcnRlZCBmYWN0b3J5IGZvciBTZWN1cml0eUF1ZGl0b3IgKGNyZWF0ZWQgb3V0c2lkZSBESSBjb250YWluZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY3VyaXR5QXVkaXRvckxvZ0xpc3RlbmVyKFxuICBsb2dNYW5hZ2VyOiBMb2dNYW5hZ2VyLFxuICBjb250ZXh0VHJhY2tlcj86IENvcnJlbGF0aW9uSWRQcm92aWRlcixcbik6IChsZXZlbDogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkIHtcbiAgcmV0dXJuIChsZXZlbCwgbWVzc2FnZSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNhdGVnb3J5OiAnc2VjdXJpdHknLFxuICAgICAgbGV2ZWwsXG4gICAgICBzb3VyY2U6ICdTZWN1cml0eUF1ZGl0b3InLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgICBjb3JyZWxhdGlvbklkOiBjb250ZXh0VHJhY2tlcj8uZ2V0Q29ycmVsYXRpb25JZCgpLFxuICAgIH07XG4gICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1haW4gd2lyaW5nIGZ1bmN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBXaXJlIGFsbCBtb25pdG9yaW5nIHN5c3RlbXMgaW50byB0aGUgdW5pZmllZCBsb2dnaW5nIHBpcGVsaW5lLlxuICpcbiAqIEBwYXJhbSBsb2dNYW5hZ2VyICBUaGUgTG9nTWFuYWdlciBzaW5nbGV0b24gZnJvbSB0aGUgREkgY29udGFpbmVyLlxuICogQHBhcmFtIGNvbnRhaW5lciAgIFRoZSBESSBjb250YWluZXIgKHVzZWQgdG8gcmVzb2x2ZSBzb3VyY2Ugc2VydmljZXMpLlxuICogQHJldHVybnMgQXJyYXkgb2YgdW5zdWJzY3JpYmUgZnVuY3Rpb25zIOKAlCBjYWxsIHRoZW0gZHVyaW5nIHNodXRkb3duLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2lyZUxvZ0hvb2tzKFxuICBsb2dNYW5hZ2VyOiBMb2dNYW5hZ2VyLFxuICBjb250YWluZXI6IHsgcmVzb2x2ZTxUPihuYW1lOiBzdHJpbmcpOiBUIH0sXG4pOiAoKCkgPT4gdm9pZClbXSB7XG4gIGNvbnN0IGNsZWFudXBzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIC8vIFJlc29sdmUgQ29udGV4dFRyYWNrZXIgZm9yIGNvcnJlbGF0aW9uSWQgaW5qZWN0aW9uXG4gIGxldCBjb250ZXh0VHJhY2tlcjogQ29ycmVsYXRpb25JZFByb3ZpZGVyIHwgbnVsbCA9IG51bGw7XG4gIHRyeSB7XG4gICAgY29udGV4dFRyYWNrZXIgPSBjb250YWluZXIucmVzb2x2ZTxDb3JyZWxhdGlvbklkUHJvdmlkZXI+KCdDb250ZXh0VHJhY2tlcicpO1xuICB9IGNhdGNoIHsgLyogQ29udGV4dFRyYWNrZXIgbm90IHJlZ2lzdGVyZWQgKi8gfVxuXG4gIC8vIC0tLSBNQ1BMb2dnZXIgKGFwcGxpY2F0aW9uKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3QgbWNwTG9nZ2VyID0gY29udGFpbmVyLnJlc29sdmU8e1xuICAgICAgYWRkTG9nTGlzdGVuZXIoZm46IChlbnRyeTogeyB0aW1lc3RhbXA6IERhdGU7IGxldmVsOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZzsgZGF0YT86IGFueSB9KSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgICB9PignTUNQTG9nZ2VyJyk7XG4gICAgY29uc3QgdW5zdWIgPSBtY3BMb2dnZXIuYWRkTG9nTGlzdGVuZXIoKGxvZ0VudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeTogVW5pZmllZExvZ0VudHJ5ID0ge1xuICAgICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICAgIHRpbWVzdGFtcDogbG9nRW50cnkudGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAnYXBwbGljYXRpb24nLFxuICAgICAgICBsZXZlbDogbG9nRW50cnkubGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ01DUExvZ2dlcicsXG4gICAgICAgIG1lc3NhZ2U6IGxvZ0VudHJ5Lm1lc3NhZ2UsXG4gICAgICAgIGRhdGE6IGxvZ0VudHJ5LmRhdGEgIT0gbnVsbCA/IGxvZ0VudHJ5LmRhdGEgOiB1bmRlZmluZWQsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvbnRleHRUcmFja2VyPy5nZXRDb3JyZWxhdGlvbklkKCksXG4gICAgICB9O1xuICAgICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICAgIH0pO1xuICAgIGNsZWFudXBzLnB1c2godW5zdWIpO1xuICB9IGNhdGNoIHsgLyogTUNQTG9nZ2VyIG5vdCByZWdpc3RlcmVkICovIH1cblxuICAvLyAtLS0gU2VjdXJpdHlNb25pdG9yIChzZWN1cml0eSwgc3RhdGljKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAge1xuICAgIGNvbnN0IHVuc3ViID0gU2VjdXJpdHlNb25pdG9yLmFkZExvZ0xpc3RlbmVyKChsb2dFbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnk6IFVuaWZpZWRMb2dFbnRyeSA9IHtcbiAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICB0aW1lc3RhbXA6IGxvZ0VudHJ5LnRpbWVzdGFtcCxcbiAgICAgICAgY2F0ZWdvcnk6ICdzZWN1cml0eScsXG4gICAgICAgIGxldmVsOiBTRVZFUklUWV9UT19MRVZFTFtsb2dFbnRyeS5zZXZlcml0eV0gPz8gJ2luZm8nLFxuICAgICAgICBzb3VyY2U6ICdTZWN1cml0eU1vbml0b3InLFxuICAgICAgICBtZXNzYWdlOiBgWyR7bG9nRW50cnkudHlwZX1dICR7bG9nRW50cnkuZGV0YWlsc31gLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ubG9nRW50cnkuYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgZXZlbnRUeXBlOiBsb2dFbnRyeS50eXBlLFxuICAgICAgICAgIHNldmVyaXR5OiBsb2dFbnRyeS5zZXZlcml0eSxcbiAgICAgICAgICBzb3VyY2VDb21wb25lbnQ6IGxvZ0VudHJ5LnNvdXJjZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfSk7XG4gICAgY2xlYW51cHMucHVzaCh1bnN1Yik7XG4gIH1cblxuICAvLyAtLS0gU2VjdXJpdHlUZWxlbWV0cnkgKHNlY3VyaXR5KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgdHJ5IHtcbiAgICBjb25zdCBzZWNUZWxlbWV0cnkgPSBjb250YWluZXIucmVzb2x2ZTx7XG4gICAgICBhZGRMb2dMaXN0ZW5lcihmbjogKGVudHJ5OiB7XG4gICAgICAgIHRpbWVzdGFtcDogc3RyaW5nOyBhdHRhY2tUeXBlOiBzdHJpbmc7IHBhdHRlcm46IHN0cmluZztcbiAgICAgICAgc2V2ZXJpdHk6IHN0cmluZzsgc291cmNlOiBzdHJpbmc7IG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgIH0pID0+IHZvaWQpOiAoKSA9PiB2b2lkO1xuICAgIH0+KCdTZWN1cml0eVRlbGVtZXRyeScpO1xuICAgIGNvbnN0IHVuc3ViID0gc2VjVGVsZW1ldHJ5LmFkZExvZ0xpc3RlbmVyKCh0ZWxFbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnk6IFVuaWZpZWRMb2dFbnRyeSA9IHtcbiAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICB0aW1lc3RhbXA6IHRlbEVudHJ5LnRpbWVzdGFtcCxcbiAgICAgICAgY2F0ZWdvcnk6ICdzZWN1cml0eScsXG4gICAgICAgIGxldmVsOiBTRVZFUklUWV9UT19MRVZFTFt0ZWxFbnRyeS5zZXZlcml0eV0gPz8gJ2luZm8nLFxuICAgICAgICBzb3VyY2U6ICdTZWN1cml0eVRlbGVtZXRyeScsXG4gICAgICAgIG1lc3NhZ2U6IGBCbG9ja2VkICR7dGVsRW50cnkuYXR0YWNrVHlwZX06ICR7dGVsRW50cnkucGF0dGVybn1gLFxuICAgICAgICBkYXRhOiB0ZWxFbnRyeS5tZXRhZGF0YSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfSk7XG4gICAgY2xlYW51cHMucHVzaCh1bnN1Yik7XG4gIH0gY2F0Y2ggeyAvKiBTZWN1cml0eVRlbGVtZXRyeSBub3QgcmVnaXN0ZXJlZCAqLyB9XG5cbiAgLy8gLS0tIFBlcmZvcm1hbmNlTW9uaXRvciAocGVyZm9ybWFuY2UpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3QgcGVyZk1vbml0b3IgPSBjb250YWluZXIucmVzb2x2ZTx7XG4gICAgICBhZGRMb2dMaXN0ZW5lcihmbjogKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgICB9PignUGVyZm9ybWFuY2VNb25pdG9yJyk7XG4gICAgY29uc3QgdW5zdWIgPSBwZXJmTW9uaXRvci5hZGRMb2dMaXN0ZW5lcigobGV2ZWwsIG1lc3NhZ2UsIGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgIGlkOiBsb2dNYW5hZ2VyLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLFxuICAgICAgICBsZXZlbDogbGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ1BlcmZvcm1hbmNlTW9uaXRvcicsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvbnRleHRUcmFja2VyPy5nZXRDb3JyZWxhdGlvbklkKCksXG4gICAgICB9O1xuICAgICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICAgIH0pO1xuICAgIGNsZWFudXBzLnB1c2godW5zdWIpO1xuICB9IGNhdGNoIHsgLyogUGVyZm9ybWFuY2VNb25pdG9yIG5vdCByZWdpc3RlcmVkICovIH1cblxuICAvLyAtLS0gRWxlbWVudEV2ZW50RGlzcGF0Y2hlciAoYXBwbGljYXRpb24pIOKAlCBhbHJlYWR5IGhhcyBvbigpIC0tLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3QgZGlzcGF0Y2hlciA9IGNvbnRhaW5lci5yZXNvbHZlPHtcbiAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGhhbmRsZXI6IChwYXlsb2FkOiBhbnkpID0+IHZvaWQpOiAoKSA9PiB2b2lkO1xuICAgIH0+KCdFbGVtZW50RXZlbnREaXNwYXRjaGVyJyk7XG5cbiAgICBjb25zdCBldmVudExldmVsTWFwOiBSZWNvcmQ8c3RyaW5nLCBMb2dMZXZlbD4gPSB7XG4gICAgICAnZWxlbWVudDpsb2FkOmVycm9yJzogJ2Vycm9yJyxcbiAgICAgICdlbGVtZW50OnNhdmU6ZXJyb3InOiAnZXJyb3InLFxuICAgICAgJ2VsZW1lbnQ6ZGVsZXRlOmVycm9yJzogJ2Vycm9yJyxcbiAgICAgICdlbGVtZW50OmxvY2stdGltZW91dCc6ICd3YXJuJyxcbiAgICAgICdlbGVtZW50OmFjdGl2YXRlJzogJ2luZm8nLFxuICAgICAgJ2VsZW1lbnQ6ZGVhY3RpdmF0ZSc6ICdpbmZvJyxcbiAgICAgICdlbGVtZW50OmxvYWQ6c3VjY2Vzcyc6ICdpbmZvJyxcbiAgICAgICdlbGVtZW50OnNhdmU6c3VjY2Vzcyc6ICdpbmZvJyxcbiAgICAgICdlbGVtZW50OmRlbGV0ZTpzdWNjZXNzJzogJ2luZm8nLFxuICAgIH07XG5cbiAgICAvLyBPbmx5IGxvZyBldmVudHMgdGhhdCBoYXZlIGEgbWFwcGVkIGxldmVsIChlcnJvcnMsIHdhcm5pbmdzLCBzdWNjZXNzLCBhY3RpdmF0ZS9kZWFjdGl2YXRlKS5cbiAgICAvLyBTa2lwIHN0YXJ0L2NhY2hlL2V4dGVybmFsLWNoYW5nZSBldmVudHMg4oCUIHRoZXkgZmlyZSBwZXItZWxlbWVudCBhbmQgY3JlYXRlIG5vaXNlXG4gICAgLy8gd2l0aG91dCBhZGRpbmcgdmFsdWUgYmV5b25kIHRoZSBjb21wbGV0aW9uL2Vycm9yIGxvZ3MuXG4gICAgY29uc3QgbG9nZ2VkRXZlbnRzID0gT2JqZWN0LmtleXMoZXZlbnRMZXZlbE1hcCk7XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50TmFtZSBvZiBsb2dnZWRFdmVudHMpIHtcbiAgICAgIGNvbnN0IHVuc3ViID0gZGlzcGF0Y2hlci5vbihldmVudE5hbWUsIChwYXlsb2FkOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgbGV2ZWwgPSBldmVudExldmVsTWFwW2V2ZW50TmFtZV0gPz8gJ2RlYnVnJztcbiAgICAgICAgY29uc3QgcmVxdWVzdENvcnJlbGF0aW9uSWQgPSBjb250ZXh0VHJhY2tlcj8uZ2V0Q29ycmVsYXRpb25JZCgpO1xuICAgICAgICAvLyBVc2UgZWxlbWVudElkIGlmIGF2YWlsYWJsZSwgZmFsbCBiYWNrIHRvIGZpbGVuYW1lIGZyb20gZmlsZVBhdGhcbiAgICAgICAgY29uc3QgZWxlbWVudE5hbWUgPSBwYXlsb2FkLmVsZW1lbnRJZFxuICAgICAgICAgIHx8IChwYXlsb2FkLmZpbGVQYXRoID8gcGF5bG9hZC5maWxlUGF0aC5yZXBsYWNlKC9cXC5bXi5dKyQvLCAnJykgOiAnJyk7XG4gICAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGNhdGVnb3J5OiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIHNvdXJjZTogJ0VsZW1lbnRFdmVudERpc3BhdGNoZXInLFxuICAgICAgICAgIG1lc3NhZ2U6IGAke2V2ZW50TmFtZX0gWyR7cGF5bG9hZC5lbGVtZW50VHlwZSA/PyAndW5rbm93bid9OiR7ZWxlbWVudE5hbWV9XWAsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgLi4ucGF5bG9hZC5leHRyYSxcbiAgICAgICAgICAgIC4uLihwYXlsb2FkLmNvcnJlbGF0aW9uSWQgPyB7IG9wZXJhdGlvbklkOiBwYXlsb2FkLmNvcnJlbGF0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihwYXlsb2FkLmZpbGVQYXRoID8geyBmaWxlUGF0aDogcGF5bG9hZC5maWxlUGF0aCB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29ycmVsYXRpb25JZDogcmVxdWVzdENvcnJlbGF0aW9uSWQgPz8gcGF5bG9hZC5jb3JyZWxhdGlvbklkLFxuICAgICAgICB9O1xuICAgICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgICB9KTtcbiAgICAgIGNsZWFudXBzLnB1c2godW5zdWIpO1xuICAgIH1cbiAgfSBjYXRjaCB7IC8qIEVsZW1lbnRFdmVudERpc3BhdGNoZXIgbm90IHJlZ2lzdGVyZWQgKi8gfVxuXG4gIC8vIC0tLSBPcGVyYXRpb25hbFRlbGVtZXRyeSAodGVsZW1ldHJ5KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICB0cnkge1xuICAgIGNvbnN0IG9wc1RlbGVtZXRyeSA9IGNvbnRhaW5lci5yZXNvbHZlPHtcbiAgICAgIGFkZExvZ0xpc3RlbmVyKGZuOiAobGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQpOiAoKSA9PiB2b2lkO1xuICAgIH0+KCdPcGVyYXRpb25hbFRlbGVtZXRyeScpO1xuICAgIGNvbnN0IHVuc3ViID0gb3BzVGVsZW1ldHJ5LmFkZExvZ0xpc3RlbmVyKChsZXZlbCwgbWVzc2FnZSwgZGF0YSkgPT4ge1xuICAgICAgY29uc3QgZW50cnk6IFVuaWZpZWRMb2dFbnRyeSA9IHtcbiAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgY2F0ZWdvcnk6ICd0ZWxlbWV0cnknLFxuICAgICAgICBsZXZlbDogbGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ09wZXJhdGlvbmFsVGVsZW1ldHJ5JyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29ycmVsYXRpb25JZDogY29udGV4dFRyYWNrZXI/LmdldENvcnJlbGF0aW9uSWQoKSxcbiAgICAgIH07XG4gICAgICBsb2dNYW5hZ2VyLmxvZyhlbnRyeSk7XG4gICAgfSk7XG4gICAgY2xlYW51cHMucHVzaCh1bnN1Yik7XG4gIH0gY2F0Y2ggeyAvKiBPcGVyYXRpb25hbFRlbGVtZXRyeSBub3QgcmVnaXN0ZXJlZCAqLyB9XG5cbiAgLy8gLS0tIEZpbGVMb2NrTWFuYWdlciAocGVyZm9ybWFuY2UpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHRyeSB7XG4gICAgY29uc3QgbG9ja01hbmFnZXIgPSBjb250YWluZXIucmVzb2x2ZTx7XG4gICAgICBhZGRMb2dMaXN0ZW5lcihmbjogKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgICB9PignRmlsZUxvY2tNYW5hZ2VyJyk7XG4gICAgY29uc3QgdW5zdWIgPSBsb2NrTWFuYWdlci5hZGRMb2dMaXN0ZW5lcigobGV2ZWwsIG1lc3NhZ2UsIGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgIGlkOiBsb2dNYW5hZ2VyLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLFxuICAgICAgICBsZXZlbDogbGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ0ZpbGVMb2NrTWFuYWdlcicsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvbnRleHRUcmFja2VyPy5nZXRDb3JyZWxhdGlvbklkKCksXG4gICAgICB9O1xuICAgICAgbG9nTWFuYWdlci5sb2coZW50cnkpO1xuICAgIH0pO1xuICAgIGNsZWFudXBzLnB1c2godW5zdWIpO1xuICB9IGNhdGNoIHsgLyogRmlsZUxvY2tNYW5hZ2VyIG5vdCByZWdpc3RlcmVkICovIH1cblxuICAvLyAtLS0gRGVmYXVsdEVsZW1lbnRQcm92aWRlciAocGVyZm9ybWFuY2UsIHN0YXRpYykgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAge1xuICAgIGNvbnN0IHVuc3ViID0gRGVmYXVsdEVsZW1lbnRQcm92aWRlci5hZGRMb2dMaXN0ZW5lcigobGV2ZWwsIG1lc3NhZ2UsIGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBVbmlmaWVkTG9nRW50cnkgPSB7XG4gICAgICAgIGlkOiBsb2dNYW5hZ2VyLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLFxuICAgICAgICBsZXZlbDogbGV2ZWwgYXMgTG9nTGV2ZWwsXG4gICAgICAgIHNvdXJjZTogJ0RlZmF1bHRFbGVtZW50UHJvdmlkZXInLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBkYXRhLFxuICAgICAgICBjb3JyZWxhdGlvbklkOiBjb250ZXh0VHJhY2tlcj8uZ2V0Q29ycmVsYXRpb25JZCgpLFxuICAgICAgfTtcbiAgICAgIGxvZ01hbmFnZXIubG9nKGVudHJ5KTtcbiAgICB9KTtcbiAgICBjbGVhbnVwcy5wdXNoKHVuc3ViKTtcbiAgfVxuXG4gIC8vIC0tLSBMUlVDYWNoZSAocGVyZm9ybWFuY2UsIHN0YXRpYykgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHtcbiAgICBjb25zdCB1bnN1YiA9IExSVUNhY2hlLmFkZExvZ0xpc3RlbmVyKChsZXZlbCwgbWVzc2FnZSwgZGF0YSkgPT4ge1xuICAgICAgY29uc3QgZW50cnk6IFVuaWZpZWRMb2dFbnRyeSA9IHtcbiAgICAgICAgaWQ6IGxvZ01hbmFnZXIuZ2VuZXJhdGVJZCgpLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScsXG4gICAgICAgIGxldmVsOiBsZXZlbCBhcyBMb2dMZXZlbCxcbiAgICAgICAgc291cmNlOiAnTFJVQ2FjaGUnLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBkYXRhLFxuICAgICAgICBjb3JyZWxhdGlvbklkOiBjb250ZXh0VHJhY2tlcj8uZ2V0Q29ycmVsYXRpb25JZCgpLFxuICAgICAgfTtcbiAgICAgIGxvZ01hbmFnZXIubG9nKGVudHJ5KTtcbiAgICB9KTtcbiAgICBjbGVhbnVwcy5wdXNoKHVuc3ViKTtcbiAgfVxuXG4gIC8vIC0tLSBTdGF0ZUNoYW5nZU5vdGlmaWVyIChhcHBsaWNhdGlvbikg4oCUIGV4dGVuZHMgRXZlbnRFbWl0dGVyIC0tLS0tLS0tLS1cbiAgdHJ5IHtcbiAgICBjb25zdCBub3RpZmllciA9IGNvbnRhaW5lci5yZXNvbHZlPHtcbiAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGhhbmRsZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IGFueTtcbiAgICAgIHJlbW92ZUxpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGhhbmRsZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IGFueTtcbiAgICB9PignU3RhdGVDaGFuZ2VOb3RpZmllcicpO1xuICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IHsgdHlwZTogc3RyaW5nOyBwcmV2aW91c1ZhbHVlOiBzdHJpbmcgfCBudWxsOyBuZXdWYWx1ZTogc3RyaW5nIHwgbnVsbCB9KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeTogVW5pZmllZExvZ0VudHJ5ID0ge1xuICAgICAgICBpZDogbG9nTWFuYWdlci5nZW5lcmF0ZUlkKCksXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBjYXRlZ29yeTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgbGV2ZWw6ICdpbmZvJyxcbiAgICAgICAgc291cmNlOiAnU3RhdGVDaGFuZ2VOb3RpZmllcicsXG4gICAgICAgIG1lc3NhZ2U6IGBTdGF0ZSBjaGFuZ2U6ICR7ZXZlbnQudHlwZX1gLFxuICAgICAgICBkYXRhOiB7IHByZXZpb3VzVmFsdWU6IGV2ZW50LnByZXZpb3VzVmFsdWUsIG5ld1ZhbHVlOiBldmVudC5uZXdWYWx1ZSB9LFxuICAgICAgICBjb3JyZWxhdGlvbklkOiBjb250ZXh0VHJhY2tlcj8uZ2V0Q29ycmVsYXRpb25JZCgpLFxuICAgICAgfTtcbiAgICAgIGxvZ01hbmFnZXIubG9nKGVudHJ5KTtcbiAgICB9O1xuICAgIG5vdGlmaWVyLm9uKCdzdGF0ZS1jaGFuZ2UnLCBoYW5kbGVyKTtcbiAgICBjbGVhbnVwcy5wdXNoKCgpID0+IG5vdGlmaWVyLnJlbW92ZUxpc3RlbmVyKCdzdGF0ZS1jaGFuZ2UnLCBoYW5kbGVyKSk7XG4gIH0gY2F0Y2ggeyAvKiBTdGF0ZUNoYW5nZU5vdGlmaWVyIG5vdCByZWdpc3RlcmVkICovIH1cblxuICByZXR1cm4gY2xlYW51cHM7XG59XG4iXX0=
|
|
@@ -77,8 +77,6 @@ export declare function buildLogManagerConfig(envVars: {
|
|
|
77
77
|
DOLLHOUSE_LOG_FILE_MAX_SIZE: number;
|
|
78
78
|
DOLLHOUSE_LOG_MAX_DIR_SIZE_BYTES: number;
|
|
79
79
|
DOLLHOUSE_LOG_MAX_FILES_PER_CATEGORY: number;
|
|
80
|
-
DOLLHOUSE_LOG_VIEWER: boolean;
|
|
81
|
-
DOLLHOUSE_LOG_VIEWER_PORT: number;
|
|
82
80
|
LOG_LEVEL: 'debug' | 'info' | 'warn' | 'error';
|
|
83
81
|
}): LogManagerConfig;
|
|
84
82
|
//# sourceMappingURL=LogManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogManager.d.ts","sourceRoot":"","sources":["../../src/logging/LogManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EAEb,KAAK,gBAAgB,EAEtB,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,kBAAkB,CAAK;IAG/B,OAAO,CAAC,yBAAyB,CAAK;IACtC,OAAO,CAAC,mBAAmB,CAAK;gBAEpB,MAAM,EAAE,gBAAgB;IAUpC;;;;;;;OAOG;IACH,GAAG,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAwCjC,+BAA+B;IAC/B,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAIlC,mEAAmE;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,mEAAmE;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACH,UAAU,IAAI,MAAM;IAQpB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,cAAc;IAOtB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAyBxB,iEAAiE;IACjE,OAAO,CAAC,eAAe;CAexB;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,4BAA4B,EAAE,MAAM,CAAC;IACrC,qCAAqC,EAAE,MAAM,CAAC;IAC9C,+BAA+B,EAAE,MAAM,CAAC;IACxC,yBAAyB,EAAE,MAAM,CAAC;IAClC,6BAA6B,EAAE,MAAM,CAAC;IACtC,iCAAiC,EAAE,MAAM,CAAC;IAC1C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,kCAAkC,EAAE,MAAM,CAAC;IAC3C,uCAAuC,EAAE,MAAM,CAAC;IAChD,4BAA4B,EAAE,MAAM,CAAC;IACrC,kCAAkC,EAAE,MAAM,CAAC;IAC3C,2BAA2B,EAAE,MAAM,CAAC;IACpC,gCAAgC,EAAE,MAAM,CAAC;IACzC,oCAAoC,EAAE,MAAM,CAAC;IAC7C,
|
|
1
|
+
{"version":3,"file":"LogManager.d.ts","sourceRoot":"","sources":["../../src/logging/LogManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EAEb,KAAK,gBAAgB,EAEtB,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,kBAAkB,CAAK;IAG/B,OAAO,CAAC,yBAAyB,CAAK;IACtC,OAAO,CAAC,mBAAmB,CAAK;gBAEpB,MAAM,EAAE,gBAAgB;IAUpC;;;;;;;OAOG;IACH,GAAG,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAwCjC,+BAA+B;IAC/B,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAIlC,mEAAmE;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,mEAAmE;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACH,UAAU,IAAI,MAAM;IAQpB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,cAAc;IAOtB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAyBxB,iEAAiE;IACjE,OAAO,CAAC,eAAe;CAexB;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,4BAA4B,EAAE,MAAM,CAAC;IACrC,qCAAqC,EAAE,MAAM,CAAC;IAC9C,+BAA+B,EAAE,MAAM,CAAC;IACxC,yBAAyB,EAAE,MAAM,CAAC;IAClC,6BAA6B,EAAE,MAAM,CAAC;IACtC,iCAAiC,EAAE,MAAM,CAAC;IAC1C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,kCAAkC,EAAE,MAAM,CAAC;IAC3C,uCAAuC,EAAE,MAAM,CAAC;IAChD,4BAA4B,EAAE,MAAM,CAAC;IACrC,kCAAkC,EAAE,MAAM,CAAC;IAC3C,2BAA2B,EAAE,MAAM,CAAC;IACpC,gCAAgC,EAAE,MAAM,CAAC;IACzC,oCAAoC,EAAE,MAAM,CAAC;IAC7C,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD,GAAG,gBAAgB,CAoBnB"}
|
|
@@ -205,9 +205,7 @@ export function buildLogManagerConfig(envVars) {
|
|
|
205
205
|
fileMaxSize: envVars.DOLLHOUSE_LOG_FILE_MAX_SIZE,
|
|
206
206
|
maxDirSizeBytes: envVars.DOLLHOUSE_LOG_MAX_DIR_SIZE_BYTES,
|
|
207
207
|
maxFilesPerCategory: envVars.DOLLHOUSE_LOG_MAX_FILES_PER_CATEGORY,
|
|
208
|
-
viewerEnabled: envVars.DOLLHOUSE_LOG_VIEWER,
|
|
209
|
-
viewerPort: envVars.DOLLHOUSE_LOG_VIEWER_PORT,
|
|
210
208
|
logLevel: envVars.LOG_LEVEL,
|
|
211
209
|
};
|
|
212
210
|
}
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnaW5nL0xvZ01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUtMLGtCQUFrQixHQUNuQixNQUFNLFlBQVksQ0FBQztBQUVwQixNQUFNLE9BQU8sVUFBVTtJQUNKLEtBQUssR0FBZSxFQUFFLENBQUM7SUFDdkIsTUFBTSxDQUFpQztJQUN2QyxNQUFNLENBQW1CO0lBQ2xDLFVBQVUsR0FBMEMsSUFBSSxDQUFDO0lBQ3pELFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUUvQix3RUFBd0U7SUFDaEUseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUVoQyxZQUFZLE1BQXdCO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQWtCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxhQUFhO0lBQ2IsOEVBQThFO0lBRTlFOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQUMsS0FBc0I7UUFDeEIsYUFBYTtRQUNiLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvRSxPQUFPO1FBQ1QsQ0FBQztRQUVELDJCQUEyQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMs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QUFFLE9BQU8sQ0FBQyxnQ0FBZ0M7UUFDekQsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG9DQUFvQztRQUNqRSxhQUFhLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtRQUMzQyxVQUFVLEVBQUUsT0FBTyxDQUFDLHlCQUF5QjtRQUM3QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDNUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENlbnRyYWwgY29vcmRpbmF0b3IgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIEFjY2VwdHMgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgZnJvbSBhbGwgc291cmNlcywgZW5mb3JjZXMgbGV2ZWwgZmlsdGVyaW5nXG4gKiBhbmQgZW50cnkgc2l6ZSBsaW1pdHMsIHJvdXRlcyBlbnRyaWVzIHRvIHJlZ2lzdGVyZWQgc2lua3MsIGFuZCBtYW5hZ2VzXG4gKiBmbHVzaCBsaWZlY3ljbGUgKHRpbWVyICsgYnVmZmVyIHRocmVzaG9sZCArIGltbWVkaWF0ZSBmbHVzaCBmb3Igc2VjdXJpdHkpLlxuICpcbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIMKnNC4yIGZvciB0aGUgZnVsbCBkZXNpZ24uXG4gKi9cblxuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBVbmlmaWVkTG9nRW50cnksXG4gIHR5cGUgSUxvZ1NpbmssXG4gIHR5cGUgTG9nTGV2ZWwsXG4gIHR5cGUgTG9nTWFuYWdlckNvbmZpZyxcbiAgTE9HX0xFVkVMX1BSSU9SSVRZLFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIExvZ01hbmFnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHNpbmtzOiBJTG9nU2lua1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT47XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBMb2dNYW5hZ2VyQ29uZmlnO1xuICBwcml2YXRlIGZsdXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVudHJ5Q291bnRlciA9IDA7XG4gIHByaXZhdGUgZHJvcENvdW50ID0gMDtcbiAgcHJpdmF0ZSBwcmV2aW91c0J1ZmZlclNpemUgPSAwO1xuXG4gIC8vIFNsaWRpbmctd2luZG93IHJhdGUgbGltaXRlciBmb3IgaW1tZWRpYXRlIGZsdXNoZXMgKHBlci1zZWNvbmQgd2luZG93KVxuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoV2luZG93U3RhcnQgPSAwO1xuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoQ291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogTG9nTWFuYWdlckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuYnVmZmVyID0gbmV3IEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5Pihjb25maWcuYnVmZmVyU2l6ZSk7XG4gICAgdGhpcy5zdGFydEZsdXNoVGltZXIoKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQdWJsaWMgQVBJXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBhIGxvZyBlbnRyeSB0byBhbGwgcmVnaXN0ZXJlZCBzaW5rcy5cbiAgICpcbiAgICogLSBTa2lwcyBlbnRyaWVzIGJlbG93IHRoZSBtaW5pbXVtIGxvZyBsZXZlbC5cbiAgICogLSBFbmZvcmNlcyBtYXggZW50cnkgc2l6ZSAodHJ1bmNhdGVzIGBkYXRhYCwgc2V0cyBgX3RydW5jYXRlZGApLlxuICAgKiAtIFNlY3VyaXR5IHdhcm4vZXJyb3IgZW50cmllcyB0cmlnZ2VyIGFuIGltbWVkaWF0ZSAocmF0ZS1saW1pdGVkKSBmbHVzaC5cbiAgICogLSBPdGhlciBlbnRyaWVzIGFyZSBidWZmZXJlZDsgYSBmbHVzaCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwuXG4gICAqL1xuICBsb2coZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIExldmVsIGdhdGVcbiAgICBpZiAoTE9HX0xFVkVMX1BSSU9SSVRZW2VudHJ5LmxldmVsXSA8IExPR19MRVZFTF9QUklPUklUWVt0aGlzLmNvbmZpZy5sb2dMZXZlbF0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFbmZvcmNlIGVudHJ5IHNpemUgbGltaXRcbiAgICBjb25zdCBlbmZvcmNlZCA9IHRoaXMuZW5mb3JjZUVudHJ5U2l6ZShlbnRyeSk7XG5cbiAgICAvLyBSb3V0ZSB0byBldmVyeSByZWdpc3RlcmVkIHNpbmtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZShlbmZvcmNlZCk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIGZsdXNoIHN0cmF0ZWd5XG4gICAgY29uc3QgbmVlZHNJbW1lZGlhdGVGbHVzaCA9XG4gICAgICBlbmZvcmNlZC5jYXRlZ29yeSA9PT0gJ3NlY3VyaXR5JyAmJlxuICAgICAgKGVuZm9yY2VkLmxldmVsID09PSAnd2FybicgfHwgZW5mb3JjZWQubGV2ZWwgPT09ICdlcnJvcicpO1xuXG4gICAgaWYgKG5lZWRzSW1tZWRpYXRlRmx1c2ggJiYgdGhpcy5jYW5JbW1lZGlhdGVGbHVzaCgpKSB7XG4gICAgICAvLyBGaXJlLWFuZC1mb3JnZXQg4oCUIGxvZ2dpbmcgbXVzdCBuZXZlciBibG9jayB0aGUgY2FsbGVyXG4gICAgICB2b2lkIHRoaXMuZmx1c2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVHJhY2sgYnVmZmVyIG9jY3VwYW5jeSBmb3IgYmFja3ByZXNzdXJlIHJlcG9ydGluZ1xuICAgICAgY29uc3Qgd2FzRnVsbCA9IHRoaXMuYnVmZmVyLnNpemUgPT09IHRoaXMuYnVmZmVyLmNhcGFjaXR5O1xuICAgICAgdGhpcy5idWZmZXIucHVzaChlbmZvcmNlZCk7XG5cbiAgICAgIC8vIERldGVjdCBldmljdGlvbiAoYnVmZmVyIHdhcyBhdCBjYXBhY2l0eSBiZWZvcmUgcHVzaClcbiAgICAgIGlmICh3YXNGdWxsKSB7XG4gICAgICAgIHRoaXMuZHJvcENvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1ZmZlci1mdWxsIGZsdXNoIOKAlCBvbmx5IG9uIHRoZSB0cmFuc2l0aW9uIHRvIGZ1bGwsIG5vdCB3aGlsZSBhbHJlYWR5IGZ1bGwuXG4gICAgICAvLyBUaGUgcGVyaW9kaWMgZmx1c2ggdGltZXIgaGFuZGxlcyBzdGVhZHktc3RhdGUgZHJhaW5pbmcuXG4gICAgICBpZiAoIXdhc0Z1bGwgJiYgdGhpcy5idWZmZXIuc2l6ZSA+PSB0aGlzLmNvbmZpZy5idWZmZXJTaXplKSB7XG4gICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhbiBvdXRwdXQgc2luay4gKi9cbiAgcmVnaXN0ZXJTaW5rKHNpbms6IElMb2dTaW5rKTogdm9pZCB7XG4gICAgdGhpcy5zaW5rcy5wdXNoKHNpbmspO1xuICB9XG5cbiAgLyoqIEZsdXNoIGFsbCByZWdpc3RlcmVkIHNpbmtzIGFuZCByZXBvcnQgZHJvcHMgaWYgYW55IG9jY3VycmVkLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBBY2N1bXVsYXRlIGRyb3BzIGFuZCBvbmx5IHJlcG9ydCB3aGVuIG1lYW5pbmdmdWwuXG4gICAgLy8gU2luZ2xlLWVudHJ5IGV2aWN0aW9ucyBhcmUgbm9ybWFsIHJpbmctYnVmZmVyIGN5Y2xpbmcgdW5kZXIgbG9hZDtcbiAgICAvLyBvbmx5IHdhcm4gd2hlbiBkcm9wcyBleGNlZWQgMTAlIG9mIGJ1ZmZlciBjYXBhY2l0eSBwZXIgZmx1c2ggaW50ZXJ2YWwuXG4gICAgY29uc3QgZHJvcFRocmVzaG9sZCA9IE1hdGgubWF4KDUsIE1hdGguY2VpbCh0aGlzLmNvbmZpZy5idWZmZXJTaXplICogMC4xKSk7XG4gICAgaWYgKHRoaXMuZHJvcENvdW50ID49IGRyb3BUaHJlc2hvbGQpIHtcbiAgICAgIGNvbnN0IGRyb3BFbnRyeSA9IHRoaXMuY3JlYXRlTWV0YUVudHJ5KFxuICAgICAgICAnd2FybicsXG4gICAgICAgIGBCYWNrcHJlc3N1cmU6ICR7dGhpcy5kcm9wQ291bnR9IGJ1ZmZlcmVkIGVudHJpZXMgZXZpY3RlZCBzaW5jZSBsYXN0IGZsdXNoYCxcbiAgICAgICAgeyBkcm9wcGVkQ291bnQ6IHRoaXMuZHJvcENvdW50IH0sXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBzaW5rIG9mIHRoaXMuc2lua3MpIHtcbiAgICAgICAgc2luay53cml0ZShkcm9wRW50cnkpO1xuICAgICAgfVxuICAgICAgdGhpcy5kcm9wQ291bnQgPSAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZsdXNoUHJvbWlzZXMgPSB0aGlzLnNpbmtzLm1hcCgoc2luaykgPT4gc2luay5mbHVzaCgpKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoZmx1c2hQcm9taXNlcyk7XG4gIH1cblxuICAvKiogR3JhY2VmdWwgc2h1dGRvd246IGNsZWFyIHRpbWVyLCBmbHVzaCwgdGhlbiBjbG9zZSBhbGwgc2lua3MuICovXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RvcEZsdXNoVGltZXIoKTtcbiAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgY29uc3QgY2xvc2VQcm9taXNlcyA9IHRoaXMuc2lua3MubWFwKChzaW5rKSA9PiBzaW5rLmNsb3NlKCkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChjbG9zZVByb21pc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVuaXF1ZSBsb2cgZW50cnkgSUQuXG4gICAqIEZvcm1hdDogYExPRy17dGltZXN0YW1wfS17Y291bnRlcn1gXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBMT0ctJHtEYXRlLm5vdygpfS0ke3RoaXMuZW50cnlDb3VudGVyKyt9YDtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBJbnRlcm5hbHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBzdGFydEZsdXNoVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZsdXNoSW50ZXJ2YWxNcyA+IDApIHtcbiAgICAgIHRoaXMuZmx1c2hUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgdm9pZCB0aGlzLmZsdXNoKCk7XG4gICAgICB9LCB0aGlzLmNvbmZpZy5mbHVzaEludGVydmFsTXMpO1xuXG4gICAgICAvLyBBbGxvdyB0aGUgcHJvY2VzcyB0byBleGl0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIHN0aWxsIHJ1bm5pbmdcbiAgICAgIGlmICh0aGlzLmZsdXNoVGltZXIgJiYgdHlwZW9mIHRoaXMuZmx1c2hUaW1lciA9PT0gJ29iamVjdCcgJiYgJ3VucmVmJyBpbiB0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgICAgdGhpcy5mbHVzaFRpbWVyLnVucmVmKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRmx1c2hUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbHVzaFRpbWVyICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuZmx1c2hUaW1lcik7XG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTbGlkaW5nLXdpbmRvdyByYXRlIGxpbWl0ZXIgZm9yIGltbWVkaWF0ZSBmbHVzaGVzLlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBhbiBpbW1lZGlhdGUgZmx1c2ggaXMgYWxsb3dlZCByaWdodCBub3cuXG4gICAqL1xuICBwcml2YXRlIGNhbkltbWVkaWF0ZUZsdXNoKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgd2luZG93TXMgPSAxMDAwO1xuXG4gICAgaWYgKG5vdyAtIHRoaXMuaW1tZWRpYXRlRmx1c2hXaW5kb3dTdGFydCA+PSB3aW5kb3dNcykge1xuICAgICAgLy8gTmV3IHdpbmRvd1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaFdpbmRvd1N0YXJ0ID0gbm93O1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaENvdW50ID0gMTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmltbWVkaWF0ZUZsdXNoQ291bnQgPCB0aGlzLmNvbmZpZy5pbW1lZGlhdGVGbHVzaFJhdGUpIHtcbiAgICAgIHRoaXMuaW1tZWRpYXRlRmx1c2hDb3VudCsrO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gUmF0ZSBleGNlZWRlZCDigJQgZGVtb3RlIHRvIGJ1ZmZlcmVkIHBhdGggKGNhbGxlciB3aWxsIGJ1ZmZlciBpbnN0ZWFkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmZvcmNlIGBtYXhFbnRyeVNpemVgIGJ5IHRydW5jYXRpbmcgdGhlIGBkYXRhYCBmaWVsZCBpZiBuZWNlc3NhcnkuXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIGVudHJ5IHVubW9kaWZpZWQgd2hlbiB1bmRlciB0aGUgbGltaXQsIG9yIGFcbiAgICogc2hhbGxvdyBjb3B5IHdpdGggYGRhdGFgIHJlcGxhY2VkIHdoZW4gdHJ1bmNhdGlvbiBpcyBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIGVuZm9yY2VFbnRyeVNpemUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgaWYgKCFlbnRyeS5kYXRhKSByZXR1cm4gZW50cnk7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkoZW50cnkpO1xuICAgIGlmIChzZXJpYWxpemVkLmxlbmd0aCA8PSB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUpIHJldHVybiBlbnRyeTtcblxuICAgIGNvbnN0IG9yaWdpbmFsU2l6ZSA9IHNlcmlhbGl6ZWQubGVuZ3RoO1xuXG4gICAgLy8gRW1pdCBhIHdhcm4gbWV0YS1lbnRyeSBhYm91dCB0aGUgdHJ1bmNhdGlvblxuICAgIGNvbnN0IHRydW5jYXRpb25Ob3RpY2UgPSB0aGlzLmNyZWF0ZU1ldGFFbnRyeShcbiAgICAgICd3YXJuJyxcbiAgICAgIGBFbnRyeSB0cnVuY2F0ZWQ6IG9yaWdpbmFsIHNpemUgJHtvcmlnaW5hbFNpemV9IGJ5dGVzIGV4Y2VlZHMgbGltaXQgJHt0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemV9YCxcbiAgICAgIHsgb3JpZ2luYWxTaXplLCBtYXhTaXplOiB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUsIGVudHJ5SWQ6IGVudHJ5LmlkIH0sXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZSh0cnVuY2F0aW9uTm90aWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYSBjb3B5IHdpdGggZGF0YSByZXBsYWNlZCBieSBhIHRydW5jYXRpb24gbWFya2VyXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmVudHJ5LFxuICAgICAgZGF0YTogeyBfdHJ1bmNhdGVkOiB0cnVlLCBfb3JpZ2luYWxTaXplOiBvcmlnaW5hbFNpemUgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENyZWF0ZSBhIG1ldGEvc3lzdGVtIGxvZyBlbnRyeSBmcm9tIHRoZSBMb2dNYW5hZ2VyIGl0c2VsZi4gKi9cbiAgcHJpdmF0ZSBjcmVhdGVNZXRhRW50cnkoXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgY2F0ZWdvcnk6ICdhcHBsaWNhdGlvbicsXG4gICAgICBsZXZlbCxcbiAgICAgIHNvdXJjZTogJ0xvZ01hbmFnZXInLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcjogYnVpbGQgTG9nTWFuYWdlckNvbmZpZyBmcm9tIHZhbGlkYXRlZCBlbnYgdmFyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWFwIHRoZSBmbGF0IGVudiBvYmplY3QgKGZyb20gWm9kLXBhcnNlZCBgcHJvY2Vzcy5lbnZgKSB0byBhIHR5cGVkXG4gKiBgTG9nTWFuYWdlckNvbmZpZ2AuIEtlZXBzIHRoZSBtYXBwaW5nIGluIG9uZSBwbGFjZSBzbyB0aGUgREkgY29udGFpbmVyXG4gKiBvbmx5IG5lZWRzIGBidWlsZExvZ01hbmFnZXJDb25maWcoZW52KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExvZ01hbmFnZXJDb25maWcoZW52VmFyczoge1xuICBET0xMSE9VU0VfTE9HX0RJUjogc3RyaW5nO1xuICBET0xMSE9VU0VfTE9HX0ZPUk1BVDogJ3RleHQnIHwgJ2pzb25sJztcbiAgRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX1NFQ1VSSVRZX1JFVEVOVElPTl9EQVlTOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRkxVU0hfSU5URVJWQUxfTVM6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19CVUZGRVJfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9BUFBfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfUEVSRl9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9URUxFTUVUUllfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NQVhfRU5UUllfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9ESVJfU0laRV9CWVRFUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19WSUVXRVI6IGJvb2xlYW47XG4gIERPTExIT1VTRV9MT0dfVklFV0VSX1BPUlQ6IG51bWJlcjtcbiAgTE9HX0xFVkVMOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJztcbn0pOiBMb2dNYW5hZ2VyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsb2dEaXI6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19ESVIsXG4gICAgbG9nRm9ybWF0OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRk9STUFULFxuICAgIHJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUyxcbiAgICBzZWN1cml0eVJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19TRUNVUklUWV9SRVRFTlRJT05fREFZUyxcbiAgICBmbHVzaEludGVydmFsTXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19GTFVTSF9JTlRFUlZBTF9NUyxcbiAgICBidWZmZXJTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfQlVGRkVSX1NJWkUsXG4gICAgbWVtb3J5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQ0FQQUNJVFksXG4gICAgbWVtb3J5QXBwQ2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQVBQX0NBUEFDSVRZLFxuICAgIG1lbW9yeVNlY3VyaXR5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFksXG4gICAgbWVtb3J5UGVyZkNhcGFjaXR5OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfTUVNT1JZX1BFUkZfQ0FQQUNJVFksXG4gICAgbWVtb3J5VGVsZW1ldHJ5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfVEVMRU1FVFJZX0NBUEFDSVRZLFxuICAgIG1heEVudHJ5U2l6ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9FTlRSWV9TSVpFLFxuICAgIGltbWVkaWF0ZUZsdXNoUmF0ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFLFxuICAgIGZpbGVNYXhTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRSxcbiAgICBtYXhEaXJTaXplQnl0ZXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NQVhfRElSX1NJWkVfQllURVMsXG4gICAgbWF4RmlsZXNQZXJDYXRlZ29yeTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlksXG4gICAgdmlld2VyRW5hYmxlZDogZW52VmFycy5ET0xMSE9VU0VfTE9HX1ZJRVdFUixcbiAgICB2aWV3ZXJQb3J0OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfVklFV0VSX1BPUlQsXG4gICAgbG9nTGV2ZWw6IGVudlZhcnMuTE9HX0xFVkVMLFxuICB9O1xufVxuIl19
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnaW5nL0xvZ01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUtMLGtCQUFrQixHQUNuQixNQUFNLFlBQVksQ0FBQztBQUVwQixNQUFNLE9BQU8sVUFBVTtJQUNKLEtBQUssR0FBZSxFQUFFLENBQUM7SUFDdkIsTUFBTSxDQUFpQztJQUN2QyxNQUFNLENBQW1CO0lBQ2xDLFVBQVUsR0FBMEMsSUFBSSxDQUFDO0lBQ3pELFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUUvQix3RUFBd0U7SUFDaEUseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUVoQyxZQUFZLE1BQXdCO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQWtCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxhQUFhO0lBQ2IsOEVBQThFO0lBRTlFOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQUMsS0FBc0I7UUFDeEIsYUFBYTtRQUNiLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvRSxPQUFPO1FBQ1QsQ0FBQztRQUVELDJCQUEyQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMs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QUFFLE9BQU8sQ0FBQyxnQ0FBZ0M7UUFDekQsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG9DQUFvQztRQUNqRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDNUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENlbnRyYWwgY29vcmRpbmF0b3IgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIEFjY2VwdHMgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgZnJvbSBhbGwgc291cmNlcywgZW5mb3JjZXMgbGV2ZWwgZmlsdGVyaW5nXG4gKiBhbmQgZW50cnkgc2l6ZSBsaW1pdHMsIHJvdXRlcyBlbnRyaWVzIHRvIHJlZ2lzdGVyZWQgc2lua3MsIGFuZCBtYW5hZ2VzXG4gKiBmbHVzaCBsaWZlY3ljbGUgKHRpbWVyICsgYnVmZmVyIHRocmVzaG9sZCArIGltbWVkaWF0ZSBmbHVzaCBmb3Igc2VjdXJpdHkpLlxuICpcbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIMKnNC4yIGZvciB0aGUgZnVsbCBkZXNpZ24uXG4gKi9cblxuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBVbmlmaWVkTG9nRW50cnksXG4gIHR5cGUgSUxvZ1NpbmssXG4gIHR5cGUgTG9nTGV2ZWwsXG4gIHR5cGUgTG9nTWFuYWdlckNvbmZpZyxcbiAgTE9HX0xFVkVMX1BSSU9SSVRZLFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIExvZ01hbmFnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHNpbmtzOiBJTG9nU2lua1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT47XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBMb2dNYW5hZ2VyQ29uZmlnO1xuICBwcml2YXRlIGZsdXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVudHJ5Q291bnRlciA9IDA7XG4gIHByaXZhdGUgZHJvcENvdW50ID0gMDtcbiAgcHJpdmF0ZSBwcmV2aW91c0J1ZmZlclNpemUgPSAwO1xuXG4gIC8vIFNsaWRpbmctd2luZG93IHJhdGUgbGltaXRlciBmb3IgaW1tZWRpYXRlIGZsdXNoZXMgKHBlci1zZWNvbmQgd2luZG93KVxuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoV2luZG93U3RhcnQgPSAwO1xuICBwcml2YXRlIGltbWVkaWF0ZUZsdXNoQ291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogTG9nTWFuYWdlckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuYnVmZmVyID0gbmV3IEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5Pihjb25maWcuYnVmZmVyU2l6ZSk7XG4gICAgdGhpcy5zdGFydEZsdXNoVGltZXIoKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQdWJsaWMgQVBJXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBhIGxvZyBlbnRyeSB0byBhbGwgcmVnaXN0ZXJlZCBzaW5rcy5cbiAgICpcbiAgICogLSBTa2lwcyBlbnRyaWVzIGJlbG93IHRoZSBtaW5pbXVtIGxvZyBsZXZlbC5cbiAgICogLSBFbmZvcmNlcyBtYXggZW50cnkgc2l6ZSAodHJ1bmNhdGVzIGBkYXRhYCwgc2V0cyBgX3RydW5jYXRlZGApLlxuICAgKiAtIFNlY3VyaXR5IHdhcm4vZXJyb3IgZW50cmllcyB0cmlnZ2VyIGFuIGltbWVkaWF0ZSAocmF0ZS1saW1pdGVkKSBmbHVzaC5cbiAgICogLSBPdGhlciBlbnRyaWVzIGFyZSBidWZmZXJlZDsgYSBmbHVzaCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgYnVmZmVyIGlzIGZ1bGwuXG4gICAqL1xuICBsb2coZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIExldmVsIGdhdGVcbiAgICBpZiAoTE9HX0xFVkVMX1BSSU9SSVRZW2VudHJ5LmxldmVsXSA8IExPR19MRVZFTF9QUklPUklUWVt0aGlzLmNvbmZpZy5sb2dMZXZlbF0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFbmZvcmNlIGVudHJ5IHNpemUgbGltaXRcbiAgICBjb25zdCBlbmZvcmNlZCA9IHRoaXMuZW5mb3JjZUVudHJ5U2l6ZShlbnRyeSk7XG5cbiAgICAvLyBSb3V0ZSB0byBldmVyeSByZWdpc3RlcmVkIHNpbmtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZShlbmZvcmNlZCk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIGZsdXNoIHN0cmF0ZWd5XG4gICAgY29uc3QgbmVlZHNJbW1lZGlhdGVGbHVzaCA9XG4gICAgICBlbmZvcmNlZC5jYXRlZ29yeSA9PT0gJ3NlY3VyaXR5JyAmJlxuICAgICAgKGVuZm9yY2VkLmxldmVsID09PSAnd2FybicgfHwgZW5mb3JjZWQubGV2ZWwgPT09ICdlcnJvcicpO1xuXG4gICAgaWYgKG5lZWRzSW1tZWRpYXRlRmx1c2ggJiYgdGhpcy5jYW5JbW1lZGlhdGVGbHVzaCgpKSB7XG4gICAgICAvLyBGaXJlLWFuZC1mb3JnZXQg4oCUIGxvZ2dpbmcgbXVzdCBuZXZlciBibG9jayB0aGUgY2FsbGVyXG4gICAgICB2b2lkIHRoaXMuZmx1c2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVHJhY2sgYnVmZmVyIG9jY3VwYW5jeSBmb3IgYmFja3ByZXNzdXJlIHJlcG9ydGluZ1xuICAgICAgY29uc3Qgd2FzRnVsbCA9IHRoaXMuYnVmZmVyLnNpemUgPT09IHRoaXMuYnVmZmVyLmNhcGFjaXR5O1xuICAgICAgdGhpcy5idWZmZXIucHVzaChlbmZvcmNlZCk7XG5cbiAgICAgIC8vIERldGVjdCBldmljdGlvbiAoYnVmZmVyIHdhcyBhdCBjYXBhY2l0eSBiZWZvcmUgcHVzaClcbiAgICAgIGlmICh3YXNGdWxsKSB7XG4gICAgICAgIHRoaXMuZHJvcENvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1ZmZlci1mdWxsIGZsdXNoIOKAlCBvbmx5IG9uIHRoZSB0cmFuc2l0aW9uIHRvIGZ1bGwsIG5vdCB3aGlsZSBhbHJlYWR5IGZ1bGwuXG4gICAgICAvLyBUaGUgcGVyaW9kaWMgZmx1c2ggdGltZXIgaGFuZGxlcyBzdGVhZHktc3RhdGUgZHJhaW5pbmcuXG4gICAgICBpZiAoIXdhc0Z1bGwgJiYgdGhpcy5idWZmZXIuc2l6ZSA+PSB0aGlzLmNvbmZpZy5idWZmZXJTaXplKSB7XG4gICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhbiBvdXRwdXQgc2luay4gKi9cbiAgcmVnaXN0ZXJTaW5rKHNpbms6IElMb2dTaW5rKTogdm9pZCB7XG4gICAgdGhpcy5zaW5rcy5wdXNoKHNpbmspO1xuICB9XG5cbiAgLyoqIEZsdXNoIGFsbCByZWdpc3RlcmVkIHNpbmtzIGFuZCByZXBvcnQgZHJvcHMgaWYgYW55IG9jY3VycmVkLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBBY2N1bXVsYXRlIGRyb3BzIGFuZCBvbmx5IHJlcG9ydCB3aGVuIG1lYW5pbmdmdWwuXG4gICAgLy8gU2luZ2xlLWVudHJ5IGV2aWN0aW9ucyBhcmUgbm9ybWFsIHJpbmctYnVmZmVyIGN5Y2xpbmcgdW5kZXIgbG9hZDtcbiAgICAvLyBvbmx5IHdhcm4gd2hlbiBkcm9wcyBleGNlZWQgMTAlIG9mIGJ1ZmZlciBjYXBhY2l0eSBwZXIgZmx1c2ggaW50ZXJ2YWwuXG4gICAgY29uc3QgZHJvcFRocmVzaG9sZCA9IE1hdGgubWF4KDUsIE1hdGguY2VpbCh0aGlzLmNvbmZpZy5idWZmZXJTaXplICogMC4xKSk7XG4gICAgaWYgKHRoaXMuZHJvcENvdW50ID49IGRyb3BUaHJlc2hvbGQpIHtcbiAgICAgIGNvbnN0IGRyb3BFbnRyeSA9IHRoaXMuY3JlYXRlTWV0YUVudHJ5KFxuICAgICAgICAnd2FybicsXG4gICAgICAgIGBCYWNrcHJlc3N1cmU6ICR7dGhpcy5kcm9wQ291bnR9IGJ1ZmZlcmVkIGVudHJpZXMgZXZpY3RlZCBzaW5jZSBsYXN0IGZsdXNoYCxcbiAgICAgICAgeyBkcm9wcGVkQ291bnQ6IHRoaXMuZHJvcENvdW50IH0sXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBzaW5rIG9mIHRoaXMuc2lua3MpIHtcbiAgICAgICAgc2luay53cml0ZShkcm9wRW50cnkpO1xuICAgICAgfVxuICAgICAgdGhpcy5kcm9wQ291bnQgPSAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZsdXNoUHJvbWlzZXMgPSB0aGlzLnNpbmtzLm1hcCgoc2luaykgPT4gc2luay5mbHVzaCgpKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoZmx1c2hQcm9taXNlcyk7XG4gIH1cblxuICAvKiogR3JhY2VmdWwgc2h1dGRvd246IGNsZWFyIHRpbWVyLCBmbHVzaCwgdGhlbiBjbG9zZSBhbGwgc2lua3MuICovXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RvcEZsdXNoVGltZXIoKTtcbiAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgY29uc3QgY2xvc2VQcm9taXNlcyA9IHRoaXMuc2lua3MubWFwKChzaW5rKSA9PiBzaW5rLmNsb3NlKCkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChjbG9zZVByb21pc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVuaXF1ZSBsb2cgZW50cnkgSUQuXG4gICAqIEZvcm1hdDogYExPRy17dGltZXN0YW1wfS17Y291bnRlcn1gXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBMT0ctJHtEYXRlLm5vdygpfS0ke3RoaXMuZW50cnlDb3VudGVyKyt9YDtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBJbnRlcm5hbHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBzdGFydEZsdXNoVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZsdXNoSW50ZXJ2YWxNcyA+IDApIHtcbiAgICAgIHRoaXMuZmx1c2hUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgdm9pZCB0aGlzLmZsdXNoKCk7XG4gICAgICB9LCB0aGlzLmNvbmZpZy5mbHVzaEludGVydmFsTXMpO1xuXG4gICAgICAvLyBBbGxvdyB0aGUgcHJvY2VzcyB0byBleGl0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIHN0aWxsIHJ1bm5pbmdcbiAgICAgIGlmICh0aGlzLmZsdXNoVGltZXIgJiYgdHlwZW9mIHRoaXMuZmx1c2hUaW1lciA9PT0gJ29iamVjdCcgJiYgJ3VucmVmJyBpbiB0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgICAgdGhpcy5mbHVzaFRpbWVyLnVucmVmKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRmx1c2hUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbHVzaFRpbWVyICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuZmx1c2hUaW1lcik7XG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTbGlkaW5nLXdpbmRvdyByYXRlIGxpbWl0ZXIgZm9yIGltbWVkaWF0ZSBmbHVzaGVzLlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBhbiBpbW1lZGlhdGUgZmx1c2ggaXMgYWxsb3dlZCByaWdodCBub3cuXG4gICAqL1xuICBwcml2YXRlIGNhbkltbWVkaWF0ZUZsdXNoKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgd2luZG93TXMgPSAxMDAwO1xuXG4gICAgaWYgKG5vdyAtIHRoaXMuaW1tZWRpYXRlRmx1c2hXaW5kb3dTdGFydCA+PSB3aW5kb3dNcykge1xuICAgICAgLy8gTmV3IHdpbmRvd1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaFdpbmRvd1N0YXJ0ID0gbm93O1xuICAgICAgdGhpcy5pbW1lZGlhdGVGbHVzaENvdW50ID0gMTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmltbWVkaWF0ZUZsdXNoQ291bnQgPCB0aGlzLmNvbmZpZy5pbW1lZGlhdGVGbHVzaFJhdGUpIHtcbiAgICAgIHRoaXMuaW1tZWRpYXRlRmx1c2hDb3VudCsrO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gUmF0ZSBleGNlZWRlZCDigJQgZGVtb3RlIHRvIGJ1ZmZlcmVkIHBhdGggKGNhbGxlciB3aWxsIGJ1ZmZlciBpbnN0ZWFkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmZvcmNlIGBtYXhFbnRyeVNpemVgIGJ5IHRydW5jYXRpbmcgdGhlIGBkYXRhYCBmaWVsZCBpZiBuZWNlc3NhcnkuXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIGVudHJ5IHVubW9kaWZpZWQgd2hlbiB1bmRlciB0aGUgbGltaXQsIG9yIGFcbiAgICogc2hhbGxvdyBjb3B5IHdpdGggYGRhdGFgIHJlcGxhY2VkIHdoZW4gdHJ1bmNhdGlvbiBpcyBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIGVuZm9yY2VFbnRyeVNpemUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgaWYgKCFlbnRyeS5kYXRhKSByZXR1cm4gZW50cnk7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkoZW50cnkpO1xuICAgIGlmIChzZXJpYWxpemVkLmxlbmd0aCA8PSB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUpIHJldHVybiBlbnRyeTtcblxuICAgIGNvbnN0IG9yaWdpbmFsU2l6ZSA9IHNlcmlhbGl6ZWQubGVuZ3RoO1xuXG4gICAgLy8gRW1pdCBhIHdhcm4gbWV0YS1lbnRyeSBhYm91dCB0aGUgdHJ1bmNhdGlvblxuICAgIGNvbnN0IHRydW5jYXRpb25Ob3RpY2UgPSB0aGlzLmNyZWF0ZU1ldGFFbnRyeShcbiAgICAgICd3YXJuJyxcbiAgICAgIGBFbnRyeSB0cnVuY2F0ZWQ6IG9yaWdpbmFsIHNpemUgJHtvcmlnaW5hbFNpemV9IGJ5dGVzIGV4Y2VlZHMgbGltaXQgJHt0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemV9YCxcbiAgICAgIHsgb3JpZ2luYWxTaXplLCBtYXhTaXplOiB0aGlzLmNvbmZpZy5tYXhFbnRyeVNpemUsIGVudHJ5SWQ6IGVudHJ5LmlkIH0sXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgc2luay53cml0ZSh0cnVuY2F0aW9uTm90aWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYSBjb3B5IHdpdGggZGF0YSByZXBsYWNlZCBieSBhIHRydW5jYXRpb24gbWFya2VyXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmVudHJ5LFxuICAgICAgZGF0YTogeyBfdHJ1bmNhdGVkOiB0cnVlLCBfb3JpZ2luYWxTaXplOiBvcmlnaW5hbFNpemUgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENyZWF0ZSBhIG1ldGEvc3lzdGVtIGxvZyBlbnRyeSBmcm9tIHRoZSBMb2dNYW5hZ2VyIGl0c2VsZi4gKi9cbiAgcHJpdmF0ZSBjcmVhdGVNZXRhRW50cnkoXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFVuaWZpZWRMb2dFbnRyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgY2F0ZWdvcnk6ICdhcHBsaWNhdGlvbicsXG4gICAgICBsZXZlbCxcbiAgICAgIHNvdXJjZTogJ0xvZ01hbmFnZXInLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcjogYnVpbGQgTG9nTWFuYWdlckNvbmZpZyBmcm9tIHZhbGlkYXRlZCBlbnYgdmFyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWFwIHRoZSBmbGF0IGVudiBvYmplY3QgKGZyb20gWm9kLXBhcnNlZCBgcHJvY2Vzcy5lbnZgKSB0byBhIHR5cGVkXG4gKiBgTG9nTWFuYWdlckNvbmZpZ2AuIEtlZXBzIHRoZSBtYXBwaW5nIGluIG9uZSBwbGFjZSBzbyB0aGUgREkgY29udGFpbmVyXG4gKiBvbmx5IG5lZWRzIGBidWlsZExvZ01hbmFnZXJDb25maWcoZW52KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExvZ01hbmFnZXJDb25maWcoZW52VmFyczoge1xuICBET0xMSE9VU0VfTE9HX0RJUjogc3RyaW5nO1xuICBET0xMSE9VU0VfTE9HX0ZPUk1BVDogJ3RleHQnIHwgJ2pzb25sJztcbiAgRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX1NFQ1VSSVRZX1JFVEVOVElPTl9EQVlTOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRkxVU0hfSU5URVJWQUxfTVM6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19CVUZGRVJfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9BUFBfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfUEVSRl9DQVBBQ0lUWTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01FTU9SWV9URUxFTUVUUllfQ0FQQUNJVFk6IG51bWJlcjtcbiAgRE9MTEhPVVNFX0xPR19NQVhfRU5UUllfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFOiBudW1iZXI7XG4gIERPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRTogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9ESVJfU0laRV9CWVRFUzogbnVtYmVyO1xuICBET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlk6IG51bWJlcjtcbiAgTE9HX0xFVkVMOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJztcbn0pOiBMb2dNYW5hZ2VyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsb2dEaXI6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19ESVIsXG4gICAgbG9nRm9ybWF0OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRk9STUFULFxuICAgIHJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19SRVRFTlRJT05fREFZUyxcbiAgICBzZWN1cml0eVJldGVudGlvbkRheXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19TRUNVUklUWV9SRVRFTlRJT05fREFZUyxcbiAgICBmbHVzaEludGVydmFsTXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19GTFVTSF9JTlRFUlZBTF9NUyxcbiAgICBidWZmZXJTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfQlVGRkVSX1NJWkUsXG4gICAgbWVtb3J5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQ0FQQUNJVFksXG4gICAgbWVtb3J5QXBwQ2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfQVBQX0NBUEFDSVRZLFxuICAgIG1lbW9yeVNlY3VyaXR5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFksXG4gICAgbWVtb3J5UGVyZkNhcGFjaXR5OiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfTUVNT1JZX1BFUkZfQ0FQQUNJVFksXG4gICAgbWVtb3J5VGVsZW1ldHJ5Q2FwYWNpdHk6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NRU1PUllfVEVMRU1FVFJZX0NBUEFDSVRZLFxuICAgIG1heEVudHJ5U2l6ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9FTlRSWV9TSVpFLFxuICAgIGltbWVkaWF0ZUZsdXNoUmF0ZTogZW52VmFycy5ET0xMSE9VU0VfTE9HX0lNTUVESUFURV9GTFVTSF9SQVRFLFxuICAgIGZpbGVNYXhTaXplOiBlbnZWYXJzLkRPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRSxcbiAgICBtYXhEaXJTaXplQnl0ZXM6IGVudlZhcnMuRE9MTEhPVVNFX0xPR19NQVhfRElSX1NJWkVfQllURVMsXG4gICAgbWF4RmlsZXNQZXJDYXRlZ29yeTogZW52VmFycy5ET0xMSE9VU0VfTE9HX01BWF9GSUxFU19QRVJfQ0FURUdPUlksXG4gICAgbG9nTGV2ZWw6IGVudlZhcnMuTE9HX0xFVkVMLFxuICB9O1xufVxuIl19
|
|
@@ -7,6 +7,7 @@ export interface MemoryLogSinkOptions {
|
|
|
7
7
|
}
|
|
8
8
|
export declare class MemoryLogSink implements ILogSink {
|
|
9
9
|
private readonly queues;
|
|
10
|
+
private readonly evictionCounts;
|
|
10
11
|
constructor(options: MemoryLogSinkOptions);
|
|
11
12
|
write(entry: UnifiedLogEntry): void;
|
|
12
13
|
flush(): Promise<void>;
|
|
@@ -15,6 +16,7 @@ export declare class MemoryLogSink implements ILogSink {
|
|
|
15
16
|
getStats(): Record<LogCategory, {
|
|
16
17
|
size: number;
|
|
17
18
|
capacity: number;
|
|
19
|
+
evictions: number;
|
|
18
20
|
}>;
|
|
19
21
|
}
|
|
20
22
|
//# sourceMappingURL=MemoryLogSink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryLogSink.d.ts","sourceRoot":"","sources":["../../../src/logging/sinks/MemoryLogSink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AASD,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;
|
|
1
|
+
{"version":3,"file":"MemoryLogSink.d.ts","sourceRoot":"","sources":["../../../src/logging/sinks/MemoryLogSink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AASD,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAC1E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuC;gBAE1D,OAAO,EAAE,oBAAoB;IAWzC,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAa7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc;IAkEhD,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAWvF"}
|
|
@@ -8,15 +8,20 @@ const CATEGORY_KEY = {
|
|
|
8
8
|
};
|
|
9
9
|
export class MemoryLogSink {
|
|
10
10
|
queues;
|
|
11
|
+
evictionCounts = new Map();
|
|
11
12
|
constructor(options) {
|
|
12
13
|
this.queues = new Map();
|
|
13
14
|
for (const [category, key] of Object.entries(CATEGORY_KEY)) {
|
|
14
15
|
this.queues.set(category, new EvictingQueue(options[key]));
|
|
16
|
+
this.evictionCounts.set(category, 0);
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
write(entry) {
|
|
18
20
|
const queue = this.queues.get(entry.category);
|
|
19
21
|
if (queue) {
|
|
22
|
+
if (queue.size >= queue.capacity) {
|
|
23
|
+
this.evictionCounts.set(entry.category, (this.evictionCounts.get(entry.category) ?? 0) + 1);
|
|
24
|
+
}
|
|
20
25
|
queue.push(entry);
|
|
21
26
|
}
|
|
22
27
|
}
|
|
@@ -30,7 +35,7 @@ export class MemoryLogSink {
|
|
|
30
35
|
}
|
|
31
36
|
query(options) {
|
|
32
37
|
const category = options?.category ?? 'all';
|
|
33
|
-
const limit = Math.max(1, Math.min(options?.limit ?? 50,
|
|
38
|
+
const limit = Math.max(1, Math.min(options?.limit ?? 50, 10000));
|
|
34
39
|
const offset = Math.max(0, options?.offset ?? 0);
|
|
35
40
|
// 1. Select queues
|
|
36
41
|
const selectedQueues = [];
|
|
@@ -91,9 +96,13 @@ export class MemoryLogSink {
|
|
|
91
96
|
getStats() {
|
|
92
97
|
const stats = {};
|
|
93
98
|
for (const [category, queue] of this.queues) {
|
|
94
|
-
stats[category] = {
|
|
99
|
+
stats[category] = {
|
|
100
|
+
size: queue.size,
|
|
101
|
+
capacity: queue.capacity,
|
|
102
|
+
evictions: this.evictionCounts.get(category) ?? 0,
|
|
103
|
+
};
|
|
95
104
|
}
|
|
96
105
|
return stats;
|
|
97
106
|
}
|
|
98
107
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5TG9nU2luay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2dnaW5nL3NpbmtzL01lbW9yeUxvZ1NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVNqRCxNQUFNLFlBQVksR0FBb0Q7SUFDcEUsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1QixXQUFXLEVBQUUsY0FBYztJQUMzQixTQUFTLEVBQUUsbUJBQW1CO0NBQy9CLENBQUM7QUFFRixNQUFNLE9BQU8sYUFBYTtJQUNQLE1BQU0sQ0FBbUQ7SUFFMUUsWUFBWSxPQUE2QjtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBQ3JFLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2IsUUFBdUIsRUFDdkIsSUFBSSxhQUFhLENBQWtCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNqRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBc0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCx1Q0FBdUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDekMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQXlCO1FBQzdCLE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWpELG1CQUFtQjtRQUNuQixNQUFNLGNBQWMsR0FBcUMsRUFBRSxDQUFDO1FBQzVELElBQUksUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQztnQkFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ25CLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDcEIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNuQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzVCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbkIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUM1QixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDckMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUU3Qiw4Q0FBOEM7UUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0YsY0FBYztRQUNkLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFFaEQsT0FBTztZQUNMLE9BQU87WUFDUCxLQUFLO1lBQ0wsT0FBTyxFQUFFLE1BQU0sR0FBRyxLQUFLLEdBQUcsS0FBSztZQUMvQixLQUFLO1lBQ0wsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFHLEVBQTZELENBQUM7UUFDNUUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2aWN0aW5nUXVldWUgfSBmcm9tICcuLi8uLi91dGlscy9FdmljdGluZ1F1ZXVlLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgSUxvZ1NpbmssXG4gIExvZ0NhdGVnb3J5LFxuICBMb2dRdWVyeU9wdGlvbnMsXG4gIExvZ1F1ZXJ5UmVzdWx0LFxuICBVbmlmaWVkTG9nRW50cnksXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IExPR19MRVZFTF9QUklPUklUWSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlMb2dTaW5rT3B0aW9ucyB7XG4gIGFwcENhcGFjaXR5OiBudW1iZXI7XG4gIHNlY3VyaXR5Q2FwYWNpdHk6IG51bWJlcjtcbiAgcGVyZkNhcGFjaXR5OiBudW1iZXI7XG4gIHRlbGVtZXRyeUNhcGFjaXR5OiBudW1iZXI7XG59XG5cbmNvbnN0IENBVEVHT1JZX0tFWTogUmVjb3JkPExvZ0NhdGVnb3J5LCBrZXlvZiBNZW1vcnlMb2dTaW5rT3B0aW9ucz4gPSB7XG4gIGFwcGxpY2F0aW9uOiAnYXBwQ2FwYWNpdHknLFxuICBzZWN1cml0eTogJ3NlY3VyaXR5Q2FwYWNpdHknLFxuICBwZXJmb3JtYW5jZTogJ3BlcmZDYXBhY2l0eScsXG4gIHRlbGVtZXRyeTogJ3RlbGVtZXRyeUNhcGFjaXR5Jyxcbn07XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlMb2dTaW5rIGltcGxlbWVudHMgSUxvZ1Npbmsge1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXVlczogTWFwPExvZ0NhdGVnb3J5LCBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT4+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE1lbW9yeUxvZ1NpbmtPcHRpb25zKSB7XG4gICAgdGhpcy5xdWV1ZXMgPSBuZXcgTWFwPExvZ0NhdGVnb3J5LCBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT4+KCk7XG4gICAgZm9yIChjb25zdCBbY2F0ZWdvcnksIGtleV0gb2YgT2JqZWN0LmVudHJpZXMoQ0FURUdPUllfS0VZKSkge1xuICAgICAgdGhpcy5xdWV1ZXMuc2V0KFxuICAgICAgICBjYXRlZ29yeSBhcyBMb2dDYXRlZ29yeSxcbiAgICAgICAgbmV3IEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5PihvcHRpb25zW2tleV0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZShlbnRyeTogVW5pZmllZExvZ0VudHJ5KTogdm9pZCB7XG4gICAgY29uc3QgcXVldWUgPSB0aGlzLnF1ZXVlcy5nZXQoZW50cnkuY2F0ZWdvcnkpO1xuICAgIGlmIChxdWV1ZSkge1xuICAgICAgcXVldWUucHVzaChlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gTm8tb3Ag4oCUIGluLW1lbW9yeSwgbm90aGluZyB0byBmbHVzaC5cbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgcXVldWUgb2YgdGhpcy5xdWV1ZXMudmFsdWVzKCkpIHtcbiAgICAgIHF1ZXVlLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcXVlcnkob3B0aW9ucz86IExvZ1F1ZXJ5T3B0aW9ucyk6IExvZ1F1ZXJ5UmVzdWx0IHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IG9wdGlvbnM/LmNhdGVnb3J5ID8/ICdhbGwnO1xuICAgIGNvbnN0IGxpbWl0ID0gTWF0aC5tYXgoMSwgTWF0aC5taW4ob3B0aW9ucz8ubGltaXQgPz8gNTAsIDUwMCkpO1xuICAgIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KDAsIG9wdGlvbnM/Lm9mZnNldCA/PyAwKTtcblxuICAgIC8vIDEuIFNlbGVjdCBxdWV1ZXNcbiAgICBjb25zdCBzZWxlY3RlZFF1ZXVlczogRXZpY3RpbmdRdWV1ZTxVbmlmaWVkTG9nRW50cnk+W10gPSBbXTtcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdhbGwnKSB7XG4gICAgICBmb3IgKGNvbnN0IHEgb2YgdGhpcy5xdWV1ZXMudmFsdWVzKCkpIHtcbiAgICAgICAgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcSA9IHRoaXMucXVldWVzLmdldChjYXRlZ29yeSk7XG4gICAgICBpZiAocSkgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICB9XG5cbiAgICAvLyAyLiBDb2xsZWN0IGVudHJpZXMgZnJvbSBzZWxlY3RlZCBxdWV1ZXNcbiAgICBsZXQgZW50cmllczogVW5pZmllZExvZ0VudHJ5W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHEgb2Ygc2VsZWN0ZWRRdWV1ZXMpIHtcbiAgICAgIGVudHJpZXMucHVzaCguLi5xLnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLy8gMy4gQXBwbHkgZmlsdGVycyBjb25qdW5jdGl2ZWx5XG4gICAgaWYgKG9wdGlvbnM/LmxldmVsKSB7XG4gICAgICBjb25zdCBtaW5Qcmlvcml0eSA9IExPR19MRVZFTF9QUklPUklUWVtvcHRpb25zLmxldmVsXTtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IExPR19MRVZFTF9QUklPUklUWVtlLmxldmVsXSA+PSBtaW5Qcmlvcml0eSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5zb3VyY2UpIHtcbiAgICAgIGNvbnN0IG5lZWRsZSA9IG9wdGlvbnMuc291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnNvdXJjZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5lZWRsZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ubWVzc2FnZSkge1xuICAgICAgY29uc3QgbmVlZGxlID0gb3B0aW9ucy5tZXNzYWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZWVkbGUpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnNpbmNlKSB7XG4gICAgICBjb25zdCBzaW5jZSA9IG9wdGlvbnMuc2luY2U7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA+IHNpbmNlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnVudGlsKSB7XG4gICAgICBjb25zdCB1bnRpbCA9IG9wdGlvbnMudW50aWw7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA8IHVudGlsKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LmNvcnJlbGF0aW9uSWQpIHtcbiAgICAgIGNvbnN0IGNvcnJJZCA9IG9wdGlvbnMuY29ycmVsYXRpb25JZDtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IGUuY29ycmVsYXRpb25JZCA9PT0gY29ycklkKTtcbiAgICB9XG5cbiAgICAvLyA0LiBDb3VudCB0b3RhbCBiZWZvcmUgcGFnaW5hdGlvblxuICAgIGNvbnN0IHRvdGFsID0gZW50cmllcy5sZW5ndGg7XG5cbiAgICAvLyA1LiBTb3J0IG5ld2VzdC1maXJzdCAoZGVzY2VuZGluZyB0aW1lc3RhbXApXG4gICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiAoYS50aW1lc3RhbXAgPiBiLnRpbWVzdGFtcCA/IC0xIDogYS50aW1lc3RhbXAgPCBiLnRpbWVzdGFtcCA/IDEgOiAwKSk7XG5cbiAgICAvLyA2LiBQYWdpbmF0ZVxuICAgIGVudHJpZXMgPSBlbnRyaWVzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGltaXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudHJpZXMsXG4gICAgICB0b3RhbCxcbiAgICAgIGhhc01vcmU6IG9mZnNldCArIGxpbWl0IDwgdG90YWwsXG4gICAgICBsaW1pdCxcbiAgICAgIG9mZnNldCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3RhdHMoKTogUmVjb3JkPExvZ0NhdGVnb3J5LCB7IHNpemU6IG51bWJlcjsgY2FwYWNpdHk6IG51bWJlciB9PiB7XG4gICAgY29uc3Qgc3RhdHMgPSB7fSBhcyBSZWNvcmQ8TG9nQ2F0ZWdvcnksIHsgc2l6ZTogbnVtYmVyOyBjYXBhY2l0eTogbnVtYmVyIH0+O1xuICAgIGZvciAoY29uc3QgW2NhdGVnb3J5LCBxdWV1ZV0gb2YgdGhpcy5xdWV1ZXMpIHtcbiAgICAgIHN0YXRzW2NhdGVnb3J5XSA9IHsgc2l6ZTogcXVldWUuc2l6ZSwgY2FwYWNpdHk6IHF1ZXVlLmNhcGFjaXR5IH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0cztcbiAgfVxufVxuIl19
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5TG9nU2luay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2dnaW5nL3NpbmtzL01lbW9yeUxvZ1NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVNqRCxNQUFNLFlBQVksR0FBb0Q7SUFDcEUsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1QixXQUFXLEVBQUUsY0FBYztJQUMzQixTQUFTLEVBQUUsbUJBQW1CO0NBQy9CLENBQUM7QUFFRixNQUFNLE9BQU8sYUFBYTtJQUNQLE1BQU0sQ0FBbUQ7SUFDekQsY0FBYyxHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXRFLFlBQVksT0FBNkI7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBK0MsQ0FBQztRQUNyRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUNiLFFBQXVCLEVBQ3ZCLElBQUksYUFBYSxDQUFrQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakQsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBc0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUks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LENBQUMsQ0FBQyxDQUFDO1FBRTdGLGNBQWM7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU87WUFDTCxPQUFPO1lBQ1AsS0FBSztZQUNMLE9BQU8sRUFBRSxNQUFNLEdBQUcsS0FBSyxHQUFHLEtBQUs7WUFDL0IsS0FBSztZQUNMLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxFQUFnRixDQUFDO1FBQy9GLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHO2dCQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDbEQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2aWN0aW5nUXVldWUgfSBmcm9tICcuLi8uLi91dGlscy9FdmljdGluZ1F1ZXVlLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgSUxvZ1NpbmssXG4gIExvZ0NhdGVnb3J5LFxuICBMb2dRdWVyeU9wdGlvbnMsXG4gIExvZ1F1ZXJ5UmVzdWx0LFxuICBVbmlmaWVkTG9nRW50cnksXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IExPR19MRVZFTF9QUklPUklUWSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlMb2dTaW5rT3B0aW9ucyB7XG4gIGFwcENhcGFjaXR5OiBudW1iZXI7XG4gIHNlY3VyaXR5Q2FwYWNpdHk6IG51bWJlcjtcbiAgcGVyZkNhcGFjaXR5OiBudW1iZXI7XG4gIHRlbGVtZXRyeUNhcGFjaXR5OiBudW1iZXI7XG59XG5cbmNvbnN0IENBVEVHT1JZX0tFWTogUmVjb3JkPExvZ0NhdGVnb3J5LCBrZXlvZiBNZW1vcnlMb2dTaW5rT3B0aW9ucz4gPSB7XG4gIGFwcGxpY2F0aW9uOiAnYXBwQ2FwYWNpdHknLFxuICBzZWN1cml0eTogJ3NlY3VyaXR5Q2FwYWNpdHknLFxuICBwZXJmb3JtYW5jZTogJ3BlcmZDYXBhY2l0eScsXG4gIHRlbGVtZXRyeTogJ3RlbGVtZXRyeUNhcGFjaXR5Jyxcbn07XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlMb2dTaW5rIGltcGxlbWVudHMgSUxvZ1Npbmsge1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXVlczogTWFwPExvZ0NhdGVnb3J5LCBFdmljdGluZ1F1ZXVlPFVuaWZpZWRMb2dFbnRyeT4+O1xuICBwcml2YXRlIHJlYWRvbmx5IGV2aWN0aW9uQ291bnRzOiBNYXA8TG9nQ2F0ZWdvcnksIG51bWJlcj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTWVtb3J5TG9nU2lua09wdGlvbnMpIHtcbiAgICB0aGlzLnF1ZXVlcyA9IG5ldyBNYXA8TG9nQ2F0ZWdvcnksIEV2aWN0aW5nUXVldWU8VW5pZmllZExvZ0VudHJ5Pj4oKTtcbiAgICBmb3IgKGNvbnN0IFtjYXRlZ29yeSwga2V5XSBvZiBPYmplY3QuZW50cmllcyhDQVRFR09SWV9LRVkpKSB7XG4gICAgICB0aGlzLnF1ZXVlcy5zZXQoXG4gICAgICAgIGNhdGVnb3J5IGFzIExvZ0NhdGVnb3J5LFxuICAgICAgICBuZXcgRXZpY3RpbmdRdWV1ZTxVbmlmaWVkTG9nRW50cnk+KG9wdGlvbnNba2V5XSksXG4gICAgICApO1xuICAgICAgdGhpcy5ldmljdGlvbkNvdW50cy5zZXQoY2F0ZWdvcnkgYXMgTG9nQ2F0ZWdvcnksIDApO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlKGVudHJ5OiBVbmlmaWVkTG9nRW50cnkpOiB2b2lkIHtcbiAgICBjb25zdCBxdWV1ZSA9IHRoaXMucXVldWVzLmdldChlbnRyeS5jYXRlZ29yeSk7XG4gICAgaWYgKHF1ZXVlKSB7XG4gICAgICBpZiAocXVldWUuc2l6ZSA+PSBxdWV1ZS5jYXBhY2l0eSkge1xuICAgICAgICB0aGlzLmV2aWN0aW9uQ291bnRzLnNldChcbiAgICAgICAgICBlbnRyeS5jYXRlZ29yeSxcbiAgICAgICAgICAodGhpcy5ldmljdGlvbkNvdW50cy5nZXQoZW50cnkuY2F0ZWdvcnkpID8/IDApICsgMSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHF1ZXVlLnB1c2goZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE5vLW9wIOKAlCBpbi1tZW1vcnksIG5vdGhpbmcgdG8gZmx1c2guXG4gIH1cblxuICBhc3luYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHF1ZXVlIG9mIHRoaXMucXVldWVzLnZhbHVlcygpKSB7XG4gICAgICBxdWV1ZS5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHF1ZXJ5KG9wdGlvbnM/OiBMb2dRdWVyeU9wdGlvbnMpOiBMb2dRdWVyeVJlc3VsdCB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBvcHRpb25zPy5jYXRlZ29yeSA/PyAnYWxsJztcbiAgICBjb25zdCBsaW1pdCA9IE1hdGgubWF4KDEsIE1hdGgubWluKG9wdGlvbnM/LmxpbWl0ID8/IDUwLCAxMDAwMCkpO1xuICAgIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KDAsIG9wdGlvbnM/Lm9mZnNldCA/PyAwKTtcblxuICAgIC8vIDEuIFNlbGVjdCBxdWV1ZXNcbiAgICBjb25zdCBzZWxlY3RlZFF1ZXVlczogRXZpY3RpbmdRdWV1ZTxVbmlmaWVkTG9nRW50cnk+W10gPSBbXTtcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICdhbGwnKSB7XG4gICAgICBmb3IgKGNvbnN0IHEgb2YgdGhpcy5xdWV1ZXMudmFsdWVzKCkpIHtcbiAgICAgICAgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcSA9IHRoaXMucXVldWVzLmdldChjYXRlZ29yeSk7XG4gICAgICBpZiAocSkgc2VsZWN0ZWRRdWV1ZXMucHVzaChxKTtcbiAgICB9XG5cbiAgICAvLyAyLiBDb2xsZWN0IGVudHJpZXMgZnJvbSBzZWxlY3RlZCBxdWV1ZXNcbiAgICBsZXQgZW50cmllczogVW5pZmllZExvZ0VudHJ5W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHEgb2Ygc2VsZWN0ZWRRdWV1ZXMpIHtcbiAgICAgIGVudHJpZXMucHVzaCguLi5xLnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLy8gMy4gQXBwbHkgZmlsdGVycyBjb25qdW5jdGl2ZWx5XG4gICAgaWYgKG9wdGlvbnM/LmxldmVsKSB7XG4gICAgICBjb25zdCBtaW5Qcmlvcml0eSA9IExPR19MRVZFTF9QUklPUklUWVtvcHRpb25zLmxldmVsXTtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IExPR19MRVZFTF9QUklPUklUWVtlLmxldmVsXSA+PSBtaW5Qcmlvcml0eSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5zb3VyY2UpIHtcbiAgICAgIGNvbnN0IG5lZWRsZSA9IG9wdGlvbnMuc291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnNvdXJjZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5lZWRsZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ubWVzc2FnZSkge1xuICAgICAgY29uc3QgbmVlZGxlID0gb3B0aW9ucy5tZXNzYWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZWVkbGUpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnNpbmNlKSB7XG4gICAgICBjb25zdCBzaW5jZSA9IG9wdGlvbnMuc2luY2U7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA+IHNpbmNlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnVudGlsKSB7XG4gICAgICBjb25zdCB1bnRpbCA9IG9wdGlvbnMudW50aWw7XG4gICAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZSA9PiBlLnRpbWVzdGFtcCA8IHVudGlsKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LmNvcnJlbGF0aW9uSWQpIHtcbiAgICAgIGNvbnN0IGNvcnJJZCA9IG9wdGlvbnMuY29ycmVsYXRpb25JZDtcbiAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlID0+IGUuY29ycmVsYXRpb25JZCA9PT0gY29ycklkKTtcbiAgICB9XG5cbiAgICAvLyA0LiBDb3VudCB0b3RhbCBiZWZvcmUgcGFnaW5hdGlvblxuICAgIGNvbnN0IHRvdGFsID0gZW50cmllcy5sZW5ndGg7XG5cbiAgICAvLyA1LiBTb3J0IG5ld2VzdC1maXJzdCAoZGVzY2VuZGluZyB0aW1lc3RhbXApXG4gICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiAoYS50aW1lc3RhbXAgPiBiLnRpbWVzdGFtcCA/IC0xIDogYS50aW1lc3RhbXAgPCBiLnRpbWVzdGFtcCA/IDEgOiAwKSk7XG5cbiAgICAvLyA2LiBQYWdpbmF0ZVxuICAgIGVudHJpZXMgPSBlbnRyaWVzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGltaXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudHJpZXMsXG4gICAgICB0b3RhbCxcbiAgICAgIGhhc01vcmU6IG9mZnNldCArIGxpbWl0IDwgdG90YWwsXG4gICAgICBsaW1pdCxcbiAgICAgIG9mZnNldCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3RhdHMoKTogUmVjb3JkPExvZ0NhdGVnb3J5LCB7IHNpemU6IG51bWJlcjsgY2FwYWNpdHk6IG51bWJlcjsgZXZpY3Rpb25zOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHN0YXRzID0ge30gYXMgUmVjb3JkPExvZ0NhdGVnb3J5LCB7IHNpemU6IG51bWJlcjsgY2FwYWNpdHk6IG51bWJlcjsgZXZpY3Rpb25zOiBudW1iZXIgfT47XG4gICAgZm9yIChjb25zdCBbY2F0ZWdvcnksIHF1ZXVlXSBvZiB0aGlzLnF1ZXVlcykge1xuICAgICAgc3RhdHNbY2F0ZWdvcnldID0ge1xuICAgICAgICBzaXplOiBxdWV1ZS5zaXplLFxuICAgICAgICBjYXBhY2l0eTogcXVldWUuY2FwYWNpdHksXG4gICAgICAgIGV2aWN0aW9uczogdGhpcy5ldmljdGlvbkNvdW50cy5nZXQoY2F0ZWdvcnkpID8/IDAsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdHM7XG4gIH1cbn1cbiJdfQ==
|
package/dist/logging/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logging/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC;IACvC,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAUD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logging/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC;IACvC,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAUD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
|
package/dist/logging/types.js
CHANGED
|
@@ -14,4 +14,4 @@ export const LOG_LEVEL_PRIORITY = {
|
|
|
14
14
|
warn: 2,
|
|
15
15
|
error: 3,
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2luZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUE2QjtJQUMxRCxLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcmUgdHlwZXMgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIFRoZXNlIHR5cGVzIGFyZSBzaGFyZWQgYWNyb3NzIHRoZSBMb2dNYW5hZ2VyLCBhbGwgc2lua3MsIGFuZCBhbGwgZm9ybWF0dGVycy5cbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIGZvciB0aGUgZnVsbCBSRkMuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBMb2cgZW50cnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBMb2dDYXRlZ29yeSA9ICdhcHBsaWNhdGlvbicgfCAnc2VjdXJpdHknIHwgJ3BlcmZvcm1hbmNlJyB8ICd0ZWxlbWV0cnknO1xuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InO1xuXG4vKipcbiAqIE51bWVyaWMgcHJpb3JpdHkgZm9yIGVhY2ggbG9nIGxldmVsIChoaWdoZXIgPSBtb3JlIHNldmVyZSkuXG4gKiBVc2VkIGJ5IExvZ01hbmFnZXIgZm9yIG1pbmltdW0tbGV2ZWwgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgY29uc3QgTE9HX0xFVkVMX1BSSU9SSVRZOiBSZWNvcmQ8TG9nTGV2ZWwsIG51bWJlcj4gPSB7XG4gIGRlYnVnOiAwLFxuICBpbmZvOiAxLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMyxcbn07XG5cbi8qKlxuICogVW5pdmVyc2FsIGxvZyBlbnRyeSBmb3JtYXQgdXNlZCBhY3Jvc3MgYWxsIHNpbmtzLlxuICpcbiAqIC0gYGlkYCBmb3JtYXQ6IGBcIkxPRy17dGltZXN0YW1wfS17Y291bnRlcn1cImBcbiAqIC0gYHRpbWVzdGFtcGA6IElTTyA4NjAxLCBhbHdheXMgVVRDXG4gKiAtIGBlcnJvcmA6IHN0cnVjdHVyZWQg4oCUIG5ldmVyIGEgcmF3IEVycm9yIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaWZpZWRMb2dFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBjYXRlZ29yeTogTG9nQ2F0ZWdvcnk7XG4gIGxldmVsOiBMb2dMZXZlbDtcbiAgc291cmNlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBlcnJvcj86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICB9O1xuICBjb3JyZWxhdGlvbklkPzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNpbmsgJiBmb3JtYXR0ZXIgaW50ZXJmYWNlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBPdXRwdXQgdGFyZ2V0IGZvciBsb2cgZW50cmllcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ1Npbmsge1xuICAvKiogU3luY2hyb25vdXMgd3JpdGUg4oCUIHNpbmtzIGJ1ZmZlciBpbnRlcm5hbGx5IGlmIG5lZWRlZC4gKi9cbiAgd3JpdGUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQ7XG4gIC8qKiBGbHVzaCBhbnkgYnVmZmVyZWQgZGF0YSB0byB0aGUgdW5kZXJseWluZyBzdG9yZS4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIEZsdXNoIGFuZCByZWxlYXNlIHJlc291cmNlcy4gKi9cbiAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFBsdWdnYWJsZSBkaXNrIGZvcm1hdCAocGxhaW4gdGV4dCwgSlNPTkwsIGV0Yy4pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9nRm9ybWF0dGVyIHtcbiAgZm9ybWF0KGVudHJ5OiBVbmlmaWVkTG9nRW50cnkpOiBzdHJpbmc7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgdGhlIGRvdCwgZS5nLiBgJy5sb2cnYCBvciBgJy5qc29ubCdgLiAqL1xuICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29uZmlndXJhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUXVlcnkgdHlwZXMgKHVzZWQgYnkgTWVtb3J5TG9nU2luayBhbmQgUGhhc2UgNSBNQ1AgcXVlcnlfbG9ncyB0b29sKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nUXVlcnlPcHRpb25zIHtcbiAgY2F0ZWdvcnk/OiBMb2dDYXRlZ29yeSB8ICdhbGwnO1xuICBsZXZlbD86IExvZ0xldmVsO1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNpbmNlPzogc3RyaW5nO1xuICB1bnRpbD86IHN0cmluZztcbiAgbGltaXQ/
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2luZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUE2QjtJQUMxRCxLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcmUgdHlwZXMgZm9yIHRoZSBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtLlxuICpcbiAqIFRoZXNlIHR5cGVzIGFyZSBzaGFyZWQgYWNyb3NzIHRoZSBMb2dNYW5hZ2VyLCBhbGwgc2lua3MsIGFuZCBhbGwgZm9ybWF0dGVycy5cbiAqIFNlZSBkb2NzL0xPR0dJTkctREVTSUdOLm1kIGZvciB0aGUgZnVsbCBSRkMuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBMb2cgZW50cnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBMb2dDYXRlZ29yeSA9ICdhcHBsaWNhdGlvbicgfCAnc2VjdXJpdHknIHwgJ3BlcmZvcm1hbmNlJyB8ICd0ZWxlbWV0cnknO1xuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InO1xuXG4vKipcbiAqIE51bWVyaWMgcHJpb3JpdHkgZm9yIGVhY2ggbG9nIGxldmVsIChoaWdoZXIgPSBtb3JlIHNldmVyZSkuXG4gKiBVc2VkIGJ5IExvZ01hbmFnZXIgZm9yIG1pbmltdW0tbGV2ZWwgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgY29uc3QgTE9HX0xFVkVMX1BSSU9SSVRZOiBSZWNvcmQ8TG9nTGV2ZWwsIG51bWJlcj4gPSB7XG4gIGRlYnVnOiAwLFxuICBpbmZvOiAxLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMyxcbn07XG5cbi8qKlxuICogVW5pdmVyc2FsIGxvZyBlbnRyeSBmb3JtYXQgdXNlZCBhY3Jvc3MgYWxsIHNpbmtzLlxuICpcbiAqIC0gYGlkYCBmb3JtYXQ6IGBcIkxPRy17dGltZXN0YW1wfS17Y291bnRlcn1cImBcbiAqIC0gYHRpbWVzdGFtcGA6IElTTyA4NjAxLCBhbHdheXMgVVRDXG4gKiAtIGBlcnJvcmA6IHN0cnVjdHVyZWQg4oCUIG5ldmVyIGEgcmF3IEVycm9yIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaWZpZWRMb2dFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBjYXRlZ29yeTogTG9nQ2F0ZWdvcnk7XG4gIGxldmVsOiBMb2dMZXZlbDtcbiAgc291cmNlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBlcnJvcj86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICB9O1xuICBjb3JyZWxhdGlvbklkPzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNpbmsgJiBmb3JtYXR0ZXIgaW50ZXJmYWNlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBPdXRwdXQgdGFyZ2V0IGZvciBsb2cgZW50cmllcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ1Npbmsge1xuICAvKiogU3luY2hyb25vdXMgd3JpdGUg4oCUIHNpbmtzIGJ1ZmZlciBpbnRlcm5hbGx5IGlmIG5lZWRlZC4gKi9cbiAgd3JpdGUoZW50cnk6IFVuaWZpZWRMb2dFbnRyeSk6IHZvaWQ7XG4gIC8qKiBGbHVzaCBhbnkgYnVmZmVyZWQgZGF0YSB0byB0aGUgdW5kZXJseWluZyBzdG9yZS4gKi9cbiAgZmx1c2goKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIEZsdXNoIGFuZCByZWxlYXNlIHJlc291cmNlcy4gKi9cbiAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIFBsdWdnYWJsZSBkaXNrIGZvcm1hdCAocGxhaW4gdGV4dCwgSlNPTkwsIGV0Yy4pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9nRm9ybWF0dGVyIHtcbiAgZm9ybWF0KGVudHJ5OiBVbmlmaWVkTG9nRW50cnkpOiBzdHJpbmc7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgdGhlIGRvdCwgZS5nLiBgJy5sb2cnYCBvciBgJy5qc29ubCdgLiAqL1xuICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29uZmlndXJhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUXVlcnkgdHlwZXMgKHVzZWQgYnkgTWVtb3J5TG9nU2luayBhbmQgUGhhc2UgNSBNQ1AgcXVlcnlfbG9ncyB0b29sKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nUXVlcnlPcHRpb25zIHtcbiAgY2F0ZWdvcnk/OiBMb2dDYXRlZ29yeSB8ICdhbGwnO1xuICBsZXZlbD86IExvZ0xldmVsO1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNpbmNlPzogc3RyaW5nO1xuICB1bnRpbD86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG4gIG9mZnNldD86IG51bWJlcjtcbiAgY29ycmVsYXRpb25JZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dRdWVyeVJlc3VsdCB7XG4gIGVudHJpZXM6IFVuaWZpZWRMb2dFbnRyeVtdO1xuICB0b3RhbDogbnVtYmVyO1xuICBoYXNNb3JlOiBib29sZWFuO1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb25maWd1cmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFR5cGVkIGNvbmZpZyBmb3IgTG9nTWFuYWdlciwgbWFwcGVkIGZyb20gYERPTExIT1VTRV9MT0dfKmAgZW52IHZhcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ01hbmFnZXJDb25maWcge1xuICBsb2dEaXI6IHN0cmluZztcbiAgbG9nRm9ybWF0OiAndGV4dCcgfCAnanNvbmwnO1xuICByZXRlbnRpb25EYXlzOiBudW1iZXI7XG4gIHNlY3VyaXR5UmV0ZW50aW9uRGF5czogbnVtYmVyO1xuICBmbHVzaEludGVydmFsTXM6IG51bWJlcjtcbiAgYnVmZmVyU2l6ZTogbnVtYmVyO1xuICBtZW1vcnlDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlBcHBDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlTZWN1cml0eUNhcGFjaXR5OiBudW1iZXI7XG4gIG1lbW9yeVBlcmZDYXBhY2l0eTogbnVtYmVyO1xuICBtZW1vcnlUZWxlbWV0cnlDYXBhY2l0eTogbnVtYmVyO1xuICBtYXhFbnRyeVNpemU6IG51bWJlcjtcbiAgaW1tZWRpYXRlRmx1c2hSYXRlOiBudW1iZXI7XG4gIGZpbGVNYXhTaXplOiBudW1iZXI7XG4gIG1heERpclNpemVCeXRlczogbnVtYmVyOyAgICAgICAvLyAwID0gZGlzYWJsZWRcbiAgbWF4RmlsZXNQZXJDYXRlZ29yeTogbnVtYmVyOyAgIC8vIDAgPSBkaXNhYmxlZFxuICBsb2dMZXZlbDogTG9nTGV2ZWw7XG59XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight in-memory accumulator for Gatekeeper policy enforcement metrics.
|
|
3
|
+
*
|
|
4
|
+
* Records allowed/denied/confirmation-pending decisions, policy source
|
|
5
|
+
* distribution, and permission level usage. The companion
|
|
6
|
+
* GatekeeperMetricsCollector reads from this tracker each collection cycle.
|
|
7
|
+
*/
|
|
8
|
+
export interface GatekeeperDecisionRecord {
|
|
9
|
+
allowed: boolean;
|
|
10
|
+
permissionLevel: string;
|
|
11
|
+
policySource?: string;
|
|
12
|
+
confirmationPending?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface GatekeeperMetrics {
|
|
15
|
+
totalDecisions: number;
|
|
16
|
+
allowed: number;
|
|
17
|
+
denied: number;
|
|
18
|
+
confirmationsPending: number;
|
|
19
|
+
byPolicySource: Map<string, number>;
|
|
20
|
+
byPermissionLevel: Map<string, number>;
|
|
21
|
+
}
|
|
22
|
+
export declare class GatekeeperMetricsTracker {
|
|
23
|
+
private totalDecisions;
|
|
24
|
+
private allowed;
|
|
25
|
+
private denied;
|
|
26
|
+
private confirmationsPending;
|
|
27
|
+
private readonly byPolicySource;
|
|
28
|
+
private readonly byPermissionLevel;
|
|
29
|
+
record(decision: GatekeeperDecisionRecord): void;
|
|
30
|
+
getMetrics(): GatekeeperMetrics;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=GatekeeperMetricsTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GatekeeperMetricsTracker.d.ts","sourceRoot":"","sources":["../../src/metrics/GatekeeperMetricsTracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAE/D,MAAM,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAoBhD,UAAU,IAAI,iBAAiB;CAUhC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight in-memory accumulator for Gatekeeper policy enforcement metrics.
|
|
3
|
+
*
|
|
4
|
+
* Records allowed/denied/confirmation-pending decisions, policy source
|
|
5
|
+
* distribution, and permission level usage. The companion
|
|
6
|
+
* GatekeeperMetricsCollector reads from this tracker each collection cycle.
|
|
7
|
+
*/
|
|
8
|
+
export class GatekeeperMetricsTracker {
|
|
9
|
+
totalDecisions = 0;
|
|
10
|
+
allowed = 0;
|
|
11
|
+
denied = 0;
|
|
12
|
+
confirmationsPending = 0;
|
|
13
|
+
byPolicySource = new Map();
|
|
14
|
+
byPermissionLevel = new Map();
|
|
15
|
+
record(decision) {
|
|
16
|
+
this.totalDecisions++;
|
|
17
|
+
if (decision.allowed) {
|
|
18
|
+
this.allowed++;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.denied++;
|
|
22
|
+
}
|
|
23
|
+
if (decision.confirmationPending) {
|
|
24
|
+
this.confirmationsPending++;
|
|
25
|
+
}
|
|
26
|
+
const source = decision.policySource ?? 'unknown';
|
|
27
|
+
this.byPolicySource.set(source, (this.byPolicySource.get(source) ?? 0) + 1);
|
|
28
|
+
const level = decision.permissionLevel;
|
|
29
|
+
this.byPermissionLevel.set(level, (this.byPermissionLevel.get(level) ?? 0) + 1);
|
|
30
|
+
}
|
|
31
|
+
getMetrics() {
|
|
32
|
+
return {
|
|
33
|
+
totalDecisions: this.totalDecisions,
|
|
34
|
+
allowed: this.allowed,
|
|
35
|
+
denied: this.denied,
|
|
36
|
+
confirmationsPending: this.confirmationsPending,
|
|
37
|
+
byPolicySource: new Map(this.byPolicySource),
|
|
38
|
+
byPermissionLevel: new Map(this.byPermissionLevel),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQWtCSCxNQUFNLE9BQU8sd0JBQXdCO0lBQzNCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFDaEIsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQzNDLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRS9ELE1BQU0sQ0FBQyxRQUFrQztRQUN2QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU1RSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU87WUFDTCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQy9DLGNBQWMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzVDLGlCQUFpQixFQUFFLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUNuRCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMaWdodHdlaWdodCBpbi1tZW1vcnkgYWNjdW11bGF0b3IgZm9yIEdhdGVrZWVwZXIgcG9saWN5IGVuZm9yY2VtZW50IG1ldHJpY3MuXG4gKlxuICogUmVjb3JkcyBhbGxvd2VkL2RlbmllZC9jb25maXJtYXRpb24tcGVuZGluZyBkZWNpc2lvbnMsIHBvbGljeSBzb3VyY2VcbiAqIGRpc3RyaWJ1dGlvbiwgYW5kIHBlcm1pc3Npb24gbGV2ZWwgdXNhZ2UuIFRoZSBjb21wYW5pb25cbiAqIEdhdGVrZWVwZXJNZXRyaWNzQ29sbGVjdG9yIHJlYWRzIGZyb20gdGhpcyB0cmFja2VyIGVhY2ggY29sbGVjdGlvbiBjeWNsZS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEdhdGVrZWVwZXJEZWNpc2lvblJlY29yZCB7XG4gIGFsbG93ZWQ6IGJvb2xlYW47XG4gIHBlcm1pc3Npb25MZXZlbDogc3RyaW5nO1xuICBwb2xpY3lTb3VyY2U/OiBzdHJpbmc7XG4gIGNvbmZpcm1hdGlvblBlbmRpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhdGVrZWVwZXJNZXRyaWNzIHtcbiAgdG90YWxEZWNpc2lvbnM6IG51bWJlcjtcbiAgYWxsb3dlZDogbnVtYmVyO1xuICBkZW5pZWQ6IG51bWJlcjtcbiAgY29uZmlybWF0aW9uc1BlbmRpbmc6IG51bWJlcjtcbiAgYnlQb2xpY3lTb3VyY2U6IE1hcDxzdHJpbmcsIG51bWJlcj47XG4gIGJ5UGVybWlzc2lvbkxldmVsOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xufVxuXG5leHBvcnQgY2xhc3MgR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyIHtcbiAgcHJpdmF0ZSB0b3RhbERlY2lzaW9ucyA9IDA7XG4gIHByaXZhdGUgYWxsb3dlZCA9IDA7XG4gIHByaXZhdGUgZGVuaWVkID0gMDtcbiAgcHJpdmF0ZSBjb25maXJtYXRpb25zUGVuZGluZyA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnlQb2xpY3lTb3VyY2UgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ5UGVybWlzc2lvbkxldmVsID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICByZWNvcmQoZGVjaXNpb246IEdhdGVrZWVwZXJEZWNpc2lvblJlY29yZCk6IHZvaWQge1xuICAgIHRoaXMudG90YWxEZWNpc2lvbnMrKztcblxuICAgIGlmIChkZWNpc2lvbi5hbGxvd2VkKSB7XG4gICAgICB0aGlzLmFsbG93ZWQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZW5pZWQrKztcbiAgICB9XG5cbiAgICBpZiAoZGVjaXNpb24uY29uZmlybWF0aW9uUGVuZGluZykge1xuICAgICAgdGhpcy5jb25maXJtYXRpb25zUGVuZGluZysrO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZSA9IGRlY2lzaW9uLnBvbGljeVNvdXJjZSA/PyAndW5rbm93bic7XG4gICAgdGhpcy5ieVBvbGljeVNvdXJjZS5zZXQoc291cmNlLCAodGhpcy5ieVBvbGljeVNvdXJjZS5nZXQoc291cmNlKSA/PyAwKSArIDEpO1xuXG4gICAgY29uc3QgbGV2ZWwgPSBkZWNpc2lvbi5wZXJtaXNzaW9uTGV2ZWw7XG4gICAgdGhpcy5ieVBlcm1pc3Npb25MZXZlbC5zZXQobGV2ZWwsICh0aGlzLmJ5UGVybWlzc2lvbkxldmVsLmdldChsZXZlbCkgPz8gMCkgKyAxKTtcbiAgfVxuXG4gIGdldE1ldHJpY3MoKTogR2F0ZWtlZXBlck1ldHJpY3Mge1xuICAgIHJldHVybiB7XG4gICAgICB0b3RhbERlY2lzaW9uczogdGhpcy50b3RhbERlY2lzaW9ucyxcbiAgICAgIGFsbG93ZWQ6IHRoaXMuYWxsb3dlZCxcbiAgICAgIGRlbmllZDogdGhpcy5kZW5pZWQsXG4gICAgICBjb25maXJtYXRpb25zUGVuZGluZzogdGhpcy5jb25maXJtYXRpb25zUGVuZGluZyxcbiAgICAgIGJ5UG9saWN5U291cmNlOiBuZXcgTWFwKHRoaXMuYnlQb2xpY3lTb3VyY2UpLFxuICAgICAgYnlQZXJtaXNzaW9uTGV2ZWw6IG5ldyBNYXAodGhpcy5ieVBlcm1pc3Npb25MZXZlbCksXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central coordinator for the Metrics Collection System.
|
|
3
|
+
*
|
|
4
|
+
* Registers collectors and sinks, runs periodic collection cycles,
|
|
5
|
+
* assembles immutable MetricSnapshot objects, and dispatches them
|
|
6
|
+
* to all registered sinks.
|
|
7
|
+
*/
|
|
8
|
+
import type { ILogger } from '../types/ILogger.js';
|
|
9
|
+
import type { IMetricCollector, IMetricsSink, MetricSnapshot, MetricsManagerConfig } from './types.js';
|
|
10
|
+
export declare class MetricsManager {
|
|
11
|
+
private readonly collectors;
|
|
12
|
+
private readonly sinks;
|
|
13
|
+
private readonly config;
|
|
14
|
+
private readonly logger;
|
|
15
|
+
private timer;
|
|
16
|
+
private snapshotCounter;
|
|
17
|
+
private collectionsCompleted;
|
|
18
|
+
private collectorErrorsTotal;
|
|
19
|
+
private sinkErrorsTotal;
|
|
20
|
+
private lastCollectionDurationMs;
|
|
21
|
+
private closed;
|
|
22
|
+
private readonly processStartTime;
|
|
23
|
+
constructor(config: MetricsManagerConfig, logger: ILogger);
|
|
24
|
+
registerCollector(collector: IMetricCollector): void;
|
|
25
|
+
registerSink(sink: IMetricsSink): void;
|
|
26
|
+
start(): void;
|
|
27
|
+
collectNow(): Promise<MetricSnapshot>;
|
|
28
|
+
private collectFromCollectors;
|
|
29
|
+
private warnIfOversized;
|
|
30
|
+
private warnIfSlow;
|
|
31
|
+
private deepFreezeSnapshot;
|
|
32
|
+
private dispatchToSinks;
|
|
33
|
+
close(): Promise<void>;
|
|
34
|
+
getManagerStats(): {
|
|
35
|
+
collectionsCompleted: number;
|
|
36
|
+
collectorErrorsTotal: number;
|
|
37
|
+
sinkErrorsTotal: number;
|
|
38
|
+
lastCollectionDurationMs: number;
|
|
39
|
+
collectorsRegistered: number;
|
|
40
|
+
sinksRegistered: number;
|
|
41
|
+
disabledCollectors: number;
|
|
42
|
+
processStartTime: string;
|
|
43
|
+
};
|
|
44
|
+
private assertOpen;
|
|
45
|
+
private buildSelfMonitoringMetrics;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=MetricsManager.d.ts.map
|