@skyux/list-builder-view-checklist 8.0.0-alpha.2 → 8.0.0-alpha.21

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.
@@ -20,6 +20,43 @@ import * as i7 from "./list-view-checklist-item.component";
20
20
  * @deprecated List builder view checklist and its features are deprecated. Use repeater instead. For more information, see https://developer.blackbaud.com/skyux/components/repeater.
21
21
  */
22
22
  export class SkyListViewChecklistComponent extends ListViewComponent {
23
+ /**
24
+ * The name of the view.
25
+ * @required
26
+ */
27
+ set name(value) {
28
+ this.viewName = value;
29
+ }
30
+ /**
31
+ * How many items users can select.
32
+ * `"single"` allows users to select one item in the checklist, while `"multiple"`
33
+ * allows users to select multiple items in the checklist.
34
+ * @default "multiple"
35
+ */
36
+ set selectMode(value) {
37
+ this._selectMode = value;
38
+ if (this.selectMode === 'multiple') {
39
+ this.dispatcher.toolbarShowMultiselectToolbar(true);
40
+ }
41
+ else {
42
+ this.showOnlySelected = false;
43
+ this.dispatcher.toolbarShowMultiselectToolbar(false);
44
+ }
45
+ this.reapplyFilter(this.showOnlySelected);
46
+ }
47
+ get selectMode() {
48
+ return this._selectMode || 'multiple';
49
+ }
50
+ /**
51
+ * Whether to display selected items only.
52
+ * @default false
53
+ */
54
+ set showOnlySelected(value) {
55
+ this._showOnlySelected = value;
56
+ }
57
+ get showOnlySelected() {
58
+ return this._showOnlySelected;
59
+ }
23
60
  constructor(state, dispatcher, checklistState, checklistDispatcher, logger) {
24
61
  super(state, 'Checklist View');
25
62
  this.dispatcher = dispatcher;
@@ -77,43 +114,6 @@ export class SkyListViewChecklistComponent extends ListViewComponent {
77
114
  this._selectedIdMap = selectedItems.item.selectedIdMap;
78
115
  });
79
116
  }
