@coreui/angular-pro 4.5.6 → 4.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +5 -4
- package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +65 -96
- package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +3 -3
- package/esm2022/lib/pagination/page-item/page-item.directive.mjs +1 -1
- package/fesm2022/coreui-angular-pro.mjs +70 -99
- package/fesm2022/coreui-angular-pro.mjs.map +1 -1
- package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -2
- package/package.json +1 -1
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, HostBinding, HostListener, inject, Input, Output, ViewChild } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, effect, EventEmitter, HostBinding, HostListener, inject, Input, Output, signal, ViewChild } from '@angular/core';
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { NgIf } from '@angular/common';
|
|
4
4
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
|
-
import {
|
|
6
|
-
import { combineLatestWith, delay, distinctUntilChanged, filter, tap } from 'rxjs/operators';
|
|
5
|
+
import { distinctUntilChanged, filter, tap } from 'rxjs/operators';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@angular/cdk/a11y";
|
|
9
8
|
import * as i2 from "../multi-select.service";
|
|
@@ -15,9 +14,6 @@ export class MultiSelectOptionComponent {
|
|
|
15
14
|
this.focusMonitor = focusMonitor;
|
|
16
15
|
this.multiSelectService = multiSelectService;
|
|
17
16
|
this.#destroyRef = inject(DestroyRef);
|
|
18
|
-
this.#active$ = new Subject();
|
|
19
|
-
this.#selected$ = new Subject();
|
|
20
|
-
this.#value$ = new Subject();
|
|
21
17
|
/**
|
|
22
18
|
* Option style
|
|
23
19
|
* @type ('checkbox' | 'text')
|
|
@@ -31,24 +27,37 @@ export class MultiSelectOptionComponent {
|
|
|
31
27
|
*/
|
|
32
28
|
this.visible = true;
|
|
33
29
|
this.#disabled = false;
|
|
34
|
-
this.#selected =
|
|
30
|
+
this.#selected = signal(undefined);
|
|
31
|
+
this.#selectedEffect = effect(() => {
|
|
32
|
+
const value = this.#value();
|
|
33
|
+
const selected = this.#selected();
|
|
34
|
+
if (value && selected !== undefined) {
|
|
35
|
+
selected ? this.multiSelectService.selectionModel?.select(value) : this.multiSelectService.selectionModel?.deselect(value);
|
|
36
|
+
this.ariaSelected = selected;
|
|
37
|
+
this.selectedChange.emit(selected);
|
|
38
|
+
this.changeDetectorRef.markForCheck();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
35
41
|
/**
|
|
36
42
|
* Emits option selected change
|
|
37
43
|
* @type boolean
|
|
38
44
|
*/
|
|
39
45
|
this.selectedChange = new EventEmitter();
|
|
46
|
+
this.#value = signal(undefined);
|
|
40
47
|
this.hasContent = true;
|
|
41
|
-
this.#dropdownVisible = false;
|
|
42
|
-
|
|
48
|
+
this.#dropdownVisible = signal(false);
|
|
49
|
+
// get active() {
|
|
50
|
+
// return this.#active() && this.visible;
|
|
51
|
+
// }
|
|
52
|
+
this.#active = signal(false);
|
|
53
|
+
this.#activeEffect = effect(() => {
|
|
54
|
+
this.tabIndex = this.#active() && this.visible ? 0 : -1;
|
|
55
|
+
});
|
|
43
56
|
this.#focused = false;
|
|
44
57
|
this.focusChange = new EventEmitter();
|
|
45
58
|
this.#tabIndex = -1;
|
|
46
59
|
this.#ariaSelected = undefined;
|
|
47
|
-
this.setSubscriptions();
|
|
48
60
|
}
|
|
49
|
-
#active$;
|
|
50
|
-
#selected$;
|
|
51
|
-
#value$;
|
|
52
61
|
/**
|
|
53
62
|
* Option disabled.
|
|
54
63
|
* @type boolean
|
|
@@ -67,43 +76,44 @@ export class MultiSelectOptionComponent {
|
|
|
67
76
|
* @default false
|
|
68
77
|
*/
|
|
69
78
|
set selected(value) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.#selected
|
|
73
|
-
|
|
79
|
+
if (value !== undefined) {
|
|
80
|
+
const selected = coerceBooleanProperty(value);
|
|
81
|
+
if (this.#selected() !== selected) {
|
|
82
|
+
this.#selected.set(selected);
|
|
83
|
+
}
|
|
74
84
|
}
|
|
75
85
|
}
|
|
76
86
|
get selected() {
|
|
77
|
-
return this.#selected;
|
|
87
|
+
return this.#selected();
|
|
78
88
|
}
|
|
79
89
|
#selected;
|
|
90
|
+
#selectedEffect;
|
|
80
91
|
/**
|
|
81
92
|
* Option value.
|
|
82
93
|
* @type string
|
|
83
94
|
* @default undefined
|
|
84
95
|
*/
|
|
85
96
|
set value(value) {
|
|
86
|
-
if (this.#value !== value) {
|
|
87
|
-
this.#value
|
|
88
|
-
this.#value$.next(value);
|
|
97
|
+
if (this.#value() !== value) {
|
|
98
|
+
this.#value.set(value);
|
|
89
99
|
}
|
|
90
100
|
}
|
|
91
101
|
get value() {
|
|
92
|
-
return this.#value;
|
|
102
|
+
return this.#value();
|
|
93
103
|
}
|
|
94
104
|
#value;
|
|
95
105
|
#dropdownVisible;
|
|
96
106
|
set active(value) {
|
|
97
107
|
const active = coerceBooleanProperty(value) && this.visible && !this.disabled;
|
|
98
|
-
if (this.#active !== active) {
|
|
99
|
-
this.#active
|
|
100
|
-
this.#active$.next(active);
|
|
108
|
+
if (this.#active() !== active) {
|
|
109
|
+
this.#active.set(active);
|
|
101
110
|
}
|
|
102
111
|
}
|
|
103
|
-
get active() {
|
|
104
|
-
|
|
105
|
-
}
|
|
112
|
+
// get active() {
|
|
113
|
+
// return this.#active() && this.visible;
|
|
114
|
+
// }
|
|
106
115
|
#active;
|
|
116
|
+
#activeEffect;
|
|
107
117
|
#focused;
|
|
108
118
|
get role() {
|
|
109
119
|
return 'option';
|
|
@@ -111,11 +121,11 @@ export class MultiSelectOptionComponent {
|
|
|
111
121
|
get hostClasses() {
|
|
112
122
|
return {
|
|
113
123
|
'form-multi-select-option': true,
|
|
114
|
-
'form-multi-selected': this
|
|
124
|
+
'form-multi-selected': this.#selected(),
|
|
115
125
|
[`form-multi-select-option-with-${this.optionsStyle}`]: !!this.optionsStyle,
|
|
116
126
|
disabled: this.disabled,
|
|
117
127
|
'd-none': !this.visible,
|
|
118
|
-
active: this
|
|
128
|
+
active: this.#active(),
|
|
119
129
|
focused: this.#focused
|
|
120
130
|
};
|
|
121
131
|
}
|
|
@@ -124,7 +134,9 @@ export class MultiSelectOptionComponent {
|
|
|
124
134
|
return (this.disabled || !this.visible) ? -1 : this.#tabIndex;
|
|
125
135
|
}
|
|
126
136
|
set tabIndex(tabindex) {
|
|
127
|
-
|
|
137
|
+
setTimeout(() => {
|
|
138
|
+
this.#tabIndex = tabindex;
|
|
139
|
+
});
|
|
128
140
|
}
|
|
129
141
|
#tabIndex;
|
|
130
142
|
get ariaDisabled() {
|
|
@@ -154,21 +166,22 @@ export class MultiSelectOptionComponent {
|
|
|
154
166
|
this.#focused = true;
|
|
155
167
|
}
|
|
156
168
|
onKeyUp($event) {
|
|
157
|
-
if (this.#dropdownVisible) {
|
|
169
|
+
if (this.#dropdownVisible()) {
|
|
158
170
|
if (['Enter', 'Space'].includes($event.code)) {
|
|
159
171
|
$event.stopImmediatePropagation();
|
|
160
172
|
$event.preventDefault();
|
|
161
|
-
this.selected = this.disabled ? this
|
|
173
|
+
this.selected = this.disabled ? this.#selected() : !this.#selected();
|
|
162
174
|
this.focus('keyboard');
|
|
163
175
|
}
|
|
164
176
|
}
|
|
165
177
|
}
|
|
166
178
|
onClick($event) {
|
|
167
179
|
$event.stopPropagation();
|
|
168
|
-
this.selected = this.disabled ? this
|
|
180
|
+
this.selected = this.disabled ? this.#selected() : !this.#selected();
|
|
169
181
|
this.focus('mouse');
|
|
170
182
|
}
|
|
171
183
|
ngAfterViewInit() {
|
|
184
|
+
this.setSubscriptions();
|
|
172
185
|
setTimeout(() => {
|
|
173
186
|
this.hasContent = !!this.contentDiv?.nativeElement.childNodes.length;
|
|
174
187
|
if (!this.hasContent) {
|
|
@@ -185,17 +198,19 @@ export class MultiSelectOptionComponent {
|
|
|
185
198
|
if (this.value === undefined) {
|
|
186
199
|
this.value = this.label?.trim() || '...';
|
|
187
200
|
}
|
|
188
|
-
|
|
201
|
+
if (!this.changeDetectorRef.destroyed) {
|
|
202
|
+
// setTimeout(() => {
|
|
189
203
|
this.selected = this.isSelected(this.value);
|
|
190
204
|
this.changeDetectorRef.markForCheck();
|
|
191
|
-
|
|
205
|
+
// });
|
|
206
|
+
}
|
|
192
207
|
}
|
|
193
208
|
/** Get the label for this element which is required by the FocusableOption interface. */
|
|
194
209
|
getLabel() {
|
|
195
210
|
return (this.label ?? this.value);
|
|
196
211
|
}
|
|
197
212
|
focus(origin = 'program') {
|
|
198
|
-
if (this.#dropdownVisible && !this.disabled) {
|
|
213
|
+
if (this.#dropdownVisible() && !this.disabled) {
|
|
199
214
|
this.focusMonitor.focusVia(this.elementRef.nativeElement, origin, { preventScroll: false });
|
|
200
215
|
this.multiSelectService.focusChange(this);
|
|
201
216
|
this.changeDetectorRef.markForCheck();
|
|
@@ -204,70 +219,24 @@ export class MultiSelectOptionComponent {
|
|
|
204
219
|
}
|
|
205
220
|
setSubscriptions() {
|
|
206
221
|
this.multiSelectService.multiSelectVisible$
|
|
207
|
-
.pipe(takeUntilDestroyed())
|
|
208
|
-
.subscribe(
|
|
209
|
-
this.#dropdownVisible = visible;
|
|
210
|
-
});
|
|
211
|
-
this.#selected$
|
|
212
|
-
.pipe(tap(selected => {
|
|
213
|
-
if (selected) {
|
|
214
|
-
if (this.value && !this.isSelected(this.value)) {
|
|
215
|
-
this.multiSelectService.selectionModel?.select(this.value);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
if (this.value && this.isSelected(this.value)) {
|
|
220
|
-
this.multiSelectService.selectionModel?.deselect(this.value);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}),
|
|
224
|
-
// delay(0),
|
|
225
|
-
combineLatestWith(this.#value$), takeUntilDestroyed())
|
|
226
|
-
.subscribe(([selected, value]) => {
|
|
227
|
-
if (selected) {
|
|
228
|
-
if (!this.isSelected(this.value)) {
|
|
229
|
-
this.multiSelectService.selectionModel?.select(this.value);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
if (this.isSelected(this.value)) {
|
|
234
|
-
this.multiSelectService.selectionModel?.deselect(this.value);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
this.ariaSelected = selected;
|
|
238
|
-
this.selectedChange.emit(selected);
|
|
239
|
-
this.changeDetectorRef.markForCheck();
|
|
240
|
-
});
|
|
241
|
-
setTimeout(() => {
|
|
242
|
-
if (!this.changeDetectorRef.destroyed) {
|
|
243
|
-
this.multiSelectService.selectionModel.changed
|
|
244
|
-
.pipe(filter(change => {
|
|
245
|
-
return change.added.includes(this.value) || change.removed.includes(this.value);
|
|
246
|
-
}), tap(change => {
|
|
247
|
-
this.#selected = change.added.includes(this.value);
|
|
248
|
-
this.changeDetectorRef.markForCheck();
|
|
249
|
-
}), takeUntilDestroyed(this.#destroyRef))
|
|
250
|
-
.subscribe();
|
|
251
|
-
}
|
|
252
|
-
});
|
|
222
|
+
.pipe(takeUntilDestroyed(this.#destroyRef))
|
|
223
|
+
.subscribe(this.#dropdownVisible.set);
|
|
253
224
|
this.multiSelectService.multiSelectFocus$
|
|
254
|
-
.pipe(distinctUntilChanged(), takeUntilDestroyed())
|
|
225
|
+
.pipe(distinctUntilChanged(), takeUntilDestroyed(this.#destroyRef))
|
|
255
226
|
.subscribe((option) => {
|
|
256
227
|
this.active = this.value === option.value;
|
|
257
228
|
});
|
|
258
|
-
this
|
|
259
|
-
.
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
this.#selected = this.isSelected(value);
|
|
267
|
-
});
|
|
229
|
+
if (!this.changeDetectorRef.destroyed) {
|
|
230
|
+
this.multiSelectService.selectionModel.changed
|
|
231
|
+
.pipe(filter(change => change.added.includes(this.value) || change.removed.includes(this.value)), tap(change => {
|
|
232
|
+
this.selected = change.added.includes(this.value);
|
|
233
|
+
this.changeDetectorRef.markForCheck();
|
|
234
|
+
}), takeUntilDestroyed(this.#destroyRef))
|
|
235
|
+
.subscribe();
|
|
236
|
+
}
|
|
268
237
|
}
|
|
269
238
|
isSelected(value = this.value) {
|
|
270
|
-
return this.multiSelectService.selectionModel?.isSelected(value) ??
|
|
239
|
+
return (this.#selected() || this.multiSelectService.selectionModel?.isSelected(value)) ?? false;
|
|
271
240
|
}
|
|
272
241
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: MultiSelectOptionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.MultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
273
242
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: MultiSelectOptionComponent, isStandalone: true, selector: "c-multi-select-option", inputs: { optionsStyle: "optionsStyle", label: "label", text: "text", visible: "visible", disabled: "disabled", selected: "selected", value: "value", active: "active", role: "role" }, outputs: { selectedChange: "selectedChange", focusChange: "focusChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "blur": "onBlur()", "focus": "onFocus()", "keyup": "onKeyUp($event)", "click": "onClick($event)" }, properties: { "role": "this.role", "class": "this.hostClasses", "attr.tabindex": "this.tabIndex", "attr.disabled": "this.ariaDisabled", "attr.aria-disabled": "this.ariaDisabled", "attr.aria-selected": "this.ariaSelected" } }, viewQueries: [{ propertyName: "contentDiv", first: true, predicate: ["contentDiv"], descendants: true }], exportAs: ["cMultiSelectOption"], ngImport: i0, template: "<div #contentDiv>\n <ng-content></ng-content>\n</div>\n<div *ngIf=\"!hasContent\">\n {{text ?? label ?? value}}\n</div>\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden}:host.active{border-radius:var(--cui-form-multi-select-option-indicator-border-radius, .375rem);box-shadow:0 0 .125rem 0 var(--cui-gray-400)}:host.focused,:host :focus-visible{box-shadow:0 0 0 .125rem #321fdb40;outline:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -334,4 +303,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
334
303
|
type: HostListener,
|
|
335
304
|
args: ['click', ['$event']]
|
|
336
305
|
}] } });
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3Qtb3B0aW9uL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGlvbi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFFVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBYTdGLE1BQU0sT0FBTywwQkFBMEI7SUFFNUIsV0FBVyxDQUFzQjtJQUUxQyxZQUNrQixVQUFzQixFQUNyQixpQkFBb0MsRUFDcEMsWUFBMEIsRUFDMUIsa0JBQXNDO1FBSHZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNw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QzNCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU1yQixZQUFZO3NCQUR2QixXQUFXO3VCQUFDLG9CQUFvQjtnQkFjakMsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXM0IsTUFBTTtzQkFEYixZQUFZO3VCQUFDLE1BQU07Z0JBTVosT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU87Z0JBTWIsT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhekIsT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzTW9uaXRvciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0V2l0aCwgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTXVsdGlTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vbXVsdGktc2VsZWN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLW11bHRpLXNlbGVjdC1vcHRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjTXVsdGlTZWxlY3RPcHRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWZdXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0T3B0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgRm9jdXNhYmxlT3B0aW9uIHtcblxuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlTZWxlY3RTZXJ2aWNlOiBNdWx0aVNlbGVjdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZXRTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlbGVjdGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgcmVhZG9ubHkgI2FjdGl2ZSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICByZWFkb25seSAjc2VsZWN0ZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgI3ZhbHVlJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAvKipcbiAgICogT3B0aW9uIHN0eWxlXG4gICAqIEB0eXBlICgnY2hlY2tib3gnIHwgJ3RleHQnKVxuICAgKiBAZGVmYXVsdCAnY2hlY2tib3gnXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zU3R5bGU6ICgnY2hlY2tib3gnIHwgJ3RleHQnKSA9IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLm9wdGlvbnNTdHlsZTtcblxuICAvKipcbiAgICogT3B0aW9uIGxhYmVsXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gaW5uZXIgdGV4dFxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSB0ZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gdmlzaWJsZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogT3B0aW9uIGRpc2FibGVkLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiNkaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2Rpc2FibGVkO1xuICB9XG5cbiAgI2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBzZWxlY3RlZC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHNlbGVjdGVkKHZhbHVlOiAoYm9vbGVhbiB8IHVuZGVmaW5lZCkpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuI3NlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgdGhpcy4jc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIHRoaXMuI3NlbGVjdGVkJC5uZXh0KHNlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3NlbGVjdGVkO1xuICB9XG5cbiAgI3NlbGVjdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9wdGlvbiBzZWxlY3RlZCBjaGFuZ2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gdmFsdWUuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuI3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy4jdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI3ZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3ZhbHVlO1xuICB9XG5cbiAgI3ZhbHVlITogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnREaXYnKSBwcml2YXRlIGNvbnRlbnREaXY/OiBFbGVtZW50UmVmO1xuICBwdWJsaWMgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgI2Ryb3Bkb3duVmlzaWJsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBhY3RpdmUodmFsdWU6IChib29sZWFuIHwgdW5kZWZpbmVkKSkge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkgJiYgdGhpcy52aXNpYmxlICYmICF0aGlzLmRpc2FibGVkO1xuICAgIGlmICh0aGlzLiNhY3RpdmUgIT09IGFjdGl2ZSkge1xuICAgICAgdGhpcy4jYWN0aXZlID0gYWN0aXZlO1xuICAgICAgdGhpcy4jYWN0aXZlJC5uZXh0KGFjdGl2ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy4jYWN0aXZlICYmIHRoaXMudmlzaWJsZTtcbiAgfVxuXG4gICNhY3RpdmUgPSBmYWxzZTtcblxuICAjZm9jdXNlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBmb2N1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RPcHRpb25Db21wb25lbnQ+KCk7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdyb2xlJylcbiAgcHJpdmF0ZSBnZXQgcm9sZSgpIHtcbiAgICByZXR1cm4gJ29wdGlvbic7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnZm9ybS1tdWx0aS1zZWxlY3Qtb3B0aW9uJzogdHJ1ZSxcbiAgICAgICdmb3JtLW11bHRpLXNlbGVjdGVkJzogdGhpcy5zZWxlY3RlZCxcbiAgICAgIFtgZm9ybS1tdWx0aS1zZWxlY3Qtb3B0aW9uLXdpdGgtJHt0aGlzLm9wdGlvbnNTdHlsZX1gXTogISF0aGlzLm9wdGlvbnNTdHlsZSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgJ2Qtbm9uZSc6ICF0aGlzLnZpc2libGUsXG4gICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlLFxuICAgICAgZm9jdXNlZDogdGhpcy4jZm9jdXNlZFxuICAgIH07XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBwcml2YXRlIGdldCB0YWJJbmRleCgpIHtcbiAgICAvLyByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5fYWN0aXZlID8gLTEgOiAwO1xuICAgIHJldHVybiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy52aXNpYmxlKSA/IC0xIDogdGhpcy4jdGFiSW5kZXg7XG4gIH1cblxuICBwcml2YXRlIHNldCB0YWJJbmRleCh0YWJpbmRleCkge1xuICAgIHRoaXMuI3RhYkluZGV4ID0gdGFiaW5kZXg7XG4gIH1cblxuICAjdGFiSW5kZXg6IG51bWJlciA9IC0xO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJylcbiAgcHJpdmF0ZSBnZXQgYXJpYURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IG51bGw7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1zZWxlY3RlZCcpXG4gIHByaXZhdGUgZ2V0IGFyaWFTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXJpYVNlbGVjdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgYXJpYVNlbGVjdGVkKHNlbGVjdGVkKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNhcmlhU2VsZWN0ZWQgPSBzZWxlY3RlZCB8fCB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICAjYXJpYVNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFsnU3BhY2UnXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoWydUYWInXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwcml2YXRlIG9uQmx1cigpIHtcbiAgICB0aGlzLiNmb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIHByaXZhdGUgb25Gb2N1cygpIHtcbiAgICB0aGlzLiNmb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvbktleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNkcm9wZG93blZpc2libGUpIHtcbiAgICAgIGlmIChbJ0VudGVyJywgJ1NwYWNlJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmRpc2FibGVkID8gdGhpcy5zZWxlY3RlZCA6ICF0aGlzLnNlbGVjdGVkO1xuICAgICAgICB0aGlzLmZvY3VzKCdrZXlib2FyZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvbkNsaWNrKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCA/IHRoaXMuc2VsZWN0ZWQgOiAhdGhpcy5zZWxlY3RlZDtcbiAgICB0aGlzLmZvY3VzKCdtb3VzZScpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oYXNDb250ZW50ID0gISF0aGlzLmNvbnRlbnREaXY/Lm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGg7XG4gICAgICBpZiAoIXRoaXMuaGFzQ29udGVudCkge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMudGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBpbm5lclRleHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudC50cmltKCkgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMudGV4dCA9IGlubmVyVGV4dCB8fCB0aGlzLnZhbHVlPy50cmltKCkgfHwgJy4uLic7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGFiZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMudGV4dD8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmxhYmVsPy50cmltKCkgfHwgJy4uLic7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxhYmVsIGZvciB0aGlzIGVsZW1lbnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgdGhlIEZvY3VzYWJsZU9wdGlvbiBpbnRlcmZhY2UuICovXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIDxzdHJpbmc+KHRoaXMubGFiZWwgPz8gdGhpcy52YWx1ZSk7XG4gIH1cblxuICBmb2N1cyhvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2Ryb3Bkb3duVmlzaWJsZSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiwgeyBwcmV2ZW50U2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLmZvY3VzQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKSB7XG5cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdFZpc2libGUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodmlzaWJsZSA9PiB7XG4gICAgICAgIHRoaXMuI2Ryb3Bkb3duVmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI3NlbGVjdGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChzZWxlY3RlZCA9PiB7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiAhdGhpcy5pc1NlbGVjdGVkKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuaXNTZWxlY3RlZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uZGVzZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gZGVsYXkoMCksXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuI3ZhbHVlJCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbc2VsZWN0ZWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2Uuc2VsZWN0aW9uTW9kZWw/LnNlbGVjdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2Uuc2VsZWN0aW9uTW9kZWw/LmRlc2VsZWN0KHRoaXMudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFyaWFTZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmNoYW5nZWRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlLmFkZGVkLmluY2x1ZGVzKHRoaXMudmFsdWUpIHx8IGNoYW5nZS5yZW1vdmVkLmluY2x1ZGVzKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoY2hhbmdlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy4jc2VsZWN0ZWQgPSBjaGFuZ2UuYWRkZWQuaW5jbHVkZXModGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdEZvY3VzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChvcHRpb24pID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLnZhbHVlID09PSBvcHRpb24udmFsdWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2FjdGl2ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYWN0aXZlID0+IHtcbiAgICAgICAgdGhpcy50YWJJbmRleCA9IGFjdGl2ZSA/IDAgOiAtMTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jdmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy4jc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlID0gdGhpcy52YWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uaXNTZWxlY3RlZCh2YWx1ZSkgPz8gdGhpcy5zZWxlY3RlZCA/PyBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiAjY29udGVudERpdj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWhhc0NvbnRlbnRcIj5cbiAge3t0ZXh0ID8/IGxhYmVsID8/IHZhbHVlfX1cbjwvZGl2PlxuIl19
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3Qtb3B0aW9uL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGlvbi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBRU4sWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFhbkUsTUFBTSxPQUFPLDBCQUEwQjtJQUU1QixXQUFXLENBQXNCO0lBRTFDLFlBQ2tCLFVBQXNCLEVBQ3JCLGlCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixrQkFBc0M7UUFIdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixr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QUFZO3NCQUZ2QixXQUFXO3VCQUFDLGVBQWU7O3NCQUMzQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFNckIsWUFBWTtzQkFEdkIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBY2pDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVzNCLE1BQU07c0JBRGIsWUFBWTt1QkFBQyxNQUFNO2dCQU1aLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPO2dCQU1iLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYXpCLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdSZWYsXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzTW9uaXRvciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE11bHRpU2VsZWN0U2VydmljZSB9IGZyb20gJy4uL211bHRpLXNlbGVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1tdWx0aS1zZWxlY3Qtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY011bHRpU2VsZWN0T3B0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdE9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEZvY3VzYWJsZU9wdGlvbiB7XG5cbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG11bHRpU2VsZWN0U2VydmljZTogTXVsdGlTZWxlY3RTZXJ2aWNlXG4gICkge31cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlbGVjdGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBzdHlsZVxuICAgKiBAdHlwZSAoJ2NoZWNrYm94JyB8ICd0ZXh0JylcbiAgICogQGRlZmF1bHQgJ2NoZWNrYm94J1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uc1N0eWxlOiAoJ2NoZWNrYm94JyB8ICd0ZXh0JykgPSB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5vcHRpb25zU3R5bGU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBsYWJlbFxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uIGlubmVyIHRleHRcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgdGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uIHZpc2libGUuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBkaXNhYmxlZC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLiNkaXNhYmxlZDtcbiAgfVxuXG4gICNkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gc2VsZWN0ZWQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogKGJvb2xlYW4gfCB1bmRlZmluZWQpKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgIGlmICh0aGlzLiNzZWxlY3RlZCgpICE9PSBzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLiNzZWxlY3RlZC5zZXQoc2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy4jc2VsZWN0ZWQoKTtcbiAgfVxuXG4gICNzZWxlY3RlZCA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICNzZWxlY3RlZEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLiN2YWx1ZSgpO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy4jc2VsZWN0ZWQoKTtcbiAgICBpZiAodmFsdWUgJiYgc2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VsZWN0ZWQgPyB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0KHZhbHVlKSA6IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5kZXNlbGVjdCh2YWx1ZSk7XG4gICAgICB0aGlzLmFyaWFTZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogRW1pdHMgb3B0aW9uIHNlbGVjdGVkIGNoYW5nZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiB2YWx1ZS5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy4jdmFsdWUoKSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuI3ZhbHVlLnNldCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLiN2YWx1ZSgpO1xuICB9XG5cbiAgI3ZhbHVlOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsKHVuZGVmaW5lZCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudERpdicpIHByaXZhdGUgY29udGVudERpdj86IEVsZW1lbnRSZWY7XG4gIHB1YmxpYyBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAjZHJvcGRvd25WaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlKHZhbHVlOiAoYm9vbGVhbiB8IHVuZGVmaW5lZCkpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpICYmIHRoaXMudmlzaWJsZSAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICBpZiAodGhpcy4jYWN0aXZlKCkgIT09IGFjdGl2ZSkge1xuICAgICAgdGhpcy4jYWN0aXZlLnNldChhY3RpdmUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGdldCBhY3RpdmUoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuI2FjdGl2ZSgpICYmIHRoaXMudmlzaWJsZTtcbiAgLy8gfVxuXG4gICNhY3RpdmUgPSBzaWduYWwoZmFsc2UpO1xuXG4gICNhY3RpdmVFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLiNhY3RpdmUoKSAmJiB0aGlzLnZpc2libGUgPyAwIDogLTE7XG4gIH0pO1xuXG4gICNmb2N1c2VkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGZvY3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdE9wdGlvbkNvbXBvbmVudD4oKTtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ3JvbGUnKVxuICBwcml2YXRlIGdldCByb2xlKCkge1xuICAgIHJldHVybiAnb3B0aW9uJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdmb3JtLW11bHRpLXNlbGVjdC1vcHRpb24nOiB0cnVlLFxuICAgICAgJ2Zvcm0tbXVsdGktc2VsZWN0ZWQnOiB0aGlzLiNzZWxlY3RlZCgpLFxuICAgICAgW2Bmb3JtLW11bHRpLXNlbGVjdC1vcHRpb24td2l0aC0ke3RoaXMub3B0aW9uc1N0eWxlfWBdOiAhIXRoaXMub3B0aW9uc1N0eWxlLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAnZC1ub25lJzogIXRoaXMudmlzaWJsZSxcbiAgICAgIGFjdGl2ZTogdGhpcy4jYWN0aXZlKCksXG4gICAgICBmb2N1c2VkOiB0aGlzLiNmb2N1c2VkXG4gICAgfTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIHByaXZhdGUgZ2V0IHRhYkluZGV4KCkge1xuICAgIC8vIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLl9hY3RpdmUgPyAtMSA6IDA7XG4gICAgcmV0dXJuICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnZpc2libGUpID8gLTEgOiB0aGlzLiN0YWJJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IHRhYkluZGV4KHRhYmluZGV4KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiN0YWJJbmRleCA9IHRhYmluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgI3RhYkluZGV4OiBudW1iZXIgPSAtMTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIHByaXZhdGUgZ2V0IGFyaWFEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICBwcml2YXRlIGdldCBhcmlhU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FyaWFTZWxlY3RlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGFyaWFTZWxlY3RlZChzZWxlY3RlZCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYXJpYVNlbGVjdGVkID0gc2VsZWN0ZWQgfHwgdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgI2FyaWFTZWxlY3RlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChbJ1NwYWNlJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKFsnVGFiJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgcHJpdmF0ZSBvbkJsdXIoKSB7XG4gICAgdGhpcy4jZm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBwcml2YXRlIG9uRm9jdXMoKSB7XG4gICAgdGhpcy4jZm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZHJvcGRvd25WaXNpYmxlKCkpIHtcbiAgICAgIGlmIChbJ0VudGVyJywgJ1NwYWNlJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmRpc2FibGVkID8gdGhpcy4jc2VsZWN0ZWQoKSA6ICF0aGlzLiNzZWxlY3RlZCgpO1xuICAgICAgICB0aGlzLmZvY3VzKCdrZXlib2FyZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvbkNsaWNrKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCA/IHRoaXMuI3NlbGVjdGVkKCkgOiAhdGhpcy4jc2VsZWN0ZWQoKTtcbiAgICB0aGlzLmZvY3VzKCdtb3VzZScpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5zZXRTdWJzY3JpcHRpb25zKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGFzQ29udGVudCA9ICEhdGhpcy5jb250ZW50RGl2Py5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgaWYgKCF0aGlzLmhhc0NvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5uZXJUZXh0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICB0aGlzLnRleHQgPSBpbm5lclRleHQgfHwgdGhpcy52YWx1ZT8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxhYmVsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLnRleHQ/LnRyaW0oKSB8fCAnLi4uJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5sYWJlbD8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIGlmICghKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgLy8gfSk7XG4gICAgfVxuXG4gIH1cblxuICAvKiogR2V0IHRoZSBsYWJlbCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBGb2N1c2FibGVPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiA8c3RyaW5nPih0aGlzLmxhYmVsID8/IHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNkcm9wZG93blZpc2libGUoKSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiwgeyBwcmV2ZW50U2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLmZvY3VzQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKSB7XG5cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdFZpc2libGUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuI2Ryb3Bkb3duVmlzaWJsZS5zZXQpO1xuXG4gICAgdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2UubXVsdGlTZWxlY3RGb2N1cyRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG9wdGlvbikgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMudmFsdWUgPT09IG9wdGlvbi52YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKCEodGhpcy5jaGFuZ2VEZXRlY3RvclJlZiBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmNoYW5nZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKGNoYW5nZSA9PiBjaGFuZ2UuYWRkZWQuaW5jbHVkZXModGhpcy52YWx1ZSkgfHwgY2hhbmdlLnJlbW92ZWQuaW5jbHVkZXModGhpcy52YWx1ZSkpLFxuICAgICAgICAgIHRhcChjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGNoYW5nZS5hZGRlZC5pbmNsdWRlcyh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQodmFsdWUgPSB0aGlzLnZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLiNzZWxlY3RlZCgpIHx8IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5pc1NlbGVjdGVkKHZhbHVlKSkgPz8gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgI2NvbnRlbnREaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIiFoYXNDb250ZW50XCI+XG4gIHt7dGV4dCA/PyBsYWJlbCA/PyB2YWx1ZX19XG48L2Rpdj5cbiJdfQ==
|
|
@@ -21,11 +21,11 @@ export class MultiSelectTagComponent {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: MultiSelectTagComponent, deps: [{ token: i1.MultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: MultiSelectTagComponent, isStandalone: true, selector: "c-multi-select-tag", inputs: { option: "option", disabled: "disabled", label: "label", value: "value" }, outputs: { remove: "remove" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: MultiSelectTagComponent, isStandalone: true, selector: "c-multi-select-tag", inputs: { option: "option", disabled: "disabled", label: "label", value: "value" }, outputs: { remove: "remove" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "{{label ?? value ?? '???'}}\n<button (click)=\"handleRemove($event)\" *ngIf=\"!disabled\"\n [disabled]=\"((multiselectVisible$ | async) ?? true) === false\" aria-label=\"Clear\"\n class=\"form-multi-select-tag-delete close\" type=\"button\">\n <span aria-hidden=\"true\">\u00D7</span>\n</button>\n", styles: [":host .btn-xs{padding-left:.125rem;padding-right:.125rem;font-size:.575rem;border-radius:.2rem}:host.form-multi-select-tag{-webkit-user-select:none;user-select:none;pointer-events:all}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
25
25
|
}
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: MultiSelectTagComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'c-multi-select-tag', standalone: true, imports: [NgIf, AsyncPipe], template: "
|
|
28
|
+
args: [{ selector: 'c-multi-select-tag', standalone: true, imports: [NgIf, AsyncPipe], template: "{{label ?? value ?? '???'}}\n<button (click)=\"handleRemove($event)\" *ngIf=\"!disabled\"\n [disabled]=\"((multiselectVisible$ | async) ?? true) === false\" aria-label=\"Clear\"\n class=\"form-multi-select-tag-delete close\" type=\"button\">\n <span aria-hidden=\"true\">\u00D7</span>\n</button>\n", styles: [":host .btn-xs{padding-left:.125rem;padding-right:.125rem;font-size:.575rem;border-radius:.2rem}:host.form-multi-select-tag{-webkit-user-select:none;user-select:none;pointer-events:all}\n"] }]
|
|
29
29
|
}], ctorParameters: function () { return [{ type: i1.MultiSelectService }]; }, propDecorators: { option: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}], disabled: [{
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
40
40
|
type: HostBinding,
|
|
41
41
|
args: ['class']
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QtdGFnL211bHRpLXNlbGVjdC10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LXRhZy9tdWx0aS1zZWxlY3QtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVlsRCxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLFlBQ1Usa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFHekMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBSWhFLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFJeEIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFWM0MsQ0FBQztJQVlMLElBQ0ksV0FBVztRQUNiLE9BQU87WUFDTCx1QkFBdUIsRUFBRSxJQUFJO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWtCO1FBQzdCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOzhHQTVCVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix3UENicEMsMFRBTUEsb1BES1ksSUFBSSx3RkFBRSxTQUFTOzsyRkFFZCx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7eUdBVWpCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUdILFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNdWx0aVNlbGVjdFNlcnZpY2UgfSBmcm9tICcuLi9tdWx0aS1zZWxlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBJT3B0aW9uIH0gZnJvbSAnLi4vbXVsdGktc2VsZWN0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLW11bHRpLXNlbGVjdC10YWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LXRhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC10YWcuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIEFzeW5jUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RUYWdDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbXVsdGlTZWxlY3RTZXJ2aWNlOiBNdWx0aVNlbGVjdFNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbXVsdGlzZWxlY3RWaXNpYmxlJCA9IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLm11bHRpU2VsZWN0VmlzaWJsZSQ7XG5cbiAgQElucHV0KCkgb3B0aW9uPzogSU9wdGlvbjtcblxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZT86IGFueTtcblxuICBAT3V0cHV0KCkgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxJT3B0aW9uPigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdmb3JtLW11bHRpLXNlbGVjdC10YWcnOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIGhhbmRsZVJlbW92ZSgkZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMucmVtb3ZlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbn1cbiIsInt7bGFiZWwgPz8gdmFsdWUgPz8gJz8/Pyd9fVxuPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUmVtb3ZlKCRldmVudClcIiAqbmdJZj1cIiFkaXNhYmxlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIoKG11bHRpc2VsZWN0VmlzaWJsZSQgfCBhc3luYykgPz8gdHJ1ZSkgPT09IGZhbHNlXCIgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLW11bHRpLXNlbGVjdC10YWctZGVsZXRlIGNsb3NlXCIgdHlwZT1cImJ1dHRvblwiPlxuICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7Dlzwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
|
|
@@ -60,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
60
60
|
type: ContentChild,
|
|
61
61
|
args: [PageLinkDirective, { read: ElementRef }]
|
|
62
62
|
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdlLWl0ZW0vcGFnZS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFNckUsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUNJLFdBQVc7UUFDYixPQUFPO1lBQ0wsV0FBVyxFQUFFLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDO0lBQ0osQ0FBQztJQUlELFlBQ1UsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUN6QixDQUFDO0lBRUwsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixPQUFNO1NBQ1A7UUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1FBRTlELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDOzhHQXhEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwyUUEyQmQsaUJBQWlCLDJCQUFVLFVBQVU7OzJGQTNCeEMsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0dBT1UsTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLG1CQUFtQjtnQkFNNUIsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBU21DLGtCQUFrQjtzQkFBeEUsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUGFnZUxpbmtEaXJlY3RpdmUgfSBmcm9tICcuLi9wYWdlLWxpbmsvcGFnZS1saW5rLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjUGFnZUl0ZW1dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQYWdlSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgYWN0aXZlIHN0YXRlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmU/OiBib29sZWFuO1xuICAvKipcbiAgICogVG9nZ2xlIHRoZSBkaXNhYmxlZCBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWN1cnJlbnQnKVxuICBnZXQgYXJpYUN1cnJlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlID8gJ3BhZ2UnIDogbnVsbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3BhZ2UtaXRlbSc6IHRydWUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgIGFjdGl2ZTogdGhpcy5hY3RpdmUsXG4gICAgfTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoUGFnZUxpbmtEaXJlY3RpdmUsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwYWdlTGlua0VsZW1lbnRSZWYhOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVzKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGFnZUxpbmtFbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgcGFnZUxpbmtFbGVtZW50ID0gdGhpcy5wYWdlTGlua0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShwYWdlTGlua0VsZW1lbnQsICdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHBhZ2VMaW5rRWxlbWVudCwgJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHBhZ2VMaW5rRWxlbWVudCwgJ2FyaWEtZGlzYWJsZWQnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHBhZ2VMaW5rRWxlbWVudCwgJ3RhYmluZGV4Jyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|