@mediusinc/mng-commons 0.4.5 → 0.6.0
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/assets/i18n/en.json +2 -2
- package/assets/i18n/sl.json +2 -2
- package/esm2020/lib/api/services/api.abstract.service.mjs +15 -4
- package/esm2020/lib/api/services/crud-api.abstract.service.mjs +3 -3
- package/esm2020/lib/components/action/action.component.mjs +54 -10
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +3 -3
- package/esm2020/lib/components/action/route/action-route.component.mjs +3 -3
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +3 -3
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +3 -3
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +28 -4
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +14 -5
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +29 -4
- package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +17 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +3 -3
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +11 -7
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +5 -5
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
- package/esm2020/lib/components/form/formly/fields/index.mjs +2 -1
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +5 -5
- package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +5 -5
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +3 -3
- package/esm2020/lib/components/layout/footer.component.mjs +3 -3
- package/esm2020/lib/components/layout/main-layout.component.mjs +3 -3
- package/esm2020/lib/components/layout/menu-item.component.mjs +3 -3
- package/esm2020/lib/components/layout/menu.component.mjs +3 -3
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +3 -3
- package/esm2020/lib/components/layout/topbar.component.mjs +3 -3
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +3 -3
- package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +3 -3
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +3 -3
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +3 -3
- package/esm2020/lib/components/tableview/table/table.component.mjs +6 -7
- package/esm2020/lib/components/tableview/tableview.component.mjs +3 -3
- package/esm2020/lib/config/formly.config.mjs +9 -4
- package/esm2020/lib/descriptors/action.descriptor.mjs +34 -6
- package/esm2020/lib/descriptors/editor.descriptor.mjs +3 -3
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +21 -0
- package/esm2020/lib/descriptors/field.descriptor.mjs +61 -23
- package/esm2020/lib/descriptors/index.mjs +2 -2
- package/esm2020/lib/descriptors/table.descriptor.mjs +23 -13
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +4 -4
- package/esm2020/lib/directives/component.directive.mjs +3 -3
- package/esm2020/lib/directives/template.directive.mjs +3 -3
- package/esm2020/lib/mng-commons.module.mjs +13 -8
- package/esm2020/lib/pipes/boolean.pipe.mjs +3 -3
- package/esm2020/lib/pipes/enum.pipe.mjs +5 -5
- package/esm2020/lib/pipes/i18n-property.pipe.mjs +3 -3
- package/esm2020/lib/pipes/json-path.pipe.mjs +3 -3
- package/esm2020/lib/pipes/link-formatter.pipe.mjs +3 -3
- package/esm2020/lib/services/action-executor.service.mjs +31 -8
- package/esm2020/lib/services/commons.service.mjs +57 -83
- package/esm2020/lib/services/internal/commons-init.provider.mjs +4 -0
- package/esm2020/lib/services/internal/commons-init.service.mjs +44 -0
- package/esm2020/lib/services/internal/index.mjs +3 -0
- package/esm2020/lib/services/navigation.service.mjs +3 -3
- package/esm2020/lib/services/providers/index.mjs +1 -2
- package/esm2020/lib/services/view-container.component.service.mjs +3 -3
- package/esm2020/lib/types/type.model.mjs +1 -1
- package/esm2020/lib/utils/editor-formly.util.mjs +75 -15
- package/fesm2015/mediusinc-mng-commons.mjs +607 -296
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +596 -294
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/services/api.abstract.service.d.ts +1 -1
- package/lib/api/services/crud-api.abstract.service.d.ts +8 -8
- package/lib/components/action/action.component.d.ts +13 -2
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +4 -2
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +7 -1
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +4 -2
- package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +6 -0
- package/lib/components/form/formly/fields/index.d.ts +1 -0
- package/lib/components/tableview/table/table.component.d.ts +1 -1
- package/lib/descriptors/action.descriptor.d.ts +28 -3
- package/lib/descriptors/editor.descriptor.d.ts +2 -3
- package/lib/descriptors/field-validation.descriptor.d.ts +18 -0
- package/lib/descriptors/field.descriptor.d.ts +34 -21
- package/lib/descriptors/index.d.ts +1 -1
- package/lib/descriptors/table.descriptor.d.ts +5 -1
- package/lib/descriptors/tableview.descriptor.d.ts +2 -2
- package/lib/mng-commons.module.d.ts +58 -57
- package/lib/pipes/enum.pipe.d.ts +2 -1
- package/lib/services/commons.service.d.ts +5 -7
- package/lib/services/internal/commons-init.provider.d.ts +3 -0
- package/lib/services/internal/commons-init.service.d.ts +16 -0
- package/lib/services/internal/index.d.ts +2 -0
- package/lib/services/providers/index.d.ts +0 -1
- package/lib/types/type.model.d.ts +7 -0
- package/lib/utils/editor-formly.util.d.ts +2 -1
- package/package.json +6 -6
- package/scss/mng-overrides/_layout_dialog.scss +44 -14
- package/scss/mng-overrides/_theme_dialog.scss +2 -3
- package/esm2020/lib/descriptors/field.validator.mjs +0 -21
- package/esm2020/lib/services/providers/commons-init.provider.mjs +0 -4
- package/lib/descriptors/field.validator.d.ts +0 -18
- package/lib/services/providers/commons-init.provider.d.ts +0 -3
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
import { Inject, Injectable
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { NavigationEnd } from '@angular/router';
|
|
3
|
-
import { BehaviorSubject, ReplaySubject, Subject
|
|
3
|
+
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
|
|
4
4
|
import { filter, map } from 'rxjs/operators';
|
|
5
5
|
import { FilterDescriptor } from '../descriptors';
|
|
6
|
-
import { MNG_BROWSER_STORAGE_IT,
|
|
6
|
+
import { MNG_BROWSER_STORAGE_IT, MNG_MODULE_CONFIG_IT } from './tokens';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/router";
|
|
9
9
|
import * as i2 from "primeng/api";
|
|
10
10
|
import * as i3 from "@ngx-translate/core";
|
|
11
11
|
import * as i4 from "@angular/platform-browser";
|
|
12
|
-
import * as i5 from "./configuration.service";
|
|
13
12
|
export class MngCommonsService {
|
|
14
|
-
constructor(router, primengConfig, translate, titleService,
|
|
13
|
+
constructor(router, primengConfig, translate, titleService, moduleConfig, localStorage) {
|
|
15
14
|
this.router = router;
|
|
16
15
|
this.primengConfig = primengConfig;
|
|
17
16
|
this.translate = translate;
|
|
18
17
|
this.titleService = titleService;
|
|
19
|
-
this.configurationService = configurationService;
|
|
20
18
|
this.moduleConfig = moduleConfig;
|
|
21
19
|
this.localStorage = localStorage;
|
|
22
|
-
this.commonsInitializers = commonsInitializers;
|
|
23
|
-
// internal
|
|
24
|
-
this.isInitialized = false;
|
|
25
20
|
// menu
|
|
26
21
|
this._menuMode = 'sidebar';
|
|
27
22
|
this._menuModeSubject = new BehaviorSubject(this._menuMode);
|
|
@@ -148,70 +143,54 @@ export class MngCommonsService {
|
|
|
148
143
|
get user$() {
|
|
149
144
|
return this.userSubject.asObservable();
|
|
150
145
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
this.
|
|
197
|
-
this.
|
|
198
|
-
|
|
199
|
-
this.router.events
|
|
200
|
-
.pipe(
|
|
201
|
-
// Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end
|
|
202
|
-
filter(event => event instanceof NavigationEnd))
|
|
203
|
-
.subscribe(() => {
|
|
204
|
-
this.updateBreadcrumbs();
|
|
205
|
-
this.setPageTitle();
|
|
206
|
-
});
|
|
207
|
-
this.translate.onLangChange.subscribe(() => {
|
|
208
|
-
this.updateBreadcrumbs();
|
|
209
|
-
this.setPageTitle();
|
|
210
|
-
});
|
|
211
|
-
console.debug(`@mediusinc/mng-commons initialization complete.`);
|
|
212
|
-
return true;
|
|
213
|
-
}));
|
|
214
|
-
this.isInitialized = true;
|
|
146
|
+
reset() {
|
|
147
|
+
this._menuMode = this.moduleConfig?.menu?.mode ?? 'sidebar';
|
|
148
|
+
this._menuModeSubject.next(this._menuMode);
|
|
149
|
+
this._menuItems = this.moduleConfig?.menu?.menuItems ?? [];
|
|
150
|
+
this._menuPinEnabled = this.moduleConfig?.menu?.pinEnabled ?? false;
|
|
151
|
+
// visual
|
|
152
|
+
this._colorScheme = this.moduleConfig?.app?.colorScheme ?? 'light';
|
|
153
|
+
// ripple
|
|
154
|
+
this.primengConfig.ripple = true;
|
|
155
|
+
this.primengConfig.filterMatchModeOptions = {
|
|
156
|
+
text: [
|
|
157
|
+
FilterDescriptor.MatchModeEnum.Contains,
|
|
158
|
+
FilterDescriptor.MatchModeEnum.Equals,
|
|
159
|
+
FilterDescriptor.MatchModeEnum.NotEquals,
|
|
160
|
+
FilterDescriptor.MatchModeEnum.StartsWith,
|
|
161
|
+
FilterDescriptor.MatchModeEnum.EndsWith
|
|
162
|
+
],
|
|
163
|
+
numeric: [
|
|
164
|
+
FilterDescriptor.MatchModeEnum.Equals,
|
|
165
|
+
FilterDescriptor.MatchModeEnum.NotEquals,
|
|
166
|
+
FilterDescriptor.MatchModeEnum.LessThanOrEqualTo,
|
|
167
|
+
FilterDescriptor.MatchModeEnum.GreaterThanOrEqualTo
|
|
168
|
+
],
|
|
169
|
+
date: [
|
|
170
|
+
FilterDescriptor.MatchModeEnum.DateIs,
|
|
171
|
+
FilterDescriptor.MatchModeEnum.DateIsNot,
|
|
172
|
+
FilterDescriptor.MatchModeEnum.DateBefore,
|
|
173
|
+
FilterDescriptor.MatchModeEnum.DateAfter
|
|
174
|
+
]
|
|
175
|
+
};
|
|
176
|
+
// translate
|
|
177
|
+
this.translate.langs = this.appLanguages;
|
|
178
|
+
this.translate.use(this.appLanguage);
|
|
179
|
+
this.translate.get('mngPrime').subscribe(value => this.primengConfig.setTranslation(value));
|
|
180
|
+
this.routerEventsSubscription?.unsubscribe();
|
|
181
|
+
this.routerEventsSubscription = this.router.events
|
|
182
|
+
.pipe(
|
|
183
|
+
// Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end
|
|
184
|
+
filter(event => event instanceof NavigationEnd))
|
|
185
|
+
.subscribe(() => {
|
|
186
|
+
this.updateBreadcrumbs();
|
|
187
|
+
this.setPageTitle();
|
|
188
|
+
});
|
|
189
|
+
this.translateLangChangeSubscription?.unsubscribe();
|
|
190
|
+
this.translateLangChangeSubscription = this.translate.onLangChange.subscribe(() => {
|
|
191
|
+
this.updateBreadcrumbs();
|
|
192
|
+
this.setPageTitle();
|
|
193
|
+
});
|
|
215
194
|
}
|
|
216
195
|
// MENU actions
|
|
217
196
|
menuChangeActiveKey(key) {
|
|
@@ -351,20 +330,15 @@ export class MngCommonsService {
|
|
|
351
330
|
return titlePieces.join(' - ');
|
|
352
331
|
}
|
|
353
332
|
}
|
|
354
|
-
MngCommonsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
355
|
-
MngCommonsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
356
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
333
|
+
MngCommonsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngCommonsService, deps: [{ token: i1.Router }, { token: i2.PrimeNGConfig }, { token: i3.TranslateService }, { token: i4.Title }, { token: MNG_MODULE_CONFIG_IT }, { token: MNG_BROWSER_STORAGE_IT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
334
|
+
MngCommonsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngCommonsService });
|
|
335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngCommonsService, decorators: [{
|
|
357
336
|
type: Injectable
|
|
358
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.PrimeNGConfig }, { type: i3.TranslateService }, { type: i4.Title }, { type:
|
|
337
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.PrimeNGConfig }, { type: i3.TranslateService }, { type: i4.Title }, { type: undefined, decorators: [{
|
|
359
338
|
type: Inject,
|
|
360
339
|
args: [MNG_MODULE_CONFIG_IT]
|
|
361
340
|
}] }, { type: Storage, decorators: [{
|
|
362
341
|
type: Inject,
|
|
363
342
|
args: [MNG_BROWSER_STORAGE_IT]
|
|
364
|
-
}] }, { type: undefined, decorators: [{
|
|
365
|
-
type: Inject,
|
|
366
|
-
args: [MNG_COMMONS_INITIALIZER_IT]
|
|
367
|
-
}, {
|
|
368
|
-
type: Optional
|
|
369
343
|
}] }]; } });
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBeUIsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFJOUUsT0FBTyxFQUFDLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFnQixhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwSCxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSWhELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQUdsRyxNQUFNLE9BQU8saUJBQWlCO0lBNEIxQixZQUNZLE1BQWMsRUFDZCxhQUE0QixFQUM1QixTQUEyQixFQUMzQixZQUFtQixFQUNuQixvQkFBNkMsRUFDZixZQUE2QixFQUMzQixZQUFxQixFQUNJLG1CQUE2RDtRQVB0SCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQU87UUFDbkIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUNmLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQUNJLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMEM7UUFuQ2xJLFdBQVc7UUFDSCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUU5QixP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OzJCQUFDLDBCQUEwQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RpdGxlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQcmltZU5HQ29uZmlnfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0LCBtZXJnZU1hcCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01uZ01vZHVsZUNvbmZpZ30gZnJvbSAnLi4vY29uZmlnL21vZGVscyc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7SVVzZXIsIE1uZ01lbnVJdGVtfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdCcmVhZGNydW1iTWVudUl0ZW0sIE1uZ1JvdXRlckRhdGF9IGZyb20gJy4uL3JvdXRlci9tb2RlbHMnO1xuaW1wb3J0IHtNbmdDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtNTkdfQlJPV1NFUl9TVE9SQUdFX0lULCBNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVCwgTU5HX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4vdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0NvbW1vbnNTZXJ2aWNlIHtcbiAgICAvLyBpbnRlcm5hbFxuICAgIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgLy8gbWVudVxuICAgIHByaXZhdGUgX21lbnVNb2RlOiAnc3RhdGljJyB8ICdzaWRlYmFyJyB8ICdzbGltJyB8ICdvdmVybGF5JyA9ICdzaWRlYmFyJztcbiAgICBwcml2YXRlIF9tZW51TW9kZVN1YmplY3Q6IFN1YmplY3Q8J3N0YXRpYycgfCAnc2lkZWJhcicgfCAnc2xpbScgfCAnb3ZlcmxheSc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLl9tZW51TW9kZSk7XG4gICAgcHJpdmF0ZSBfbWVudUl0ZW1zOiBNbmdNZW51SXRlbVtdID0gW107XG4gICAgcHJpdmF0ZSBfbWVudVBpbkVuYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9tZW51QWN0aXZlS2V5U3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIF9tZW51UmVzZXRTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8vIGJyZWFkY3J1bWJzXG4gICAgcHJpdmF0ZSByZWFkb25seSBicmVhZGNydW1iSG9tZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1uZ01lbnVJdGVtIHwgbnVsbD4oe1xuICAgICAgICBpY29uOiAncGkgcGktaG9tZScsXG4gICAgICAgIHJvdXRlckxpbms6ICcvJ1xuICAgIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNbmdNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBicmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLy8gdmlzdWFsXG4gICAgcHJpdmF0ZSBfY29sb3JTY2hlbWU6ICdsaWdodCcgfCAnZGFyaycgPSAnbGlnaHQnO1xuXG4gICAgLy8gdXNlclxuICAgIHByaXZhdGUgX3VzZXI/OiBJVXNlcjtcbiAgICBwcml2YXRlIHVzZXJTdWJqZWN0OiBTdWJqZWN0PElVc2VyIHwgdW5kZWZpbmVkPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcHJpbWVuZ0NvbmZpZzogUHJpbWVOR0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTU5HX01PRFVMRV9DT05GSUdfSVQpIHByaXZhdGUgbW9kdWxlQ29uZmlnOiBNbmdNb2R1bGVDb25maWcsXG4gICAgICAgIEBJbmplY3QoTU5HX0JST1dTRVJfU1RPUkFHRV9JVCkgcHJpdmF0ZSBsb2NhbFN0b3JhZ2U6IFN0b3JhZ2UsXG4gICAgICAgIEBJbmplY3QoTU5HX0NPTU1PTlNfSU5JVElBTElaRVJfSVQpIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uc0luaXRpYWxpemVyczogUmVhZG9ubHlBcnJheTwoKSA9PiBPYnNlcnZhYmxlPHVua25vd24+PlxuICAgICkge31cblxuICAgIC8vIEFQUCBzZWN0aW9uXG5cbiAgICBwdWJsaWMgZ2V0IGFwcE5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5uYW1lID8/ICdhcHAubmFtZSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBPd25lcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/Lm93bmVyID8/ICdhcHAub3duZXInO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTG9nb0xpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGhMaWdodCA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvUGF0aExpZ2h0IDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExvZ29EYXJrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGhEYXJrID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29QYXRoRGFyayA6IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLnBuZyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMb2dvTmFtZUxpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoTGlnaHRcbiAgICAgICAgICAgID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29OYW1lUGF0aExpZ2h0XG4gICAgICAgICAgICA6IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby1hcHBuYW1lLnBuZyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMb2dvTmFtZURhcmsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGhEYXJrID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29OYW1lUGF0aERhcmsgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTGFuZ3VhZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubGFuZ3VhZ2VzID8/IFsnZW4nXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nJyk7XG4gICAgICAgIGlmIChsYW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFuZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBicm93c2VyTGFuZyA9IHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XG4gICAgICAgIGlmIChicm93c2VyTGFuZyAmJiB0aGlzLmFwcExhbmd1YWdlcy5zb21lKGwgPT4gbCA9PT0gYnJvd3NlckxhbmcpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcExhbmd1YWdlID0gYnJvd3Nlckxhbmc7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3Nlckxhbmc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gdGhpcy5hcHBMYW5ndWFnZXM/Lmxlbmd0aCA+IDAgPyB0aGlzLmFwcExhbmd1YWdlc1swXSA6ICdlbic7XG4gICAgICAgIHRoaXMuYXBwTGFuZ3VhZ2UgPSBkZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICAgIHJldHVybiBkZWZhdWx0TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBhcHBMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcExhbmd1YWdlcy5zb21lKGwgPT4gbCA9PT0gbGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nJywgbGFuZ3VhZ2UpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1FTlUgc2VjdGlvblxuXG4gICAgcHVibGljIGdldCBtZW51TW9kZUlzU3RhdGljKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudU1vZGUgPT09ICdzdGF0aWMnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudU1vZGVJc1N0YXRpYyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51TW9kZVN1YmplY3QucGlwZShtYXAoZSA9PiBlID09PSAnc3RhdGljJykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudU1vZGVJc092ZXJsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51TW9kZSA9PT0gJ292ZXJsYXknO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudU1vZGVJc092ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudU1vZGVTdWJqZWN0LnBpcGUobWFwKGUgPT4gZSA9PT0gJ292ZXJsYXknKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51TW9kZUlzU2xpbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVNb2RlID09PSAnc2xpbSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51TW9kZUlzU2xpbSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51TW9kZVN1YmplY3QucGlwZShtYXAoZSA9PiBlID09PSAnc2xpbScpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVNb2RlSXNTaWRlYmFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudU1vZGUgPT09ICdzaWRlYmFyJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVNb2RlSXNTaWRlYmFyJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVNb2RlU3ViamVjdC5waXBlKG1hcChlID0+IGUgPT09ICdzaWRlYmFyJykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudUFjdGl2ZUtleSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVBY3RpdmVLZXlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudVJlc2V0JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudVJlc2V0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVJdGVtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG1lbnVJdGVtcyhtZW51SXRlbXM6IE1uZ01lbnVJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zID0gbWVudUl0ZW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudVBpbkVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51UGluRW5hYmxlZDtcbiAgICB9XG5cbiAgICAvLyBCUkVBRENSVU1CIHNlY3Rpb25cbiAgICBwdWJsaWMgZ2V0IGJyZWFkY3J1bWJIb21lJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnJlYWRjcnVtYkhvbWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYnJlYWRjcnVtYnMkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5icmVhZGNydW1ic1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gVklTVUFMIHNlY3Rpb25cblxuICAgIHB1YmxpYyBnZXQgY29sb3JTY2hlbWVJc0xpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sb3JTY2hlbWUgPT09ICdsaWdodCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2xvclNjaGVtZUlzRGFyaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yU2NoZW1lID09PSAnZGFyayc7XG4gICAgfVxuXG4gICAgLy8gVVNFUiBzZWN0aW9uXG5cbiAgICBwdWJsaWMgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdXNlcih1c2VyOiBJVXNlciB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl91c2VyID0gdXNlcjtcbiAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXNlciQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0aWFsaXplKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgSW5pdGlhbGl6aW5nIEBtZWRpdXNpbmMvbW5nLWNvbW1vbnMuYCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UubG9hZEpzb25Tb3VyY2VzKCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKGpzb25Tb3VyY2VzUmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25zSW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYEluaXRpYWxpemluZyBAbWVkaXVzaW5jL21uZy1jb21tb25zIGluaXRpYWxpemVycy5gKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QodGhpcy5jb21tb25zSW5pdGlhbGl6ZXJzLm1hcChjaSA9PiBjaSgpKSkucGlwZShtYXAocmVzID0+IHJlcykpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbWVudVxuICAgICAgICAgICAgICAgIHRoaXMuX21lbnVNb2RlID0gdGhpcy5tb2R1bGVDb25maWc/Lm1lbnU/Lm1vZGUgPz8gJ3NpZGViYXInO1xuICAgICAgICAgICAgICAgIHRoaXMuX21lbnVNb2RlU3ViamVjdC5uZXh0KHRoaXMuX21lbnVNb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZW51SXRlbXMgPSB0aGlzLm1vZHVsZUNvbmZpZz8ubWVudT8ubWVudUl0ZW1zID8/IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuX21lbnVQaW5FbmFibGVkID0gdGhpcy5tb2R1bGVDb25maWc/Lm1lbnU/LnBpbkVuYWJsZWQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAvLyB2aXN1YWxcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2xvclNjaGVtZSA9IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmNvbG9yU2NoZW1lID8/ICdsaWdodCc7XG5cbiAgICAgICAgICAgICAgICAvLyByaXBwbGVcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lbmdDb25maWcucmlwcGxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lbmdDb25maWcuZmlsdGVyTWF0Y2hNb2RlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLkNvbnRhaW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLkVxdWFscyxcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5Ob3RFcXVhbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uU3RhcnRzV2l0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5FbmRzV2l0aFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBudW1lcmljOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uRXF1YWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLk5vdEVxdWFscyxcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5MZXNzVGhhbk9yRXF1YWxUbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5HcmVhdGVyVGhhbk9yRXF1YWxUb1xuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uRGF0ZUlzLFxuICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLkRhdGVJc05vdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5EYXRlQmVmb3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLkRhdGVBZnRlclxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmxhbmdzID0gdGhpcy5hcHBMYW5ndWFnZXM7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuYXBwTGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmdldCgnbW5nUHJpbWUnKS5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5wcmltZW5nQ29uZmlnLnNldFRyYW5zbGF0aW9uKHZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWx0ZXIgdGhlIE5hdmlnYXRpb25FbmQgZXZlbnRzIGFzIHRoZSBicmVhZGNydW1iIGlzIHVwZGF0ZWQgb25seSB3aGVuIHRoZSByb3V0ZSByZWFjaGVzIGl0cyBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWJzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1icygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgQG1lZGl1c2luYy9tbmctY29tbW9ucyBpbml0aWFsaXphdGlvbiBjb21wbGV0ZS5gKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIE1FTlUgYWN0aW9uc1xuXG4gICAgbWVudUNoYW5nZUFjdGl2ZUtleShrZXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tZW51QWN0aXZlS2V5U3ViamVjdC5uZXh0KGtleSk7XG4gICAgfVxuXG4gICAgbWVudVJlc2V0KCkge1xuICAgICAgICB0aGlzLl9tZW51UmVzZXRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gQlJFQURDUlVNQiBhY3Rpb25zXG5cbiAgICBwcml2YXRlIHVwZGF0ZUJyZWFkY3J1bWJzKCkge1xuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvb3RSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG5cbiAgICAgICAgY29uc3QgaG9tZUJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlSG9tZUJyZWFkY3J1bWIocm9vdFJvdXRlKTtcbiAgICAgICAgaWYgKGhvbWVCcmVhZGNydW1iKSB7XG4gICAgICAgICAgICBpZiAoaG9tZUJyZWFkY3J1bWIubGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGUuZ2V0KGhvbWVCcmVhZGNydW1iLmxhYmVsKS5zdWJzY3JpYmUoaTE4biA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGhvbWVCcmVhZGNydW1iLmxhYmVsID0gaTE4bjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVN1YmplY3QubmV4dChob21lQnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVTdWJqZWN0Lm5leHQoaG9tZUJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYnM6IE1uZ01lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvb3RSb3V0ZSwgW10sIGJyZWFkY3J1bWJzKTtcblxuICAgICAgICBjb25zdCBpMThuS2V5czogQXJyYXk8c3RyaW5nPiA9IGJyZWFkY3J1bWJzLmZpbHRlcihiID0+IHR5cGVvZiBiLmxhYmVsID09PSAnc3RyaW5nJykubWFwKGIgPT4gYi5sYWJlbCEpO1xuICAgICAgICBpZiAoaTE4bktleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmdldChpMThuS2V5cykuc3Vic2NyaWJlKGkxOG4gPT4ge1xuICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgYnJlYWRjcnVtYiBoaWVyYXJjaHlcbiAgICAgICAgICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKGIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYi5sYWJlbCAmJiBpMThuW2IubGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiLmxhYmVsID0gaTE4bltiLmxhYmVsXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gRW1pdCB0aGUgbmV3IGJyZWFkY3J1bWJzXG4gICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1N1YmplY3QubmV4dChicmVhZGNydW1icyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0Lm5leHQoYnJlYWRjcnVtYnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IE1uZ01lbnVJdGVtIHwgbnVsbCB7XG4gICAgICAgIGlmICghcm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gcm91dGUuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhO1xuICAgICAgICBjb25zdCBicmVhZGNydW1iUm91dGVEYXRhID0gcm91dGVEYXRhPy5icmVhZGNydW1iO1xuICAgICAgICBpZiAoYnJlYWRjcnVtYlJvdXRlRGF0YSAmJiB0eXBlb2YgYnJlYWRjcnVtYlJvdXRlRGF0YSA9PT0gJ29iamVjdCcgJiYgJ2lzSG9tZScgaW4gYnJlYWRjcnVtYlJvdXRlRGF0YSkge1xuICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWJSb3V0ZURhdGEuaXNIb21lID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHRoaXMuY3JlYXRlQnJlYWRjcnVtYignLycsIGJyZWFkY3J1bWJSb3V0ZURhdGEsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJyZWFkY3J1bWIuaWNvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYi5pY29uID0gJ3BpIHBpLWhvbWUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWRjcnVtYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlSG9tZUJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCwgcGFyZW50VXJsU2VnbWVudHM6IHN0cmluZ1tdLCBicmVhZGNydW1iczogTW5nTWVudUl0ZW1bXSkge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSByb3V0ZS5kYXRhIGFzIE1uZ1JvdXRlckRhdGE7XG4gICAgICAgIGNvbnN0IHJvdXRlVXJsU2VnbWVudHMgPSBwYXJlbnRVcmxTZWdtZW50cy5jb25jYXQocm91dGUudXJsLm1hcCh1cmwgPT4gdXJsLnBhdGgpKTtcbiAgICAgICAgY29uc3Qgcm91dGVVcmwgPSBgLyR7cm91dGVVcmxTZWdtZW50cy5qb2luKCcvJyl9YDtcbiAgICAgICAgaWYgKHJvdXRlRGF0YT8uYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YSA9IHJvdXRlRGF0YS5icmVhZGNydW1iO1xuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShicmVhZGNydW1iUm91dGVEYXRhKSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YUl0ZW0gb2YgYnJlYWRjcnVtYlJvdXRlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0gdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlVXJsLCBicmVhZGNydW1iUm91dGVEYXRhSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChicmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYnJlYWRjcnVtYlJvdXRlRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goLi4uYnJlYWRjcnVtYlJvdXRlRGF0YShyb3V0ZVVybCwgcm91dGUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHRoaXMuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZVVybCwgYnJlYWRjcnVtYlJvdXRlRGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlLmZpcnN0Q2hpbGQsIHJvdXRlVXJsU2VnbWVudHMsIGJyZWFkY3J1bWJzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUJyZWFkY3J1bWIocm91dGVVcmw6IHN0cmluZywgcm91dGVCcmVhZGNydW1iOiBzdHJpbmcgfCBNbmdCcmVhZGNydW1iTWVudUl0ZW0sIGluY2x1ZGVIb21lID0gZmFsc2UpOiBNbmdNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIHJvdXRlQnJlYWRjcnVtYiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHJvdXRlQnJlYWRjcnVtYixcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiByb3V0ZVVybFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaW5jbHVkZUhvbWUgJiYgdHlwZW9mIHJvdXRlQnJlYWRjcnVtYi5pc0hvbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgLy8gaG9tZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvdXRlQnJlYWRjcnVtYi5yb3V0ZXJMaW5rID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJvdXRlQnJlYWRjcnVtYi5yb3V0ZXJMaW5rID0gcm91dGVVcmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcm91dGVCcmVhZGNydW1iO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVElUTEUgc2VjdGlvblxuXG4gICAgcHVibGljIHNldFBhZ2VUaXRsZSh0aXRsZT86IHN0cmluZykge1xuICAgICAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRSb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBjdXJyZW50Um91dGUgPSBjdXJyZW50Um91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IGN1cnJlbnRSb3V0ZS5kYXRhIGFzIE1uZ1JvdXRlckRhdGE7XG4gICAgICAgIGNvbnN0IHBhZ2VUaXRsZSA9IHRpdGxlID8/IHJvdXRlRGF0YS5wYWdlVGl0bGU7XG5cbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5mb3JtYXRQYWdlVGl0bGUocGFnZVRpdGxlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQYWdlVGl0bGUodGl0bGVQcmVmaXg/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdGl0bGVQaWVjZXMgPSBbXTtcblxuICAgICAgICBpZiAodGl0bGVQcmVmaXgpIHtcbiAgICAgICAgICAgIHRpdGxlUGllY2VzLnB1c2godGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aXRsZVByZWZpeCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGl0bGVQaWVjZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhcHAubmFtZScpKTtcblxuICAgICAgICByZXR1cm4gdGl0bGVQaWVjZXMuam9pbignIC0gJyk7XG4gICAgfVxufVxuIl19
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUF5QixhQUFhLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUk5RSxPQUFPLEVBQUMsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDdkYsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxVQUFVLENBQUM7Ozs7OztBQUd0RSxNQUFNLE9BQU8saUJBQWlCO0lBNkIxQixZQUNZLE1BQWMsRUFDZCxhQUE0QixFQUM1QixTQUEyQixFQUMzQixZQUFtQixFQUNXLFlBQTZCLEVBQzNCLFlBQXFCO1FBTHJELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNXLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQTlCakUsT0FBTztRQUNDLGNBQVMsR0FBOEMsU0FBUyxDQUFDO1FBQ2pFLHFCQUFnQixHQUF1RCxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0csZUFBVSxHQUFrQixFQUFFLENBQUM7UUFDL0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUM5QyxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTFDLGNBQWM7UUFDRywwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBcUI7WUFDN0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsVUFBVSxFQUFFLEdBQUc7U0FDbEIsQ0FBQyxDQUFDO1FBQ2MsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBSTdFLFNBQVM7UUFDRCxpQkFBWSxHQUFxQixPQUFPLENBQUM7UUFJekMsZ0JBQVcsR0FBK0IsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFTcEUsQ0FBQztJQUVKLGNBQWM7SUFFZCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFJLFdBQVcsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSwrQkFBK0IsQ0FBQztJQUM3SixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSwrQkFBK0IsQ0FBQztJQUMzSixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxpQkFBaUI7WUFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGlCQUFpQjtZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxJQUFJLHVDQUF1QyxDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFlBQVksSUFBSSx1Q0FBdUMsQ0FBQztJQUMvSyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksRUFBRTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQy9CLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEYsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7UUFDbkMsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsV0FBVyxDQUFDLFFBQWdCO1FBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVELGVBQWU7SUFFZixJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsU0FBUyxDQUFDLFNBQXdCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixJQUFXLGtCQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlO0lBRWYsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLElBQUksQ0FBQyxJQUF1QjtRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDO1FBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFVBQVUsSUFBSSxLQUFLLENBQUM7UUFFcEUsU0FBUztRQUNULElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxJQUFJLE9BQU8sQ0FBQztRQUVuRSxTQUFTO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUc7WUFDeEMsSUFBSSxFQUFFO2dCQUNGLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRO2dCQUN2QyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTTtnQkFDckMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVM7Z0JBQ3hDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxVQUFVO2dCQUN6QyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUTthQUMxQztZQUNELE9BQU8sRUFBRTtnQkFDTCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTTtnQkFDckMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVM7Z0JBQ3hDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxpQkFBaUI7Z0JBQ2hELGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxvQkFBb0I7YUFDdEQ7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE1BQU07Z0JBQ3JDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTO2dCQUN4QyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsVUFBVTtnQkFDekMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVM7YUFDM0M7U0FDSixDQUFDO1FBRUYsWUFBWTtRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFNUYsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDN0MsSUFBSTtRQUNELG1HQUFtRztRQUNuRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQ2xEO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQywrQkFBK0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZTtJQUVmLG1CQUFtQixDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHFCQUFxQjtJQUViLGlCQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRTtZQUN2QyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLFNBQVMsQ0FBQztTQUNyRDtRQUNELElBQUksSUFBSSxDQUFDLG1DQUFtQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsbUNBQW1DLEdBQUcsU0FBUyxDQUFDO1NBQ3hEO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUV4RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsSUFBSSxjQUFjLEVBQUU7WUFDaEIsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFO2dCQUN0QixJQUFJLENBQUMsbUNBQW1DLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDakcsY0FBYyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQzVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNuRDtTQUNKO1FBRUQsTUFBTSxXQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVyRCxNQUFNLFFBQVEsR0FBa0IsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUM7UUFDeEcsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNsRixxQ0FBcUM7Z0JBQ3JDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUMxQixDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzNCO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILDJCQUEyQjtnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQW9DO1FBQy9ELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQXFCLENBQUM7UUFDOUMsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLEVBQUUsVUFBVSxDQUFDO1FBQ2xELElBQUksbUJBQW1CLElBQUksT0FBTyxtQkFBbUIsS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLG1CQUFtQixFQUFFO1lBQ25HLElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekUsSUFBSSxVQUFVLEVBQUU7Z0JBQ1osSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO29CQUN4QyxVQUFVLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztpQkFDbEM7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7YUFDckI7U0FDSjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQW9DLEVBQUUsaUJBQTJCLEVBQUUsV0FBMEI7UUFDckgsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU87U0FDVjtRQUVELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFxQixDQUFDO1FBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUU7WUFDdkIsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBRWpELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUNwQyxLQUFLLE1BQU0sdUJBQXVCLElBQUksbUJBQW1CLEVBQUU7b0JBQ3ZELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztvQkFDNUUsSUFBSSxVQUFVLEVBQUU7d0JBQ1osV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDaEM7aUJBQ0o7YUFDSjtpQkFBTSxJQUFJLE9BQU8sbUJBQW1CLEtBQUssVUFBVSxFQUFFO2dCQUNsRCxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLFVBQVUsRUFBRTtvQkFDWixXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNoQzthQUNKO1NBQ0o7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxlQUErQyxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzNHLElBQUksT0FBTyxlQUFlLEtBQUssUUFBUSxFQUFFO1lBQ3JDLE9BQU87Z0JBQ0gsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLFVBQVUsRUFBRSxRQUFRO2FBQ3ZCLENBQUM7U0FDTDthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcsSUFBSSxPQUFPLGVBQWUsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFO2dCQUMvRCw4QkFBOEI7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLE9BQU8sZUFBZSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7Z0JBQ25ELGVBQWUsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO2FBQ3pDO1lBQ0QsT0FBTyxlQUFlLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO0lBRVQsWUFBWSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUN6RCxPQUFPLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDNUIsWUFBWSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7U0FDMUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsSUFBcUIsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUUvQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxXQUFvQjtRQUN4QyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFFdkIsSUFBSSxXQUFXLEVBQUU7WUFDYixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFFRCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFckQsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OzhHQXBZUSxpQkFBaUIsMEhBa0NkLG9CQUFvQixhQUNwQixzQkFBc0I7a0hBbkN6QixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBbUNGLE1BQU07MkJBQUMsb0JBQW9COzhCQUMwQixPQUFPOzBCQUE1RCxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGl0bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1ByaW1lTkdDb25maWd9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01uZ01vZHVsZUNvbmZpZ30gZnJvbSAnLi4vY29uZmlnL21vZGVscyc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7SVVzZXIsIE1uZ01lbnVJdGVtfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdCcmVhZGNydW1iTWVudUl0ZW0sIE1uZ1JvdXRlckRhdGF9IGZyb20gJy4uL3JvdXRlci9tb2RlbHMnO1xuaW1wb3J0IHtNTkdfQlJPV1NFUl9TVE9SQUdFX0lULCBNTkdfTU9EVUxFX0NPTkZJR19JVH0gZnJvbSAnLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW5nQ29tbW9uc1NlcnZpY2Uge1xuICAgIC8vIGludGVybmFsXG4gICAgcHJpdmF0ZSByb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVMYW5nQ2hhbmdlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLy8gbWVudVxuICAgIHByaXZhdGUgX21lbnVNb2RlOiAnc3RhdGljJyB8ICdzaWRlYmFyJyB8ICdzbGltJyB8ICdvdmVybGF5JyA9ICdzaWRlYmFyJztcbiAgICBwcml2YXRlIF9tZW51TW9kZVN1YmplY3Q6IFN1YmplY3Q8J3N0YXRpYycgfCAnc2lkZWJhcicgfCAnc2xpbScgfCAnb3ZlcmxheSc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLl9tZW51TW9kZSk7XG4gICAgcHJpdmF0ZSBfbWVudUl0ZW1zOiBNbmdNZW51SXRlbVtdID0gW107XG4gICAgcHJpdmF0ZSBfbWVudVBpbkVuYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9tZW51QWN0aXZlS2V5U3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIF9tZW51UmVzZXRTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8vIGJyZWFkY3J1bWJzXG4gICAgcHJpdmF0ZSByZWFkb25seSBicmVhZGNydW1iSG9tZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1uZ01lbnVJdGVtIHwgbnVsbD4oe1xuICAgICAgICBpY29uOiAncGkgcGktaG9tZScsXG4gICAgICAgIHJvdXRlckxpbms6ICcvJ1xuICAgIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNbmdNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBicmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLy8gdmlzdWFsXG4gICAgcHJpdmF0ZSBfY29sb3JTY2hlbWU6ICdsaWdodCcgfCAnZGFyaycgPSAnbGlnaHQnO1xuXG4gICAgLy8gdXNlclxuICAgIHByaXZhdGUgX3VzZXI/OiBJVXNlcjtcbiAgICBwcml2YXRlIHVzZXJTdWJqZWN0OiBTdWJqZWN0PElVc2VyIHwgdW5kZWZpbmVkPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcHJpbWVuZ0NvbmZpZzogUHJpbWVOR0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcbiAgICAgICAgQEluamVjdChNTkdfTU9EVUxFX0NPTkZJR19JVCkgcHJpdmF0ZSBtb2R1bGVDb25maWc6IE1uZ01vZHVsZUNvbmZpZyxcbiAgICAgICAgQEluamVjdChNTkdfQlJPV1NFUl9TVE9SQUdFX0lUKSBwcml2YXRlIGxvY2FsU3RvcmFnZTogU3RvcmFnZVxuICAgICkge31cblxuICAgIC8vIEFQUCBzZWN0aW9uXG5cbiAgICBwdWJsaWMgZ2V0IGFwcE5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5uYW1lID8/ICdhcHAubmFtZSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBPd25lcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/Lm93bmVyID8/ICdhcHAub3duZXInO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTG9nb0xpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGhMaWdodCA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvUGF0aExpZ2h0IDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExvZ29EYXJrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGhEYXJrID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29QYXRoRGFyayA6IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLnBuZyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMb2dvTmFtZUxpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoTGlnaHRcbiAgICAgICAgICAgID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29OYW1lUGF0aExpZ2h0XG4gICAgICAgICAgICA6IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby1hcHBuYW1lLnBuZyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMb2dvTmFtZURhcmsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGhEYXJrID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29OYW1lUGF0aERhcmsgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTGFuZ3VhZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubGFuZ3VhZ2VzID8/IFsnZW4nXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nJyk7XG4gICAgICAgIGlmIChsYW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFuZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBicm93c2VyTGFuZyA9IHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XG4gICAgICAgIGlmIChicm93c2VyTGFuZyAmJiB0aGlzLmFwcExhbmd1YWdlcy5zb21lKGwgPT4gbCA9PT0gYnJvd3NlckxhbmcpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcExhbmd1YWdlID0gYnJvd3Nlckxhbmc7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3Nlckxhbmc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gdGhpcy5hcHBMYW5ndWFnZXM/Lmxlbmd0aCA+IDAgPyB0aGlzLmFwcExhbmd1YWdlc1swXSA6ICdlbic7XG4gICAgICAgIHRoaXMuYXBwTGFuZ3VhZ2UgPSBkZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICAgIHJldHVybiBkZWZhdWx0TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBhcHBMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcExhbmd1YWdlcy5zb21lKGwgPT4gbCA9PT0gbGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nJywgbGFuZ3VhZ2UpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1FTlUgc2VjdGlvblxuXG4gICAgcHVibGljIGdldCBtZW51TW9kZUlzU3RhdGljKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudU1vZGUgPT09ICdzdGF0aWMnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudU1vZGVJc1N0YXRpYyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51TW9kZVN1YmplY3QucGlwZShtYXAoZSA9PiBlID09PSAnc3RhdGljJykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudU1vZGVJc092ZXJsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51TW9kZSA9PT0gJ292ZXJsYXknO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudU1vZGVJc092ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudU1vZGVTdWJqZWN0LnBpcGUobWFwKGUgPT4gZSA9PT0gJ292ZXJsYXknKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51TW9kZUlzU2xpbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVNb2RlID09PSAnc2xpbSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51TW9kZUlzU2xpbSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51TW9kZVN1YmplY3QucGlwZShtYXAoZSA9PiBlID09PSAnc2xpbScpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVNb2RlSXNTaWRlYmFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudU1vZGUgPT09ICdzaWRlYmFyJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVNb2RlSXNTaWRlYmFyJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVNb2RlU3ViamVjdC5waXBlKG1hcChlID0+IGUgPT09ICdzaWRlYmFyJykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudUFjdGl2ZUtleSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVBY3RpdmVLZXlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudVJlc2V0JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudVJlc2V0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVJdGVtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG1lbnVJdGVtcyhtZW51SXRlbXM6IE1uZ01lbnVJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zID0gbWVudUl0ZW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudVBpbkVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51UGluRW5hYmxlZDtcbiAgICB9XG5cbiAgICAvLyBCUkVBRENSVU1CIHNlY3Rpb25cbiAgICBwdWJsaWMgZ2V0IGJyZWFkY3J1bWJIb21lJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnJlYWRjcnVtYkhvbWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYnJlYWRjcnVtYnMkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5icmVhZGNydW1ic1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gVklTVUFMIHNlY3Rpb25cblxuICAgIHB1YmxpYyBnZXQgY29sb3JTY2hlbWVJc0xpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sb3JTY2hlbWUgPT09ICdsaWdodCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2xvclNjaGVtZUlzRGFyaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yU2NoZW1lID09PSAnZGFyayc7XG4gICAgfVxuXG4gICAgLy8gVVNFUiBzZWN0aW9uXG5cbiAgICBwdWJsaWMgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdXNlcih1c2VyOiBJVXNlciB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl91c2VyID0gdXNlcjtcbiAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXNlciQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgdGhpcy5fbWVudU1vZGUgPSB0aGlzLm1vZHVsZUNvbmZpZz8ubWVudT8ubW9kZSA/PyAnc2lkZWJhcic7XG4gICAgICAgIHRoaXMuX21lbnVNb2RlU3ViamVjdC5uZXh0KHRoaXMuX21lbnVNb2RlKTtcbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zID0gdGhpcy5tb2R1bGVDb25maWc/Lm1lbnU/Lm1lbnVJdGVtcyA/PyBbXTtcbiAgICAgICAgdGhpcy5fbWVudVBpbkVuYWJsZWQgPSB0aGlzLm1vZHVsZUNvbmZpZz8ubWVudT8ucGluRW5hYmxlZCA/PyBmYWxzZTtcblxuICAgICAgICAvLyB2aXN1YWxcbiAgICAgICAgdGhpcy5fY29sb3JTY2hlbWUgPSB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5jb2xvclNjaGVtZSA/PyAnbGlnaHQnO1xuXG4gICAgICAgIC8vIHJpcHBsZVxuICAgICAgICB0aGlzLnByaW1lbmdDb25maWcucmlwcGxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmltZW5nQ29uZmlnLmZpbHRlck1hdGNoTW9kZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICB0ZXh0OiBbXG4gICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLkNvbnRhaW5zLFxuICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5FcXVhbHMsXG4gICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLk5vdEVxdWFscyxcbiAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uU3RhcnRzV2l0aCxcbiAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uRW5kc1dpdGhcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBudW1lcmljOiBbXG4gICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLkVxdWFscyxcbiAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uTm90RXF1YWxzLFxuICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5MZXNzVGhhbk9yRXF1YWxUbyxcbiAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uR3JlYXRlclRoYW5PckVxdWFsVG9cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkYXRlOiBbXG4gICAgICAgICAgICAgICAgRmlsdGVyRGVzY3JpcHRvci5NYXRjaE1vZGVFbnVtLkRhdGVJcyxcbiAgICAgICAgICAgICAgICBGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0uRGF0ZUlzTm90LFxuICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5EYXRlQmVmb3JlLFxuICAgICAgICAgICAgICAgIEZpbHRlckRlc2NyaXB0b3IuTWF0Y2hNb2RlRW51bS5EYXRlQWZ0ZXJcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0cmFuc2xhdGVcbiAgICAgICAgdGhpcy50cmFuc2xhdGUubGFuZ3MgPSB0aGlzLmFwcExhbmd1YWdlcztcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuYXBwTGFuZ3VhZ2UpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ21uZ1ByaW1lJykuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih2YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gRmlsdGVyIHRoZSBOYXZpZ2F0aW9uRW5kIGV2ZW50cyBhcyB0aGUgYnJlYWRjcnVtYiBpcyB1cGRhdGVkIG9ubHkgd2hlbiB0aGUgcm91dGUgcmVhY2hlcyBpdHMgZW5kXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlTGFuZ0NoYW5nZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVMYW5nQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWJzKCk7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBNRU5VIGFjdGlvbnNcblxuICAgIG1lbnVDaGFuZ2VBY3RpdmVLZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbWVudUFjdGl2ZUtleVN1YmplY3QubmV4dChrZXkpO1xuICAgIH1cblxuICAgIG1lbnVSZXNldCgpIHtcbiAgICAgICAgdGhpcy5fbWVudVJlc2V0U3ViamVjdC5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIC8vIEJSRUFEQ1JVTUIgYWN0aW9uc1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVCcmVhZGNydW1icygpIHtcbiAgICAgICAgaWYgKHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb290Um91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xuXG4gICAgICAgIGNvbnN0IGhvbWVCcmVhZGNydW1iID0gdGhpcy5nZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvb3RSb3V0ZSk7XG4gICAgICAgIGlmIChob21lQnJlYWRjcnVtYikge1xuICAgICAgICAgICAgaWYgKGhvbWVCcmVhZGNydW1iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmdldChob21lQnJlYWRjcnVtYi5sYWJlbCkuc3Vic2NyaWJlKGkxOG4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBob21lQnJlYWRjcnVtYi5sYWJlbCA9IGkxOG47XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVTdWJqZWN0Lm5leHQoaG9tZUJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lU3ViamVjdC5uZXh0KGhvbWVCcmVhZGNydW1iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzOiBNbmdNZW51SXRlbVtdID0gW107XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1icyhyb290Um91dGUsIFtdLCBicmVhZGNydW1icyk7XG5cbiAgICAgICAgY29uc3QgaTE4bktleXM6IEFycmF5PHN0cmluZz4gPSBicmVhZGNydW1icy5maWx0ZXIoYiA9PiB0eXBlb2YgYi5sYWJlbCA9PT0gJ3N0cmluZycpLm1hcChiID0+IGIubGFiZWwhKTtcbiAgICAgICAgaWYgKGkxOG5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZS5nZXQoaTE4bktleXMpLnN1YnNjcmliZShpMThuID0+IHtcbiAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIGJyZWFkY3J1bWIgaGllcmFyY2h5XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMuZm9yRWFjaChiID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIubGFiZWwgJiYgaTE4bltiLmxhYmVsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYi5sYWJlbCA9IGkxOG5bYi5sYWJlbF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIEVtaXQgdGhlIG5ldyBicmVhZGNydW1ic1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0Lm5leHQoYnJlYWRjcnVtYnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzU3ViamVjdC5uZXh0KGJyZWFkY3J1bWJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVIb21lQnJlYWRjcnVtYihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwpOiBNbmdNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHJvdXRlLmRhdGEgYXMgTW5nUm91dGVyRGF0YTtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YSA9IHJvdXRlRGF0YT8uYnJlYWRjcnVtYjtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWJSb3V0ZURhdGEgJiYgdHlwZW9mIGJyZWFkY3J1bWJSb3V0ZURhdGEgPT09ICdvYmplY3QnICYmICdpc0hvbWUnIGluIGJyZWFkY3J1bWJSb3V0ZURhdGEpIHtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iUm91dGVEYXRhLmlzSG9tZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIoJy8nLCBicmVhZGNydW1iUm91dGVEYXRhLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBicmVhZGNydW1iLmljb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWIuaWNvbiA9ICdwaSBwaS1ob21lJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFkY3J1bWI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsIHBhcmVudFVybFNlZ21lbnRzOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IE1uZ01lbnVJdGVtW10pIHtcbiAgICAgICAgaWYgKCFyb3V0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gcm91dGUuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhO1xuICAgICAgICBjb25zdCByb3V0ZVVybFNlZ21lbnRzID0gcGFyZW50VXJsU2VnbWVudHMuY29uY2F0KHJvdXRlLnVybC5tYXAodXJsID0+IHVybC5wYXRoKSk7XG4gICAgICAgIGNvbnN0IHJvdXRlVXJsID0gYC8ke3JvdXRlVXJsU2VnbWVudHMuam9pbignLycpfWA7XG4gICAgICAgIGlmIChyb3V0ZURhdGE/LmJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJSb3V0ZURhdGEgPSByb3V0ZURhdGEuYnJlYWRjcnVtYjtcblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnJlYWRjcnVtYlJvdXRlRGF0YSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGJyZWFkY3J1bWJSb3V0ZURhdGFJdGVtIG9mIGJyZWFkY3J1bWJSb3V0ZURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHRoaXMuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZVVybCwgYnJlYWRjcnVtYlJvdXRlRGF0YUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGJyZWFkY3J1bWJSb3V0ZURhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKC4uLmJyZWFkY3J1bWJSb3V0ZURhdGEocm91dGVVcmwsIHJvdXRlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIocm91dGVVcmwsIGJyZWFkY3J1bWJSb3V0ZURhdGEpO1xuICAgICAgICAgICAgICAgIGlmIChicmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1icyhyb3V0ZS5maXJzdENoaWxkLCByb3V0ZVVybFNlZ21lbnRzLCBicmVhZGNydW1icyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1iKHJvdXRlVXJsOiBzdHJpbmcsIHJvdXRlQnJlYWRjcnVtYjogc3RyaW5nIHwgTW5nQnJlYWRjcnVtYk1lbnVJdGVtLCBpbmNsdWRlSG9tZSA9IGZhbHNlKTogTW5nTWVudUl0ZW0gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiByb3V0ZUJyZWFkY3J1bWIsXG4gICAgICAgICAgICAgICAgcm91dGVyTGluazogcm91dGVVcmxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWluY2x1ZGVIb21lICYmIHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIuaXNIb21lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIC8vIGhvbWUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZFxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9IHJvdXRlVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJvdXRlQnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRJVExFIHNlY3Rpb25cblxuICAgIHB1YmxpYyBzZXRQYWdlVGl0bGUodGl0bGU/OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Um91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgY3VycmVudFJvdXRlID0gY3VycmVudFJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBjdXJyZW50Um91dGUuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhO1xuICAgICAgICBjb25zdCBwYWdlVGl0bGUgPSB0aXRsZSA/PyByb3V0ZURhdGEucGFnZVRpdGxlO1xuXG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMuZm9ybWF0UGFnZVRpdGxlKHBhZ2VUaXRsZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0UGFnZVRpdGxlKHRpdGxlUHJlZml4Pzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRpdGxlUGllY2VzID0gW107XG5cbiAgICAgICAgaWYgKHRpdGxlUHJlZml4KSB7XG4gICAgICAgICAgICB0aXRsZVBpZWNlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGl0bGVQcmVmaXgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRpdGxlUGllY2VzLnB1c2godGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYXBwLm5hbWUnKSk7XG5cbiAgICAgICAgcmV0dXJuIHRpdGxlUGllY2VzLmpvaW4oJyAtICcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function mngCommonsInitializerProvider(mngCommonsInit) {
|
|
2
|
+
return () => mngCommonsInit.initialize();
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pbnRlcm5hbC9jb21tb25zLWluaXQucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLDZCQUE2QixDQUFDLGNBQXFDO0lBQy9FLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01uZ0NvbW1vbnNJbml0U2VydmljZX0gZnJvbSAnLi9jb21tb25zLWluaXQuc2VydmljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmdDb21tb25zSW5pdGlhbGl6ZXJQcm92aWRlcihtbmdDb21tb25zSW5pdDogTW5nQ29tbW9uc0luaXRTZXJ2aWNlKTogKCkgPT4gT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuICgpID0+IG1uZ0NvbW1vbnNJbml0LmluaXRpYWxpemUoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { combineLatest, mergeMap, of } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { MNG_COMMONS_INITIALIZER_IT } from '../tokens';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngx-translate/core";
|
|
7
|
+
import * as i2 from "../configuration.service";
|
|
8
|
+
import * as i3 from "../commons.service";
|
|
9
|
+
export class MngCommonsInitService {
|
|
10
|
+
constructor(translate, configurationService, mngCommons, commonsInitializers) {
|
|
11
|
+
this.translate = translate;
|
|
12
|
+
this.configurationService = configurationService;
|
|
13
|
+
this.mngCommons = mngCommons;
|
|
14
|
+
this.commonsInitializers = commonsInitializers;
|
|
15
|
+
this.isInitialized = false;
|
|
16
|
+
}
|
|
17
|
+
initialize() {
|
|
18
|
+
if (this.isInitialized) {
|
|
19
|
+
return of(void 0);
|
|
20
|
+
}
|
|
21
|
+
console.debug(`Initializing @mediusinc/mng-commons.`);
|
|
22
|
+
return this.configurationService.loadJsonSources().pipe(mergeMap(() => {
|
|
23
|
+
if (this.commonsInitializers) {
|
|
24
|
+
console.debug(`Module initializers for @mediusinc/mng-commons.`);
|
|
25
|
+
return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return of(true);
|
|
29
|
+
}
|
|
30
|
+
}), map(() => this.mngCommons.reset()));
|
|
31
|
+
this.isInitialized = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
MngCommonsInitService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngCommonsInitService, deps: [{ token: i1.TranslateService }, { token: i2.MngConfigurationService }, { token: i3.MngCommonsService }, { token: MNG_COMMONS_INITIALIZER_IT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
MngCommonsInitService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngCommonsInitService });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngCommonsInitService, decorators: [{
|
|
37
|
+
type: Injectable
|
|
38
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.MngConfigurationService }, { type: i3.MngCommonsService }, { type: undefined, decorators: [{
|
|
39
|
+
type: Inject,
|
|
40
|
+
args: [MNG_COMMONS_INITIALIZER_IT]
|
|
41
|
+
}, {
|
|
42
|
+
type: Optional
|
|
43
|
+
}] }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUczRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSW5DLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFHckQsTUFBTSxPQUFPLHFCQUFxQjtJQUc5QixZQUNZLFNBQTJCLEVBQzNCLG9CQUE2QyxFQUM3QyxVQUE2QixFQUM0QixtQkFBNkQ7UUFIdEgsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM0Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTBDO1FBTjFILGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBTzNCLENBQUM7SUFFRyxVQUFVO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUNuRCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztnQkFDakUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN4RjtpQkFBTTtnQkFDSCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQjtRQUNMLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQ3JDLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDOztrSEE5QlEscUJBQXFCLDBIQU9sQiwwQkFBMEI7c0hBUDdCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFRRixNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG1lcmdlTWFwLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuLi9jb21tb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtNbmdDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7TU5HX0NPTU1PTlNfSU5JVElBTElaRVJfSVR9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNbmdDb21tb25zSW5pdFNlcnZpY2Uge1xuICAgIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBNbmdDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtbmdDb21tb25zOiBNbmdDb21tb25zU2VydmljZSxcbiAgICAgICAgQEluamVjdChNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBjb21tb25zSW5pdGlhbGl6ZXJzOiBSZWFkb25seUFycmF5PCgpID0+IE9ic2VydmFibGU8dW5rbm93bj4+XG4gICAgKSB7fVxuXG4gICAgcHVibGljIGluaXRpYWxpemUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgSW5pdGlhbGl6aW5nIEBtZWRpdXNpbmMvbW5nLWNvbW1vbnMuYCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UubG9hZEpzb25Tb3VyY2VzKCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25zSW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYE1vZHVsZSBpbml0aWFsaXplcnMgZm9yIEBtZWRpdXNpbmMvbW5nLWNvbW1vbnMuYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHRoaXMuY29tbW9uc0luaXRpYWxpemVycy5tYXAoY2kgPT4gY2koKSkpLnBpcGUobWFwKHJlcyA9PiByZXMpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5tbmdDb21tb25zLnJlc2V0KCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './commons-init.provider';
|
|
2
|
+
export * from './commons-init.service';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9ucy1pbml0LnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9ucy1pbml0LnNlcnZpY2UnO1xuIl19
|
|
@@ -40,9 +40,9 @@ export class MngNavigationService {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
MngNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
44
|
-
MngNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
43
|
+
MngNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngNavigationService, deps: [{ token: i1.Router }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
MngNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngNavigationService });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngNavigationService, decorators: [{
|
|
46
46
|
type: Injectable
|
|
47
47
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }]; } });
|
|
48
48
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFHdEQsTUFBTSxPQUFPLG9CQUFvQjtJQUc3QixZQUFvQixNQUFjLEVBQVUsUUFBa0I7UUFBMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGdEQsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFHaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQjtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRU0sSUFBSTtRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDOztpSEFsQ1Esb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNbmdOYXZpZ2F0aW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSBoaXN0b3J5OiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnkucHVzaChldmVudC51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50TG9jYXRpb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLmhpc3RvcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmV2aW91c0xvY2F0aW9uKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYmFjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5LnBvcCgpO1xuICAgICAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './commons-init.provider';
|
|
2
1
|
export * from './config-service.provider';
|
|
3
2
|
export * from './formly-config.provider';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpZy1zZXJ2aWNlLnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWx5LWNvbmZpZy5wcm92aWRlcic7XG4iXX0=
|
|
@@ -27,9 +27,9 @@ export class MngViewContainerComponentService {
|
|
|
27
27
|
return this._dataProvider;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
MngViewContainerComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
31
|
-
MngViewContainerComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
30
|
+
MngViewContainerComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngViewContainerComponentService, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
|
+
MngViewContainerComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngViewContainerComponentService });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngViewContainerComponentService, decorators: [{
|
|
33
33
|
type: Injectable
|
|
34
34
|
}], ctorParameters: function () { return [{ type: i1.MessageService }]; } });
|
|
35
35
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250YWluZXIuY29tcG9uZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ZpZXctY29udGFpbmVyLmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBTTdCOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdDQUFnQztJQU16QyxZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFKM0MsWUFBTyxHQUErQixFQUFFLENBQUM7UUFFeEMsd0JBQW1CLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFTCxDQUFDO0lBRXRELElBQVcsWUFBWSxDQUFDLFlBQWlDO1FBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEtBQVU7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0saUJBQWlCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRU0sZUFBZTtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQzs7NkhBMUJRLGdDQUFnQztpSUFBaEMsZ0NBQWdDOzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge01lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0lEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtJVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vbW9kZWxzJztcblxuLyoqXG4gKiBTaG91bGQgYmUgdXNlZCB3aXRoIHByb3ZpZGVycyBkZWZpbmVkIHdpdGhpbiBjb21wb25lbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNbmdWaWV3Q29udGFpbmVyQ29tcG9uZW50U2VydmljZTxULCBTPiBpbXBsZW1lbnRzIElWaWV3Q29udGFpbmVyPFQsIFM+IHtcbiAgICBwcml2YXRlIF9kYXRhUHJvdmlkZXI/OiBJRGF0YVByb3ZpZGVyPFQsIFM+O1xuICAgIHB1YmxpYyBhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPFQ+PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBfcmVsb2FkVGFibGVTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHt9XG5cbiAgICBwdWJsaWMgc2V0IGRhdGFQcm92aWRlcihkYXRhUHJvdmlkZXI6IElEYXRhUHJvdmlkZXI8VCwgUz4pIHtcbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVsb2FkVGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWxvYWRUYWJsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyaWdnZXJUYWJsZVJlbG9hZChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuX3JlbG9hZFRhYmxlU3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWVzc2FnZVNlcnZpY2UoKTogTWVzc2FnZVNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGF0YVByb3ZpZGVyKCk6IElEYXRhUHJvdmlkZXI8VCwgUz4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHlwZXMvdHlwZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnQG5neC1mb3JtbHkvY29yZS9saWIvbW9kZWxzL2ZpZWxkY29uZmlnJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NUeXBlPFQ+IGV4dGVuZHMgRnVuY3Rpb24ge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1UeXBlIHtcbiAgICBba2V5OiBzdHJpbmddOiBFbnVtQ29uc3RhbnRUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBFbnVtQ29uc3RhbnRUeXBlID0gc3RyaW5nIHwgbnVtYmVyO1xuXG5leHBvcnQgdHlwZSBJZFR5cGUgPSBudW1iZXIgfCBzdHJpbmc7XG5leHBvcnQgdHlwZSBQcmltaXRpdmVUeXBlID0gc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcjtcbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9IFByaW1pdGl2ZVR5cGUgfCBEYXRlIHwgRW51bVR5cGU7XG5cbi8vIGZpZWxkIHZhbGlkYXRpb25cbmV4cG9ydCB0eXBlIE1uZ0ZpZWxkVmFsaWRhdG9yID0gKFxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcbiAgICBmaWVsZDogRm9ybWx5RmllbGRDb25maWcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgICAgW2lkOiBzdHJpbmddOiBhbnk7XG4gICAgfVxuKSA9PiBWYWxpZGF0aW9uRXJyb3JzIHwgYm9vbGVhbiB8IG51bGw7XG5leHBvcnQgdHlwZSBNbmdGaWVsZFZhbGlkYXRpb25NZXNzYWdlID0gc3RyaW5nIHwgKChlcnJvcjogYW55LCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPik7XG4iXX0=
|