80
- /**
81
- * The name of the view.
82
- * @required
83
- */
84
- set name(value) {
85
- this.viewName = value;
86
- }
87
- /**
88
- * How many items users can select.
89
- * `"single"` allows users to select one item in the checklist, while `"multiple"`
90
- * allows users to select multiple items in the checklist.
91
- * @default "multiple"
92
- */
93
- set selectMode(value) {
94
- this._selectMode = value;
95
- if (this.selectMode === 'multiple') {
96
- this.dispatcher.toolbarShowMultiselectToolbar(true);
97
- }
98
- else {
99
- this.showOnlySelected = false;
100
- this.dispatcher.toolbarShowMultiselectToolbar(false);
101
- }
102
- this.reapplyFilter(this.showOnlySelected);
103
- }
104
- get selectMode() {
105
- return this._selectMode || 'multiple';
106
- }
107
- /**
108
- * Whether to display selected items only.
109
- * @default false
110
- */
111
- set showOnlySelected(value) {
112
- this._showOnlySelected = value;
113
- }
114
- get showOnlySelected() {
115
- return this._showOnlySelected;
116
- }
117
117
  ngOnInit() {
118
118
  if (this.selectMode === 'multiple') {
119
119
  this.dispatcher.toolbarShowMultiselectToolbar(true);
@@ -258,8 +258,8 @@ export class SkyListViewChecklistComponent extends ListViewComponent {
258
258
  return true;
259
259
  }
260
260
  }
261
- SkyListViewChecklistComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistComponent, deps: [{ token: i1.ListState }, { token: i1.ListStateDispatcher }, { token: i2.ChecklistState }, { token: i3.ChecklistStateDispatcher }, { token: i4.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
262
- SkyListViewChecklistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SkyListViewChecklistComponent, selector: "sky-list-view-checklist", inputs: { name: "name", search: "search", labelFieldSelector: ["label", "labelFieldSelector"], description: "description", selectMode: "selectMode", showOnlySelected: "showOnlySelected" }, providers: [
261
+ SkyListViewChecklistComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistComponent, deps: [{ token: i1.ListState }, { token: i1.ListStateDispatcher }, { token: i2.ChecklistState }, { token: i3.ChecklistStateDispatcher }, { token: i4.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
262
+ SkyListViewChecklistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyListViewChecklistComponent, selector: "sky-list-view-checklist", inputs: { name: "name", search: "search", labelFieldSelector: ["label", "labelFieldSelector"], description: "description", selectMode: "selectMode", showOnlySelected: "showOnlySelected" }, providers: [
263
263
  {
264
264
  provide: ListViewComponent,
265
265
  useExisting: forwardRef(() => SkyListViewChecklistComponent),
@@ -268,7 +268,7 @@ SkyListViewChecklistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
268
268
  ChecklistStateDispatcher,
269
269
  ChecklistStateModel,
270
270
  ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"sky-list-view-checklist\" *ngIf=\"active | async\">\n <div [ngSwitch]=\"selectMode\">\n <ng-template ngSwitchCase=\"single\">\n <div role=\"radiogroup\">\n <sky-list-view-checklist-item\n *ngFor=\"let item of items | async\"\n [attr.sky-cmp-id]=\"item.id\"\n [item]=\"item\"\n >\n <button\n role=\"radio\"\n type=\"button\"\n class=\"sky-list-view-checklist-single-button\"\n [attr.aria-checked]=\"(itemSelected(item.id) | async) || false\"\n [ngClass]=\"{\n 'sky-list-view-checklist-row-selected':\n (itemSelected(item.id) | async)\n }\"\n (click)=\"singleSelectRowClick(item)\"\n >\n <div *ngIf=\"item.label\" class=\"sky-emphasized\">\n {{ item.label }}\n </div>\n <div *ngIf=\"item.description\">{{ item.description }}</div>\n </button>\n </sky-list-view-checklist-item>\n </div>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <sky-list-view-checklist-item\n *ngFor=\"let item of items | async\"\n [attr.sky-cmp-id]=\"item.id\"\n [item]=\"item\"\n >\n <sky-checkbox\n [checked]=\"itemSelected(item.id) | async\"\n (change)=\"setItemSelection(item, $event)\"\n >\n <sky-checkbox-label>\n <div\n *ngIf=\"item.label\"\n class=\"sky-emphasized\"\n [attr.title]=\"item.label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.description\" [attr.title]=\"item.description\">\n {{ item.description }}\n </div>\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-list-view-checklist-item>\n </ng-template>\n </div>\n</div>\n", styles: [".sky-list-view-checklist ::ng-deep .sky-checkbox-wrapper{display:flex;align-items:flex-start}.sky-list-view-checklist ::ng-deep .sky-checkbox-wrapper>.sky-checkbox,.sky-list-view-checklist ::ng-deep .sky-checkbox-wrapper>input{flex:1;max-width:22px}.sky-list-view-checklist ::ng-deep .sky-switch{white-space:nowrap}.sky-list-view-checklist ::ng-deep .sky-switch-label{margin:0}.sky-list-view-checklist ::ng-deep sky-checkbox-label{min-width:0}.sky-list-view-checklist ::ng-deep .sky-switch-control{margin:0 5px 0 0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i6.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i7.SkyListViewChecklistItemComponent, selector: "sky-list-view-checklist-item", inputs: ["item"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistComponent, decorators: [{
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistComponent, decorators: [{
272
272
  type: Component,
273
273
  args: [{ selector: 'sky-list-view-checklist', providers: [
274
274
  {
@@ -293,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
293
293
  }], showOnlySelected: [{
294
294
  type: Input
295
295
  }] } });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWNoZWNrbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdC1idWlsZGVyLXZpZXctY2hlY2tsaXN0L3NyYy9saWIvbW9kdWxlcy9saXN0LXZpZXctY2hlY2tsaXN0L2xpc3Qtdmlldy1jaGVja2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci12aWV3LWNoZWNrbGlzdC9zcmMvbGliL21vZHVsZXMvbGlzdC12aWV3LWNoZWNrbGlzdC9saXN0LXZpZXctY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFLTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGVBQWUsRUFFZixpQ0FBaUMsRUFDakMsa0NBQWtDLEVBR2xDLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBSUwsT0FBTyxHQUNSLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLEdBQUcsSUFBSSxhQUFhLEVBQ3BCLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENB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SUFBSSxLQUFLLGVBQWUsQ0FDNUMsQ0FBQztRQUVGLElBQUksc0JBQXNCLElBQUksc0JBQXNCLEVBQUU7WUFDcEQsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLEtBQUssc0JBQXNCLENBQUMsS0FBSyxDQUFDO1NBQ3RFO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzswSEFwV1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsK09BWDdCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNkJBQTZCLENBQUM7U0FDN0Q7UUFDRCxjQUFjO1FBQ2Qsd0JBQXdCO1FBQ3hCLG1CQUFtQjtLQUNwQixzRUMxREgsazNEQXdEQTsyRkRLYSw2QkFBNkI7a0JBZnpDLFNBQVM7K0JBQ0UseUJBQXlCLGFBR3hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDhCQUE4QixDQUFDO3lCQUM3RDt3QkFDRCxjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3FCQUNwQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTtrT0FXM0MsSUFBSTtzQkFEUCxLQUFLO2dCQVlDLE1BQU07c0JBRFosS0FBSztnQkFVQyxrQkFBa0I7c0JBRHhCLEtBQUs7dUJBQUMsT0FBTztnQkFRUCxXQUFXO3NCQURqQixLQUFLO2dCQVVLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBdUJLLGdCQUFnQjtzQkFEMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQge1xuICBMaXN0RmlsdGVyTW9kZWwsXG4gIExpc3RTZWxlY3RlZE1vZGVsLFxuICBMaXN0U2VsZWN0ZWRTZXRJdGVtU2VsZWN0ZWRBY3Rpb24sXG4gIExpc3RTZWxlY3RlZFNldEl0ZW1zU2VsZWN0ZWRBY3Rpb24sXG4gIExpc3RTdGF0ZSxcbiAgTGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgTGlzdFRvb2xiYXJTZXRUeXBlQWN0aW9uLFxuICBMaXN0Vmlld0NvbXBvbmVudCxcbn0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlcic7XG5pbXBvcnQge1xuICBBc3luY0l0ZW0sXG4gIEFzeW5jTGlzdCxcbiAgTGlzdEl0ZW1Nb2RlbCxcbiAgZ2V0RGF0YSxcbn0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlci1jb21tb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwIGFzIG9ic2VydmFibGVNYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDaGVja2xpc3RTdGF0ZU1vZGVsIH0gZnJvbSAnLi9zdGF0ZS9jaGVja2xpc3Qtc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgQ2hlY2tsaXN0U3RhdGVEaXNwYXRjaGVyIH0gZnJvbSAnLi9zdGF0ZS9jaGVja2xpc3Qtc3RhdGUucnhzdGF0ZSc7XG5pbXBvcnQgeyBDaGVja2xpc3RTdGF0ZSB9IGZyb20gJy4vc3RhdGUvY2hlY2tsaXN0LXN0YXRlLnN0YXRlLW5vZGUnO1xuaW1wb3J0IHsgTGlzdFZpZXdDaGVja2xpc3RJdGVtTW9kZWwgfSBmcm9tICcuL3N0YXRlL2l0ZW1zL2l0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFZpZXdDaGVja2xpc3RJdGVtc0xvYWRBY3Rpb24gfSBmcm9tICcuL3N0YXRlL2l0ZW1zL2xvYWQuYWN0aW9uJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBMaXN0IGJ1aWxkZXIgdmlldyBjaGVja2xpc3QgYW5kIGl0cyBmZWF0dXJlcyBhcmUgZGVwcmVjYXRlZC4gVXNlIHJlcGVhdGVyIGluc3RlYWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3JlcGVhdGVyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbGlzdC12aWV3LWNoZWNrbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXctY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12aWV3LWNoZWNrbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBMaXN0Vmlld0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreUxpc3RWaWV3Q2hlY2tsaXN0Q29tcG9uZW50KSxcbiAgICB9LFxuICAgIENoZWNrbGlzdFN0YXRlLFxuICAgIENoZWNrbGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgICBDaGVja2xpc3RTdGF0ZU1vZGVsLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TGlzdFZpZXdDaGVja2xpc3RDb21wb25lbnRcbiAgZXh0ZW5kcyBMaXN0Vmlld0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2aWV3LlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZpZXdOYW1lID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlYXJjaCBmdW5jdGlvbiB0byBhcHBseSBvbiB0aGUgdmlldyBkYXRhLlxuICAgKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiBzZWFyY2hlcyB2aWV3IGRhdGEgb24gbGFiZWwsIGRlc2NyaXB0aW9uLFxuICAgKiBhbmQgY2F0ZWdvcnkgaWYgZmllbGQgc2VsZWN0b3JzIGFyZSBkZWZpbmVkIGZvciB0aGUgZ2l2ZW4gZmllbGQuXG4gICAqIEBkZWZhdWx0IGRlZmF1bHQgc2VhcmNoIGZ1bmN0aW9uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoOiAoZGF0YTogYW55LCBzZWFyY2hUZXh0OiBzdHJpbmcpID0+IGJvb2xlYW4gPVxuICAgIHRoaXMuc2VhcmNoRnVuY3Rpb24oKTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxhYmVsIGZpZWxkIHNlbGVjdG9yLlxuICAgKiBAZGVmYXVsdCBcImxhYmVsXCJcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnbGFiZWwnKVxuICBwdWJsaWMgbGFiZWxGaWVsZFNlbGVjdG9yID0gJ2xhYmVsJztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRlc2NyaXB0aW9uIGZpZWxkIHNlbGVjdG9yLlxuICAgKiBAZGVmYXVsdCBcImRlc2NyaXB0aW9uXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9ICdkZXNjcmlwdGlvbic7XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IGl0ZW1zIHVzZXJzIGNhbiBzZWxlY3QuXG4gICAqIGBcInNpbmdsZVwiYCBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG9uZSBpdGVtIGluIHRoZSBjaGVja2xpc3QsIHdoaWxlIGBcIm11bHRpcGxlXCJgXG4gICAqIGFsbG93cyB1c2VycyB0byBzZWxlY3QgbXVsdGlwbGUgaXRlbXMgaW4gdGhlIGNoZWNrbGlzdC5cbiAgICogQGRlZmF1bHQgXCJtdWx0aXBsZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdE1vZGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlbGVjdE1vZGUgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyU2hvd011bHRpc2VsZWN0VG9vbGJhcih0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93T25seVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclNob3dNdWx0aXNlbGVjdFRvb2xiYXIoZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMucmVhcHBseUZpbHRlcih0aGlzLnNob3dPbmx5U2VsZWN0ZWQpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RNb2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE1vZGUgfHwgJ211bHRpcGxlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgc2VsZWN0ZWQgaXRlbXMgb25seS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2hvd09ubHlTZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dPbmx5U2VsZWN0ZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd09ubHlTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd09ubHlTZWxlY3RlZDtcbiAgfVxuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0TW9kZSA9ICdtdWx0aXBsZSc7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJZE1hcDogTWFwPHN0cmluZywgYm9vbGVhbj4gPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcblxuICBwcml2YXRlIF9zaG93T25seVNlbGVjdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RhdGU6IExpc3RTdGF0ZSxcbiAgICBwcml2YXRlIGRpc3BhdGNoZXI6IExpc3RTdGF0ZURpc3BhdGNoZXIsXG4gICAgcHJpdmF0ZSBjaGVja2xpc3RTdGF0ZTogQ2hlY2tsaXN0U3RhdGUsXG4gICAgcHJpdmF0ZSBjaGVja2xpc3REaXNwYXRjaGVyOiBDaGVja2xpc3RTdGF0ZURpc3BhdGNoZXIsXG4gICAgbG9nZ2VyOiBTa3lMb2dTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHN0YXRlLCAnQ2hlY2tsaXN0IFZpZXcnKTtcblxuICAgIGxvZ2dlci5kZXByZWNhdGVkKCdTa3lMaXN0Vmlld0NoZWNrbGlzdENvbXBvbmVudCcsIHtcbiAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA2LFxuICAgICAgbW9yZUluZm9Vcmw6ICdodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcmVwZWF0ZXInLFxuICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSByZXBlYXRlciBpbnN0ZWFkLicsXG4gICAgfSk7XG5cbiAgICBsZXQgbGFzdFVwZGF0ZTogYW55O1xuICAgIHRoaXMuc3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLml0ZW1zKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgoaXRlbXM6IEFzeW5jTGlzdDxMaXN0SXRlbU1vZGVsPikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFDaGFuZ2VkID1cbiAgICAgICAgICAgIGxhc3RVcGRhdGUgPT09IHVuZGVmaW5lZCB8fCBpdGVtcy5sYXN0VXBkYXRlICE9PSBsYXN0VXBkYXRlO1xuICAgICAgICAgIGxhc3RVcGRhdGUgPSBpdGVtcy5sYXN0VXBkYXRlO1xuICAgICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gaXRlbXMuaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExpc3RWaWV3Q2hlY2tsaXN0SXRlbU1vZGVsKGl0ZW0uaWQsIHtcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMubGFiZWxGaWVsZFNlbGVjdG9yXG4gICAgICAgICAgICAgICAgPyBnZXREYXRhKGl0ZW0uZGF0YSwgdGhpcy5sYWJlbEZpZWxkU2VsZWN0b3IpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgPyBnZXREYXRhKGl0ZW0uZGF0YSwgdGhpcy5kZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3REaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgICBuZXcgTGlzdFZpZXdDaGVja2xpc3RJdGVtc0xvYWRBY3Rpb24oXG4gICAgICAgICAgICAgIG5ld0l0ZW1zLFxuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICBkYXRhQ2hhbmdlZCxcbiAgICAgICAgICAgICAgaXRlbXMuY291bnRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgodCkgPT4gdC5zZWxlY3RlZCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZEl0ZW1zOiBBc3luY0l0ZW08TGlzdFNlbGVjdGVkTW9kZWw+KSA9PiB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSWRNYXAgPSBzZWxlY3RlZEl0ZW1zLml0ZW0uc2VsZWN0ZWRJZE1hcDtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyU2hvd011bHRpc2VsZWN0VG9vbGJhcih0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBJZiAnc2hvdy1zZWxlY3RlZCcgZmlsdGVyIGlzIGNoYW5nZWQgZnJvbSBtdWx0aXNlbGVjdCB0b29sYmFyIChsaXN0LWJ1aWxkZXIpXG4gICAgLy8gbWFrZSBzdXJlIHRoZSBwcml2YXRlIHZhcmlhYmxlIF9zaG93T25seVNlbGVjdGVkIHN0YXlzIGluIHN5bmMuXG4gICAgdGhpcy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHQpID0+IHQuZmlsdGVycyksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCh0aGlzLnNob3dTZWxlY3RlZFZhbHVlc0VxdWFsKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZmlsdGVyczogTGlzdEZpbHRlck1vZGVsW10pID0+IHtcbiAgICAgICAgY29uc3Qgc2hvd1NlbGVjdGVkRmlsdGVyID0gZmlsdGVycy5maW5kKFxuICAgICAgICAgIChmaWx0ZXI6IExpc3RGaWx0ZXJNb2RlbCkgPT4gZmlsdGVyLm5hbWUgPT09ICdzaG93LXNlbGVjdGVkJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoc2hvd1NlbGVjdGVkRmlsdGVyKSB7XG4gICAgICAgICAgdGhpcy5fc2hvd09ubHlTZWxlY3RlZCA9IHNob3dTZWxlY3RlZEZpbHRlci52YWx1ZSA9PT0gJ3RydWUnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1snc2hvd09ubHlTZWxlY3RlZCddICYmXG4gICAgICBjaGFuZ2VzWydzaG93T25seVNlbGVjdGVkJ10uY3VycmVudFZhbHVlICE9PVxuICAgICAgICBjaGFuZ2VzWydzaG93T25seVNlbGVjdGVkJ10ucHJldmlvdXNWYWx1ZVxuICAgICkge1xuICAgICAgdGhpcy5yZWFwcGx5RmlsdGVyKGNoYW5nZXNbJ3Nob3dPbmx5U2VsZWN0ZWQnXS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDMuMi4wXG4gICAqIE11bHRpc2VsZWN0IHRvb2xiYXIgd2lsbCBhdXRvbWF0aWNhbGx5IHNob3cgaWYgc2VsZWN0IG1vZGUgaXMgc2V0IHRvICdtdWx0aXBsZScuXG4gICAqIFRoZXNlIG1ldGhvZHMgYXJlIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoYXQgZnVuY3Rpb25hbGl0eSBpcyBwYXJ0IG9mIGxpc3QtYnVpbGRlci5cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2VWaXNpYmxlSXRlbXMoY2hhbmdlOiBTa3lDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2hvd09ubHlTZWxlY3RlZCA9IGNoYW5nZS5jaGVja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMy4yLjBcbiAgICogTXVsdGlzZWxlY3QgdG9vbGJhciB3aWxsIGF1dG9tYXRpY2FsbHkgc2hvdyBpZiBzZWxlY3QgbW9kZSBpcyBzZXQgdG8gJ211bHRpcGxlJy5cbiAgICogVGhlc2UgbWV0aG9kcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhhdCBmdW5jdGlvbmFsaXR5IGlzIHBhcnQgb2YgbGlzdC1idWlsZGVyLlxuICAgKi9cbiAgcHVibGljIGNsZWFyU2VsZWN0aW9ucygpIHtcbiAgICB0aGlzLnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLml0ZW1zLml0ZW1zKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgbmV3IExpc3RTZWxlY3RlZFNldEl0ZW1zU2VsZWN0ZWRBY3Rpb24oXG4gICAgICAgICAgICBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAodGhpcy5zaG93T25seVNlbGVjdGVkKSB7XG4gICAgICAgICAgdGhpcy5yZWFwcGx5RmlsdGVyKHRoaXMuc2hvd09ubHlTZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMy4yLjBcbiAgICogTXVsdGlzZWxlY3QgdG9vbGJhciB3aWxsIGF1dG9tYXRpY2FsbHkgc2hvdyBpZiBzZWxlY3QgbW9kZSBpcyBzZXQgdG8gJ211bHRpcGxlJy5cbiAgICogVGhlc2UgbWV0aG9kcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhhdCBmdW5jdGlvbmFsaXR5IGlzIHBhcnQgb2YgbGlzdC1idWlsZGVyLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLml0ZW1zLml0ZW1zKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgbmV3IExpc3RTZWxlY3RlZFNldEl0ZW1zU2VsZWN0ZWRBY3Rpb24oXG4gICAgICAgICAgICBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0aGlzLnNob3dPbmx5U2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnJlYXBwbHlGaWx0ZXIodGhpcy5zaG93T25seVNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25WaWV3QWN0aXZlKCkge1xuICAgIGlmICh0aGlzLnNlYXJjaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIuc2VhcmNoU2V0RnVuY3Rpb25zKFt0aGlzLnNlYXJjaF0pO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkU2VsZWN0b3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgaWYgKHRoaXMubGFiZWxGaWVsZFNlbGVjdG9yKSB7XG4gICAgICBmaWVsZFNlbGVjdG9ycy5wdXNoKHRoaXMubGFiZWxGaWVsZFNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgZmllbGRTZWxlY3RvcnMucHVzaCh0aGlzLmRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BhdGNoZXIuc2VhcmNoU2V0RmllbGRTZWxlY3RvcnMoZmllbGRTZWxlY3RvcnMpO1xuXG4gICAgdGhpcy5kaXNwYXRjaGVyLm5leHQobmV3IExpc3RUb29sYmFyU2V0VHlwZUFjdGlvbignc2VhcmNoJykpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXQgaXRlbXMoKTogT2JzZXJ2YWJsZTxMaXN0Vmlld0NoZWNrbGlzdEl0ZW1Nb2RlbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tsaXN0U3RhdGUucGlwZShcbiAgICAgIG9ic2VydmFibGVNYXAoKHN0YXRlKSA9PiBzdGF0ZS5pdGVtcy5pdGVtcylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaEZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAoZGF0YTogYW55LCBzZWFyY2hUZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh0aGlzLmxhYmVsRmllbGRTZWxlY3RvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gZ2V0RGF0YShkYXRhLCB0aGlzLmxhYmVsRmllbGRTZWxlY3Rvcik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBsYWJlbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgbGFiZWwgIT09IG51bGwgJiZcbiAgICAgICAgICBsYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXh0KSAhPT0gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGdldERhdGEoZGF0YSwgdGhpcy5kZXNjcmlwdGlvbik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZGVzY3JpcHRpb24gIT09IG51bGwgJiZcbiAgICAgICAgICBkZXNjcmlwdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXh0KSAhPT0gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaXRlbVNlbGVjdGVkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLnNlbGVjdGVkLml0ZW0uc2VsZWN0ZWRJZE1hcC5nZXQoaWQpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbVNlbGVjdGlvbihpdGVtOiBMaXN0SXRlbU1vZGVsLCBldmVudDogYW55KSB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoXG4gICAgICBuZXcgTGlzdFNlbGVjdGVkU2V0SXRlbVNlbGVjdGVkQWN0aW9uKGl0ZW0uaWQsIGV2ZW50LmNoZWNrZWQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzaW5nbGVTZWxlY3RSb3dDbGljayhpdGVtOiBMaXN0SXRlbU1vZGVsKSB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoXG4gICAgICBuZXcgTGlzdFNlbGVjdGVkU2V0SXRlbXNTZWxlY3RlZEFjdGlvbihbaXRlbS5pZF0sIHRydWUsIHRydWUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2hvd1NlbGVjdGVkRmlsdGVyKGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gbmV3IExpc3RGaWx0ZXJNb2RlbCh7XG4gICAgICBuYW1lOiAnc2hvdy1zZWxlY3RlZCcsXG4gICAgICB2YWx1ZTogaXNTZWxlY3RlZC50b1N0cmluZygpLFxuICAgICAgZmlsdGVyRnVuY3Rpb246IChtb2RlbDogTGlzdEl0ZW1Nb2RlbCwgc2hvd09ubHlTZWxlY3RlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc2hvd09ubHlTZWxlY3RlZC50b1N0cmluZygpICE9PSBmYWxzZS50b1N0cmluZygpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSWRNYXAuZ2V0KG1vZGVsLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UudG9TdHJpbmcoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhcHBseUZpbHRlcihpc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHN0YXRlKSA9PiBzdGF0ZS5maWx0ZXJzKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZmlsdGVyczogTGlzdEZpbHRlck1vZGVsW10pID0+IHtcbiAgICAgICAgZmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmaWx0ZXIpID0+IGZpbHRlci5uYW1lICE9PSAnc2hvdy1zZWxlY3RlZCcpO1xuICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5nZXRTaG93U2VsZWN0ZWRGaWx0ZXIoaXNTZWxlY3RlZCkpO1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIuZmlsdGVyc1VwZGF0ZShmaWx0ZXJzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93U2VsZWN0ZWRWYWx1ZXNFcXVhbChcbiAgICBwcmV2OiBMaXN0RmlsdGVyTW9kZWxbXSxcbiAgICBuZXh0OiBMaXN0RmlsdGVyTW9kZWxbXVxuICApIHtcbiAgICBjb25zdCBwcmV2U2hvd1NlbGVjdGVkRmlsdGVyID0gcHJldi5maW5kKFxuICAgICAgKGZpbHRlcikgPT4gZmlsdGVyLm5hbWUgPT09ICdzaG93LXNlbGVjdGVkJ1xuICAgICk7XG4gICAgY29uc3QgbmV4dFNob3dTZWxlY3RlZEZpbHRlciA9IG5leHQuZmluZChcbiAgICAgIChmaWx0ZXIpID0+IGZpbHRlci5uYW1lID09PSAnc2hvdy1zZWxlY3RlZCdcbiAgICApO1xuXG4gICAgaWYgKHByZXZTaG93U2VsZWN0ZWRGaWx0ZXIgJiYgbmV4dFNob3dTZWxlY3RlZEZpbHRlcikge1xuICAgICAgcmV0dXJuIHByZXZTaG93U2VsZWN0ZWRGaWx0ZXIudmFsdWUgPT09IG5leHRTaG93U2VsZWN0ZWRGaWx0ZXIudmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktbGlzdC12aWV3LWNoZWNrbGlzdFwiICpuZ0lmPVwiYWN0aXZlIHwgYXN5bmNcIj5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwic2VsZWN0TW9kZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJzaW5nbGVcIj5cbiAgICAgIDxkaXYgcm9sZT1cInJhZGlvZ3JvdXBcIj5cbiAgICAgICAgPHNreS1saXN0LXZpZXctY2hlY2tsaXN0LWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyB8IGFzeW5jXCJcbiAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcm9sZT1cInJhZGlvXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktbGlzdC12aWV3LWNoZWNrbGlzdC1zaW5nbGUtYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCIoaXRlbVNlbGVjdGVkKGl0ZW0uaWQpIHwgYXN5bmMpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3NreS1saXN0LXZpZXctY2hlY2tsaXN0LXJvdy1zZWxlY3RlZCc6XG4gICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZChpdGVtLmlkKSB8IGFzeW5jKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlU2VsZWN0Um93Q2xpY2soaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmxhYmVsXCIgY2xhc3M9XCJza3ktZW1waGFzaXplZFwiPlxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmRlc2NyaXB0aW9uXCI+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NreS1saXN0LXZpZXctY2hlY2tsaXN0LWl0ZW0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD5cbiAgICAgIDxza3ktbGlzdC12aWV3LWNoZWNrbGlzdC1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgYXN5bmNcIlxuICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1jaGVja2JveFxuICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW1TZWxlY3RlZChpdGVtLmlkKSB8IGFzeW5jXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNldEl0ZW1TZWxlY3Rpb24oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWNoZWNrYm94LWxhYmVsPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1lbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIiBbYXR0ci50aXRsZV09XCJpdGVtLmRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2t5LWNoZWNrYm94LWxhYmVsPlxuICAgICAgICA8L3NreS1jaGVja2JveD5cbiAgICAgIDwvc2t5LWxpc3Qtdmlldy1jaGVja2xpc3QtaXRlbT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWNoZWNrbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdC1idWlsZGVyLXZpZXctY2hlY2tsaXN0L3NyYy9saWIvbW9kdWxlcy9saXN0LXZpZXctY2hlY2tsaXN0L2xpc3Qtdmlldy1jaGVja2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci12aWV3LWNoZWNrbGlzdC9zcmMvbGliL21vZHVsZXMvbGlzdC12aWV3LWNoZWNrbGlzdC9saXN0LXZpZXctY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFLTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGVBQWUsRUFFZixpQ0FBaUMsRUFDakMsa0NBQWtDLEVBR2xDLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBSUwsT0FBTyxHQUNSLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLEdBQUcsSUFBSSxhQUFhLEVBQ3BCLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENB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SSxLQUFLLGVBQWUsQ0FDNUMsQ0FBQztRQUVGLElBQUksc0JBQXNCLElBQUksc0JBQXNCLEVBQUU7WUFDcEQsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLEtBQUssc0JBQXNCLENBQUMsS0FBSyxDQUFDO1NBQ3RFO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzswSEFwV1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsK09BWDdCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNkJBQTZCLENBQUM7U0FDN0Q7UUFDRCxjQUFjO1FBQ2Qsd0JBQXdCO1FBQ3hCLG1CQUFtQjtLQUNwQixzRUMxREgsazNEQXdEQTsyRkRLYSw2QkFBNkI7a0JBZnpDLFNBQVM7K0JBQ0UseUJBQXlCLGFBR3hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDhCQUE4QixDQUFDO3lCQUM3RDt3QkFDRCxjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3FCQUNwQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTtrT0FXcEMsSUFBSTtzQkFEZCxLQUFLO2dCQVlDLE1BQU07c0JBRFosS0FBSztnQkFVQyxrQkFBa0I7c0JBRHhCLEtBQUs7dUJBQUMsT0FBTztnQkFRUCxXQUFXO3NCQURqQixLQUFLO2dCQVVLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBdUJLLGdCQUFnQjtzQkFEMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQge1xuICBMaXN0RmlsdGVyTW9kZWwsXG4gIExpc3RTZWxlY3RlZE1vZGVsLFxuICBMaXN0U2VsZWN0ZWRTZXRJdGVtU2VsZWN0ZWRBY3Rpb24sXG4gIExpc3RTZWxlY3RlZFNldEl0ZW1zU2VsZWN0ZWRBY3Rpb24sXG4gIExpc3RTdGF0ZSxcbiAgTGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgTGlzdFRvb2xiYXJTZXRUeXBlQWN0aW9uLFxuICBMaXN0Vmlld0NvbXBvbmVudCxcbn0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlcic7XG5pbXBvcnQge1xuICBBc3luY0l0ZW0sXG4gIEFzeW5jTGlzdCxcbiAgTGlzdEl0ZW1Nb2RlbCxcbiAgZ2V0RGF0YSxcbn0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlci1jb21tb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwIGFzIG9ic2VydmFibGVNYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDaGVja2xpc3RTdGF0ZU1vZGVsIH0gZnJvbSAnLi9zdGF0ZS9jaGVja2xpc3Qtc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgQ2hlY2tsaXN0U3RhdGVEaXNwYXRjaGVyIH0gZnJvbSAnLi9zdGF0ZS9jaGVja2xpc3Qtc3RhdGUucnhzdGF0ZSc7XG5pbXBvcnQgeyBDaGVja2xpc3RTdGF0ZSB9IGZyb20gJy4vc3RhdGUvY2hlY2tsaXN0LXN0YXRlLnN0YXRlLW5vZGUnO1xuaW1wb3J0IHsgTGlzdFZpZXdDaGVja2xpc3RJdGVtTW9kZWwgfSBmcm9tICcuL3N0YXRlL2l0ZW1zL2l0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFZpZXdDaGVja2xpc3RJdGVtc0xvYWRBY3Rpb24gfSBmcm9tICcuL3N0YXRlL2l0ZW1zL2xvYWQuYWN0aW9uJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBMaXN0IGJ1aWxkZXIgdmlldyBjaGVja2xpc3QgYW5kIGl0cyBmZWF0dXJlcyBhcmUgZGVwcmVjYXRlZC4gVXNlIHJlcGVhdGVyIGluc3RlYWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3JlcGVhdGVyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbGlzdC12aWV3LWNoZWNrbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXctY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12aWV3LWNoZWNrbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBMaXN0Vmlld0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreUxpc3RWaWV3Q2hlY2tsaXN0Q29tcG9uZW50KSxcbiAgICB9LFxuICAgIENoZWNrbGlzdFN0YXRlLFxuICAgIENoZWNrbGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgICBDaGVja2xpc3RTdGF0ZU1vZGVsLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TGlzdFZpZXdDaGVja2xpc3RDb21wb25lbnRcbiAgZXh0ZW5kcyBMaXN0Vmlld0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2aWV3LlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52aWV3TmFtZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZWFyY2ggZnVuY3Rpb24gdG8gYXBwbHkgb24gdGhlIHZpZXcgZGF0YS5cbiAgICogVGhlIGRlZmF1bHQgZnVuY3Rpb24gc2VhcmNoZXMgdmlldyBkYXRhIG9uIGxhYmVsLCBkZXNjcmlwdGlvbixcbiAgICogYW5kIGNhdGVnb3J5IGlmIGZpZWxkIHNlbGVjdG9ycyBhcmUgZGVmaW5lZCBmb3IgdGhlIGdpdmVuIGZpZWxkLlxuICAgKiBAZGVmYXVsdCBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvblxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaDogKGRhdGE6IGFueSwgc2VhcmNoVGV4dDogc3RyaW5nKSA9PiBib29sZWFuID1cbiAgICB0aGlzLnNlYXJjaEZ1bmN0aW9uKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBsYWJlbCBmaWVsZCBzZWxlY3Rvci5cbiAgICogQGRlZmF1bHQgXCJsYWJlbFwiXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2xhYmVsJylcbiAgcHVibGljIGxhYmVsRmllbGRTZWxlY3RvciA9ICdsYWJlbCc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkZXNjcmlwdGlvbiBmaWVsZCBzZWxlY3Rvci5cbiAgICogQGRlZmF1bHQgXCJkZXNjcmlwdGlvblwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVzY3JpcHRpb24gPSAnZGVzY3JpcHRpb24nO1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSBpdGVtcyB1c2VycyBjYW4gc2VsZWN0LlxuICAgKiBgXCJzaW5nbGVcImAgYWxsb3dzIHVzZXJzIHRvIHNlbGVjdCBvbmUgaXRlbSBpbiB0aGUgY2hlY2tsaXN0LCB3aGlsZSBgXCJtdWx0aXBsZVwiYFxuICAgKiBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG11bHRpcGxlIGl0ZW1zIGluIHRoZSBjaGVja2xpc3QuXG4gICAqIEBkZWZhdWx0IFwibXVsdGlwbGVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZWxlY3RNb2RlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclNob3dNdWx0aXNlbGVjdFRvb2xiYXIodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd09ubHlTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJTaG93TXVsdGlzZWxlY3RUb29sYmFyKGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlYXBwbHlGaWx0ZXIodGhpcy5zaG93T25seVNlbGVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0TW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNb2RlIHx8ICdtdWx0aXBsZSc7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IHNlbGVjdGVkIGl0ZW1zIG9ubHkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNob3dPbmx5U2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93T25seVNlbGVjdGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dPbmx5U2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dPbmx5U2VsZWN0ZWQ7XG4gIH1cblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX3NlbGVjdE1vZGUgPSAnbXVsdGlwbGUnO1xuXG4gIHByaXZhdGUgX3NlbGVjdGVkSWRNYXA6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBfc2hvd09ubHlTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0YXRlOiBMaXN0U3RhdGUsXG4gICAgcHJpdmF0ZSBkaXNwYXRjaGVyOiBMaXN0U3RhdGVEaXNwYXRjaGVyLFxuICAgIHByaXZhdGUgY2hlY2tsaXN0U3RhdGU6IENoZWNrbGlzdFN0YXRlLFxuICAgIHByaXZhdGUgY2hlY2tsaXN0RGlzcGF0Y2hlcjogQ2hlY2tsaXN0U3RhdGVEaXNwYXRjaGVyLFxuICAgIGxvZ2dlcjogU2t5TG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcihzdGF0ZSwgJ0NoZWNrbGlzdCBWaWV3Jyk7XG5cbiAgICBsb2dnZXIuZGVwcmVjYXRlZCgnU2t5TGlzdFZpZXdDaGVja2xpc3RDb21wb25lbnQnLCB7XG4gICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogNixcbiAgICAgIG1vcmVJbmZvVXJsOiAnaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3JlcGVhdGVyJyxcbiAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246ICdVc2UgcmVwZWF0ZXIgaW5zdGVhZC4nLFxuICAgIH0pO1xuXG4gICAgbGV0IGxhc3RVcGRhdGU6IGFueTtcbiAgICB0aGlzLnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5pdGVtcyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIG9ic2VydmFibGVNYXAoKGl0ZW1zOiBBc3luY0xpc3Q8TGlzdEl0ZW1Nb2RlbD4pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhQ2hhbmdlZCA9XG4gICAgICAgICAgICBsYXN0VXBkYXRlID09PSB1bmRlZmluZWQgfHwgaXRlbXMubGFzdFVwZGF0ZSAhPT0gbGFzdFVwZGF0ZTtcbiAgICAgICAgICBsYXN0VXBkYXRlID0gaXRlbXMubGFzdFVwZGF0ZTtcbiAgICAgICAgICBjb25zdCBuZXdJdGVtcyA9IGl0ZW1zLml0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBMaXN0Vmlld0NoZWNrbGlzdEl0ZW1Nb2RlbChpdGVtLmlkLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsRmllbGRTZWxlY3RvclxuICAgICAgICAgICAgICAgID8gZ2V0RGF0YShpdGVtLmRhdGEsIHRoaXMubGFiZWxGaWVsZFNlbGVjdG9yKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgID8gZ2V0RGF0YShpdGVtLmRhdGEsIHRoaXMuZGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0RGlzcGF0Y2hlci5uZXh0KFxuICAgICAgICAgICAgbmV3IExpc3RWaWV3Q2hlY2tsaXN0SXRlbXNMb2FkQWN0aW9uKFxuICAgICAgICAgICAgICBuZXdJdGVtcyxcbiAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0YUNoYW5nZWQsXG4gICAgICAgICAgICAgIGl0ZW1zLmNvdW50XG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHQpID0+IHQuc2VsZWN0ZWQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWRJdGVtczogQXN5bmNJdGVtPExpc3RTZWxlY3RlZE1vZGVsPikgPT4ge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZElkTWFwID0gc2VsZWN0ZWRJdGVtcy5pdGVtLnNlbGVjdGVkSWRNYXA7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclNob3dNdWx0aXNlbGVjdFRvb2xiYXIodHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgJ3Nob3ctc2VsZWN0ZWQnIGZpbHRlciBpcyBjaGFuZ2VkIGZyb20gbXVsdGlzZWxlY3QgdG9vbGJhciAobGlzdC1idWlsZGVyKVxuICAgIC8vIG1ha2Ugc3VyZSB0aGUgcHJpdmF0ZSB2YXJpYWJsZSBfc2hvd09ubHlTZWxlY3RlZCBzdGF5cyBpbiBzeW5jLlxuICAgIHRoaXMuc3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKCh0KSA9PiB0LmZpbHRlcnMpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQodGhpcy5zaG93U2VsZWN0ZWRWYWx1ZXNFcXVhbClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGZpbHRlcnM6IExpc3RGaWx0ZXJNb2RlbFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IHNob3dTZWxlY3RlZEZpbHRlciA9IGZpbHRlcnMuZmluZChcbiAgICAgICAgICAoZmlsdGVyOiBMaXN0RmlsdGVyTW9kZWwpID0+IGZpbHRlci5uYW1lID09PSAnc2hvdy1zZWxlY3RlZCdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHNob3dTZWxlY3RlZEZpbHRlcikge1xuICAgICAgICAgIHRoaXMuX3Nob3dPbmx5U2VsZWN0ZWQgPSBzaG93U2VsZWN0ZWRGaWx0ZXIudmFsdWUgPT09ICd0cnVlJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ3Nob3dPbmx5U2VsZWN0ZWQnXSAmJlxuICAgICAgY2hhbmdlc1snc2hvd09ubHlTZWxlY3RlZCddLmN1cnJlbnRWYWx1ZSAhPT1cbiAgICAgICAgY2hhbmdlc1snc2hvd09ubHlTZWxlY3RlZCddLnByZXZpb3VzVmFsdWVcbiAgICApIHtcbiAgICAgIHRoaXMucmVhcHBseUZpbHRlcihjaGFuZ2VzWydzaG93T25seVNlbGVjdGVkJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAzLjIuMFxuICAgKiBNdWx0aXNlbGVjdCB0b29sYmFyIHdpbGwgYXV0b21hdGljYWxseSBzaG93IGlmIHNlbGVjdCBtb2RlIGlzIHNldCB0byAnbXVsdGlwbGUnLlxuICAgKiBUaGVzZSBtZXRob2RzIGFyZSBubyBsb25nZXIgbmVlZGVkLCBhcyB0aGF0IGZ1bmN0aW9uYWxpdHkgaXMgcGFydCBvZiBsaXN0LWJ1aWxkZXIuXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlVmlzaWJsZUl0ZW1zKGNoYW5nZTogU2t5Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLnNob3dPbmx5U2VsZWN0ZWQgPSBjaGFuZ2UuY2hlY2tlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDMuMi4wXG4gICAqIE11bHRpc2VsZWN0IHRvb2xiYXIgd2lsbCBhdXRvbWF0aWNhbGx5IHNob3cgaWYgc2VsZWN0IG1vZGUgaXMgc2V0IHRvICdtdWx0aXBsZScuXG4gICAqIFRoZXNlIG1ldGhvZHMgYXJlIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoYXQgZnVuY3Rpb25hbGl0eSBpcyBwYXJ0IG9mIGxpc3QtYnVpbGRlci5cbiAgICovXG4gIHB1YmxpYyBjbGVhclNlbGVjdGlvbnMoKSB7XG4gICAgdGhpcy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHN0YXRlKSA9PiBzdGF0ZS5pdGVtcy5pdGVtcyksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KFxuICAgICAgICAgIG5ldyBMaXN0U2VsZWN0ZWRTZXRJdGVtc1NlbGVjdGVkQWN0aW9uKFxuICAgICAgICAgICAgaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmlkKSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRoaXMuc2hvd09ubHlTZWxlY3RlZCkge1xuICAgICAgICAgIHRoaXMucmVhcHBseUZpbHRlcih0aGlzLnNob3dPbmx5U2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDMuMi4wXG4gICAqIE11bHRpc2VsZWN0IHRvb2xiYXIgd2lsbCBhdXRvbWF0aWNhbGx5IHNob3cgaWYgc2VsZWN0IG1vZGUgaXMgc2V0IHRvICdtdWx0aXBsZScuXG4gICAqIFRoZXNlIG1ldGhvZHMgYXJlIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoYXQgZnVuY3Rpb25hbGl0eSBpcyBwYXJ0IG9mIGxpc3QtYnVpbGRlci5cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHN0YXRlKSA9PiBzdGF0ZS5pdGVtcy5pdGVtcyksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KFxuICAgICAgICAgIG5ldyBMaXN0U2VsZWN0ZWRTZXRJdGVtc1NlbGVjdGVkQWN0aW9uKFxuICAgICAgICAgICAgaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmlkKSxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAodGhpcy5zaG93T25seVNlbGVjdGVkKSB7XG4gICAgICAgICAgdGhpcy5yZWFwcGx5RmlsdGVyKHRoaXMuc2hvd09ubHlTZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uVmlld0FjdGl2ZSgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaXNwYXRjaGVyLnNlYXJjaFNldEZ1bmN0aW9ucyhbdGhpcy5zZWFyY2hdKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZFNlbGVjdG9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGlmICh0aGlzLmxhYmVsRmllbGRTZWxlY3Rvcikge1xuICAgICAgZmllbGRTZWxlY3RvcnMucHVzaCh0aGlzLmxhYmVsRmllbGRTZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgIGZpZWxkU2VsZWN0b3JzLnB1c2godGhpcy5kZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwYXRjaGVyLnNlYXJjaFNldEZpZWxkU2VsZWN0b3JzKGZpZWxkU2VsZWN0b3JzKTtcblxuICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KG5ldyBMaXN0VG9vbGJhclNldFR5cGVBY3Rpb24oJ3NlYXJjaCcpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtcygpOiBPYnNlcnZhYmxlPExpc3RWaWV3Q2hlY2tsaXN0SXRlbU1vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja2xpc3RTdGF0ZS5waXBlKFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLml0ZW1zLml0ZW1zKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIChkYXRhOiBhbnksIHNlYXJjaFRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMubGFiZWxGaWVsZFNlbGVjdG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBnZXREYXRhKGRhdGEsIHRoaXMubGFiZWxGaWVsZFNlbGVjdG9yKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGxhYmVsICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBsYWJlbCAhPT0gbnVsbCAmJlxuICAgICAgICAgIGxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRleHQpICE9PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZ2V0RGF0YShkYXRhLCB0aGlzLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBkZXNjcmlwdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgICAgIGRlc2NyaXB0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRleHQpICE9PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpdGVtU2VsZWN0ZWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICBvYnNlcnZhYmxlTWFwKChzdGF0ZSkgPT4gc3RhdGUuc2VsZWN0ZWQuaXRlbS5zZWxlY3RlZElkTWFwLmdldChpZCkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJdGVtU2VsZWN0aW9uKGl0ZW06IExpc3RJdGVtTW9kZWwsIGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChcbiAgICAgIG5ldyBMaXN0U2VsZWN0ZWRTZXRJdGVtU2VsZWN0ZWRBY3Rpb24oaXRlbS5pZCwgZXZlbnQuY2hlY2tlZClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNpbmdsZVNlbGVjdFJvd0NsaWNrKGl0ZW06IExpc3RJdGVtTW9kZWwpIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChcbiAgICAgIG5ldyBMaXN0U2VsZWN0ZWRTZXRJdGVtc1NlbGVjdGVkQWN0aW9uKFtpdGVtLmlkXSwgdHJ1ZSwgdHJ1ZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaG93U2VsZWN0ZWRGaWx0ZXIoaXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIHJldHVybiBuZXcgTGlzdEZpbHRlck1vZGVsKHtcbiAgICAgIG5hbWU6ICdzaG93LXNlbGVjdGVkJyxcbiAgICAgIHZhbHVlOiBpc1NlbGVjdGVkLnRvU3RyaW5nKCksXG4gICAgICBmaWx0ZXJGdW5jdGlvbjogKG1vZGVsOiBMaXN0SXRlbU1vZGVsLCBzaG93T25seVNlbGVjdGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChzaG93T25seVNlbGVjdGVkLnRvU3RyaW5nKCkgIT09IGZhbHNlLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJZE1hcC5nZXQobW9kZWwuaWQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZS50b1N0cmluZygpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFwcGx5RmlsdGVyKGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLmZpbHRlcnMpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChmaWx0ZXJzOiBMaXN0RmlsdGVyTW9kZWxbXSkgPT4ge1xuICAgICAgICBmaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLm5hbWUgIT09ICdzaG93LXNlbGVjdGVkJyk7XG4gICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmdldFNob3dTZWxlY3RlZEZpbHRlcihpc1NlbGVjdGVkKSk7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci5maWx0ZXJzVXBkYXRlKGZpbHRlcnMpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTZWxlY3RlZFZhbHVlc0VxdWFsKFxuICAgIHByZXY6IExpc3RGaWx0ZXJNb2RlbFtdLFxuICAgIG5leHQ6IExpc3RGaWx0ZXJNb2RlbFtdXG4gICkge1xuICAgIGNvbnN0IHByZXZTaG93U2VsZWN0ZWRGaWx0ZXIgPSBwcmV2LmZpbmQoXG4gICAgICAoZmlsdGVyKSA9PiBmaWx0ZXIubmFtZSA9PT0gJ3Nob3ctc2VsZWN0ZWQnXG4gICAgKTtcbiAgICBjb25zdCBuZXh0U2hvd1NlbGVjdGVkRmlsdGVyID0gbmV4dC5maW5kKFxuICAgICAgKGZpbHRlcikgPT4gZmlsdGVyLm5hbWUgPT09ICdzaG93LXNlbGVjdGVkJ1xuICAgICk7XG5cbiAgICBpZiAocHJldlNob3dTZWxlY3RlZEZpbHRlciAmJiBuZXh0U2hvd1NlbGVjdGVkRmlsdGVyKSB7XG4gICAgICByZXR1cm4gcHJldlNob3dTZWxlY3RlZEZpbHRlci52YWx1ZSA9PT0gbmV4dFNob3dTZWxlY3RlZEZpbHRlci52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1saXN0LXZpZXctY2hlY2tsaXN0XCIgKm5nSWY9XCJhY3RpdmUgfCBhc3luY1wiPlxuICA8ZGl2IFtuZ1N3aXRjaF09XCJzZWxlY3RNb2RlXCI+XG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cInNpbmdsZVwiPlxuICAgICAgPGRpdiByb2xlPVwicmFkaW9ncm91cFwiPlxuICAgICAgICA8c2t5LWxpc3Qtdmlldy1jaGVja2xpc3QtaXRlbVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgYXN5bmNcIlxuICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICByb2xlPVwicmFkaW9cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1saXN0LXZpZXctY2hlY2tsaXN0LXNpbmdsZS1idXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cIihpdGVtU2VsZWN0ZWQoaXRlbS5pZCkgfCBhc3luYykgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LWxpc3Qtdmlldy1jaGVja2xpc3Qtcm93LXNlbGVjdGVkJzpcbiAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkKGl0ZW0uaWQpIHwgYXN5bmMpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzaW5nbGVTZWxlY3RSb3dDbGljayhpdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ubGFiZWxcIiBjbGFzcz1cInNreS1lbXBoYXNpemVkXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIj57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvc2t5LWxpc3Qtdmlldy1jaGVja2xpc3QtaXRlbT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgPHNreS1saXN0LXZpZXctY2hlY2tsaXN0LWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMgfCBhc3luY1wiXG4gICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWNoZWNrYm94XG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbVNlbGVjdGVkKGl0ZW0uaWQpIHwgYXN5bmNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwic2V0SXRlbVNlbGVjdGlvbihpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktY2hlY2tib3gtbGFiZWw+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5kZXNjcmlwdGlvblwiIFthdHRyLnRpdGxlXT1cIml0ZW0uZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9za3ktY2hlY2tib3gtbGFiZWw+XG4gICAgICAgIDwvc2t5LWNoZWNrYm94PlxuICAgICAgPC9za3ktbGlzdC12aWV3LWNoZWNrbGlzdC1pdGVtPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -10,11 +10,11 @@ import * as i0 from "@angular/core";
10
10
  */
11
11
  export class SkyListViewChecklistModule {
12
12
  }
13
- SkyListViewChecklistModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- SkyListViewChecklistModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, declarations: [SkyListViewChecklistComponent,
13
+ SkyListViewChecklistModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ SkyListViewChecklistModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, declarations: [SkyListViewChecklistComponent,
15
15
  SkyListViewChecklistItemComponent], imports: [CommonModule, FormsModule, SkyCheckboxModule], exports: [SkyListViewChecklistComponent, SkyListViewChecklistItemComponent] });
16
- SkyListViewChecklistModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, imports: [CommonModule, FormsModule, SkyCheckboxModule] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, decorators: [{
16
+ SkyListViewChecklistModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, imports: [CommonModule, FormsModule, SkyCheckboxModule] });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{
20
20
  declarations: [
@@ -6,9 +6,9 @@ import * as i0 from "@angular/core";
6
6
  */
7
7
  export class ChecklistStateDispatcher extends StateDispatcher {
8
8
  }
9
- ChecklistStateDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistStateDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
10
- ChecklistStateDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistStateDispatcher });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistStateDispatcher, decorators: [{
9
+ ChecklistStateDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistStateDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
10
+ ChecklistStateDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistStateDispatcher });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistStateDispatcher, decorators: [{
12
12
  type: Injectable
13
13
  }] });
14
14
  export class ChecklistStateOrchestrator extends StateOrchestrator {
@@ -13,9 +13,9 @@ export class ChecklistState extends StateNode {
13
13
  this.register('items', ListViewChecklistItemsOrchestrator).begin();
14
14
  }
15
15
  }
16
- ChecklistState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistState, deps: [{ token: i1.ChecklistStateModel }, { token: i2.ChecklistStateDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });
17
- ChecklistState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistState });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistState, decorators: [{
16
+ ChecklistState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistState, deps: [{ token: i1.ChecklistStateModel }, { token: i2.ChecklistStateDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });
17
+ ChecklistState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistState });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistState, decorators: [{
19
19
  type: Injectable
20
20
  }], ctorParameters: function () { return [{ type: i1.ChecklistStateModel }, { type: i2.ChecklistStateDispatcher }]; } });
21
21
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LXN0YXRlLnN0YXRlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdC1idWlsZGVyLXZpZXctY2hlY2tsaXN0L3NyYy9saWIvbW9kdWxlcy9saXN0LXZpZXctY2hlY2tsaXN0L3N0YXRlL2NoZWNrbGlzdC1zdGF0ZS5zdGF0ZS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXZELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBRWhGOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWUsU0FBUSxTQUE4QjtJQUNoRSxZQUNFLFlBQWlDLEVBQ2pDLFVBQW9DO1FBRXBDLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzsyR0FSVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0YXRlTm9kZSB9IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcblxuaW1wb3J0IHsgQ2hlY2tsaXN0U3RhdGVNb2RlbCB9IGZyb20gJy4vY2hlY2tsaXN0LXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IENoZWNrbGlzdFN0YXRlRGlzcGF0Y2hlciB9IGZyb20gJy4vY2hlY2tsaXN0LXN0YXRlLnJ4c3RhdGUnO1xuaW1wb3J0IHsgTGlzdFZpZXdDaGVja2xpc3RJdGVtc09yY2hlc3RyYXRvciB9IGZyb20gJy4vaXRlbXMvaXRlbXMub3JjaGVzdHJhdG9yJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2hlY2tsaXN0U3RhdGUgZXh0ZW5kcyBTdGF0ZU5vZGU8Q2hlY2tsaXN0U3RhdGVNb2RlbD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBpbml0aWFsU3RhdGU6IENoZWNrbGlzdFN0YXRlTW9kZWwsXG4gICAgZGlzcGF0Y2hlcjogQ2hlY2tsaXN0U3RhdGVEaXNwYXRjaGVyXG4gICkge1xuICAgIHN1cGVyKGluaXRpYWxTdGF0ZSwgZGlzcGF0Y2hlcik7XG5cbiAgICB0aGlzLnJlZ2lzdGVyKCdpdGVtcycsIExpc3RWaWV3Q2hlY2tsaXN0SXRlbXNPcmNoZXN0cmF0b3IpLmJlZ2luKCk7XG4gIH1cbn1cbiJdfQ==
@@ -17,9 +17,9 @@ import * as i4 from '@skyux/core';
17
17
  */
18
18
  class SkyListViewChecklistItemComponent {
19
19
  }
20
- SkyListViewChecklistItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- SkyListViewChecklistItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SkyListViewChecklistItemComponent, selector: "sky-list-view-checklist-item", inputs: { item: "item" }, ngImport: i0, template: "<div class=\"sky-list-view-checklist-item\">\n <ng-content></ng-content>\n</div>\n", styles: [".sky-list-view-checklist-item{display:block;width:100%;cursor:pointer;word-wrap:break-word}.sky-list-view-checklist-item:last-child{border-bottom-width:0}.sky-list-view-checklist-item ::ng-deep sky-checkbox{display:block;position:relative;width:100%;padding:10px;cursor:pointer;border-bottom:1px dotted #cdcfd2}.sky-list-view-checklist-item ::ng-deep sky-checkbox-label div{overflow:hidden;text-overflow:ellipsis}.sky-list-view-checklist-item ::ng-deep .sky-list-view-checklist-single-button{background-color:transparent;border:none;border-bottom:1px dotted #cdcfd2;display:block;text-align:left;margin-bottom:0;padding:10px;width:100%;cursor:pointer}.sky-list-view-checklist-item ::ng-deep .sky-list-view-checklist-single-button.sky-list-view-checklist-row-selected{background-color:#f1eef6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistItemComponent, decorators: [{
20
+ SkyListViewChecklistItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ SkyListViewChecklistItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyListViewChecklistItemComponent, selector: "sky-list-view-checklist-item", inputs: { item: "item" }, ngImport: i0, template: "<div class=\"sky-list-view-checklist-item\">\n <ng-content></ng-content>\n</div>\n", styles: [".sky-list-view-checklist-item{display:block;width:100%;cursor:pointer;word-wrap:break-word}.sky-list-view-checklist-item:last-child{border-bottom-width:0}.sky-list-view-checklist-item ::ng-deep sky-checkbox{display:block;position:relative;width:100%;padding:10px;cursor:pointer;border-bottom:1px dotted #cdcfd2}.sky-list-view-checklist-item ::ng-deep sky-checkbox-label div{overflow:hidden;text-overflow:ellipsis}.sky-list-view-checklist-item ::ng-deep .sky-list-view-checklist-single-button{background-color:transparent;border:none;border-bottom:1px dotted #cdcfd2;display:block;text-align:left;margin-bottom:0;padding:10px;width:100%;cursor:pointer}.sky-list-view-checklist-item ::ng-deep .sky-list-view-checklist-single-button.sky-list-view-checklist-row-selected{background-color:#f1eef6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistItemComponent, decorators: [{
23
23
  type: Component,
24
24
  args: [{ selector: 'sky-list-view-checklist-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-list-view-checklist-item\">\n <ng-content></ng-content>\n</div>\n", styles: [".sky-list-view-checklist-item{display:block;width:100%;cursor:pointer;word-wrap:break-word}.sky-list-view-checklist-item:last-child{border-bottom-width:0}.sky-list-view-checklist-item ::ng-deep sky-checkbox{display:block;position:relative;width:100%;padding:10px;cursor:pointer;border-bottom:1px dotted #cdcfd2}.sky-list-view-checklist-item ::ng-deep sky-checkbox-label div{overflow:hidden;text-overflow:ellipsis}.sky-list-view-checklist-item ::ng-deep .sky-list-view-checklist-single-button{background-color:transparent;border:none;border-bottom:1px dotted #cdcfd2;display:block;text-align:left;margin-bottom:0;padding:10px;width:100%;cursor:pointer}.sky-list-view-checklist-item ::ng-deep .sky-list-view-checklist-single-button.sky-list-view-checklist-row-selected{background-color:#f1eef6}\n"] }]
25
25
  }], propDecorators: { item: [{
@@ -40,9 +40,9 @@ class ChecklistStateModel {
40
40
  */
41
41
  class ChecklistStateDispatcher extends StateDispatcher {
42
42
  }
43
- ChecklistStateDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistStateDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
44
- ChecklistStateDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistStateDispatcher });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistStateDispatcher, decorators: [{
43
+ ChecklistStateDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistStateDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
44
+ ChecklistStateDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistStateDispatcher });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistStateDispatcher, decorators: [{
46
46
  type: Injectable
47
47
  }] });
48
48
  class ChecklistStateOrchestrator extends StateOrchestrator {
@@ -100,9 +100,9 @@ class ChecklistState extends StateNode {
100
100
  this.register('items', ListViewChecklistItemsOrchestrator).begin();
101
101
  }
102
102
  }
103
- ChecklistState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistState, deps: [{ token: ChecklistStateModel }, { token: ChecklistStateDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });
104
- ChecklistState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistState });
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ChecklistState, decorators: [{
103
+ ChecklistState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistState, deps: [{ token: ChecklistStateModel }, { token: ChecklistStateDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });
104
+ ChecklistState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistState });
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ChecklistState, decorators: [{
106
106
  type: Injectable
107
107
  }], ctorParameters: function () { return [{ type: ChecklistStateModel }, { type: ChecklistStateDispatcher }]; } });
108
108
 
@@ -110,6 +110,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
110
110
  * @deprecated List builder view checklist and its features are deprecated. Use repeater instead. For more information, see https://developer.blackbaud.com/skyux/components/repeater.
111
111
  */
112
112
  class SkyListViewChecklistComponent extends ListViewComponent {
113
+ /**
114
+ * The name of the view.
115
+ * @required
116
+ */
117
+ set name(value) {
118
+ this.viewName = value;
119
+ }
120
+ /**
121
+ * How many items users can select.
122
+ * `"single"` allows users to select one item in the checklist, while `"multiple"`
123
+ * allows users to select multiple items in the checklist.
124
+ * @default "multiple"
125
+ */
126
+ set selectMode(value) {
127
+ this._selectMode = value;
128
+ if (this.selectMode === 'multiple') {
129
+ this.dispatcher.toolbarShowMultiselectToolbar(true);
130
+ }
131
+ else {
132
+ this.showOnlySelected = false;
133
+ this.dispatcher.toolbarShowMultiselectToolbar(false);
134
+ }
135
+ this.reapplyFilter(this.showOnlySelected);
136
+ }
137
+ get selectMode() {
138
+ return this._selectMode || 'multiple';
139
+ }
140
+ /**
141
+ * Whether to display selected items only.
142
+ * @default false
143
+ */
144
+ set showOnlySelected(value) {
145
+ this._showOnlySelected = value;
146
+ }
147
+ get showOnlySelected() {
148
+ return this._showOnlySelected;
149
+ }
113
150
  constructor(state, dispatcher, checklistState, checklistDispatcher, logger) {
114
151
  super(state, 'Checklist View');
115
152
  this.dispatcher = dispatcher;
@@ -167,43 +204,6 @@ class SkyListViewChecklistComponent extends ListViewComponent {
167
204
  this._selectedIdMap = selectedItems.item.selectedIdMap;
168
205
  });
169
206
  }
170
- /**
171
- * The name of the view.
172
- * @required
173
- */
174
- set name(value) {
175
- this.viewName = value;
176
- }
177
- /**
178
- * How many items users can select.
179
- * `"single"` allows users to select one item in the checklist, while `"multiple"`
180
- * allows users to select multiple items in the checklist.
181
- * @default "multiple"
182
- */
183
- set selectMode(value) {
184
- this._selectMode = value;
185
- if (this.selectMode === 'multiple') {
186
- this.dispatcher.toolbarShowMultiselectToolbar(true);
187
- }
188
- else {
189
- this.showOnlySelected = false;
190
- this.dispatcher.toolbarShowMultiselectToolbar(false);
191
- }
192
- this.reapplyFilter(this.showOnlySelected);
193
- }
194
- get selectMode() {
195
- return this._selectMode || 'multiple';
196
- }
197
- /**
198
- * Whether to display selected items only.
199
- * @default false
200
- */
201
- set showOnlySelected(value) {
202
- this._showOnlySelected = value;
203
- }
204
- get showOnlySelected() {
205
- return this._showOnlySelected;
206
- }
207
207
  ngOnInit() {
208
208
  if (this.selectMode === 'multiple') {
209
209
  this.dispatcher.toolbarShowMultiselectToolbar(true);
@@ -348,8 +348,8 @@ class SkyListViewChecklistComponent extends ListViewComponent {
348
348
  return true;
349
349
  }
350
350
  }
351
- SkyListViewChecklistComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistComponent, deps: [{ token: i1.ListState }, { token: i1.ListStateDispatcher }, { token: ChecklistState }, { token: ChecklistStateDispatcher }, { token: i4.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
352
- SkyListViewChecklistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SkyListViewChecklistComponent, selector: "sky-list-view-checklist", inputs: { name: "name", search: "search", labelFieldSelector: ["label", "labelFieldSelector"], description: "description", selectMode: "selectMode", showOnlySelected: "showOnlySelected" }, providers: [
351
+ SkyListViewChecklistComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistComponent, deps: [{ token: i1.ListState }, { token: i1.ListStateDispatcher }, { token: ChecklistState }, { token: ChecklistStateDispatcher }, { token: i4.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
352
+ SkyListViewChecklistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyListViewChecklistComponent, selector: "sky-list-view-checklist", inputs: { name: "name", search: "search", labelFieldSelector: ["label", "labelFieldSelector"], description: "description", selectMode: "selectMode", showOnlySelected: "showOnlySelected" }, providers: [
353
353
  {
354
354
  provide: ListViewComponent,
355
355
  useExisting: forwardRef(() => SkyListViewChecklistComponent),
@@ -358,7 +358,7 @@ SkyListViewChecklistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
358
358
  ChecklistStateDispatcher,
359
359
  ChecklistStateModel,
360
360
  ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"sky-list-view-checklist\" *ngIf=\"active | async\">\n <div [ngSwitch]=\"selectMode\">\n <ng-template ngSwitchCase=\"single\">\n <div role=\"radiogroup\">\n <sky-list-view-checklist-item\n *ngFor=\"let item of items | async\"\n [attr.sky-cmp-id]=\"item.id\"\n [item]=\"item\"\n >\n <button\n role=\"radio\"\n type=\"button\"\n class=\"sky-list-view-checklist-single-button\"\n [attr.aria-checked]=\"(itemSelected(item.id) | async) || false\"\n [ngClass]=\"{\n 'sky-list-view-checklist-row-selected':\n (itemSelected(item.id) | async)\n }\"\n (click)=\"singleSelectRowClick(item)\"\n >\n <div *ngIf=\"item.label\" class=\"sky-emphasized\">\n {{ item.label }}\n </div>\n <div *ngIf=\"item.description\">{{ item.description }}</div>\n </button>\n </sky-list-view-checklist-item>\n </div>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <sky-list-view-checklist-item\n *ngFor=\"let item of items | async\"\n [attr.sky-cmp-id]=\"item.id\"\n [item]=\"item\"\n >\n <sky-checkbox\n [checked]=\"itemSelected(item.id) | async\"\n (change)=\"setItemSelection(item, $event)\"\n >\n <sky-checkbox-label>\n <div\n *ngIf=\"item.label\"\n class=\"sky-emphasized\"\n [attr.title]=\"item.label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.description\" [attr.title]=\"item.description\">\n {{ item.description }}\n </div>\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-list-view-checklist-item>\n </ng-template>\n </div>\n</div>\n", styles: [".sky-list-view-checklist ::ng-deep .sky-checkbox-wrapper{display:flex;align-items:flex-start}.sky-list-view-checklist ::ng-deep .sky-checkbox-wrapper>.sky-checkbox,.sky-list-view-checklist ::ng-deep .sky-checkbox-wrapper>input{flex:1;max-width:22px}.sky-list-view-checklist ::ng-deep .sky-switch{white-space:nowrap}.sky-list-view-checklist ::ng-deep .sky-switch-label{margin:0}.sky-list-view-checklist ::ng-deep sky-checkbox-label{min-width:0}.sky-list-view-checklist ::ng-deep .sky-switch-control{margin:0 5px 0 0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i6.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: SkyListViewChecklistItemComponent, selector: "sky-list-view-checklist-item", inputs: ["item"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
361
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistComponent, decorators: [{
361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistComponent, decorators: [{
362
362
  type: Component,
363
363
  args: [{ selector: 'sky-list-view-checklist', providers: [
364
364
  {
@@ -389,11 +389,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
389
389
  */
390
390
  class SkyListViewChecklistModule {
391
391
  }
392
- SkyListViewChecklistModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
393
- SkyListViewChecklistModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, declarations: [SkyListViewChecklistComponent,
392
+ SkyListViewChecklistModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
393
+ SkyListViewChecklistModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, declarations: [SkyListViewChecklistComponent,
394
394
  SkyListViewChecklistItemComponent], imports: [CommonModule, FormsModule, SkyCheckboxModule], exports: [SkyListViewChecklistComponent, SkyListViewChecklistItemComponent] });
395
- SkyListViewChecklistModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, imports: [CommonModule, FormsModule, SkyCheckboxModule] });
396
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyListViewChecklistModule, decorators: [{
395
+ SkyListViewChecklistModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, imports: [CommonModule, FormsModule, SkyCheckboxModule] });
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewChecklistModule, decorators: [{
397
397
  type: NgModule,
398
398
  args: [{
399
399
  declarations: [