@wavemaker/app-ng-runtime 11.6.0-next.40753 → 11.6.0-next.41002
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.
- app-ng-runtime/build-task/bundles/index.umd.js +1 -1
- app-ng-runtime/build-task/esm2020/data/form/form-field/form-field.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2015/index.mjs +1 -1
- app-ng-runtime/build-task/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/build-task/fesm2020/index.mjs +1 -1
- app-ng-runtime/build-task/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +1 -0
- app-ng-runtime/components/base/esm2020/widgets/common/partial/partial.directive.mjs +2 -1
- app-ng-runtime/components/base/fesm2015/index.mjs +1 -0
- app-ng-runtime/components/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/base/fesm2020/index.mjs +1 -0
- app-ng-runtime/components/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js +4 -2
- app-ng-runtime/components/chart/esm2020/chart.component.mjs +4 -2
- app-ng-runtime/components/chart/esm2020/chart.utils.mjs +2 -2
- app-ng-runtime/components/chart/fesm2015/index.mjs +4 -2
- app-ng-runtime/components/chart/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/chart/fesm2020/index.mjs +4 -2
- app-ng-runtime/components/chart/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +41 -27
- app-ng-runtime/components/data/form/esm2020/form-field/form-field.directive.mjs +28 -19
- app-ng-runtime/components/data/form/esm2020/form.component.mjs +19 -7
- app-ng-runtime/components/data/form/fesm2015/index.mjs +45 -27
- app-ng-runtime/components/data/form/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/fesm2020/index.mjs +45 -24
- app-ng-runtime/components/data/form/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -0
- app-ng-runtime/components/data/table/bundles/index.umd.js +3 -2
- app-ng-runtime/components/data/table/esm2020/table.component.mjs +4 -3
- app-ng-runtime/components/data/table/fesm2015/index.mjs +3 -2
- app-ng-runtime/components/data/table/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/fesm2020/index.mjs +3 -2
- app-ng-runtime/components/data/table/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +55 -30
- app-ng-runtime/components/input/default/esm2020/caption-position.directive.mjs +2 -2
- app-ng-runtime/components/input/default/esm2020/select/select.component.mjs +58 -35
- app-ng-runtime/components/input/default/fesm2015/index.mjs +56 -31
- app-ng-runtime/components/input/default/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/fesm2020/index.mjs +53 -31
- app-ng-runtime/components/input/default/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/select/select.component.d.ts +4 -1
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +50 -25
- app-ng-runtime/components/input/epoch/esm2020/base-date-time.component.mjs +36 -14
- app-ng-runtime/components/input/epoch/esm2020/date/date.component.mjs +5 -5
- app-ng-runtime/components/input/epoch/esm2020/date-time/date-time.component.mjs +6 -5
- app-ng-runtime/components/input/epoch/esm2020/time/time.component.mjs +7 -5
- app-ng-runtime/components/input/epoch/fesm2015/index.mjs +50 -25
- app-ng-runtime/components/input/epoch/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/fesm2020/index.mjs +50 -25
- app-ng-runtime/components/input/epoch/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +15 -5
- app-ng-runtime/components/navigation/menu/esm2020/menu.component.mjs +12 -4
- app-ng-runtime/components/navigation/menu/esm2020/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/esm2020/nav/nav.component.mjs +3 -3
- app-ng-runtime/components/navigation/menu/esm2020/nav/nav.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/fesm2015/index.mjs +15 -5
- app-ng-runtime/components/navigation/menu/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/fesm2020/index.mjs +15 -5
- app-ng-runtime/components/navigation/menu/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +3 -0
- app-ng-runtime/components/navigation/menu/nav/nav.component.d.ts +1 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +10 -9
- app-ng-runtime/components/navigation/popover/esm2020/popover.component.mjs +11 -10
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs +10 -9
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs +10 -9
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/bundles/index.umd.js +1 -0
- app-ng-runtime/components/prefab/esm2020/prefab-container/prefab-container.directive.mjs +2 -1
- app-ng-runtime/components/prefab/fesm2015/index.mjs +1 -0
- app-ng-runtime/components/prefab/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/fesm2020/index.mjs +1 -0
- app-ng-runtime/components/prefab/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +2 -1
- app-ng-runtime/core/esm2020/utils/utils.mjs +3 -2
- app-ng-runtime/core/fesm2015/index.mjs +2 -1
- app-ng-runtime/core/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/core/fesm2020/index.mjs +2 -1
- app-ng-runtime/core/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +2 -0
- app-ng-runtime/runtime/base/esm2020/components/base-page.component.mjs +3 -1
- app-ng-runtime/runtime/base/fesm2015/index.mjs +2 -0
- app-ng-runtime/runtime/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/fesm2020/index.mjs +2 -0
- app-ng-runtime/runtime/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +3 -3
- app-ng-runtime/variables/bundles/index.umd.js +13 -7
- app-ng-runtime/variables/esm2020/util/variable/variables.utils.mjs +14 -8
- app-ng-runtime/variables/fesm2015/index.mjs +13 -7
- app-ng-runtime/variables/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/variables/fesm2020/index.mjs +13 -7
- app-ng-runtime/variables/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/variables/util/variable/variables.utils.d.ts +1 -1
|
@@ -245,7 +245,7 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
245
245
|
setIsDataUpdatedByUser: (value: any) => void;
|
|
246
246
|
onDataRender: () => void;
|
|
247
247
|
onRowSelect: (row: any, e: any) => void;
|
|
248
|
-
assignSelectedItems: (row: any, e: any) => void;
|
|
248
|
+
assignSelectedItems: (row: any, e: any, isRowSelected: any) => void;
|
|
249
249
|
onRowDblClick: (row: any, e: any) => void;
|
|
250
250
|
onRowDeselect: (row: any, e: any) => void;
|
|
251
251
|
callOnRowDeselectEvent: (row: any, e: any) => void;
|
|
@@ -2226,59 +2226,68 @@
|
|
|
2226
2226
|
};
|
|
2227
2227
|
|
|
2228
2228
|
const _c0$7 = ["select"];
|
|
2229
|
+
function SelectComponent_option_2_Template(rf, ctx) {
|
|
2230
|
+
if (rf & 1) {
|
|
2231
|
+
i0__namespace.ɵɵelement(0, "option", 4);
|
|
2232
|
+
}
|
|
2233
|
+
if (rf & 2) {
|
|
2234
|
+
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
|
2235
|
+
i0__namespace.ɵɵproperty("textContent", ctx_r1.placeholder)("hidden", !ctx_r1.placeholder);
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2229
2238
|
function SelectComponent_ng_container_3_optgroup_1_option_1_Template(rf, ctx) {
|
|
2230
2239
|
if (rf & 1) {
|
|
2231
|
-
i0__namespace.ɵɵelement(0, "option",
|
|
2240
|
+
i0__namespace.ɵɵelement(0, "option", 8);
|
|
2232
2241
|
}
|
|
2233
2242
|
if (rf & 2) {
|
|
2234
|
-
const
|
|
2235
|
-
i0__namespace.ɵɵproperty("value",
|
|
2243
|
+
const item_r7 = ctx.$implicit;
|
|
2244
|
+
i0__namespace.ɵɵproperty("value", item_r7.key)("selected", item_r7.selected)("textContent", item_r7.label);
|
|
2236
2245
|
}
|
|
2237
2246
|
}
|
|
2238
2247
|
function SelectComponent_ng_container_3_optgroup_1_Template(rf, ctx) {
|
|
2239
2248
|
if (rf & 1) {
|
|
2240
|
-
i0__namespace.ɵɵelementStart(0, "optgroup",
|
|
2241
|
-
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option",
|
|
2249
|
+
i0__namespace.ɵɵelementStart(0, "optgroup", 6);
|
|
2250
|
+
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option", 7);
|
|
2242
2251
|
i0__namespace.ɵɵelementEnd();
|
|
2243
2252
|
}
|
|
2244
2253
|
if (rf & 2) {
|
|
2245
|
-
const
|
|
2246
|
-
i0__namespace.ɵɵproperty("label",
|
|
2254
|
+
const groupObj_r5 = ctx.$implicit;
|
|
2255
|
+
i0__namespace.ɵɵproperty("label", groupObj_r5.key);
|
|
2247
2256
|
i0__namespace.ɵɵadvance(1);
|
|
2248
|
-
i0__namespace.ɵɵproperty("ngForOf",
|
|
2257
|
+
i0__namespace.ɵɵproperty("ngForOf", groupObj_r5.data);
|
|
2249
2258
|
}
|
|
2250
2259
|
}
|
|
2251
2260
|
function SelectComponent_ng_container_3_Template(rf, ctx) {
|
|
2252
2261
|
if (rf & 1) {
|
|
2253
2262
|
i0__namespace.ɵɵelementContainerStart(0);
|
|
2254
|
-
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup",
|
|
2263
|
+
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup", 5);
|
|
2255
2264
|
i0__namespace.ɵɵelementContainerEnd();
|
|
2256
2265
|
}
|
|
2257
2266
|
if (rf & 2) {
|
|
2258
|
-
const
|
|
2267
|
+
const ctx_r2 = i0__namespace.ɵɵnextContext();
|
|
2259
2268
|
i0__namespace.ɵɵadvance(1);
|
|
2260
|
-
i0__namespace.ɵɵproperty("ngForOf",
|
|
2269
|
+
i0__namespace.ɵɵproperty("ngForOf", ctx_r2.groupedData);
|
|
2261
2270
|
}
|
|
2262
2271
|
}
|
|
2263
2272
|
function SelectComponent_ng_container_4_option_1_Template(rf, ctx) {
|
|
2264
2273
|
if (rf & 1) {
|
|
2265
|
-
i0__namespace.ɵɵelement(0, "option",
|
|
2274
|
+
i0__namespace.ɵɵelement(0, "option", 8);
|
|
2266
2275
|
}
|
|
2267
2276
|
if (rf & 2) {
|
|
2268
|
-
const
|
|
2269
|
-
i0__namespace.ɵɵproperty("value",
|
|
2277
|
+
const item_r9 = ctx.$implicit;
|
|
2278
|
+
i0__namespace.ɵɵproperty("value", item_r9.key)("selected", item_r9.selected)("textContent", item_r9.label);
|
|
2270
2279
|
}
|
|
2271
2280
|
}
|
|
2272
2281
|
function SelectComponent_ng_container_4_Template(rf, ctx) {
|
|
2273
2282
|
if (rf & 1) {
|
|
2274
2283
|
i0__namespace.ɵɵelementContainerStart(0);
|
|
2275
|
-
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option",
|
|
2284
|
+
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option", 7);
|
|
2276
2285
|
i0__namespace.ɵɵelementContainerEnd();
|
|
2277
2286
|
}
|
|
2278
2287
|
if (rf & 2) {
|
|
2279
|
-
const
|
|
2288
|
+
const ctx_r3 = i0__namespace.ɵɵnextContext();
|
|
2280
2289
|
i0__namespace.ɵɵadvance(1);
|
|
2281
|
-
i0__namespace.ɵɵproperty("ngForOf",
|
|
2290
|
+
i0__namespace.ɵɵproperty("ngForOf", ctx_r3.datasetItems);
|
|
2282
2291
|
}
|
|
2283
2292
|
}
|
|
2284
2293
|
const _c1$6 = function (a1) { return ["app-select form-control", a1]; };
|
|
@@ -2289,13 +2298,17 @@
|
|
|
2289
2298
|
this.datavalue = ds.execute(i1$1.DataSource.Operation.GET_DEFAULT_LOCALE);
|
|
2290
2299
|
}
|
|
2291
2300
|
}
|
|
2292
|
-
constructor(inj) {
|
|
2301
|
+
constructor(inj, app) {
|
|
2293
2302
|
super(inj, WIDGET_CONFIG$7);
|
|
2303
|
+
this.app = app;
|
|
2294
2304
|
this.acceptsArray = true;
|
|
2295
2305
|
}
|
|
2296
2306
|
ngAfterViewInit() {
|
|
2297
2307
|
super.ngAfterViewInit();
|
|
2298
2308
|
i2.styler(this.selectEl.nativeElement, this);
|
|
2309
|
+
setTimeout(() => {
|
|
2310
|
+
this.checkForFloatingLabel(null);
|
|
2311
|
+
}, 10);
|
|
2299
2312
|
}
|
|
2300
2313
|
// Change event is registered from the template, Prevent the framework from registering one more event
|
|
2301
2314
|
handleEvent(node, eventName, eventCallback, locals) {
|
|
@@ -2342,6 +2355,9 @@
|
|
|
2342
2355
|
}
|
|
2343
2356
|
super.onPropertyChange(key, nv, ov);
|
|
2344
2357
|
}
|
|
2358
|
+
isIosPlatform() {
|
|
2359
|
+
return i1$1.isIos();
|
|
2360
|
+
}
|
|
2345
2361
|
/**
|
|
2346
2362
|
* When caption floating is enabled and placeholder is given, do not show placeholder until user focuses on the field
|
|
2347
2363
|
* When focused add the placeholder to the option which is selected
|
|
@@ -2351,18 +2367,27 @@
|
|
|
2351
2367
|
checkForFloatingLabel($event) {
|
|
2352
2368
|
const captionEl = $(this.selectEl.nativeElement).closest('.app-composite-widget.caption-floating');
|
|
2353
2369
|
if (captionEl.length > 0) {
|
|
2354
|
-
if ($event.type === 'focus' && (
|
|
2355
|
-
|
|
2370
|
+
if ((!$event || $event.type === 'focus') && (($(this.selectEl).find('select option:selected').text() === '' && (this.placeholder || this.datavalue || this.isIosPlatform())))) {
|
|
2371
|
+
if (!$event && (this.placeholder || this.datavalue || this.isIosPlatform())) {
|
|
2372
|
+
this.app.notify('captionPositionAnimate', { isSelect: true, nativeEl: captionEl });
|
|
2373
|
+
}
|
|
2374
|
+
if (this.placeholder) {
|
|
2375
|
+
$(this.selectEl.nativeElement).find('option:first').text(this.placeholder);
|
|
2376
|
+
}
|
|
2356
2377
|
}
|
|
2357
2378
|
else if (!this.datavalue) {
|
|
2358
|
-
|
|
2359
|
-
|
|
2379
|
+
if (!this.placeholder) {
|
|
2380
|
+
// $(this.selectEl.nativeElement).find('option:first').text('');
|
|
2381
|
+
if (!this.isIosPlatform()) {
|
|
2382
|
+
captionEl.removeClass('float-active');
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2360
2385
|
}
|
|
2361
2386
|
}
|
|
2362
2387
|
}
|
|
2363
2388
|
}
|
|
2364
2389
|
SelectComponent.initializeProps = registerProps$7();
|
|
2365
|
-
SelectComponent.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector)); };
|
|
2390
|
+
SelectComponent.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector), i0__namespace.ɵɵdirectiveInject(i1$1__namespace.App)); };
|
|
2366
2391
|
SelectComponent.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: SelectComponent, selectors: [["wm-select"]], viewQuery: function SelectComponent_Query(rf, ctx) {
|
|
2367
2392
|
if (rf & 1) {
|
|
2368
2393
|
i0__namespace.ɵɵviewQuery(_c0$7, 7, i0.ElementRef);
|
|
@@ -2375,20 +2400,20 @@
|
|
|
2375
2400
|
i2.provideAs(SelectComponent, i2$1.NG_VALUE_ACCESSOR, true),
|
|
2376
2401
|
i2.provideAs(SelectComponent, i2$1.NG_VALIDATORS, true),
|
|
2377
2402
|
i2.provideAsWidgetRef(SelectComponent)
|
|
2378
|
-
]), i0__namespace.ɵɵInheritDefinitionFeature], decls: 5, vars:
|
|
2403
|
+
]), i0__namespace.ɵɵInheritDefinitionFeature], decls: 5, vars: 15, consts: [["role", "listbox", "aria-haspopup", "true", "aria-expanded", "false", "focus-target", "", 3, "ngClass", "disabled", "required", "tabindex", "ngModel", "multiple", "autofocus", "ngModelChange", "change", "focus", "blur"], ["select", ""], ["value", "undefined", 3, "textContent", "hidden", 4, "ngIf"], [4, "ngIf"], ["value", "undefined", 3, "textContent", "hidden"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], ["role", "option", 3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], ["role", "option", 3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) {
|
|
2379
2404
|
if (rf & 1) {
|
|
2380
2405
|
i0__namespace.ɵɵelementStart(0, "select", 0, 1);
|
|
2381
2406
|
i0__namespace.ɵɵlistener("ngModelChange", function SelectComponent_Template_select_ngModelChange_0_listener($event) { return ctx.modelByKey = $event; })("change", function SelectComponent_Template_select_change_0_listener($event) { return ctx.onSelectValueChange($event); })("focus", function SelectComponent_Template_select_focus_0_listener($event) { return ctx.checkForFloatingLabel($event); })("blur", function SelectComponent_Template_select_blur_0_listener($event) { ctx.invokeOnTouched($event); return ctx.checkForFloatingLabel($event); });
|
|
2382
|
-
i0__namespace.ɵɵ
|
|
2407
|
+
i0__namespace.ɵɵtemplate(2, SelectComponent_option_2_Template, 1, 2, "option", 2);
|
|
2383
2408
|
i0__namespace.ɵɵtemplate(3, SelectComponent_ng_container_3_Template, 2, 1, "ng-container", 3);
|
|
2384
2409
|
i0__namespace.ɵɵtemplate(4, SelectComponent_ng_container_4_Template, 2, 1, "ng-container", 3);
|
|
2385
2410
|
i0__namespace.ɵɵelementEnd();
|
|
2386
2411
|
}
|
|
2387
2412
|
if (rf & 2) {
|
|
2388
|
-
i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(
|
|
2413
|
+
i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(13, _c1$6, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex)("ngModel", ctx.modelByKey)("multiple", ctx.multiple)("autofocus", ctx.autofocus);
|
|
2389
2414
|
i0__namespace.ɵɵattribute("name", ctx.name)("aria-label", ctx.hint)("aria-multiselectable", ctx.multiple);
|
|
2390
2415
|
i0__namespace.ɵɵadvance(2);
|
|
2391
|
-
i0__namespace.ɵɵproperty("
|
|
2416
|
+
i0__namespace.ɵɵproperty("ngIf", !ctx.isIosPlatform() || !!ctx.placeholder);
|
|
2392
2417
|
i0__namespace.ɵɵadvance(1);
|
|
2393
2418
|
i0__namespace.ɵɵproperty("ngIf", ctx.groupby);
|
|
2394
2419
|
i0__namespace.ɵɵadvance(1);
|
|
@@ -2402,8 +2427,8 @@
|
|
|
2402
2427
|
i2.provideAs(SelectComponent, i2$1.NG_VALUE_ACCESSOR, true),
|
|
2403
2428
|
i2.provideAs(SelectComponent, i2$1.NG_VALIDATORS, true),
|
|
2404
2429
|
i2.provideAsWidgetRef(SelectComponent)
|
|
2405
|
-
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\"\n>\n <option
|
|
2406
|
-
}], function () { return [{ type: i0__namespace.Injector }]; }, { selectEl: [{
|
|
2430
|
+
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\"\n>\n <option\n value=\"undefined\"\n [textContent]=\"placeholder\"\n *ngIf=\"!isIosPlatform() || !!placeholder\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </ng-container>\n</select>\n" }]
|
|
2431
|
+
}], function () { return [{ type: i0__namespace.Injector }, { type: i1$1__namespace.App }]; }, { selectEl: [{
|
|
2407
2432
|
type: i0.ViewChild,
|
|
2408
2433
|
args: ['select', { static: true, read: i0.ElementRef }]
|
|
2409
2434
|
}] });
|
|
@@ -3354,7 +3379,7 @@
|
|
|
3354
3379
|
// isSelectMultiple is set to true when for select widget, multiple option is enabled
|
|
3355
3380
|
// Checking inputEl focus - when form is represented as dialog and the first field is automatically in focus
|
|
3356
3381
|
const isInputElFocused = this.inputEl && this.inputEl.is(':focus');
|
|
3357
|
-
if (data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
3382
|
+
if (data.isSelect || data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
3358
3383
|
data.nativeEl.addClass('float-active');
|
|
3359
3384
|
if (!data.displayVal && isInputElFocused) {
|
|
3360
3385
|
this.inputEl.attr('placeholder', this.placeholder);
|
|
@@ -123,7 +123,7 @@ export class CaptionPositionDirective {
|
|
|
123
123
|
// isSelectMultiple is set to true when for select widget, multiple option is enabled
|
|
124
124
|
// Checking inputEl focus - when form is represented as dialog and the first field is automatically in focus
|
|
125
125
|
const isInputElFocused = this.inputEl && this.inputEl.is(':focus');
|
|
126
|
-
if (data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
126
|
+
if (data.isSelect || data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
127
127
|
data.nativeEl.addClass('float-active');
|
|
128
128
|
if (!data.displayVal && isInputElFocused) {
|
|
129
129
|
this.inputEl.attr('placeholder', this.placeholder);
|
|
@@ -166,4 +166,4 @@ CaptionPositionDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: Ca
|
|
|
166
166
|
selector: '[wmCaptionPosition]'
|
|
167
167
|
}]
|
|
168
168
|
}], function () { return [{ type: i0.Injector }, { type: i1.App }]; }, null); })();
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBTS9CLE1BQU0sT0FBTyx3QkFBd0I7SUFjakMsWUFBWSxHQUFhLEVBQUUsR0FBUTtRQUhuQyxrREFBa0Q7UUFDMUMsNkJBQXdCLEdBQWEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUd4SixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRU8sUUFBUTtRQUNaLElBQUksY0FBYyxDQUFDO1FBQ25CLHNHQUFzRztRQUN0RyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFB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RUFBRTtZQUNqQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQzs7Z0dBaExRLHdCQUF3QjsyRUFBeEIsd0JBQXdCO3VGQUF4Qix3QkFBd0I7Y0FIcEMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IF8sICQ7XG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t3bUNhcHRpb25Qb3NpdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIENhcHRpb25Qb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICAgcHJpdmF0ZSBpbnB1dEVsO1xuICAgIHByaXZhdGUgbmF0aXZlRWw7XG4gICAgcHJpdmF0ZSBjb21wb3NpdGVFbGU7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcbiAgICBwcml2YXRlIGxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcGxhY2Vob2xkZXI7XG4gICAgcHJpdmF0ZSBfYXR0ck9ic2VydmVyO1xuICAgIHByaXZhdGUgX2lzUGxhY2Vob2xkZXJCb3VuZDtcblxuICAgIC8vIHNraXAgZmxvYXRpbmcgY2FwdGlvbiBmb3IgdGhlIGJlbG93IGZvcm0gZmllbGRzXG4gICAgcHJpdmF0ZSBza2lwRmxvYXRQb3NpdGlvbldpZGdldHM6IHN0cmluZ1tdID0gWydyYWRpb3NldCcsICdjaGVja2JveHNldCcsICdyaWNodGV4dCcsICdzd2l0Y2gnLCAnY2hpcHMnLCAnY2hlY2tib3gnLCAnc2xpZGVyJywgJ3JhdGluZycsICd0b2dnbGUnLCAndXBsb2FkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBhcHA6IEFwcCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYgPSBpbmouZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25CbHVyQ2IoKSB7IC8vIG9uIGJsdXIsIHJlbW92ZSBhbmltYXRpb24gYW5kIHBsYWNlaG9sZGVyIGlmIHRoZXJlIGlzIG5vIHZhbHVlXG4gICAgICAgIGxldCBtb2JpbGVJbnB1dFZhbDtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBtb2JpbGUgZGF0ZSAvIHRpbWUgcGlja2VyIGNoZWNrIGZvciBpbnB1dCBlbGVtZW50J3MgdmFsdWUgd2hpY2ggaGFzICdtb2JpbGUtaW5wdXQnIGNsYXNzXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWwubGVuZ3RoID4gMSAmJiB0aGlzLmlucHV0RWwuaGFzQ2xhc3MoJ21vYmlsZS1pbnB1dCcpKSB7XG4gICAgICAgICAgICBfLmZvckVhY2godGhpcy5pbnB1dEVsLCAoZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoJChlbCkuaGFzQ2xhc3MoJ21vYmlsZS1pbnB1dCcpICYmIGVsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vYmlsZUlucHV0VmFsID0gZWwudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlucHV0RWwudmFsKCkgJiYgIW1vYmlsZUlucHV0VmFsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QucmVtb3ZlKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkZvY3VzQ2IoKSB7IC8vICBvbiBmb2N1cywgYWRkIGFuaW1hdGlvbiBjbGFzcyBhbmQgdGhlIHBsYWNlIGhvbGRlclxuICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuYWRkKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJywgdGhpcy5wbGFjZWhvbGRlcik7XG4gICAgfVxuXG4gICAgLy8gRm9yIHNlbGVjdCB3aWRnZXQsIGRpc3BsYXkgcGxhY2Vob2xkZXIgb25seSBvbiBmb2N1cyBlbHNlIHJlbW92ZSB0aGUgdGV4dCBvZiB0aGUgb3B0aW9uIHNlbGVjdGVkLlxuICAgIHByaXZhdGUgY2hlY2tGb3JTZWxlY3RQbGFjZWhvbGRlcigpIHtcbiAgICAgICAgaWYgKCQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSAmJiAhJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3QnKS5pcygnOmZvY3VzJykgJiZcbiAgICAgICAgICAgICEkKHRoaXMuaW5wdXRFbC5jbG9zZXN0KCdbd2lkZ2V0LWlkXScpKS5hdHRyKCdkYXRhdmFsdWUnKSkge1xuICAgICAgICAgICAgJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRWYWx1ZUFuaW1hdGlvbigpIHsgLy8gc2V0IGFuaW1hdGlvbiB3aGVuIGRlZmF1bHQgdmFsdWVzIGFyZSBwcmVzZW50XG4gICAgICAgIC8vIHJlbW92ZSBwbGFjZWhvbGRlciB3aGVuIHRoZSBpbnB1dCBlbCBoYXMgcGxhY2Vob2xkZXIgYW5kIHRoZSBwbGFjZWhvbGRlciBpcyBub3QgYm91bmQgdG8gYW55IHZhcmlhYmxlXG4gICAgICAgIGlmICghdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kICYmIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvIG5vdCBzaG93IHBsYWNlaG9sZGVyIGFzIHNlbGVjdGVkIGJ5IGRlZmF1bHRcbiAgICAgICAgdGhpcy5jaGVja0ZvclNlbGVjdFBsYWNlaG9sZGVyKCk7XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGF2YWx1ZSBhdHRyaWJ1dGUgaW4gY29tcG9zaXRlIGVsZW1lbnQgYW5kIGRlZmF1bHR2YWx1ZSBhdHRyaWJ1dGUgaW4gZm9ybSBmaWVsZCBlbGVtZW50XG4gICAgICAgIC8vIGNoZWNrIGZvciBkYXRhdmFsdWUuYmluZCBhdHRyaWJ1dGUgdG8gc2VlIHdoZXRoZXIgZGVmYXVsdCB2YWx1ZSBpcyBiaW5kZWQgdmlhIGV4cHJlc3Npb24gb3IgYSB2YXJpYWJsZVxuICAgICAgICAvLyBjaGVjayBmb3IgZGlzcGxheWZvcm1hdCBhdHRyaWJ1dGUsIGFzIGluIGZvcm0gZmllbGRzIHVzZXIgY2FuIHNldCBkaXNwbGF5IGZvcm1hdCB0byB0aGUgZmllbGRcbiAgICAgICAgLy8gY2hlY2sgZm9yIGZvcm1kYXRhL2JpbmRmb3JtZGF0YSBhdHRyaWJ1dGUgdG8gc2VlIGlmIGFueSBkZWZhdWx0IHZhbHVlIGlzIGJpbmRlZCB0byB0aGUgZm9ybVxuICAgICAgICAvLyBjaGVjayBmb3Igc2VsZWN0IHRhZyB3aXRoIG11bHRpcGxlIGF0dHJpYnV0ZSBlbmFibGVkXG5cbiAgICAgICAgaWYgKCh0aGlzLmlucHV0RWwudmFsKCkgJiYgIXRoaXMuaW5wdXRFbC5pcygnc2VsZWN0JykpIHx8ICQodGhpcy5pbnB1dEVsLmNsb3Nlc3QoJ1t3aWRnZXQtaWRdJykpLmF0dHIoJ2RhdGF2YWx1ZScpIHx8ICQodGhpcy5pbnB1dEVsLnBhcmVudCgnW3dpZGdldC1pZF0nKSkuYXR0cignZGF0YXZhbHVlLmJpbmQnKSB8fCB0aGlzLm5hdGl2ZUVsLmdldEF0dHJpYnV0ZSgnZGVmYXVsdHZhbHVlJylcbiAgICAgICAgICAgIHx8IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCdkaXNwbGF5Zm9ybWF0JykgfHwgJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpIHx8ICQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0JykuYXR0cignbXVsdGlwbGUnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmFkZCgnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZpbmcgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGNoYW5nZSBvbiBET00gaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wQ2hhbmdlSGFuZGxlciBmblxuICAgICAqIEZvciBjb21wb3NpdGUgd2lkZ2V0cyBwcm9wZXJ0eWNoYW5nZWhhbmRsZXIgZnVuY3Rpb24gaXMgaW52b2tlZCBhdCBpbmRlcGVuZGVudCB3aWRnZXRzIHdoZXJlIGFzIHRoZSBkaXJlY3RpdmUgaXMgYXQgY29tcG9zaXRlIGxldmVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBvYnNlcnZlRm9yUGxhY2Vob2xkZXJBdHRyQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xuICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdwbGFjZWhvbGRlcicgJiYgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJykgJiYgIXRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5jb250YWlucygnZmxvYXQtYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiBmYWxzZSwgY2hhcmFjdGVyRGF0YTogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5fYXR0ck9ic2VydmVyLm9ic2VydmUodGhpcy5pbnB1dEVsWzBdLCBjb25maWcpO1xuICAgIH1cblxuICAgIC8vIHdoZW4gYSBmb3JtIGlzIHJpZ2h0IGFsaWduZWQgYW5kIGhhdmUgaW5wdXQtZ3JvdXAtYnRuJ3MgbGlrZSBkYXRlIHBpY2tlciwgdGltZSBwaWNrZXIgZXRjLiBhZGp1c3QgdGhlIGNzcyB0byBub3Qgb3ZlcmxhcCB0aGUgbGFiZWwgb24gdGhlIGljb25cbiAgICBwcml2YXRlIGNoZWNrRm9yUmlnaHRBbGlnbmVkRm9ybSgpIHtcbiAgICAgICAgY29uc3QgJGNvbXBvc2l0ZUVsZSA9ICQodGhpcy5jb21wb3NpdGVFbGUpO1xuICAgICAgICBpZiAoJGNvbXBvc2l0ZUVsZS5jbG9zZXN0KCcuYWxpZ24tcmlnaHQnKS5sZW5ndGggJiYgJGNvbXBvc2l0ZUVsZS5maW5kKCcuaW5wdXQtZ3JvdXAtYnRuJykubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCAkbGFiZWwgPSAkY29tcG9zaXRlRWxlLmZpbmQoJ2xhYmVsJyk7XG4gICAgICAgICAgICBpZiAoJGNvbXBvc2l0ZUVsZS5maW5kKCdbd21kYXRldGltZV0nKS5sZW5ndGgpIHsgLy8gZm9yIGRhdGV0aW1lIHBpY2tlciwgYXMgdGhlcmUgd2lsbCBiZSAyIGljb25zIGNzcyBpcyBkaWZmZXJlbnRcbiAgICAgICAgICAgICAgICAkbGFiZWwuYWRkQ2xhc3MoJ2lucHV0LWdycC1kdC1pY29uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICRsYWJlbC5hZGRDbGFzcygnaW5wdXQtZ3JwLWljb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUgPSB0aGlzLm5hdGl2ZUVsO1xuICAgICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLm5hdGl2ZUVsLndpZGdldDtcbiAgICAgICAgbGV0IGNhcHRpb25Qb3NpdGlvbjogc3RyaW5nID0gd2lkZ2V0LiRhdHRycy5nZXQoJ2NhcHRpb25wb3NpdGlvbicpO1xuICAgICAgICBpZiAod2lkZ2V0LmZvcm0pIHtcbiAgICAgICAgICAgIGNhcHRpb25Qb3NpdGlvbiA9IHdpZGdldC5mb3JtLiRhdHRycy5nZXQoJ2NhcHRpb25wb3NpdGlvbicpO1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUgPSB0aGlzLm5hdGl2ZUVsLnF1ZXJ5U2VsZWN0b3IoJy5hcHAtY29tcG9zaXRlLXdpZGdldCcpO1xuICAgICAgICAgICAgdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kID0gdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyLmJpbmQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FwdGlvblBvc2l0aW9uID09PSAnZmxvYXRpbmcnKSB7XG4gICAgICAgICAgICBpZiAod2lkZ2V0LmZvcm0pIHsgLy8gZm9yIGZvcm0tZmllbGRzIHJlbW92ZSBjYXB0aW9uLWZsb2F0aW5nIGFuZCByZXBsYWNlIGl0IHdpdGggY2FwdGlvbi1mbG9hdCBvciBjYXB0aW9uLXRvcFxuICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFR5cGU6IHN0cmluZyA9IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCd3aWRnZXR0eXBlJyk7IC8vIGZldGNoZXMgdGhlIGZvcm0gZmllbGQgdHlwZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNraXBGbG9hdFBvc2l0aW9uV2lkZ2V0cy5pbmRleE9mKHdpZGdldFR5cGUpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LnJlbW92ZSgnY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuYWRkKCdjYXB0aW9uLXRvcCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9yUmlnaHRBbGlnbmVkRm9ybSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsID0gJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQgPSB0aGlzLmlucHV0RWwuY2xvc2VzdCgnW3dpZGdldC1pZF0nKS5hdHRyKCdwbGFjZWhvbGRlci5iaW5kJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjYWxsIHRoZSBiZWxvdyBmdW5jdGlvbiB0byBhcHBseSBmbG9hdC1hY3RpdmUgY2xhc3Mgd2hlbiB0aGVyZSBhcmUgZGVmYXVsdCB2YWx1ZXMgdG8gdGhlIGZpZWxkc1xuICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLnNldERlZmF1bHRWYWx1ZUFuaW1hdGlvbi5iaW5kKHRoaXMpLCAwKTtcblxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLmZvY3VzKHRoaXMub25Gb2N1c0NiLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLmJsdXIodGhpcy5vbkJsdXJDYi5iaW5kKHRoaXMpKTtcblxuICAgICAgICAgICAgLy8gb2JzZXJ2ZSBmb3IgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGNoYW5nZSB3aGVuIHBsYWNlaG9sZGVyIGlzIGJvdW5kIHZpYSBkYiB2YXJpYWJsZSBvciBhbiBleHByZXNzaW9uXG4gICAgICAgICAgICBpZiAodGhpcy5faXNQbGFjZWhvbGRlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlRm9yUGxhY2Vob2xkZXJBdHRyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjYXB0aW9uUG9zaXRpb25BbmltYXRlIGlzIG9ubHkgbm90aWZpZWQgZm9yIGRhdGUtdGltZSwgdGltZSBhbmQgc2VhcmNoIHdpZGdldHMgYXMgaW5wdXQgZWwgaXMgbm90IHVwZGF0ZWQgd2l0aCB2YWx1ZSBvbiBzZWxlY3Rpb24gb2YgZHJvcGRvd24vcG9wdXBzXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmFwcC5zdWJzY3JpYmUoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgLy8gZGlzcGxheVZhbCBpcyB0cnVlIHdoZW4gdGhlcmUgaXMgYSB2YWx1ZSBlbnRlcmVkIGluIHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBmb3JtIGZpZWxkcywgd2hlbiB0aGUgZmllbGQgaXMgaW4gZm9jdXMsIGlzRm9jdXNlZCB3aWxsIGJlIHNldCBhcyB0cnVlXG4gICAgICAgICAgICAvLyBpc1NlbGVjdE11bHRpcGxlIGlzIHNldCB0byB0cnVlIHdoZW4gZm9yIHNlbGVjdCB3aWRnZXQsIG11bHRpcGxlIG9wdGlvbiBpcyBlbmFibGVkXG4gICAgICAgICAgICAvLyBDaGVja2luZyBpbnB1dEVsIGZvY3VzIC0gd2hlbiBmb3JtIGlzIHJlcHJlc2VudGVkIGFzIGRpYWxvZyBhbmQgdGhlIGZpcnN0IGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgaW4gZm9jdXNcbiAgICAgICAgICAgIGNvbnN0IGlzSW5wdXRFbEZvY3VzZWQgPSB0aGlzLmlucHV0RWwgJiYgdGhpcy5pbnB1dEVsLmlzKCc6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChkYXRhLmRpc3BsYXlWYWwgfHwgZGF0YS5pc0ZvY3VzZWQgfHwgZGF0YS5pc1NlbGVjdE11bHRpcGxlIHx8IGlzSW5wdXRFbEZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm5hdGl2ZUVsLmFkZENsYXNzKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuZGlzcGxheVZhbCAmJiBpc0lucHV0RWxGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicsIHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YS5uYXRpdmVFbC5yZW1vdmVDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHBsYWNlaG9sZGVyIG9uIHJlbW92aW5nIGZsb2F0LWFjdGl2ZSwgaWYgbm90IHRoZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXIgYXJlIGNvbGxpZGVkXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlIHBsYWNlaG9sZGVyIGlzIHJlbW92ZWQgYXNzaWduIGl0IHRvIHRoZSBwbGFjZWhvbGRlciB2YXJpYWJsZVxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBwbGFjZWhvbGRlciBpbiBpbnB1dGVsIGFuZCBzZWxlY3RlbFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0RWwgPSB0aGlzLmlucHV0RWwuZmluZCgnb3B0aW9uOmZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKSB8fCBzZWxlY3RFbC50ZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RFbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RFbC50ZXh0KCcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fYXR0ck9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBTS9CLE1BQU0sT0FBTyx3QkFBd0I7SUFjakMsWUFBWSxHQUFhLEVBQUUsR0FBUTtRQUhuQyxrREFBa0Q7UUFDMUMsNkJBQXdCLEdBQWEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUd4SixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRU8sUUFBUTtRQUNaLElBQUksY0FBYyxDQUFDO1FBQ25CLHNHQUFzRztRQUN0RyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFB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QUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ2pDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkM7SUFDTCxDQUFDOztnR0FoTFEsd0JBQXdCOzJFQUF4Qix3QkFBd0I7dUZBQXhCLHdCQUF3QjtjQUhwQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICdAd20vY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgXywgJDtcbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3dtQ2FwdGlvblBvc2l0aW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2FwdGlvblBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgICBwcml2YXRlIGlucHV0RWw7XG4gICAgcHJpdmF0ZSBuYXRpdmVFbDtcbiAgICBwcml2YXRlIGNvbXBvc2l0ZUVsZTtcbiAgICBwcml2YXRlIGFwcDogQXBwO1xuICAgIHByaXZhdGUgbGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBwbGFjZWhvbGRlcjtcbiAgICBwcml2YXRlIF9hdHRyT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSBfaXNQbGFjZWhvbGRlckJvdW5kO1xuXG4gICAgLy8gc2tpcCBmbG9hdGluZyBjYXB0aW9uIGZvciB0aGUgYmVsb3cgZm9ybSBmaWVsZHNcbiAgICBwcml2YXRlIHNraXBGbG9hdFBvc2l0aW9uV2lkZ2V0czogc3RyaW5nW10gPSBbJ3JhZGlvc2V0JywgJ2NoZWNrYm94c2V0JywgJ3JpY2h0ZXh0JywgJ3N3aXRjaCcsICdjaGlwcycsICdjaGVja2JveCcsICdzbGlkZXInLCAncmF0aW5nJywgJ3RvZ2dsZScsICd1cGxvYWQnXTtcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIGFwcDogQXBwKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZiA9IGluai5nZXQoRWxlbWVudFJlZik7XG4gICAgICAgIHRoaXMubmF0aXZlRWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJsdXJDYigpIHsgLy8gb24gYmx1ciwgcmVtb3ZlIGFuaW1hdGlvbiBhbmQgcGxhY2Vob2xkZXIgaWYgdGhlcmUgaXMgbm8gdmFsdWVcbiAgICAgICAgbGV0IG1vYmlsZUlucHV0VmFsO1xuICAgICAgICAvLyBJbiBjYXNlIG9mIG1vYmlsZSBkYXRlIC8gdGltZSBwaWNrZXIgY2hlY2sgZm9yIGlucHV0IGVsZW1lbnQncyB2YWx1ZSB3aGljaCBoYXMgJ21vYmlsZS1pbnB1dCcgY2xhc3NcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRFbC5sZW5ndGggPiAxICYmIHRoaXMuaW5wdXRFbC5oYXNDbGFzcygnbW9iaWxlLWlucHV0JykpIHtcbiAgICAgICAgICAgIF8uZm9yRWFjaCh0aGlzLmlucHV0RWwsIChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgkKGVsKS5oYXNDbGFzcygnbW9iaWxlLWlucHV0JykgJiYgZWwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9iaWxlSW5wdXRWYWwgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaW5wdXRFbC52YWwoKSAmJiAhbW9iaWxlSW5wdXRWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5yZW1vdmUoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLnJlbW92ZUF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRm9jdXNDYigpIHsgLy8gIG9uIGZvY3VzLCBhZGQgYW5pbWF0aW9uIGNsYXNzIGFuZCB0aGUgcGxhY2UgaG9sZGVyXG4gICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5hZGQoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInLCB0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICB9XG5cbiAgICAvLyBGb3Igc2VsZWN0IHdpZGdldCwgZGlzcGxheSBwbGFjZWhvbGRlciBvbmx5IG9uIGZvY3VzIGVsc2UgcmVtb3ZlIHRoZSB0ZXh0IG9mIHRoZSBvcHRpb24gc2VsZWN0ZWQuXG4gICAgcHJpdmF0ZSBjaGVja0ZvclNlbGVjdFBsYWNlaG9sZGVyKCkge1xuICAgICAgICBpZiAoJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpICYmICEkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCcpLmlzKCc6Zm9jdXMnKSAmJlxuICAgICAgICAgICAgISQodGhpcy5pbnB1dEVsLmNsb3Nlc3QoJ1t3aWRnZXQtaWRdJykpLmF0dHIoJ2RhdGF2YWx1ZScpKSB7XG4gICAgICAgICAgICAkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFZhbHVlQW5pbWF0aW9uKCkgeyAvLyBzZXQgYW5pbWF0aW9uIHdoZW4gZGVmYXVsdCB2YWx1ZXMgYXJlIHByZXNlbnRcbiAgICAgICAgLy8gcmVtb3ZlIHBsYWNlaG9sZGVyIHdoZW4gdGhlIGlucHV0IGVsIGhhcyBwbGFjZWhvbGRlciBhbmQgdGhlIHBsYWNlaG9sZGVyIGlzIG5vdCBib3VuZCB0byBhbnkgdmFyaWFibGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQgJiYgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG8gbm90IHNob3cgcGxhY2Vob2xkZXIgYXMgc2VsZWN0ZWQgYnkgZGVmYXVsdFxuICAgICAgICB0aGlzLmNoZWNrRm9yU2VsZWN0UGxhY2Vob2xkZXIoKTtcblxuICAgICAgICAvLyBjaGVjayBmb3IgZGF0YXZhbHVlIGF0dHJpYnV0ZSBpbiBjb21wb3NpdGUgZWxlbWVudCBhbmQgZGVmYXVsdHZhbHVlIGF0dHJpYnV0ZSBpbiBmb3JtIGZpZWxkIGVsZW1lbnRcbiAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGF2YWx1ZS5iaW5kIGF0dHJpYnV0ZSB0byBzZWUgd2hldGhlciBkZWZhdWx0IHZhbHVlIGlzIGJpbmRlZCB2aWEgZXhwcmVzc2lvbiBvciBhIHZhcmlhYmxlXG4gICAgICAgIC8vIGNoZWNrIGZvciBkaXNwbGF5Zm9ybWF0IGF0dHJpYnV0ZSwgYXMgaW4gZm9ybSBmaWVsZHMgdXNlciBjYW4gc2V0IGRpc3BsYXkgZm9ybWF0IHRvIHRoZSBmaWVsZFxuICAgICAgICAvLyBjaGVjayBmb3IgZm9ybWRhdGEvYmluZGZvcm1kYXRhIGF0dHJpYnV0ZSB0byBzZWUgaWYgYW55IGRlZmF1bHQgdmFsdWUgaXMgYmluZGVkIHRvIHRoZSBmb3JtXG4gICAgICAgIC8vIGNoZWNrIGZvciBzZWxlY3QgdGFnIHdpdGggbXVsdGlwbGUgYXR0cmlidXRlIGVuYWJsZWRcblxuICAgICAgICBpZiAoKHRoaXMuaW5wdXRFbC52YWwoKSAmJiAhdGhpcy5pbnB1dEVsLmlzKCdzZWxlY3QnKSkgfHwgJCh0aGlzLmlucHV0RWwuY2xvc2VzdCgnW3dpZGdldC1pZF0nKSkuYXR0cignZGF0YXZhbHVlJykgfHwgJCh0aGlzLmlucHV0RWwucGFyZW50KCdbd2lkZ2V0LWlkXScpKS5hdHRyKCdkYXRhdmFsdWUuYmluZCcpIHx8IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCdkZWZhdWx0dmFsdWUnKVxuICAgICAgICAgICAgfHwgdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXlmb3JtYXQnKSB8fCAkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgfHwgJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3QnKS5hdHRyKCdtdWx0aXBsZScpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuYWRkKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9ic2VydmluZyBwbGFjZWhvbGRlciBhdHRyaWJ1dGUgY2hhbmdlIG9uIERPTSBpbnN0ZWFkIG9mIGhhdmluZyBhIHByb3BDaGFuZ2VIYW5kbGVyIGZuXG4gICAgICogRm9yIGNvbXBvc2l0ZSB3aWRnZXRzIHByb3BlcnR5Y2hhbmdlaGFuZGxlciBmdW5jdGlvbiBpcyBpbnZva2VkIGF0IGluZGVwZW5kZW50IHdpZGdldHMgd2hlcmUgYXMgdGhlIGRpcmVjdGl2ZSBpcyBhdCBjb21wb3NpdGUgbGV2ZWxcbiAgICAgKi9cbiAgICBwcml2YXRlIG9ic2VydmVGb3JQbGFjZWhvbGRlckF0dHJDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuX2F0dHJPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XG4gICAgICAgICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ3BsYWNlaG9sZGVyJyAmJiB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKSAmJiAhdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdmbG9hdC1hY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29uZmlnID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IGZhbHNlLCBjaGFyYWN0ZXJEYXRhOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmlucHV0RWxbMF0sIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gd2hlbiBhIGZvcm0gaXMgcmlnaHQgYWxpZ25lZCBhbmQgaGF2ZSBpbnB1dC1ncm91cC1idG4ncyBsaWtlIGRhdGUgcGlja2VyLCB0aW1lIHBpY2tlciBldGMuIGFkanVzdCB0aGUgY3NzIHRvIG5vdCBvdmVybGFwIHRoZSBsYWJlbCBvbiB0aGUgaWNvblxuICAgIHByaXZhdGUgY2hlY2tGb3JSaWdodEFsaWduZWRGb3JtKCkge1xuICAgICAgICBjb25zdCAkY29tcG9zaXRlRWxlID0gJCh0aGlzLmNvbXBvc2l0ZUVsZSk7XG4gICAgICAgIGlmICgkY29tcG9zaXRlRWxlLmNsb3Nlc3QoJy5hbGlnbi1yaWdodCcpLmxlbmd0aCAmJiAkY29tcG9zaXRlRWxlLmZpbmQoJy5pbnB1dC1ncm91cC1idG4nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0ICRsYWJlbCA9ICRjb21wb3NpdGVFbGUuZmluZCgnbGFiZWwnKTtcbiAgICAgICAgICAgIGlmICgkY29tcG9zaXRlRWxlLmZpbmQoJ1t3bWRhdGV0aW1lXScpLmxlbmd0aCkgeyAvLyBmb3IgZGF0ZXRpbWUgcGlja2VyLCBhcyB0aGVyZSB3aWxsIGJlIDIgaWNvbnMgY3NzIGlzIGRpZmZlcmVudFxuICAgICAgICAgICAgICAgICRsYWJlbC5hZGRDbGFzcygnaW5wdXQtZ3JwLWR0LWljb24nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJGxhYmVsLmFkZENsYXNzKCdpbnB1dC1ncnAtaWNvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZSA9IHRoaXMubmF0aXZlRWw7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IHRoaXMubmF0aXZlRWwud2lkZ2V0O1xuICAgICAgICBsZXQgY2FwdGlvblBvc2l0aW9uOiBzdHJpbmcgPSB3aWRnZXQuJGF0dHJzLmdldCgnY2FwdGlvbnBvc2l0aW9uJyk7XG4gICAgICAgIGlmICh3aWRnZXQuZm9ybSkge1xuICAgICAgICAgICAgY2FwdGlvblBvc2l0aW9uID0gd2lkZ2V0LmZvcm0uJGF0dHJzLmdldCgnY2FwdGlvbnBvc2l0aW9uJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZSA9IHRoaXMubmF0aXZlRWwucXVlcnlTZWxlY3RvcignLmFwcC1jb21wb3NpdGUtd2lkZ2V0Jyk7XG4gICAgICAgICAgICB0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQgPSB0aGlzLm5hdGl2ZUVsLmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXIuYmluZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXB0aW9uUG9zaXRpb24gPT09ICdmbG9hdGluZycpIHtcbiAgICAgICAgICAgIGlmICh3aWRnZXQuZm9ybSkgeyAvLyBmb3IgZm9ybS1maWVsZHMgcmVtb3ZlIGNhcHRpb24tZmxvYXRpbmcgYW5kIHJlcGxhY2UgaXQgd2l0aCBjYXB0aW9uLWZsb2F0IG9yIGNhcHRpb24tdG9wXG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0VHlwZTogc3RyaW5nID0gdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ3dpZGdldHR5cGUnKTsgLy8gZmV0Y2hlcyB0aGUgZm9ybSBmaWVsZCB0eXBlXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2tpcEZsb2F0UG9zaXRpb25XaWRnZXRzLmluZGV4T2Yod2lkZ2V0VHlwZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QucmVtb3ZlKCdjYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5hZGQoJ2NhcHRpb24tdG9wJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JSaWdodEFsaWduZWRGb3JtKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwgPSAkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzUGxhY2Vob2xkZXJCb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzUGxhY2Vob2xkZXJCb3VuZCA9IHRoaXMuaW5wdXRFbC5jbG9zZXN0KCdbd2lkZ2V0LWlkXScpLmF0dHIoJ3BsYWNlaG9sZGVyLmJpbmQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNhbGwgdGhlIGJlbG93IGZ1bmN0aW9uIHRvIGFwcGx5IGZsb2F0LWFjdGl2ZSBjbGFzcyB3aGVuIHRoZXJlIGFyZSBkZWZhdWx0IHZhbHVlcyB0byB0aGUgZmllbGRzXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuc2V0RGVmYXVsdFZhbHVlQW5pbWF0aW9uLmJpbmQodGhpcyksIDApO1xuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWwuZm9jdXModGhpcy5vbkZvY3VzQ2IuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwuYmx1cih0aGlzLm9uQmx1ckNiLmJpbmQodGhpcykpO1xuXG4gICAgICAgICAgICAvLyBvYnNlcnZlIGZvciBwbGFjZWhvbGRlciBhdHRyaWJ1dGUgY2hhbmdlIHdoZW4gcGxhY2Vob2xkZXIgaXMgYm91bmQgdmlhIGRiIHZhcmlhYmxlIG9yIGFuIGV4cHJlc3Npb25cbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVGb3JQbGFjZWhvbGRlckF0dHJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNhcHRpb25Qb3NpdGlvbkFuaW1hdGUgaXMgb25seSBub3RpZmllZCBmb3IgZGF0ZS10aW1lLCB0aW1lIGFuZCBzZWFyY2ggd2lkZ2V0cyBhcyBpbnB1dCBlbCBpcyBub3QgdXBkYXRlZCB3aXRoIHZhbHVlIG9uIHNlbGVjdGlvbiBvZiBkcm9wZG93bi9wb3B1cHNcbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sYWJlbEFuaW1hdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwLnN1YnNjcmliZSgnY2FwdGlvblBvc2l0aW9uQW5pbWF0ZScsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAvLyBkaXNwbGF5VmFsIGlzIHRydWUgd2hlbiB0aGVyZSBpcyBhIHZhbHVlIGVudGVyZWQgaW4gdGhlIGlucHV0IGZpZWxkXG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGZvcm0gZmllbGRzLCB3aGVuIHRoZSBmaWVsZCBpcyBpbiBmb2N1cywgaXNGb2N1c2VkIHdpbGwgYmUgc2V0IGFzIHRydWVcbiAgICAgICAgICAgIC8vIGlzU2VsZWN0TXVsdGlwbGUgaXMgc2V0IHRvIHRydWUgd2hlbiBmb3Igc2VsZWN0IHdpZGdldCwgbXVsdGlwbGUgb3B0aW9uIGlzIGVuYWJsZWRcbiAgICAgICAgICAgIC8vIENoZWNraW5nIGlucHV0RWwgZm9jdXMgLSB3aGVuIGZvcm0gaXMgcmVwcmVzZW50ZWQgYXMgZGlhbG9nIGFuZCB0aGUgZmlyc3QgZmllbGQgaXMgYXV0b21hdGljYWxseSBpbiBmb2N1c1xuICAgICAgICAgICAgY29uc3QgaXNJbnB1dEVsRm9jdXNlZCA9IHRoaXMuaW5wdXRFbCAmJiB0aGlzLmlucHV0RWwuaXMoJzpmb2N1cycpO1xuICAgICAgICAgICAgaWYgKGRhdGEuaXNTZWxlY3QgfHwgZGF0YS5kaXNwbGF5VmFsIHx8IGRhdGEuaXNGb2N1c2VkIHx8IGRhdGEuaXNTZWxlY3RNdWx0aXBsZSB8fCBpc0lucHV0RWxGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5uYXRpdmVFbC5hZGRDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmRpc3BsYXlWYWwgJiYgaXNJbnB1dEVsRm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInLCB0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEubmF0aXZlRWwucmVtb3ZlQ2xhc3MoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBwbGFjZWhvbGRlciBvbiByZW1vdmluZyBmbG9hdC1hY3RpdmUsIGlmIG5vdCB0aGUgbGFiZWwgYW5kIHBsYWNlaG9sZGVyIGFyZSBjb2xsaWRlZFxuICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBwbGFjZWhvbGRlciBpcyByZW1vdmVkIGFzc2lnbiBpdCB0byB0aGUgcGxhY2Vob2xkZXIgdmFyaWFibGVcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgcGxhY2Vob2xkZXIgaW4gaW5wdXRlbCBhbmQgc2VsZWN0ZWxcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdEVsID0gdGhpcy5pbnB1dEVsLmZpbmQoJ29wdGlvbjpmaXJzdCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJykgfHwgc2VsZWN0RWwudGV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0RWwubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0RWwudGV4dCgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2F0dHJPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5fYXR0ck9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,53 +1,60 @@
|
|
|
1
1
|
import { Component, ElementRef, Injector, ViewChild } from '@angular/core';
|
|
2
2
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
|
|
3
|
-
import { DataSource, removeAttr, setAttr } from '@wm/core';
|
|
3
|
+
import { DataSource, removeAttr, setAttr, App, isIos } from '@wm/core';
|
|
4
4
|
import { provideAsWidgetRef, provideAs, styler } from '@wm/components/base';
|
|
5
5
|
import { DatasetAwareFormComponent } from '../dataset-aware-form.component';
|
|
6
6
|
import { registerProps } from './select.props';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@
|
|
9
|
-
import * as i2 from "@angular/
|
|
10
|
-
import * as i3 from "@
|
|
8
|
+
import * as i1 from "@wm/core";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
import * as i3 from "@angular/forms";
|
|
11
|
+
import * as i4 from "@wm/components/base";
|
|
11
12
|
const _c0 = ["select"];
|
|
13
|
+
function SelectComponent_option_2_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
i0.ɵɵelement(0, "option", 4);
|
|
15
|
+
} if (rf & 2) {
|
|
16
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
17
|
+
i0.ɵɵproperty("textContent", ctx_r1.placeholder)("hidden", !ctx_r1.placeholder);
|
|
18
|
+
} }
|
|
12
19
|
function SelectComponent_ng_container_3_optgroup_1_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
-
i0.ɵɵelement(0, "option",
|
|
20
|
+
i0.ɵɵelement(0, "option", 8);
|
|
14
21
|
} if (rf & 2) {
|
|
15
|
-
const
|
|
16
|
-
i0.ɵɵproperty("value",
|
|
22
|
+
const item_r7 = ctx.$implicit;
|
|
23
|
+
i0.ɵɵproperty("value", item_r7.key)("selected", item_r7.selected)("textContent", item_r7.label);
|
|
17
24
|
} }
|
|
18
25
|
function SelectComponent_ng_container_3_optgroup_1_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
-
i0.ɵɵelementStart(0, "optgroup",
|
|
20
|
-
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option",
|
|
26
|
+
i0.ɵɵelementStart(0, "optgroup", 6);
|
|
27
|
+
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option", 7);
|
|
21
28
|
i0.ɵɵelementEnd();
|
|
22
29
|
} if (rf & 2) {
|
|
23
|
-
const
|
|
24
|
-
i0.ɵɵproperty("label",
|
|
30
|
+
const groupObj_r5 = ctx.$implicit;
|
|
31
|
+
i0.ɵɵproperty("label", groupObj_r5.key);
|
|
25
32
|
i0.ɵɵadvance(1);
|
|
26
|
-
i0.ɵɵproperty("ngForOf",
|
|
33
|
+
i0.ɵɵproperty("ngForOf", groupObj_r5.data);
|
|
27
34
|
} }
|
|
28
35
|
function SelectComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
29
36
|
i0.ɵɵelementContainerStart(0);
|
|
30
|
-
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup",
|
|
37
|
+
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup", 5);
|
|
31
38
|
i0.ɵɵelementContainerEnd();
|
|
32
39
|
} if (rf & 2) {
|
|
33
|
-
const
|
|
40
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
34
41
|
i0.ɵɵadvance(1);
|
|
35
|
-
i0.ɵɵproperty("ngForOf",
|
|
42
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.groupedData);
|
|
36
43
|
} }
|
|
37
44
|
function SelectComponent_ng_container_4_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
-
i0.ɵɵelement(0, "option",
|
|
45
|
+
i0.ɵɵelement(0, "option", 8);
|
|
39
46
|
} if (rf & 2) {
|
|
40
|
-
const
|
|
41
|
-
i0.ɵɵproperty("value",
|
|
47
|
+
const item_r9 = ctx.$implicit;
|
|
48
|
+
i0.ɵɵproperty("value", item_r9.key)("selected", item_r9.selected)("textContent", item_r9.label);
|
|
42
49
|
} }
|
|
43
50
|
function SelectComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
44
51
|
i0.ɵɵelementContainerStart(0);
|
|
45
|
-
i0.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option",
|
|
52
|
+
i0.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option", 7);
|
|
46
53
|
i0.ɵɵelementContainerEnd();
|
|
47
54
|
} if (rf & 2) {
|
|
48
|
-
const
|
|
55
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
49
56
|
i0.ɵɵadvance(1);
|
|
50
|
-
i0.ɵɵproperty("ngForOf",
|
|
57
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.datasetItems);
|
|
51
58
|
} }
|
|
52
59
|
const _c1 = function (a1) { return ["app-select form-control", a1]; };
|
|
53
60
|
const WIDGET_CONFIG = { widgetType: 'wm-select', hostClass: 'app-select-wrapper' };
|
|
@@ -57,13 +64,17 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
57
64
|
this.datavalue = ds.execute(DataSource.Operation.GET_DEFAULT_LOCALE);
|
|
58
65
|
}
|
|
59
66
|
}
|
|
60
|
-
constructor(inj) {
|
|
67
|
+
constructor(inj, app) {
|
|
61
68
|
super(inj, WIDGET_CONFIG);
|
|
69
|
+
this.app = app;
|
|
62
70
|
this.acceptsArray = true;
|
|
63
71
|
}
|
|
64
72
|
ngAfterViewInit() {
|
|
65
73
|
super.ngAfterViewInit();
|
|
66
74
|
styler(this.selectEl.nativeElement, this);
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
this.checkForFloatingLabel(null);
|
|
77
|
+
}, 10);
|
|
67
78
|
}
|
|
68
79
|
// Change event is registered from the template, Prevent the framework from registering one more event
|
|
69
80
|
handleEvent(node, eventName, eventCallback, locals) {
|
|
@@ -110,6 +121,9 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
110
121
|
}
|
|
111
122
|
super.onPropertyChange(key, nv, ov);
|
|
112
123
|
}
|
|
124
|
+
isIosPlatform() {
|
|
125
|
+
return isIos();
|
|
126
|
+
}
|
|
113
127
|
/**
|
|
114
128
|
* When caption floating is enabled and placeholder is given, do not show placeholder until user focuses on the field
|
|
115
129
|
* When focused add the placeholder to the option which is selected
|
|
@@ -119,18 +133,27 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
119
133
|
checkForFloatingLabel($event) {
|
|
120
134
|
const captionEl = $(this.selectEl.nativeElement).closest('.app-composite-widget.caption-floating');
|
|
121
135
|
if (captionEl.length > 0) {
|
|
122
|
-
if ($event.type === 'focus' && (
|
|
123
|
-
|
|
136
|
+
if ((!$event || $event.type === 'focus') && (($(this.selectEl).find('select option:selected').text() === '' && (this.placeholder || this.datavalue || this.isIosPlatform())))) {
|
|
137
|
+
if (!$event && (this.placeholder || this.datavalue || this.isIosPlatform())) {
|
|
138
|
+
this.app.notify('captionPositionAnimate', { isSelect: true, nativeEl: captionEl });
|
|
139
|
+
}
|
|
140
|
+
if (this.placeholder) {
|
|
141
|
+
$(this.selectEl.nativeElement).find('option:first').text(this.placeholder);
|
|
142
|
+
}
|
|
124
143
|
}
|
|
125
144
|
else if (!this.datavalue) {
|
|
126
|
-
|
|
127
|
-
|
|
145
|
+
if (!this.placeholder) {
|
|
146
|
+
// $(this.selectEl.nativeElement).find('option:first').text('');
|
|
147
|
+
if (!this.isIosPlatform()) {
|
|
148
|
+
captionEl.removeClass('float-active');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
128
151
|
}
|
|
129
152
|
}
|
|
130
153
|
}
|
|
131
154
|
}
|
|
132
155
|
SelectComponent.initializeProps = registerProps();
|
|
133
|
-
SelectComponent.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
|
|
156
|
+
SelectComponent.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.App)); };
|
|
134
157
|
SelectComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectComponent, selectors: [["wm-select"]], viewQuery: function SelectComponent_Query(rf, ctx) { if (rf & 1) {
|
|
135
158
|
i0.ɵɵviewQuery(_c0, 7, ElementRef);
|
|
136
159
|
} if (rf & 2) {
|
|
@@ -140,32 +163,32 @@ SelectComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectCompo
|
|
|
140
163
|
provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
|
|
141
164
|
provideAs(SelectComponent, NG_VALIDATORS, true),
|
|
142
165
|
provideAsWidgetRef(SelectComponent)
|
|
143
|
-
]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars:
|
|
166
|
+
]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 15, consts: [["role", "listbox", "aria-haspopup", "true", "aria-expanded", "false", "focus-target", "", 3, "ngClass", "disabled", "required", "tabindex", "ngModel", "multiple", "autofocus", "ngModelChange", "change", "focus", "blur"], ["select", ""], ["value", "undefined", 3, "textContent", "hidden", 4, "ngIf"], [4, "ngIf"], ["value", "undefined", 3, "textContent", "hidden"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], ["role", "option", 3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], ["role", "option", 3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
|
|
144
167
|
i0.ɵɵelementStart(0, "select", 0, 1);
|
|
145
168
|
i0.ɵɵlistener("ngModelChange", function SelectComponent_Template_select_ngModelChange_0_listener($event) { return ctx.modelByKey = $event; })("change", function SelectComponent_Template_select_change_0_listener($event) { return ctx.onSelectValueChange($event); })("focus", function SelectComponent_Template_select_focus_0_listener($event) { return ctx.checkForFloatingLabel($event); })("blur", function SelectComponent_Template_select_blur_0_listener($event) { ctx.invokeOnTouched($event); return ctx.checkForFloatingLabel($event); });
|
|
146
|
-
i0.ɵɵ
|
|
169
|
+
i0.ɵɵtemplate(2, SelectComponent_option_2_Template, 1, 2, "option", 2);
|
|
147
170
|
i0.ɵɵtemplate(3, SelectComponent_ng_container_3_Template, 2, 1, "ng-container", 3);
|
|
148
171
|
i0.ɵɵtemplate(4, SelectComponent_ng_container_4_Template, 2, 1, "ng-container", 3);
|
|
149
172
|
i0.ɵɵelementEnd();
|
|
150
173
|
} if (rf & 2) {
|
|
151
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(
|
|
174
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c1, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex)("ngModel", ctx.modelByKey)("multiple", ctx.multiple)("autofocus", ctx.autofocus);
|
|
152
175
|
i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.hint)("aria-multiselectable", ctx.multiple);
|
|
153
176
|
i0.ɵɵadvance(2);
|
|
154
|
-
i0.ɵɵproperty("
|
|
177
|
+
i0.ɵɵproperty("ngIf", !ctx.isIosPlatform() || !!ctx.placeholder);
|
|
155
178
|
i0.ɵɵadvance(1);
|
|
156
179
|
i0.ɵɵproperty("ngIf", ctx.groupby);
|
|
157
180
|
i0.ɵɵadvance(1);
|
|
158
181
|
i0.ɵɵproperty("ngIf", !ctx.groupby);
|
|
159
|
-
} }, dependencies: [
|
|
182
|
+
} }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.SelectMultipleControlValueAccessor, i3.NgControlStatus, i3.RequiredValidator, i3.NgModel, i4.TextContentDirective], encapsulation: 2 });
|
|
160
183
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SelectComponent, [{
|
|
161
184
|
type: Component,
|
|
162
185
|
args: [{ selector: 'wm-select', providers: [
|
|
163
186
|
provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
|
|
164
187
|
provideAs(SelectComponent, NG_VALIDATORS, true),
|
|
165
188
|
provideAsWidgetRef(SelectComponent)
|
|
166
|
-
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\"\n>\n <option
|
|
167
|
-
}], function () { return [{ type: i0.Injector }]; }, { selectEl: [{
|
|
189
|
+
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\"\n>\n <option\n value=\"undefined\"\n [textContent]=\"placeholder\"\n *ngIf=\"!isIosPlatform() || !!placeholder\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </ng-container>\n</select>\n" }]
|
|
190
|
+
}], function () { return [{ type: i0.Injector }, { type: i1.App }]; }, { selectEl: [{
|
|
168
191
|
type: ViewChild,
|
|
169
192
|
args: ['select', { static: true, read: ElementRef }]
|
|
170
193
|
}] }); })();
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7SUNpQm5DLDRCQUkyQjs7O0lBSHZCLG1DQUFrQiw4QkFBQSw4QkFBQTs7O0lBSDFCLG1DQUMyQjtJQUN2QixnR0FJMkI7SUFDL0IsaUJBQVc7OztJQU5QLHVDQUFzQjtJQUNHLGVBQWlCO0lBQWpCLDBDQUFpQjs7O0lBSGxELDZCQUE4QjtJQUMxQix5RkFPVztJQUNmLDBCQUFlOzs7SUFSb0IsZUFBYztJQUFkLDRDQUFjOzs7SUFXN0MsNEJBSTJCOzs7SUFIdkIsbUNBQWtCLDhCQUFBLDhCQUFBOzs7SUFGMUIsNkJBQStCO0lBQzNCLHFGQUkyQjtJQUMvQiwwQkFBZTs7O0lBTGMsZUFBZTtJQUFmLDZDQUFlOzs7QUR0QmhELE1BQU0sYUFBYSxHQUFHLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQztBQVdqRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSx5QkFBeUI7SUFnQjFELElBQUksVUFBVSxDQUFDLEVBQUU7UUFDYixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDeEU7SUFDTCxDQUFDO0lBRUQsWUFBWSxHQUFhO1FBQ3JCLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsc0dBQXNHO0lBQzVGLFdBQVcsQ0FBQyxJQUFpQixFQUFFLFNBQWlCLEVBQUUsYUFBdUIsRUFBRSxNQUFXO1FBQzVGLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQzVDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNwRjtJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFNO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEQ7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxTQUFTLEdBQUksSUFBWSxDQUFDLGFBQWEsQ0FBQztZQUM3QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsRUFBTyxFQUFFLEVBQVE7UUFDM0MsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFHO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLE9BQU87U0FDVjtRQUNELElBQUksR0FBRyxLQUFLLE9BQU8sSUFBSyxHQUFHLEtBQUssVUFBVSxFQUFFO1lBQ3hDLElBQUcsR0FBRyxLQUFLLE9BQU8sRUFBRTtnQkFDaEIsbUhBQW1IO2dCQUNuSCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDdkosSUFBRyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQy9FLFVBQVUsQ0FBQyxHQUFFLEVBQUU7d0JBQ1gsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRTs0QkFDN0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzt5QkFDOUQ7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7aUJBQ047YUFDSjtZQUNELE9BQU87U0FDVjthQUFNLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRTtZQUMxQixDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFFO1NBQ3hJO1FBQ0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUMsTUFBTTtRQUN4QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUNuRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO2dCQUN2SixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM5RTtpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxTQUFTLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0o7SUFDTCxDQUFDOztBQTdGTSwrQkFBZSxHQUFHLGFBQWEsRUFBRSxDQUFDOzhFQURoQyxlQUFlO2tFQUFmLGVBQWU7K0JBY21CLFVBQVU7Ozs7MENBcEIxQztZQUNQLFNBQVMsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQztZQUMvQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7U0FDdEM7UUNwQkwsb0NBZUM7UUFUTyw2SUFBd0IsdUZBRWQsK0JBQTJCLElBRmIscUZBR2YsaUNBQTZCLElBSGQsNEVBSWhCLDJCQUF1QixTQUFFLGlDQUE2QixJQUp0QztRQVU1Qiw0QkFHaUM7UUFFakMsa0ZBU2U7UUFFZixrRkFNZTtRQUNuQixpQkFBUzs7UUFyQ0QsZ0VBQThDLDBCQUFBLDBCQUFBLDBCQUFBLDJCQUFBLDBCQUFBLDRCQUFBO1FBUzlDLGdDQUFrQix3QkFBQSxzQ0FBQTtRQU90QixlQUEyQjtRQUEzQiw2Q0FBMkIsNEJBQUE7UUFHWixlQUFhO1FBQWIsa0NBQWE7UUFXYixlQUFjO1FBQWQsbUNBQWM7O3VGRFZwQixlQUFlO2NBVDNCLFNBQVM7MkJBQ0ksV0FBVyxhQUVWO29CQUNQLFNBQVMsa0JBQWtCLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDbkQsU0FBUyxrQkFBa0IsYUFBYSxFQUFFLElBQUksQ0FBQztvQkFDL0Msa0JBQWtCLGlCQUFpQjtpQkFDdEM7MkRBZ0J3RCxRQUFRO2tCQUFoRSxTQUFTO21CQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgTkdfVkFMSURBVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtEYXRhU291cmNlLCByZW1vdmVBdHRyLCBzZXRBdHRyfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlQXNXaWRnZXRSZWYsIHByb3ZpZGVBcywgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXNldC1hd2FyZS1mb3JtLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3NlbGVjdC5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tc2VsZWN0JywgaG9zdENsYXNzOiAnYXBwLXNlbGVjdC13cmFwcGVyJ307XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFNlbGVjdENvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoU2VsZWN0Q29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFNlbGVjdENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBleHRlbmRzIERhdGFzZXRBd2FyZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZzZWFyY2hiYXI6IGFueTtcbiAgICBwdWJsaWMgY2xhc3M6IGFueTtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyB0YWJpbmRleDogYW55O1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGF1dG9mb2N1czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgc2VsZWN0RWw6IEVsZW1lbnRSZWY7XG5cbiAgICBzZXQgZGF0YXNvdXJjZShkcykge1xuICAgICAgICBpZiAoZHMgJiYgZHMuZXhlY3V0ZSAmJiBkcy5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX0JPVU5EX1RPX0xPQ0FMRSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlID0gZHMuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfREVGQVVMVF9MT0NBTEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcpO1xuICAgICAgICB0aGlzLmFjY2VwdHNBcnJheSA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgc3R5bGVyKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCwgdGhpcyk7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIGV2ZW50IGlzIHJlZ2lzdGVyZWQgZnJvbSB0aGUgdGVtcGxhdGUsIFByZXZlbnQgdGhlIGZyYW1ld29yayBmcm9tIHJlZ2lzdGVyaW5nIG9uZSBtb3JlIGV2ZW50XG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghXy5pbmNsdWRlcyhbJ2JsdXInLCAnY2hhbmdlJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCwgZXZlbnROYW1lLCBldmVudENhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RWYWx1ZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9ICh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICAvLyBpbnZva2Ugb24gZGF0YXZhbHVlIGNoYW5nZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgJGV2ZW50IHx8IHt9LCB0cnVlKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZWQnKSAge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5kYXRhdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwgIGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgaWYoa2V5ID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICAgICAgLy8gQWZ0ZXIgTkcxNSB1cGdyYWRlIG5nLWludmFsaWQgY2xhc3MgaXMgYWRkZWQgZXZlbiB0aGUgZmllbGQgaXMgdmFsaWQsIHNvIHdlIGFyZSByZW1vdmluZyB0aGUgbmctaW52YWxpZCBtYW51YWxseVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzTmdVbnRvdWNoZWRWYWxpZCA9IHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXVudG91Y2hlZCcpICYmIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXZhbGlkJylcbiAgICAgICAgICAgICAgICBpZihpc05nVW50b3VjaGVkVmFsaWQgJiYgbnYuaW5jbHVkZXMoJ25nLXVudG91Y2hlZCcpICYmIG52LmluY2x1ZGVzKCduZy1pbnZhbGlkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXVudG91Y2hlZCcpICYmIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXZhbGlkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ25nLWludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3JlYWRvbmx5Jykge1xuICAgICAgICAgICAgIChudiA9PT0gdHJ1ZSkgPyBzZXRBdHRyKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCwgJ3JlYWRvbmx5JywgJ3JlYWRvbmx5JykgOiByZW1vdmVBdHRyKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCwgJ3JlYWRvbmx5JykgO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gY2FwdGlvbiBmbG9hdGluZyBpcyBlbmFibGVkIGFuZCBwbGFjZWhvbGRlciBpcyBnaXZlbiwgZG8gbm90IHNob3cgcGxhY2Vob2xkZXIgdW50aWwgdXNlciBmb2N1c2VzIG9uIHRoZSBmaWVsZFxuICAgICAqIFdoZW4gZm9jdXNlZCBhZGQgdGhlIHBsYWNlaG9sZGVyIHRvIHRoZSBvcHRpb24gd2hpY2ggaXMgc2VsZWN0ZWRcbiAgICAgKiBPbiBibHVyLCByZW1vdmUgdGhlIHBsYWNlaG9sZGVyIGFuZCBkbyBub3QgYW5pbWF0ZSB0aGUgbGFiZWxcbiAgICAgKiBAcGFyYW0gJGV2ZW50IGV2ZW50IHJlY2VpdmVkIHdpbGwgYmUgZWl0aGVyIGEgYmx1ciBvciBmb2N1cyBldmVudFxuICAgICAqL1xuICAgIGNoZWNrRm9yRmxvYXRpbmdMYWJlbCgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2FwdGlvbkVsID0gJCh0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtY29tcG9zaXRlLXdpZGdldC5jYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgIGlmIChjYXB0aW9uRWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKCRldmVudC50eXBlID09PSAnZm9jdXMnICYmICghdGhpcy5kYXRhdmFsdWUgfHwgKHRoaXMuZGF0YXZhbHVlICYmICQodGhpcy5zZWxlY3RFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSA9PT0gJycgJiYgdGhpcy5wbGFjZWhvbGRlcikpKSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJ29wdGlvbjpmaXJzdCcpLnRleHQodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCcnKTtcbiAgICAgICAgICAgICAgICBjYXB0aW9uRWwucmVtb3ZlQ2xhc3MoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHNlbGVjdCByb2xlPVwibGlzdGJveFwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgI3NlbGVjdFxuICAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICAgW25nQ2xhc3NdPVwiWydhcHAtc2VsZWN0IGZvcm0tY29udHJvbCcsIGNsYXNzXVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibW9kZWxCeUtleVwiXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25TZWxlY3RWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cImNoZWNrRm9yRmxvYXRpbmdMYWJlbCgkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwiaW52b2tlT25Ub3VjaGVkKCRldmVudCk7IGNoZWNrRm9yRmxvYXRpbmdMYWJlbCgkZXZlbnQpXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJoaW50XCJcbiAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4+XG4gICAgPG9wdGlvbiBzZWxlY3RlZFxuICAgIHZhbHVlPVwidW5kZWZpbmVkXCJcbiAgICBbdGV4dENvbnRlbnRdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtoaWRkZW5dPVwiIXBsYWNlaG9sZGVyXCI+PC9vcHRpb24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBieVwiPlxuICAgICAgICA8b3B0Z3JvdXAgKm5nRm9yPVwibGV0IGdyb3VwT2JqIG9mIGdyb3VwZWREYXRhXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJncm91cE9iai5rZXlcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBPYmouZGF0YTtcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCI+PC9vcHRpb24+XG4gICAgICAgIDwvb3B0Z3JvdXA+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdyb3VwYnlcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhc2V0SXRlbXNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIj48L29wdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvc2VsZWN0PlxuIl19
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7SUNTM0MsNEJBSWlDOzs7SUFGakMsZ0RBQTJCLCtCQUFBOzs7SUFPbkIsNEJBSTJCOzs7SUFIdkIsbUNBQWtCLDhCQUFBLDhCQUFBOzs7SUFIMUIsbUNBQzJCO0lBQ3ZCLGdHQUkyQjtJQUMvQixpQkFBVzs7O0lBTlAsdUNBQXNCO0lBQ0csZUFBaUI7SUFBakIsMENBQWlCOzs7SUFIbEQsNkJBQThCO0lBQzFCLHlGQU9XO0lBQ2YsMEJBQWU7OztJQVJvQixlQUFjO0lBQWQsNENBQWM7OztJQVc3Qyw0QkFJMkI7OztJQUh2QixtQ0FBa0IsOEJBQUEs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QWpITSwrQkFBZSxHQUFHLGFBQWEsRUFBRSxDQUFDOzhFQURoQyxlQUFlO2tFQUFmLGVBQWU7K0JBZW1CLFVBQVU7Ozs7MENBckIxQztZQUNQLFNBQVMsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQztZQUMvQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7U0FDdEM7UUNwQkwsb0NBZUM7UUFUTyw2SUFBd0IsdUZBRWQsK0JBQTJCLElBRmIscUZBR2YsaUNBQTZCLElBSGQsNEVBSWhCLDJCQUF1QixTQUFFLGlDQUE2QixJQUp0QztRQVU1QixzRUFJaUM7UUFFakMsa0ZBU2U7UUFFZixrRkFNZTtRQUNuQixpQkFBUzs7UUF0Q0QsZ0VBQThDLDBCQUFBLDBCQUFBLDBCQUFBLDJCQUFBLDBCQUFBLDRCQUFBO1FBUzlDLGdDQUFrQix3QkFBQSxzQ0FBQTtRQVFiLGVBQXVDO1FBQXZDLGdFQUF1QztRQUdqQyxlQUFhO1FBQWIsa0NBQWE7UUFXYixlQUFjO1FBQWQsbUNBQWM7O3VGRFhwQixlQUFlO2NBVDNCLFNBQVM7MkJBQ0ksV0FBVyxhQUVWO29CQUNQLFNBQVMsa0JBQWtCLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDbkQsU0FBUyxrQkFBa0IsYUFBYSxFQUFFLElBQUksQ0FBQztvQkFDL0Msa0JBQWtCLGlCQUFpQjtpQkFDdEM7NkVBaUJ3RCxRQUFRO2tCQUFoRSxTQUFTO21CQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgTkdfVkFMSURBVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtEYXRhU291cmNlLCByZW1vdmVBdHRyLCBzZXRBdHRyLCBBcHAsIGlzSW9zfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlQXNXaWRnZXRSZWYsIHByb3ZpZGVBcywgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXNldC1hd2FyZS1mb3JtLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3NlbGVjdC5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tc2VsZWN0JywgaG9zdENsYXNzOiAnYXBwLXNlbGVjdC13cmFwcGVyJ307XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFNlbGVjdENvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoU2VsZWN0Q29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFNlbGVjdENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBleHRlbmRzIERhdGFzZXRBd2FyZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZzZWFyY2hiYXI6IGFueTtcbiAgICBwdWJsaWMgY2xhc3M6IGFueTtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyB0YWJpbmRleDogYW55O1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGF1dG9mb2N1czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHByaXZhdGUgYXBwOiBBcHA7XG5cbiAgICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBzZWxlY3RFbDogRWxlbWVudFJlZjtcblxuICAgIHNldCBkYXRhc291cmNlKGRzKSB7XG4gICAgICAgIGlmIChkcyAmJiBkcy5leGVjdXRlICYmIGRzLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQk9VTkRfVE9fTE9DQUxFKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSBkcy5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9ERUZBVUxUX0xPQ0FMRSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCAgYXBwOiBBcHApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHKTtcbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgICAgIHRoaXMuYWNjZXB0c0FycmF5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrRm9yRmxvYXRpbmdMYWJlbChudWxsKTtcbiAgICAgICAgfSwgMTApXG5cbiAgICB9XG5cbiAgICAvLyBDaGFuZ2UgZXZlbnQgaXMgcmVnaXN0ZXJlZCBmcm9tIHRoZSB0ZW1wbGF0ZSwgUHJldmVudCB0aGUgZnJhbWV3b3JrIGZyb20gcmVnaXN0ZXJpbmcgb25lIG1vcmUgZXZlbnRcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudENhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnkpIHtcbiAgICAgICAgaWYgKCFfLmluY2x1ZGVzKFsnYmx1cicsICdjaGFuZ2UnXSwgZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIGV2ZW50Q2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdFZhbHVlQ2hhbmdlKCRldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlID0gKHRoaXMgYXMgYW55KS5wcmV2RGF0YXZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIC8vIGludm9rZSBvbiBkYXRhdmFsdWUgY2hhbmdlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCAkZXZlbnQgfHwge30sIHRydWUpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlZCcpICB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCAga2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICBpZihrZXkgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgICAgICAvLyBBZnRlciBORzE1IHVwZ3JhZGUgbmctaW52YWxpZCBjbGFzcyBpcyBhZGRlZCBldmVuIHRoZSBmaWVsZCBpcyB2YWxpZCwgc28gd2UgYXJlIHJlbW92aW5nIHRoZSBuZy1pbnZhbGlkIG1hbnVhbGx5XG4gICAgICAgICAgICAgICAgY29uc3QgaXNOZ1VudG91Y2hlZFZhbGlkID0gdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKVxuICAgICAgICAgICAgICAgIGlmKGlzTmdVbnRvdWNoZWRWYWxpZCAmJiBudi5pbmNsdWRlcygnbmctdW50b3VjaGVkJykgJiYgbnYuaW5jbHVkZXMoJ25nLWludmFsaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKSAmJiB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbmctaW52YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncmVhZG9ubHknKSB7XG4gICAgICAgICAgICAgKG52ID09PSB0cnVlKSA/IHNldEF0dHIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCAncmVhZG9ubHknLCAncmVhZG9ubHknKSA6IHJlbW92ZUF0dHIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCAncmVhZG9ubHknKSA7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgfVxuXG4gICAgaXNJb3NQbGF0Zm9ybSgpIHtcbiAgICAgICAgcmV0dXJuIGlzSW9zKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZW4gY2FwdGlvbiBmbG9hdGluZyBpcyBlbmFibGVkIGFuZCBwbGFjZWhvbGRlciBpcyBnaXZlbiwgZG8gbm90IHNob3cgcGxhY2Vob2xkZXIgdW50aWwgdXNlciBmb2N1c2VzIG9uIHRoZSBmaWVsZFxuICAgICAqIFdoZW4gZm9jdXNlZCBhZGQgdGhlIHBsYWNlaG9sZGVyIHRvIHRoZSBvcHRpb24gd2hpY2ggaXMgc2VsZWN0ZWRcbiAgICAgKiBPbiBibHVyLCByZW1vdmUgdGhlIHBsYWNlaG9sZGVyIGFuZCBkbyBub3QgYW5pbWF0ZSB0aGUgbGFiZWxcbiAgICAgKiBAcGFyYW0gJGV2ZW50IGV2ZW50IHJlY2VpdmVkIHdpbGwgYmUgZWl0aGVyIGEgYmx1ciBvciBmb2N1cyBldmVudFxuICAgICAqL1xuICAgIGNoZWNrRm9yRmxvYXRpbmdMYWJlbCgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2FwdGlvbkVsID0gJCh0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtY29tcG9zaXRlLXdpZGdldC5jYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgIGlmIChjYXB0aW9uRWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKCghJGV2ZW50IHx8ICRldmVudC50eXBlID09PSAnZm9jdXMnKSAmJiAoKCQodGhpcy5zZWxlY3RFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSA9PT0gJycgJiYgKHRoaXMucGxhY2Vob2xkZXIgfHwgdGhpcy5kYXRhdmFsdWUgfHwgdGhpcy5pc0lvc1BsYXRmb3JtKCkpKSkpIHtcbiAgICAgICAgICAgICAgICBpZighJGV2ZW50ICYmICh0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuZGF0YXZhbHVlIHx8IHRoaXMuaXNJb3NQbGF0Zm9ybSgpKSl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSgnY2FwdGlvblBvc2l0aW9uQW5pbWF0ZScsIHtpc1NlbGVjdDogdHJ1ZSwgbmF0aXZlRWw6IGNhcHRpb25FbH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5maW5kKCdvcHRpb246Zmlyc3QnKS50ZXh0KHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICAvLyAgJCh0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJ29wdGlvbjpmaXJzdCcpLnRleHQoJycpO1xuICAgICAgICAgICAgICAgICAgICBpZighdGhpcy5pc0lvc1BsYXRmb3JtKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25FbC5yZW1vdmVDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxzZWxlY3Qgcm9sZT1cImxpc3Rib3hcIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiICNzZWxlY3RcbiAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgIFtuZ0NsYXNzXT1cIlsnYXBwLXNlbGVjdCBmb3JtLWNvbnRyb2wnLCBjbGFzc11cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsQnlLZXlcIlxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0VmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJjaGVja0ZvckZsb2F0aW5nTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImludm9rZU9uVG91Y2hlZCgkZXZlbnQpOyBjaGVja0ZvckZsb2F0aW5nTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaGludFwiXG4gICAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuPlxuICAgIDxvcHRpb25cbiAgICB2YWx1ZT1cInVuZGVmaW5lZFwiXG4gICAgW3RleHRDb250ZW50XT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzSW9zUGxhdGZvcm0oKSB8fCAhIXBsYWNlaG9sZGVyXCJcbiAgICBbaGlkZGVuXT1cIiFwbGFjZWhvbGRlclwiPjwvb3B0aW9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwYnlcIj5cbiAgICAgICAgPG9wdGdyb3VwICpuZ0Zvcj1cImxldCBncm91cE9iaiBvZiBncm91cGVkRGF0YVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiZ3JvdXBPYmoua2V5XCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwT2JqLmRhdGE7XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiPjwvb3B0aW9uPlxuICAgICAgICA8L29wdGdyb3VwPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cGJ5XCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YXNldEl0ZW1zXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCI+PC9vcHRpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3NlbGVjdD5cbiJdfQ==
|