mis-crystal-design-system 18.1.4-test-4 → 18.1.4-test-6

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.
@@ -49,7 +49,20 @@ export declare class AsyncDropdownComponent implements OnInit, OnDestroy {
49
49
  error: import("@angular/core").WritableSignal<boolean>;
50
50
  openPopUpOnTab: import("@angular/core").WritableSignal<boolean>;
51
51
  data: import("@angular/core").WritableSignal<any[]>;
52
- private isSelecting;
52
+ /**
53
+ * Tracks the last selected value to prevent dropdown from reopening when:
54
+ * - Input regains focus after selection (showing selected value)
55
+ * - Parent component re-renders and triggers change detection
56
+ * - User hasn't actually typed a new search query
57
+ *
58
+ * This is necessary because the input serves dual purposes:
59
+ * 1. Search input (user types, triggers API calls)
60
+ * 2. Display selected value (shows what was selected)
61
+ *
62
+ * Without this, setting the input value after selection would trigger
63
+ * the search subscription, causing unwanted API calls and dropdown reopening.
64
+ */
65
+ private lastSelectedValue;
53
66
  ngOnInit(): void;
54
67
  ngOnChanges(): void;
55
68
  ngOnDestroy(): void;
@@ -59,11 +72,37 @@ export declare class AsyncDropdownComponent implements OnInit, OnDestroy {
59
72
  closeDropdown(): void;
60
73
  enablePopUpOnTab(): void;
61
74
  handleKeyDown(event: KeyboardEvent): void;
75
+ /**
76
+ * Handles item selection from dropdown.
77
+ *
78
+ * For single-select mode:
79
+ * - Sets input value to display selected item (standard UX pattern)
80
+ * - Stores selected value to prevent reopening dropdown on focus/change detection
81
+ * - Blurs input to prevent immediate focus-triggered searches
82
+ *
83
+ * For multi-select mode:
84
+ * - Clears input for next selection
85
+ * - Maintains focus for continuous selection
86
+ */
62
87
  selectData(item: IListData, effectedFromOutside?: boolean): void;
63
88
  removeItem(item: IListData): void;
64
89
  private setControlValue;
65
90
  get selectedItems(): any[];
91
+ /**
92
+ * Clears the input and resets selection state.
93
+ * Clearing lastSelectedValue allows new searches to proceed normally.
94
+ */
66
95
  removeInputValue(): void;
96
+ /**
97
+ * Called when input receives focus.
98
+ * Only opens dropdown if:
99
+ * 1. minInputLength allows it (-1 or 0 means open on focus)
100
+ * 2. Input value doesn't match last selected value (prevents reopening after selection)
101
+ *
102
+ * This handles the case where input regains focus after selection.
103
+ * The RxJS filter in searchObservable handles valueChanges, but focus events
104
+ * need separate handling since they bypass valueChanges.
105
+ */
67
106
  defaultCall(): void;
68
107
  static ɵfac: i0.ɵɵFactoryDeclaration<AsyncDropdownComponent, never>;
69
108
  static ɵcmp: i0.ɵɵComponentDeclaration<AsyncDropdownComponent, "mis-async-search-dropdown", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "httpStream": { "alias": "httpStream"; "required": true; "isSignal": true; }; "displayKey": { "alias": "displayKey"; "required": false; "isSignal": true; }; "secondaryDisplayKey": { "alias": "secondaryDisplayKey"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "minInputLength": { "alias": "minInputLength"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "uniqueKey": { "alias": "uniqueKey"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disableCopyPaste": { "alias": "disableCopyPaste"; "required": false; "isSignal": true; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; "isSignal": true; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; "isSignal": true; }; "customPlaceholderIcon": { "alias": "customPlaceholderIcon"; "required": false; "isSignal": true; }; "selections": { "alias": "selections"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "searchQueryChange": "searchQueryChange"; "clear": "clear"; "itemSelected": "itemSelected"; "itemRemoved": "itemRemoved"; }, ["customItem", "customLoader"], never, false, never>;
@@ -3,7 +3,7 @@ import { UntypedFormControl } from '@angular/forms';
3
3
  import { OverlayConfig, ConnectionPositionPair, } from '@angular/cdk/overlay';
4
4
  import { TemplatePortal } from '@angular/cdk/portal';
5
5
  import { signal, input, output } from '@angular/core';
6
- import { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
6
+ import { debounceTime, distinctUntilChanged, tap, filter } from 'rxjs/operators';
7
7
  import { merge, Subject } from 'rxjs';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/cdk/overlay";
@@ -227,7 +227,20 @@ export class AsyncDropdownComponent {
227
227
  this.error = signal(false);
228
228
  this.openPopUpOnTab = signal(false);
229
229
  this.data = signal([]);
230
- this.isSelecting = signal(false); // Flag to prevent reopening after selection
230
+ /**
231
+ * Tracks the last selected value to prevent dropdown from reopening when:
232
+ * - Input regains focus after selection (showing selected value)
233
+ * - Parent component re-renders and triggers change detection
234
+ * - User hasn't actually typed a new search query
235
+ *
236
+ * This is necessary because the input serves dual purposes:
237
+ * 1. Search input (user types, triggers API calls)
238
+ * 2. Display selected value (shows what was selected)
239
+ *
240
+ * Without this, setting the input value after selection would trigger
241
+ * the search subscription, causing unwanted API calls and dropdown reopening.
242
+ */
243
+ this.lastSelectedValue = signal(null);
231
244
  this.handleControlChanges = (values) => {
232
245
  values.forEach((el) => this.selectData(el, true));
233
246
  };
@@ -240,19 +253,53 @@ export class AsyncDropdownComponent {
240
253
  if (this.disabled()) {
241
254
  this.searchInput.disable();
242
255
  }
243
- // Set up search subscription in ngOnInit (proper lifecycle, not in effect)
244
- const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime()), distinctUntilChanged());
245
- this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
246
- .subscribe((query) => {
247
- // Don't process if we're in the middle of selecting
248
- if (this.isSelecting()) {
249
- return;
250
- }
256
+ /**
257
+ * Search observable pipeline with RxJS operators to filter at the source.
258
+ * This declarative approach prevents unwanted searches by filtering:
259
+ * 1. Empty queries or queries below minInputLength
260
+ * 2. Queries that match the last selected value (prevents reopening after selection)
261
+ *
262
+ * Filtering at the source is preferred over checking flags in subscribe()
263
+ * because it's more declarative, testable, and follows RxJS best practices.
264
+ */
265
+ const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime()), distinctUntilChanged(),
266
+ // Filter: Only process non-empty queries that meet minInputLength requirement
267
+ filter((query) => {
251
268
  const q = query?.trim() ?? '';
252
269
  if (!q || q.length < this.minInputLength()) {
270
+ // Close dropdown if query is too short
253
271
  this.closeDropdown();
254
- return;
272
+ return false;
273
+ }
274
+ return true;
275
+ }),
276
+ // Filter: Ignore queries that match the last selected value
277
+ // This prevents dropdown from reopening when input shows selected value
278
+ filter((query) => {
279
+ const q = query?.trim() ?? '';
280
+ const lastSelected = this.lastSelectedValue();
281
+ // Allow search if no previous selection OR query is different from selected value
282
+ return !lastSelected || q !== lastSelected;
283
+ }));
284
+ /**
285
+ * Subscribe to search queries and trigger HTTP stream.
286
+ * All filtering is done in the pipe chain above, so this callback
287
+ * only handles the actual search execution.
288
+ */
289
+ this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
290
+ .pipe(
291
+ // Additional filter for httpStreamTrigger (manual refresh)
292
+ filter((query) => {
293
+ const q = query?.trim() ?? '';
294
+ // For manual triggers, still respect minInputLength and lastSelectedValue
295
+ if (!q || q.length < this.minInputLength()) {
296
+ return false;
255
297
  }
298
+ const lastSelected = this.lastSelectedValue();
299
+ return !lastSelected || q !== lastSelected;
300
+ }))
301
+ .subscribe((query) => {
302
+ const q = query?.trim() ?? '';
256
303
  this.loading.set(true);
257
304
  this.error.set(false);
258
305
  // Open overlay if not yet open
@@ -353,14 +400,29 @@ export class AsyncDropdownComponent {
353
400
  this.closeDropdown();
354
401
  }
355
402
  }
403
+ /**
404
+ * Handles item selection from dropdown.
405
+ *
406
+ * For single-select mode:
407
+ * - Sets input value to display selected item (standard UX pattern)
408
+ * - Stores selected value to prevent reopening dropdown on focus/change detection
409
+ * - Blurs input to prevent immediate focus-triggered searches
410
+ *
411
+ * For multi-select mode:
412
+ * - Clears input for next selection
413
+ * - Maintains focus for continuous selection
414
+ */
356
415
  selectData(item, effectedFromOutside = true) {
357
416
  if (item.disabled)
358
417
  return;
359
- // Set flag to prevent effect from reopening dropdown
360
- this.isSelecting.set(true);
361
418
  this.itemSelected.emit(item);
362
419
  if (!this.multi()) {
363
- this.searchInput.patchValue(item[this.displayKey()], { emitEvent: false });
420
+ const selectedValue = item[this.displayKey()];
421
+ // Set input value to show selected item (standard UX - like Angular Material, etc.)
422
+ // Use emitEvent: false to prevent triggering valueChanges subscription
423
+ this.searchInput.patchValue(selectedValue, { emitEvent: false });
424
+ // Store selected value - RxJS filter will prevent reopening with same value
425
+ this.lastSelectedValue.set(selectedValue);
364
426
  this.setControlValue(item);
365
427
  }
366
428
  else {
@@ -378,11 +440,11 @@ export class AsyncDropdownComponent {
378
440
  this.data.set([]);
379
441
  }
380
442
  this.closeDropdown();
381
- // Reset flag after a microtask to allow closeDropdown to complete
382
- // but before any potential subscription runs
383
- queueMicrotask(() => {
384
- this.isSelecting.set(false);
385
- });
443
+ // Blur input to prevent focus events from immediately triggering search
444
+ // The lastSelectedValue filter will also prevent reopening if focus occurs
445
+ if (this.inputRef?.nativeElement) {
446
+ this.inputRef.nativeElement.blur();
447
+ }
386
448
  }
387
449
  removeItem(item) {
388
450
  this.itemRemoved.emit(item);
@@ -397,12 +459,34 @@ export class AsyncDropdownComponent {
397
459
  get selectedItems() {
398
460
  return Array.from(this.selections().values());
399
461
  }
462
+ /**
463
+ * Clears the input and resets selection state.
464
+ * Clearing lastSelectedValue allows new searches to proceed normally.
465
+ */
400
466
  removeInputValue() {
401
467
  this.searchInput.reset();
402
468
  this.data.set([]);
469
+ this.lastSelectedValue.set(null);
403
470
  this.clear.emit(true);
404
471
  }
472
+ /**
473
+ * Called when input receives focus.
474
+ * Only opens dropdown if:
475
+ * 1. minInputLength allows it (-1 or 0 means open on focus)
476
+ * 2. Input value doesn't match last selected value (prevents reopening after selection)
477
+ *
478
+ * This handles the case where input regains focus after selection.
479
+ * The RxJS filter in searchObservable handles valueChanges, but focus events
480
+ * need separate handling since they bypass valueChanges.
481
+ */
405
482
  defaultCall() {
483
+ const currentValue = this.searchInput.value?.trim() || '';
484
+ const lastSelected = this.lastSelectedValue();
485
+ // Don't open if value matches last selected (user hasn't typed new query)
486
+ if (lastSelected && currentValue === lastSelected) {
487
+ return;
488
+ }
489
+ // Only open on focus if minInputLength allows it
406
490
  if (this.minInputLength() === -1 || this.minInputLength() === 0) {
407
491
  this.loading.set(true);
408
492
  this.httpStream()(this.searchInput.value || '').subscribe({
@@ -489,4 +573,4 @@ export class AsyncDropdownComponent {
489
573
  args: ['document:keydown', ['$event']]
490
574
  }] }); })();
491
575
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AsyncDropdownComponent, { className: "AsyncDropdownComponent" }); })();
492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBTVosU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsYUFBYSxFQUViLHNCQUFzQixHQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNiOUMsQUFIRiwrQkFFd0MsZUFFTDtJQUMvQixZQUNGO0lBQUEsaUJBQU87SUFDUCxnQ0FJdUM7SUFBakMsQUFEQSxpTkFBUywwQkFBZ0IsS0FBQyxnTkFDWCwwQkFBZ0IsS0FBQztJQUV4QyxBQURFLGlCQUFPLEVBQ0g7Ozs7SUFaRCxvR0FBc0U7SUFFbkUsY0FBOEQ7SUFBOUQsb0dBQThEO0lBRWxFLGNBQ0Y7SUFERSw2REFDRjtJQUVNLGNBQWlGO0lBQWpGLCtG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LEdBQUcsSUFBSSxLQUFDLDJIQUNqQyxzQkFBa0IsR0FBRyxLQUFLLEdBQUcsSUFBSSxLQUFDLHVIQUNwQyxzQkFBa0IsR0FBRyxLQUFLLEdBQUcsSUFBSSxLQUFDO1lBWGhELGlCQVdrRDtZQUdsRCx3RUFJd0M7WUFHNUMsQUFERSxpQkFBTSxFQUNGO1lBR04sMkhBQWlCOzs7WUF4RFosb0NBQXVCO1lBRHZCLG1HQUE0RTtZQUtuRCxlQUF5QztZQUF6QyxrRUFBeUM7WUFvQjdELGVBQStCO1lBQUEsQUFBL0Isa0RBQStCLG1DQUFzQjtZQVFwRCxlQUFrRTtZQUVsRSxBQURBLEFBREEsK0ZBQWtFLGtDQUNyQyxnQ0FDRjs7WUFhNUIsZUFBK0I7WUFBL0IsMEZBQStCOzs7aUZEakI1QixzQkFBc0I7Y0FMbEMsU0FBUzsyQkFDRSwyQkFBMkI7bUhBMENFLE1BQU07a0JBQTVDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNFLFFBQVE7a0JBQTlDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNELEVBQUU7a0JBQXJDLFNBQVM7bUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNnQixVQUFVO2tCQUEzRCxZQUFZO21CQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDTSxZQUFZO2tCQUFqRSxZQUFZO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQXdMcEQsYUFBYTtrQkFEWixZQUFZO21CQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkFqT2pDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbiAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IHNpZ25hbCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG50eXBlIElMaXN0RGF0YSA9IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWFzeW5jLXNlYXJjaC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFzeW5jRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIC8vID09PSBJbnB1dHMgPT09XG4gIGhlaWdodCA9IGlucHV0PHN0cmluZz4oKTtcbiAgd2lkdGggPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHNpemUgPSBpbnB1dDwnbWQnIHwgJ3NtJz4oJ21kJyk7XG4gIGh0dHBTdHJlYW0gPSBpbnB1dC5yZXF1aXJlZDwoc2VhcmNoS2V5OiBzdHJpbmcpID0+IGFueT4oKTtcbiAgZGlzcGxheUtleSA9IGlucHV0PGFueT4oKTtcbiAgc2Vjb25kYXJ5RGlzcGxheUtleSA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwbGFjZWhvbGRlciA9IGlucHV0KCdTZWxlY3QnKTtcbiAgZGVib3VuY2VUaW1lID0gaW5wdXQoNDAwKTtcbiAgbWluSW5wdXRMZW5ndGggPSBpbnB1dCgyKTtcbiAgbXVsdGkgPSBpbnB1dChmYWxzZSk7XG4gIHVuaXF1ZUtleSA9IGlucHV0PHN0cmluZz4oKTtcbiAgY29udHJvbCA9IGlucHV0PEFic3RyYWN0Q29udHJvbCB8IG51bGw+KG51bGwpO1xuICBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgPSBpbnB1dChmYWxzZSk7XG4gIGRpc2FibGVDb3B5UGFzdGUgPSBpbnB1dChmYWxzZSk7XG4gIGRyb3Bkb3duTGlzdFdpZHRoID0gaW5wdXQ8c3RyaW5nPigpO1xuICBkcm9wZG93bkxpc3RQb3NpdGlvbiA9IGlucHV0PCdMZWZ0JyB8ICdSaWdodCc+KCdMZWZ0Jyk7XG4gIGN1c3RvbVBsYWNlaG9sZGVySWNvbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBzZWxlY3Rpb25zID0gaW5wdXQ8TWFwPHN0cmluZywgYW55Pj4obmV3IE1hcCgpKTtcbiAgc2VhcmNoVmFsdWUgPSBpbnB1dDxhbnk+KCk7XG5cbiAgLy8gPT09IE91dHB1dHMgPT09XG4gIG9uU2VsZWN0ID0gb3V0cHV0PElMaXN0RGF0YSB8IElMaXN0RGF0YVtdPigpO1xuICBzZWFyY2hRdWVyeUNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIGNsZWFyID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIGl0ZW1TZWxlY3RlZCA9IG91dHB1dDxJTGlzdERhdGE+KCk7XG4gIGl0ZW1SZW1vdmVkID0gb3V0cHV0PElMaXN0RGF0YT4oKTtcblxuICAvLyA9PT0gVGVtcGxhdGUgUmVmcyA9PT1cbiAgQFZpZXdDaGlsZCgnZGRCdG4nLCB7IHN0YXRpYzogZmFsc2UgfSkgb3JpZ2luITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXRSZWYhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkZCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZCE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKCdtaXNDdXN0b21JdGVtJywgeyBzdGF0aWM6IGZhbHNlIH0pIGN1c3RvbUl0ZW0hOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZCgnYXN5bmNDdXN0b21Mb2FkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY3VzdG9tTG9hZGVyITogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgLy8gPT09IEludGVybmFsIHN0YXRlID09PVxuICBzZWFyY2hJbnB1dDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBwcml2YXRlIGh0dHBTdHJlYW1UcmlnZ2VyID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjb250cm9sU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8vID09PSBTaWduYWxzID09PVxuICBvcGVuZWQgPSBzaWduYWwoZmFsc2UpO1xuICBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgZXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuICBvcGVuUG9wVXBPblRhYiA9IHNpZ25hbChmYWxzZSk7XG4gIGRhdGEgPSBzaWduYWw8SUxpc3REYXRhW10+KFtdKTtcbiAgcHJpdmF0ZSBpc1NlbGVjdGluZyA9IHNpZ25hbChmYWxzZSk7IC8vIEZsYWcgdG8gcHJldmVudCByZW9wZW5pbmcgYWZ0ZXIgc2VsZWN0aW9uXG5cbiAgLy8gPT09IExpZmVjeWNsZSA9PT1cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubXVsdGkoKSAmJiAhdGhpcy51bmlxdWVLZXkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbdW5pcXVlS2V5XSByZXF1aXJlZCBpbiBtdWx0aSBtb2RlLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIFNldCB1cCBzZWFyY2ggc3Vic2NyaXB0aW9uIGluIG5nT25Jbml0IChwcm9wZXIgbGlmZWN5Y2xlLCBub3QgaW4gZWZmZWN0KVxuICAgIGNvbnN0IHNlYXJjaE9ic2VydmFibGUgPSB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFwKCh2YWwpID0+IHRoaXMuc2VhcmNoUXVlcnlDaGFuZ2UuZW1pdCh2YWwpKSxcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSgpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSBtZXJnZShzZWFyY2hPYnNlcnZhYmxlLCB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyKVxuICAgICAgLnN1YnNjcmliZSgocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyBEb24ndCBwcm9jZXNzIGlmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2Ygc2VsZWN0aW5nXG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxID0gcXVlcnk/LnRyaW0oKSA/PyAnJztcbiAgICAgICAgaWYgKCFxIHx8IHEubGVuZ3RoIDwgdGhpcy5taW5JbnB1dExlbmd0aCgpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5lcnJvci5zZXQoZmFsc2UpO1xuXG4gICAgICAgIC8vIE9wZW4gb3ZlcmxheSBpZiBub3QgeWV0IG9wZW5cbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGwgSFRUUCBzdHJlYW1cbiAgICAgICAgdGhpcy5odHRwU3RyZWFtKCkocSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAobGlzdDogSUxpc3REYXRhW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldChsaXN0KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpICYmIGxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3Iuc2V0KHRydWUpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sKCk/LnZhbHVlKSB7XG4gICAgICB0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzKHRoaXMuY29udHJvbCgpIS52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sKCk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoXG4gICAgICB0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzXG4gICAgKTtcblxuICAgIC8vIEhhbmRsZSBzZWFyY2hWYWx1ZSBpbnB1dCBjaGFuZ2VzXG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUoKSkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKHRoaXMuc2VhcmNoVmFsdWUoKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIEhhbmRsZSBzZWFyY2hWYWx1ZSBjaGFuZ2VzXG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUodGhpcy5zZWFyY2hWYWx1ZSgpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGRpc2FibGVkIGNoYW5nZXNcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5odHRwU3RyZWFtVHJpZ2dlci5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gPT09IE1ldGhvZHMgPT09XG4gIHJlZnJlc2hIdHRwU3RyZWFtKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyLm5leHQocXVlcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sQ2hhbmdlcyA9ICh2YWx1ZXM6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgdmFsdWVzLmZvckVhY2goKGVsKSA9PiB0aGlzLnNlbGVjdERhdGEoZWwsIHRydWUpKTtcbiAgfTtcblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgMCxcbiAgICAgICAgNFxuICAgICAgKSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgICAgIDAsXG4gICAgICAgIDRcbiAgICAgICksXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgMCxcbiAgICAgICAgLTRcbiAgICAgICksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICAgICAgICAwLFxuICAgICAgICAtNFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24oKSA9PT0gJ1JpZ2h0JyA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKCkgOiBwb3NpdGlvbnNCb3R0b20pLFxuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcCksXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbi5jbGllbnRXaWR0aCxcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgoKSkge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpIH0pO1xuICAgIH1cblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlRHJvcGRvd24oKSk7XG4gICAgdGhpcy5vcGVuZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLm9wZW5lZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMub3BlblBvcFVwT25UYWIuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIHRoaXMuZGF0YS5zZXQoW10pO1xuICB9XG5cbiAgZW5hYmxlUG9wVXBPblRhYigpIHtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiLnNldCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucmVzZXQoKTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdERhdGEoaXRlbTogSUxpc3REYXRhLCBlZmZlY3RlZEZyb21PdXRzaWRlID0gdHJ1ZSkge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAvLyBTZXQgZmxhZyB0byBwcmV2ZW50IGVmZmVjdCBmcm9tIHJlb3BlbmluZyBkcm9wZG93blxuICAgIHRoaXMuaXNTZWxlY3Rpbmcuc2V0KHRydWUpO1xuXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcblxuICAgIGlmICghdGhpcy5tdWx0aSgpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoaXRlbVt0aGlzLmRpc3BsYXlLZXkoKV0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0aW9ucygpLmhhcyhpdGVtW3RoaXMudW5pcXVlS2V5KCkhXSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25zKCkuc2V0KGl0ZW1bdGhpcy51bmlxdWVLZXkoKSFdLCBpdGVtKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICBpZiAoIWVmZmVjdGVkRnJvbU91dHNpZGUpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgIH0sIDEwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZSgnJyk7XG4gICAgICB0aGlzLmRhdGEuc2V0KFtdKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcblxuICAgIC8vIFJlc2V0IGZsYWcgYWZ0ZXIgYSBtaWNyb3Rhc2sgdG8gYWxsb3cgY2xvc2VEcm9wZG93biB0byBjb21wbGV0ZVxuICAgIC8vIGJ1dCBiZWZvcmUgYW55IHBvdGVudGlhbCBzdWJzY3JpcHRpb24gcnVuc1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHRoaXMuaXNTZWxlY3Rpbmcuc2V0KGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbTogSUxpc3REYXRhKSB7XG4gICAgdGhpcy5pdGVtUmVtb3ZlZC5lbWl0KGl0ZW0pO1xuICAgIHRoaXMuc2VsZWN0aW9ucygpLmRlbGV0ZShpdGVtW3RoaXMudW5pcXVlS2V5KCkhXSk7XG4gICAgdGhpcy5zZXRDb250cm9sVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbFZhbHVlKHZhbHVlOiBJTGlzdERhdGEgfCBJTGlzdERhdGFbXSkge1xuICAgIHRoaXMub25TZWxlY3QuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5jb250cm9sKCk/LnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEl0ZW1zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9ucygpLnZhbHVlcygpKTtcbiAgfVxuXG4gIHJlbW92ZUlucHV0VmFsdWUoKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpO1xuICAgIHRoaXMuZGF0YS5zZXQoW10pO1xuICAgIHRoaXMuY2xlYXIuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGRlZmF1bHRDYWxsKCkge1xuICAgIGlmICh0aGlzLm1pbklucHV0TGVuZ3RoKCkgPT09IC0xIHx8IHRoaXMubWluSW5wdXRMZW5ndGgoKSA9PT0gMCkge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuaHR0cFN0cmVhbSgpKHRoaXMuc2VhcmNoSW5wdXQudmFsdWUgfHwgJycpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChsaXN0OiBJTGlzdERhdGFbXSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZGF0YS5zZXQobGlzdCk7XG4gICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiZGQtd3JhcHBlclwiXG4gICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBvcGVuZWQoKSwgZGlzYWJsZWQ6IGRpc2FibGVkKCksIHJlYWRvbmx5OiByZWFkb25seSgpIH1cIlxuICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGgoKVwiXG4gICAgICNkZEJ0bj5cbiAgXG4gIDwhLS0gU2VsZWN0ZWQgY2hpcHMgZm9yIG11bHRpLXNlbGVjdCAtLT5cbiAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWxpc3RcIiAqbmdJZj1cIm11bHRpKCkgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNoaXBcIlxuICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hpcC1tZCc6IHNpemUoKSA9PT0gJ21kJywgJ2NoaXAtc20nOiBzaXplKCkgPT09ICdzbScgfVwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCI+XG4gICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdoNic6IHNpemUoKSA9PT0gJ21kJywgJ2g4LWInOiBzaXplKCkgPT09ICdzbScgfVwiXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNHB4O1wiPlxuICAgICAgICB7eyBpdGVtW2Rpc3BsYXlLZXkoKV0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1pYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGN1cnNvcjogJ3BvaW50ZXInLCAnZm9udC1zaXplJzogc2l6ZSgpID09PSAnc20nID8gJzEycHgnIDogJzE0cHgnIH1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZW1vdmVJdGVtKGl0ZW0pXCI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gU2VhcmNoIGlucHV0IC0tPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCI+XG4gICAgPCEtLSBQbGFjZWhvbGRlciBpY29uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjdXN0b21QbGFjZWhvbGRlckljb24oKTsgZWxzZSBkZWZhdWx0U2VhcmNoSWNvblwiIGNsYXNzPVwiY3VzdG9tLWljb25cIj5cbiAgICAgIDxpbWcgW3NyY109XCJjdXN0b21QbGFjZWhvbGRlckljb24oKVwiIGFsdD1cImN1c3RvbUljb25cIiAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlYXJjaEljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cImljb24taWMtYWN0aW9uLXNlYXJjaC0yNFwiPjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBJbnB1dCBmaWVsZCAtLT5cbiAgICA8aW5wdXQgW25nQ2xhc3NdPVwieyAnaXAtbWQnOiBzaXplKCkgPT09ICdtZCcsICdpcC1zbSc6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBjbGFzcz1cImJsYWNrLXRleHQgaDZcIlxuICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgKGZvY3VzKT1cImRlZmF1bHRDYWxsKClcIlxuICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZW5hYmxlUG9wVXBPblRhYigpXCJcbiAgICAgICAgICAgKGNvcHkpPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgKHBhc3RlKT1cImRpc2FibGVDb3B5UGFzdGUoKSA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgICAgIChjdXQpPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gZmFsc2UgOiB0cnVlXCIvPlxuXG4gICAgPCEtLSBDbGVhciBpbnB1dCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi1pYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNCBjcm9vcy1pY29uXCJcbiAgICAgICAgICpuZ0lmPVwic2VhcmNoSW5wdXQudmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUlucHV0VmFsdWUoKVwiXG4gICAgICAgICAoa2V5dXAuZW50ZXIpPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gRHJvcGRvd24gdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2RkPlxuICA8ZGl2IGNsYXNzPVwiZGQtbGlzdFwiXG4gICAgICAgW25nU3R5bGVdPVwieyAnbWF4LWhlaWdodCc6IGhlaWdodCgpLCAnd2lkdGgnOiBkcm9wZG93bkxpc3RXaWR0aCgpIH1cIlxuICAgICAgIFtuZ0NsYXNzXT1cInsgJ2RkLWxpc3QtcGQnOiBkYXRhKCkubGVuZ3RoID09PSAwIH1cIlxuICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cIm9wZW5Qb3BVcE9uVGFiKClcIj5cblxuICAgIDwhLS0gTG9hZGVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Mb2FkZXI7IGVsc2UgZGVmYXVsdExvYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxvYWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9hZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNvbnRhaW5lclwiICpuZ0lmPVwibG9hZGluZygpICYmICFjdXN0b21Mb2FkZXJcIj5cbiAgICAgICAgICA8bWlzLWxvYWRlciBbbW9iaWxlVmlld109XCJ0cnVlXCI+PC9taXMtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEVycm9yIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvcigpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8cD5Vbmtub3duIGVycm9yIGhhcyBvY2N1cnJlZCwgPGJyLz4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci48L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRGF0YSBsaXN0IC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZygpICYmICFlcnJvcigpICYmIGRhdGEoKS5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEoKVwiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPlxuICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCItMVwiIGNka0ZvY3VzSW5pdGlhbD48L2Rpdj5cblxuICAgICAgICAgIDwhLS0gQ3VzdG9tIGl0ZW0gLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUl0ZW07IGVsc2Ugc3RhbmRhcmRJdGVtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBTdGFuZGFyZCBpdGVtIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRJdGVtPlxuICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwib3BlblBvcFVwT25UYWIoKSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPnt7IGl0ZW1bZGlzcGxheUtleSgpXSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRhcnlcIj57eyBpdGVtW3NlY29uZGFyeURpc3BsYXlLZXkoKV0gfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBObyBkYXRhIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZygpICYmICFlcnJvcigpICYmIGRhdGEoKS5sZW5ndGggPT09IDAgJiYgc2VhcmNoSW5wdXQudmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLW5vdC1mb3VuZFwiPk5vIERhdGEgQXZhaWxhYmxlPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
576
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBTVosU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsYUFBYSxFQUViLHNCQUFzQixHQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDYjlDLEFBSEYsK0JBRXdDLGVBRUw7SUFDL0IsWUFDRjtJQUFBLGlCQUFPO0lBQ1AsZ0NBSXVDO0lBQWpDLEFBREEsaU5BQVMsMEJBQWdCLEtBQUMsZ05BQ1gsMEJBQWdCLEtBQUM7SUFFeEMsQUFERSxpQkFBTyxFQUNIOzs7O0lBWkQsb0dBQXNFO0lBRW5FLGNBQThEO0lBQTlELG9HQUE4RDtJQUVsRSxjQUNGO0lBREUsNkRBQ0Y7SUFFTSxjQUFp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WixZQUFZO21CQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkFqUmpDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbiAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IHNpZ25hbCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgSUxpc3REYXRhID0gYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtYXN5bmMtc2VhcmNoLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXN5bmNEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgLy8gPT09IElucHV0cyA9PT1cbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICB3aWR0aCA9IGlucHV0PHN0cmluZz4oKTtcbiAgc2l6ZSA9IGlucHV0PCdtZCcgfCAnc20nPignbWQnKTtcbiAgaHR0cFN0cmVhbSA9IGlucHV0LnJlcXVpcmVkPChzZWFyY2hLZXk6IHN0cmluZykgPT4gYW55PigpO1xuICBkaXNwbGF5S2V5ID0gaW5wdXQ8YW55PigpO1xuICBzZWNvbmRhcnlEaXNwbGF5S2V5ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHBsYWNlaG9sZGVyID0gaW5wdXQoJ1NlbGVjdCcpO1xuICBkZWJvdW5jZVRpbWUgPSBpbnB1dCg0MDApO1xuICBtaW5JbnB1dExlbmd0aCA9IGlucHV0KDIpO1xuICBtdWx0aSA9IGlucHV0KGZhbHNlKTtcbiAgdW5pcXVlS2V5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICBjb250cm9sID0gaW5wdXQ8QWJzdHJhY3RDb250cm9sIHwgbnVsbD4obnVsbCk7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSA9IGlucHV0KGZhbHNlKTtcbiAgZGlzYWJsZUNvcHlQYXN0ZSA9IGlucHV0KGZhbHNlKTtcbiAgZHJvcGRvd25MaXN0V2lkdGggPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGRyb3Bkb3duTGlzdFBvc2l0aW9uID0gaW5wdXQ8J0xlZnQnIHwgJ1JpZ2h0Jz4oJ0xlZnQnKTtcbiAgY3VzdG9tUGxhY2Vob2xkZXJJY29uID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHNlbGVjdGlvbnMgPSBpbnB1dDxNYXA8c3RyaW5nLCBhbnk+PihuZXcgTWFwKCkpO1xuICBzZWFyY2hWYWx1ZSA9IGlucHV0PGFueT4oKTtcblxuICAvLyA9PT0gT3V0cHV0cyA9PT1cbiAgb25TZWxlY3QgPSBvdXRwdXQ8SUxpc3REYXRhIHwgSUxpc3REYXRhW10+KCk7XG4gIHNlYXJjaFF1ZXJ5Q2hhbmdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgY2xlYXIgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgaXRlbVNlbGVjdGVkID0gb3V0cHV0PElMaXN0RGF0YT4oKTtcbiAgaXRlbVJlbW92ZWQgPSBvdXRwdXQ8SUxpc3REYXRhPigpO1xuXG4gIC8vID09PSBUZW1wbGF0ZSBSZWZzID09PVxuICBAVmlld0NoaWxkKCdkZEJ0bicsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmlnaW4hOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dFJlZiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2RkJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRkITogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIEBDb250ZW50Q2hpbGQoJ21pc0N1c3RvbUl0ZW0nLCB7IHN0YXRpYzogZmFsc2UgfSkgY3VzdG9tSXRlbSE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKCdhc3luY0N1c3RvbUxvYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjdXN0b21Mb2FkZXIhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICAvLyA9PT0gSW50ZXJuYWwgc3RhdGUgPT09XG4gIHNlYXJjaElucHV0OiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIHByaXZhdGUgaHR0cFN0cmVhbVRyaWdnZXIgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGNvbnRyb2xTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgLy8gPT09IFNpZ25hbHMgPT09XG4gIG9wZW5lZCA9IHNpZ25hbChmYWxzZSk7XG4gIGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBlcnJvciA9IHNpZ25hbChmYWxzZSk7XG4gIG9wZW5Qb3BVcE9uVGFiID0gc2lnbmFsKGZhbHNlKTtcbiAgZGF0YSA9IHNpZ25hbDxJTGlzdERhdGFbXT4oW10pO1xuICBcbiAgLyoqXG4gICAqIFRyYWNrcyB0aGUgbGFzdCBzZWxlY3RlZCB2YWx1ZSB0byBwcmV2ZW50IGRyb3Bkb3duIGZyb20gcmVvcGVuaW5nIHdoZW46XG4gICAqIC0gSW5wdXQgcmVnYWlucyBmb2N1cyBhZnRlciBzZWxlY3Rpb24gKHNob3dpbmcgc2VsZWN0ZWQgdmFsdWUpXG4gICAqIC0gUGFyZW50IGNvbXBvbmVudCByZS1yZW5kZXJzIGFuZCB0cmlnZ2VycyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIC0gVXNlciBoYXNuJ3QgYWN0dWFsbHkgdHlwZWQgYSBuZXcgc2VhcmNoIHF1ZXJ5XG4gICAqIFxuICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBpbnB1dCBzZXJ2ZXMgZHVhbCBwdXJwb3NlczpcbiAgICogMS4gU2VhcmNoIGlucHV0ICh1c2VyIHR5cGVzLCB0cmlnZ2VycyBBUEkgY2FsbHMpXG4gICAqIDIuIERpc3BsYXkgc2VsZWN0ZWQgdmFsdWUgKHNob3dzIHdoYXQgd2FzIHNlbGVjdGVkKVxuICAgKiBcbiAgICogV2l0aG91dCB0aGlzLCBzZXR0aW5nIHRoZSBpbnB1dCB2YWx1ZSBhZnRlciBzZWxlY3Rpb24gd291bGQgdHJpZ2dlclxuICAgKiB0aGUgc2VhcmNoIHN1YnNjcmlwdGlvbiwgY2F1c2luZyB1bndhbnRlZCBBUEkgY2FsbHMgYW5kIGRyb3Bkb3duIHJlb3BlbmluZy5cbiAgICovXG4gIHByaXZhdGUgbGFzdFNlbGVjdGVkVmFsdWUgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gPT09IExpZmVjeWNsZSA9PT1cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubXVsdGkoKSAmJiAhdGhpcy51bmlxdWVLZXkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbdW5pcXVlS2V5XSByZXF1aXJlZCBpbiBtdWx0aSBtb2RlLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlYXJjaCBvYnNlcnZhYmxlIHBpcGVsaW5lIHdpdGggUnhKUyBvcGVyYXRvcnMgdG8gZmlsdGVyIGF0IHRoZSBzb3VyY2UuXG4gICAgICogVGhpcyBkZWNsYXJhdGl2ZSBhcHByb2FjaCBwcmV2ZW50cyB1bndhbnRlZCBzZWFyY2hlcyBieSBmaWx0ZXJpbmc6XG4gICAgICogMS4gRW1wdHkgcXVlcmllcyBvciBxdWVyaWVzIGJlbG93IG1pbklucHV0TGVuZ3RoXG4gICAgICogMi4gUXVlcmllcyB0aGF0IG1hdGNoIHRoZSBsYXN0IHNlbGVjdGVkIHZhbHVlIChwcmV2ZW50cyByZW9wZW5pbmcgYWZ0ZXIgc2VsZWN0aW9uKVxuICAgICAqIFxuICAgICAqIEZpbHRlcmluZyBhdCB0aGUgc291cmNlIGlzIHByZWZlcnJlZCBvdmVyIGNoZWNraW5nIGZsYWdzIGluIHN1YnNjcmliZSgpXG4gICAgICogYmVjYXVzZSBpdCdzIG1vcmUgZGVjbGFyYXRpdmUsIHRlc3RhYmxlLCBhbmQgZm9sbG93cyBSeEpTIGJlc3QgcHJhY3RpY2VzLlxuICAgICAqL1xuICAgIGNvbnN0IHNlYXJjaE9ic2VydmFibGUgPSB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFwKCh2YWwpID0+IHRoaXMuc2VhcmNoUXVlcnlDaGFuZ2UuZW1pdCh2YWwpKSxcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSgpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAvLyBGaWx0ZXI6IE9ubHkgcHJvY2VzcyBub24tZW1wdHkgcXVlcmllcyB0aGF0IG1lZXQgbWluSW5wdXRMZW5ndGggcmVxdWlyZW1lbnRcbiAgICAgIGZpbHRlcigocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBxID0gcXVlcnk/LnRyaW0oKSA/PyAnJztcbiAgICAgICAgaWYgKCFxIHx8IHEubGVuZ3RoIDwgdGhpcy5taW5JbnB1dExlbmd0aCgpKSB7XG4gICAgICAgICAgLy8gQ2xvc2UgZHJvcGRvd24gaWYgcXVlcnkgaXMgdG9vIHNob3J0XG4gICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSksXG4gICAgICAvLyBGaWx0ZXI6IElnbm9yZSBxdWVyaWVzIHRoYXQgbWF0Y2ggdGhlIGxhc3Qgc2VsZWN0ZWQgdmFsdWVcbiAgICAgIC8vIFRoaXMgcHJldmVudHMgZHJvcGRvd24gZnJvbSByZW9wZW5pbmcgd2hlbiBpbnB1dCBzaG93cyBzZWxlY3RlZCB2YWx1ZVxuICAgICAgZmlsdGVyKChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHEgPSBxdWVyeT8udHJpbSgpID8/ICcnO1xuICAgICAgICBjb25zdCBsYXN0U2VsZWN0ZWQgPSB0aGlzLmxhc3RTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgIC8vIEFsbG93IHNlYXJjaCBpZiBubyBwcmV2aW91cyBzZWxlY3Rpb24gT1IgcXVlcnkgaXMgZGlmZmVyZW50IGZyb20gc2VsZWN0ZWQgdmFsdWVcbiAgICAgICAgcmV0dXJuICFsYXN0U2VsZWN0ZWQgfHwgcSAhPT0gbGFzdFNlbGVjdGVkO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlIHRvIHNlYXJjaCBxdWVyaWVzIGFuZCB0cmlnZ2VyIEhUVFAgc3RyZWFtLlxuICAgICAqIEFsbCBmaWx0ZXJpbmcgaXMgZG9uZSBpbiB0aGUgcGlwZSBjaGFpbiBhYm92ZSwgc28gdGhpcyBjYWxsYmFja1xuICAgICAqIG9ubHkgaGFuZGxlcyB0aGUgYWN0dWFsIHNlYXJjaCBleGVjdXRpb24uXG4gICAgICovXG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSBtZXJnZShzZWFyY2hPYnNlcnZhYmxlLCB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIEFkZGl0aW9uYWwgZmlsdGVyIGZvciBodHRwU3RyZWFtVHJpZ2dlciAobWFudWFsIHJlZnJlc2gpXG4gICAgICAgIGZpbHRlcigocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IHEgPSBxdWVyeT8udHJpbSgpID8/ICcnO1xuICAgICAgICAgIC8vIEZvciBtYW51YWwgdHJpZ2dlcnMsIHN0aWxsIHJlc3BlY3QgbWluSW5wdXRMZW5ndGggYW5kIGxhc3RTZWxlY3RlZFZhbHVlXG4gICAgICAgICAgaWYgKCFxIHx8IHEubGVuZ3RoIDwgdGhpcy5taW5JbnB1dExlbmd0aCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGxhc3RTZWxlY3RlZCA9IHRoaXMubGFzdFNlbGVjdGVkVmFsdWUoKTtcbiAgICAgICAgICByZXR1cm4gIWxhc3RTZWxlY3RlZCB8fCBxICE9PSBsYXN0U2VsZWN0ZWQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHEgPSBxdWVyeT8udHJpbSgpID8/ICcnO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5lcnJvci5zZXQoZmFsc2UpO1xuXG4gICAgICAgIC8vIE9wZW4gb3ZlcmxheSBpZiBub3QgeWV0IG9wZW5cbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGwgSFRUUCBzdHJlYW1cbiAgICAgICAgdGhpcy5odHRwU3RyZWFtKCkocSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAobGlzdDogSUxpc3REYXRhW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldChsaXN0KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpICYmIGxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3Iuc2V0KHRydWUpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sKCk/LnZhbHVlKSB7XG4gICAgICB0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzKHRoaXMuY29udHJvbCgpIS52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sKCk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoXG4gICAgICB0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzXG4gICAgKTtcblxuICAgIC8vIEhhbmRsZSBzZWFyY2hWYWx1ZSBpbnB1dCBjaGFuZ2VzXG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUoKSkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKHRoaXMuc2VhcmNoVmFsdWUoKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIEhhbmRsZSBzZWFyY2hWYWx1ZSBjaGFuZ2VzXG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUodGhpcy5zZWFyY2hWYWx1ZSgpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGRpc2FibGVkIGNoYW5nZXNcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5odHRwU3RyZWFtVHJpZ2dlci5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gPT09IE1ldGhvZHMgPT09XG4gIHJlZnJlc2hIdHRwU3RyZWFtKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyLm5leHQocXVlcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sQ2hhbmdlcyA9ICh2YWx1ZXM6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgdmFsdWVzLmZvckVhY2goKGVsKSA9PiB0aGlzLnNlbGVjdERhdGEoZWwsIHRydWUpKTtcbiAgfTtcblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgMCxcbiAgICAgICAgNFxuICAgICAgKSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgICAgIDAsXG4gICAgICAgIDRcbiAgICAgICksXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgMCxcbiAgICAgICAgLTRcbiAgICAgICksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICAgICAgICAwLFxuICAgICAgICAtNFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24oKSA9PT0gJ1JpZ2h0JyA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKCkgOiBwb3NpdGlvbnNCb3R0b20pLFxuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcCksXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbi5jbGllbnRXaWR0aCxcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgoKSkge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpIH0pO1xuICAgIH1cblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlRHJvcGRvd24oKSk7XG4gICAgdGhpcy5vcGVuZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLm9wZW5lZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMub3BlblBvcFVwT25UYWIuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIHRoaXMuZGF0YS5zZXQoW10pO1xuICB9XG5cbiAgZW5hYmxlUG9wVXBPblRhYigpIHtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiLnNldCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucmVzZXQoKTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGl0ZW0gc2VsZWN0aW9uIGZyb20gZHJvcGRvd24uXG4gICAqIFxuICAgKiBGb3Igc2luZ2xlLXNlbGVjdCBtb2RlOlxuICAgKiAtIFNldHMgaW5wdXQgdmFsdWUgdG8gZGlzcGxheSBzZWxlY3RlZCBpdGVtIChzdGFuZGFyZCBVWCBwYXR0ZXJuKVxuICAgKiAtIFN0b3JlcyBzZWxlY3RlZCB2YWx1ZSB0byBwcmV2ZW50IHJlb3BlbmluZyBkcm9wZG93biBvbiBmb2N1cy9jaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIC0gQmx1cnMgaW5wdXQgdG8gcHJldmVudCBpbW1lZGlhdGUgZm9jdXMtdHJpZ2dlcmVkIHNlYXJjaGVzXG4gICAqIFxuICAgKiBGb3IgbXVsdGktc2VsZWN0IG1vZGU6XG4gICAqIC0gQ2xlYXJzIGlucHV0IGZvciBuZXh0IHNlbGVjdGlvblxuICAgKiAtIE1haW50YWlucyBmb2N1cyBmb3IgY29udGludW91cyBzZWxlY3Rpb25cbiAgICovXG4gIHNlbGVjdERhdGEoaXRlbTogSUxpc3REYXRhLCBlZmZlY3RlZEZyb21PdXRzaWRlID0gdHJ1ZSkge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pO1xuXG4gICAgaWYgKCF0aGlzLm11bHRpKCkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBpdGVtW3RoaXMuZGlzcGxheUtleSgpXTtcbiAgICAgIC8vIFNldCBpbnB1dCB2YWx1ZSB0byBzaG93IHNlbGVjdGVkIGl0ZW0gKHN0YW5kYXJkIFVYIC0gbGlrZSBBbmd1bGFyIE1hdGVyaWFsLCBldGMuKVxuICAgICAgLy8gVXNlIGVtaXRFdmVudDogZmFsc2UgdG8gcHJldmVudCB0cmlnZ2VyaW5nIHZhbHVlQ2hhbmdlcyBzdWJzY3JpcHRpb25cbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBcbiAgICAgIC8vIFN0b3JlIHNlbGVjdGVkIHZhbHVlIC0gUnhKUyBmaWx0ZXIgd2lsbCBwcmV2ZW50IHJlb3BlbmluZyB3aXRoIHNhbWUgdmFsdWVcbiAgICAgIHRoaXMubGFzdFNlbGVjdGVkVmFsdWUuc2V0KHNlbGVjdGVkVmFsdWUpO1xuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25zKCkuaGFzKGl0ZW1bdGhpcy51bmlxdWVLZXkoKSFdKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbnMoKS5zZXQoaXRlbVt0aGlzLnVuaXF1ZUtleSgpIV0sIGl0ZW0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIGlmICghZWZmZWN0ZWRGcm9tT3V0c2lkZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKCcnKTtcbiAgICAgIHRoaXMuZGF0YS5zZXQoW10pO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXG4gICAgLy8gQmx1ciBpbnB1dCB0byBwcmV2ZW50IGZvY3VzIGV2ZW50cyBmcm9tIGltbWVkaWF0ZWx5IHRyaWdnZXJpbmcgc2VhcmNoXG4gICAgLy8gVGhlIGxhc3RTZWxlY3RlZFZhbHVlIGZpbHRlciB3aWxsIGFsc28gcHJldmVudCByZW9wZW5pbmcgaWYgZm9jdXMgb2NjdXJzXG4gICAgaWYgKHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSXRlbShpdGVtOiBJTGlzdERhdGEpIHtcbiAgICB0aGlzLml0ZW1SZW1vdmVkLmVtaXQoaXRlbSk7XG4gICAgdGhpcy5zZWxlY3Rpb25zKCkuZGVsZXRlKGl0ZW1bdGhpcy51bmlxdWVLZXkoKSFdKTtcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sVmFsdWUodmFsdWU6IElMaXN0RGF0YSB8IElMaXN0RGF0YVtdKSB7XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25zKCkudmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgaW5wdXQgYW5kIHJlc2V0cyBzZWxlY3Rpb24gc3RhdGUuXG4gICAqIENsZWFyaW5nIGxhc3RTZWxlY3RlZFZhbHVlIGFsbG93cyBuZXcgc2VhcmNoZXMgdG8gcHJvY2VlZCBub3JtYWxseS5cbiAgICovXG4gIHJlbW92ZUlucHV0VmFsdWUoKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpO1xuICAgIHRoaXMuZGF0YS5zZXQoW10pO1xuICAgIHRoaXMubGFzdFNlbGVjdGVkVmFsdWUuc2V0KG51bGwpO1xuICAgIHRoaXMuY2xlYXIuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCByZWNlaXZlcyBmb2N1cy5cbiAgICogT25seSBvcGVucyBkcm9wZG93biBpZjpcbiAgICogMS4gbWluSW5wdXRMZW5ndGggYWxsb3dzIGl0ICgtMSBvciAwIG1lYW5zIG9wZW4gb24gZm9jdXMpXG4gICAqIDIuIElucHV0IHZhbHVlIGRvZXNuJ3QgbWF0Y2ggbGFzdCBzZWxlY3RlZCB2YWx1ZSAocHJldmVudHMgcmVvcGVuaW5nIGFmdGVyIHNlbGVjdGlvbilcbiAgICogXG4gICAqIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBpbnB1dCByZWdhaW5zIGZvY3VzIGFmdGVyIHNlbGVjdGlvbi5cbiAgICogVGhlIFJ4SlMgZmlsdGVyIGluIHNlYXJjaE9ic2VydmFibGUgaGFuZGxlcyB2YWx1ZUNoYW5nZXMsIGJ1dCBmb2N1cyBldmVudHNcbiAgICogbmVlZCBzZXBhcmF0ZSBoYW5kbGluZyBzaW5jZSB0aGV5IGJ5cGFzcyB2YWx1ZUNoYW5nZXMuXG4gICAqL1xuICBkZWZhdWx0Q2FsbCgpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnNlYXJjaElucHV0LnZhbHVlPy50cmltKCkgfHwgJyc7XG4gICAgY29uc3QgbGFzdFNlbGVjdGVkID0gdGhpcy5sYXN0U2VsZWN0ZWRWYWx1ZSgpO1xuICAgIFxuICAgIC8vIERvbid0IG9wZW4gaWYgdmFsdWUgbWF0Y2hlcyBsYXN0IHNlbGVjdGVkICh1c2VyIGhhc24ndCB0eXBlZCBuZXcgcXVlcnkpXG4gICAgaWYgKGxhc3RTZWxlY3RlZCAmJiBjdXJyZW50VmFsdWUgPT09IGxhc3RTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBPbmx5IG9wZW4gb24gZm9jdXMgaWYgbWluSW5wdXRMZW5ndGggYWxsb3dzIGl0XG4gICAgaWYgKHRoaXMubWluSW5wdXRMZW5ndGgoKSA9PT0gLTEgfHwgdGhpcy5taW5JbnB1dExlbmd0aCgpID09PSAwKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5odHRwU3RyZWFtKCkodGhpcy5zZWFyY2hJbnB1dC52YWx1ZSB8fCAnJykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGxpc3Q6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5kYXRhLnNldChsaXN0KTtcbiAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSAmJiBsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmVycm9yLnNldCh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJkZC13cmFwcGVyXCJcbiAgICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IG9wZW5lZCgpLCBkaXNhYmxlZDogZGlzYWJsZWQoKSwgcmVhZG9ubHk6IHJlYWRvbmx5KCkgfVwiXG4gICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCJcbiAgICAgI2RkQnRuPlxuICBcbiAgPCEtLSBTZWxlY3RlZCBjaGlwcyBmb3IgbXVsdGktc2VsZWN0IC0tPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdFwiICpuZ0lmPVwibXVsdGkoKSAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hpcFwiXG4gICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGlwLW1kJzogc2l6ZSgpID09PSAnbWQnLCAnY2hpcC1zbSc6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIj5cbiAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ2g2Jzogc2l6ZSgpID09PSAnbWQnLCAnaDgtYic6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHg7XCI+XG4gICAgICAgIHt7IGl0ZW1bZGlzcGxheUtleSgpXSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY3Vyc29yOiAncG9pbnRlcicsICdmb250LXNpemUnOiBzaXplKCkgPT09ICdzbScgPyAnMTJweCcgOiAnMTRweCcgfVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlbW92ZUl0ZW0oaXRlbSlcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBTZWFyY2ggaW5wdXQgLS0+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cbiAgICA8IS0tIFBsYWNlaG9sZGVyIGljb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImN1c3RvbVBsYWNlaG9sZGVySWNvbigpOyBlbHNlIGRlZmF1bHRTZWFyY2hJY29uXCIgY2xhc3M9XCJjdXN0b20taWNvblwiPlxuICAgICAgPGltZyBbc3JjXT1cImN1c3RvbVBsYWNlaG9sZGVySWNvbigpXCIgYWx0PVwiY3VzdG9tSWNvblwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VhcmNoSWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1pYy1hY3Rpb24tc2VhcmNoLTI0XCI+PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIElucHV0IGZpZWxkIC0tPlxuICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7ICdpcC1tZCc6IHNpemUoKSA9PT0gJ21kJywgJ2lwLXNtJzogc2l6ZSgpID09PSAnc20nIH1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmxhY2stdGV4dCBoNlwiXG4gICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAoZm9jdXMpPVwiZGVmYXVsdENhbGwoKVwiXG4gICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJlbmFibGVQb3BVcE9uVGFiKClcIlxuICAgICAgICAgICAoY29weSk9XCJkaXNhYmxlQ29weVBhc3RlKCkgPyBmYWxzZSA6IHRydWVcIlxuICAgICAgICAgICAocGFzdGUpPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgKGN1dCk9XCJkaXNhYmxlQ29weVBhc3RlKCkgPyBmYWxzZSA6IHRydWVcIi8+XG5cbiAgICA8IS0tIENsZWFyIGlucHV0IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0IGNyb29zLWljb25cIlxuICAgICAgICAgKm5nSWY9XCJzZWFyY2hJbnB1dC52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCJcbiAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZW1vdmVJbnB1dFZhbHVlKClcIj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBEcm9wZG93biB0ZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGQ+XG4gIDxkaXYgY2xhc3M9XCJkZC1saXN0XCJcbiAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogaGVpZ2h0KCksICd3aWR0aCc6IGRyb3Bkb3duTGlzdFdpZHRoKCkgfVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyAnZGQtbGlzdC1wZCc6IGRhdGEoKS5sZW5ndGggPT09IDAgfVwiXG4gICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICBjZGtUcmFwRm9jdXNcbiAgICAgICBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwib3BlblBvcFVwT25UYWIoKVwiPlxuXG4gICAgPCEtLSBMb2FkZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmcoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUxvYWRlcjsgZWxzZSBkZWZhdWx0TG9hZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTG9hZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nKCkgJiYgIWN1c3RvbUxvYWRlclwiPlxuICAgICAgICAgIDxtaXMtbG9hZGVyIFttb2JpbGVWaWV3XT1cInRydWVcIj48L21pcy1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRXJyb3IgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxwPlVua25vd24gZXJyb3IgaGFzIG9jY3VycmVkLCA8YnIvPiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBEYXRhIGxpc3QgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nKCkgJiYgIWVycm9yKCkgJiYgZGF0YSgpLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YSgpXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCIgKGtleXVwLmVudGVyKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCI+XG4gICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBDdXN0b20gaXRlbSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSXRlbTsgZWxzZSBzdGFuZGFyZEl0ZW1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIFN0YW5kYXJkIGl0ZW0gLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGFuZGFyZEl0ZW0+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYigpID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5XCI+e3sgaXRlbVtkaXNwbGF5S2V5KCldIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY29uZGFyeVwiPnt7IGl0ZW1bc2Vjb25kYXJ5RGlzcGxheUtleSgpXSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5vIGRhdGEgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nKCkgJiYgIWVycm9yKCkgJiYgZGF0YSgpLmxlbmd0aCA9PT0gMCAmJiBzZWFyY2hJbnB1dC52YWx1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGEtbm90LWZvdW5kXCI+Tm8gRGF0YSBBdmFpbGFibGU8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -24,11 +24,11 @@ export class SliderComponent {
24
24
  } if (rf & 2) {
25
25
  i0.ɵɵadvance();
26
26
  i0.ɵɵproperty("min", ctx.min())("max", ctx.max())("value", ctx.currentValue());
27
- } }, styles: [".slider[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center}.slider[_ngcontent-%COMP%] input[type=range][_ngcontent-%COMP%]{width:100%;-webkit-appearance:none;appearance:none;height:8px;background:var(--brand-primary-lightest, #CBDDFB);outline:none;border-radius:5px}.slider[_ngcontent-%COMP%] input[type=range][_ngcontent-%COMP%]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}.slider[_ngcontent-%COMP%] input[type=range][_ngcontent-%COMP%]::-moz-range-thumb{width:15px;height:15px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}.slider[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-left:10px}"] }); }
27
+ } }, styles: [".slider[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;input[type=range]{width:100%;-webkit-appearance:none;appearance:none;height:8px;background:var(--brand-primary-lightest, #CBDDFB);outline:none;border-radius:5px;&::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}&::-moz-range-thumb{width:15px;height:15px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}}span{margin-left:10px}}"] }); }
28
28
  }
