@wavemaker/app-ng-runtime 11.14.0-rc.6276 → 11.14.1-3.6306

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/components/base/bundles/index.umd.js +89 -17
  2. package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
  3. package/components/base/esm2022/utils/widget-utils.mjs +5 -3
  4. package/components/base/esm2022/widgets/common/base/base.component.mjs +68 -7
  5. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +7 -3
  6. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
  7. package/components/base/fesm2022/index.mjs +90 -18
  8. package/components/base/fesm2022/index.mjs.map +1 -1
  9. package/components/base/pipes/custom-pipes.d.ts +5 -5
  10. package/components/basic/label/bundles/index.umd.js +9 -1
  11. package/components/basic/label/esm2022/label.directive.mjs +10 -2
  12. package/components/basic/label/fesm2022/index.mjs +9 -1
  13. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  14. package/components/data/table/bundles/index.umd.js +218 -11
  15. package/components/data/table/esm2022/table.component.mjs +219 -12
  16. package/components/data/table/fesm2022/index.mjs +218 -11
  17. package/components/data/table/fesm2022/index.mjs.map +1 -1
  18. package/components/data/table/table.component.d.ts +6 -2
  19. package/components/dialogs/default/bundles/index.umd.js +21 -18
  20. package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +4 -1
  21. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +13 -10
  22. package/components/dialogs/default/fesm2022/index.mjs +9 -6
  23. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  24. package/components/navigation/menu/bundles/index.umd.js +5 -0
  25. package/components/navigation/menu/esm2022/menu.component.mjs +6 -1
  26. package/components/navigation/menu/fesm2022/index.mjs +5 -0
  27. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  28. package/components/navigation/popover/bundles/index.umd.js +6 -6
  29. package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
  30. package/components/navigation/popover/fesm2022/index.mjs +3 -3
  31. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  32. package/components/navigation/popover/popover.component.d.ts +6 -0
  33. package/core/bundles/index.umd.js +332 -82
  34. package/core/esm2022/public_api.mjs +3 -3
  35. package/core/esm2022/types/types.mjs +1 -1
  36. package/core/esm2022/utils/utils.mjs +6 -2
  37. package/core/esm2022/utils/watcher.mjs +323 -81
  38. package/core/fesm2022/index.mjs +331 -84
  39. package/core/fesm2022/index.mjs.map +1 -1
  40. package/core/public_api.d.ts +2 -2
  41. package/core/types/types.d.ts +1 -0
  42. package/core/utils/utils.d.ts +1 -0
  43. package/core/utils/watcher.d.ts +26 -5
  44. package/npm-shrinkwrap.json +2 -2
  45. package/package-lock.json +2 -2
  46. package/package.json +1 -1
  47. package/runtime/base/bundles/index.umd.js +38 -2
  48. package/runtime/base/esm2022/components/app-component/app.component.mjs +7 -2
  49. package/runtime/base/esm2022/components/base-page.component.mjs +9 -2
  50. package/runtime/base/esm2022/components/base-partial.component.mjs +10 -2
  51. package/runtime/base/esm2022/components/base-prefab.component.mjs +10 -2
  52. package/runtime/base/esm2022/components/base-spa-page.component.mjs +9 -2
  53. package/runtime/base/esm2022/services/app.service.mjs +2 -1
  54. package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
  55. package/runtime/base/fesm2022/index.mjs +39 -3
  56. package/runtime/base/fesm2022/index.mjs.map +1 -1
  57. package/runtime/base/services/app.service.d.ts +1 -0
  58. package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  59. package/scripts/datatable/datatable.js +19 -2
  60. package/transpiler/bundles/index.umd.js +1 -1
  61. package/transpiler/esm2022/imports.mjs +2 -2
  62. package/transpiler/fesm2022/index.mjs +1 -1
  63. package/transpiler/fesm2022/index.mjs.map +1 -1
@@ -1450,11 +1450,11 @@
1450
1450
  }
1451
1451
  };
1452
1452
 
1453
- const $RAF$1 = window.requestAnimationFrame;
1453
+ const $RAF = window.requestAnimationFrame;
1454
1454
  const $RAFQueue = [];
