@wlcm/angular 17.7.43 → 17.7.45
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/button/esm2022/lib/button.module.mjs +4 -4
- package/button/esm2022/lib/components/button/button.component.mjs +3 -3
- package/button/fesm2022/wlcm-angular-button.mjs +7 -7
- package/core/esm2022/lib/components/default-loader/default-loader.component.mjs +3 -3
- package/core/esm2022/lib/components/icons/calendar-icon/calendar-icon.component.mjs +3 -3
- package/core/esm2022/lib/components/icons/chevron-down-icon/chevron-down-icon.component.mjs +3 -3
- package/core/esm2022/lib/components/icons/close-icon/close-icon.component.mjs +3 -3
- package/core/esm2022/lib/components/icons/search-icon/search-icon.component.mjs +3 -3
- package/core/esm2022/lib/components/loader/loader.component.mjs +3 -3
- package/core/esm2022/lib/directives/icon.directive.mjs +3 -3
- package/core/esm2022/lib/services/scroll-detection.api.mjs +28 -21
- package/core/fesm2022/wlcm-angular-core.mjs +47 -40
- package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
- package/core/lib/services/scroll-detection.api.d.ts +4 -1
- package/datepicker/esm2022/lib/components/calendar-header/calendar-header.component.mjs +3 -3
- package/datepicker/esm2022/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.mjs +3 -3
- package/datepicker/esm2022/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.mjs +3 -3
- package/datepicker/esm2022/lib/components/range/date-range-picker-input/date-range-picker-input.component.mjs +3 -3
- package/datepicker/esm2022/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.mjs +3 -3
- package/datepicker/esm2022/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.mjs +3 -3
- package/datepicker/esm2022/lib/components/single/datepicker-input-container/datepicker-input-container.component.mjs +3 -3
- package/datepicker/esm2022/lib/components/single/datepicker-panel/datepicker-panel.component.mjs +3 -3
- package/datepicker/esm2022/lib/datepicker.module.mjs +4 -4
- package/datepicker/esm2022/lib/directives/calendar.directive.mjs +3 -3
- package/datepicker/esm2022/lib/directives/datepicker-input.base.mjs +3 -3
- package/datepicker/esm2022/lib/directives/datepicker-trigger.base.mjs +3 -3
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-end.directive.mjs +3 -3
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-start.directive.mjs +3 -3
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input.base.mjs +3 -3
- package/datepicker/esm2022/lib/directives/ragne/left-calendar.directive.mjs +3 -3
- package/datepicker/esm2022/lib/directives/ragne/right-calendar.directive.mjs +3 -3
- package/datepicker/esm2022/lib/directives/single/datepicker-input.directive.mjs +3 -3
- package/datepicker/esm2022/lib/models/date-picker.models.mjs +3 -3
- package/datepicker/esm2022/lib/models/range/data-range-calendar.models.mjs +3 -3
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs +61 -61
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs.map +1 -1
- package/filters/esm2022/lib/components/filters-group/filters-group.component.mjs +3 -3
- package/filters/esm2022/lib/directives/filter.directive.mjs +3 -3
- package/filters/esm2022/lib/filters.module.mjs +4 -4
- package/filters/esm2022/lib/models/filters-group.models.mjs +3 -3
- package/filters/fesm2022/wlcm-angular-filters.mjs +13 -13
- package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +3 -3
- package/forms/esm2022/lib/forms/components/checkbox/checkbox.component.mjs +5 -5
- package/forms/esm2022/lib/forms/components/checkbox-group/checkbox-group.component.mjs +3 -3
- package/forms/esm2022/lib/forms/components/error/error.component.mjs +3 -3
- package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +3 -3
- package/forms/esm2022/lib/forms/components/label/label.component.mjs +3 -3
- package/forms/esm2022/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.mjs +3 -3
- package/forms/esm2022/lib/forms/components/select/select.component.mjs +14 -5
- package/forms/esm2022/lib/forms/directives/autocomplete.directive.mjs +3 -3
- package/forms/esm2022/lib/forms/directives/form-field-custom-container.directive.mjs +3 -3
- package/forms/esm2022/lib/forms/directives/form-field-hint.directive.mjs +3 -3
- package/forms/esm2022/lib/forms/directives/form-field-prefix.directive.mjs +3 -3
- package/forms/esm2022/lib/forms/directives/form-field-suffix.directive.mjs +3 -3
- package/forms/esm2022/lib/forms/directives/input.directive.mjs +3 -3
- package/forms/esm2022/lib/forms/directives/select-input-binder.directive.mjs +3 -3
- package/forms/esm2022/lib/forms/forms.module.mjs +4 -4
- package/forms/esm2022/lib/forms/models/autocomplete.models.mjs +3 -3
- package/forms/esm2022/lib/forms/models/select.models.mjs +1 -1
- package/forms/esm2022/lib/forms/pipes/errors-mapper.pipe.mjs +3 -3
- package/forms/esm2022/lib/forms/services/form-state-handler.service.mjs +3 -3
- package/forms/esm2022/lib/forms/services/places.api.mjs +6 -6
- package/forms/fesm2022/wlcm-angular-forms.mjs +75 -66
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
- package/forms/lib/forms/components/select/select.component.d.ts +1 -0
- package/forms/lib/forms/models/select.models.d.ts +1 -1
- package/forms/lib/forms/services/places.api.d.ts +1 -0
- package/package.json +1 -1
- package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs +3 -3
- package/phone-input/esm2022/lib/components/phone-input-container/phone-input-container.component.mjs +3 -3
- package/phone-input/esm2022/lib/directives/phone-input.directive.mjs +3 -3
- package/phone-input/esm2022/lib/phone-input.module.mjs +4 -4
- package/phone-input/esm2022/lib/pipes/phone-code.pipe.mjs +3 -3
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +16 -16
- package/search-field/esm2022/lib/components/search-field/search-field.component.mjs +3 -3
- package/search-field/esm2022/lib/search-field.module.mjs +4 -4
- package/search-field/fesm2022/wlcm-angular-search-field.mjs +7 -7
- package/stepper/esm2022/lib/components/step/step.component.mjs +3 -3
- package/stepper/esm2022/lib/components/step-header/step-header.component.mjs +3 -3
- package/stepper/esm2022/lib/components/stepper/stepper.component.mjs +3 -3
- package/stepper/esm2022/lib/components/stepper-header/stepper-header.component.mjs +3 -3
- package/stepper/esm2022/lib/directives/load-on-active-step.directive.mjs +3 -3
- package/stepper/esm2022/lib/models/step.models.mjs +3 -3
- package/stepper/esm2022/lib/models/stepper.models.mjs +3 -3
- package/stepper/esm2022/lib/stepper.module.mjs +4 -4
- package/stepper/fesm2022/wlcm-angular-stepper.mjs +25 -25
- package/table/esm2022/lib/components/table/table.component.mjs +3 -3
- package/table/esm2022/lib/components/table-head/table-head.component.mjs +3 -3
- package/table/esm2022/lib/components/table-head-actions/table-head-actions.component.mjs +3 -3
- package/table/esm2022/lib/components/table-head-data/table-head-data.component.mjs +3 -3
- package/table/esm2022/lib/components/table-row/table-row.component.mjs +3 -3
- package/table/esm2022/lib/components/table-row-actions/table-row-actions.component.mjs +3 -3
- package/table/esm2022/lib/components/table-row-data/table-row-data.component.mjs +3 -3
- package/table/esm2022/lib/components/table-row-spacer/table-row-spacer.component.mjs +3 -3
- package/table/esm2022/lib/directives/scrollable-table-container.directive.mjs +3 -3
- package/table/esm2022/lib/pipes/table-row-injector.pipe.mjs +3 -3
- package/table/esm2022/lib/table.module.mjs +4 -4
- package/table/fesm2022/wlcm-angular-table.mjs +34 -34
|
@@ -3,10 +3,10 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import { WlcmFiltersGroup } from '../../models/filters-group.models';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class FiltersGroupComponent extends WlcmFiltersGroup {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FiltersGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: FiltersGroupComponent, isStandalone: true, selector: "wlcm-filters-group", host: { classAttribute: "wlcm-filters-group" }, providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"[wlcmFilter]\"></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
8
8
|
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FiltersGroupComponent, decorators: [{
|
|
10
10
|
type: Component,
|
|
11
11
|
args: [{ selector: 'wlcm-filters-group', standalone: true, imports: [CommonModule], host: { class: 'wlcm-filters-group' }, providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }], template: "<ng-content select=\"[wlcmFilter]\"></ng-content>\n", styles: [":host{display:block}\n"] }]
|
|
12
12
|
}] });
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Directive } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class FilterDirective {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: FilterDirective, isStandalone: true, selector: "[wlcmFilter]", ngImport: i0 }); }
|
|
6
6
|
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterDirective, decorators: [{
|
|
8
8
|
type: Directive,
|
|
9
9
|
args: [{ selector: '[wlcmFilter]', standalone: true }]
|
|
10
10
|
}] });
|
|
@@ -6,11 +6,11 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
const publicComponents = [FiltersGroupComponent];
|
|
7
7
|
const publicDirectives = [FilterDirective];
|
|
8
8
|
export class WlcmFiltersModule {
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
11
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule, FiltersGroupComponent, FilterDirective], exports: [FiltersGroupComponent, FilterDirective] }); }
|
|
11
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule, publicComponents] }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, decorators: [{
|
|
14
14
|
type: NgModule,
|
|
15
15
|
args: [{
|
|
16
16
|
imports: [CommonModule, ...publicComponents, ...publicDirectives],
|
|
@@ -44,14 +44,14 @@ let WlcmFiltersGroup = class WlcmFiltersGroup {
|
|
|
44
44
|
return list;
|
|
45
45
|
}));
|
|
46
46
|
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
48
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
48
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFiltersGroup, queries: [{ propertyName: "filters", predicate: WLCM_FILTER, descendants: true }], ngImport: i0 }); }
|
|
49
49
|
};
|
|
50
50
|
WlcmFiltersGroup = __decorate([
|
|
51
51
|
UntilDestroy()
|
|
52
52
|
], WlcmFiltersGroup);
|
|
53
53
|
export { WlcmFiltersGroup };
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersGroup, decorators: [{
|
|
55
55
|
type: Directive
|
|
56
56
|
}], propDecorators: { filters: [{
|
|
57
57
|
type: ContentChildren,
|
|
@@ -157,13 +157,13 @@ let WlcmFiltersGroup = class WlcmFiltersGroup {
|
|
|
157
157
|
return list;
|
|
158
158
|
}));
|
|
159
159
|
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
161
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFiltersGroup, queries: [{ propertyName: "filters", predicate: WLCM_FILTER, descendants: true }], ngImport: i0 }); }
|
|
162
162
|
};
|
|
163
163
|
WlcmFiltersGroup = __decorate([
|
|
164
164
|
UntilDestroy()
|
|
165
165
|
], WlcmFiltersGroup);
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersGroup, decorators: [{
|
|
167
167
|
type: Directive
|
|
168
168
|
}], propDecorators: { filters: [{
|
|
169
169
|
type: ContentChildren,
|
|
@@ -171,19 +171,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
171
171
|
}] } });
|
|
172
172
|
|
|
173
173
|
class FilterDirective {
|
|
174
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
175
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
174
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
175
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: FilterDirective, isStandalone: true, selector: "[wlcmFilter]", ngImport: i0 }); }
|
|
176
176
|
}
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterDirective, decorators: [{
|
|
178
178
|
type: Directive,
|
|
179
179
|
args: [{ selector: '[wlcmFilter]', standalone: true }]
|
|
180
180
|
}] });
|
|
181
181
|
|
|
182
182
|
class FiltersGroupComponent extends WlcmFiltersGroup {
|
|
183
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
184
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
183
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FiltersGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
184
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: FiltersGroupComponent, isStandalone: true, selector: "wlcm-filters-group", host: { classAttribute: "wlcm-filters-group" }, providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"[wlcmFilter]\"></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
185
185
|
}
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FiltersGroupComponent, decorators: [{
|
|
187
187
|
type: Component,
|
|
188
188
|
args: [{ selector: 'wlcm-filters-group', standalone: true, imports: [CommonModule], host: { class: 'wlcm-filters-group' }, providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }], template: "<ng-content select=\"[wlcmFilter]\"></ng-content>\n", styles: [":host{display:block}\n"] }]
|
|
189
189
|
}] });
|
|
@@ -191,11 +191,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
191
191
|
const publicComponents = [FiltersGroupComponent];
|
|
192
192
|
const publicDirectives = [FilterDirective];
|
|
193
193
|
class WlcmFiltersModule {
|
|
194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
195
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
196
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
194
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
195
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule, FiltersGroupComponent, FilterDirective], exports: [FiltersGroupComponent, FilterDirective] }); }
|
|
196
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule, publicComponents] }); }
|
|
197
197
|
}
|
|
198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, decorators: [{
|
|
199
199
|
type: NgModule,
|
|
200
200
|
args: [{
|
|
201
201
|
imports: [CommonModule, ...publicComponents, ...publicDirectives],
|
|
@@ -173,8 +173,8 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
|
173
173
|
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
|
174
174
|
.subscribe((value) => this._changed?.(value));
|
|
175
175
|
}
|
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: i0.Injector }, { token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: (params) => cloneDeep(params) }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
|
178
178
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },
|
|
179
179
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
|
180
180
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
|
@@ -192,7 +192,7 @@ WlcmAutocompleteComponent = __decorate([
|
|
|
192
192
|
__metadata("design:paramtypes", [Injector, Object])
|
|
193
193
|
], WlcmAutocompleteComponent);
|
|
194
194
|
export { WlcmAutocompleteComponent };
|
|
195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteComponent, decorators: [{
|
|
196
196
|
type: Component,
|
|
197
197
|
args: [{ selector: 'wlcm-autocomplete', exportAs: 'wlcmAutocomplete', host: { class: 'wlcm-autocomplete' }, standalone: true, imports: [CommonModule, MatAutocompleteModule, AutocompleteDirective, ReactiveFormsModule, WlcmInputDirective, RxLet], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
198
198
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },
|
|
@@ -55,19 +55,19 @@ let WlcmCheckboxComponent = class WlcmCheckboxComponent {
|
|
|
55
55
|
this.changeDetectorRef.markForCheck();
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
59
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: WLCM_FORM_CONTROL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.5", type: WlcmCheckboxComponent, isStandalone: true, selector: "wlcm-checkbox", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "wlcm-checkbox" }, providers: [
|
|
60
60
|
WLCM_FORM_CONTROL_PROVIDER,
|
|
61
61
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmCheckboxComponent), multi: true },
|
|
62
62
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmCheckboxComponent), multi: true },
|
|
63
|
-
], ngImport: i0, template: "<mat-checkbox [formControl]=\"control\" (change)=\"handleChange($event)\">\n <ng-content></ng-content>\n</mat-checkbox>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "
|
|
63
|
+
], ngImport: i0, template: "<mat-checkbox [formControl]=\"control\" (change)=\"handleChange($event)\">\n <ng-content></ng-content>\n</mat-checkbox>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
64
64
|
};
|
|
65
65
|
WlcmCheckboxComponent = __decorate([
|
|
66
66
|
UntilDestroy(),
|
|
67
67
|
__metadata("design:paramtypes", [ChangeDetectorRef, Object])
|
|
68
68
|
], WlcmCheckboxComponent);
|
|
69
69
|
export { WlcmCheckboxComponent };
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCheckboxComponent, decorators: [{
|
|
71
71
|
type: Component,
|
|
72
72
|
args: [{ selector: 'wlcm-checkbox', host: { class: 'wlcm-checkbox' }, standalone: true, imports: [CommonModule, MatCheckboxModule, ReactiveFormsModule], providers: [
|
|
73
73
|
WLCM_FORM_CONTROL_PROVIDER,
|
|
@@ -82,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
82
82
|
}] }], propDecorators: { changed: [{
|
|
83
83
|
type: Output
|
|
84
84
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBRU4sUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUVMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUdwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFnQnhDLElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBYWhDLFlBQ1UsaUJBQW9DLEVBQ0csZ0JBQWlDO1FBRHhFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDRyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBZGxGLFVBQUssR0FBb0MsS0FBSyxFQUFFLENBQUM7UUFFdkMsWUFBTyxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBUXBELFlBQU8sR0FBZ0Is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QUksRUFBRTt3QkFDN0YsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNsRzs7MEJBaUJFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCO3lDQVo3QixPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0U2lnbmFsLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBmb3J3YXJkUmVmLFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXTENNX0ZPUk1fQ09OVFJPTCwgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlLCBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IFdsY21Gb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tY2hlY2tib3gnLFxuICBob3N0OiB7IGNsYXNzOiAnd2xjbS1jaGVja2JveCcgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0Q2hlY2tib3hNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50LnNjc3MnLFxuICBwcm92aWRlcnM6IFtcbiAgICBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUixcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21DaGVja2JveENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbUNoZWNrYm94Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbUNoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHZhbHVlOiBJbnB1dFNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gaW5wdXQoKTtcblxuICBAT3V0cHV0KCkgY2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgX2NoYW5nZWQ/OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFdMQ01fRk9STV9DT05UUk9MKSBwcml2YXRlIHBhcmVudEZvcm1NZW1iZXI6IFdsY21Gb3JtQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybU1lbWJlcikge1xuICAgICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoYW5nZSh2YWx1ZTogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh2YWx1ZS5jaGVja2VkKTtcblxuICAgIHRoaXMuX2NoYW5nZWQ/Lih2YWx1ZS5jaGVja2VkKTtcblxuICAgIHRoaXMuX3RvdWNoZWQ/LigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICB2YWxpZGF0ZSA9ICgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiBudWxsO1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoY2FsbGJhY2s6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdG91Y2hlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLnZhbHVlO1xuICB9XG5cbiAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbWF0LWNoZWNrYm94PlxuIl19
|
|
@@ -66,8 +66,8 @@ let WlcmCheckboxGroupComponent = class WlcmCheckboxGroupComponent {
|
|
|
66
66
|
.pipe(takeUntil(this.checkboxesListUpdated))
|
|
67
67
|
.subscribe();
|
|
68
68
|
}
|
|
69
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
70
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCheckboxGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.5", type: WlcmCheckboxGroupComponent, isStandalone: true, selector: "wlcm-checkbox-group", host: { classAttribute: "wlcm-checkbox-group" }, providers: [
|
|
71
71
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmCheckboxGroupComponent), multi: true },
|
|
72
72
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmCheckboxGroupComponent), multi: true },
|
|
73
73
|
], queries: [{ propertyName: "checkboxes", predicate: WlcmCheckboxComponent, isSignal: true }], ngImport: i0, template: "<ng-content select=\"wlcm-checkbox\"></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
@@ -77,7 +77,7 @@ WlcmCheckboxGroupComponent = __decorate([
|
|
|
77
77
|
__metadata("design:paramtypes", [])
|
|
78
78
|
], WlcmCheckboxGroupComponent);
|
|
79
79
|
export { WlcmCheckboxGroupComponent };
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCheckboxGroupComponent, decorators: [{
|
|
81
81
|
type: Component,
|
|
82
82
|
args: [{ selector: 'wlcm-checkbox-group', host: { class: 'wlcm-checkbox-group' }, standalone: true, imports: [CommonModule], providers: [
|
|
83
83
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmCheckboxGroupComponent), multi: true },
|
|
@@ -2,10 +2,10 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class WlcmErrorComponent {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmErrorComponent, isStandalone: true, selector: "wlcm-error", host: { classAttribute: "wlcm-error" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7
7
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmErrorComponent, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
10
|
args: [{ selector: 'wlcm-error', standalone: true, imports: [CommonModule], host: { class: 'wlcm-error' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
|
|
11
11
|
}] });
|
|
@@ -73,8 +73,8 @@ let WlcmFormFieldComponent = class WlcmFormFieldComponent {
|
|
|
73
73
|
}
|
|
74
74
|
return events;
|
|
75
75
|
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldComponent, deps: [{ token: WLCM_FORM_CONTROL, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFormFieldComponent, isStandalone: true, selector: "wlcm-form-field", inputs: { displayErrorMessages: "displayErrorMessages" }, host: { properties: { "class.wlcm-field-focused": "this.isFocused", "class.wlcm-field-required": "this.isRequired", "class.wlcm-field-invalid": "this.isInvalid", "class.wlcm-field-touched": "this.isTouched", "class.wlcm-field-disabled": "this.isDisabled" }, classAttribute: "wlcm-form-field" }, providers: [
|
|
78
78
|
WLCM_FORM_CONTROL_PROVIDER,
|
|
79
79
|
{ provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },
|
|
80
80
|
], queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }, { propertyName: "controlContainer", first: true, predicate: ControlContainer, descendants: true }, { propertyName: "_inputRef", first: true, predicate: WLCM_INPUT, descendants: true }, { propertyName: "prefix", first: true, predicate: WlcmFormFieldPrefixDirective, descendants: true }, { propertyName: "suffix", first: true, predicate: WlcmFormFieldSuffixDirective, descendants: true }, { propertyName: "customContainer", first: true, predicate: WlcmFormFieldCustomContainerDirective, descendants: true }], viewQueries: [{ propertyName: "defaultContainer", first: true, predicate: ["defaultContainer"], descendants: true }], ngImport: i0, template: "<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <div class=\"wlcm-field-prefix\" [class.contains-children]=\"prefix\">\n <ng-content select=\"[wlcmFormFieldPrefix]\"></ng-content>\n </div>\n\n <ng-content select=\"[wlcmInput]\"></ng-content>\n\n <div class=\"wlcm-field-suffix\" [class.contains-children]=\"suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control && displayErrorMessages\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WlcmErrorComponent, selector: "wlcm-error" }, { kind: "pipe", type: ErrorsMapperPipe, name: "errorsMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -84,7 +84,7 @@ WlcmFormFieldComponent = __decorate([
|
|
|
84
84
|
__metadata("design:paramtypes", [Object, ChangeDetectorRef])
|
|
85
85
|
], WlcmFormFieldComponent);
|
|
86
86
|
export { WlcmFormFieldComponent };
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldComponent, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
89
|
args: [{ selector: 'wlcm-form-field', standalone: true, imports: [CommonModule, WlcmErrorComponent, ErrorsMapperPipe], host: { class: 'wlcm-form-field' }, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
90
90
|
WLCM_FORM_CONTROL_PROVIDER,
|
|
@@ -8,10 +8,10 @@ export class WlcmLabelComponent {
|
|
|
8
8
|
get isRequired() {
|
|
9
9
|
return this.required;
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmLabelComponent, isStandalone: true, selector: "wlcm-label", inputs: { required: "required" }, host: { properties: { "class.required": "this.isRequired" }, classAttribute: "wlcm-label" }, ngImport: i0, template: "<span class=\"wlcm-label-asterisk\">*</span>\n\n<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmLabelComponent, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
16
|
args: [{ selector: 'wlcm-label', standalone: true, imports: [CommonModule], host: { class: 'wlcm-label' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"wlcm-label-asterisk\">*</span>\n\n<ng-content></ng-content>\n" }]
|
|
17
17
|
}], propDecorators: { required: [{
|
|
@@ -9,10 +9,10 @@ export class WlcmAutocompleteSuffixComponent {
|
|
|
9
9
|
this.autocomplete = input.required();
|
|
10
10
|
this.WlcmIconName = WlcmIconName;
|
|
11
11
|
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteSuffixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmAutocompleteSuffixComponent, isStandalone: true, selector: "wlcm-autocomplete-suffix", inputs: { autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "wlcm-autocomplete-suffix" }, ngImport: i0, template: "<ng-container *rxLet=\"autocomplete().loading$ | async; let loading\">\n @if (!loading) {\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n }\n\n <wlcm-loader [hidden]=\"!loading\"></wlcm-loader>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: WlcmIconDirective, selector: "[wlcmIcon]", inputs: ["wlcmIcon", "wlcmIconStopPropagation"], outputs: ["wlcmIconClicked"] }, { kind: "component", type: WlcmLoaderComponent, selector: "wlcm-loader", inputs: ["hidden"] }, { kind: "directive", type: RxLet, selector: "[rxLet]", inputs: ["rxLet", "rxLetStrategy", "rxLetComplete", "rxLetError", "rxLetSuspense", "rxLetContextTrigger", "rxLetCompleteTrigger", "rxLetErrorTrigger", "rxLetSuspenseTrigger", "rxLetNextTrigger", "rxLetRenderCallback", "rxLetParent", "rxLetPatchZone"], outputs: ["rendered"] }] }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteSuffixComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
17
|
args: [{ selector: 'wlcm-autocomplete-suffix', host: { class: 'wlcm-autocomplete-suffix' }, standalone: true, imports: [CommonModule, WlcmIconDirective, WlcmLoaderComponent, RxLet], template: "<ng-container *rxLet=\"autocomplete().loading$ | async; let loading\">\n @if (!loading) {\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n }\n\n <wlcm-loader [hidden]=\"!loading\"></wlcm-loader>\n</ng-container>\n" }]
|
|
18
18
|
}] });
|
|
@@ -76,7 +76,13 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
|
76
76
|
this.viewReady$ = new Subject();
|
|
77
77
|
this.selected$ = new Subject();
|
|
78
78
|
this.compareWith = (optionA, optionB) => {
|
|
79
|
-
|
|
79
|
+
if (this.areOptionsEqual(optionA, optionB)) {
|
|
80
|
+
if (this.selectOptionFormat() === 'CompleteOption' && typeof optionB !== 'object') {
|
|
81
|
+
this._changed?.(optionA);
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
80
86
|
};
|
|
81
87
|
this.focus = () => this.matSelect.open();
|
|
82
88
|
this.isFocused = () => this.isOpen;
|
|
@@ -112,6 +118,9 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
|
112
118
|
this.selectionChange.emit(event);
|
|
113
119
|
});
|
|
114
120
|
}
|
|
121
|
+
areOptionsEqual(optionA, optionB) {
|
|
122
|
+
return (optionA?.value || optionA) === (optionB?.value || optionB);
|
|
123
|
+
}
|
|
115
124
|
revertPreviousValue() {
|
|
116
125
|
this.matSelect.value = this._previousValue;
|
|
117
126
|
}
|
|
@@ -259,8 +268,8 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
|
259
268
|
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
|
260
269
|
.subscribe((value) => this._changed?.(value));
|
|
261
270
|
}
|
|
262
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
263
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
271
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, deps: [{ token: i0.NgZone }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.ScrollDetectionApi }, { token: WLCM_FORM_FIELD }, { token: WLCM_FORM_CONTROL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
272
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmSelectComponent, isStandalone: true, selector: "wlcm-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, canSelect: { classPropertyName: "canSelect", publicName: "canSelect", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: (params) => cloneDeep(params) }, paginated: { classPropertyName: "paginated", publicName: "paginated", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, triggerTemplate: { classPropertyName: "triggerTemplate", publicName: "triggerTemplate", isSignal: true, isRequired: false, transformFunction: null }, isOptionDisabled: { classPropertyName: "isOptionDisabled", publicName: "isOptionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", opened: "opened", closed: "closed" }, host: { listeners: { "click": "openPanel()" } }, providers: [
|
|
264
273
|
WLCM_FORM_CONTROL_PROVIDER,
|
|
265
274
|
{
|
|
266
275
|
provide: MAT_SELECT_CONFIG,
|
|
@@ -281,7 +290,7 @@ WlcmSelectComponent = __decorate([
|
|
|
281
290
|
ScrollDetectionApi, Object, Object])
|
|
282
291
|
], WlcmSelectComponent);
|
|
283
292
|
export { WlcmSelectComponent };
|
|
284
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, decorators: [{
|
|
285
294
|
type: Component,
|
|
286
295
|
args: [{ selector: 'wlcm-select', standalone: true, imports: [CommonModule, MatSelectModule, ReactiveFormsModule, WlcmIconDirective, WlcmSelectInputBinderDirective], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [WlcmSelectInputBinderDirective], providers: [
|
|
287
296
|
WLCM_FORM_CONTROL_PROVIDER,
|
|
@@ -321,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
321
330
|
type: HostListener,
|
|
322
331
|
args: ['click']
|
|
323
332
|
}] } });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFFBQVEsRUFJUixTQUFTLEVBRVQsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBbUIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckgsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFlBQVksR0FHYixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVoRyxPQUFPLEVBQ0wsZUFB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Rzs7MEJBOEZFLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCO3lDQTVGOUIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVnRSxXQUFXO3NCQUFoRixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBdUIsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQXNEOUMsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVHLFNBQVM7c0JBQS9CLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgSW5wdXRTaWduYWwsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dEVtaXR0ZXJSZWYsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9TRUxFQ1RfQ09ORklHLCBNYXRPcHRpb24sIE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gIFNjcm9sbERldGVjdGlvbkFwaSxcbiAgV2xjbUljb25EaXJlY3RpdmUsXG4gIFdsY21JY29uTmFtZSxcbiAgV2xjbU9wdGlvbixcbiAgV2xjbVNlbGVjdE9wdGlvbkZvcm1hdCxcbn0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9DT05UUk9MLCBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUiwgV0xDTV9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LWlucHV0LWJpbmRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2xjbUZvcm1Db250cm9sLCBXbGNtRm9ybUZpZWxkLCBXbGNtRm9ybUZpZWxkSW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvX2luZGV4JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgRU1QVFksXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmliZXIsXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIG1lcmdlLFxuICBvZixcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXNPcHRpb25EaXNhYmxlZEZuLCBXbGNtQ2FuU2VsZWN0Rm4sIFdsY21TZWxlY3RDb25maWcsIFdsY21TZWxlY3RWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWxlY3QubW9kZWxzJztcbmltcG9ydCB7IFdMQ01fU0VMRUNUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9zZWxlY3QuY29uc3RhbnRzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgV2xjbVF1ZXJ5UGFyYW1zLCBXbGNtUGFnaW5hdGVkRGF0YSB9IGZyb20gJ0B3bGNtL2NvbW1vbic7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZVdpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG50eXBlIE9wdGlvblRlbXBsYXRlQ29udGV4dCA9IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBXbGNtT3B0aW9uIH0+O1xuXG5jb25zdCBQQU5FTF9DTEFTUzogc3RyaW5nID0gJ3dsY20tc2VsZWN0LXBhbmVsJztcblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFdsY21TZWxlY3RDb25maWcgPSB7IG92ZXJsYXlQYW5lbENsYXNzOiBbUEFORUxfQ0xBU1NdIH07XG5cbmNvbnN0IG1lcmdlQ29uZmlnID0gKGNvbmZpZzogV2xjbVNlbGVjdENvbmZpZyk6IFdsY21TZWxlY3RDb25maWcgPT4ge1xuICBjb25zdCBjdXN0b21pemVyID0gKF9kZWZhdWx0OiBXbGNtU2VsZWN0Q29uZmlnLCBfbmV3OiBXbGNtU2VsZWN0Q29uZmlnKTogQXJyYXk8dW5rbm93bj4gfCB2b2lkID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShfZGVmYXVsdCkpIHJldHVybiBfZGVmYXVsdC5jb25jYXQoX25ldyk7XG4gIH07XG5cbiAgcmV0dXJuIG1lcmdlV2l0aCh7IC4uLkRFRkFVTFRfQ09ORklHIH0sIGNvbmZpZywgY3VzdG9taXplcik7XG59O1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tc2VsZWN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBXbGNtSWNvbkRpcmVjdGl2ZSwgV2xjbVNlbGVjdElucHV0QmluZGVyRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUixcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfU0VMRUNUX0NPTkZJRyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3Qgd2xjbUNvbmZpZzogV2xjbVNlbGVjdENvbmZpZyA9IGluamVjdChXTENNX1NFTEVDVF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8ge307XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlQ29uZmlnKHdsY21Db25maWcpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbVNlbGVjdENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbVNlbGVjdENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdsY21TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBXbGNtRm9ybUZpZWxkSW5wdXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnTm90IHNlbGVjdGVkJztcblxuICBASW5wdXQoKSBmZXRjaFBhZ2luYXRlZE9wdGlvbnM/OiAocGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMpID0+IE9ic2VydmFibGU8V2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4+O1xuXG4gIEBJbnB1dCgpIGNhblNlbGVjdDogV2xjbUNhblNlbGVjdEZuID0gKF86IFdsY21TZWxlY3RWYWx1ZSkgPT4gdHJ1ZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IChwYXJhbXM6IFdsY21RdWVyeVBhcmFtcykgPT4gY2xvbmVEZWVwKHBhcmFtcykgfSkgcXVlcnlQYXJhbXM6IFdsY21RdWVyeVBhcmFtcyA9XG4gICAgY2xvbmVEZWVwKERFRkFVTFRfUVVFUllfUEFSQU1TKTtcblxuICBwYWdpbmF0ZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gIG9wdGlvbnM6IElucHV0U2lnbmFsPFdsY21PcHRpb25bXT4gPSBpbnB1dDxXbGNtT3B0aW9uW10+KFtdKTtcblxuICBwYWdpbmF0ZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxXbGNtT3B0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICBzZWxlY3RPcHRpb25Gb3JtYXQ6IElucHV0U2lnbmFsPFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+ID0gaW5wdXQ8V2xjbVNlbGVjdE9wdGlvbkZvcm1hdD4oJ1ZhbHVlT25seScpO1xuXG4gIG9wdGlvblRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4gPVxuICAgIGlucHV0PFRlbXBsYXRlUmVmPE9wdGlvblRlbXBsYXRlQ29udGV4dD4gfCBudWxsPihudWxsKTtcblxuICB0cmlnZ2VyVGVtcGxhdGU6IElucHV0U2lnbmFsPFRlbXBsYXRlUmVmPE1hdE9wdGlvbiB8IE1hdE9wdGlvbltdPiB8IHVuZGVmaW5lZD4gPSBpbnB1dCgpO1xuXG4gIGlzT3B0aW9uRGlzYWJsZWQ6IElucHV0U2lnbmFsPElzT3B0aW9uRGlzYWJsZWRGbj4gPSBpbnB1dDxJc09wdGlvbkRpc2FibGVkRm4+KCgpID0+IGZhbHNlKTtcblxuICBzZWxlY3Rpb25DaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8TWF0U2VsZWN0Q2hhbmdlPiA9IG91dHB1dCgpO1xuXG4gIG9wZW5lZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIGNsb3NlZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIHJlYWRvbmx5IHZhbHVlOiBXcml0YWJsZVNpZ25hbDxXbGNtU2VsZWN0VmFsdWUgfCBudWxsPiA9IHNpZ25hbChudWxsKTtcblxuICByZWFkb25seSBkaXNhYmxlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IFdsY21JY29uTmFtZSA9IFdsY21JY29uTmFtZTtcblxuICBwcml2YXRlIF9jaGFuZ2VkPzogKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9wcmV2aW91c1ZhbHVlOiBXbGNtU2VsZWN0VmFsdWUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9vcHRpb25zQ2FjaGU6IFNldDx1bmtub3duPiA9IG5ldyBTZXQoKTtcblxuICBjb21wdXRlZE9wdGlvbnM6IFNpZ25hbDxXbGNtT3B0aW9uW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFdsY21PcHRpb25bXSA9IHRoaXMucGFnaW5hdGVkKCkgPyB0aGlzLnBhZ2luYXRlZE9wdGlvbnMoKSA6IHRoaXMub3B0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMuaXNPcHRpb25EaXNhYmxlZCgpICYmIG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51cGRhdGVPcHRpb25zU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH0pO1xuXG4gIHByZWZpbGxlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPFdsY21PcHRpb25bXT4gPSBzaWduYWwoW10pO1xuXG4gIEBWaWV3Q2hpbGQoTWF0U2VsZWN0KSBtYXRTZWxlY3QhOiBNYXRTZWxlY3Q7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdE9wdGlvbnM6IFNpZ25hbDxSZWFkb25seUFycmF5PE1hdE9wdGlvbj4+ID0gdmlld0NoaWxkcmVuKE1hdE9wdGlvbik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaE9wdGlvbnMkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mb2N1c1N0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYmx1clN0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgZm9jdXMkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fZm9jdXNTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIGJsdXIkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fYmx1clN0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgcHJpdmF0ZSBhZGp1c3RlZFZhbHVlJDogQmVoYXZpb3JTdWJqZWN0PFdsY21TZWxlY3RWYWx1ZSB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXbGNtU2VsZWN0VmFsdWUgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHZpZXdSZWFkeSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgc2VsZWN0ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNjcm9sbERldGVjdGlvbkFwaTogU2Nyb2xsRGV0ZWN0aW9uQXBpLFxuICAgIEBJbmplY3QoV0xDTV9GT1JNX0ZJRUxEKSBwcml2YXRlIGZvcm1GaWVsZDogV2xjbUZvcm1GaWVsZCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFdMQ01fRk9STV9DT05UUk9MKSBwcml2YXRlIHBhcmVudEZvcm1NZW1iZXI6IFdsY21Gb3JtQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybU1lbWJlcikge1xuICAgICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSgpO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlQWRqdXN0ZWRWYWx1ZSgpO1xuXG4gICAgbWVyZ2UodG9PYnNlcnZhYmxlKHRoaXMucGFnaW5hdGVkKS5waXBlKGZpbHRlcihCb29sZWFuKSksIHRoaXMuX3JlZnJlc2hPcHRpb25zJClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWRQYWdpbmF0ZWRPcHRpb25zKCkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld1JlYWR5JC5uZXh0KCk7XG5cbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybUZpZWxkKSB7XG4gICAgICAgIHRoaXMubWF0U2VsZWN0Ll9wcmVmZXJyZWRPdmVybGF5T3JpZ2luID0gbmV3IENka092ZXJsYXlPcmlnaW4odGhpcy5mb3JtRmllbGQuaW5wdXRDb250YWluZXIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fZm9jdXNTdHJlYW0kLm5leHQodGhpcy5tYXRTZWxlY3QuX29wZW5lZFN0cmVhbSk7XG5cbiAgICB0aGlzLl9ibHVyU3RyZWFtJC5uZXh0KHRoaXMubWF0U2VsZWN0Ll9jbG9zZWRTdHJlYW0pO1xuICB9XG5cbiAgY29tcGFyZVdpdGggPSAob3B0aW9uQTogV2xjbU9wdGlvbiB8IHN0cmluZywgb3B0aW9uQjogV2xjbU9wdGlvbiB8IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiAoKG9wdGlvbkEgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkEpID09PSAoKG9wdGlvbkIgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkIpO1xuICB9O1xuXG4gIGZvY3VzID0gKCk6IHZvaWQgPT4gdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuXG4gIGlzRm9jdXNlZCA9ICgpOiBib29sZWFuID0+IHRoaXMuaXNPcGVuO1xuXG4gIHNlbGVjdChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCQubmV4dCgpO1xuXG4gICAgdGhpcy5tYXRTZWxlY3QudmFsdWUgPSBldmVudC52YWx1ZTtcblxuICAgIHRoaXMudmFsaWRhdGVTZWxlY3RlZE9wdGlvbihldmVudC52YWx1ZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnNlbGVjdGVkJCkpXG4gICAgICAuc3Vic2NyaWJlKChjYW5TZWxlY3Q6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFjYW5TZWxlY3QpIHJldHVybiB0aGlzLnJldmVydFByZXZpb3VzVmFsdWUoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LnZhbHVlKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VkPy4oZXZlbnQudmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQ/LigpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldmVydFByZXZpb3VzVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3QudmFsdWUgPSB0aGlzLl9wcmV2aW91c1ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZSh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xuXG4gICAgdGhpcy5fcHJldmlvdXNWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKG9ic2VydmVyOiBTdWJzY3JpYmVyPGJvb2xlYW4+KSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4gPSB0aGlzLmNhblNlbGVjdCh2YWx1ZSk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZTogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHJlc3BvbnNlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IHJlc3BvbnNlLnBpcGUoZmlyc3QoKSkgOiBvZihyZXNwb25zZSk7XG5cbiAgICAgIHNvdXJjZS5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xuICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3VsdCk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYW5lbE9wZW5lZCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG5cbiAgICB0aGlzLmhhbmRsZVNjcm9sbERvd24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYW5lbENsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG5cbiAgICB0aGlzLl90b3VjaGVkPy4oKTtcbiAgfVxuXG4gIHVwZGF0ZU9wdGlvbnNTdGF0dXMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRPcHRpb25zKCkuZm9yRWFjaCgobWF0T3B0aW9uOiBNYXRPcHRpb24pID0+IHtcbiAgICAgIG1hdE9wdGlvbi5kaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZCgpKG1hdE9wdGlvbi52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0ZWQoKSkgdGhpcy5wcmVmaWxsT3B0aW9ucyh2YWx1ZSk7XG5cbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZTogV2xjbVNlbGVjdFZhbHVlID0gdGhpcy5wcmVwYXJlVmFsdWVGb3JQYXRjaCh2YWx1ZSk7XG5cbiAgICB0aGlzLnVwZGF0ZVZhbHVlKGZvcm1hdHRlZFZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoY2FsbGJhY2s6ICh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCk7XG4gIH1cblxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZWZyZXNoT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZyZXNoT3B0aW9ucyQubmV4dCgpO1xuICB9XG5cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXRTZWxlY3Q/LnBhbmVsT3BlbiA/PyBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZVZhbHVlRm9yUGF0Y2godmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IFdsY21TZWxlY3RWYWx1ZSB7XG4gICAgY29uc3QgZm9ybWF0ZWRWYWx1ZTogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbVNlbGVjdFZhbHVlIH0gPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChmb3JtYXRlZFZhbHVlLmNoYW5nZWQpIHRoaXMuYWRqdXN0ZWRWYWx1ZSQubmV4dChmb3JtYXRlZFZhbHVlLnZhbHVlKTtcblxuICAgIHJldHVybiBmb3JtYXRlZFZhbHVlLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZSh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbVNlbGVjdFZhbHVlIH0ge1xuICAgIGxldCBjaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdCBfZm9ybWF0T3B0aW9uID0gKHZhbHVlOiBXbGNtT3B0aW9uIHwgc3RyaW5nKTogV2xjbU9wdGlvbiB8IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCBmb3JtYXRlZE9wdGlvbjogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyB9ID0gdGhpcy5mb3JtYXRPcHRpb24odmFsdWUpO1xuXG4gICAgICBpZiAoZm9ybWF0ZWRPcHRpb24uY2hhbmdlZCkgY2hhbmdlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBmb3JtYXRlZE9wdGlvbi52YWx1ZTtcbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFdsY21TZWxlY3RWYWx1ZSA9IHZhbHVlLm1hcChfZm9ybWF0T3B0aW9uKSBhcyBXbGNtU2VsZWN0VmFsdWU7XG5cbiAgICAgIHJldHVybiB7IGNoYW5nZWQsIHZhbHVlOiBvcHRpb25zIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uOiBXbGNtU2VsZWN0VmFsdWUgPSBfZm9ybWF0T3B0aW9uKHZhbHVlKTtcblxuICAgIHJldHVybiB7IGNoYW5nZWQsIHZhbHVlOiBvcHRpb24gfTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0T3B0aW9uKHZhbHVlOiBXbGNtT3B0aW9uIHwgc3RyaW5nKTogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyB9IHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdGhpcy5zZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ1ZhbHVlT25seScpIHtcbiAgICAgIHJldHVybiB7IGNoYW5nZWQ6IHRydWUsIHZhbHVlOiB2YWx1ZS52YWx1ZSBhcyBzdHJpbmcgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjaGFuZ2VkOiBmYWxzZSwgdmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBhZ2luYXRlZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlID0gMTtcblxuICAgIHRoaXMuZmV0Y2hQYWdpbmF0ZWRPcHRpb25zISh0aGlzLnF1ZXJ5UGFyYW1zKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcyksIGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChwYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxXbGNtT3B0aW9uPikgPT4ge1xuICAgICAgICB0aGlzLl9vcHRpb25zQ2FjaGUuY2xlYXIoKTtcblxuICAgICAgICB0aGlzLmNhY2hlT3B0aW9ucyhwYWdpbmF0ZWREYXRhLmRhdGEpO1xuXG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGVkT3B0aW9ucy5zZXQocGFnaW5hdGVkRGF0YS5kYXRhKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9yZVBhZ2luYXRlZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wYWdpbmF0ZWREYXRhIHx8IHRoaXMuX3BhZ2luYXRlZERhdGEuY3VyclBhZ2UgKyAxID4gdGhpcy5fcGFnaW5hdGVkRGF0YS50b3RhbFBhZ2VzKSByZXR1cm47XG5cbiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2UrKztcblxuICAgIHRoaXMuZmV0Y2hQYWdpbmF0ZWRPcHRpb25zISh7IC4uLnRoaXMucXVlcnlQYXJhbXMgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpLCBmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZU9wdGlvbnMocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICB0aGlzLnBhZ2luYXRlZE9wdGlvbnMudXBkYXRlKChvcHRpb25zOiBXbGNtT3B0aW9uW10pID0+IFsuLi5vcHRpb25zLCAuLi5wYWdpbmF0ZWREYXRhLmRhdGFdKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWNoZU9wdGlvbnMob3B0aW9uczogV2xjbU9wdGlvbltdKTogdm9pZCB7XG4gICAgb3B0aW9ucy5mb3JFYWNoKChvcHRpb246IFdsY21PcHRpb24pID0+IHRoaXMuX29wdGlvbnNDYWNoZS5hZGQob3B0aW9uLnZhbHVlKSk7XG5cbiAgICB0aGlzLnN5bmNQcmVmaWxsZWRPcHRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNQcmVmaWxsZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZWZpbGxlZE9wdGlvbnMoKS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIHRoaXMucHJlZmlsbGVkT3B0aW9ucy51cGRhdGUoKG9wdGlvbnM6IFdsY21PcHRpb25bXSkgPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKChvcHRpb246IFdsY21PcHRpb24pID0+ICF0aGlzLl9vcHRpb25zQ2FjaGUuaGFzKG9wdGlvbi52YWx1ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVmaWxsT3B0aW9ucyh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogdm9pZCB7XG4gICAgbGV0IHByZWZpbGxlZE9wdGlvbnM6IFdsY21PcHRpb25bXSA9IFtdO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHByZWZpbGxlZE9wdGlvbnMgPSB2YWx1ZS5maWx0ZXIoKG9wdGlvbjogV2xjbU9wdGlvbiB8IHN0cmluZykgPT4gb3B0aW9uIGluc3RhbmNlb2YgT2JqZWN0KSBhcyBXbGNtT3B0aW9uW107XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgcHJlZmlsbGVkT3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5wcmVmaWxsZWRPcHRpb25zLnNldChwcmVmaWxsZWRPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2Nyb2xsRG93bigpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbWRjLXNlbGVjdC1wYW5lbCcpITtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbERldGVjdGlvbkFwaS5vblNjcm9sbGVkRG93bihlbGVtZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMubG9hZE1vcmVQYWdpbmF0ZWRPcHRpb25zKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50Rm9ybU1lbWJlci5zdGF0ZUNoYW5nZXMkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkPy4oKTtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWRqdXN0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdSZWFkeSRcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFkanVzdGVkVmFsdWUkLnBpcGUoZmlsdGVyKEJvb2xlYW4pKSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKSA9PiB0aGlzLl9jaGFuZ2VkPy4odmFsdWUpKTtcbiAgfVxufVxuIiwiPG1hdC1zZWxlY3RcbiAgI3NlbGVjdENvbXBvbmVudFxuICBbdmFsdWVdPVwidmFsdWUoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICBbbmdDbGFzc109XCJ7IGZvY3VzZWQ6IHNlbGVjdENvbXBvbmVudC5mb2N1c2VkIH1cIlxuICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCJcbiAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVXaXRoXCJcbiAgKG9wZW5lZCk9XCJwYW5lbE9wZW5lZCgpXCJcbiAgKGNsb3NlZCk9XCJwYW5lbENsb3NlZCgpXCJcbj5cbiAgQGlmICh0cmlnZ2VyVGVtcGxhdGUoKSkge1xuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdHJpZ2dlclRlbXBsYXRlKCkhO1xuICAgICAgICAgIGNvbnRleHQ6ICRhbnkoeyAkaW1wbGljaXQ6IHNlbGVjdENvbXBvbmVudC5zZWxlY3RlZCB9KVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICB9XG5cbiAgPG1hdC1vcHRpb25cbiAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByZWZpbGxlZE9wdGlvbnMoKVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndsY21TZWxlY3RPcHRpb25Db250ZW50XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtb3B0aW9uPlxuXG4gIDxtYXQtb3B0aW9uXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjb21wdXRlZE9wdGlvbnMoKVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndsY21TZWxlY3RPcHRpb25Db250ZW50XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtc2VsZWN0PlxuXG48ZGl2IGNsYXNzPVwid2xjbS1zZWxlY3QtYXJyb3dcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFt3bGNtSWNvbl09XCJXbGNtSWNvbk5hbWUuQ0hFVlJPTl9ET1dOXCJcbiAgICBbd2xjbUljb25TdG9wUHJvcGFnYXRpb25dPVwiZmFsc2VcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN3bGNtU2VsZWN0T3B0aW9uQ29udGVudCBsZXQtb3B0aW9uPlxuICBAaWYgKG9wdGlvblRlbXBsYXRlKCkpIHtcbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm9wdGlvblRlbXBsYXRlKCk7IGNvbnRleHQ6ICRhbnkoeyAkaW1wbGljaXQ6IG9wdGlvbiB9KVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICB9IEBlbHNlIHtcbiAgICB7eyBvcHRpb24udmlld1ZhbHVlIH19XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFFBQVEsRUFJUixTQUFTLEVBRVQsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBbUIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckgsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFlBQVksR0FHYixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVoRyxPQUFPLEVBQ0wsZUFB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LEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBRTFGLE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUNqQyxDQUFDO3lCQUNGO3dCQUNELEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQzNGLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDaEc7OzBCQThGRSxNQUFNOzJCQUFDLGVBQWU7OzBCQUN0QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjt5Q0E1RjlCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFZ0UsV0FBVztzQkFBaEYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLE1BQXVCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFzRDlDLFNBQVM7c0JBQTlCLFNBQVM7dUJBQUMsU0FBUztnQkFFRyxTQUFTO3NCQUEvQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBOZ1pvbmUsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXRFbWl0dGVyUmVmLFxuICBTaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBjb21wdXRlZCxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfU0VMRUNUX0NPTkZJRywgTWF0T3B0aW9uLCBNYXRTZWxlY3QsIE1hdFNlbGVjdENoYW5nZSwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7XG4gIERFRkFVTFRfUVVFUllfUEFSQU1TLFxuICBTY3JvbGxEZXRlY3Rpb25BcGksXG4gIFdsY21JY29uRGlyZWN0aXZlLFxuICBXbGNtSWNvbk5hbWUsXG4gIFdsY21PcHRpb24sXG4gIFdsY21TZWxlY3RPcHRpb25Gb3JtYXQsXG59IGZyb20gJ0B3bGNtL2FuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXTENNX0ZPUk1fQ09OVFJPTCwgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsIFdMQ01fRk9STV9GSUVMRCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NlbGVjdC1pbnB1dC1iaW5kZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdsY21Gb3JtQ29udHJvbCwgV2xjbUZvcm1GaWVsZCwgV2xjbUZvcm1GaWVsZElucHV0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL19pbmRleCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpYmVyLFxuICBmaWx0ZXIsXG4gIGZpcnN0LFxuICBtZXJnZSxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElzT3B0aW9uRGlzYWJsZWRGbiwgV2xjbUNhblNlbGVjdEZuLCBXbGNtU2VsZWN0Q29uZmlnLCBXbGNtU2VsZWN0VmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VsZWN0Lm1vZGVscyc7XG5pbXBvcnQgeyBXTENNX1NFTEVDVF9DT05GSUcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvc2VsZWN0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFdsY21RdWVyeVBhcmFtcywgV2xjbVBhZ2luYXRlZERhdGEgfSBmcm9tICdAd2xjbS9jb21tb24nO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxudHlwZSBPcHRpb25UZW1wbGF0ZUNvbnRleHQgPSBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogV2xjbU9wdGlvbiB9PjtcblxuY29uc3QgUEFORUxfQ0xBU1M6IHN0cmluZyA9ICd3bGNtLXNlbGVjdC1wYW5lbCc7XG5cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBXbGNtU2VsZWN0Q29uZmlnID0geyBvdmVybGF5UGFuZWxDbGFzczogW1BBTkVMX0NMQVNTXSB9O1xuXG5jb25zdCBtZXJnZUNvbmZpZyA9IChjb25maWc6IFdsY21TZWxlY3RDb25maWcpOiBXbGNtU2VsZWN0Q29uZmlnID0+IHtcbiAgY29uc3QgY3VzdG9taXplciA9IChfZGVmYXVsdDogV2xjbVNlbGVjdENvbmZpZywgX25ldzogV2xjbVNlbGVjdENvbmZpZyk6IEFycmF5PHVua25vd24+IHwgdm9pZCA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoX2RlZmF1bHQpKSByZXR1cm4gX2RlZmF1bHQuY29uY2F0KF9uZXcpO1xuICB9O1xuXG4gIHJldHVybiBtZXJnZVdpdGgoeyAuLi5ERUZBVUxUX0NPTkZJRyB9LCBjb25maWcsIGN1c3RvbWl6ZXIpO1xufTtcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3bGNtLXNlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgV2xjbUljb25EaXJlY3RpdmUsIFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3REaXJlY3RpdmVzOiBbV2xjbVNlbGVjdElucHV0QmluZGVyRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX1NFTEVDVF9DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdsY21Db25maWc6IFdsY21TZWxlY3RDb25maWcgPSBpbmplY3QoV0xDTV9TRUxFQ1RfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IHt9O1xuXG4gICAgICAgIHJldHVybiBtZXJnZUNvbmZpZyh3bGNtQ29uZmlnKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21TZWxlY3RDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21TZWxlY3RDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgV2xjbUZvcm1GaWVsZElucHV0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ05vdCBzZWxlY3RlZCc7XG5cbiAgQElucHV0KCkgZmV0Y2hQYWdpbmF0ZWRPcHRpb25zPzogKHBhcmFtczogV2xjbVF1ZXJ5UGFyYW1zKSA9PiBPYnNlcnZhYmxlPFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+PjtcblxuICBASW5wdXQoKSBjYW5TZWxlY3Q6IFdsY21DYW5TZWxlY3RGbiA9IChfOiBXbGNtU2VsZWN0VmFsdWUpID0+IHRydWU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiAocGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMpID0+IGNsb25lRGVlcChwYXJhbXMpIH0pIHF1ZXJ5UGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMgPVxuICAgIGNsb25lRGVlcChERUZBVUxUX1FVRVJZX1BBUkFNUyk7XG5cbiAgcGFnaW5hdGVkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcblxuICBvcHRpb25zOiBJbnB1dFNpZ25hbDxXbGNtT3B0aW9uW10+ID0gaW5wdXQ8V2xjbU9wdGlvbltdPihbXSk7XG5cbiAgcGFnaW5hdGVkT3B0aW9uczogV3JpdGFibGVTaWduYWw8V2xjbU9wdGlvbltdPiA9IHNpZ25hbChbXSk7XG5cbiAgc2VsZWN0T3B0aW9uRm9ybWF0OiBJbnB1dFNpZ25hbDxXbGNtU2VsZWN0T3B0aW9uRm9ybWF0PiA9IGlucHV0PFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+KCdWYWx1ZU9ubHknKTtcblxuICBvcHRpb25UZW1wbGF0ZTogSW5wdXRTaWduYWw8VGVtcGxhdGVSZWY8T3B0aW9uVGVtcGxhdGVDb250ZXh0PiB8IG51bGw+ID1cbiAgICBpbnB1dDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdHJpZ2dlclRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxNYXRPcHRpb24gfCBNYXRPcHRpb25bXT4gfCB1bmRlZmluZWQ+ID0gaW5wdXQoKTtcblxuICBpc09wdGlvbkRpc2FibGVkOiBJbnB1dFNpZ25hbDxJc09wdGlvbkRpc2FibGVkRm4+ID0gaW5wdXQ8SXNPcHRpb25EaXNhYmxlZEZuPigoKSA9PiBmYWxzZSk7XG5cbiAgc2VsZWN0aW9uQ2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPE1hdFNlbGVjdENoYW5nZT4gPSBvdXRwdXQoKTtcblxuICBvcGVuZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICBjbG9zZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICByZWFkb25seSB2YWx1ZTogV3JpdGFibGVTaWduYWw8V2xjbVNlbGVjdFZhbHVlIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBXbGNtSWNvbk5hbWUgPSBXbGNtSWNvbk5hbWU7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3RvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3ZhbGlkYXRvckNoYW5nZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3BhZ2luYXRlZERhdGE6IFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNWYWx1ZTogV2xjbVNlbGVjdFZhbHVlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uc0NhY2hlOiBTZXQ8dW5rbm93bj4gPSBuZXcgU2V0KCk7XG5cbiAgY29tcHV0ZWRPcHRpb25zOiBTaWduYWw8V2xjbU9wdGlvbltdPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zOiBXbGNtT3B0aW9uW10gPSB0aGlzLnBhZ2luYXRlZCgpID8gdGhpcy5wYWdpbmF0ZWRPcHRpb25zKCkgOiB0aGlzLm9wdGlvbnMoKTtcblxuICAgIGlmICh0aGlzLmlzT3B0aW9uRGlzYWJsZWQoKSAmJiBvcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXBkYXRlT3B0aW9uc1N0YXR1cygpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9KTtcblxuICBwcmVmaWxsZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxXbGNtT3B0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICBAVmlld0NoaWxkKE1hdFNlbGVjdCkgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0Lm9wZW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRPcHRpb25zOiBTaWduYWw8UmVhZG9ubHlBcnJheTxNYXRPcHRpb24+PiA9IHZpZXdDaGlsZHJlbihNYXRPcHRpb24pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hPcHRpb25zJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JsdXJTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIGZvY3VzJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2ZvY3VzU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBibHVyJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2JsdXJTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIHByaXZhdGUgYWRqdXN0ZWRWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxXbGNtU2VsZWN0VmFsdWUgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2xjbVNlbGVjdFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSB2aWV3UmVhZHkkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHNlbGVjdGVkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzY3JvbGxEZXRlY3Rpb25BcGk6IFNjcm9sbERldGVjdGlvbkFwaSxcbiAgICBASW5qZWN0KFdMQ01fRk9STV9GSUVMRCkgcHJpdmF0ZSBmb3JtRmllbGQ6IFdsY21Gb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXTENNX0ZPUk1fQ09OVFJPTCkgcHJpdmF0ZSBwYXJlbnRGb3JtTWVtYmVyOiBXbGNtRm9ybUNvbnRyb2wsXG4gICkge1xuICAgIGlmICh0aGlzLnBhcmVudEZvcm1NZW1iZXIpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZUFkanVzdGVkVmFsdWUoKTtcblxuICAgIG1lcmdlKHRvT2JzZXJ2YWJsZSh0aGlzLnBhZ2luYXRlZCkucGlwZShmaWx0ZXIoQm9vbGVhbikpLCB0aGlzLl9yZWZyZXNoT3B0aW9ucyQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkUGFnaW5hdGVkT3B0aW9ucygpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdSZWFkeSQubmV4dCgpO1xuXG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1GaWVsZCkge1xuICAgICAgICB0aGlzLm1hdFNlbGVjdC5fcHJlZmVycmVkT3ZlcmxheU9yaWdpbiA9IG5ldyBDZGtPdmVybGF5T3JpZ2luKHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2ZvY3VzU3RyZWFtJC5uZXh0KHRoaXMubWF0U2VsZWN0Ll9vcGVuZWRTdHJlYW0pO1xuXG4gICAgdGhpcy5fYmx1clN0cmVhbSQubmV4dCh0aGlzLm1hdFNlbGVjdC5fY2xvc2VkU3RyZWFtKTtcbiAgfVxuXG4gIGNvbXBhcmVXaXRoID0gKG9wdGlvbkE6IFdsY21PcHRpb24gfCBzdHJpbmcsIG9wdGlvbkI6IFdsY21PcHRpb24gfCBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBpZiAodGhpcy5hcmVPcHRpb25zRXF1YWwob3B0aW9uQSwgb3B0aW9uQikpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nICYmIHR5cGVvZiBvcHRpb25CICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLl9jaGFuZ2VkPy4ob3B0aW9uQSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBmb2N1cyA9ICgpOiB2b2lkID0+IHRoaXMubWF0U2VsZWN0Lm9wZW4oKTtcblxuICBpc0ZvY3VzZWQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmlzT3BlbjtcblxuICBzZWxlY3QoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQkLm5leHQoKTtcblxuICAgIHRoaXMubWF0U2VsZWN0LnZhbHVlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnZhbGlkYXRlU2VsZWN0ZWRPcHRpb24oZXZlbnQudmFsdWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5zZWxlY3RlZCQpKVxuICAgICAgLnN1YnNjcmliZSgoY2FuU2VsZWN0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghY2FuU2VsZWN0KSByZXR1cm4gdGhpcy5yZXZlcnRQcmV2aW91c1ZhbHVlKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudC52YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlZD8uKGV2ZW50LnZhbHVlKTtcblxuICAgICAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkPy4oKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVPcHRpb25zRXF1YWwob3B0aW9uQTogV2xjbU9wdGlvbiB8IHN0cmluZywgb3B0aW9uQjogV2xjbU9wdGlvbiB8IHN0cmluZykge1xuICAgIHJldHVybiAoKG9wdGlvbkEgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkEpID09PSAoKG9wdGlvbkIgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXZlcnRQcmV2aW91c1ZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0LnZhbHVlID0gdGhpcy5fcHJldmlvdXNWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcblxuICAgIHRoaXMuX3ByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTZWxlY3RlZE9wdGlvbih2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KChvYnNlcnZlcjogU3Vic2NyaWJlcjxib29sZWFuPikgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuID0gdGhpcy5jYW5TZWxlY3QodmFsdWUpO1xuXG4gICAgICBjb25zdCBzb3VyY2U6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSByZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyByZXNwb25zZS5waXBlKGZpcnN0KCkpIDogb2YocmVzcG9uc2UpO1xuXG4gICAgICBzb3VyY2Uuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXN1bHQpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFuZWxPcGVuZWQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5oYW5kbGVTY3JvbGxEb3duKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFuZWxDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5fdG91Y2hlZD8uKCk7XG4gIH1cblxuICB1cGRhdGVPcHRpb25zU3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMubWF0T3B0aW9ucygpLmZvckVhY2goKG1hdE9wdGlvbjogTWF0T3B0aW9uKSA9PiB7XG4gICAgICBtYXRPcHRpb24uZGlzYWJsZWQgPSB0aGlzLmlzT3B0aW9uRGlzYWJsZWQoKShtYXRPcHRpb24udmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGVkKCkpIHRoaXMucHJlZmlsbE9wdGlvbnModmFsdWUpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWU6IFdsY21TZWxlY3RWYWx1ZSA9IHRoaXMucHJlcGFyZVZhbHVlRm9yUGF0Y2godmFsdWUpO1xuXG4gICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGNhbGxiYWNrOiAodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdG91Y2hlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVmcmVzaE9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaE9wdGlvbnMkLm5leHQoKTtcbiAgfVxuXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWF0U2VsZWN0Py5wYW5lbE9wZW4gPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVWYWx1ZUZvclBhdGNoKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiBXbGNtU2VsZWN0VmFsdWUge1xuICAgIGNvbnN0IGZvcm1hdGVkVmFsdWU6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21TZWxlY3RWYWx1ZSB9ID0gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAoZm9ybWF0ZWRWYWx1ZS5jaGFuZ2VkKSB0aGlzLmFkanVzdGVkVmFsdWUkLm5leHQoZm9ybWF0ZWRWYWx1ZS52YWx1ZSk7XG5cbiAgICByZXR1cm4gZm9ybWF0ZWRWYWx1ZS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21TZWxlY3RWYWx1ZSB9IHtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3QgX2Zvcm1hdE9wdGlvbiA9ICh2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyk6IFdsY21PcHRpb24gfCBzdHJpbmcgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0ZWRPcHRpb246IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21PcHRpb24gfCBzdHJpbmcgfSA9IHRoaXMuZm9ybWF0T3B0aW9uKHZhbHVlKTtcblxuICAgICAgaWYgKGZvcm1hdGVkT3B0aW9uLmNoYW5nZWQpIGNoYW5nZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gZm9ybWF0ZWRPcHRpb24udmFsdWU7XG4gICAgfTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBvcHRpb25zOiBXbGNtU2VsZWN0VmFsdWUgPSB2YWx1ZS5tYXAoX2Zvcm1hdE9wdGlvbikgYXMgV2xjbVNlbGVjdFZhbHVlO1xuXG4gICAgICByZXR1cm4geyBjaGFuZ2VkLCB2YWx1ZTogb3B0aW9ucyB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbjogV2xjbVNlbGVjdFZhbHVlID0gX2Zvcm1hdE9wdGlvbih2YWx1ZSk7XG5cbiAgICByZXR1cm4geyBjaGFuZ2VkLCB2YWx1ZTogb3B0aW9uIH07XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE9wdGlvbih2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyk6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21PcHRpb24gfCBzdHJpbmcgfSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIHRoaXMuc2VsZWN0T3B0aW9uRm9ybWF0KCkgPT09ICdWYWx1ZU9ubHknKSB7XG4gICAgICByZXR1cm4geyBjaGFuZ2VkOiB0cnVlLCB2YWx1ZTogdmFsdWUudmFsdWUgYXMgc3RyaW5nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2hhbmdlZDogZmFsc2UsIHZhbHVlIH07XG4gIH1cblxuICBwcml2YXRlIGxvYWRQYWdpbmF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSA9IDE7XG5cbiAgICB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyEodGhpcy5xdWVyeVBhcmFtcylcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpLCBmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5fb3B0aW9uc0NhY2hlLmNsZWFyKCk7XG5cbiAgICAgICAgdGhpcy5jYWNoZU9wdGlvbnMocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICB0aGlzLnBhZ2luYXRlZE9wdGlvbnMuc2V0KHBhZ2luYXRlZERhdGEuZGF0YSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE1vcmVQYWdpbmF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGFnaW5hdGVkRGF0YSB8fCB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA+IHRoaXMuX3BhZ2luYXRlZERhdGEudG90YWxQYWdlcykgcmV0dXJuO1xuXG4gICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlKys7XG5cbiAgICB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyEoeyAuLi50aGlzLnF1ZXJ5UGFyYW1zIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSwgZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBhZ2luYXRlZERhdGE6IFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuY2FjaGVPcHRpb25zKHBhZ2luYXRlZERhdGEuZGF0YSk7XG5cbiAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgdGhpcy5wYWdpbmF0ZWRPcHRpb25zLnVwZGF0ZSgob3B0aW9uczogV2xjbU9wdGlvbltdKSA9PiBbLi4ub3B0aW9ucywgLi4ucGFnaW5hdGVkRGF0YS5kYXRhXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FjaGVPcHRpb25zKG9wdGlvbnM6IFdsY21PcHRpb25bXSk6IHZvaWQge1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBXbGNtT3B0aW9uKSA9PiB0aGlzLl9vcHRpb25zQ2FjaGUuYWRkKG9wdGlvbi52YWx1ZSkpO1xuXG4gICAgdGhpcy5zeW5jUHJlZmlsbGVkT3B0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jUHJlZmlsbGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVmaWxsZWRPcHRpb25zKCkubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICB0aGlzLnByZWZpbGxlZE9wdGlvbnMudXBkYXRlKChvcHRpb25zOiBXbGNtT3B0aW9uW10pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigob3B0aW9uOiBXbGNtT3B0aW9uKSA9PiAhdGhpcy5fb3B0aW9uc0NhY2hlLmhhcyhvcHRpb24udmFsdWUpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbE9wdGlvbnModmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHZvaWQge1xuICAgIGxldCBwcmVmaWxsZWRPcHRpb25zOiBXbGNtT3B0aW9uW10gPSBbXTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBwcmVmaWxsZWRPcHRpb25zID0gdmFsdWUuZmlsdGVyKChvcHRpb246IFdsY21PcHRpb24gfCBzdHJpbmcpID0+IG9wdGlvbiBpbnN0YW5jZW9mIE9iamVjdCkgYXMgV2xjbU9wdGlvbltdO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHByZWZpbGxlZE9wdGlvbnMgPSBbdmFsdWVdO1xuICAgIH1cblxuICAgIHRoaXMucHJlZmlsbGVkT3B0aW9ucy5zZXQocHJlZmlsbGVkT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNjcm9sbERvd24oKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LW1kYy1zZWxlY3QtcGFuZWwnKSE7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxEZXRlY3Rpb25BcGkub25TY3JvbGxlZERvd24oZWxlbWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmxvYWRNb3JlUGFnaW5hdGVkT3B0aW9ucygpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFkanVzdGVkVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3UmVhZHkkXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hZGp1c3RlZFZhbHVlJC5waXBlKGZpbHRlcihCb29sZWFuKSkpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSkgPT4gdGhpcy5fY2hhbmdlZD8uKHZhbHVlKSk7XG4gIH1cbn1cbiIsIjxtYXQtc2VsZWN0XG4gICNzZWxlY3RDb21wb25lbnRcbiAgW3ZhbHVlXT1cInZhbHVlKClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgW25nQ2xhc3NdPVwieyBmb2N1c2VkOiBzZWxlY3RDb21wb25lbnQuZm9jdXNlZCB9XCJcbiAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3QoJGV2ZW50KVwiXG4gIFtjb21wYXJlV2l0aF09XCJjb21wYXJlV2l0aFwiXG4gIChvcGVuZWQpPVwicGFuZWxPcGVuZWQoKVwiXG4gIChjbG9zZWQpPVwicGFuZWxDbG9zZWQoKVwiXG4+XG4gIEBpZiAodHJpZ2dlclRlbXBsYXRlKCkpIHtcbiAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHRyaWdnZXJUZW1wbGF0ZSgpITtcbiAgICAgICAgICBjb250ZXh0OiAkYW55KHsgJGltcGxpY2l0OiBzZWxlY3RDb21wb25lbnQuc2VsZWN0ZWQgfSlcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgfVxuXG4gIDxtYXQtb3B0aW9uXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcmVmaWxsZWRPcHRpb25zKClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ0NvbXBsZXRlT3B0aW9uJyA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3bGNtU2VsZWN0T3B0aW9uQ29udGVudFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbWF0LW9wdGlvbj5cblxuICA8bWF0LW9wdGlvblxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29tcHV0ZWRPcHRpb25zKClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ0NvbXBsZXRlT3B0aW9uJyA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3bGNtU2VsZWN0T3B0aW9uQ29udGVudFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbWF0LW9wdGlvbj5cbjwvbWF0LXNlbGVjdD5cblxuPGRpdiBjbGFzcz1cIndsY20tc2VsZWN0LWFycm93XCI+XG4gIDxuZy1jb250YWluZXJcbiAgICBbd2xjbUljb25dPVwiV2xjbUljb25OYW1lLkNIRVZST05fRE9XTlwiXG4gICAgW3dsY21JY29uU3RvcFByb3BhZ2F0aW9uXT1cImZhbHNlXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjd2xjbVNlbGVjdE9wdGlvbkNvbnRlbnQgbGV0LW9wdGlvbj5cbiAgQGlmIChvcHRpb25UZW1wbGF0ZSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZSgpOyBjb250ZXh0OiAkYW55KHsgJGltcGxpY2l0OiBvcHRpb24gfSlcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAge3sgb3B0aW9uLnZpZXdWYWx1ZSB9fVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
|