@provoly/dashboard 0.14.6 → 0.14.8
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/components/metadata-editor/metadata-editor.component.d.ts +3 -1
- package/dataset/components/dataset-detail/dataset-detail.component.d.ts +1 -0
- package/dataset/i18n/en.translations.d.ts +1 -0
- package/dataset/i18n/fr.translations.d.ts +1 -0
- package/dataset/style/_o-pry-dataset-detail.scss +7 -6
- package/dataset/style/_o-pry-dataset.scss +6 -3
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +1 -1
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +30 -9
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +6 -3
- package/esm2022/dataset/i18n/en.translations.mjs +2 -1
- package/esm2022/dataset/i18n/fr.translations.mjs +2 -1
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/config/config.effects.mjs +3 -3
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +4 -4
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +3 -2
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +1 -1
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +11 -8
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +2 -6
- package/esm2022/lib/dashboard/public-api.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +6 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +20 -13
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +11 -2
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +4 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +11 -1
- package/esm2022/lib/dashboard/store/wms.service.mjs +54 -0
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +19 -3
- package/esm2022/presentation/presentation.module.mjs +8 -4
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +1 -1
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +2 -1
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +34 -32
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +3 -4
- package/esm2022/widgets/widget-map/public-api.mjs +1 -2
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +20 -1
- package/fesm2022/provoly-dashboard-admin.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +29 -8
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +9 -4
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +26 -7
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +37 -76
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +110 -66
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/i18n/en.translations.d.ts +1 -0
- package/lib/core/i18n/fr.translations.d.ts +1 -0
- package/lib/core/model/widget-map-manifest.interface.d.ts +1 -0
- package/lib/dashboard/components/dashboard.component.d.ts +4 -4
- package/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.d.ts +1 -3
- package/lib/dashboard/public-api.d.ts +1 -1
- package/lib/dashboard/store/dashboard.actions.d.ts +31 -0
- package/lib/dashboard/store/dashboard.effects.d.ts +9 -3
- package/lib/dashboard/store/dashboard.reducers.d.ts +4 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +5 -0
- package/lib/dashboard/store/manifest.service.d.ts +2 -0
- package/{widgets/widget-map/component → lib/dashboard/store}/wms.service.d.ts +4 -4
- package/package.json +31 -31
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +3 -0
- package/presentation/presentation.module.d.ts +2 -1
- package/presentation/style/_o-pry-new-presentation.scss +18 -5
- package/schematics/ng-update/version-0-14/index.spec.js +0 -1
- package/schematics/ng-update/version-0-14/index.spec.js.map +1 -1
- package/widgets/widget-map/component/widget-map.component.d.ts +11 -8
- package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +4 -3
- package/widgets/widget-map/public-api.d.ts +0 -1
- package/widgets/widget-map/utils/xml-utils.class.d.ts +1 -0
- package/esm2022/lib/dashboard/store/geocoding.service.mjs +0 -44
- package/esm2022/widgets/widget-map/component/wms.service.mjs +0 -67
- package/lib/dashboard/store/geocoding.service.d.ts +0 -56
|
@@ -15,4 +15,4 @@ export const widgetMapConfig = {
|
|
|
15
15
|
'upload'
|
|
16
16
|
])
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC1tYW5pZmVzdC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9tb2RlbC93aWRnZXQtbWFwLW1hbmlmZXN0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBcUl2QyxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLFFBQVEsRUFBRSxJQUFJLGVBQWUsQ0FBOEU7UUFDekcsTUFBTTtRQUNOLE9BQU87UUFDUCxPQUFPO1FBQ1AsV0FBVztRQUNYLE1BQU07UUFDTixRQUFRO1FBQ1IsUUFBUTtLQUNULENBQUM7Q0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwV2lkZ2V0T3B0aW9ucyB7XG4gIGNlbnRlcj86IG51bWJlcltdO1xuICB6b29tPzoge1xuICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgbWluOiBudW1iZXI7XG4gICAgbWF4OiBudW1iZXI7XG4gIH07XG4gIHN0eWxlOiBzdHJpbmc7XG4gIHN0eWxlVVJMPzogc3RyaW5nO1xuICBsYXllcnM/OiBNYXBXaWRnZXRMYXllck9wdGlvbnNbXTtcbiAgZml0PzogYm9vbGVhbjtcbiAgYXR0cmlidXRpb25zPzogYm9vbGVhbjtcbiAgdG9vbHRpcE1vZGU/OiBUb29sdGlwTW9kZTtcbiAgc2luZ2xlTGF5ZXI/OiBib29sZWFuO1xuICBpZ25vcmVBdXRvTGF5ZXI/OiBzdHJpbmdbXTtcbiAgYXV0b21hdGljTGF5ZXJzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgTWFwV2lkZ2V0TGF5ZXJPcHRpb25zID1cbiAgfCBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zXG4gIHwgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zXG4gIHwgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zXG4gIHwgTWFwV2lkZ2V0UmVsYXRpb25MYXllck9wdGlvbnNcbiAgfCBNYXBXTVNMYXllckxheWVyT3B0aW9uc1xuICB8IE1hcEZlYXR1cmVMYXllck9wdGlvbnNcbiAgfCBNYXBWZWN0b3JUaWxlTGF5ZXJPcHRpb25zXG4gIHwgTWFwUmFzdGVyVGlsZUxheWVyT3B0aW9uc1xuICB8IE1hcEdlb1NlcnZlckxheWVyT3B0aW9uc1xuICB8IE1hcEF1dG9MYXllck9wdGlvbnNcbiAgfCBNYXBXTVRTTGF5ZXJMYXllck9wdGlvbnNcbiAgfCBNYXBXaWRnZXRHZW9tZXRyeUxheWVyT3B0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlV2lkZ2V0TWFwTGF5ZXJPcHRpb25zIHtcbiAgdHlwZTogc3RyaW5nO1xuICBhdHRyaWJ1dGlvbj86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG1pblpvb20/OiBudW1iZXI7XG4gIG1heFpvb20/OiBudW1iZXI7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9ucyBleHRlbmRzIEJhc2VXaWRnZXRNYXBMYXllck9wdGlvbnMge1xuICB0eXBlOiAnaGVhdG1hcCc7XG4gIGF0dHJpYnV0ZTogc3RyaW5nO1xuICBjbGFzc2VzPzogc3RyaW5nW107XG4gIGludGVuc2l0eUF0dHJpYnV0ZT86IHN0cmluZztcbiAgaW50ZW5zaXR5QXNjPzogYm9vbGVhbjtcbiAgcmFkaXVzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFdpZGdldEdlb21ldHJ5TGF5ZXJPcHRpb25zIGV4dGVuZHMgQmFzZVdpZGdldE1hcExheWVyT3B0aW9ucyB7XG4gIHR5cGU6ICdwb2ludCcgfCAnbGluZScgfCAncG9seWdvbicgfCAnbXVsdGktbGluZScgfCAnbXVsdGktcG9seWdvbic7XG4gIGF0dHJpYnV0ZTogc3RyaW5nO1xuICBjbGFzc2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zIGV4dGVuZHMgQmFzZVdpZGdldE1hcExheWVyT3B0aW9ucyB7XG4gIHR5cGU6ICdtYXJrZXInO1xuICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgY2xhc3Nlcz86IHN0cmluZ1tdO1xuICBjbHVzdGVyZWQ/OiBib29sZWFuO1xuICBjbHVzdGVyRGlzdGFuY2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zIGV4dGVuZHMgQmFzZVdpZGdldE1hcExheWVyT3B0aW9ucyB7XG4gIHR5cGU6ICdidWJibGUnO1xuICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgaW50ZW5zaXR5QXR0cmlidXRlPzogc3RyaW5nO1xuICBpbnRlbnNpdHlBc2M/OiBib29sZWFuO1xuICByYWRpdXNGYWN0b3I/OiBudW1iZXI7XG4gIHJhZGl1cz86IG51bWJlcjtcbiAgY2xhc3Nlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFdpZGdldFJlbGF0aW9uTGF5ZXJPcHRpb25zIGV4dGVuZHMgQmFzZVdpZGdldE1hcExheWVyT3B0aW9ucyB7XG4gIHR5cGU6ICdyZWxhdGlvbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwV01TTGF5ZXJMYXllck9wdGlvbnMgZXh0ZW5kcyBCYXNlV2lkZ2V0TWFwTGF5ZXJPcHRpb25zIHtcbiAgdHlwZTogJ3dtcyc7XG4gIHVybDogc3RyaW5nO1xuICBwYXJhbUxheWVyOiBzdHJpbmc7XG4gIHBhcmFtVGlsZWQ6IGJvb2xlYW47XG4gIG9DbGFzczogc3RyaW5nO1xuICBnZXRGZWF0dXJlSW5mb0FkZGl0aW9uYWxQYXJhbWV0ZXJzPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFdNVFNMYXllckxheWVyT3B0aW9ucyBleHRlbmRzIEJhc2VXaWRnZXRNYXBMYXllck9wdGlvbnMge1xuICB0eXBlOiAnd210cyc7XG4gIHVybDogc3RyaW5nO1xuICBwYXJhbUxheWVyOiBzdHJpbmc7XG4gIG1hdHJpeFNldDogc3RyaW5nO1xuICBzdHlsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcEZlYXR1cmVMYXllck9wdGlvbnMgZXh0ZW5kcyBCYXNlV2lkZ2V0TWFwTGF5ZXJPcHRpb25zIHtcbiAgdHlwZTogJ2ZlYXR1cmVsYXllcic7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFZlY3RvclRpbGVMYXllck9wdGlvbnMgZXh0ZW5kcyBCYXNlV2lkZ2V0TWFwTGF5ZXJPcHRpb25zIHtcbiAgdHlwZTogJ3ZlY3RvcnRpbGUnO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBSYXN0ZXJUaWxlTGF5ZXJPcHRpb25zIGV4dGVuZHMgQmFzZVdpZGdldE1hcExheWVyT3B0aW9ucyB7XG4gIHR5cGU6ICdyYXN0ZXJ0aWxlJztcbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwR2VvU2VydmVyTGF5ZXJPcHRpb25zIGV4dGVuZHMgQmFzZVdpZGdldE1hcExheWVyT3B0aW9ucyB7XG4gIHR5cGU6ICdnZW9zZXJ2ZXInO1xuICBrZXk6IHN0cmluZztcbiAgcGFyYW1MYXllcjogc3RyaW5nO1xuICBwYXJhbVRpbGVkOiBib29sZWFuO1xuICB1cmw6IHN0cmluZztcbiAgb0NsYXNzOiBzdHJpbmc7XG4gIGRhdGFzb3VyY2VJZDogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcEF1dG9MYXllck9wdGlvbnMgZXh0ZW5kcyBCYXNlV2lkZ2V0TWFwTGF5ZXJPcHRpb25zIHtcbiAgdHlwZTogJ2F1dG8nO1xuICBvQ2xhc3M6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHN1YlR5cGU6IHN0cmluZztcbiAgYXR0cmlidXRlOiBzdHJpbmc7XG4gIGNsYXNzZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gVG9vbHRpcE1vZGUge1xuICBDTElDSyA9ICdjbGljaycsXG4gIE5PTkUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IGNvbnN0IHdpZGdldE1hcENvbmZpZyA9IHtcbiAgYWN0aW9ucyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8KCdjbGljaycgfCAnbGFzc28nIHwgJ3JlY3RhbmdsZScgfCAnem9vbScgfCAnbW92ZScgfCAnZXhwb3J0JyB8ICd1cGxvYWQnKVtdPihbXG4gICAgJ21vdmUnLFxuICAgICdjbGljaycsXG4gICAgJ2xhc3NvJyxcbiAgICAncmVjdGFuZ2xlJyxcbiAgICAnem9vbScsXG4gICAgJ2V4cG9ydCcsXG4gICAgJ3VwbG9hZCdcbiAgXSlcbn07XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { createEffect, ofType } from '@ngrx/effects';
|
|
3
|
-
import { catchError, throwError } from 'rxjs';
|
|
3
|
+
import { catchError, debounceTime, throwError } from 'rxjs';
|
|
4
4
|
import { filter, map, mergeMap, tap, withLatestFrom } from 'rxjs/operators';
|
|
5
5
|
import { PryDialogConfirmComponent } from '../../components/overlay/dialog-confirm.component';
|
|
6
6
|
import { ConfigActions } from './config.actions';
|
|
@@ -37,7 +37,7 @@ export class ConfigEffects {
|
|
|
37
37
|
this.saveTemplates$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.saveTooltip), mergeMap((action) => this.configService
|
|
38
38
|
.saveDefinitions(action.definitions, TOOLTIPS_DOMAIN)
|
|
39
39
|
.pipe(map(() => ConfigActions.loadCustomization())))));
|
|
40
|
-
this.getCustomization$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.loadCustomization), mergeMap((action) => this.configService.getAllClassParams().pipe(mergeMap((allDefinitions) => {
|
|
40
|
+
this.getCustomization$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.loadCustomization), debounceTime(100), mergeMap((action) => this.configService.getAllClassParams().pipe(mergeMap((allDefinitions) => {
|
|
41
41
|
const icons = allDefinitions
|
|
42
42
|
.filter((def) => def.domain === SYMBOL_DOMAIN)
|
|
43
43
|
.reduce((p, c) => ({
|
|
@@ -118,4 +118,4 @@ export class ConfigEffects {
|
|
|
118
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ConfigEffects, decorators: [{
|
|
119
119
|
type: Injectable
|
|
120
120
|
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.OpenMapTilesService }, { type: i3.Store }, { type: i4.ConfigService }, { type: i5.PrySnackbarService }, { type: i6.PryI18nService }, { type: i7.PryDialogService }]; } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBd0IsTUFBTSxtREFBbUQsQ0FBQztBQUlwSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFFTCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7QUFJL0QsTUFBTSxPQUFPLGFBQWE7SUF1TXhCLFlBQ1UsUUFBaUIsRUFDakIsbUJBQXdDLEVBQ3hDLEtBQVksRUFDWixhQUE0QixFQUM1QixRQUE0QixFQUM1QixnQkFBZ0MsRUFDaEMsU0FBMkI7UUFOM0IsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixrQkFBYSxHQUFiLGFBQWEs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QUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNwRyxDQUNGLENBQ0YsQ0FBQztRQUVGLHFCQUFnQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEVBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDOUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUM3QixNQUFNLFdBQVcsR0FBRztnQkFDbEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSTtnQkFDbEQsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPLElBQUksa0JBQWtCLENBQUMsT0FBTztnQkFDM0QsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXLElBQUksa0JBQWtCLENBQUMsV0FBVztnQkFDdkUsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLElBQUksa0JBQWtCLENBQUMsS0FBSzthQUN0RCxDQUFDO1lBQ0YsT0FBTyxhQUFhLENBQUMsaUJBQWlCLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQVVDLENBQUM7OEdBL01PLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIFByeURpYWxvZ0NvbmZpcm1EYXRhIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFByeVNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMgfSBmcm9tICcuL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4vY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQge1xuICBDb25maWdTZXJ2aWNlLFxuICBGSUxURVJTX0RPTUFJTixcbiAgU1lNQk9MX0RPTUFJTixcbiAgVEFCTEVfQVRUUl9ET01BSU4sXG4gIFRJTEVfQVRUUl9ET01BSU4sXG4gIFRPT0xUSVBTX0RPTUFJTlxufSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0T3B0aW9uRGVmYXVsdCB9IGZyb20gJy4vY29uZmlnLndpZGdldC5jb25zdGFudHMnO1xuaW1wb3J0IHsgT3Blbk1hcFRpbGVzU2VydmljZSB9IGZyb20gJy4vb3Blbi1tYXAtdGlsZXMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWdFZmZlY3RzIHtcbiAgbWFwU3R5bGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLmdldE1hcFN0eWxlcyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMubWFwU3R5bGVzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIG1hcFN0eWxlc10pID0+ICFtYXBTdHlsZXMgfHwgbWFwU3R5bGVzLmxlbmd0aCA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbl0pID0+XG4gICAgICAgIHRoaXMub3Blbk1hcFRpbGVzU2VydmljZS5nZXRTdHlsZXMoKS5waXBlKG1hcCgoc3R5bGVzKSA9PiBDb25maWdBY3Rpb25zLmRlZmluZU1hcFN0eWxlcyh7IHN0eWxlcyB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVJY29uRGVmaW5pdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZUljb25zKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgICAgIC5zYXZlRGVmaW5pdGlvbnMoYWN0aW9uLmRlZmluaXRpb25zLCBTWU1CT0xfRE9NQUlOKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlVGFibGVBdHRyaWJ1dGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLnNhdmVUYWJsZURlZmF1bHRBdHRyaWJ1dGVzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgICAgIC5zYXZlRGVmaW5pdGlvbnMoYWN0aW9uLmRlZmluaXRpb25zLCBUQUJMRV9BVFRSX0RPTUFJTilcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4gQ29uZmlnQWN0aW9ucy5sb2FkQ3VzdG9taXphdGlvbigpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2F2ZVRpbGVBdHRyaWJ1dGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLnNhdmVUaWxlQXR0cmlidXRlcyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAuc2F2ZURlZmluaXRpb25zKGFjdGlvbi5kZWZpbml0aW9ucywgVElMRV9BVFRSX0RPTUFJTilcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4gQ29uZmlnQWN0aW9ucy5sb2FkQ3VzdG9taXphdGlvbigpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2F2ZVRlbXBsYXRlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5zYXZlVG9vbHRpcCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAuc2F2ZURlZmluaXRpb25zKGFjdGlvbi5kZWZpbml0aW9ucywgVE9PTFRJUFNfRE9NQUlOKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXRDdXN0b21pemF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRBbGxDbGFzc1BhcmFtcygpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKGFsbERlZmluaXRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpY29ucyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gU1lNQk9MX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgdGFibGVBdHRyaWJ1dGVzID0gYWxsRGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoZGVmKSA9PiBkZWYuZG9tYWluID09PSBUQUJMRV9BVFRSX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcHMgPSBhbGxEZWZpbml0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChkZWYpID0+IGRlZi5kb21haW4gPT09IFRPT0xUSVBTX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gRklMVEVSU19ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbGVBdHRyaWJ1dGVzID0gYWxsRGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoZGVmKSA9PiBkZWYuZG9tYWluID09PSBUSUxFX0FUVFJfRE9NQUlOKVxuICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChwLCBjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICAgIFtjLm9DbGFzc106IEpTT04ucGFyc2UoYy5jb250ZW50KVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiBbQ29uZmlnQWN0aW9ucy5sb2FkZWRDdXN0b21pemF0aW9uKHsgaWNvbnMsIHRhYmxlQXR0cmlidXRlcywgdG9vbHRpcHMsIGZpbHRlcnMsIHRpbGVBdHRyaWJ1dGVzIH0pXTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVXaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZVdpZGdldCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2F2ZVdpZGdldChhY3Rpb24ud2lkZ2V0KS5waXBlKFxuICAgICAgICAgIHRhcCgoKSA9PlxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5jYXRhbG9nLnNhdmVkJywgeyB2aWV3SWQ6IGFjdGlvbi53aWRnZXQubmFtZSB9KSxcbiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgbWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZFdpZGdldHMoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnRvb2xib3guY2F0YWxvZy5zYXZlRXJyb3JDb2RlLicgKyBlcnJvci5lcnJvci5jb2RlLCB7XG4gICAgICAgICAgICAgICAgbmFtZTogYWN0aW9uLndpZGdldC5uYW1lXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNvbmZpcm1SZXN0aXR1dGlvbkRlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5jb25maXJtUmVzdGl0dXRpb25EZWxldGlvbiksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICAgICAgICB0aXRsZTogJ0Bwcnkud2lkZ2V0Lm1vZGFsVGl0bGUnLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGUnLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtDb25maWdBY3Rpb25zLmRlbGV0ZVJlc3RpdHV0aW9uKHsgaWQ6IGFjdGlvbi5pZCB9KV1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkZWxldGVSZXN0aXR1dGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5kZWxldGVSZXN0aXR1dGlvbiksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiB0aGlzLmNvbmZpZ1NlcnZpY2UuZGVsZXRlUmVzdGl0dXRpb24oYWN0aW9uLmlkKS5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRXaWRnZXRzKCkpKSlcbiAgICApXG4gICk7XG5cbiAgbG9hZFdpZGdldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5sb2FkV2lkZ2V0cyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0QWxsV2lkZ2V0cygpLnBpcGUobWFwKCh3aWRnZXRzKSA9PiBDb25maWdBY3Rpb25zLmxvYWRlZFdpZGdldHMoeyB3aWRnZXRzIH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9hZENoYXJ0T3B0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLmxvYWRDaGFydE9wdGlvbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuY2hhcnRPcHRpb24pKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgY2hhcnRPcHRpb25zXSkgPT4ge1xuICAgICAgICBjb25zdCBjaGFydE9wdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiBjaGFydE9wdGlvbnMudHlwZSA/PyBDaGFydE9wdGlvbkRlZmF1bHQudHlwZSxcbiAgICAgICAgICBzdWJUeXBlOiBjaGFydE9wdGlvbnMuc3ViVHlwZSA/PyBDaGFydE9wdGlvbkRlZmF1bHQuc3ViVHlwZSxcbiAgICAgICAgICBhZ2dyZWdhdGlvbjogY2hhcnRPcHRpb25zLmFnZ3JlZ2F0aW9uID8/IENoYXJ0T3B0aW9uRGVmYXVsdC5hZ2dyZWdhdGlvbixcbiAgICAgICAgICBjb2xvcjogY2hhcnRPcHRpb25zLmNvbG9yID8/IENoYXJ0T3B0aW9uRGVmYXVsdC5jb2xvclxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gQ29uZmlnQWN0aW9ucy5sb2FkZWRDaGFydE9wdGlvbih7IGNoYXJ0T3B0aW9uIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIG9wZW5NYXBUaWxlc1NlcnZpY2U6IE9wZW5NYXBUaWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJ5RGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlXG4gICkge31cbn1cbiJdfQ==
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQXdCLE1BQU0sbURBQW1ELENBQUM7QUFJcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBSS9ELE1BQU0sT0FBTyxhQUFhO0lBd014QixZQUNVLFFBQWlCLEVBQ2pCLG1CQUF3QyxFQUN4QyxLQUFZLEVBQ1osYUFBNEIsRUFDNUIsUUFBNEIsRUFDNUIsZ0JBQWdDLEVBQ2hDLFNBQTJCO1FBTjNCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osa0JBQWEs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Q0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNwRyxDQUNGLENBQ0YsQ0FBQztRQUVGLHFCQUFnQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEVBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDOUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUM3QixNQUFNLFdBQVcsR0FBRztnQkFDbEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSTtnQkFDbEQsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPLElBQUksa0JBQWtCLENBQUMsT0FBTztnQkFDM0QsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXLElBQUksa0JBQWtCLENBQUMsV0FBVztnQkFDdkUsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLElBQUksa0JBQWtCLENBQUMsS0FBSzthQUN0RCxDQUFDO1lBQ0YsT0FBTyxhQUFhLENBQUMsaUJBQWlCLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQVVDLENBQUM7OEdBaE5PLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgUHJ5RGlhbG9nQ29uZmlybURhdGEgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFByeURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnQWN0aW9ucyB9IGZyb20gJy4vY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlnU2VsZWN0b3JzIH0gZnJvbSAnLi9jb25maWcuc2VsZWN0b3JzJztcbmltcG9ydCB7XG4gIENvbmZpZ1NlcnZpY2UsXG4gIEZJTFRFUlNfRE9NQUlOLFxuICBTWU1CT0xfRE9NQUlOLFxuICBUQUJMRV9BVFRSX0RPTUFJTixcbiAgVElMRV9BVFRSX0RPTUFJTixcbiAgVE9PTFRJUFNfRE9NQUlOXG59IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRPcHRpb25EZWZhdWx0IH0gZnJvbSAnLi9jb25maWcud2lkZ2V0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBPcGVuTWFwVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi9vcGVuLW1hcC10aWxlcy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ0VmZmVjdHMge1xuICBtYXBTdHlsZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuZ2V0TWFwU3R5bGVzKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5tYXBTdHlsZXMpKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgbWFwU3R5bGVzXSkgPT4gIW1hcFN0eWxlcyB8fCBtYXBTdHlsZXMubGVuZ3RoID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uXSkgPT5cbiAgICAgICAgdGhpcy5vcGVuTWFwVGlsZXNTZXJ2aWNlLmdldFN0eWxlcygpLnBpcGUobWFwKChzdHlsZXMpID0+IENvbmZpZ0FjdGlvbnMuZGVmaW5lTWFwU3R5bGVzKHsgc3R5bGVzIH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2F2ZUljb25EZWZpbml0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5zYXZlSWNvbnMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICAgICAgLnNhdmVEZWZpbml0aW9ucyhhY3Rpb24uZGVmaW5pdGlvbnMsIFNZTUJPTF9ET01BSU4pXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVUYWJsZUF0dHJpYnV0ZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZVRhYmxlRGVmYXVsdEF0dHJpYnV0ZXMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICAgICAgLnNhdmVEZWZpbml0aW9ucyhhY3Rpb24uZGVmaW5pdGlvbnMsIFRBQkxFX0FUVFJfRE9NQUlOKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlVGlsZUF0dHJpYnV0ZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZVRpbGVBdHRyaWJ1dGVzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgICAgIC5zYXZlRGVmaW5pdGlvbnMoYWN0aW9uLmRlZmluaXRpb25zLCBUSUxFX0FUVFJfRE9NQUlOKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlVGVtcGxhdGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLnNhdmVUb29sdGlwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgICAgIC5zYXZlRGVmaW5pdGlvbnMoYWN0aW9uLmRlZmluaXRpb25zLCBUT09MVElQU19ET01BSU4pXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGdldEN1c3RvbWl6YXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24pLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0QWxsQ2xhc3NQYXJhbXMoKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChhbGxEZWZpbml0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWNvbnMgPSBhbGxEZWZpbml0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChkZWYpID0+IGRlZi5kb21haW4gPT09IFNZTUJPTF9ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlQXR0cmlidXRlcyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gVEFCTEVfQVRUUl9ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXBzID0gYWxsRGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoZGVmKSA9PiBkZWYuZG9tYWluID09PSBUT09MVElQU19ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBhbGxEZWZpbml0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChkZWYpID0+IGRlZi5kb21haW4gPT09IEZJTFRFUlNfRE9NQUlOKVxuICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChwLCBjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICAgIFtjLm9DbGFzc106IEpTT04ucGFyc2UoYy5jb250ZW50KVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCB0aWxlQXR0cmlidXRlcyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gVElMRV9BVFRSX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gW0NvbmZpZ0FjdGlvbnMubG9hZGVkQ3VzdG9taXphdGlvbih7IGljb25zLCB0YWJsZUF0dHJpYnV0ZXMsIHRvb2x0aXBzLCBmaWx0ZXJzLCB0aWxlQXR0cmlidXRlcyB9KV07XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlV2lkZ2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLnNhdmVXaWRnZXQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLnNhdmVXaWRnZXQoYWN0aW9uLndpZGdldCkucGlwZShcbiAgICAgICAgICB0YXAoKCkgPT5cbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnRvb2xib3guY2F0YWxvZy5zYXZlZCcsIHsgdmlld0lkOiBhY3Rpb24ud2lkZ2V0Lm5hbWUgfSksXG4gICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRXaWRnZXRzKCkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94LmNhdGFsb2cuc2F2ZUVycm9yQ29kZS4nICsgZXJyb3IuZXJyb3IuY29kZSwge1xuICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi53aWRnZXQubmFtZVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtUmVzdGl0dXRpb25EZWxldGlvbiQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuY29uZmlybVJlc3RpdHV0aW9uRGVsZXRpb24pLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbQ29uZmlnQWN0aW9ucy5kZWxldGVSZXN0aXR1dGlvbih7IGlkOiBhY3Rpb24uaWQgfSldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzZWNvbmRhcnknXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgeyBkYXRhIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZGVsZXRlUmVzdGl0dXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuZGVsZXRlUmVzdGl0dXRpb24pLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gdGhpcy5jb25maWdTZXJ2aWNlLmRlbGV0ZVJlc3RpdHV0aW9uKGFjdGlvbi5pZCkucGlwZShtYXAoKCkgPT4gQ29uZmlnQWN0aW9ucy5sb2FkV2lkZ2V0cygpKSkpXG4gICAgKVxuICApO1xuXG4gIGxvYWRXaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMubG9hZFdpZGdldHMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldEFsbFdpZGdldHMoKS5waXBlKG1hcCgod2lkZ2V0cykgPT4gQ29uZmlnQWN0aW9ucy5sb2FkZWRXaWRnZXRzKHsgd2lkZ2V0cyB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWRDaGFydE9wdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5sb2FkQ2hhcnRPcHRpb24pLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmNoYXJ0T3B0aW9uKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGNoYXJ0T3B0aW9uc10pID0+IHtcbiAgICAgICAgY29uc3QgY2hhcnRPcHRpb24gPSB7XG4gICAgICAgICAgdHlwZTogY2hhcnRPcHRpb25zLnR5cGUgPz8gQ2hhcnRPcHRpb25EZWZhdWx0LnR5cGUsXG4gICAgICAgICAgc3ViVHlwZTogY2hhcnRPcHRpb25zLnN1YlR5cGUgPz8gQ2hhcnRPcHRpb25EZWZhdWx0LnN1YlR5cGUsXG4gICAgICAgICAgYWdncmVnYXRpb246IGNoYXJ0T3B0aW9ucy5hZ2dyZWdhdGlvbiA/PyBDaGFydE9wdGlvbkRlZmF1bHQuYWdncmVnYXRpb24sXG4gICAgICAgICAgY29sb3I6IGNoYXJ0T3B0aW9ucy5jb2xvciA/PyBDaGFydE9wdGlvbkRlZmF1bHQuY29sb3JcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIENvbmZpZ0FjdGlvbnMubG9hZGVkQ2hhcnRPcHRpb24oeyBjaGFydE9wdGlvbiB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBvcGVuTWFwVGlsZXNTZXJ2aWNlOiBPcGVuTWFwVGlsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHByeURpYWxvZzogUHJ5RGlhbG9nU2VydmljZVxuICApIHt9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { createEffect, ofType } from '@ngrx/effects';
|
|
3
|
-
import { filter, map, mergeMap, switchMap, tap } from 'rxjs';
|
|
3
|
+
import { debounceTime, filter, map, mergeMap, switchMap, tap } from 'rxjs';
|
|
4
4
|
import { catchError, withLatestFrom } from 'rxjs/operators';
|
|
5
5
|
import { DashboardActions } from '../../../dashboard/store/dashboard.actions';
|
|
6
6
|
import { DashboardSelectors } from '../../../dashboard/store/dashboard.selectors';
|
|
@@ -49,7 +49,7 @@ export class DataSourceEffects {
|
|
|
49
49
|
actions.push(DataSourceActions.namedQuery.load());
|
|
50
50
|
return actions;
|
|
51
51
|
}), catchError((error) => [DataSourceActions.namedQuery.failure({ error })])));
|
|
52
|
-
this.getNamedQuery$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.load), switchMap(() => this.dataSourceService.get()), map((namedQueryList) => DataSourceActions.namedQuery.loaded({ list: namedQueryList })), catchError((error) => [DataSourceActions.namedQuery.failure({ error })])));
|
|
52
|
+
this.getNamedQuery$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.load), debounceTime(100), switchMap(() => this.dataSourceService.get()), map((namedQueryList) => DataSourceActions.namedQuery.loaded({ list: namedQueryList })), catchError((error) => [DataSourceActions.namedQuery.failure({ error })])));
|
|
53
53
|
this.loaded$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.loaded), map((action) => {
|
|
54
54
|
return DashboardActions.setAvailableNamedQueries({ names: action.list.map((nq) => nq.id) });
|
|
55
55
|
})));
|
|
@@ -95,7 +95,7 @@ export class DataSourceEffects {
|
|
|
95
95
|
this.loadedDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.loadDataset), mergeMap((action) => this.dataSourceService
|
|
96
96
|
.getDatasets()
|
|
97
97
|
.pipe(map((dsd) => DataSourceActions.dataset.loadedDataset({ datasets: dsd }))))));
|
|
98
|
-
this.loadDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.load), mergeMap((action) => [DataSourceActions.namedQuery.load(), DataSourceActions.dataset.loadDataset()])));
|
|
98
|
+
this.loadDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.load), debounceTime(100), mergeMap((action) => [DataSourceActions.namedQuery.load(), DataSourceActions.dataset.loadDataset()])));
|
|
99
99
|
this.createDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.create), switchMap((props) => this.dataSourceService
|
|
100
100
|
.addDataset(props.dataset)
|
|
101
101
|
.pipe(mergeMap(() => [
|
|
@@ -150,4 +150,4 @@ export class DataSourceEffects {
|
|
|
150
150
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DataSourceEffects, decorators: [{
|
|
151
151
|
type: Injectable
|
|
152
152
|
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.SearchService }, { type: i3.DataSourceService }, { type: i4.PrySnackbarService }, { type: i5.PryI18nService }, { type: i6.Store }, { type: i7.PryDialogService }]; } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBd0IsTUFBTSxtREFBbUQsQ0FBQztBQUlwSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFJOUQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLFFBQWlCLEVBQ2pCLGFBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxRQUE0QixFQUM1QixTQUF5QixFQUN6QixLQUFZLEVBQ1osU0FBMkI7UUFOM0IsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixrQkFBYSxHQUFiLGFB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QUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNsRCxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQ2xGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN0RixDQUNGLENBQ0YsQ0FDRixDQUFDO0lBNVRDLENBQUM7OEdBWE8saUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWN0aW9uLCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2Rhc2hib2FyZC9zdG9yZS9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9kYXNoYm9hcmQvc3RvcmUvZGFzaGJvYXJkLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCBQcnlEaWFsb2dDb25maXJtRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvb3ZlcmxheS9kaWFsb2ctY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvb3ZlcmxheS9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZWxlY3RvcnMgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBTZWFyY2hBY3Rpb25zIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5hY3Rpb25zJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZUFjdGlvbnMgfSBmcm9tICcuL2RhdGEtc291cmNlLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGF0YXNldCwgTmFtZWRRdWVyeSB9IGZyb20gJy4vZGF0YS1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVNlbGVjdG9ycyB9IGZyb20gJy4vZGF0YS1zb3VyY2Uuc2VsZWN0b3JzJztcbmltcG9ydCB7IERhdGFTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VFZmZlY3RzIHtcbiAgcHJpdmF0ZSBpZE5hbWVkUXVlcnk/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU2VydmljZTogRGF0YVNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogUHJ5U25hY2tiYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHByeURpYWxvZzogUHJ5RGlhbG9nU2VydmljZVxuICApIHt9XG5cbiAgcG9zdE5hbWVRdWVyeSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5wb3N0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yYW5kb21Db2xvcikpLFxuICAgICAgc3dpdGNoTWFwKChbYWN0aW9uLCByYW5kb21Db2xvcl0pID0+IHtcbiAgICAgICAgY29uc3QgeyBuYW1lLCBpZCwgcGF5bG9hZCwgZGVzY3JpcHRpb24sIGNvbG9yLCBmYXZvcml0ZSwgaXNFZGl0LCB2aXNpYmlsaXR5IH0gPSBhY3Rpb247XG4gICAgICAgIHRoaXMuaWROYW1lZFF1ZXJ5ID0gaXNFZGl0ID8gaWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IG5hbWVkUXVlcnk6IE5hbWVkUXVlcnkgPSB7XG4gICAgICAgICAgaWQ6IGlkID8/ICcnLFxuICAgICAgICAgIHNvdXJjZVR5cGU6ICduYW1lZFF1ZXJ5JyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJpbGl0eSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgcmVxdWVzdDogcGF5bG9hZCxcbiAgICAgICAgICBjb2xvcjogY29sb3IgPz8gcmFuZG9tQ29sb3IsXG4gICAgICAgICAgZmF2b3JpdGVcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UucG9zdChuYW1lZFF1ZXJ5KTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCBhY3Rpb25zID0gW10gYXMgQWN0aW9uW107XG4gICAgICAgIGlmICh0aGlzLmlkTmFtZWRRdWVyeSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7IGlkOiB0aGlzLmlkTmFtZWRRdWVyeSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pZE5hbWVkUXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIGFjdGlvbnMucHVzaChEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmxvYWQoKSk7XG4gICAgICAgIHJldHVybiBhY3Rpb25zO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICApXG4gICk7XG5cbiAgZ2V0TmFtZWRRdWVyeSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5sb2FkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmdldCgpKSxcbiAgICAgIG1hcCgobmFtZWRRdWVyeUxpc3Q6IE5hbWVkUXVlcnlbXSkgPT4gRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5sb2FkZWQoeyBsaXN0OiBuYW1lZFF1ZXJ5TGlzdCB9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICApXG4gICk7XG5cbiAgbG9hZGVkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmxvYWRlZCksXG4gICAgICBtYXAoKGFjdGlvbjogeyBsaXN0OiBOYW1lZFF1ZXJ5W107IHR5cGU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnNldEF2YWlsYWJsZU5hbWVkUXVlcmllcyh7IG5hbWVzOiBhY3Rpb24ubGlzdC5tYXAoKG5xKSA9PiBucS5pZCkgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBkZWxldGVOYW1lZFF1ZXJ5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmRlbGV0ZSksXG4gICAgICBzd2l0Y2hNYXAoKHByb3BzOiB7IGlkOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZS5kZWxldGUocHJvcHMuaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkubG9hZCgpXSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgYWRkRmF2b3JpdGVOYW1lZFF1ZXJ5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmFkZEZhdm9yaXRlKSxcbiAgICAgIHN3aXRjaE1hcCgocHJvcHM6IHsgaWQ6IHN0cmluZyB9KSA9PiB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmFkZEZhdm9yaXRlKHByb3BzLmlkKSksXG4gICAgICBtZXJnZU1hcCgoKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5sb2FkKCldKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVGYXZvcml0ZU5hbWVkUXVlcnkkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZGVsZXRlRmF2b3JpdGUpLFxuICAgICAgc3dpdGNoTWFwKChwcm9wczogeyBpZDogc3RyaW5nIH0pID0+IHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZGVsZXRlRmF2b3JpdGUocHJvcHMuaWQpKSxcbiAgICAgIG1lcmdlTWFwKCgpID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmxvYWQoKV0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgKVxuICApO1xuXG4gIHRyeUVkaXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZWRpdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmVkaXRJblByb2dyZXNzKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGluUHJvZ3Jlc3NdKSA9PiB7XG4gICAgICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgICAgIHJldHVybiBEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5Lm9wZW5FZGl0KGFjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuYWxyZWFkeUVkaXRpbmcnKSxcbiAgICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5mYWlsdXJlKHsgZXJyb3I6IG5ldyBFcnJvcignQHByeS5zZWFyY2gubmFtZWRRdWVyeS5hbHJlYWR5RWRpdGluZycpIH0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVXaWRnZXRBZnRlclNhdmUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgLy8gVXNpbmcgc3RyaW5ncyB0byBwcmV2ZW50IGhhdmluZyBjb3JlIG1vZHVsZSBkZXBlbmRpbmcgb24gc2VhcmNoIG1vZHVsZVxuICAgICAgb2ZUeXBlKCdbU2VhcmNoTW9ub0NsYXNzXSBzYXZlJywgJ1tTZWFyY2hNdWx0aUNsYXNzXSBsYXVuY2ggc2F2ZScsICdbU2VhcmNoIEZ1bGx0ZXh0XSBzYXZlJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5lZGl0RnJvbVdpZGdldCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuY3VycmVudEVkaXQpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCBmcm9tV2lkZ2V0LCBjdXJyZW50RWRpdCwgd2luZG93TWFuaWZlc3RdKSA9PiBmcm9tV2lkZ2V0ICE9PSB1bmRlZmluZWQpLFxuICAgICAgbWFwKChbYWN0aW9uLCBmcm9tV2lkZ2V0LCBjdXJyZW50RWRpdCwgd2luZG93TWFuaWZlc3RdKSA9PiB7XG4gICAgICAgIGNvbnN0IHdpZGdldE1hbmlmZXN0Q29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkod2luZG93TWFuaWZlc3Qud2lkZ2V0c1tmcm9tV2lkZ2V0Py53aWRnZXRJbmRleCA/PyAwXSkpO1xuICAgICAgICAvLyBSZXBsYWNpbmcgdXBkYXRlZCBxdWVyeSBpZCBieSBuZXcgcXVlcnkgaWRcbiAgICAgICAgY29uc3QgYXJyYXlPZk5hbWVkUXVlcnkgPSBBcnJheS5pc0FycmF5KHdpZGdldE1hbmlmZXN0Q29weS5uYW1lZFF1ZXJ5KVxuICAgICAgICAgID8gd2lkZ2V0TWFuaWZlc3RDb3B5Lm5hbWVkUXVlcnlcbiAgICAgICAgICA6IFt3aWRnZXRNYW5pZmVzdENvcHkubmFtZWRRdWVyeV07XG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZSA6IHdlIGRvbid0IHdhbnQgdG8gbWFrZSBjb3JlIGRlcGVuZGluZyBvbiBzZWFyY2hcbiAgICAgICAgY29uc3QgbmV3UXVlcnlJZCA9IGFjdGlvbi5pZDtcbiAgICAgICAgY29uc3QgcHJldmlvdXNOcUluZGV4ID0gYXJyYXlPZk5hbWVkUXVlcnkuaW5kZXhPZihmcm9tV2lkZ2V0Py5lZGl0ZWRRdWVyeSk7XG4gICAgICAgIGlmIChwcmV2aW91c05xSW5kZXggPj0gMCkge1xuICAgICAgICAgIGFycmF5T2ZOYW1lZFF1ZXJ5W3ByZXZpb3VzTnFJbmRleF0gPSBuZXdRdWVyeUlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEVkaXRpbmcgYSByZXF1ZXN0IHRoYXQncyBub3QgaW4gdGhlIHdpZGdldC4gQWRkaW5nIGl0XG4gICAgICAgICAgYXJyYXlPZk5hbWVkUXVlcnkucHVzaChuZXdRdWVyeUlkKTtcbiAgICAgICAgfVxuICAgICAgICB3aWRnZXRNYW5pZmVzdENvcHkubmFtZWRRdWVyeSA9IGFycmF5T2ZOYW1lZFF1ZXJ5O1xuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldE1hbmlmZXN0KHtcbiAgICAgICAgICBpbmRleDogZnJvbVdpZGdldD8ud2lkZ2V0SW5kZXggPz8gMCxcbiAgICAgICAgICBtYW5pZmVzdDogd2lkZ2V0TWFuaWZlc3RDb3B5XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbG9hZGVkRGF0YXNldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgLmdldERhdGFzZXRzKClcbiAgICAgICAgICAucGlwZShtYXAoKGRzZCkgPT4gRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkZWREYXRhc2V0KHsgZGF0YXNldHM6IGRzZCB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWREYXRhc2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5sb2FkKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmxvYWQoKSwgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpXSlcbiAgICApXG4gICk7XG5cbiAgY3JlYXRlRGF0YXNldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5jcmVhdGUpLFxuICAgICAgc3dpdGNoTWFwKChwcm9wczogeyBkYXRhc2V0OiBEYXRhc2V0OyByb3V0ZTogc3RyaW5nIH0pID0+XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAuYWRkRGF0YXNldChwcm9wcy5kYXRhc2V0KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmxvYWREYXRhc2V0KCksXG4gICAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQudW5zZWxlY3REYXRhc2V0KCksXG4gICAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuY3JlYXRlZCh7IHBhdGg6IHByb3BzLnJvdXRlIH0pXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVEYXRhc2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LnVwZGF0ZSksXG4gICAgICBzd2l0Y2hNYXAoKHByb3BzOiB7IGRhdGFzZXQ6IERhdGFzZXQ7IHJvdXRlOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxuICAgICAgICAgIC51cGRhdGVEYXRhc2V0KHByb3BzLmRhdGFzZXQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKSxcbiAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC51bnNlbGVjdERhdGFzZXQoKSxcbiAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC51cGRhdGVkKHsgcGF0aDogcHJvcHMucm91dGUgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IFtEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZURhdGFzZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZGVsZXRlKSxcbiAgICAgIHN3aXRjaE1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmRlbGV0ZURhdGFzZXQoYWN0aW9uLm5hbWUpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpLFxuICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC51bnNlbGVjdERhdGFzZXQoKSxcbiAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZGVsZXRlZCh7IGFkZFJvdXRlOiBhY3Rpb24uYWRkUm91dGUgfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXREYXRhc2V0QnlJZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5nZXREYXRhc2V0QnlJZCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmdldERhdGFzZXRCeUlkKGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKGRhdGEpID0+IERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZ2V0RGF0YXNldEJ5SWRTdWNjZXNzKHsgZGF0YSB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmdldERhdGFzZXRCeUlkRmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0VmVyc2lvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zKSxcbiAgICAgIHN3aXRjaE1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmdldERhdGFzZXRWZXJzaW9ucygpLnBpcGUoXG4gICAgICAgICAgbWFwKCh2ZXJzaW9ucykgPT4gRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5saXN0VmVyc2lvbnNTdWNjZXNzKHsgdmVyc2lvbnMgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKF8pID0+IFtEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0Lmxpc3RWZXJzaW9uc0ZhaWx1cmUoKV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdFZlcnNpb25zQnlJZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5saXN0VmVyc2lvbnNCeURhdGFzZXRJZCksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZS5nZXREYXRhc2V0VmVyc2lvbnNCeUlkKGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKHZlcnNpb25zKSA9PiBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LnVwZGF0ZVZlcnNpb25MaXN0KHsgaWQ6IGFjdGlvbi5pZCwgdmVyc2lvbnMgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKF8pID0+IFtEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0Lmxpc3RWZXJzaW9uc0ZhaWx1cmUoKV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uZmlybURhdGFzb3VyY2VEZWxldGlvbiQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuY29uZmlybURhdGFTb3VyY2VEZWxldGlvbiksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICAgICAgICB0aXRsZTogJ0BwcnkuYWRtaW4uaW5mb01vZGFsVGl0bGUnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ0BwcnkuYWRtaW4uZGF0YXNldC5kZWxldGUnLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LmFkbWluLmRlbGV0ZScsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5kZWxldGUoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhY3Rpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGU6IGFjdGlvbi5yb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgYWRkUm91dGU6IGFjdGlvbi5hZGRSb3V0ZVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHsgaWQ6IDAsIGxhYmVsOiAnQHByeS5hZG1pbi5jYW5jZWwnIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgeyBkYXRhIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZGVhY3RpdmF0ZURhdGFzZXRWZXJzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmRlYWN0aXZhdGVEYXRhc2V0VmVyc2lvbiksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbjogYW55KSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmRlYWN0aXZhdGVEYXRhc2V0VmVyc2lvbihhY3Rpb24udmVyc2lvbklkKS5waXBlKFxuICAgICAgICAgIG1hcCgoZGF0YXNldFZlcnNpb24pID0+IERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZGVhY3RpdmF0ZURhdGFzZXRWZXJzaW9uU3VjY2Vzcyh7IGRhdGFzZXRWZXJzaW9uIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZGVhY3RpdmF0ZURhdGFzZXRWZXJzaW9uRmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBhY3RpdmF0ZURhdGFzZXRWZXJzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmFjdGl2YXRlRGF0YXNldFZlcnNpb24pLFxuICAgICAgc3dpdGNoTWFwKChhY3Rpb246IGFueSkgPT5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZS5hY3RpdmF0ZURhdGFzZXRWZXJzaW9uKGFjdGlvbi52ZXJzaW9uSWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhc2V0VmVyc2lvbikgPT4gRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5hY3RpdmF0ZURhdGFzZXRWZXJzaW9uU3VjY2Vzcyh7IGRhdGFzZXRWZXJzaW9uIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuYWN0aXZhdGVEYXRhc2V0VmVyc2lvbkZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgYWN0aXZhdGVPckRlYWN0aXZhdGVEYXRhc2V0VmVyc2lvblN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFxuICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmFjdGl2YXRlRGF0YXNldFZlcnNpb25TdWNjZXNzLFxuICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmRlYWN0aXZhdGVEYXRhc2V0VmVyc2lvblN1Y2Nlc3NcbiAgICAgICksXG4gICAgICBtYXAoKGFjdGlvbjogYW55KSA9PiBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0Lmxpc3RWZXJzaW9ucygpKVxuICAgIClcbiAgKTtcblxuICBwcmV2aWV3c0dldEJ5SWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQucHJldmlld3MuZ2V0QnlJZCksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbjogYW55KSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmdldFByZXZpZXdzKGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKHByZXZpZXdzKSA9PiBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LnByZXZpZXdzLmdldEJ5SWRTdWNjZXNzKHsgcHJldmlld3MgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5wcmV2aWV3cy5nZXRCeUlkRmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQXdCLE1BQU0sbURBQW1ELENBQUM7QUFJcEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBSTlELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFDVSxRQUFpQixFQUNqQixhQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsUUFBNEIsRUFDNUIsU0FBeUIsRUFDekIsS0FBWSxFQUNaLFNBQTJCO1FBTjNCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsa0JB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QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2xELFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDaEQsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFDbEYsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3RGLENBQ0YsQ0FDRixDQUNGLENBQUM7SUE5VEMsQ0FBQzs4R0FYTyxpQkFBaUI7a0hBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBY3Rpb24sIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9kYXNoYm9hcmQvc3RvcmUvZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgUHJ5RGlhbG9nQ29uZmlybURhdGEgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFByeURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU2VsZWN0b3JzIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU2VhcmNoQWN0aW9ucyB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2guYWN0aW9ucyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFTb3VyY2VBY3Rpb25zIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS5hY3Rpb25zJztcbmltcG9ydCB7IERhdGFzZXQsIE5hbWVkUXVlcnkgfSBmcm9tICcuL2RhdGEtc291cmNlLm1vZGVsJztcbmltcG9ydCB7IERhdGFTb3VyY2VTZWxlY3RvcnMgfSBmcm9tICcuL2RhdGEtc291cmNlLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBEYXRhU291cmNlU2VydmljZSB9IGZyb20gJy4vZGF0YS1zb3VyY2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlRWZmZWN0cyB7XG4gIHByaXZhdGUgaWROYW1lZFF1ZXJ5Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YVNvdXJjZVNlcnZpY2U6IERhdGFTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogUHJ5STE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBwcnlEaWFsb2c6IFByeURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIHBvc3ROYW1lUXVlcnkkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkucG9zdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmFuZG9tQ29sb3IpKSxcbiAgICAgIHN3aXRjaE1hcCgoW2FjdGlvbiwgcmFuZG9tQ29sb3JdKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgaWQsIHBheWxvYWQsIGRlc2NyaXB0aW9uLCBjb2xvciwgZmF2b3JpdGUsIGlzRWRpdCwgdmlzaWJpbGl0eSB9ID0gYWN0aW9uO1xuICAgICAgICB0aGlzLmlkTmFtZWRRdWVyeSA9IGlzRWRpdCA/IGlkIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBuYW1lZFF1ZXJ5OiBOYW1lZFF1ZXJ5ID0ge1xuICAgICAgICAgIGlkOiBpZCA/PyAnJyxcbiAgICAgICAgICBzb3VyY2VUeXBlOiAnbmFtZWRRdWVyeScsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHkgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgIHJlcXVlc3Q6IHBheWxvYWQsXG4gICAgICAgICAgY29sb3I6IGNvbG9yID8/IHJhbmRvbUNvbG9yLFxuICAgICAgICAgIGZhdm9yaXRlXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLnBvc3QobmFtZWRRdWVyeSk7XG4gICAgICB9KSxcbiAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IFtdIGFzIEFjdGlvbltdO1xuICAgICAgICBpZiAodGhpcy5pZE5hbWVkUXVlcnkpIHtcbiAgICAgICAgICBhY3Rpb25zLnB1c2goU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoeyBpZDogdGhpcy5pZE5hbWVkUXVlcnkgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaWROYW1lZFF1ZXJ5ID0gdW5kZWZpbmVkO1xuICAgICAgICBhY3Rpb25zLnB1c2goRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5sb2FkKCkpO1xuICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgKVxuICApO1xuXG4gIGdldE5hbWVkUXVlcnkkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkubG9hZCksXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmdldCgpKSxcbiAgICAgIG1hcCgobmFtZWRRdWVyeUxpc3Q6IE5hbWVkUXVlcnlbXSkgPT4gRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5sb2FkZWQoeyBsaXN0OiBuYW1lZFF1ZXJ5TGlzdCB9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICApXG4gICk7XG5cbiAgbG9hZGVkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmxvYWRlZCksXG4gICAgICBtYXAoKGFjdGlvbjogeyBsaXN0OiBOYW1lZFF1ZXJ5W107IHR5cGU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnNldEF2YWlsYWJsZU5hbWVkUXVlcmllcyh7IG5hbWVzOiBhY3Rpb24ubGlzdC5tYXAoKG5xKSA9PiBucS5pZCkgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBkZWxldGVOYW1lZFF1ZXJ5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmRlbGV0ZSksXG4gICAgICBzd2l0Y2hNYXAoKHByb3BzOiB7IGlkOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZS5kZWxldGUocHJvcHMuaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkubG9hZCgpXSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgYWRkRmF2b3JpdGVOYW1lZFF1ZXJ5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmFkZEZhdm9yaXRlKSxcbiAgICAgIHN3aXRjaE1hcCgocHJvcHM6IHsgaWQ6IHN0cmluZyB9KSA9PiB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmFkZEZhdm9yaXRlKHByb3BzLmlkKSksXG4gICAgICBtZXJnZU1hcCgoKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5sb2FkKCldKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVGYXZvcml0ZU5hbWVkUXVlcnkkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZGVsZXRlRmF2b3JpdGUpLFxuICAgICAgc3dpdGNoTWFwKChwcm9wczogeyBpZDogc3RyaW5nIH0pID0+IHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZGVsZXRlRmF2b3JpdGUocHJvcHMuaWQpKSxcbiAgICAgIG1lcmdlTWFwKCgpID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmxvYWQoKV0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgKVxuICApO1xuXG4gIHRyeUVkaXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZWRpdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmVkaXRJblByb2dyZXNzKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGluUHJvZ3Jlc3NdKSA9PiB7XG4gICAgICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgICAgIHJldHVybiBEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5Lm9wZW5FZGl0KGFjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuYWxyZWFkeUVkaXRpbmcnKSxcbiAgICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5mYWlsdXJlKHsgZXJyb3I6IG5ldyBFcnJvcignQHByeS5zZWFyY2gubmFtZWRRdWVyeS5hbHJlYWR5RWRpdGluZycpIH0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVXaWRnZXRBZnRlclNhdmUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgLy8gVXNpbmcgc3RyaW5ncyB0byBwcmV2ZW50IGhhdmluZyBjb3JlIG1vZHVsZSBkZXBlbmRpbmcgb24gc2VhcmNoIG1vZHVsZVxuICAgICAgb2ZUeXBlKCdbU2VhcmNoTW9ub0NsYXNzXSBzYXZlJywgJ1tTZWFyY2hNdWx0aUNsYXNzXSBsYXVuY2ggc2F2ZScsICdbU2VhcmNoIEZ1bGx0ZXh0XSBzYXZlJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5lZGl0RnJvbVdpZGdldCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuY3VycmVudEVkaXQpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCBmcm9tV2lkZ2V0LCBjdXJyZW50RWRpdCwgd2luZG93TWFuaWZlc3RdKSA9PiBmcm9tV2lkZ2V0ICE9PSB1bmRlZmluZWQpLFxuICAgICAgbWFwKChbYWN0aW9uLCBmcm9tV2lkZ2V0LCBjdXJyZW50RWRpdCwgd2luZG93TWFuaWZlc3RdKSA9PiB7XG4gICAgICAgIGNvbnN0IHdpZGdldE1hbmlmZXN0Q29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkod2luZG93TWFuaWZlc3Qud2lkZ2V0c1tmcm9tV2lkZ2V0Py53aWRnZXRJbmRleCA/PyAwXSkpO1xuICAgICAgICAvLyBSZXBsYWNpbmcgdXBkYXRlZCBxdWVyeSBpZCBieSBuZXcgcXVlcnkgaWRcbiAgICAgICAgY29uc3QgYXJyYXlPZk5hbWVkUXVlcnkgPSBBcnJheS5pc0FycmF5KHdpZGdldE1hbmlmZXN0Q29weS5uYW1lZFF1ZXJ5KVxuICAgICAgICAgID8gd2lkZ2V0TWFuaWZlc3RDb3B5Lm5hbWVkUXVlcnlcbiAgICAgICAgICA6IFt3aWRnZXRNYW5pZmVzdENvcHkubmFtZWRRdWVyeV07XG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZSA6IHdlIGRvbid0IHdhbnQgdG8gbWFrZSBjb3JlIGRlcGVuZGluZyBvbiBzZWFyY2hcbiAgICAgICAgY29uc3QgbmV3UXVlcnlJZCA9IGFjdGlvbi5pZDtcbiAgICAgICAgY29uc3QgcHJldmlvdXNOcUluZGV4ID0gYXJyYXlPZk5hbWVkUXVlcnkuaW5kZXhPZihmcm9tV2lkZ2V0Py5lZGl0ZWRRdWVyeSk7XG4gICAgICAgIGlmIChwcmV2aW91c05xSW5kZXggPj0gMCkge1xuICAgICAgICAgIGFycmF5T2ZOYW1lZFF1ZXJ5W3ByZXZpb3VzTnFJbmRleF0gPSBuZXdRdWVyeUlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEVkaXRpbmcgYSByZXF1ZXN0IHRoYXQncyBub3QgaW4gdGhlIHdpZGdldC4gQWRkaW5nIGl0XG4gICAgICAgICAgYXJyYXlPZk5hbWVkUXVlcnkucHVzaChuZXdRdWVyeUlkKTtcbiAgICAgICAgfVxuICAgICAgICB3aWRnZXRNYW5pZmVzdENvcHkubmFtZWRRdWVyeSA9IGFycmF5T2ZOYW1lZFF1ZXJ5O1xuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldE1hbmlmZXN0KHtcbiAgICAgICAgICBpbmRleDogZnJvbVdpZGdldD8ud2lkZ2V0SW5kZXggPz8gMCxcbiAgICAgICAgICBtYW5pZmVzdDogd2lkZ2V0TWFuaWZlc3RDb3B5XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbG9hZGVkRGF0YXNldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgLmdldERhdGFzZXRzKClcbiAgICAgICAgICAucGlwZShtYXAoKGRzZCkgPT4gRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkZWREYXRhc2V0KHsgZGF0YXNldHM6IGRzZCB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWREYXRhc2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5sb2FkKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkubG9hZCgpLCBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmxvYWREYXRhc2V0KCldKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVEYXRhc2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmNyZWF0ZSksXG4gICAgICBzd2l0Y2hNYXAoKHByb3BzOiB7IGRhdGFzZXQ6IERhdGFzZXQ7IHJvdXRlOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxuICAgICAgICAgIC5hZGREYXRhc2V0KHByb3BzLmRhdGFzZXQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKSxcbiAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC51bnNlbGVjdERhdGFzZXQoKSxcbiAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5jcmVhdGVkKHsgcGF0aDogcHJvcHMucm91dGUgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IFtEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZURhdGFzZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQudXBkYXRlKSxcbiAgICAgIHN3aXRjaE1hcCgocHJvcHM6IHsgZGF0YXNldDogRGF0YXNldDsgcm91dGU6IHN0cmluZyB9KSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgLnVwZGF0ZURhdGFzZXQocHJvcHMuZGF0YXNldClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpLFxuICAgICAgICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LnVuc2VsZWN0RGF0YXNldCgpLFxuICAgICAgICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LnVwZGF0ZWQoeyBwYXRoOiBwcm9wcy5yb3V0ZSB9KVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICApXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlRGF0YXNldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5kZWxldGUpLFxuICAgICAgc3dpdGNoTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZGVsZXRlRGF0YXNldChhY3Rpb24ubmFtZSkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmxvYWREYXRhc2V0KCksXG4gICAgICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LnVuc2VsZWN0RGF0YXNldCgpLFxuICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5kZWxldGVkKHsgYWRkUm91dGU6IGFjdGlvbi5hZGRSb3V0ZSB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGdldERhdGFzZXRCeUlkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmdldERhdGFzZXRCeUlkKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZ2V0RGF0YXNldEJ5SWQoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1hcCgoZGF0YSkgPT4gRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5nZXREYXRhc2V0QnlJZFN1Y2Nlc3MoeyBkYXRhIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZ2V0RGF0YXNldEJ5SWRGYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RWZXJzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5saXN0VmVyc2lvbnMpLFxuICAgICAgc3dpdGNoTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZ2V0RGF0YXNldFZlcnNpb25zKCkucGlwZShcbiAgICAgICAgICBtYXAoKHZlcnNpb25zKSA9PiBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0Lmxpc3RWZXJzaW9uc1N1Y2Nlc3MoeyB2ZXJzaW9ucyB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoXykgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zRmFpbHVyZSgpXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0VmVyc2lvbnNCeUlkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0Lmxpc3RWZXJzaW9uc0J5RGF0YXNldElkKSxcbiAgICAgIHN3aXRjaE1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmdldERhdGFzZXRWZXJzaW9uc0J5SWQoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1hcCgodmVyc2lvbnMpID0+IERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQudXBkYXRlVmVyc2lvbkxpc3QoeyBpZDogYWN0aW9uLmlkLCB2ZXJzaW9ucyB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoXykgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zRmFpbHVyZSgpXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtRGF0YXNvdXJjZURlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5jb25maXJtRGF0YVNvdXJjZURlbGV0aW9uKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQHByeS5hZG1pbi5pbmZvTW9kYWxUaXRsZScsXG4gICAgICAgICAgICBtZXNzYWdlOiAnQHByeS5hZG1pbi5kYXRhc2V0LmRlbGV0ZScsXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkuYWRtaW4uZGVsZXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmRlbGV0ZSh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZTogYWN0aW9uLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICBhZGRSb3V0ZTogYWN0aW9uLmFkZFJvdXRlXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgeyBpZDogMCwgbGFiZWw6ICdAcHJ5LmFkbWluLmNhbmNlbCcgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkZWFjdGl2YXRlRGF0YXNldFZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZGVhY3RpdmF0ZURhdGFzZXRWZXJzaW9uKSxcbiAgICAgIHN3aXRjaE1hcCgoYWN0aW9uOiBhbnkpID0+XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZGVhY3RpdmF0ZURhdGFzZXRWZXJzaW9uKGFjdGlvbi52ZXJzaW9uSWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhc2V0VmVyc2lvbikgPT4gRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5kZWFjdGl2YXRlRGF0YXNldFZlcnNpb25TdWNjZXNzKHsgZGF0YXNldFZlcnNpb24gfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5kZWFjdGl2YXRlRGF0YXNldFZlcnNpb25GYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGFjdGl2YXRlRGF0YXNldFZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuYWN0aXZhdGVEYXRhc2V0VmVyc2lvbiksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbjogYW55KSA9PlxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmFjdGl2YXRlRGF0YXNldFZlcnNpb24oYWN0aW9uLnZlcnNpb25JZCkucGlwZShcbiAgICAgICAgICBtYXAoKGRhdGFzZXRWZXJzaW9uKSA9PiBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmFjdGl2YXRlRGF0YXNldFZlcnNpb25TdWNjZXNzKHsgZGF0YXNldFZlcnNpb24gfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5hY3RpdmF0ZURhdGFzZXRWZXJzaW9uRmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBhY3RpdmF0ZU9yRGVhY3RpdmF0ZURhdGFzZXRWZXJzaW9uU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoXG4gICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuYWN0aXZhdGVEYXRhc2V0VmVyc2lvblN1Y2Nlc3MsXG4gICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZGVhY3RpdmF0ZURhdGFzZXRWZXJzaW9uU3VjY2Vzc1xuICAgICAgKSxcbiAgICAgIG1hcCgoYWN0aW9uOiBhbnkpID0+IERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zKCkpXG4gICAgKVxuICApO1xuXG4gIHByZXZpZXdzR2V0QnlJZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5wcmV2aWV3cy5nZXRCeUlkKSxcbiAgICAgIHN3aXRjaE1hcCgoYWN0aW9uOiBhbnkpID0+XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZ2V0UHJldmlld3MoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1hcCgocHJldmlld3MpID0+IERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQucHJldmlld3MuZ2V0QnlJZFN1Y2Nlc3MoeyBwcmV2aWV3cyB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LnByZXZpZXdzLmdldEJ5SWRGYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { createEffect, ofType } from '@ngrx/effects';
|
|
3
|
+
import { debounceTime } from 'rxjs';
|
|
3
4
|
import { catchError, map, mergeMap } from 'rxjs/operators';
|
|
4
5
|
import { DashboardActions } from '../../../dashboard/store/dashboard.actions';
|
|
5
6
|
import { PryDialogConfirmComponent } from '../../components/overlay/dialog-confirm.component';
|
|
@@ -15,7 +16,7 @@ export class RelationTypesEffects {
|
|
|
15
16
|
this.service = service;
|
|
16
17
|
this.router = router;
|
|
17
18
|
this.pryDialog = pryDialog;
|
|
18
|
-
this.loadRelationsTypes$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.load), mergeMap((action) => this.service.getRelationsTypes().pipe(map((datas) => RelationTypesActions.loadSuccess({ datas })), catchError((error) => [RelationTypesActions.loadFailure({ error })])))));
|
|
19
|
+
this.loadRelationsTypes$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.load), debounceTime(100), mergeMap((action) => this.service.getRelationsTypes().pipe(map((datas) => RelationTypesActions.loadSuccess({ datas })), catchError((error) => [RelationTypesActions.loadFailure({ error })])))));
|
|
19
20
|
this.saveRelationType$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.saveRelationType), mergeMap((action) => this.service.addRelationType(action.id, action.name).pipe(map((data) => RelationTypesActions.saveRelationTypeSuccess()), catchError((error) => [RelationTypesActions.saveRelationTypeFailure({ error })])))));
|
|
20
21
|
this.saveRelationTypeSuccess$ = createEffect(() => this.actions$.pipe(ofType(RelationTypesActions.saveRelationTypeSuccess), map((action) => {
|
|
21
22
|
return RelationTypesActions.load();
|
|
@@ -45,4 +46,4 @@ export class RelationTypesEffects {
|
|
|
45
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: RelationTypesEffects, decorators: [{
|
|
46
47
|
type: Injectable
|
|
47
48
|
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.RelationTypesService }, { type: i3.Router }, { type: i4.PryDialogService }]; } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tdHlwZXMuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL3JlbGF0aW9uLXR5cGVzL3JlbGF0aW9uLXR5cGVzLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBd0IsTUFBTSxtREFBbUQsQ0FBQztBQUVwSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBSWhFLE1BQU0sT0FBTyxvQkFBb0I7SUF3RS9CLFlBQ1UsUUFBaUIsRUFDakIsT0FBNkIsRUFDN0IsTUFBYyxFQUNkLFNBQTJCO1FBSDNCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBM0VyQyx3QkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQ2pDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbEIs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LE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDdkYsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN0QixvQkFBb0IsQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO1NBQ3pELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDL0UsQ0FDRixDQUNGLENBQ0YsQ0FBQztJQU9DLENBQUM7OEdBN0VPLG9CQUFvQjtrSEFBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5hY3Rpb25zJztcbmltcG9ydCB7IFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIFByeURpYWxvZ0NvbmZpcm1EYXRhIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlbGF0aW9uVHlwZXNBY3Rpb25zIH0gZnJvbSAnLi9yZWxhdGlvbi10eXBlcy5hY3Rpb25zJztcbmltcG9ydCB7IFJlbGF0aW9uVHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWxhdGlvbi10eXBlcy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlbGF0aW9uVHlwZXNFZmZlY3RzIHtcbiAgbG9hZFJlbGF0aW9uc1R5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShSZWxhdGlvblR5cGVzQWN0aW9ucy5sb2FkKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFJlbGF0aW9uc1R5cGVzKCkucGlwZShcbiAgICAgICAgICBtYXAoKGRhdGFzKSA9PiBSZWxhdGlvblR5cGVzQWN0aW9ucy5sb2FkU3VjY2Vzcyh7IGRhdGFzIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW1JlbGF0aW9uVHlwZXNBY3Rpb25zLmxvYWRGYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVSZWxhdGlvblR5cGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFJlbGF0aW9uVHlwZXNBY3Rpb25zLnNhdmVSZWxhdGlvblR5cGUpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLmFkZFJlbGF0aW9uVHlwZShhY3Rpb24uaWQsIGFjdGlvbi5uYW1lKS5waXBlKFxuICAgICAgICAgIG1hcCgoZGF0YSkgPT4gUmVsYXRpb25UeXBlc0FjdGlvbnMuc2F2ZVJlbGF0aW9uVHlwZVN1Y2Nlc3MoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtSZWxhdGlvblR5cGVzQWN0aW9ucy5zYXZlUmVsYXRpb25UeXBlRmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlUmVsYXRpb25UeXBlU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoUmVsYXRpb25UeXBlc0FjdGlvbnMuc2F2ZVJlbGF0aW9uVHlwZVN1Y2Nlc3MpLFxuICAgICAgbWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIFJlbGF0aW9uVHlwZXNBY3Rpb25zLmxvYWQoKTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZVJlbGF0aW9uVHlwZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoUmVsYXRpb25UeXBlc0FjdGlvbnMuZGVsZXRlUmVsYXRpb25UeXBlKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKCFhY3Rpb24ucmVsYXRpb25UeXBlLmRlbGV0YWJsZSkge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LmFkbWluLmluZm9Nb2RhbFRpdGxlJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdAcHJ5LmFkbWluLnJlbGF0aW9uVHlwZXMuZGVsZXRlTW9kYWxNZXNzYWdlJyxcbiAgICAgICAgICAgIGFjdGlvbnM6IFt7IGlkOiAwLCBsYWJlbDogJ0BwcnkuYWRtaW4uY2xvc2VNb2RhbGUnIH1dXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGVSZWxhdGlvblR5cGUoYWN0aW9uLnJlbGF0aW9uVHlwZS5pZCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4gUmVsYXRpb25UeXBlc0FjdGlvbnMuZGVsZXRlUmVsYXRpb25UeXBlU3VjY2VzcygpKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbUmVsYXRpb25UeXBlc0FjdGlvbnMuZGVsZXRlUmVsYXRpb25UeXBlRmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVSZWxhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoUmVsYXRpb25UeXBlc0FjdGlvbnMuY3JlYXRlUmVsYXRpb24pLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZVJlbGF0aW9uKGFjdGlvbi5mcm9tLCBhY3Rpb24udG8sIGFjdGlvbi50eXBlSWQsIGFjdGlvbi5pbnZlcnNpb24pLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlbGF0aW9ucykgPT4gW1xuICAgICAgICAgICAgUmVsYXRpb25UeXBlc0FjdGlvbnMuY3JlYXRlUmVsYXRpb25TdWNjZXNzKCksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZFJlbGF0aW9uc1RvUmVzdWx0U2V0cyh7IHJlbGF0aW9ucyB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbUmVsYXRpb25UeXBlc0FjdGlvbnMuY3JlYXRlUmVsYXRpb25GYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBSZWxhdGlvblR5cGVzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcHJ5RGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlXG4gICkge31cbn1cbiJdfQ==
|
|
@@ -112,7 +112,7 @@ export class ContextMenuComponent extends SubscriptionnerDirective {
|
|
|
112
112
|
this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-detail' }));
|
|
113
113
|
}
|
|
114
114
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.WidgetFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i6.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i7.WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"
|
|
115
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i6.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i7.WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"] }, { kind: "component", type: i8.PryObjectEditionComponent, selector: "pry-object-creation", inputs: ["link", "object", "menu"], outputs: ["closed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.I18nPipe, name: "i18n" }] }); }
|
|
116
116
|
}
|
|
117
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, decorators: [{
|
|
118
118
|
type: Component,
|