1455
1455
  const invokeLater = fn => {
1456
1456
  if (!$RAFQueue.length) {
1457
- $RAF$1(() => {
1457
+ $RAF(() => {
1458
1458
  $RAFQueue.forEach(f => f());
1459
1459
  $RAFQueue.length = 0;
1460
1460
  });
@@ -2191,14 +2191,25 @@
2191
2191
  return fnExecutor(expr, ExpressionType.Action);
2192
2192
  };
2193
2193
 
2194
+ // Constants
2195
+ const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
2196
+ const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
2197
+ const ARRAY_INDEX_PLACEHOLDER = '[$i]';
2198
+ const ARRAY_INDEX_ZERO = '[0]';
2199
+ const DEBOUNCE_WAIT = 100;
2200
+ const MAX_WATCH_CYCLES = 5;
2194
2201
  const registry = new Map();
2195
2202
  const watchIdGenerator = new IDGenerator('watch-id-');
2196
- const FIRST_TIME_WATCH = {};
2197
- Object.freeze(FIRST_TIME_WATCH);
2198
- const isFirstTimeChange = v => v === FIRST_TIME_WATCH;
2203
+ const FIRST_TIME_WATCH = Object.freeze({});
2204
+ // State
2199
2205
  let muted = false;
2206
+ let changedByWatch = false;
2207
+ let skipWatchers = false;
2208
+ let ngZone;
2200
2209
  let appRef;
2201
- const debounce = (fn, wait = 50) => {
2210
+ // Utility functions
2211
+ const isFirstTimeChange = (v) => v === FIRST_TIME_WATCH;
2212
+ const debounce = (fn, wait = DEBOUNCE_WAIT) => {
2202
2213
  let timeout;
2203
2214
  return (...args) => {
2204
2215
  window['__zone_symbol__clearTimeout'](timeout);
@@ -2212,115 +2223,345 @@
2212
2223
  muted = false;
2213
2224
  triggerWatchers();
2214
2225
  };
2226
+ /**
2227
+ * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
2228
+ */
2229
+ const getWidgetId = (identifier) => {
2230
+ if (!identifier || typeof identifier !== 'string') {
2231
+ return null;
2232
+ }
2233
+ const match = identifier.match(WIDGET_ID_REGEX);
2234
+ return match ? match[1] : null;
2235
+ };
2236
+ /**
2237
+ * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
2238
+ */
2239
+ const getPropertyName = (identifier) => {
2240
+ if (!identifier || typeof identifier !== 'string') {
2241
+ return identifier;
2242
+ }
2243
+ const match = identifier.match(WIDGET_PROPERTY_REGEX);
2244
+ return match ? match[1] : identifier;
2245
+ };
2246
+ /**
2247
+ * Array consumer wrapper for array-based expressions
2248
+ */
2215
2249
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
2216
- let data = newVal, formattedData;
2217
- if (lodashEs.isArray(data)) {
2218
- formattedData = data.map(function (datum) {
2219
- return findValueOf(datum, restExpr);
2220
- });
2221
- // If resulting structure is an array of array, flatten it
2222
- if (lodashEs.isArray(formattedData[0])) {
2223
- formattedData = lodashEs.flatten(formattedData);
2224
- }
2225
- listenerFn(formattedData, oldVal);
2250
+ if (!lodashEs.isArray(newVal)) {
2251
+ return;
2226
2252
  }
2253
+ let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
2254
+ // Flatten if result is array of arrays
2255
+ if (lodashEs.isArray(formattedData[0])) {
2256
+ formattedData = lodashEs.flatten(formattedData);
2257
+ }
2258
+ listenerFn(formattedData, oldVal);
2227
2259
  };
2228
- const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
2229
- // listener doesn't accept array
2230
- // replace all `[$i]` with `[0]` and return the expression
2231
- let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
2260
+ /**
2261
+ * Updates watch info for array expressions
2262
+ */
2263
+ const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
2264
+ const regex = /\[\$i\]/g;
2232
2265
  if (!acceptsArray) {
2233
2266
  return {
2234
- 'expr': expr.replace(regex, $0),
2235
- 'listener': listener
2267
+ expr: expr.replace(regex, ARRAY_INDEX_ZERO),
2268
+ listener
2236
2269
  };
2237
2270
  }
2238
- // listener accepts array
2239
- // replace all except the last `[$i]` with `[0]` and return the expression.
2240
- var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
2241
- if (restExpr) {
2242
- arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
2243
- }
2271
+ const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
2272
+ const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
2273
+ const restExpr = expr.substring(lastIndex + ARRAY_INDEX_PLACEHOLDER.length);
2274
+ const arrayConsumerFn = restExpr
2275
+ ? arrayConsumer.bind(undefined, listener, restExpr)
2276
+ : listener;
2244
2277
  return {
2245
- 'expr': _expr,
2246
- 'listener': arrayConsumerFn
2278
+ expr: baseExpr,
2279
+ listener: arrayConsumerFn
2247
2280
  };
2248
2281
  };
2282
+ /**
2283
+ * Determines if an expression is static (doesn't need to be watched)
2284
+ */
2285
+ const STATIC_EXPRESSION_NAMES = [
2286
+ "row.getProperty('investment')",
2287
+ "row.getProperty('factsheetLink')",
2288
+ "row.getProperty('isRebalanceEligible')"
2289
+ ];
2290
+ const isStaticExpression = (expr) => {
2291
+ if (typeof expr !== 'string') {
2292
+ return false;
2293
+ }
2294
+ const trimmedExpr = expr.trim();
2295
+ // Expressions that always evaluate to localization strings
2296
+ if (trimmedExpr.includes('appLocale')) {
2297
+ return true;
2298
+ }
2299
+ // Hard-coded static expression names
2300
+ if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
2301
+ return true;
2302
+ }
2303
+ return false;
2304
+ };
2305
+ /**
2306
+ * Gets the scope type from the scope object
2307
+ */
2308
+ const getScopeType = ($scope) => {
2309
+ if (!$scope) {
2310
+ return null;
2311
+ }
2312
+ if ($scope.pageName)
2313
+ return 'Page';
2314
+ if ($scope.prefabName)
2315
+ return 'Prefab';
2316
+ if ($scope.partialName)
2317
+ return 'Partial';
2318
+ // Check for App scope
2319
+ if ($scope.Variables !== undefined &&
2320
+ $scope.Actions !== undefined &&
2321
+ !$scope.pageName &&
2322
+ !$scope.prefabName &&
2323
+ !$scope.partialName) {
2324
+ return 'App';
2325
+ }
2326
+ if ($scope.constructor?.name === 'AppRef') {
2327
+ return 'App';
2328
+ }
2329
+ return null;
2330
+ };
2331
+ /**
2332
+ * Gets scope name based on scope type
2333
+ */
2334
+ const getScopeName = ($scope, scopeType) => {
2335
+ if (!scopeType || !$scope) {
2336
+ return null;
2337
+ }
2338
+ switch (scopeType) {
2339
+ case 'Prefab': return $scope.prefabName || null;
2340
+ case 'Partial': return $scope.partialName || null;
2341
+ case 'Page': return $scope.pageName || null;
2342
+ default: return null;
2343
+ }
2344
+ };
2345
+ /**
2346
+ * Main watch function
2347
+ */
2249
2348
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
2250
- if (expr.indexOf('[$i]') !== -1) {
2251
- let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
2349
+ // Handle array expressions
2350
+ if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
2351
+ const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
2252
2352
  expr = watchInfo.expr;
2253
2353
  listener = watchInfo.listener;
2254
2354
  }
2355
+ // Handle static expressions
2356
+ if (isStaticExpression(expr)) {
2357
+ try {
2358
+ const fn = $parseExpr(expr);
2359
+ const staticValue = fn($scope, $locals);
2360
+ listener(staticValue, FIRST_TIME_WATCH);
2361
+ }
2362
+ catch (e) {
2363
+ console.warn(`Error evaluating static expression '${expr}':`, e);
2364
+ listener(undefined, FIRST_TIME_WATCH);
2365
+ }
2366
+ return () => { }; // No-op unsubscribe
2367
+ }
2255
2368
  const fn = $parseExpr(expr);
2256
- registry.set(identifier, {
2257
- fn: fn.bind(expr, $scope, $locals),
2369
+ const scopeType = getScopeType($scope);
2370
+ const scopeName = getScopeName($scope, scopeType);
2371
+ const watchInfo = {
2372
+ fn: fn.bind(null, $scope, $locals),
2258
2373
  listener,
2259
2374
  expr,
2260
2375
  last: FIRST_TIME_WATCH,
2261
2376
  doNotClone,
2262
- isMuted: isMuted
2263
- });
2377
+ isMuted,
2378
+ scopeType,
2379
+ scopeName
2380
+ };
2381
+ // Store in registry
2382
+ const widgetId = getWidgetId(identifier);
2383
+ if (widgetId) {
2384
+ const propertyName = getPropertyName(identifier);
2385
+ if (!registry.has(widgetId)) {
2386
+ registry.set(widgetId, {});
2387
+ }
2388
+ const widgetGroup = registry.get(widgetId);
2389
+ widgetGroup[propertyName] = watchInfo;
2390
+ }
2391
+ else {
2392
+ registry.set(identifier, watchInfo);
2393
+ }
2264
2394
  return () => $unwatch(identifier);
2265
2395
  };
2266
- const $unwatch = identifier => registry.delete(identifier);
2267
- let changedByWatch = false;
2268
- const $RAF = window.requestAnimationFrame;
2269
- let ngZone;
2270
- const triggerWatchers = (ignoreMuted) => {
2396
+ /**
2397
+ * Unwatches a single identifier
2398
+ */
2399
+ const $unwatch = (identifier) => {
2400
+ const widgetId = getWidgetId(identifier);
2401
+ if (widgetId) {
2402
+ const propertyName = getPropertyName(identifier);
2403
+ const widgetGroup = registry.get(widgetId);
2404
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2405
+ const watchInfo = widgetGroup[propertyName];
2406
+ if (watchInfo) {
2407
+ delete widgetGroup[propertyName];
2408
+ // Clean up empty widget groups
2409
+ if (Object.keys(widgetGroup).length === 0) {
2410
+ registry.delete(widgetId);
2411
+ }
2412
+ return true;
2413
+ }
2414
+ }
2415
+ }
2416
+ // Fallback to direct lookup
2417
+ if (registry.has(identifier)) {
2418
+ registry.delete(identifier);
2419
+ return true;
2420
+ }
2421
+ return false;
2422
+ };
2423
+ /**
2424
+ * Unwatches all watchers for a specific widget ID
2425
+ */
2426
+ const $unwatchAll = (widgetId) => {
2427
+ if (!widgetId || typeof widgetId !== 'string') {
2428
+ return 0;
2429
+ }
2430
+ const widgetGroup = registry.get(widgetId);
2431
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2432
+ const count = Object.keys(widgetGroup).length;
2433
+ registry.delete(widgetId);
2434
+ return count;
2435
+ }
2436
+ // Fallback: find all identifiers starting with this widget ID
2437
+ let removedCount = 0;
2438
+ const identifiersToRemove = [];
2439
+ registry.forEach((_, key) => {
2440
+ if (key.startsWith(widgetId + '_')) {
2441
+ identifiersToRemove.push(key);
2442
+ }
2443
+ });
2444
+ identifiersToRemove.forEach(identifier => {
2445
+ if ($unwatch(identifier)) {
2446
+ removedCount++;
2447
+ }
2448
+ });
2449
+ return removedCount;
2450
+ };
2451
+ /**
2452
+ * Unwatches all watchers for a specific scope (Page, Prefab, Partial, or App)
2453
+ * Now works directly with the main registry instead of separate scoped registries
2454
+ */
2455
+ const $unwatchAllByScope = (scopeType, scopeName) => {
2456
+ if (!scopeType) {
2457
+ return 0;
2458
+ }
2459
+ let removedCount = 0;
2460
+ const identifiersToRemove = [];
2461
+ registry.forEach((value, key) => {
2462
+ // Handle grouped structure (widget groups)
2463
+ if (value && typeof value === 'object' && !value.fn) {
2464
+ Object.entries(value).forEach(([propertyName, watchInfo]) => {
2465
+ if (watchInfo?.scopeType === scopeType &&
2466
+ (!scopeName || watchInfo.scopeName === scopeName)) {
2467
+ identifiersToRemove.push(`${key}_${propertyName}`);
2468
+ }
2469
+ });
2470
+ }
2471
+ else {
2472
+ // Direct watchInfo
2473
+ const watchInfo = value;
2474
+ if (watchInfo?.scopeType === scopeType &&
2475
+ (!scopeName || watchInfo.scopeName === scopeName)) {
2476
+ identifiersToRemove.push(key);
2477
+ }
2478
+ }
2479
+ });
2480
+ // Unwatch all collected identifiers
2481
+ identifiersToRemove.forEach(identifier => {
2482
+ if ($unwatch(identifier)) {
2483
+ removedCount++;
2484
+ }
2485
+ });
2486
+ return removedCount;
2487
+ };
2488
+ /**
2489
+ * Processes a single watch info during trigger cycle
2490
+ */
2491
+ const processWatchInfo = (watchInfo) => {
2492
+ if (!watchInfo?.fn || (watchInfo.isMuted?.() ?? false)) {
2493
+ return false;
2494
+ }
2495
+ let newValue;
2496
+ try {
2497
+ newValue = watchInfo.fn();
2498
+ }
2499
+ catch (e) {
2500
+ console.warn(`Error executing expression: '${watchInfo.expr}'`, e);
2501
+ return false;
2502
+ }
2503
+ if (lodashEs.isEqual(newValue, watchInfo.last)) {
2504
+ return false;
2505
+ }
2506
+ // Change detected
2507
+ changedByWatch = true;
2508
+ watchInfo.last = lodashEs.isObject(newValue) && !watchInfo.doNotClone
2509
+ ? lodashEs.clone(newValue)
2510
+ : newValue;
2511
+ watchInfo.listener(newValue, watchInfo.last === newValue ? FIRST_TIME_WATCH : watchInfo.last);
2512
+ changedByWatch = false;
2513
+ return true;
2514
+ };
2515
+ /**
2516
+ * Triggers all watchers
2517
+ */
2518
+ const triggerWatchers = (ignoreMuted = false) => {
2271
2519
  if (muted && !ignoreMuted) {
2272
2520
  return;
2273
2521
  }
2274
- const limit = 5;
2275
2522
  let pass = 1;
2276
2523
  let changeDetected;
2277
2524
  do {
2278
2525
  changeDetected = false;
2279
- registry.forEach(watchInfo => {
2280
- if (watchInfo.isMuted && watchInfo.isMuted()) {
2281
- return;
2282
- }
2283
- const fn = watchInfo.fn;
2284
- const listener = watchInfo.listener;
2285
- const ov = watchInfo.last;
2286
- let nv;
2287
- try {
2288
- nv = fn();
2289
- }
2290
- catch (e) {
2291
- console.warn(`error in executing expression: '${watchInfo.expr}'`);
2526
+ registry.forEach((value) => {
2527
+ // Handle grouped structure
2528
+ if (value && typeof value === 'object' && !value.fn) {
2529
+ Object.values(value).forEach((watchInfo) => {
2530
+ if (processWatchInfo(watchInfo)) {
2531
+ changeDetected = true;
2532
+ }
2533
+ });
2292
2534
  }
2293
- if (!lodashEs.isEqual(nv, ov)) {
2294
- changeDetected = true;
2295
- changedByWatch = true;
2296
- watchInfo.last = nv;
2297
- // @ts-ignore
2298
- if (lodashEs.isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
2299
- watchInfo.last = lodashEs.clone(nv);
2535
+ else {
2536
+ // Direct watchInfo
2537
+ if (processWatchInfo(value)) {
2538
+ changeDetected = true;
2300
2539
  }
2301
- listener(nv, ov);
2302
- resetChangeFromWatch();
2303
2540
  }
2304
2541
  });
2305
2542
  pass++;
2306
- } while (changeDetected && pass < limit);
2307
- if (changeDetected && pass === limit) {
2308
- console.warn(`Number of watch cycles gone above set limit of: ${limit} `);
2543
+ } while (changeDetected && pass < MAX_WATCH_CYCLES);
2544
+ if (changeDetected && pass === MAX_WATCH_CYCLES) {
2545
+ console.warn(`Watch cycles exceeded limit of ${MAX_WATCH_CYCLES}`);
2309
2546
  }
2310
2547
  };
2311
- const setNgZone = zone => ngZone = zone;
2312
- const setAppRef = ref => {
2548
+ // Angular zone integration
2549
+ const setNgZone = (zone) => {
2550
+ ngZone = zone;
2551
+ };
2552
+ const setAppRef = (ref) => {
2313
2553
  appRef = ref;
2314
2554
  };
2315
2555
  const isChangeFromWatch = () => changedByWatch;
2316
- const resetChangeFromWatch = () => changedByWatch = false;
2317
- window.watchRegistry = registry;
2318
- let skipWatchers;
2556
+ const resetChangeFromWatch = () => {
2557
+ changedByWatch = false;
2558
+ };
2559
+ // Debounced trigger
2319
2560
  const debouncedTriggerWatchers = debounce(() => {
2320
2561
  skipWatchers = true;
2321
2562
  ngZone.run(() => triggerWatchers());
2322
- }, 100);
2323
- const $invokeWatchers = (force, ignoreMuted) => {
2563
+ }, DEBOUNCE_WAIT);
2564
+ const $invokeWatchers = (force = false, ignoreMuted = false) => {
2324
2565
  if (force) {
2325
2566
  triggerWatchers(ignoreMuted);
2326
2567
  }
@@ -2334,7 +2575,8 @@
2334
2575
  };
2335
2576
  const $appDigest = (() => {
2336
2577
  let queued = false;
2337
- return (force) => {
2578
+ const $RAF = window.requestAnimationFrame;
2579
+ return (force = false) => {
2338
2580
  if (!appRef) {
2339
2581
  return;
2340
2582
  }
@@ -2346,16 +2588,16 @@
2346
2588
  if (queued) {
2347
2589
  return;
2348
2590
  }
2349
- else {
2350
- queued = true;
2351
- $RAF(() => {
2352
- ngZone.run(() => appRef.tick());
2353
- queued = false;
2354
- });
2355
- }
2591
+ queued = true;
2592
+ $RAF(() => {
2593
+ ngZone.run(() => appRef.tick());
2594
+ queued = false;
2595
+ });
2356
2596
  }
2357
2597
  };
2358
2598
  })();
2599
+ // Export registry for debugging
2600
+ // (window as any).watchRegistry = registry;
2359
2601
 
2360
2602
  exports.ComponentType = void 0;
2361
2603
  (function (ComponentType) {
@@ -2452,6 +2694,7 @@
2452
2694
  SUPPORTED_AUDIO_FORMAT: /\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,
2453
2695
  SUPPORTED_VIDEO_FORMAT: /\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,
2454
2696
  VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
2697
+ VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
2455
2698
  REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
2456
2699
  DATA_URL: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i,
2457
2700
  ISO_DATE_FORMAT: /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/
@@ -2674,6 +2917,9 @@
2674
2917
  const isValidWebURL = (url) => {
2675
2918
  return (REGEX.VALID_WEB_URL).test(url);
2676
2919
  };
2920
+ const isValidImageUrl = (url) => {
2921
+ return (REGEX.VALID_IMAGE_URL).test(url?.trim());
2922
+ };
2677
2923
  /*This function returns the url to the resource after checking the validity of url*/
2678
2924
  const getResourceURL = (urlString) => {
2679
2925
  return urlString;
@@ -3927,6 +4173,7 @@
3927
4173
  isPageable: isPageable,
3928
4174
  isSafari: isSafari,
3929
4175
  isTablet: isTablet,
4176
+ isValidImageUrl: isValidImageUrl,
3930
4177
  isValidWebURL: isValidWebURL,
3931
4178
  isVideoFile: isVideoFile,
3932
4179
  loadScript: loadScript,
@@ -5159,6 +5406,8 @@
5159
5406
  exports.$parseEvent = $parseEvent;
5160
5407
  exports.$parseExpr = $parseExpr;
5161
5408
  exports.$unwatch = $unwatch;
5409
+ exports.$unwatchAll = $unwatchAll;
5410
+ exports.$unwatchAllByScope = $unwatchAllByScope;
5162
5411
  exports.$watch = $watch;
5163
5412
  exports.AbstractDialogService = AbstractDialogService;
5164
5413
  exports.AbstractHttpService = AbstractHttpService;
@@ -5282,6 +5531,7 @@
5282
5531
  exports.isObject = isObject;
5283
5532
  exports.isPageable = isPageable;
5284
5533
  exports.isSafari = isSafari;
5534
+ exports.isValidImageUrl = isValidImageUrl;
5285
5535
  exports.isValidWebURL = isValidWebURL;
5286
5536
  exports.isVideoFile = isVideoFile;
5287
5537
  exports.loadScript = loadScript;
@@ -7,8 +7,8 @@ export { appendNode, insertBefore, insertAfter, removeNode, removeClass, addClas
7
7
  export * from './enums/enums';
8
8
  export * from './utils/event-notifier';
9
9
  export { $parseExpr, $parseEvent, registerFnByExpr, setPipeProvider, getFnByExpr, getFnForBindExpr, getFnForEventExpr } from './utils/expression-parser';
10
- export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isSafari, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent, getNavClass, getSheetPositionClass } from './utils/utils';
11
- export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
10
+ export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isSafari, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidImageUrl, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent, getNavClass, getSheetPositionClass } from './utils/utils';
11
+ export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, $unwatchAll, $unwatchAllByScope, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
12
12
  export * from './utils/id-generator';
13
13
  export * from './types/types';
14
14
  export { Viewport } from './services/viewport.service';
@@ -23,4 +23,4 @@ export { StatePersistence } from './services/state-persistence.service';
23
23
  export { PaginationService } from './services/pagination.service';
24
24
  export * from './utils/wm-project-properties';
25
25
  export * from './utils/lru-cache';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBQ2QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsUUFBUSxFQUNSLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLElBQUksRUFDSixhQUFhLEVBQ2IsWUFBWSxFQUNaLFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFDWixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxLQUFLLEVBQ0wsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsWUFBWSxFQUNaLGFBQWEsRUFDYixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLHFCQUFxQixFQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDZCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYnVpbGQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvY3VycmVuY3ktY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgYXBwZW5kTm9kZSxcbiAgICBpbnNlcnRCZWZvcmUsXG4gICAgaW5zZXJ0QWZ0ZXIsXG4gICAgcmVtb3ZlTm9kZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBhZGRDbGFzcyxcbiAgICBzd2l0Y2hDbGFzcyxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzZXRQcm9wZXJ0eSxcbiAgICBzZXRBdHRyLFxuICAgIHNldEh0bWwsXG4gICAgcmVtb3ZlQXR0cixcbiAgICBjcmVhdGVFbGVtZW50LFxuICAgIHRvRGltZW5zaW9uXG59IGZyb20gJy4vdXRpbHMvZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9ldmVudC1ub3RpZmllcic7XG5leHBvcnQge1xuICAgIFBhcnNlRXhwclJlc3VsdCxcbiAgICAkcGFyc2VFeHByLFxuICAgICRwYXJzZUV2ZW50LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgc2V0UGlwZVByb3ZpZGVyLFxuICAgIGdldEZuQnlFeHByLFxuICAgIGdldEZuRm9yQmluZEV4cHIsXG4gICAgZ2V0Rm5Gb3JFdmVudEV4cHJcbn0gZnJvbSAnLi91dGlscy9leHByZXNzaW9uLXBhcnNlcic7XG5leHBvcnQge1xuICAgIEVWRU5UX0xJRkUsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzT2JqZWN0LFxuICAgIHRvQm9vbGVhbixcbiAgICBpc0lFLFxuICAgIGlzQW5kcm9pZCxcbiAgICBpc0FuZHJvaWRUYWJsZXQsXG4gICAgaXNJcGhvbmUsXG4gICAgaXNJcG9kLFxuICAgIGlzSXBhZCxcbiAgICBpc0lvcyxcbiAgICBpc1NhZmFyaSxcbiAgICBpc0xhcmdlVGFibGV0TGFuZHNjYXBlLFxuICAgIGlzTGFyZ2VUYWJsZXRQb3J0cmFpdCxcbiAgICBpc01vYmlsZSxcbiAgICBnZXRBbmRyb2lkVmVyc2lvbixcbiAgICBpc0tpdGthdERldmljZSxcbiAgICBlbmNvZGVVcmwsXG4gICAgZW5jb2RlVXJsUGFyYW1zLFxuICAgIGluaXRDYXBzLFxuICAgIHNwYWNlU2VwYXJhdGUsXG4gICAgcmVwbGFjZUF0LFxuICAgIHBlcmlvZFNlcGFyYXRlLFxuICAgIHByZXR0aWZ5TGFiZWwsXG4gICAgZGVIeXBoZW5hdGUsXG4gICAgcHJldHRpZnlMYWJlbHMsXG4gICAgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0LFxuICAgIHN0cmluZ1N0YXJ0c1dpdGgsXG4gICAgZ2V0RXZhbHVhdGVkRXhwclZhbHVlLFxuICAgIGlzSW1hZ2VGaWxlLFxuICAgIGlzQXVkaW9GaWxlLFxuICAgIGlzVmlkZW9GaWxlLFxuICAgIGlzVmFsaWRXZWJVUkwsXG4gICAgZ2V0UmVzb3VyY2VVUkwsXG4gICAgdHJpZ2dlckZuLFxuICAgIGhhc09mZnNldFN0cixcbiAgICBnZXRGb3JtYXR0ZWREYXRlLFxuICAgIGdldERhdGVPYmosXG4gICAgYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudCxcbiAgICBnZXRDbG9uZWRPYmplY3QsXG4gICAgZ2V0RmlsZXMsXG4gICAgZ2VuZXJhdGVHVUlkLFxuICAgIHZhbGlkYXRlQWNjZXNzUm9sZXMsXG4gICAgZ2V0VmFsaWRKU09OLFxuICAgIHhtbFRvSnNvbixcbiAgICBmaW5kVmFsdWVPZixcbiAgICBleHRyYWN0VHlwZSxcbiAgICBpc051bWJlclR5cGUsXG4gICAgaXNFbXB0eU9iamVjdCxcbiAgICBzY3JvbGxUb0VsZW1lbnQsXG4gICAgaXNFbGVtZW50SW5WaWV3cG9ydCxcbiAgICBpc1BhZ2VhYmxlLFxuICAgIHJlcGxhY2UsXG4gICAgaXNEYXRlVGltZVR5cGUsXG4gICAgZ2V0VmFsaWREYXRlT2JqZWN0LFxuICAgIGdldE5hdGl2ZURhdGVPYmplY3QsXG4gICAgZ2V0QmxvYixcbiAgICBpc0VxdWFsV2l0aEZpZWxkcyxcbiAgICBsb2FkU3R5bGVTaGVldCxcbiAgICBsb2FkU3R5bGVTaGVldHMsXG4gICAgbG9hZFNjcmlwdCxcbiAgICBsb2FkU2NyaXB0cyxcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIGdldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBub29wLFxuICAgIGNvbnZlcnRUb0Jsb2IsXG4gICAgQXBwQ29uc3RhbnRzLFxuICAgIG9wZW5MaW5rLFxuICAgIGZldGNoQ29udGVudCxcbiAgICB0b1Byb21pc2UsXG4gICAgcmV0cnlJZkZhaWxzLFxuICAgIGdldEFib3J0YWJsZURlZmVyLFxuICAgIGNyZWF0ZUNTU1J1bGUsXG4gICAgZ2V0VXJsUGFyYW1zLFxuICAgIGdldE1vbWVudExvY2FsZU9iamVjdCxcbiAgICBnZXRSb3V0ZU5hbWVGcm9tTGluayxcbiAgICBpc0FwcGxlUHJvZHVjdCxcbiAgICBkZWZlcixcbiAgICBleGVjdXRlUHJvbWlzZUNoYWluLFxuICAgIGlzRGF0YVNvdXJjZUVxdWFsLFxuICAgIHZhbGlkYXRlRGF0YVNvdXJjZUN0eCxcbiAgICBwcm9jZXNzRmlsdGVyRXhwQmluZE5vZGUsXG4gICAgZXh0ZW5kUHJvdG8sXG4gICAgcmVtb3ZlRXh0cmFTbGFzaGVzLFxuICAgIGdldERpc3BsYXlEYXRlVGltZUZvcm1hdCxcbiAgICBhZGRGb3JJZEF0dHJpYnV0ZXMsXG4gICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sXG4gICAgYWRqdXN0Q29udGFpbmVyUmlnaHRFZGdlcyxcbiAgICBzZXRUcmFuc2xhdGlvbjNkUG9zaXRpb24sXG4gICAgZ2V0V2Via2l0VHJhc2xhdGlvbk1hdHJpeCxcbiAgICBjbG9zZVBvcG92ZXIsXG4gICAgZGV0ZWN0Q2hhbmdlcyxcbiAgICB0cmlnZ2VySXRlbUFjdGlvbixcbiAgICBnZXREYXRhc291cmNlRnJvbUV4cHIsXG4gICAgZXh0cmFjdEN1cnJlbnRJdGVtRXhwcixcbiAgICBmaW5kUm9vdENvbnRhaW5lcixcbiAgICBWQUxJREFUT1IsXG4gICAgdHJhbnNmb3JtRmlsZVVSSSxcbiAgICBhcHBlbmRTY3JpcHRUb0hlYWQsXG4gICAgZ2V0QXBwU2V0dGluZyxcbiAgICBzZXRMaXN0Q2xhc3MsXG4gICAgZmluZFBhcmVudCxcbiAgICBnZXROYXZDbGFzcyxcbiAgICBnZXRTaGVldFBvc2l0aW9uQ2xhc3Ncbn0gZnJvbSAnLi91dGlscy91dGlscyc7XG5leHBvcnQge1xuICAgIEZJUlNUX1RJTUVfV0FUQ0gsXG4gICAgaXNGaXJzdFRpbWVDaGFuZ2UsXG4gICAgZGVib3VuY2UsXG4gICAgbXV0ZVdhdGNoZXJzLFxuICAgIHVuTXV0ZVdhdGNoZXJzLFxuICAgICR3YXRjaCxcbiAgICAkdW53YXRjaCxcbiAgICBzZXROZ1pvbmUsXG4gICAgc2V0QXBwUmVmLFxuICAgIGlzQ2hhbmdlRnJvbVdhdGNoLFxuICAgIHJlc2V0Q2hhbmdlRnJvbVdhdGNoLFxuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkYXBwRGlnZXN0XG59IGZyb20gJy4vdXRpbHMvd2F0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2lkLWdlbmVyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL3R5cGVzJztcbmV4cG9ydCB7IFZpZXdwb3J0LCBWaWV3cG9ydEV2ZW50IH0gZnJvbSAnLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29uc3RhbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC10eXBlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC13aWRnZXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3NjcmlwdC1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3VzZXItY3VzdG9tLXBpcGUtbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY3VzdG9tLWljb25zLWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFN0YXRlUGVyc2lzdGVuY2UgfSBmcm9tICcuL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL3dtLXByb2plY3QtcHJvcGVydGllcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2xydS1jYWNoZSc7XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxxQkFBcUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLEVBQ2QsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYnVpbGQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvY3VycmVuY3ktY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgYXBwZW5kTm9kZSxcbiAgICBpbnNlcnRCZWZvcmUsXG4gICAgaW5zZXJ0QWZ0ZXIsXG4gICAgcmVtb3ZlTm9kZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBhZGRDbGFzcyxcbiAgICBzd2l0Y2hDbGFzcyxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzZXRQcm9wZXJ0eSxcbiAgICBzZXRBdHRyLFxuICAgIHNldEh0bWwsXG4gICAgcmVtb3ZlQXR0cixcbiAgICBjcmVhdGVFbGVtZW50LFxuICAgIHRvRGltZW5zaW9uXG59IGZyb20gJy4vdXRpbHMvZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9ldmVudC1ub3RpZmllcic7XG5leHBvcnQge1xuICAgIFBhcnNlRXhwclJlc3VsdCxcbiAgICAkcGFyc2VFeHByLFxuICAgICRwYXJzZUV2ZW50LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgc2V0UGlwZVByb3ZpZGVyLFxuICAgIGdldEZuQnlFeHByLFxuICAgIGdldEZuRm9yQmluZEV4cHIsXG4gICAgZ2V0Rm5Gb3JFdmVudEV4cHJcbn0gZnJvbSAnLi91dGlscy9leHByZXNzaW9uLXBhcnNlcic7XG5leHBvcnQge1xuICAgIEVWRU5UX0xJRkUsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzT2JqZWN0LFxuICAgIHRvQm9vbGVhbixcbiAgICBpc0lFLFxuICAgIGlzQW5kcm9pZCxcbiAgICBpc0FuZHJvaWRUYWJsZXQsXG4gICAgaXNJcGhvbmUsXG4gICAgaXNJcG9kLFxuICAgIGlzSXBhZCxcbiAgICBpc0lvcyxcbiAgICBpc1NhZmFyaSxcbiAgICBpc0xhcmdlVGFibGV0TGFuZHNjYXBlLFxuICAgIGlzTGFyZ2VUYWJsZXRQb3J0cmFpdCxcbiAgICBpc01vYmlsZSxcbiAgICBnZXRBbmRyb2lkVmVyc2lvbixcbiAgICBpc0tpdGthdERldmljZSxcbiAgICBlbmNvZGVVcmwsXG4gICAgZW5jb2RlVXJsUGFyYW1zLFxuICAgIGluaXRDYXBzLFxuICAgIHNwYWNlU2VwYXJhdGUsXG4gICAgcmVwbGFjZUF0LFxuICAgIHBlcmlvZFNlcGFyYXRlLFxuICAgIHByZXR0aWZ5TGFiZWwsXG4gICAgZGVIeXBoZW5hdGUsXG4gICAgcHJldHRpZnlMYWJlbHMsXG4gICAgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0LFxuICAgIHN0cmluZ1N0YXJ0c1dpdGgsXG4gICAgZ2V0RXZhbHVhdGVkRXhwclZhbHVlLFxuICAgIGlzSW1hZ2VGaWxlLFxuICAgIGlzQXVkaW9GaWxlLFxuICAgIGlzVmlkZW9GaWxlLFxuICAgIGlzVmFsaWRJbWFnZVVybCxcbiAgICBpc1ZhbGlkV2ViVVJMLFxuICAgIGdldFJlc291cmNlVVJMLFxuICAgIHRyaWdnZXJGbixcbiAgICBoYXNPZmZzZXRTdHIsXG4gICAgZ2V0Rm9ybWF0dGVkRGF0ZSxcbiAgICBnZXREYXRlT2JqLFxuICAgIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsXG4gICAgZ2V0Q2xvbmVkT2JqZWN0LFxuICAgIGdldEZpbGVzLFxuICAgIGdlbmVyYXRlR1VJZCxcbiAgICB2YWxpZGF0ZUFjY2Vzc1JvbGVzLFxuICAgIGdldFZhbGlkSlNPTixcbiAgICB4bWxUb0pzb24sXG4gICAgZmluZFZhbHVlT2YsXG4gICAgZXh0cmFjdFR5cGUsXG4gICAgaXNOdW1iZXJUeXBlLFxuICAgIGlzRW1wdHlPYmplY3QsXG4gICAgc2Nyb2xsVG9FbGVtZW50LFxuICAgIGlzRWxlbWVudEluVmlld3BvcnQsXG4gICAgaXNQYWdlYWJsZSxcbiAgICByZXBsYWNlLFxuICAgIGlzRGF0ZVRpbWVUeXBlLFxuICAgIGdldFZhbGlkRGF0ZU9iamVjdCxcbiAgICBnZXROYXRpdmVEYXRlT2JqZWN0LFxuICAgIGdldEJsb2IsXG4gICAgaXNFcXVhbFdpdGhGaWVsZHMsXG4gICAgbG9hZFN0eWxlU2hlZXQsXG4gICAgbG9hZFN0eWxlU2hlZXRzLFxuICAgIGxvYWRTY3JpcHQsXG4gICAgbG9hZFNjcmlwdHMsXG4gICAgX1dNX0FQUF9QUk9KRUNULFxuICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgbm9vcCxcbiAgICBjb252ZXJ0VG9CbG9iLFxuICAgIEFwcENvbnN0YW50cyxcbiAgICBvcGVuTGluayxcbiAgICBmZXRjaENvbnRlbnQsXG4gICAgdG9Qcm9taXNlLFxuICAgIHJldHJ5SWZGYWlscyxcbiAgICBnZXRBYm9ydGFibGVEZWZlcixcbiAgICBjcmVhdGVDU1NSdWxlLFxuICAgIGdldFVybFBhcmFtcyxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3QsXG4gICAgZ2V0Um91dGVOYW1lRnJvbUxpbmssXG4gICAgaXNBcHBsZVByb2R1Y3QsXG4gICAgZGVmZXIsXG4gICAgZXhlY3V0ZVByb21pc2VDaGFpbixcbiAgICBpc0RhdGFTb3VyY2VFcXVhbCxcbiAgICB2YWxpZGF0ZURhdGFTb3VyY2VDdHgsXG4gICAgcHJvY2Vzc0ZpbHRlckV4cEJpbmROb2RlLFxuICAgIGV4dGVuZFByb3RvLFxuICAgIHJlbW92ZUV4dHJhU2xhc2hlcyxcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgYWRkRm9ySWRBdHRyaWJ1dGVzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgc2V0VHJhbnNsYXRpb24zZFBvc2l0aW9uLFxuICAgIGdldFdlYmtpdFRyYXNsYXRpb25NYXRyaXgsXG4gICAgY2xvc2VQb3BvdmVyLFxuICAgIGRldGVjdENoYW5nZXMsXG4gICAgdHJpZ2dlckl0ZW1BY3Rpb24sXG4gICAgZ2V0RGF0YXNvdXJjZUZyb21FeHByLFxuICAgIGV4dHJhY3RDdXJyZW50SXRlbUV4cHIsXG4gICAgZmluZFJvb3RDb250YWluZXIsXG4gICAgVkFMSURBVE9SLFxuICAgIHRyYW5zZm9ybUZpbGVVUkksXG4gICAgYXBwZW5kU2NyaXB0VG9IZWFkLFxuICAgIGdldEFwcFNldHRpbmcsXG4gICAgc2V0TGlzdENsYXNzLFxuICAgIGZpbmRQYXJlbnQsXG4gICAgZ2V0TmF2Q2xhc3MsXG4gICAgZ2V0U2hlZXRQb3NpdGlvbkNsYXNzXG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBGSVJTVF9USU1FX1dBVENILFxuICAgIGlzRmlyc3RUaW1lQ2hhbmdlLFxuICAgIGRlYm91bmNlLFxuICAgIG11dGVXYXRjaGVycyxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICAkd2F0Y2gsXG4gICAgJHVud2F0Y2gsXG4gICAgJHVud2F0Y2hBbGwsXG4gICAgJHVud2F0Y2hBbGxCeVNjb3BlLFxuICAgIHNldE5nWm9uZSxcbiAgICBzZXRBcHBSZWYsXG4gICAgaXNDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgcmVzZXRDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgICRhcHBEaWdlc3Rcbn0gZnJvbSAnLi91dGlscy93YXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvdHlwZXMnO1xuZXhwb3J0IHsgVmlld3BvcnQsIFZpZXdwb3J0RXZlbnQgfSBmcm9tICcuL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb25zdGFudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXR5cGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXdpZGdldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXNlci1jdXN0b20tcGlwZS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jdXN0b20taWNvbnMtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgU3RhdGVQZXJzaXN0ZW5jZSB9IGZyb20gJy4vc2VydmljZXMvc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5leHBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==
@@ -78,4 +78,4 @@ export class PartialRefProvider {
78
78
  }
79
79
  export class CustomWidgetRefProvider {
80
80
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy90eXBlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLGlEQUFJLENBQUE7SUFDSixxREFBTSxDQUFBO0lBQ04sdURBQU8sQ0FBQTtJQUNQLHFEQUFNLENBQUE7QUFDVixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRCxNQUFNLE9BQU8sV0FBVztDQUV2QjtBQUVELElBQUssU0EwQ0o7QUExQ0QsV0FBSyxTQUFTO0lBQ1YseUNBQTRCLENBQUE7SUFDNUIsMkNBQThCLENBQUE7SUFDOUIsMkNBQThCLENBQUE7SUFDOUIsMkNBQThCLENBQUE7SUFDOUIsOEJBQWlCLENBQUE7SUFDakIsOEJBQWlCLENBQUE7SUFDakIsOEJBQWlCLENBQUE7SUFDakIsd0NBQTJCLENBQUE7SUFDM0IsMkNBQThCLENBQUE7SUFDOUIsMERBQTZDLENBQUE7SUFDN0MsdUNBQTBCLENBQUE7SUFDMUIsdUNBQTBCLENBQUE7SUFDMUIsb0RBQXVDLENBQUE7SUFDdkMsb0VBQXVELENBQUE7SUFDdkQsOENBQWlDLENBQUE7SUFDakMsbUNBQXNCLENBQUE7SUFDdEIsMkRBQThDLENBQUE7SUFDOUMsb0VBQXVELENBQUE7SUFDdkQsc0RBQXlDLENBQUE7SUFDekMsNENBQStCLENBQUE7SUFDL0Isa0NBQXFCLENBQUE7SUFDckIsaUNBQW9CLENBQUE7SUFDcEIsb0RBQXVDLENBQUE7SUFDdkMsOENBQWlDLENBQUE7SUFDakMsd0NBQTJCLENBQUE7SUFDM0IsNERBQStDLENBQUE7SUFDL0MsdUNBQTBCLENBQUE7SUFDMUIsNkNBQWdDLENBQUE7SUFDaEMsb0RBQXVDLENBQUE7SUFDdkMsb0RBQXVDLENBQUE7SUFDdkMsMERBQTZDLENBQUE7SUFDN0MsMERBQTZDLENBQUE7SUFDN0MsNERBQStDLENBQUE7SUFDL0Msb0RBQXVDLENBQUE7SUFDdkMsaUNBQW9CLENBQUE7SUFDcEIsaUNBQW9CLENBQUE7SUFDcEIsdUNBQTBCLENBQUE7SUFDMUIsbURBQXNDLENBQUE7SUFDdEMsb0RBQXVDLENBQUE7SUFDdkMsOEJBQWlCLENBQUE7SUFDakIsNkNBQWdDLENBQUE7QUFDcEMsQ0FBQyxFQTFDSSxTQUFTLEtBQVQsU0FBUyxRQTBDYjtBQUVELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN0QixTQUFTO0NBQ1osQ0FBQztBQUVGLE1BQU0sT0FBZ0IsR0FBRztDQThDeEI7QUFHRCxNQUFNLE9BQWdCLHFCQUFxQjtDQWlCMUM7QUFFRCxNQUFNLE9BQWdCLG1CQUFtQjtDQW1CeEM7QUFFRCxNQUFNLE9BQWdCLG1CQUFtQjtDQWtCeEM7QUFFRCxNQUFNLE9BQWdCLHNCQUFzQjtDQWdCM0M7QUFFRCxNQUFNLE9BQWdCLHNCQUFzQjtDQU8zQztBQUNELE1BQU0sT0FBZ0IsMkJBQTJCO0NBRWhEO0FBVUQsTUFBTSxPQUFnQix5QkFBeUI7Q0FLOUM7QUFFRCxNQUFNLE9BQWdCLFdBQVc7Q0FNaEM7QUFFRCxNQUFNLE9BQWdCLDJCQUEyQjtDQUVoRDtBQUVELE1BQU0sT0FBZ0Isa0JBQWtCO0NBRXZDO0FBRUQsTUFBTSxPQUFnQix1QkFBdUI7Q0FFNUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDb21wb25lbnRUeXBlIHtcbiAgICBQQUdFLFxuICAgIFBSRUZBQixcbiAgICBQQVJUSUFMLFxuICAgIFdJREdFVFxufVxuXG5leHBvcnQgY2xhc3MgSURhdGFTb3VyY2Uge1xuICAgIGV4ZWN1dGU6IChvcGVyYXRpb246IE9wZXJhdGlvbiwgb3B0aW9ucz86IGFueSkgPT4gYm9vbGVhbiB8IHN0cmluZyB8IFByb21pc2U8YW55Pjtcbn1cblxuZW51bSBPcGVyYXRpb24ge1xuICAgIExJU1RfUkVDT1JEUyA9ICdsaXN0UmVjb3JkcycsXG4gICAgVVBEQVRFX1JFQ09SRCA9ICd1cGRhdGVSZWNvcmQnLFxuICAgIElOU0VSVF9SRUNPUkQgPSAnaW5zZXJ0UmVjb3JkJyxcbiAgICBERUxFVEVfUkVDT1JEID0gJ2RlbGV0ZVJlY29yZCcsXG4gICAgSU5WT0tFID0gJ2ludm9rZScsXG4gICAgVVBEQVRFID0gJ3VwZGF0ZScsXG4gICAgTk9USUZZID0gJ25vdGlmeScsXG4gICAgSVNfQVBJX0FXQVJFID0gJ2lzQXBpQXdhcmUnLFxuICAgIFNVUFBPUlRTX0NSVUQgPSAnc3VwcG9ydHNDUlVEJyxcbiAgICBTVVBQT1JUU19ESVNUSU5DVF9BUEkgPSAnc3VwcG9ydHNEaXN0aW5jdEFQSScsXG4gICAgSVNfUEFHRUFCTEUgPSAnaXNQYWdlYWJsZScsXG4gICAgSVNfU09SVEFCTEUgPSAnaXNTb3J0YWJsZScsXG4gICAgR0VUX09QRVJBVElPTl9UWVBFID0gJ2dldE9wZXJhdGlvblR5cGUnLFxuICAgIEdFVF9SRUxBVEVEX1BSSU1BUllfS0VZUyA9ICdnZXRSZWxhdGVkVGFibGVQcmltYXJ5S2V5cycsXG4gICAgR0VUX0VOVElUWV9OQU1FID0gJ2dldEVudGl0eU5hbWUnLFxuICAgIFNFVF9JTlBVVCA9ICdzZXRpbnB1dCcsXG4gICAgR0VUX1JFTEFURURfVEFCTEVfREFUQSA9ICdnZXRSZWxhdGVkVGFibGVEYXRhJyxcbiAgICBHRVRfRElTVElOQ1RfREFUQV9CWV9GSUVMRFMgPSAnZ2V0RGlzdGluY3REYXRhQnlGaWVsZHMnLFxuICAgIEdFVF9BR0dSRUdBVEVEX0RBVEEgPSAnZ2V0QWdncmVnYXRlZERhdGEnLFxuICAgIEdFVF9NQVRDSF9NT0RFID0gJ2dldE1hdGNoTW9kZScsXG4gICAgRE9XTkxPQUQgPSAnZG93bmxvYWQnLFxuICAgIEdFVF9OQU1FID0gJ2dldE5hbWUnLFxuICAgIEdFVF9QUk9QRVJUSUVTX01BUCA9ICdnZXRQcm9wZXJ0aWVzTWFwJyxcbiAgICBHRVRfUFJJTUFSWV9LRVkgPSAnZ2V0UHJpbWFyeUtleScsXG4gICAgR0VUX0JMT0JfVVJMID0gJ2dldEJsb2JVUkwnLFxuICAgIFNVUFBPUlRTX1NFUlZFUl9GSUxURVIgPSAnc3VwcG9ydHNTZXJ2ZXJGaWx0ZXInLFxuICAgIEdFVF9PUFRJT05TID0gJ2dldE9wdGlvbnMnLFxuICAgIFNFQVJDSF9SRUNPUkRTID0gJ3NlYXJjaFJlY29yZHMnLFxuICAgIEdFVF9SRVFVRVNUX1BBUkFNUyA9ICdnZXRSZXF1ZXN0UGFyYW1zJyxcbiAgICBHRVRfUEFHSU5HX09QVElPTlMgPSAnZ2V0UGFnaW5nT3B0aW9ucycsXG4gICAgRkVUQ0hfRElTVElOQ1RfVkFMVUVTID0gJ2ZldGNoRGlzdGluY3RWYWx1ZXMnLFxuICAgIEdFVF9VTklRVUVfSURFTlRJRklFUiA9ICdnZXRVbmlxdWVJZGVudGlmaWVyJyxcbiAgICBHRVRfQ09OVEVYVF9JREVOVElGSUVSID0gJ2dldENvbnRleHRJZGVudGlmaWVyJyxcbiAgICBJU19VUERBVEVfUkVRVUlSRUQgPSAnaXNVcGRhdGVSZXF1aXJlZCcsXG4gICAgQUREX0lURU0gPSAnYWRkSXRlbScsXG4gICAgU0VUX0lURU0gPSAnc2V0SXRlbScsXG4gICAgUkVNT1ZFX0lURU0gPSAncmVtb3ZlSXRlbScsXG4gICAgSVNfQk9VTkRfVE9fTE9DQUxFID0gJ2lzQm91bmRUb0xvY2FsZScsXG4gICAgR0VUX0RFRkFVTFRfTE9DQUxFID0gJ2dldERlZmF1bHRMb2NhbGUnLFxuICAgIENBTkNFTCA9ICdjYW5jZWwnLFxuICAgIFNFVF9QQUdJTkFUSU9OID0gJ3NldFBhZ2luYXRpb24nXG59XG5cbmV4cG9ydCBjb25zdCBEYXRhU291cmNlID0ge1xuICAgIE9wZXJhdGlvblxufTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcCB7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgVmFyaWFibGVzOiBhbnk7XG4gICAgQWN0aW9uczogYW55O1xuICAgIG9uQXBwVmFyaWFibGVzUmVhZHk6IEZ1bmN0aW9uO1xuICAgIG9uU2Vzc2lvblRpbWVvdXQ6IEZ1bmN0aW9uO1xuICAgIG9uQmVmb3JlQXBwUmVhZHk6IEZ1bmN0aW9uO1xuICAgIG9uUGFnZVJlYWR5OiBGdW5jdGlvbjtcbiAgICBvbkJlZm9yZVBhZ2VMZWF2ZTogRnVuY3Rpb247XG4gICAgb25CZWZvcmVTZXJ2aWNlQ2FsbDogRnVuY3Rpb247XG4gICAgb25TZXJ2aWNlU3VjY2VzczogRnVuY3Rpb247XG4gICAgb25TZXJ2aWNlRXJyb3I6IEZ1bmN0aW9uO1xuICAgIHByb2plY3ROYW1lOiBzdHJpbmc7XG4gICAgaXNQcmVmYWJUeXBlOiBib29sZWFuO1xuICAgIGlzQXBwbGljYXRpb25UeXBlOiBib29sZWFuO1xuICAgIHNldHdpZGdldExvY2FsZTogRnVuY3Rpb247XG4gICAgc2V0TW9kZTogRnVuY3Rpb247XG4gICAgaXNUYWJsZXRBcHBsaWNhdGlvblR5cGU6IGJvb2xlYW47XG4gICAgaXNUZW1wbGF0ZUJ1bmRsZVR5cGU6IGJvb2xlYW47XG4gICAgY2hhbmdlTG9jYWxlOiBGdW5jdGlvbjtcbiAgICBnZXRTZWxlY3RlZExvY2FsZTogRnVuY3Rpb247XG4gICAgc2V0VGltZXpvbmU6IEZ1bmN0aW9uO1xuICAgIHJlbG9hZDogRnVuY3Rpb247XG4gICAgb240MDE6IEZ1bmN0aW9uO1xuICAgIG5vdGlmeUFwcDogRnVuY3Rpb247XG4gICAgaW1wb3J0TW9kdWxlOiBGdW5jdGlvbjtcbiAgICBnZXREZXBlbmRlbmN5OiBGdW5jdGlvbjtcbiAgICBuZXR3b3JrU3RhdHVzOiBhbnk7XG4gICAgbm90aWZ5OiAoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE/OiBhbnkpID0+IHZvaWQ7XG4gICAgZGVwbG95ZWRVcmw6IHN0cmluZztcbiAgICBjdXN0b21VcmxTY2hlbWU6IHN0cmluZztcbiAgICBzZWxlY3RlZFZpZXdQb3J0OiBPYmplY3Q7XG4gICAgc3Vic2NyaWJlOiAoZXZlbnROYW1lLCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgICBkeW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmOiBhbnk7XG4gICAgY2xlYXJQYWdlQ2FjaGU6IChwYWdlTmFtZT86IHN0cmluZykgPT4gdm9pZDtcblxuICAgIGFjdGl2ZVBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgYWN0aXZlUGFnZTogYW55O1xuICAgIFBhZ2U6IGFueTtcbiAgICBhY3RpdmVQYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgICBsYW5kaW5nUGFnZU5hbWU6IHN0cmluZztcbiAgICBsYXN0QWN0aXZlUGFnZU5hbWU6IHN0cmluZztcbiAgICBkZXZpY2VDYXRlZ29yeTogc3RyaW5nO1xuXG4gICAgYWN0aXZlTGF5b3V0TmFtZTogc3RyaW5nO1xuICAgIGxheW91dFBhZ2VzOiBzdHJpbmdbXTtcbn1cblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REaWFsb2dTZXJ2aWNlIHtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVnaXN0ZXIobmFtZTogc3RyaW5nLCBkaWFsb2dSZWY6IGFueSwgc2NvcGU6IGFueSk7XG4gICAgcHVibGljIGFic3RyYWN0IGRlUmVnaXN0ZXIobmFtZTogc3RyaW5nLCBzY29wZTogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb3BlbihuYW1lOiBzdHJpbmcsIHNjb3BlPzogYW55LCBpbml0U3RhdGU/OiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBjbG9zZShuYW1lOiBzdHJpbmcsIHNjb3BlPzogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2hvd0FwcENvbmZpcm1EaWFsb2coaW5pdFN0YXRlPzogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgY2xvc2VBcHBDb25maXJtRGlhbG9nKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGdldEFwcENvbmZpcm1EaWFsb2coKTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2V0QXBwQ29uZmlybURpYWxvZyhkaWFsb2dOYW1lOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBjbG9zZUFsbERpYWxvZ3M6IEZ1bmN0aW9uO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBhZGRUb09wZW5lZERpYWxvZ3MocmVmOiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRMYXN0T3BlbmVkRGlhbG9nKCk7XG4gICAgcHVibGljIGFic3RyYWN0IHJlbW92ZUZyb21PcGVuZWREaWFsb2dzKHJlZjogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0T3BlbmVkRGlhbG9ncygpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBhZGRUb0Nsb3NlZERpYWxvZ3MocmVmOiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCByZW1vdmVGcm9tQ2xvc2VkRGlhbG9ncyhyZWY6IGFueSk7XG4gICAgcHVibGljIGFic3RyYWN0IGdldERpYWxvZ1JlZkZyb21DbG9zZWREaWFsb2dzKCk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEh0dHBTZXJ2aWNlIHtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2VuZChvcHRpb25zOiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRMb2NhbGUobG9jYWxlKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0TG9jYWxlKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGdldEhlYWRlcihlcnJvciwgaGVhZGVyS2V5KTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgaXNQbGF0Zm9ybVNlc3Npb25UaW1lb3V0KGVycm9yKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcG9zdCh1cmwsIGRhdGEsIG9wdGlvbnMpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBwdXQodXJsLCBkYXRhLCBvcHRpb25zKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcGF0Y2godXJsLCBkYXRhLCBvcHRpb25zKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZGVsZXRlKHVybCwgb3B0aW9ucyk7XG4gICAgcHVibGljIGFic3RyYWN0IGhlYWQodXJsLCBvcHRpb25zKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QganNvbnAodXJsLCBvcHRpb25zKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgdXBsb2FkKHVybCwgZGF0YSwgb3B0aW9ucyk7XG4gICAgcHVibGljIGFic3RyYWN0IHJlZ2lzdGVyT25TZXNzaW9uVGltZW91dChjYWxsYmFjayk7XG4gICAgcHVibGljIGFic3RyYWN0IG9uNDAxKCk7XG4gICAgcHVibGljIGFic3RyYWN0IHB1c2hUb1Nlc3Npb25GYWlsdXJlUXVldWUoY2FsbGJhY2spO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBleGVjdXRlU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cygpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZW5kQ2FsbEFzT2JzZXJ2YWJsZShvcHRpb25zOiBhbnksIHBhcmFtcz86IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0STE4blNlcnZpY2Uge1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRTZWxlY3RlZExvY2FsZSgpOiBzdHJpbmc7XG4gICAgcHVibGljIGFic3RyYWN0IGdldERlZmF1bHRTdXBwb3J0ZWRMb2NhbGUoKTogc3RyaW5nO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRBcHBMb2NhbGUoKTogYW55O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRTZWxlY3RlZExvY2FsZShsb2NhbGUpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBsb2FkRGVmYXVsdExvY2FsZSgpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRMb2NhbGl6ZWRNZXNzYWdlKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0Q2FsZW5kYXJMb2NhbGUoKTogUHJvbWlzZTxhbnk+O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBsb2FkQXBwTG9jYWxlQnVuZGxlKCk7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGxvYWRNb21lbnRMb2NhbGVCdW5kbGUobG9jYWxlTGFuZyk7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGxvYWRMb2NhbGVCdW5kbGVzKGxvY2FsZUxhbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRUaW1lem9uZShsb2NhbGUsIGNvbXBJbnN0YW5jZT8pO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRUaW1lem9uZUVhcmx5KCk6IFByb21pc2U8YW55PjtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0Rm9ybWF0c0J5TG9jYWxlKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGdldFRpbWV6b25lKGNvbXBJbnN0YW5jZT8pO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRQcmVmYWJMb2NhbGVCdW5kbGUocHJlZmFiTmFtZTogc3RyaW5nKTogYW55O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXR3aWRnZXRMb2NhbGUobG9jYWxlKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0d2lkZ2V0TG9jYWxlKCk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlIHtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc3VjY2Vzcyh0aXRsZTogc3RyaW5nLCBkZXNjOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBlcnJvcih0aXRsZTogc3RyaW5nLCBkZXNjOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBpbmZvKHRpdGxlOiBzdHJpbmcsIGRlc2M6IHN0cmluZyk7XG4gICAgcHVibGljIGFic3RyYWN0IHdhcm4odGl0bGU6IHN0cmluZywgZGVzYzogc3RyaW5nKTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2hvdyhcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgICBkZXNjOiBzdHJpbmcsXG4gICAgICAgIHRpbWVvdXQ6IG51bWJlcixcbiAgICAgICAgYm9keU91dHB1dFR5cGU6IHN0cmluZyxcbiAgICAgICAgb25DbGlja0hhbmRsZXI6IEZ1bmN0aW9uLFxuICAgICAgICBvbkhpZGVDYWxsYmFjazogRnVuY3Rpb25cbiAgICApO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBoaWRlKHRvYXN0ZXJPYmo6IGFueSk7XG4gICAgcHVibGljIGFic3RyYWN0IHNob3dDdXN0b20ocGFnZU5hbWU6IHN0cmluZywgb3B0aW9ucz86IGFueSk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlIHtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0TWVzc2FnZVNvdXJjZSgpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzaG93Q29udGV4dFNwaW5uZXIoc3Bpbm5lckNvbnRleHQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBpZDogc3RyaW5nKTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2hvd0FwcFNwaW5uZXIobXNnOiBzdHJpbmcsIGlkOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBoaWRlQ29udGV4dFNwaW5uZXIoY3R4OiBzdHJpbmcsIGlkOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzaG93KG1lc3NhZ2U6IHN0cmluZywgaWQ/OiBzdHJpbmcsIHNwaW5uZXJDbGFzcz86IHN0cmluZywgc3Bpbm5lckNvbnRleHQ/OiBzdHJpbmcsIHZhcmlhYmxlU2NvcGVJZD86IHN0cmluZyk7XG4gICAgcHVibGljIGFic3RyYWN0IGhpZGUoaWQ6IHN0cmluZyk7XG59XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXNlckRlZmluZWRFeGVjdXRpb25Db250ZXh0IHtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25PcHRpb25zIHtcbiAgICAkZXZlbnQ/OiBhbnk7XG4gICAgcGFnZU5hbWU/OiBzdHJpbmc7XG4gICAgdHJhbnNpdGlvbj86IHN0cmluZztcbiAgICB1cmxQYXJhbXM/OiBhbnk7XG4gICAgdmlld05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlIHtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0UGFnZVRyYW5zaXRpb24oKTogc3RyaW5nO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnb1RvUGFnZShwYWdlTmFtZTogc3RyaW5nLCBvcHRpb25zOiBOYXZpZ2F0aW9uT3B0aW9ucyk7XG4gICAgcHVibGljIGFic3RyYWN0IGdvVG9QcmV2aW91cygpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnb1RvVmlldyh2aWV3TmFtZTogc3RyaW5nLCBvcHRpb25zOiBOYXZpZ2F0aW9uT3B0aW9ucywgdmFyaWFibGU6IGFueSk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBEZWZhdWx0cyB7XG4gICAgcHVibGljIGRhdGVGb3JtYXQ7XG4gICAgcHVibGljIHRpbWVGb3JtYXQ7XG4gICAgcHVibGljIGRhdGVUaW1lRm9ybWF0O1xuICAgIHB1YmxpYyBjdXJyZW5jeUNvZGU7XG4gICAgcHVibGljIGFic3RyYWN0IHNldEZvcm1hdHMoZm9ybWF0czogYW55KTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciB7XG4gICAgcHVibGljIGFic3RyYWN0IGdldENvbXBvbmVudEZhY3RvcnlSZWYoc2VsZWN0b3I6IHN0cmluZywgbWFya3VwOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFydGlhbFJlZlByb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRDb21wb25lbnRGYWN0b3J5UmVmKHBhcnRpYWxOYW1lOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGUsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGFueT47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDdXN0b21XaWRnZXRSZWZQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RmFjdG9yeVJlZihjdXN0b21XaWRnZXROYW1lOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGUsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGFueT47XG59XG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy90eXBlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLGlEQUFJLENBQUE7SUFDSixxREFBTSxDQUFBO0lBQ04sdURBQU8sQ0FBQTtJQUNQLHFEQUFNLENBQUE7QUFDVixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRCxNQUFNLE9BQU8sV0FBVztDQUV2QjtBQUVELElBQUssU0EwQ0o7QUExQ0QsV0FBSyxTQUFTO0lBQ1YseUNBQTRCLENBQUE7SUFDNUIsMkNBQThCLENBQUE7SUFDOUIsMkNBQThCLENBQUE7SUFDOUIsMkNBQThCLENBQUE7SUFDOUIsOEJBQWlCLENBQUE7SUFDakIsOEJBQWlCLENBQUE7SUFDakIsOEJBQWlCLENBQUE7SUFDakIsd0NBQTJCLENBQUE7SUFDM0IsMkNBQThCLENBQUE7SUFDOUIsMERBQTZDLENBQUE7SUFDN0MsdUNBQTBCLENBQUE7SUFDMUIsdUNBQTBCLENBQUE7SUFDMUIsb0RBQXVDLENBQUE7SUFDdkMsb0VBQXVELENBQUE7SUFDdkQsOENBQWlDLENBQUE7SUFDakMsbUNBQXNCLENBQUE7SUFDdEIsMkRBQThDLENBQUE7SUFDOUMsb0VBQXVELENBQUE7SUFDdkQsc0RBQXlDLENBQUE7SUFDekMsNENBQStCLENBQUE7SUFDL0Isa0NBQXFCLENBQUE7SUFDckIsaUNBQW9CLENBQUE7SUFDcEIsb0RBQXVDLENBQUE7SUFDdkMsOENBQWlDLENBQUE7SUFDakMsd0NBQTJCLENBQUE7SUFDM0IsNERBQStDLENBQUE7SUFDL0MsdUNBQTBCLENBQUE7SUFDMUIsNkNBQWdDLENBQUE7SUFDaEMsb0RBQXVDLENBQUE7SUFDdkMsb0RBQXVDLENBQUE7SUFDdkMsMERBQTZDLENBQUE7SUFDN0MsMERBQTZDLENBQUE7SUFDN0MsNERBQStDLENBQUE7SUFDL0Msb0RBQXVDLENBQUE7SUFDdkMsaUNBQW9CLENBQUE7SUFDcEIsaUNBQW9CLENBQUE7SUFDcEIsdUNBQTBCLENBQUE7SUFDMUIsbURBQXNDLENBQUE7SUFDdEMsb0RBQXVDLENBQUE7SUFDdkMsOEJBQWlCLENBQUE7SUFDakIsNkNBQWdDLENBQUE7QUFDcEMsQ0FBQyxFQTFDSSxTQUFTLEtBQVQsU0FBUyxRQTBDYjtBQUVELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN0QixTQUFTO0NBQ1osQ0FBQztBQUVGLE1BQU0sT0FBZ0IsR0FBRztDQStDeEI7QUFHRCxNQUFNLE9BQWdCLHFCQUFxQjtDQWlCMUM7QUFFRCxNQUFNLE9BQWdCLG1CQUFtQjtDQW1CeEM7QUFFRCxNQUFNLE9BQWdCLG1CQUFtQjtDQWtCeEM7QUFFRCxNQUFNLE9BQWdCLHNCQUFzQjtDQWdCM0M7QUFFRCxNQUFNLE9BQWdCLHNCQUFzQjtDQU8zQztBQUNELE1BQU0sT0FBZ0IsMkJBQTJCO0NBRWhEO0FBVUQsTUFBTSxPQUFnQix5QkFBeUI7Q0FLOUM7QUFFRCxNQUFNLE9BQWdCLFdBQVc7Q0FNaEM7QUFFRCxNQUFNLE9BQWdCLDJCQUEyQjtDQUVoRDtBQUVELE1BQU0sT0FBZ0Isa0JBQWtCO0NBRXZDO0FBRUQsTUFBTSxPQUFnQix1QkFBdUI7Q0FFNUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDb21wb25lbnRUeXBlIHtcbiAgICBQQUdFLFxuICAgIFBSRUZBQixcbiAgICBQQVJUSUFMLFxuICAgIFdJREdFVFxufVxuXG5leHBvcnQgY2xhc3MgSURhdGFTb3VyY2Uge1xuICAgIGV4ZWN1dGU6IChvcGVyYXRpb246IE9wZXJhdGlvbiwgb3B0aW9ucz86IGFueSkgPT4gYm9vbGVhbiB8IHN0cmluZyB8IFByb21pc2U8YW55Pjtcbn1cblxuZW51bSBPcGVyYXRpb24ge1xuICAgIExJU1RfUkVDT1JEUyA9ICdsaXN0UmVjb3JkcycsXG4gICAgVVBEQVRFX1JFQ09SRCA9ICd1cGRhdGVSZWNvcmQnLFxuICAgIElOU0VSVF9SRUNPUkQgPSAnaW5zZXJ0UmVjb3JkJyxcbiAgICBERUxFVEVfUkVDT1JEID0gJ2RlbGV0ZVJlY29yZCcsXG4gICAgSU5WT0tFID0gJ2ludm9rZScsXG4gICAgVVBEQVRFID0gJ3VwZGF0ZScsXG4gICAgTk9USUZZID0gJ25vdGlmeScsXG4gICAgSVNfQVBJX0FXQVJFID0gJ2lzQXBpQXdhcmUnLFxuICAgIFNVUFBPUlRTX0NSVUQgPSAnc3VwcG9ydHNDUlVEJyxcbiAgICBTVVBQT1JUU19ESVNUSU5DVF9BUEkgPSAnc3VwcG9ydHNEaXN0aW5jdEFQSScsXG4gICAgSVNfUEFHRUFCTEUgPSAnaXNQYWdlYWJsZScsXG4gICAgSVNfU09SVEFCTEUgPSAnaXNTb3J0YWJsZScsXG4gICAgR0VUX09QRVJBVElPTl9UWVBFID0gJ2dldE9wZXJhdGlvblR5cGUnLFxuICAgIEdFVF9SRUxBVEVEX1BSSU1BUllfS0VZUyA9ICdnZXRSZWxhdGVkVGFibGVQcmltYXJ5S2V5cycsXG4gICAgR0VUX0VOVElUWV9OQU1FID0gJ2dldEVudGl0eU5hbWUnLFxuICAgIFNFVF9JTlBVVCA9ICdzZXRpbnB1dCcsXG4gICAgR0VUX1JFTEFURURfVEFCTEVfREFUQSA9ICdnZXRSZWxhdGVkVGFibGVEYXRhJyxcbiAgICBHRVRfRElTVElOQ1RfREFUQV9CWV9GSUVMRFMgPSAnZ2V0RGlzdGluY3REYXRhQnlGaWVsZHMnLFxuICAgIEdFVF9BR0dSRUdBVEVEX0RBVEEgPSAnZ2V0QWdncmVnYXRlZERhdGEnLFxuICAgIEdFVF9NQVRDSF9NT0RFID0gJ2dldE1hdGNoTW9kZScsXG4gICAgRE9XTkxPQUQgPSAnZG93bmxvYWQnLFxuICAgIEdFVF9OQU1FID0gJ2dldE5hbWUnLFxuICAgIEdFVF9QUk9QRVJUSUVTX01BUCA9ICdnZXRQcm9wZXJ0aWVzTWFwJyxcbiAgICBHRVRfUFJJTUFSWV9LRVkgPSAnZ2V0UHJpbWFyeUtleScsXG4gICAgR0VUX0JMT0JfVVJMID0gJ2dldEJsb2JVUkwnLFxuICAgIFNVUFBPUlRTX1NFUlZFUl9GSUxURVIgPSAnc3VwcG9ydHNTZXJ2ZXJGaWx0ZXInLFxuICAgIEdFVF9PUFRJT05TID0gJ2dldE9wdGlvbnMnLFxuICAgIFNFQVJDSF9SRUNPUkRTID0gJ3NlYXJjaFJlY29yZHMnLFxuICAgIEdFVF9SRVFVRVNUX1BBUkFNUyA9ICdnZXRSZXF1ZXN0UGFyYW1zJyxcbiAgICBHRVRfUEFHSU5HX09QVElPTlMgPSAnZ2V0UGFnaW5nT3B0aW9ucycsXG4gICAgRkVUQ0hfRElTVElOQ1RfVkFMVUVTID0gJ2ZldGNoRGlzdGluY3RWYWx1ZXMnLFxuICAgIEdFVF9VTklRVUVfSURFTlRJRklFUiA9ICdnZXRVbmlxdWVJZGVudGlmaWVyJyxcbiAgICBHRVRfQ09OVEVYVF9JREVOVElGSUVSID0gJ2dldENvbnRleHRJZGVudGlmaWVyJyxcbiAgICBJU19VUERBVEVfUkVRVUlSRUQgPSAnaXNVcGRhdGVSZXF1aXJlZCcsXG4gICAgQUREX0lURU0gPSAnYWRkSXRlbScsXG4gICAgU0VUX0lURU0gPSAnc2V0SXRlbScsXG4gICAgUkVNT1ZFX0lURU0gPSAncmVtb3ZlSXRlbScsXG4gICAgSVNfQk9VTkRfVE9fTE9DQUxFID0gJ2lzQm91bmRUb0xvY2FsZScsXG4gICAgR0VUX0RFRkFVTFRfTE9DQUxFID0gJ2dldERlZmF1bHRMb2NhbGUnLFxuICAgIENBTkNFTCA9ICdjYW5jZWwnLFxuICAgIFNFVF9QQUdJTkFUSU9OID0gJ3NldFBhZ2luYXRpb24nXG59XG5cbmV4cG9ydCBjb25zdCBEYXRhU291cmNlID0ge1xuICAgIE9wZXJhdGlvblxufTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcCB7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgVmFyaWFibGVzOiBhbnk7XG4gICAgQWN0aW9uczogYW55O1xuICAgIG9uQXBwVmFyaWFibGVzUmVhZHk6IEZ1bmN0aW9uO1xuICAgIG9uU2Vzc2lvblRpbWVvdXQ6IEZ1bmN0aW9uO1xuICAgIG9uQmVmb3JlQXBwUmVhZHk6IEZ1bmN0aW9uO1xuICAgIG9uUGFnZVJlYWR5OiBGdW5jdGlvbjtcbiAgICBvbkJlZm9yZVBhZ2VMZWF2ZTogRnVuY3Rpb247XG4gICAgb25CZWZvcmVTZXJ2aWNlQ2FsbDogRnVuY3Rpb247XG4gICAgb25TZXJ2aWNlU3VjY2VzczogRnVuY3Rpb247XG4gICAgb25TZXJ2aWNlRXJyb3I6IEZ1bmN0aW9uO1xuICAgIHByb2plY3ROYW1lOiBzdHJpbmc7XG4gICAgaXNQcmVmYWJUeXBlOiBib29sZWFuO1xuICAgIGlzQXBwbGljYXRpb25UeXBlOiBib29sZWFuO1xuICAgIHNldHdpZGdldExvY2FsZTogRnVuY3Rpb247XG4gICAgc2V0TW9kZTogRnVuY3Rpb247XG4gICAgaXNUYWJsZXRBcHBsaWNhdGlvblR5cGU6IGJvb2xlYW47XG4gICAgaXNUZW1wbGF0ZUJ1bmRsZVR5cGU6IGJvb2xlYW47XG4gICAgY2hhbmdlTG9jYWxlOiBGdW5jdGlvbjtcbiAgICBnZXRTZWxlY3RlZExvY2FsZTogRnVuY3Rpb247XG4gICAgc2V0VGltZXpvbmU6IEZ1bmN0aW9uO1xuICAgIHJlbG9hZDogRnVuY3Rpb247XG4gICAgb240MDE6IEZ1bmN0aW9uO1xuICAgIG5vdGlmeUFwcDogRnVuY3Rpb247XG4gICAgaW1wb3J0TW9kdWxlOiBGdW5jdGlvbjtcbiAgICBnZXREZXBlbmRlbmN5OiBGdW5jdGlvbjtcbiAgICBuZXR3b3JrU3RhdHVzOiBhbnk7XG4gICAgbm90aWZ5OiAoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE/OiBhbnkpID0+IHZvaWQ7XG4gICAgZGVwbG95ZWRVcmw6IHN0cmluZztcbiAgICBjdXN0b21VcmxTY2hlbWU6IHN0cmluZztcbiAgICBzZWxlY3RlZFZpZXdQb3J0OiBPYmplY3Q7XG4gICAgc3Vic2NyaWJlOiAoZXZlbnROYW1lLCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgICBkeW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmOiBhbnk7XG4gICAgY2xlYXJQYWdlQ2FjaGU6IChwYWdlTmFtZT86IHN0cmluZykgPT4gdm9pZDtcbiAgICBpc1ByaXNtOiBib29sZWFuO1xuXG4gICAgYWN0aXZlUGFnZU5hbWU6IHN0cmluZztcbiAgICBhY3RpdmVQYWdlOiBhbnk7XG4gICAgUGFnZTogYW55O1xuICAgIGFjdGl2ZVBhZ2VMb2FkVGltZTogbnVtYmVyO1xuICAgIGxhbmRpbmdQYWdlTmFtZTogc3RyaW5nO1xuICAgIGxhc3RBY3RpdmVQYWdlTmFtZTogc3RyaW5nO1xuICAgIGRldmljZUNhdGVnb3J5OiBzdHJpbmc7XG5cbiAgICBhY3RpdmVMYXlvdXROYW1lOiBzdHJpbmc7XG4gICAgbGF5b3V0UGFnZXM6IHN0cmluZ1tdO1xufVxuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERpYWxvZ1NlcnZpY2Uge1xuICAgIHB1YmxpYyBhYnN0cmFjdCByZWdpc3RlcihuYW1lOiBzdHJpbmcsIGRpYWxvZ1JlZjogYW55LCBzY29wZTogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZGVSZWdpc3RlcihuYW1lOiBzdHJpbmcsIHNjb3BlOiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBvcGVuKG5hbWU6IHN0cmluZywgc2NvcGU/OiBhbnksIGluaXRTdGF0ZT86IGFueSk7XG4gICAgcHVibGljIGFic3RyYWN0IGNsb3NlKG5hbWU6IHN0cmluZywgc2NvcGU/OiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzaG93QXBwQ29uZmlybURpYWxvZyhpbml0U3RhdGU/OiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBjbG9zZUFwcENvbmZpcm1EaWFsb2coKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0QXBwQ29uZmlybURpYWxvZygpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRBcHBDb25maXJtRGlhbG9nKGRpYWxvZ05hbWU6IHN0cmluZyk7XG4gICAgcHVibGljIGFic3RyYWN0IGNsb3NlQWxsRGlhbG9nczogRnVuY3Rpb247XG4gICAgcHVibGljIGFic3RyYWN0IGFkZFRvT3BlbmVkRGlhbG9ncyhyZWY6IGFueSk7XG4gICAgcHVibGljIGFic3RyYWN0IGdldExhc3RPcGVuZWREaWFsb2coKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVtb3ZlRnJvbU9wZW5lZERpYWxvZ3MocmVmOiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRPcGVuZWREaWFsb2dzKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGFkZFRvQ2xvc2VkRGlhbG9ncyhyZWY6IGFueSk7XG4gICAgcHVibGljIGFic3RyYWN0IHJlbW92ZUZyb21DbG9zZWREaWFsb2dzKHJlZjogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGlhbG9nUmVmRnJvbUNsb3NlZERpYWxvZ3MoKTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SHR0cFNlcnZpY2Uge1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZW5kKG9wdGlvbnM6IGFueSk7XG4gICAgcHVibGljIGFic3RyYWN0IHNldExvY2FsZShsb2NhbGUpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRMb2NhbGUoKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0SGVhZGVyKGVycm9yLCBoZWFkZXJLZXkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBpc1BsYXRmb3JtU2Vzc2lvblRpbWVvdXQoZXJyb3IpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBwb3N0KHVybCwgZGF0YSwgb3B0aW9ucyk7XG4gICAgcHVibGljIGFic3RyYWN0IHB1dCh1cmwsIGRhdGEsIG9wdGlvbnMpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBwYXRjaCh1cmwsIGRhdGEsIG9wdGlvbnMpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBkZWxldGUodXJsLCBvcHRpb25zKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgaGVhZCh1cmwsIG9wdGlvbnMpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBqc29ucCh1cmwsIG9wdGlvbnMpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCB1cGxvYWQodXJsLCBkYXRhLCBvcHRpb25zKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVnaXN0ZXJPblNlc3Npb25UaW1lb3V0KGNhbGxiYWNrKTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb240MDEoKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcHVzaFRvU2Vzc2lvbkZhaWx1cmVRdWV1ZShjYWxsYmFjayk7XG4gICAgcHVibGljIGFic3RyYWN0IGV4ZWN1dGVTZXNzaW9uRmFpbHVyZVJlcXVlc3RzKCk7XG4gICAgcHVibGljIGFic3RyYWN0IHNlbmRDYWxsQXNPYnNlcnZhYmxlKG9wdGlvbnM6IGFueSwgcGFyYW1zPzogYW55KTogYW55O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJMThuU2VydmljZSB7XG4gICAgcHVibGljIGFic3RyYWN0IGdldFNlbGVjdGVkTG9jYWxlKCk6IHN0cmluZztcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGVmYXVsdFN1cHBvcnRlZExvY2FsZSgpOiBzdHJpbmc7XG4gICAgcHVibGljIGFic3RyYWN0IGdldEFwcExvY2FsZSgpOiBhbnk7XG4gICAgcHVibGljIGFic3RyYWN0IHNldFNlbGVjdGVkTG9jYWxlKGxvY2FsZSk7XG4gICAgcHVibGljIGFic3RyYWN0IGxvYWREZWZhdWx0TG9jYWxlKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGdldExvY2FsaXplZE1lc3NhZ2UobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgcHVibGljIGFic3RyYWN0IGluaXRDYWxlbmRhckxvY2FsZSgpOiBQcm9taXNlPGFueT47XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGxvYWRBcHBMb2NhbGVCdW5kbGUoKTtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgbG9hZE1vbWVudExvY2FsZUJ1bmRsZShsb2NhbGVMYW5nKTtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgbG9hZExvY2FsZUJ1bmRsZXMobG9jYWxlTGFuZyk7XG4gICAgcHVibGljIGFic3RyYWN0IHNldFRpbWV6b25lKGxvY2FsZSwgY29tcEluc3RhbmNlPyk7XG4gICAgcHVibGljIGFic3RyYWN0IHNldFRpbWV6b25lRWFybHkoKTogUHJvbWlzZTxhbnk+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRGb3JtYXRzQnlMb2NhbGUoKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0VGltZXpvbmUoY29tcEluc3RhbmNlPyk7XG4gICAgcHVibGljIGFic3RyYWN0IGdldFByZWZhYkxvY2FsZUJ1bmRsZShwcmVmYWJOYW1lOiBzdHJpbmcpOiBhbnk7XG4gICAgcHVibGljIGFic3RyYWN0IHNldHdpZGdldExvY2FsZShsb2NhbGUpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXR3aWRnZXRMb2NhbGUoKTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VG9hc3RlclNlcnZpY2Uge1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzdWNjZXNzKHRpdGxlOiBzdHJpbmcsIGRlc2M6IHN0cmluZyk7XG4gICAgcHVibGljIGFic3RyYWN0IGVycm9yKHRpdGxlOiBzdHJpbmcsIGRlc2M6IHN0cmluZyk7XG4gICAgcHVibGljIGFic3RyYWN0IGluZm8odGl0bGU6IHN0cmluZywgZGVzYzogc3RyaW5nKTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgd2Fybih0aXRsZTogc3RyaW5nLCBkZXNjOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzaG93KFxuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICAgIGRlc2M6IHN0cmluZyxcbiAgICAgICAgdGltZW91dDogbnVtYmVyLFxuICAgICAgICBib2R5T3V0cHV0VHlwZTogc3RyaW5nLFxuICAgICAgICBvbkNsaWNrSGFuZGxlcjogRnVuY3Rpb24sXG4gICAgICAgIG9uSGlkZUNhbGxiYWNrOiBGdW5jdGlvblxuICAgICk7XG4gICAgcHVibGljIGFic3RyYWN0IGhpZGUodG9hc3Rlck9iajogYW55KTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2hvd0N1c3RvbShwYWdlTmFtZTogc3RyaW5nLCBvcHRpb25zPzogYW55KTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U3Bpbm5lclNlcnZpY2Uge1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRNZXNzYWdlU291cmNlKCk7XG4gICAgcHVibGljIGFic3RyYWN0IHNob3dDb250ZXh0U3Bpbm5lcihzcGlubmVyQ29udGV4dDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGlkOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzaG93QXBwU3Bpbm5lcihtc2c6IHN0cmluZywgaWQ6IHN0cmluZyk7XG4gICAgcHVibGljIGFic3RyYWN0IGhpZGVDb250ZXh0U3Bpbm5lcihjdHg6IHN0cmluZywgaWQ6IHN0cmluZyk7XG4gICAgcHVibGljIGFic3RyYWN0IHNob3cobWVzc2FnZTogc3RyaW5nLCBpZD86IHN0cmluZywgc3Bpbm5lckNsYXNzPzogc3RyaW5nLCBzcGlubmVyQ29udGV4dD86IHN0cmluZywgdmFyaWFibGVTY29wZUlkPzogc3RyaW5nKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgaGlkZShpZDogc3RyaW5nKTtcbn1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVc2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQge1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGlvbk9wdGlvbnMge1xuICAgICRldmVudD86IGFueTtcbiAgICBwYWdlTmFtZT86IHN0cmluZztcbiAgICB0cmFuc2l0aW9uPzogc3RyaW5nO1xuICAgIHVybFBhcmFtcz86IGFueTtcbiAgICB2aWV3TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2Uge1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRQYWdlVHJhbnNpdGlvbigpOiBzdHJpbmc7XG4gICAgcHVibGljIGFic3RyYWN0IGdvVG9QYWdlKHBhZ2VOYW1lOiBzdHJpbmcsIG9wdGlvbnM6IE5hdmlnYXRpb25PcHRpb25zKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ29Ub1ByZXZpb3VzKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGdvVG9WaWV3KHZpZXdOYW1lOiBzdHJpbmcsIG9wdGlvbnM6IE5hdmlnYXRpb25PcHRpb25zLCB2YXJpYWJsZTogYW55KTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcERlZmF1bHRzIHtcbiAgICBwdWJsaWMgZGF0ZUZvcm1hdDtcbiAgICBwdWJsaWMgdGltZUZvcm1hdDtcbiAgICBwdWJsaWMgZGF0ZVRpbWVGb3JtYXQ7XG4gICAgcHVibGljIGN1cnJlbmN5Q29kZTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2V0Rm9ybWF0cyhmb3JtYXRzOiBhbnkpO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyIHtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RmFjdG9yeVJlZihzZWxlY3Rvcjogc3RyaW5nLCBtYXJrdXA6IHN0cmluZywgb3B0aW9ucz86IGFueSk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQYXJ0aWFsUmVmUHJvdmlkZXIge1xuICAgIGFic3RyYWN0IGdldENvbXBvbmVudEZhY3RvcnlSZWYocGFydGlhbE5hbWU6IHN0cmluZywgY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8YW55Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEN1c3RvbVdpZGdldFJlZlByb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRDb21wb25lbnRGYWN0b3J5UmVmKGN1c3RvbVdpZGdldE5hbWU6IHN0cmluZywgY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8YW55Pjtcbn1cbiJdfQ==