29
29
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SliderComponent, [{
30
30
  type: Component,
31
- args: [{ selector: 'mis-slider', template: "<div class=\"slider\">\n <input \n type=\"range\" \n [min]=\"min()\" \n [max]=\"max()\" \n [value]=\"currentValue()\"\n (input)=\"onInputChange($event.target.value)\" />\n</div>\n \n\n ", styles: [".slider{width:100%;display:flex;align-items:center}.slider input[type=range]{width:100%;-webkit-appearance:none;appearance:none;height:8px;background:var(--brand-primary-lightest, #CBDDFB);outline:none;border-radius:5px}.slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}.slider input[type=range]::-moz-range-thumb{width:15px;height:15px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}.slider span{margin-left:10px}\n"] }]
31
+ args: [{ selector: 'mis-slider', template: "<div class=\"slider\">\n <input \n type=\"range\" \n [min]=\"min()\" \n [max]=\"max()\" \n [value]=\"currentValue()\"\n (input)=\"onInputChange($event.target.value)\" />\n</div>\n \n\n ", styles: [".slider{width:100%;display:flex;align-items:center;input[type=range]{width:100%;-webkit-appearance:none;appearance:none;height:8px;background:var(--brand-primary-lightest, #CBDDFB);outline:none;border-radius:5px;&::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}&::-moz-range-thumb{width:15px;height:15px;background:var(--brand-primary, #0937B2);cursor:pointer;border-radius:50%}}span{margin-left:10px}}\n"] }]
32
32
  }], () => [], { valueChange: [{
33
33
  type: Output
34
34
  }] }); })();