turbogui-angular 14.0.0 → 15.1.2
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/esm2022/main/controller/browser.service.mjs +7 -4
- package/esm2022/main/controller/dialog.service.mjs +39 -21
- package/esm2022/main/controller/globalerror.service.mjs +10 -5
- package/esm2022/main/controller/http.service.mjs +16 -19
- package/esm2022/main/controller/localization.service.mjs +6 -3
- package/esm2022/main/controller/notification.service.mjs +10 -5
- package/esm2022/main/controller/turbo-api-caller.service.mjs +392 -0
- package/esm2022/main/controller/views.service.mjs +9 -22
- package/esm2022/main/model/classes/SingletoneStrictClass.mjs +24 -0
- package/esm2022/main/model/classes/View.mjs +8 -18
- package/esm2022/main/model/classes/ViewService.mjs +3 -16
- package/esm2022/main/model/modules/turbogui-angular.module.mjs +6 -111
- package/esm2022/main/view/components/busy-state-base/busy-state-base.component.mjs +3 -3
- package/esm2022/main/view/components/button-container/button-container.component.mjs +3 -3
- package/esm2022/main/view/components/button-image/button-image.component.mjs +3 -3
- package/esm2022/main/view/components/dialog-base/dialog-base.component.mjs +22 -5
- package/esm2022/main/view/components/dialog-date-selection/dialog-date-selection.component.mjs +11 -7
- package/esm2022/main/view/components/dialog-error/dialog-error.component.mjs +15 -9
- package/esm2022/main/view/components/dialog-multiple-option/dialog-multiple-option.component.mjs +12 -9
- package/esm2022/main/view/components/dialog-single-input/dialog-single-input.component.mjs +67 -0
- package/esm2022/main/view/components/dialog-single-option/dialog-single-option.component.mjs +12 -9
- package/esm2022/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.mjs +16 -12
- package/esm2022/main/view/components/dialog-two-option/dialog-two-option.component.mjs +12 -9
- package/esm2022/main/view/components/views-container/views-container.component.mjs +3 -3
- package/esm2022/main/view/forms/ValidatorsPlus.mjs +39 -0
- package/esm2022/public_api.mjs +5 -3
- package/fesm2022/turbogui-angular.mjs +1449 -1151
- package/fesm2022/turbogui-angular.mjs.map +1 -1
- package/main/controller/browser.service.d.ts +1 -1
- package/main/controller/browser.service.d.ts.map +1 -1
- package/main/controller/dialog.service.d.ts +20 -9
- package/main/controller/dialog.service.d.ts.map +1 -1
- package/main/controller/globalerror.service.d.ts +3 -1
- package/main/controller/globalerror.service.d.ts.map +1 -1
- package/main/controller/http.service.d.ts +7 -13
- package/main/controller/http.service.d.ts.map +1 -1
- package/main/controller/localization.service.d.ts.map +1 -1
- package/main/controller/notification.service.d.ts +3 -1
- package/main/controller/notification.service.d.ts.map +1 -1
- package/main/controller/turbo-api-caller.service.d.ts +203 -0
- package/main/controller/turbo-api-caller.service.d.ts.map +1 -0
- package/main/controller/views.service.d.ts +2 -13
- package/main/controller/views.service.d.ts.map +1 -1
- package/main/model/classes/{ViewModel.d.ts → SingletoneStrictClass.d.ts} +8 -3
- package/main/model/classes/SingletoneStrictClass.d.ts.map +1 -0
- package/main/model/classes/View.d.ts +6 -24
- package/main/model/classes/View.d.ts.map +1 -1
- package/main/model/classes/ViewService.d.ts +6 -13
- package/main/model/classes/ViewService.d.ts.map +1 -1
- package/main/model/modules/turbogui-angular.module.d.ts +5 -23
- package/main/model/modules/turbogui-angular.module.d.ts.map +1 -1
- package/main/view/components/busy-state-base/busy-state-base.component.d.ts +1 -1
- package/main/view/components/busy-state-base/busy-state-base.component.d.ts.map +1 -1
- package/main/view/components/button-container/button-container.component.d.ts +1 -1
- package/main/view/components/button-container/button-container.component.d.ts.map +1 -1
- package/main/view/components/button-image/button-image.component.d.ts +1 -1
- package/main/view/components/button-image/button-image.component.d.ts.map +1 -1
- package/main/view/components/dialog-base/dialog-base.component.d.ts +10 -4
- package/main/view/components/dialog-base/dialog-base.component.d.ts.map +1 -1
- package/main/view/components/dialog-date-selection/dialog-date-selection.component.d.ts +12 -2
- package/main/view/components/dialog-date-selection/dialog-date-selection.component.d.ts.map +1 -1
- package/main/view/components/dialog-error/dialog-error.component.d.ts +12 -2
- package/main/view/components/dialog-error/dialog-error.component.d.ts.map +1 -1
- package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts +12 -2
- package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts.map +1 -1
- package/main/view/components/dialog-single-input/dialog-single-input.component.d.ts +32 -0
- package/main/view/components/dialog-single-input/dialog-single-input.component.d.ts.map +1 -0
- package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts +12 -2
- package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts.map +1 -1
- package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts +12 -2
- package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts.map +1 -1
- package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts +12 -2
- package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts.map +1 -1
- package/main/view/components/views-container/views-container.component.d.ts +1 -1
- package/main/view/components/views-container/views-container.component.d.ts.map +1 -1
- package/main/view/forms/ValidatorsPlus.d.ts +20 -0
- package/main/view/forms/ValidatorsPlus.d.ts.map +1 -0
- package/package.json +2 -2
- package/public_api.d.ts +4 -2
- package/public_api.d.ts.map +1 -1
- package/esm2022/main/controller/user.service.mjs +0 -124
- package/esm2022/main/model/classes/ViewModel.mjs +0 -14
- package/main/controller/user.service.d.ts +0 -58
- package/main/controller/user.service.d.ts.map +0 -1
- package/main/model/classes/ViewModel.d.ts.map +0 -1
|
@@ -26,7 +26,7 @@ export class BrowserService extends BrowserManager {
|
|
|
26
26
|
*
|
|
27
27
|
* @returns void
|
|
28
28
|
*/
|
|
29
|
-
|
|
29
|
+
setCurrentUrlURI(path, query) {
|
|
30
30
|
this.location.go(path, query);
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -40,9 +40,12 @@ export class BrowserService extends BrowserManager {
|
|
|
40
40
|
return this.location.subscribe(onNext);
|
|
41
41
|
}
|
|
42
42
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService }); }
|
|
43
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService, providedIn: 'root' }); }
|
|
44
44
|
}
|
|
45
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService, decorators: [{
|
|
46
|
-
type: Injectable
|
|
46
|
+
type: Injectable,
|
|
47
|
+
args: [{
|
|
48
|
+
providedIn: 'root',
|
|
49
|
+
}]
|
|
47
50
|
}], ctorParameters: () => [{ type: i1.Location }] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2Jyb3dzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUlqRDs7R0FFRztBQUlILE1BQU0sT0FBTyxjQUFlLFNBQVEsY0FBYztJQUc5QyxZQUE2QixRQUFrQjtRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUZpQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRy9DLENBQUM7SUFHRDs7Ozs7OztPQU9HO0lBQ0gsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLEtBQTBCO1FBRXJELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBR0Q7Ozs7OztPQU1HO0lBQ0gsb0JBQW9CLENBQUMsTUFBc0M7UUFFdkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQWpDUSxjQUFjO2tIQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnJvd3Nlck1hbmFnZXIgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiwgUG9wU3RhdGVFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5cclxuLyoqXHJcbiAqIEFuIGFic3RyYWN0aW9uIG9mIHRoZSBicm93c2VyIGVudGl0eSBhbiBhbGwgaXRzIHJlbGF0ZWQgb3BlcmF0aW9ucyBhbmQgcHJvcGVydGllc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyb3dzZXJTZXJ2aWNlIGV4dGVuZHMgQnJvd3Nlck1hbmFnZXIge1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbikge1xyXG5cclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vZGlmeSB0aGUgY3VycmVudCBicm93c2VyIFVSSSB3aXRob3V0IHJlbG9hZGluZyB0aGUgY3VycmVudCBwYWdlIGRvY3VtZW50XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBhdGggVGhlIHVyaSB2YWx1ZSB3ZSB3YW50IHRvIHNldFxyXG4gICAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB1cmwgcGFyYW1ldGVycyBwYXJ0IHdlIHdhbnQgdG8gc3BlY2lmeSBpZiBhbnlcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB2b2lkXHJcbiAgICAgKi9cclxuICAgIHNldEN1cnJlbnRVcmxVUkkocGF0aDogc3RyaW5nLCBxdWVyeT86IHN0cmluZyB8IHVuZGVmaW5lZCl7XHJcblxyXG4gICAgICAgIHRoaXMubG9jYXRpb24uZ28ocGF0aCwgcXVlcnkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogT2J0YWluIGEgc3Vic2NyaXB0aW9uIHRvIGdldCBub3RpZmllZCBvbiBhbnkgY2hhbmdlcyBhdCB0aGUgYnJvd3NlciB1cmxcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb25OZXh0IEEgbWV0aG9kIHRvIGJlIGV4ZWN1dGVkIGV2ZXJ5IHRpbWUgdGhlIHVybCBjaGFuZ2VzIG9uIHRoZSBicm93c2VyLiBUaGUgdXJsIHdpbGwgYmUgYXZhaWxhYmxlIGluc2lkZSB0aGUgdmFsdWUgcGFyYW1ldGVyXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgU3Vic2NyaWJlZCBldmVudHMuIE1ha2Ugc3VyZSB0byB1bnN1YnNjcmliZSB3aGVuIG5vdCBuZWVkZWRcclxuICAgICAqL1xyXG4gICAgc3Vic2NyaWJlVG9VcmxDaGFuZ2Uob25OZXh0OiAodmFsdWU6IFBvcFN0YXRlRXZlbnQpID0+IHZvaWQpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uLnN1YnNjcmliZShvbk5leHQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -11,14 +11,16 @@ import { Injectable } from '@angular/core';
|
|
|
11
11
|
import { BusyStateBaseComponent } from '../view/components/busy-state-base/busy-state-base.component';
|
|
12
12
|
import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
|
|
13
13
|
import { DialogDateSelectionComponent } from '../view/components/dialog-date-selection/dialog-date-selection.component';
|
|
14
|
+
import { SingletoneStrictClass } from '../model/classes/SingletoneStrictClass';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "@angular/material/snack-bar";
|
|
16
17
|
import * as i2 from "@angular/material/dialog";
|
|
17
18
|
/**
|
|
18
19
|
* Manages the application modal and non modal floating elements
|
|
19
20
|
*/
|
|
20
|
-
export class DialogService {
|
|
21
|
+
export class DialogService extends SingletoneStrictClass {
|
|
21
22
|
constructor(rendererFactory, matSnackBar, matDialog, injector, applicationRef, componentFactoryResolver) {
|
|
23
|
+
super(DialogService);
|
|
22
24
|
this.matSnackBar = matSnackBar;
|
|
23
25
|
this.matDialog = matDialog;
|
|
24
26
|
this.injector = injector;
|
|
@@ -220,7 +222,8 @@ export class DialogService {
|
|
|
220
222
|
*
|
|
221
223
|
* @param dialogComponentClass A class for a component that extends DialogBaseComponent, which will be the dialog that is shown to the user.
|
|
222
224
|
* @param properties An object containing the different visual and textual options that this dialog allows:
|
|
223
|
-
* -
|
|
225
|
+
* - id: The html unique identifier that the dialog will have once created. If not specified, no id will be explicitly set
|
|
226
|
+
* - width: 50% by default. Specify the css value for the default dialog width. As the dialog is responsive, the value will be automatically
|
|
224
227
|
* reduced if the available screen is not enough, and will reach the desired value otherwise. We can set any css unit like pixels,
|
|
225
228
|
* %, vh, vw, or any other. For example: '400px', '50%', etc.
|
|
226
229
|
* - maxWidth: Defines the maximum width that the dialog will have regarding the viewport. We can specify it in % or vw, just like is done in
|
|
@@ -232,6 +235,8 @@ export class DialogService {
|
|
|
232
235
|
* - texts: A list with strings containing the dialog texts, sorted by importance. When dialog has a title, this should
|
|
233
236
|
* be placed first, subtitle second and so (Each dialog may accept different number of texts).
|
|
234
237
|
* - options: A list of strings that will be used as button captions for each one of the accepted dialog options
|
|
238
|
+
* - viewContainerRef: This is important if we want to propagate providers from a parent component to this dialog. We must specify
|
|
239
|
+
* this reference to make sure the same services injected on the parent are available too at the child dialog
|
|
235
240
|
*
|
|
236
241
|
* @param callback A function that will be called after the dialog is closed and will receive a selection object with the numeric index and value for
|
|
237
242
|
* the option that's been selected by the user. if no option was selected, index will be -1 and value null
|
|
@@ -262,8 +267,13 @@ export class DialogService {
|
|
|
262
267
|
disableClose: properties.modal,
|
|
263
268
|
autoFocus: false,
|
|
264
269
|
closeOnNavigation: !properties.modal,
|
|
270
|
+
viewContainerRef: properties.viewContainerRef,
|
|
265
271
|
data: { texts: properties.texts, options: properties.options }
|
|
266
272
|
});
|
|
273
|
+
// Assign the dialog ID only if specifically set on properties
|
|
274
|
+
if (properties.id && properties.id !== undefined) {
|
|
275
|
+
dialogRef.id = properties.id;
|
|
276
|
+
}
|
|
267
277
|
this._activeDialogs.push(dialogHash);
|
|
268
278
|
this._activeDialogInstances.push(dialogRef);
|
|
269
279
|
dialogRef.beforeClosed().subscribe((selection) => {
|
|
@@ -283,25 +293,11 @@ export class DialogService {
|
|
|
283
293
|
}
|
|
284
294
|
});
|
|
285
295
|
}
|
|
286
|
-
/**
|
|
287
|
-
* Force the removal of all the dialogs that are currently visible.
|
|
288
|
-
*
|
|
289
|
-
* If no dialogs are currently visible, this method will do nothing
|
|
290
|
-
*/
|
|
291
|
-
removeAllDialogs() {
|
|
292
|
-
if (!this._isEnabled) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
for (const dialogRef of this._activeDialogInstances) {
|
|
296
|
-
dialogRef.close({ index: -1 });
|
|
297
|
-
}
|
|
298
|
-
this._activeDialogs = [];
|
|
299
|
-
this._activeDialogInstances = [];
|
|
300
|
-
}
|
|
301
296
|
/**
|
|
302
297
|
* Show a dialog with a calendar to let the user pick a date.
|
|
303
298
|
*
|
|
304
299
|
* @param properties An object containing the different visual and textual options that this dialog allows:
|
|
300
|
+
* - id: The html unique identifier that the dialog will have once created. If not specified, no id will be explicitly set
|
|
305
301
|
* - width: Specify the css value for the default dialog width. As the dialog is responsive, the value will be automatically
|
|
306
302
|
* reduced if the available screen is not enough, and will reach the desired value otherwise. We can set any css unit like pixels,
|
|
307
303
|
* %, vh, vw, or any other. For example: '400px', '50%', etc.
|
|
@@ -312,6 +308,8 @@ export class DialogService {
|
|
|
312
308
|
* - modal: True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed
|
|
313
309
|
* by the user clicking outside it
|
|
314
310
|
* - title: An optional dialog title
|
|
311
|
+
* - viewContainerRef: This is important to propagate providers from a parent component to this dialog. We must specify
|
|
312
|
+
* this reference to make sure the same services injected on the parent are available too at the child dialog
|
|
315
313
|
* @param callback A function to be called after the dialog is closed. It will receive a Date() object selected by the user or null if no selection happened
|
|
316
314
|
*/
|
|
317
315
|
addDateSelectionDialog(properties, callback) {
|
|
@@ -319,16 +317,33 @@ export class DialogService {
|
|
|
319
317
|
return;
|
|
320
318
|
}
|
|
321
319
|
this.addDialog(DialogDateSelectionComponent, {
|
|
320
|
+
id: properties.id ?? undefined,
|
|
322
321
|
width: properties.width ?? "50%",
|
|
323
322
|
maxWidth: properties.maxWidth ?? "96vw",
|
|
324
323
|
height: properties.height ?? "50%",
|
|
325
324
|
maxHeight: properties.maxHeight ?? "92vw",
|
|
326
325
|
modal: properties.modal ?? false,
|
|
327
|
-
texts: [properties.title ?? '']
|
|
326
|
+
texts: [properties.title ?? ''],
|
|
327
|
+
viewContainerRef: properties.viewContainerRef
|
|
328
328
|
}, (selection) => {
|
|
329
329
|
callback(selection.index === -1 ? null : selection.value);
|
|
330
330
|
});
|
|
331
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Force the removal of all the dialogs that are currently visible.
|
|
334
|
+
*
|
|
335
|
+
* If no dialogs are currently visible, this method will do nothing
|
|
336
|
+
*/
|
|
337
|
+
removeAllDialogs() {
|
|
338
|
+
if (!this._isEnabled) {
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
for (const dialogRef of this._activeDialogInstances) {
|
|
342
|
+
dialogRef.close({ index: -1 });
|
|
343
|
+
}
|
|
344
|
+
this._activeDialogs = [];
|
|
345
|
+
this._activeDialogInstances = [];
|
|
346
|
+
}
|
|
332
347
|
/**
|
|
333
348
|
* TODO - translate from TS version
|
|
334
349
|
*/
|
|
@@ -379,9 +394,12 @@ export class DialogService {
|
|
|
379
394
|
}
|
|
380
395
|
}
|
|
381
396
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService, deps: [{ token: i0.RendererFactory2 }, { token: i1.MatSnackBar }, { token: i2.MatDialog }, { token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
382
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService }); }
|
|
397
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService, providedIn: 'root' }); }
|
|
383
398
|
}
|
|
384
399
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService, decorators: [{
|
|
385
|
-
type: Injectable
|
|
400
|
+
type: Injectable,
|
|
401
|
+
args: [{
|
|
402
|
+
providedIn: 'root',
|
|
403
|
+
}]
|
|
386
404
|
}], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: i1.MatSnackBar }, { type: i2.MatDialog }, { type: i0.Injector }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }] });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFRLFVBQVUsRUFBbUYsTUFBTSxlQUFlLENBQUM7QUFHbEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7OztBQUd4SDs7R0FFRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBeUZ0QixZQUFZLGVBQWlDLEVBQ2hCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLHdCQUFrRDtRQUpsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUEzRi9FOzs7O1dBSUc7UUFDSCxrQ0FBNkIsR0FBaUMsc0JBQXNCLENBQUM7UUFHckY7O1dBRUc7UUFDSyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRzFCOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDOzs7O1dBSUc7UUFDSyxxQkFBZ0IsR0FBbUQsSUFBSSxDQUFDO1FBR2hGOztXQUVHO1FBQ0ssd0JBQW1CLEdBQTJCLElBQUksQ0FBQztRQUczRDs7V0FFRztRQUNLLHVC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O1NBQzFDO0lBQ0wsQ0FBQzs4R0E5Z0JRLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEFycmF5VXRpbHMsIE51bWVyaWNVdGlscyB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcbmltcG9ydCB7IFR5cGUsIEluamVjdGFibGUsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgSW5qZWN0b3IsIEFwcGxpY2F0aW9uUmVmLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciwgTWF0U25hY2tCYXJDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2J1c3ktc3RhdGUtYmFzZS9idXN5LXN0YXRlLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBEb21Qb3J0YWxPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctYmFzZS9kaWFsb2ctYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRlU2VsZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50JztcclxuXHJcblxyXG4vKipcclxuICogTWFuYWdlcyB0aGUgYXBwbGljYXRpb24gbW9kYWwgYW5kIG5vbiBtb2RhbCBmbG9hdGluZyBlbGVtZW50c1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCB0byBtb2RpZnkgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgc2hvd24gYnkgZGVmYXVsdCBieSB0aGUgYWRkTW9kYWxCdXN5U3RhdGUoKSBtZXRob2QuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSB0aGlzLmFkZE1vZGFsQnVzeVN0YXRlKClcclxuICAgICAqL1xyXG4gICAgY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3M6IFR5cGU8QnVzeVN0YXRlQmFzZUNvbXBvbmVudD4gPSBCdXN5U3RhdGVCYXNlQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIHB1YmxpYyBnZXR0ZXIgZm9yIGRvY3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNFbmFibGVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgbWFpbiBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgc2hvd2luZyBhIGJ1c3kgc3RhdGUgdGhhdCBibG9ja3MgYWxsIHVzZXIgaW50ZXJhY3Rpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNTaG93aW5nQnVzeVN0YXRlID0gZmFsc2U7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgaW5pdGlhbGl6ZWQgb25seSB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQuXHJcbiAgICAgKlxyXG4gICAgICogKFRvIGFwcGVuZCB0aGUgYnVzeSBzdGF0ZSBkeW5hbWljYWxseSwgd2UgdXNlIHRoZSBQb3J0YWwgY29uY2VwdCBmcm9tIHRoZSBhbmd1bGFyIG1hdGVyaWFsIGxpYnJhcnkpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudFBvcnRhbDogQ29tcG9uZW50UG9ydGFsPEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIGJ1c3kgc3RhdGUgY29udGFpbmVyIHdoZXJlIHRoZSBjb21wb25lbnQgd2lsbCBiZSBhZGRlZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tb2RhbEJ1c3lTdGF0ZUhvc3Q6IERvbVBvcnRhbE91dGxldCB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBtYW5hZ2VyIGlzIGN1cnJlbnRseSBzaG93aW5nIGEgc25hY2tiYXIgZWxlbWVudCBvciBub3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNTaG93aW5nU25hY2tCYXIgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyBhIGxpc3Qgb2YgdGhlIGRpYWxvZ3MgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUgdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBFYWNoIGl0ZW0gaW4gdGhpcyBsaXN0IGlzIGEgaGFzaCB0aGF0IGlzIGNvbXB1dGVkIHdoZW4gZGlhbG9nIGlzIGNyZWF0ZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgaXQuXHJcbiAgICAgKlxyXG4gICAgICogRW1wdHkgbGlzdCBtZWFucyBubyBkaWFsb2dzIGFyZSBjdXJyZW50bHkgdmlzaWJsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEaWFsb2dzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5zIGEgbGlzdCB3aXRoIGFsbCB0aGUgTWF0RGlhbG9nIGluc3RhbmNlcyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgdXNlci5cclxuICAgICAqIFRoZSBsaXN0IHVzZXMgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGxpc3Qgb2YgX2FjdGl2ZURpYWxvZ3MgaGFzaCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGlhbG9nSW5zdGFuY2VzOiBNYXREaWFsb2dSZWY8RGlhbG9nQmFzZUNvbXBvbmVudD5bXSA9IFtdO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgdG8gc3RvcmUgdGhlIGluaXRpYWxpemVkIFJlbmRlcmVyIDIgaW5zdGFuY2UgdGhhdCBpcyB1c2VkIGJ5IHRoaXMgY2xhc3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgd2luZG93IGJlZm9yZXVubG9hZCBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBkb2N1bWVudCBrZXlkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudEtleWRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IG1vdXNlZG93biBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IHBvaW50ZXJkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1hdFNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG5cclxuICAgICAgICB0aGlzLl9yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGlzIGRpYWxvZyBzZXJ2aWNlIGlzIGVuYWJsZWQgb3Igbm90LiBJZiBkaWFsb2cgc2VydmljZSBpcyBkaXNhYmxlZCwgbm9uZSBvZiBpdCdzIGZlYXR1cmVzIHdpbGwgd29ya1xyXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGJsb2NrIGFsbCBkaWFsb2cgZmVhdHVyZXMgbm9ybWFsbHkgd2hlbiBzaHV0dGluZyBkb3duIHRoZSBhcHBsaWNhdGlvblxyXG4gICAgICpcclxuICAgICAqIFVzZSB3aXRoIGNhdXRpb24uIFdoZW4gdGhpcyBpcyBzZXQgdG8gZmFsc2UsIGRpYWxvZyBzZXJ2aWNlIHN0b3BzIHdvcmtpbmcuXHJcbiAgICAgKi9cclxuICAgIHNldCBpc0VuYWJsZWQodjogYm9vbGVhbikge1xyXG5cclxuICAgICAgICBpZiAodiA9PT0gdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9pc0VuYWJsZWQgPSB2O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuYWJsZXMgYSB3YXJuaW5nIHRoYXQgd2lsbCBiZSBzaG93biB0byB0aGUgdXNlciB3aGVuIGhlL3NoZSB0cmllcyB0byBjbG9zZSB0aGUgYXBwbGljYXRpb24uXHJcbiAgICAgKiBUaGlzIHdhcm5pbmcgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gY29udGludWUgd2l0aCB0aGUgZXhpdCBwcm9jZXNzIG9yIGNhbmNlbCBpdC5cclxuICAgICAqIFRoZSBzcGVjaWZpYyB0ZXh0cyBvZiB0aGlzIG1lc3NhZ2UgYXJlIGEgZ2VuZXJpYyBvbmVzIGFuZCBjYW5ub3QgYmUgY2hhbmdlZC5cclxuICAgICAqXHJcbiAgICAgKiBJTVBPUlRBTlQ6IFRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBtYWluIGFwcGxpY2F0aW9uIGhhcyBiZWVuIGluaXRpYWxpemVkIGluIG9yZGVyIHRvIHdvcmssXHJcbiAgICAgKiBvdGhlcndpc2UgaXQgd2lsbCBkbyBub3RoaW5nLlxyXG4gICAgICovXHJcbiAgICBhZGRDbG9zZUFwcGxpY2F0aW9uV2FybmluZygpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2JlZm9yZXVubG9hZCcsXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGV2ZW50LnJldHVyblZhbHVlID0gdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgY2xvc2UgYXBwbGljYXRpb24gd2FybmluZyBtZXNzYWdlIGlmIHByZXZpb3VzbHkgYXNzaWduZWRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQ2xvc2VBcHBsaWNhdGlvbldhcm5pbmcoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGFuZ2UgdGhlIGFwcGxpY2F0aW9uIHZpc3VhbCBhcHBlYXJhbmNlIHNvIHRoZSB1c2VyIHBlcmNlaXZlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBpc1xyXG4gICAgICogY3VycmVudGx5IGJ1c3kuIFdoaWxlIG1vZGFsIGJ1c3kgc3RhdGUgaXMgZW5hYmxlZCwgbm8gdXNlciBpbnB1dCBpcyBwb3NzaWJsZSBuZWl0aGVyIHZpYVxyXG4gICAgICoga2V5Ym9hcmQsIG1vdXNlIG9yIHRvdWNoLiBVc2UgdGhpcyBzdGF0ZSB3aGVuIHBlcmZvcm1pbmcgc2VydmVyIHJlcXVlc3RzIG9yIG9wZXJhdGlvbnMgdGhhdFxyXG4gICAgICogbXVzdCBibG9jayB0aGUgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBOb3RlOiBXZSBjYW4gbW9kaWZ5IHRoZSBidXN5IHN0YXRlIGNvbXBvbmVudCB0aGF0IGlzIHNob3duIGJ5IHRoaXMgbWV0aG9kLiBUbyBkbyBpdCwgd2UgbXVzdFxyXG4gICAgICogc2V0IHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3MgcHJvcGVydHkgd2l0aCBvdXIgb3duIGN1c3RvbSBidXN5IHN0YXRlIGNvbXBvbmVudCBjbGFzcy4gKFdlIGNhbiBkbyBpdCBhdFxyXG4gICAgICogb3VyIG1haW4gYXBwbGljYXRpb24gY29tcG9uZW50IGNvbnN0cnVjdG9yIGZvciBleGFtcGxlKS4gT3VyIGN1c3RvbSBjb21wb25lbnQgbXVzdCBleHRlbmQgdGhlXHJcbiAgICAgKiBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IG9uZSB0byBhZGQgaXRzIG93biB2aXN1YWwgYXBwZWFyYW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3NcclxuICAgICAqL1xyXG4gICAgYWRkTW9kYWxCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8IHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZVVzZXJJbnRlcmFjdGlvbigpO1xyXG5cclxuICAgICAgICAvLyBEeW5hbWljYWxseSBjcmVhdGUgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHJlZmVyZW5jZSBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lXHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFBvcnRhbCA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIFBvcnRhbEhvc3Qgd2l0aCBkb2N1bWVudC5ib2R5IGFzIGl0cyBhbmNob3IgZWxlbWVudFxyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZixcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICh0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgYXMgRG9tUG9ydGFsT3V0bGV0KS5hdHRhY2godGhpcy5fY29tcG9uZW50UG9ydGFsKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY3VycmVudGx5IGxvY2tlZCBpbiBhIG1vZGFsIGJ1c3kgc3RhdGUgKGNhdXNlZCBieSBhbiBhZGRNb2RhbEJ1c3lTdGF0ZSgpIGNhbGwpXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1Nob3dpbmdCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBhcHBsaWNhdGlvbiBidXN5IHN0YXRlIGFuZCByZXN0b3JlIGl0IGJhY2sgdG8gbm9ybWFsIHVzZXIgaW50ZXJhY3Rpb25cclxuICAgICAqL1xyXG4gICAgcmVtb3ZlTW9kYWxCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8ICF0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRQb3J0YWwgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICh0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgYXMgRG9tUG9ydGFsT3V0bGV0KS5kZXRhY2goKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2VuYWJsZVVzZXJJbnRlcmFjdGlvbigpO1xyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRPRE8gLSBhZGFwdCBmcm9tIFRTIHZlcnNpb25cclxuICAgICAqL1xyXG4gICAgYWRkVG9vbFRpcCgpIHtcclxuXHJcbiAgICAgICAgLy8gVE9ETyAtIGFkYXB0IGZyb20gVFMgdmVyc2lvblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBub24gbW9kYWwgc25hY2tiYXIgbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyIChPbmx5IG9uZSBzbmFjay1iYXIgY2FuIGV2ZXIgYmUgb3BlbmVkIGF0IHRoZSBzYW1lIHRpbWUpLlxyXG4gICAgICpcclxuICAgICAqIFNuYWNrYmFycyBpbmZvcm0gdXNlcnMgb2YgYSBwcm9jZXNzIHRoYXQgYW4gYXBwIGhhcyBwZXJmb3JtZWQgb3Igd2lsbCBwZXJmb3JtLiBUaGV5IGFwcGVhciB0ZW1wb3JhcmlseSwgdG93YXJkcyB0aGUgYm90dG9tIG9yIHRvcCBvZiB0aGUgc2NyZWVuLlxyXG4gICAgICogVGhleSBzaG91bGRu4oCZdCBpbnRlcnJ1cHQgdGhlIHVzZXIgZXhwZXJpZW5jZSwgYW5kIHRoZXkgZG9u4oCZdCByZXF1aXJlIHVzZXIgaW5wdXQgdG8gZGlzYXBwZWFyLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb25maWcgQSBNYXRTbmFja0JhckNvbmZpZyBpbnN0YW5jZSB3aXRoIHRoZSBjdXN0b21pemF0aW9ucyB3ZSB3YW50IGZvciB0aGlzIHNuYWNrYmFyXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBzaG93IG9uIHRoZSBzbmFja2JhclxyXG4gICAgICogQHBhcmFtIGFjdGlvbiBJZiBub3QgZW1wdHksIHRoZSB0ZXh0IHRvIHBsYWNlIG9uIHRoZSBzbmFja2JhciBjb25maXJtYXRpb24gYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uQ2FsbGJhY2sgQSBtZXRob2QgdG8gZXhlY3V0ZSBvbmNlIHRoZSB1c2VyIGNsaWNrcyBpbnRvIHRoZSBhY3Rpb24gYnV0dG9uLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gdm9pZFxyXG4gICAgICovXHJcbiAgICBhZGRTbmFja0Jhcihjb25maWc6IE1hdFNuYWNrQmFyQ29uZmlnLCBtZXNzYWdlOiBzdHJpbmcsIGFjdGlvbiA9ICcnLCBhY3Rpb25DYWxsYmFjazogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9pc1Nob3dpbmdTbmFja0Jhcikge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcnlpbmcgdG8gc2hvdyBhIHNuYWNrYmFyIHdoaWxlIGFub3RoZXIgb25lIGlzIHN0aWxsIHZpc2libGUnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc25hY2tCYXJSZWYgPSB0aGlzLm1hdFNuYWNrQmFyLm9wZW4obWVzc2FnZSwgYWN0aW9uID09PSAnJyA/IHVuZGVmaW5lZCA6IGFjdGlvbiwgY29uZmlnKTtcclxuXHJcbiAgICAgICAgaWYgKGFjdGlvbkNhbGxiYWNrICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICBzbmFja0JhclJlZi5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgYWN0aW9uQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgc2hvd2luZyBhIHNuYWNrYmFyIG9yIG5vdFxyXG4gICAgICovXHJcbiAgICBnZXQgaXNTaG93aW5nU25hY2tCYXIoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dpbmdTbmFja0JhcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JjZSB0aGUgcmVtb3ZhbCBvZiB0aGUgc25hY2sgYmFyIGRpYWxvZyBpZiBpdCBleGlzdHMuXHJcbiAgICAgKlxyXG4gICAgICogSWYgbm8gc25hY2tiYXIgaXMgY3VycmVudGx5IHZpc2libGUsIHRoaXMgbWV0aG9kIHdpbGwgZG8gbm90aGluZ1xyXG4gICAgICovXHJcbiAgICByZW1vdmVTbmFja0JhcigpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQgfHwgIXRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLmRpc21pc3MoKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nU25hY2tCYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGlhbG9nIHdpdGggb25lIG9yIG1vcmUgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNsb3NlIGl0LiBXZSBjYW4gdXNlIGFueSBvZiB0aGUgcHJlZGVmaW5lZCBkaWFsb2cgdHlwZXMgdGhhdCBhcmUgYnVuZGxlZCB3aXRoXHJcbiAgICAgKiB0aGlzIGxpYnJhcnkgb3IgZXh0ZW5kIERpYWxvZ0Jhc2VDb21wb25lbnQgdG8gY3JlYXRlIG91ciBvd24gY3VzdG9tIG9uZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRpYWxvZ0NvbXBvbmVudENsYXNzIEEgY2xhc3MgZm9yIGEgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyBEaWFsb2dCYXNlQ29tcG9uZW50LCB3aGljaCB3aWxsIGJlIHRoZSBkaWFsb2cgdGhhdCBpcyBzaG93biB0byB0aGUgdXNlci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBkaWZmZXJlbnQgdmlzdWFsIGFuZCB0ZXh0dWFsIG9wdGlvbnMgdGhhdCB0aGlzIGRpYWxvZyBhbGxvd3M6XHJcbiAgICAgKiAgICAgICAgICAgIC0gd2lkdGg6IFNwZWNpZnkgdGhlIGNzcyB2YWx1ZSBmb3IgdGhlIGRlZmF1bHQgZGlhbG9nIHdpZHRoLiBBcyB0aGUgZGlhbG9nIGlzIHJlc3BvbnNpdmUsIHRoZSB2YWx1ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcclxuICAgICAqICAgICAgICAgICAgICByZWR1Y2VkIGlmIHRoZSBhdmFpbGFibGUgc2NyZWVuIGlzIG5vdCBlbm91Z2gsIGFuZCB3aWxsIHJlYWNoIHRoZSBkZXNpcmVkIHZhbHVlIG90aGVyd2lzZS4gV2UgY2FuIHNldCBhbnkgY3NzIHVuaXQgbGlrZSBwaXhlbHMsIFxyXG4gICAgICogICAgICAgICAgICAgICUsIHZoLCB2dywgb3IgYW55IG90aGVyLiBGb3IgZXhhbXBsZTogJzQwMHB4JywgJzUwJScsIGV0Yy5cclxuICAgICAqICAgICAgICAgICAgLSBtYXhXaWR0aDogRGVmaW5lcyB0aGUgbWF4aW11bSB3aWR0aCB0aGF0IHRoZSBkaWFsb2cgd2lsbCBoYXZlIHJlZ2FyZGluZyB0aGUgdmlld3BvcnQuIFdlIGNhbiBzcGVjaWZ5IGl0IGluICUgb3IgdncsIGp1c3QgbGlrZSBpcyBkb25lIGluXHJcbiAgICAgKiAgICAgICAgICAgICAgY3NzLiBCeSBkZWZhdWx0IGl0IGlzIGRlZmluZWQgYXMgOTZ2dywgd2hpY2ggd2lsbCBmaXQgOTYlIG9mIHRoZSB2aWV3cG9ydCBvbiBzbWFsbCBkZXZpY2VzXHJcbiAgICAgKiAgICAgICAgICAgIC0gaGVpZ2h0OiBUT0RPIGRvY3NcclxuICAgICAqICAgICAgICAgICAgLSBtYXhIZWlnaHQ6IFRPRE8gZG9jc1xyXG4gICAgICogICAgICAgICAgICAtIG1vZGFsOiBUcnVlIChkZWZhdWx0KSBpZiBzZWxlY3RpbmcgYW4gb3B0aW9uIGlzIG1hbmRhdG9yeSB0byBjbG9zZSB0aGUgZGlhbG9nLCBmYWxzZSBpZiB0aGUgZGlhbG9nIGNhbiBiZSBjbG9zZWRcclxuICAgICAqICAgICAgICAgICAgICBieSB0aGUgdXNlciBjbGlja2luZyBvdXRzaWRlIGl0IFxyXG4gICAgICogICAgICAgICAgICAtIHRleHRzOiBBIGxpc3Qgd2l0aCBzdHJpbmdzIGNvbnRhaW5pbmcgdGhlIGRpYWxvZyB0ZXh0cywgc29ydGVkIGJ5IGltcG9ydGFuY2UuIFdoZW4gZGlhbG9nIGhhcyBhIHRpdGxlLCB0aGlzIHNob3VsZFxyXG4gICAgICogICAgICAgICAgICAgIGJlIHBsYWNlZCBmaXJzdCwgc3VidGl0bGUgc2Vjb25kIGFuZCBzbyAoRWFjaCBkaWFsb2cgbWF5IGFjY2VwdCBkaWZmZXJlbnQgbnVtYmVyIG9mIHRleHRzKS5cclxuICAgICAqICAgICAgICAgICAgLSBvcHRpb25zOiBBIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IHdpbGwgYmUgdXNlZCBhcyBidXR0b24gY2FwdGlvbnMgZm9yIGVhY2ggb25lIG9mIHRoZSBhY2NlcHRlZCBkaWFsb2cgb3B0aW9uc1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkIGFuZCB3aWxsIHJlY2VpdmUgYSBzZWxlY3Rpb24gb2JqZWN0IHdpdGggdGhlIG51bWVyaWMgaW5kZXggYW5kIHZhbHVlIGZvclxyXG4gICAgICogICAgICAgIHRoZSBvcHRpb24gdGhhdCdzIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuIGlmIG5vIG9wdGlvbiB3YXMgc2VsZWN0ZWQsIGluZGV4IHdpbGwgYmUgLTEgYW5kIHZhbHVlIG51bGxcclxuICAgICAqL1xyXG4gICAgYWRkRGlhbG9nKGRpYWxvZ0NvbXBvbmVudENsYXNzOiBUeXBlPERpYWxvZ0Jhc2VDb21wb25lbnQ+LFxyXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHt3aWR0aD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0Pzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbD86IGJvb2xlYW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzPzogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBzdHJpbmdbXX0sIFxyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiBudWxsIHwgKChzZWxlY3Rpb246IHtpbmRleDpudW1iZXIsIHZhbHVlPzogYW55fSkgPT4gdm9pZCkgPSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIG5vbiBzcGVjaWZpZWQgcHJvcGVydGllc1xyXG4gICAgICAgIHByb3BlcnRpZXMubW9kYWwgPSBwcm9wZXJ0aWVzLm1vZGFsID8/IHRydWU7XHJcbiAgICAgICAgcHJvcGVydGllcy50ZXh0cyA9IHByb3BlcnRpZXMudGV4dHMgPz8gW107XHJcbiAgICAgICAgcHJvcGVydGllcy5vcHRpb25zID0gcHJvcGVydGllcy5vcHRpb25zID8/IFtdO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSBhIHN0cmluZyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGRpYWxvZyBvbiB0aGUgbGlzdCBvZiBhY3RpdmUgZGlhbG9nc1xyXG4gICAgICAgIC8vIEEgZGlhbG9nIGlzIGNvbnNpZGVyZWQgYXMgdW5pcXVlIGlmIHRoZSBkaWFsb2cgaWQgYW5kIHRleHRzIGFyZSBleGFjdGx5IHRoZSBzYW1lLiBXZSBkbyBub3QgdGFrZSBvcHRpb25zIGludG8gY29uc2lkZXJhdGlvblxyXG4gICAgICAgIC8vIGFzIHRoZXJlIG1heSBiZSBkaWFsb2dzIHdpdGggYSBiaWcgYW1vdW50IG9mIG9wdGlvbnMgYXZhaWxhYmxlLlxyXG4gICAgICAgIGxldCBjbGFzc05hbWUgPSAoZGlhbG9nQ29tcG9uZW50Q2xhc3MgYXMgYW55KS5ESUFMT0dfQ0xBU1NfTkFNRTtcclxuICAgICAgICBcclxuICAgICAgICBpZihjbGFzc05hbWUgPT09ICcnKXtcclxuICAgICAgICBcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3RhdGljIHByb3BlcnR5IERJQUxPR19DTEFTU19OQU1FIGlzIG5vdCBkZWZpbmVkIG9yIGlzIGVtcHR5IGZvciB0aGlzIGRpYWxvZyBjb21wb25lbnQgKCR7ZGlhbG9nQ29tcG9uZW50Q2xhc3N9KWApOyAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IGRpYWxvZ0hhc2ggPSBjbGFzc05hbWUgKyBwcm9wZXJ0aWVzLnRleHRzLmpvaW4oJycpO1xyXG5cclxuICAgICAgICAvLyBpZGVudGljYWwgZGlhbG9ncyB3b24ndCBiZSBhbGxvd2VkIGF0IHRoZSBzYW1lIHRpbWVcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZlRGlhbG9ncy5pbmNsdWRlcyhkaWFsb2dIYXNoKSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihkaWFsb2dDb21wb25lbnRDbGFzcywge1xyXG4gICAgICAgICAgICB3aWR0aDogcHJvcGVydGllcy53aWR0aCA/PyBcIjUwJVwiLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogcHJvcGVydGllcy5tYXhXaWR0aCA/PyBcIjk2dndcIixcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBwcm9wZXJ0aWVzLm1vZGFsLFxyXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogIXByb3BlcnRpZXMubW9kYWwsXHJcbiAgICAgICAgICAgIGRhdGE6IHsgdGV4dHM6IHByb3BlcnRpZXMudGV4dHMsIG9wdGlvbnM6IHByb3BlcnRpZXMub3B0aW9ucyB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9ncy5wdXNoKGRpYWxvZ0hhc2gpO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcy5wdXNoKGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKHNlbGVjdGlvbjp7aW5kZXg6bnVtYmVyLCB2YWx1ZT86YW55fSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9ncyA9IEFycmF5VXRpbHMucmVtb3ZlRWxlbWVudCh0aGlzLl9hY3RpdmVEaWFsb2dzLCBkaWFsb2dIYXNoKTtcclxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzID0gQXJyYXlVdGlscy5yZW1vdmVFbGVtZW50KHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcywgZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgICAgIGlmKCFwcm9wZXJ0aWVzLm1vZGFsICYmIHNlbGVjdGlvbiA9PT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGluZGV4OiAtMSB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfWVsc2UgaWYgKCFOdW1lcmljVXRpbHMuaXNJbnRlZ2VyKHNlbGVjdGlvbi5pbmRleCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNsb3NlRGlhbG9nKCkgZXhwZWN0cyBpbmRleCB0byBiZSBhbiBpbnRlZ2VyYCk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHNlbGVjdGlvbi5pbmRleCA+PSAwICYmIHNlbGVjdGlvbi52YWx1ZSA9PT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnZhbHVlID0gcHJvcGVydGllcy5vcHRpb25zIVtzZWxlY3Rpb24uaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIChjYWxsYmFjayBhcyAoKHNlbGVjdGlvbjp7aW5kZXg6bnVtYmVyLCB2YWx1ZT86YW55fSkgPT4gdm9pZCkpKHNlbGVjdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEZvcmNlIHRoZSByZW1vdmFsIG9mIGFsbCB0aGUgZGlhbG9ncyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZS5cclxuICAgICAqXHJcbiAgICAgKiBJZiBubyBkaWFsb2dzIGFyZSBjdXJyZW50bHkgdmlzaWJsZSwgdGhpcyBtZXRob2Qgd2lsbCBkbyBub3RoaW5nXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUFsbERpYWxvZ3MoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGRpYWxvZ1JlZiBvZiB0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMpIHtcclxuXHJcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSh7aW5kZXg6LTF9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9ncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhIGRpYWxvZyB3aXRoIGEgY2FsZW5kYXIgdG8gbGV0IHRoZSB1c2VyIHBpY2sgYSBkYXRlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBkaWZmZXJlbnQgdmlzdWFsIGFuZCB0ZXh0dWFsIG9wdGlvbnMgdGhhdCB0aGlzIGRpYWxvZyBhbGxvd3M6XHJcbiAgICAgKiAgICAgICAgICAgIC0gd2lkdGg6IFNwZWNpZnkgdGhlIGNzcyB2YWx1ZSBmb3IgdGhlIGRlZmF1bHQgZGlhbG9nIHdpZHRoLiBBcyB0aGUgZGlhbG9nIGlzIHJlc3BvbnNpdmUsIHRoZSB2YWx1ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcclxuICAgICAqICAgICAgICAgICAgICByZWR1Y2VkIGlmIHRoZSBhdmFpbGFibGUgc2NyZWVuIGlzIG5vdCBlbm91Z2gsIGFuZCB3aWxsIHJlYWNoIHRoZSBkZXNpcmVkIHZhbHVlIG90aGVyd2lzZS4gV2UgY2FuIHNldCBhbnkgY3NzIHVuaXQgbGlrZSBwaXhlbHMsIFxyXG4gICAgICogICAgICAgICAgICAgICUsIHZoLCB2dywgb3IgYW55IG90aGVyLiBGb3IgZXhhbXBsZTogJzQwMHB4JywgJzUwJScsIGV0Yy5cclxuICAgICAqICAgICAgICAgICAgLSBtYXhXaWR0aDogRGVmaW5lcyB0aGUgbWF4aW11bSB3aWR0aCB0aGF0IHRoZSBkaWFsb2cgd2lsbCBoYXZlIHJlZ2FyZGluZyB0aGUgdmlld3BvcnQuIFdlIGNhbiBzcGVjaWZ5IGl0IGluICUgb3IgdncsIGp1c3QgbGlrZSBpcyBkb25lIGluXHJcbiAgICAgKiAgICAgICAgICAgICAgY3NzLiBCeSBkZWZhdWx0IGl0IGlzIGRlZmluZWQgYXMgOTZ2dywgd2hpY2ggd2lsbCBmaXQgOTYlIG9mIHRoZSB2aWV3cG9ydCBvbiBzbWFsbCBkZXZpY2VzXHJcbiAgICAgKiAgICAgICAgICAgIC0gaGVpZ2h0OiBUT0RPIGRvY3NcclxuICAgICAqICAgICAgICAgICAgLSBtYXhIZWlnaHQ6IFRPRE8gZG9jc1xyXG4gICAgICogICAgICAgICAgICAtIG1vZGFsOiBUcnVlIChkZWZhdWx0KSBpZiBzZWxlY3RpbmcgYW4gb3B0aW9uIGlzIG1hbmRhdG9yeSB0byBjbG9zZSB0aGUgZGlhbG9nLCBmYWxzZSBpZiB0aGUgZGlhbG9nIGNhbiBiZSBjbG9zZWRcclxuICAgICAqICAgICAgICAgICAgICBieSB0aGUgdXNlciBjbGlja2luZyBvdXRzaWRlIGl0IFxyXG4gICAgICogICAgICAgICAgICAtIHRpdGxlOiBBbiBvcHRpb25hbCBkaWFsb2cgdGl0bGVcclxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZC4gSXQgd2lsbCByZWNlaXZlIGEgRGF0ZSgpIG9iamVjdCBzZWxlY3RlZCBieSB0aGUgdXNlciBvciBudWxsIGlmIG5vIHNlbGVjdGlvbiBoYXBwZW5lZFxyXG4gICAgICovXHJcbiAgICBhZGREYXRlU2VsZWN0aW9uRGlhbG9nKHByb3BlcnRpZXM6IHt3aWR0aD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0Pzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0Pzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWw/OiBib29sZWFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT86IHN0cmluZ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAoKHNlbGVjdGVkRGF0ZTogbnVsbCB8IERhdGUpID0+IHZvaWQpKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuYWRkRGlhbG9nKERpYWxvZ0RhdGVTZWxlY3Rpb25Db21wb25lbnQsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBwcm9wZXJ0aWVzLndpZHRoID8/IFwiNTAlXCIsXHJcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogcHJvcGVydGllcy5tYXhXaWR0aCA/PyBcIjk2dndcIixcclxuICAgICAgICAgICAgICAgIGhlaWdodDogcHJvcGVydGllcy5oZWlnaHQgPz8gXCI1MCVcIixcclxuICAgICAgICAgICAgICAgIG1heEhlaWdodDogcHJvcGVydGllcy5tYXhIZWlnaHQgPz8gXCI5MnZ3XCIsXHJcbiAgICAgICAgICAgICAgICBtb2RhbDogcHJvcGVydGllcy5tb2RhbCA/PyBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHRleHRzOiBbcHJvcGVydGllcy50aXRsZSA/PyAnJ10gICBcclxuICAgICAgICAgICAgfSwoc2VsZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNlbGVjdGlvbi5pbmRleCA9PT0gLTEgPyBudWxsIDogKHNlbGVjdGlvbi52YWx1ZSBhcyBEYXRlKSk7ICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVE9ETyAtIHRyYW5zbGF0ZSBmcm9tIFRTIHZlcnNpb25cclxuICAgICAqL1xyXG4vLyAgICBhZGRTaWRlTmF2KCl7XHJcbi8vXHJcbi8vICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPIC0gdHJhbnNsYXRlIGZyb20gVFMgdmVyc2lvblxyXG4gICAgICovXHJcbi8vICAgIGdldCBpc1Nob3dpbmdTaWRlTmF2KCl7XHJcbi8vXHJcbi8vICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPIC0gdHJhbnNsYXRlIGZyb20gVFMgdmVyc2lvblxyXG4gICAgICovXHJcbi8vICAgIHJlbW92ZVNpZGVOYXYoKXtcclxuLy9cclxuLy8gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQmxvY2sgYWxsIHRoZSB1c2VyIGludGVyYWN0aW9ucyB3aXRoIHRoZSBhcHBsaWNhdGlvbiAoa2V5Ym9hcmQsIHRvdWNoLCBtb3VzZSwgLi4uKVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kaXNhYmxlVXNlckludGVyYWN0aW9uKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdrZXlkb3duJywgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZWRvd24nLCAoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdwb2ludGVyZG93bicsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3RvcmUgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRpc2FibGVkIHdpdGggX2Rpc2FibGVVc2VySW50ZXJhY3Rpb24gbWV0aG9kXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuYWJsZVVzZXJJbnRlcmFjdGlvbigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFRLFVBQVUsRUFBcUcsTUFBTSxlQUFlLENBQUM7QUFHcEosT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUN4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQUcvRTs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFjLFNBQVEscUJBQXFCO0lBeUZwRCxZQUFZLGVBQWlDLEVBQ2hCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLHdCQUFrRDtRQUVqRixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFOVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUEzRi9FOzs7O1dBSUc7UUFDSCxrQ0FBNkIsR0FBaUMsc0JBQXNCLENBQUM7UUFHckY7O1dBRUc7UUFDSyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRzFCOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDOzs7O1dBSUc7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d0JBQXdCLEtBQUssSUFBSSxFQUFFO1lBRXhDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxJQUFJLEVBQUU7WUFFMUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztTQUMxQztRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUU1QyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs4R0FuaUJRLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQXJyYXlVdGlscywgTnVtZXJpY1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgVHlwZSwgSW5qZWN0YWJsZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RvciwgQXBwbGljYXRpb25SZWYsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyLCBNYXRTbmFja0JhckNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvYnVzeS1zdGF0ZS1iYXNlL2J1c3ktc3RhdGUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0RhdGVTZWxlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWRhdGUtc2VsZWN0aW9uL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaW5nbGV0b25lU3RyaWN0Q2xhc3MgfSBmcm9tICcuLi9tb2RlbC9jbGFzc2VzL1NpbmdsZXRvbmVTdHJpY3RDbGFzcyc7XG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIHRoZSBhcHBsaWNhdGlvbiBtb2RhbCBhbmQgbm9uIG1vZGFsIGZsb2F0aW5nIGVsZW1lbnRzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSBleHRlbmRzIFNpbmdsZXRvbmVTdHJpY3RDbGFzcyB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCB0byBtb2RpZnkgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgc2hvd24gYnkgZGVmYXVsdCBieSB0aGUgYWRkTW9kYWxCdXN5U3RhdGUoKSBtZXRob2QuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSB0aGlzLmFkZE1vZGFsQnVzeVN0YXRlKClcclxuICAgICAqL1xyXG4gICAgY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3M6IFR5cGU8QnVzeVN0YXRlQmFzZUNvbXBvbmVudD4gPSBCdXN5U3RhdGVCYXNlQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIHB1YmxpYyBnZXR0ZXIgZm9yIGRvY3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNFbmFibGVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgbWFpbiBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgc2hvd2luZyBhIGJ1c3kgc3RhdGUgdGhhdCBibG9ja3MgYWxsIHVzZXIgaW50ZXJhY3Rpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNTaG93aW5nQnVzeVN0YXRlID0gZmFsc2U7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgaW5pdGlhbGl6ZWQgb25seSB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQuXHJcbiAgICAgKlxyXG4gICAgICogKFRvIGFwcGVuZCB0aGUgYnVzeSBzdGF0ZSBkeW5hbWljYWxseSwgd2UgdXNlIHRoZSBQb3J0YWwgY29uY2VwdCBmcm9tIHRoZSBhbmd1bGFyIG1hdGVyaWFsIGxpYnJhcnkpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudFBvcnRhbDogQ29tcG9uZW50UG9ydGFsPEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIGJ1c3kgc3RhdGUgY29udGFpbmVyIHdoZXJlIHRoZSBjb21wb25lbnQgd2lsbCBiZSBhZGRlZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tb2RhbEJ1c3lTdGF0ZUhvc3Q6IERvbVBvcnRhbE91dGxldCB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBtYW5hZ2VyIGlzIGN1cnJlbnRseSBzaG93aW5nIGEgc25hY2tiYXIgZWxlbWVudCBvciBub3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNTaG93aW5nU25hY2tCYXIgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyBhIGxpc3Qgb2YgdGhlIGRpYWxvZ3MgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUgdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBFYWNoIGl0ZW0gaW4gdGhpcyBsaXN0IGlzIGEgaGFzaCB0aGF0IGlzIGNvbXB1dGVkIHdoZW4gZGlhbG9nIGlzIGNyZWF0ZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgaXQuXHJcbiAgICAgKlxyXG4gICAgICogRW1wdHkgbGlzdCBtZWFucyBubyBkaWFsb2dzIGFyZSBjdXJyZW50bHkgdmlzaWJsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEaWFsb2dzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5zIGEgbGlzdCB3aXRoIGFsbCB0aGUgTWF0RGlhbG9nIGluc3RhbmNlcyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgdXNlci5cclxuICAgICAqIFRoZSBsaXN0IHVzZXMgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGxpc3Qgb2YgX2FjdGl2ZURpYWxvZ3MgaGFzaCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGlhbG9nSW5zdGFuY2VzOiBNYXREaWFsb2dSZWY8RGlhbG9nQmFzZUNvbXBvbmVudD5bXSA9IFtdO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgdG8gc3RvcmUgdGhlIGluaXRpYWxpemVkIFJlbmRlcmVyIDIgaW5zdGFuY2UgdGhhdCBpcyB1c2VkIGJ5IHRoaXMgY2xhc3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgd2luZG93IGJlZm9yZXVubG9hZCBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBkb2N1bWVudCBrZXlkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudEtleWRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IG1vdXNlZG93biBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IHBvaW50ZXJkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1hdFNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG5cclxuXHRcdHN1cGVyKERpYWxvZ1NlcnZpY2UpO1xyXG5cclxuICAgICAgICB0aGlzLl9yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGlzIGRpYWxvZyBzZXJ2aWNlIGlzIGVuYWJsZWQgb3Igbm90LiBJZiBkaWFsb2cgc2VydmljZSBpcyBkaXNhYmxlZCwgbm9uZSBvZiBpdCdzIGZlYXR1cmVzIHdpbGwgd29ya1xyXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGJsb2NrIGFsbCBkaWFsb2cgZmVhdHVyZXMgbm9ybWFsbHkgd2hlbiBzaHV0dGluZyBkb3duIHRoZSBhcHBsaWNhdGlvblxyXG4gICAgICpcclxuICAgICAqIFVzZSB3aXRoIGNhdXRpb24uIFdoZW4gdGhpcyBpcyBzZXQgdG8gZmFsc2UsIGRpYWxvZyBzZXJ2aWNlIHN0b3BzIHdvcmtpbmcuXHJcbiAgICAgKi9cclxuICAgIHNldCBpc0VuYWJsZWQodjogYm9vbGVhbikge1xyXG5cclxuICAgICAgICBpZiAodiA9PT0gdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9pc0VuYWJsZWQgPSB2O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuYWJsZXMgYSB3YXJuaW5nIHRoYXQgd2lsbCBiZSBzaG93biB0byB0aGUgdXNlciB3aGVuIGhlL3NoZSB0cmllcyB0byBjbG9zZSB0aGUgYXBwbGljYXRpb24uXHJcbiAgICAgKiBUaGlzIHdhcm5pbmcgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gY29udGludWUgd2l0aCB0aGUgZXhpdCBwcm9jZXNzIG9yIGNhbmNlbCBpdC5cclxuICAgICAqIFRoZSBzcGVjaWZpYyB0ZXh0cyBvZiB0aGlzIG1lc3NhZ2UgYXJlIGEgZ2VuZXJpYyBvbmVzIGFuZCBjYW5ub3QgYmUgY2hhbmdlZC5cclxuICAgICAqXHJcbiAgICAgKiBJTVBPUlRBTlQ6IFRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBtYWluIGFwcGxpY2F0aW9uIGhhcyBiZWVuIGluaXRpYWxpemVkIGluIG9yZGVyIHRvIHdvcmssXHJcbiAgICAgKiBvdGhlcndpc2UgaXQgd2lsbCBkbyBub3RoaW5nLlxyXG4gICAgICovXHJcbiAgICBhZGRDbG9zZUFwcGxpY2F0aW9uV2FybmluZygpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2JlZm9yZXVubG9hZCcsXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGV2ZW50LnJldHVyblZhbHVlID0gdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgY2xvc2UgYXBwbGljYXRpb24gd2FybmluZyBtZXNzYWdlIGlmIHByZXZpb3VzbHkgYXNzaWduZWRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQ2xvc2VBcHBsaWNhdGlvbldhcm5pbmcoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGFuZ2UgdGhlIGFwcGxpY2F0aW9uIHZpc3VhbCBhcHBlYXJhbmNlIHNvIHRoZSB1c2VyIHBlcmNlaXZlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBpc1xyXG4gICAgICogY3VycmVudGx5IGJ1c3kuIFdoaWxlIG1vZGFsIGJ1c3kgc3RhdGUgaXMgZW5hYmxlZCwgbm8gdXNlciBpbnB1dCBpcyBwb3NzaWJsZSBuZWl0aGVyIHZpYVxyXG4gICAgICoga2V5Ym9hcmQsIG1vdXNlIG9yIHRvdWNoLiBVc2UgdGhpcyBzdGF0ZSB3aGVuIHBlcmZvcm1pbmcgc2VydmVyIHJlcXVlc3RzIG9yIG9wZXJhdGlvbnMgdGhhdFxyXG4gICAgICogbXVzdCBibG9jayB0aGUgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBOb3RlOiBXZSBjYW4gbW9kaWZ5IHRoZSBidXN5IHN0YXRlIGNvbXBvbmVudCB0aGF0IGlzIHNob3duIGJ5IHRoaXMgbWV0aG9kLiBUbyBkbyBpdCwgd2UgbXVzdFxyXG4gICAgICogc2V0IHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3MgcHJvcGVydHkgd2l0aCBvdXIgb3duIGN1c3RvbSBidXN5IHN0YXRlIGNvbXBvbmVudCBjbGFzcy4gKFdlIGNhbiBkbyBpdCBhdFxyXG4gICAgICogb3VyIG1haW4gYXBwbGljYXRpb24gY29tcG9uZW50IGNvbnN0cnVjdG9yIGZvciBleGFtcGxlKS4gT3VyIGN1c3RvbSBjb21wb25lbnQgbXVzdCBleHRlbmQgdGhlXHJcbiAgICAgKiBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IG9uZSB0byBhZGQgaXRzIG93biB2aXN1YWwgYXBwZWFyYW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3NcclxuICAgICAqL1xyXG4gICAgYWRkTW9kYWxCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8IHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZVVzZXJJbnRlcmFjdGlvbigpO1xyXG5cclxuICAgICAgICAvLyBEeW5hbWljYWxseSBjcmVhdGUgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHJlZmVyZW5jZSBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lXHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFBvcnRhbCA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIFBvcnRhbEhvc3Qgd2l0aCBkb2N1bWVudC5ib2R5IGFzIGl0cyBhbmNob3IgZWxlbWVudFxyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZixcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICh0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgYXMgRG9tUG9ydGFsT3V0bGV0KS5hdHRhY2godGhpcy5fY29tcG9uZW50UG9ydGFsKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY3VycmVudGx5IGxvY2tlZCBpbiBhIG1vZGFsIGJ1c3kgc3RhdGUgKGNhdXNlZCBieSBhbiBhZGRNb2RhbEJ1c3lTdGF0ZSgpIGNhbGwpXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1Nob3dpbmdCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBhcHBsaWNhdGlvbiBidXN5IHN0YXRlIGFuZCByZXN0b3JlIGl0IGJhY2sgdG8gbm9ybWFsIHVzZXIgaW50ZXJhY3Rpb25cclxuICAgICAqL1xyXG4gICAgcmVtb3ZlTW9kYWxCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8ICF0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRQb3J0YWwgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICh0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgYXMgRG9tUG9ydGFsT3V0bGV0KS5kZXRhY2goKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2VuYWJsZVVzZXJJbnRlcmFjdGlvbigpO1xyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRPRE8gLSBhZGFwdCBmcm9tIFRTIHZlcnNpb25cclxuICAgICAqL1xyXG4gICAgYWRkVG9vbFRpcCgpIHtcclxuXHJcbiAgICAgICAgLy8gVE9ETyAtIGFkYXB0IGZyb20gVFMgdmVyc2lvblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBub24gbW9kYWwgc25hY2tiYXIgbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyIChPbmx5IG9uZSBzbmFjay1iYXIgY2FuIGV2ZXIgYmUgb3BlbmVkIGF0IHRoZSBzYW1lIHRpbWUpLlxyXG4gICAgICpcclxuICAgICAqIFNuYWNrYmFycyBpbmZvcm0gdXNlcnMgb2YgYSBwcm9jZXNzIHRoYXQgYW4gYXBwIGhhcyBwZXJmb3JtZWQgb3Igd2lsbCBwZXJmb3JtLiBUaGV5IGFwcGVhciB0ZW1wb3JhcmlseSwgdG93YXJkcyB0aGUgYm90dG9tIG9yIHRvcCBvZiB0aGUgc2NyZWVuLlxyXG4gICAgICogVGhleSBzaG91bGRu4oCZdCBpbnRlcnJ1cHQgdGhlIHVzZXIgZXhwZXJpZW5jZSwgYW5kIHRoZXkgZG9u4oCZdCByZXF1aXJlIHVzZXIgaW5wdXQgdG8gZGlzYXBwZWFyLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb25maWcgQSBNYXRTbmFja0JhckNvbmZpZyBpbnN0YW5jZSB3aXRoIHRoZSBjdXN0b21pemF0aW9ucyB3ZSB3YW50IGZvciB0aGlzIHNuYWNrYmFyXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBzaG93IG9uIHRoZSBzbmFja2JhclxyXG4gICAgICogQHBhcmFtIGFjdGlvbiBJZiBub3QgZW1wdHksIHRoZSB0ZXh0IHRvIHBsYWNlIG9uIHRoZSBzbmFja2JhciBjb25maXJtYXRpb24gYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uQ2FsbGJhY2sgQSBtZXRob2QgdG8gZXhlY3V0ZSBvbmNlIHRoZSB1c2VyIGNsaWNrcyBpbnRvIHRoZSBhY3Rpb24gYnV0dG9uLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gdm9pZFxyXG4gICAgICovXHJcbiAgICBhZGRTbmFja0Jhcihjb25maWc6IE1hdFNuYWNrQmFyQ29uZmlnLCBtZXNzYWdlOiBzdHJpbmcsIGFjdGlvbiA9ICcnLCBhY3Rpb25DYWxsYmFjazogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9pc1Nob3dpbmdTbmFja0Jhcikge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcnlpbmcgdG8gc2hvdyBhIHNuYWNrYmFyIHdoaWxlIGFub3RoZXIgb25lIGlzIHN0aWxsIHZpc2libGUnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc25hY2tCYXJSZWYgPSB0aGlzLm1hdFNuYWNrQmFyLm9wZW4obWVzc2FnZSwgYWN0aW9uID09PSAnJyA/IHVuZGVmaW5lZCA6IGFjdGlvbiwgY29uZmlnKTtcclxuXHJcbiAgICAgICAgaWYgKGFjdGlvbkNhbGxiYWNrICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICBzbmFja0JhclJlZi5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgYWN0aW9uQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgc2hvd2luZyBhIHNuYWNrYmFyIG9yIG5vdFxyXG4gICAgICovXHJcbiAgICBnZXQgaXNTaG93aW5nU25hY2tCYXIoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dpbmdTbmFja0JhcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JjZSB0aGUgcmVtb3ZhbCBvZiB0aGUgc25hY2sgYmFyIGRpYWxvZyBpZiBpdCBleGlzdHMuXHJcbiAgICAgKlxyXG4gICAgICogSWYgbm8gc25hY2tiYXIgaXMgY3VycmVudGx5IHZpc2libGUsIHRoaXMgbWV0aG9kIHdpbGwgZG8gbm90aGluZ1xyXG4gICAgICovXHJcbiAgICByZW1vdmVTbmFja0JhcigpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQgfHwgIXRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLmRpc21pc3MoKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nU25hY2tCYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGlhbG9nIHdpdGggb25lIG9yIG1vcmUgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNsb3NlIGl0LiBXZSBjYW4gdXNlIGFueSBvZiB0aGUgcHJlZGVmaW5lZCBkaWFsb2cgdHlwZXMgdGhhdCBhcmUgYnVuZGxlZCB3aXRoXHJcbiAgICAgKiB0aGlzIGxpYnJhcnkgb3IgZXh0ZW5kIERpYWxvZ0Jhc2VDb21wb25lbnQgdG8gY3JlYXRlIG91ciBvd24gY3VzdG9tIG9uZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRpYWxvZ0NvbXBvbmVudENsYXNzIEEgY2xhc3MgZm9yIGEgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyBEaWFsb2dCYXNlQ29tcG9uZW50LCB3aGljaCB3aWxsIGJlIHRoZSBkaWFsb2cgdGhhdCBpcyBzaG93biB0byB0aGUgdXNlci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBkaWZmZXJlbnQgdmlzdWFsIGFuZCB0ZXh0dWFsIG9wdGlvbnMgdGhhdCB0aGlzIGRpYWxvZyBhbGxvd3M6XHJcbiAgICAgKiAgICAgICAgICAgIC0gaWQ6IFRoZSBodG1sIHVuaXF1ZSBpZGVudGlmaWVyIHRoYXQgdGhlIGRpYWxvZyB3aWxsIGhhdmUgb25jZSBjcmVhdGVkLiBJZiBub3Qgc3BlY2lmaWVkLCBubyBpZCB3aWxsIGJlIGV4cGxpY2l0bHkgc2V0XHJcbiAgICAgKiAgICAgICAgICAgIC0gd2lkdGg6IDUwJSBieSBkZWZhdWx0LiBTcGVjaWZ5IHRoZSBjc3MgdmFsdWUgZm9yIHRoZSBkZWZhdWx0IGRpYWxvZyB3aWR0aC4gQXMgdGhlIGRpYWxvZyBpcyByZXNwb25zaXZlLCB0aGUgdmFsdWUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XHJcbiAgICAgKiAgICAgICAgICAgICAgcmVkdWNlZCBpZiB0aGUgYXZhaWxhYmxlIHNjcmVlbiBpcyBub3QgZW5vdWdoLCBhbmQgd2lsbCByZWFjaCB0aGUgZGVzaXJlZCB2YWx1ZSBvdGhlcndpc2UuIFdlIGNhbiBzZXQgYW55IGNzcyB1bml0IGxpa2UgcGl4ZWxzLCBcclxuICAgICAqICAgICAgICAgICAgICAlLCB2aCwgdncsIG9yIGFueSBvdGhlci4gRm9yIGV4YW1wbGU6ICc0MDBweCcsICc1MCUnLCBldGMuXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4V2lkdGg6IERlZmluZXMgdGhlIG1heGltdW0gd2lkdGggdGhhdCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSByZWdhcmRpbmcgdGhlIHZpZXdwb3J0LiBXZSBjYW4gc3BlY2lmeSBpdCBpbiAlIG9yIHZ3LCBqdXN0IGxpa2UgaXMgZG9uZSBpblxyXG4gICAgICogICAgICAgICAgICAgIGNzcy4gQnkgZGVmYXVsdCBpdCBpcyBkZWZpbmVkIGFzIDk2dncsIHdoaWNoIHdpbGwgZml0IDk2JSBvZiB0aGUgdmlld3BvcnQgb24gc21hbGwgZGV2aWNlc1xyXG4gICAgICogICAgICAgICAgICAtIGhlaWdodDogVE9ETyBkb2NzXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4SGVpZ2h0OiBUT0RPIGRvY3NcclxuICAgICAqICAgICAgICAgICAgLSBtb2RhbDogVHJ1ZSAoZGVmYXVsdCkgaWYgc2VsZWN0aW5nIGFuIG9wdGlvbiBpcyBtYW5kYXRvcnkgdG8gY2xvc2UgdGhlIGRpYWxvZywgZmFsc2UgaWYgdGhlIGRpYWxvZyBjYW4gYmUgY2xvc2VkXHJcbiAgICAgKiAgICAgICAgICAgICAgYnkgdGhlIHVzZXIgY2xpY2tpbmcgb3V0c2lkZSBpdCBcclxuICAgICAqICAgICAgICAgICAgLSB0ZXh0czogQSBsaXN0IHdpdGggc3RyaW5ncyBjb250YWluaW5nIHRoZSBkaWFsb2cgdGV4dHMsIHNvcnRlZCBieSBpbXBvcnRhbmNlLiBXaGVuIGRpYWxvZyBoYXMgYSB0aXRsZSwgdGhpcyBzaG91bGRcclxuICAgICAqICAgICAgICAgICAgICBiZSBwbGFjZWQgZmlyc3QsIHN1YnRpdGxlIHNlY29uZCBhbmQgc28gKEVhY2ggZGlhbG9nIG1heSBhY2NlcHQgZGlmZmVyZW50IG51bWJlciBvZiB0ZXh0cykuXHJcbiAgICAgKiAgICAgICAgICAgIC0gb3B0aW9uczogQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYnV0dG9uIGNhcHRpb25zIGZvciBlYWNoIG9uZSBvZiB0aGUgYWNjZXB0ZWQgZGlhbG9nIG9wdGlvbnNcclxuICAgICAqICAgICAgICAgICAgLSB2aWV3Q29udGFpbmVyUmVmOiBUaGlzIGlzIGltcG9ydGFudCBpZiB3ZSB3YW50IHRvIHByb3BhZ2F0ZSBwcm92aWRlcnMgZnJvbSBhIHBhcmVudCBjb21wb25lbnQgdG8gdGhpcyBkaWFsb2cuIFdlIG11c3Qgc3BlY2lmeSBcclxuXHQgKiAgICAgICAgICAgICAgdGhpcyByZWZlcmVuY2UgdG8gbWFrZSBzdXJlIHRoZSBzYW1lIHNlcnZpY2VzIGluamVjdGVkIG9uIHRoZSBwYXJlbnQgYXJlIGF2YWlsYWJsZSB0b28gYXQgdGhlIGNoaWxkIGRpYWxvZyBcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIEEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZCBhbmQgd2lsbCByZWNlaXZlIGEgc2VsZWN0aW9uIG9iamVjdCB3aXRoIHRoZSBudW1lcmljIGluZGV4IGFuZCB2YWx1ZSBmb3JcclxuICAgICAqICAgICAgICB0aGUgb3B0aW9uIHRoYXQncyBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLiBpZiBubyBvcHRpb24gd2FzIHNlbGVjdGVkLCBpbmRleCB3aWxsIGJlIC0xIGFuZCB2YWx1ZSBudWxsXHJcbiAgICAgKi9cclxuICAgIGFkZERpYWxvZyhkaWFsb2dDb21wb25lbnRDbGFzczogVHlwZTxEaWFsb2dCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7aWQ/OiBzdHJpbmcsXHJcblx0XHRcdFx0XHRcdCAgIHdpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0Pzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsPzogYm9vbGVhbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM/OiBzdHJpbmdbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmPzogVmlld0NvbnRhaW5lclJlZn0sIFxyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiBudWxsIHwgKChzZWxlY3Rpb246IHtpbmRleDpudW1iZXIsIHZhbHVlPzogYW55fSkgPT4gdm9pZCkgPSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIG5vbiBzcGVjaWZpZWQgcHJvcGVydGllc1xyXG4gICAgICAgIHByb3BlcnRpZXMubW9kYWwgPSBwcm9wZXJ0aWVzLm1vZGFsID8/IHRydWU7XHJcbiAgICAgICAgcHJvcGVydGllcy50ZXh0cyA9IHByb3BlcnRpZXMudGV4dHMgPz8gW107XHJcbiAgICAgICAgcHJvcGVydGllcy5vcHRpb25zID0gcHJvcGVydGllcy5vcHRpb25zID8/IFtdO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSBhIHN0cmluZyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGRpYWxvZyBvbiB0aGUgbGlzdCBvZiBhY3RpdmUgZGlhbG9nc1xyXG4gICAgICAgIC8vIEEgZGlhbG9nIGlzIGNvbnNpZGVyZWQgYXMgdW5pcXVlIGlmIHRoZSBkaWFsb2cgaWQgYW5kIHRleHRzIGFyZSBleGFjdGx5IHRoZSBzYW1lLiBXZSBkbyBub3QgdGFrZSBvcHRpb25zIGludG8gY29uc2lkZXJhdGlvblxyXG4gICAgICAgIC8vIGFzIHRoZXJlIG1heSBiZSBkaWFsb2dzIHdpdGggYSBiaWcgYW1vdW50IG9mIG9wdGlvbnMgYXZhaWxhYmxlLlxyXG4gICAgICAgIGxldCBjbGFzc05hbWUgPSAoZGlhbG9nQ29tcG9uZW50Q2xhc3MgYXMgYW55KS5ESUFMT0dfQ0xBU1NfTkFNRTtcclxuICAgICAgICBcclxuICAgICAgICBpZihjbGFzc05hbWUgPT09ICcnKXtcclxuICAgICAgICBcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3RhdGljIHByb3BlcnR5IERJQUxPR19DTEFTU19OQU1FIGlzIG5vdCBkZWZpbmVkIG9yIGlzIGVtcHR5IGZvciB0aGlzIGRpYWxvZyBjb21wb25lbnQgKCR7ZGlhbG9nQ29tcG9uZW50Q2xhc3N9KWApOyAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IGRpYWxvZ0hhc2ggPSBjbGFzc05hbWUgKyBwcm9wZXJ0aWVzLnRleHRzLmpvaW4oJycpO1xyXG5cclxuICAgICAgICAvLyBpZGVudGljYWwgZGlhbG9ncyB3b24ndCBiZSBhbGxvd2VkIGF0IHRoZSBzYW1lIHRpbWVcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZlRGlhbG9ncy5pbmNsdWRlcyhkaWFsb2dIYXNoKSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihkaWFsb2dDb21wb25lbnRDbGFzcywge1xyXG4gICAgICAgICAgICB3aWR0aDogcHJvcGVydGllcy53aWR0aCA/PyBcIjUwJVwiLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogcHJvcGVydGllcy5tYXhXaWR0aCA/PyBcIjk2dndcIixcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBwcm9wZXJ0aWVzLm1vZGFsLFxyXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogIXByb3BlcnRpZXMubW9kYWwsXHJcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHByb3BlcnRpZXMudmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICAgICAgZGF0YTogeyB0ZXh0czogcHJvcGVydGllcy50ZXh0cywgb3B0aW9uczogcHJvcGVydGllcy5vcHRpb25zIH1cclxuICAgICAgICAgIH0pOyAgICAgIFxyXG5cdFx0XHJcblx0XHQvLyBBc3NpZ24gdGhlIGRpYWxvZyBJRCBvbmx5IGlmIHNwZWNpZmljYWxseSBzZXQgb24gcHJvcGVydGllc1xyXG5cdFx0aWYocHJvcGVydGllcy5pZCAmJiBwcm9wZXJ0aWVzLmlkICE9PSB1bmRlZmluZWQpe1xyXG5cdFx0XHRcclxuXHRcdFx0ZGlhbG9nUmVmLmlkID0gcHJvcGVydGllcy5pZDtcclxuXHRcdH1cclxuXHRcdFxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ3MucHVzaChkaWFsb2dIYXNoKTtcclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMucHVzaChkaWFsb2dSZWYpO1xyXG5cclxuICAgICAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChzZWxlY3Rpb246e2luZGV4Om51bWJlciwgdmFsdWU/OmFueX0pID0+IHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ3MgPSBBcnJheVV0aWxzLnJlbW92ZUVsZW1lbnQodGhpcy5fYWN0aXZlRGlhbG9ncywgZGlhbG9nSGFzaCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcyA9IEFycmF5VXRpbHMucmVtb3ZlRWxlbWVudCh0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMsIGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgICAgICBpZighcHJvcGVydGllcy5tb2RhbCAmJiBzZWxlY3Rpb24gPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBpbmRleDogLTEgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmICghTnVtZXJpY1V0aWxzLmlzSW50ZWdlcihzZWxlY3Rpb24uaW5kZXgpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjbG9zZURpYWxvZygpIGV4cGVjdHMgaW5kZXggdG8gYmUgYW4gaW50ZWdlcmApOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2sgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihzZWxlY3Rpb24uaW5kZXggPj0gMCAmJiBzZWxlY3Rpb24udmFsdWUgPT09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi52YWx1ZSA9IHByb3BlcnRpZXMub3B0aW9ucyFbc2VsZWN0aW9uLmluZGV4XTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAoY2FsbGJhY2sgYXMgKChzZWxlY3Rpb246e2luZGV4Om51bWJlciwgdmFsdWU/OmFueX0pID0+IHZvaWQpKShzZWxlY3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGlhbG9nIHdpdGggYSBjYWxlbmRhciB0byBsZXQgdGhlIHVzZXIgcGljayBhIGRhdGUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVudCB2aXN1YWwgYW5kIHRleHR1YWwgb3B0aW9ucyB0aGF0IHRoaXMgZGlhbG9nIGFsbG93czpcclxuICAgICAqICAgICAgICAgICAgLSBpZDogVGhlIGh0bWwgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSBvbmNlIGNyZWF0ZWQuIElmIG5vdCBzcGVjaWZpZWQsIG5vIGlkIHdpbGwgYmUgZXhwbGljaXRseSBzZXRcclxuICAgICAqICAgICAgICAgICAgLSB3aWR0aDogU3BlY2lmeSB0aGUgY3NzIHZhbHVlIGZvciB0aGUgZGVmYXVsdCBkaWFsb2cgd2lkdGguIEFzIHRoZSBkaWFsb2cgaXMgcmVzcG9uc2l2ZSwgdGhlIHZhbHVlIHdpbGwgYmUgYXV0b21hdGljYWxseVxyXG4gICAgICogICAgICAgICAgICAgIHJlZHVjZWQgaWYgdGhlIGF2YWlsYWJsZSBzY3JlZW4gaXMgbm90IGVub3VnaCwgYW5kIHdpbGwgcmVhY2ggdGhlIGRlc2lyZWQgdmFsdWUgb3RoZXJ3aXNlLiBXZSBjYW4gc2V0IGFueSBjc3MgdW5pdCBsaWtlIHBpeGVscywgXHJcbiAgICAgKiAgICAgICAgICAgICAgJSwgdmgsIHZ3LCBvciBhbnkgb3RoZXIuIEZvciBleGFtcGxlOiAnNDAwcHgnLCAnNTAlJywgZXRjLlxyXG4gICAgICogICAgICAgICAgICAtIG1heFdpZHRoOiBEZWZpbmVzIHRoZSBtYXhpbXVtIHdpZHRoIHRoYXQgdGhlIGRpYWxvZyB3aWxsIGhhdmUgcmVnYXJkaW5nIHRoZSB2aWV3cG9ydC4gV2UgY2FuIHNwZWNpZnkgaXQgaW4gJSBvciB2dywganVzdCBsaWtlIGlzIGRvbmUgaW5cclxuICAgICAqICAgICAgICAgICAgICBjc3MuIEJ5IGRlZmF1bHQgaXQgaXMgZGVmaW5lZCBhcyA5NnZ3LCB3aGljaCB3aWxsIGZpdCA5NiUgb2YgdGhlIHZpZXdwb3J0IG9uIHNtYWxsIGRldmljZXNcclxuICAgICAqICAgICAgICAgICAgLSBoZWlnaHQ6IFRPRE8gZG9jc1xyXG4gICAgICogICAgICAgICAgICAtIG1heEhlaWdodDogVE9ETyBkb2NzXHJcbiAgICAgKiAgICAgICAgICAgIC0gbW9kYWw6IFRydWUgKGRlZmF1bHQpIGlmIHNlbGVjdGluZyBhbiBvcHRpb24gaXMgbWFuZGF0b3J5IHRvIGNsb3NlIHRoZSBkaWFsb2csIGZhbHNlIGlmIHRoZSBkaWFsb2cgY2FuIGJlIGNsb3NlZFxyXG4gICAgICogICAgICAgICAgICAgIGJ5IHRoZSB1c2VyIGNsaWNraW5nIG91dHNpZGUgaXQgXHJcbiAgICAgKiAgICAgICAgICAgIC0gdGl0bGU6IEFuIG9wdGlvbmFsIGRpYWxvZyB0aXRsZVxyXG4gICAgICogICAgICAgICAgICAtIHZpZXdDb250YWluZXJSZWY6IFRoaXMgaXMgaW1wb3J0YW50IHRvIHByb3BhZ2F0ZSBwcm92aWRlcnMgZnJvbSBhIHBhcmVudCBjb21wb25lbnQgdG8gdGhpcyBkaWFsb2cuIFdlIG11c3Qgc3BlY2lmeSBcclxuXHQgKiAgICAgICAgICAgICAgdGhpcyByZWZlcmVuY2UgdG8gbWFrZSBzdXJlIHRoZSBzYW1lIHNlcnZpY2VzIGluamVjdGVkIG9uIHRoZSBwYXJlbnQgYXJlIGF2YWlsYWJsZSB0b28gYXQgdGhlIGNoaWxkIGRpYWxvZyBcclxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZC4gSXQgd2lsbCByZWNlaXZlIGEgRGF0ZSgpIG9iamVjdCBzZWxlY3RlZCBieSB0aGUgdXNlciBvciBudWxsIGlmIG5vIHNlbGVjdGlvbiBoYXBwZW5lZFxyXG4gICAgICovXHJcbiAgICBhZGREYXRlU2VsZWN0aW9uRGlhbG9nKHByb3BlcnRpZXM6IHtpZD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbD86IGJvb2xlYW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRcdFx0XHR2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ICgoc2VsZWN0ZWREYXRlOiBudWxsIHwgRGF0ZSkgPT4gdm9pZCkpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5hZGREaWFsb2coRGlhbG9nRGF0ZVNlbGVjdGlvbkNvbXBvbmVudCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHByb3BlcnRpZXMuaWQgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHByb3BlcnRpZXMud2lkdGggPz8gXCI1MCVcIixcclxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBwcm9wZXJ0aWVzLm1heFdpZHRoID8/IFwiOTZ2d1wiLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBwcm9wZXJ0aWVzLmhlaWdodCA/PyBcIjUwJVwiLFxyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBwcm9wZXJ0aWVzLm1heEhlaWdodCA/PyBcIjkydndcIixcclxuICAgICAgICAgICAgICAgIG1vZGFsOiBwcm9wZXJ0aWVzLm1vZGFsID8/IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdGV4dHM6IFtwcm9wZXJ0aWVzLnRpdGxlID8/ICcnXSxcclxuICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHByb3BlcnRpZXMudmlld0NvbnRhaW5lclJlZlxyXG4gICAgICAgICAgICB9LChzZWxlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZWN0aW9uLmluZGV4ID09PSAtMSA/IG51bGwgOiAoc2VsZWN0aW9uLnZhbHVlIGFzIERhdGUpKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEZvcmNlIHRoZSByZW1vdmFsIG9mIGFsbCB0aGUgZGlhbG9ncyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZS5cclxuICAgICAqXHJcbiAgICAgKiBJZiBubyBkaWFsb2dzIGFyZSBjdXJyZW50bHkgdmlzaWJsZSwgdGhpcyBtZXRob2Qgd2lsbCBkbyBub3RoaW5nXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUFsbERpYWxvZ3MoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGRpYWxvZ1JlZiBvZiB0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMpIHtcclxuXHJcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSh7aW5kZXg6LTF9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9ncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRPRE8gLSB0cmFuc2xhdGUgZnJvbSBUUyB2ZXJzaW9uXHJcbiAgICAgKi9cclxuLy8gICAgYWRkU2lkZU5hdigpe1xyXG4vL1xyXG4vLyAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVE9ETyAtIHRyYW5zbGF0ZSBmcm9tIFRTIHZlcnNpb25cclxuICAgICAqL1xyXG4vLyAgICBnZXQgaXNTaG93aW5nU2lkZU5hdigpe1xyXG4vL1xyXG4vLyAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVE9ETyAtIHRyYW5zbGF0ZSBmcm9tIFRTIHZlcnNpb25cclxuICAgICAqL1xyXG4vLyAgICByZW1vdmVTaWRlTmF2KCl7XHJcbi8vXHJcbi8vICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJsb2NrIGFsbCB0aGUgdXNlciBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYXBwbGljYXRpb24gKGtleWJvYXJkLCB0b3VjaCwgbW91c2UsIC4uLilcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZGlzYWJsZVVzZXJJbnRlcmFjdGlvbigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAna2V5ZG93bicsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2Vkb3duJywgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAncG9pbnRlcmRvd24nLCAoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0b3JlIHRoZSB1c2VyIGludGVyYWN0aW9ucyB0aGF0IHdlcmUgcHJldmlvdXNseSBkaXNhYmxlZCB3aXRoIF9kaXNhYmxlVXNlckludGVyYWN0aW9uIG1ldGhvZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9lbmFibGVVc2VySW50ZXJhY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
8
|
*/
|
|
9
9
|
import { Injectable } from '@angular/core';
|
|
10
|
+
import { SingletoneStrictClass } from '../model/classes/SingletoneStrictClass';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
/**
|
|
12
13
|
* Captures all the application exceptions and performs any required action.
|
|
@@ -24,8 +25,9 @@ import * as i0 from "@angular/core";
|
|
|
24
25
|
* or implement your custom ones, you must extend this class and set your new one as the error
|
|
25
26
|
* handler provider.
|
|
26
27
|
*/
|
|
27
|
-
export class GlobalErrorService {
|
|
28
|
+
export class GlobalErrorService extends SingletoneStrictClass {
|
|
28
29
|
constructor() {
|
|
30
|
+
super(GlobalErrorService);
|
|
29
31
|
/**
|
|
30
32
|
* Enables or disables the error notification to user via an alert box
|
|
31
33
|
* Extend this class and override this value on your custom error handle to change it
|
|
@@ -60,9 +62,12 @@ export class GlobalErrorService {
|
|
|
60
62
|
throw error;
|
|
61
63
|
}
|
|
62
64
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
63
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService }); }
|
|
65
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService, providedIn: 'root' }); }
|
|
64
66
|
}
|
|
65
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService, decorators: [{
|
|
66
|
-
type: Injectable
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
type: Injectable,
|
|
69
|
+
args: [{
|
|
70
|
+
providedIn: 'root',
|
|
71
|
+
}]
|
|
72
|
+
}], ctorParameters: () => [] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsZXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vY29udHJvbGxlci9nbG9iYWxlcnJvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFHL0U7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBSUgsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHFCQUFxQjtJQXlCNUQ7UUFFQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQXhCeEI7OztXQUdHO1FBQ2MseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRzdDOzs7V0FHRztRQUNjLDRCQUF1QixHQUFHLElBQUksQ0FBQztRQUdoRDs7OztXQUlHO1FBQ2Msc0JBQWlCLEdBQUcsNEJBQTRCLENBQUM7SUFNckUsQ0FBQztJQUVFOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxLQUFVO1FBRWxCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBRTNCLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUksS0FBZ0IsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFFOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QjtRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7OEdBbERRLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBFcnJvckhhbmRsZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2luZ2xldG9uZVN0cmljdENsYXNzIH0gZnJvbSAnLi4vbW9kZWwvY2xhc3Nlcy9TaW5nbGV0b25lU3RyaWN0Q2xhc3MnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDYXB0dXJlcyBhbGwgdGhlIGFwcGxpY2F0aW9uIGV4Y2VwdGlvbnMgYW5kIHBlcmZvcm1zIGFueSByZXF1aXJlZCBhY3Rpb24uXHJcbiAqIEl0IGFsc28gY29udGFpbnMgbXVsdGlwbGUgZ2VuZXJhbCBlcnJvciBtYW5hZ2VtZW50IGZlYXR1cmVzLlxyXG4gKlxyXG4gKiBUbyBkZWZpbmUgdGhpcyBjbGFzcyBhcyB5b3VyIGFwcGxpY2F0aW9uIGVycm9yIGhhbmRsZXIsIHlvdSBtdXN0IGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXJcclxuICogbWFpbiBhcHAgbW9kdWxlIHByb3ZpZGVyczpcclxuICogICAgICB7XHJcbiAqICAgICAgICAgIHByb3ZpZGU6IEVycm9ySGFuZGxlcixcclxuICogICAgICAgICAgdXNlQ2xhc3M6IEdsb2JhbEVycm9yU2VydmljZVxyXG4gKiAgICAgIH0sXHJcbiAqICAgICAgR2xvYmFsRXJyb3JTZXJ2aWNlXHJcbiAqXHJcbiAqIFlvdSBjYW5ub3QgYWNjZXNzIHRoZSBlcnJvciBoYW5kbGVyIGF0IHJ1bnRpbWUuIElmIHlvdSBuZWVkIHRvIG1vZGlmeSBhbnkgb2YgdGhlIGJlaGF2aW91cnNcclxuICogb3IgaW1wbGVtZW50IHlvdXIgY3VzdG9tIG9uZXMsIHlvdSBtdXN0IGV4dGVuZCB0aGlzIGNsYXNzIGFuZCBzZXQgeW91ciBuZXcgb25lIGFzIHRoZSBlcnJvclxyXG4gKiBoYW5kbGVyIHByb3ZpZGVyLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdsb2JhbEVycm9yU2VydmljZSBleHRlbmRzIFNpbmdsZXRvbmVTdHJpY3RDbGFzcyBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZXJyb3Igbm90aWZpY2F0aW9uIHRvIHVzZXIgdmlhIGFuIGFsZXJ0IGJveFxyXG4gICAgICogRXh0ZW5kIHRoaXMgY2xhc3MgYW5kIG92ZXJyaWRlIHRoaXMgdmFsdWUgb24geW91ciBjdXN0b20gZXJyb3IgaGFuZGxlIHRvIGNoYW5nZSBpdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNob3dFeGNlcHRpb25zVG9Vc2VyID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlcnJvciBub3RpZmljYXRpb24gdG8gdXNlciB2aWEgYW4gYWxlcnQgYm94XHJcbiAgICAgKiBFeHRlbmQgdGhpcyBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhpcyB2YWx1ZSBvbiB5b3VyIGN1c3RvbSBlcnJvciBoYW5kbGUgdG8gY2hhbmdlIGl0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2hvd0V4Y2VwdGlvbnNPbkNvbnNvbGUgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhlIHRleHQgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBhbGVydCB0aGF0IGlzIHNob3duIHRvIHRoZSB1c2VyIHdoZW4gYW4gZXhjZXB0aW9uIGhhcHBlbnNcclxuICAgICAqIGFuZCBzaG93RXhjZXB0aW9uc1RvVXNlciBpcyB0cnVlXHJcbiAgICAgKiBFeHRlbmQgdGhpcyBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhpcyB2YWx1ZSBvbiB5b3VyIGN1c3RvbSBlcnJvciBoYW5kbGUgdG8gY2hhbmdlIGl0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JBbGVydE1lc3NhZ2UgPSAnQXBwbGljYXRpb24gZXhjZXB0aW9uOlxcblxcbic7XHJcblxyXG5cclxuXHRjb25zdHJ1Y3Rvcigpe1xyXG5cdFx0XHJcblx0XHRzdXBlcihHbG9iYWxFcnJvclNlcnZpY2UpO1xyXG5cdH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYW4gYWxlcnQgd2l0aCB0aGUgcmVjZWl2ZWQgZXJyb3IgZGV0YWlsIGFuZCBhbHNvIGxvZyBpdCB0byB0aGUganMgY29uc29sZS5cclxuICAgICAqXHJcbiAgICAgKiBBbmd1bGFyIGV4cGVjdHMgYXQgbGVhc3QgdGhpcyBtZXRob2QgdG8gYmUgaW1wbGVtZW50ZWQgb24gYW55IGNsYXNzIHRoYXQgaXMgdXNlZCBhcyBhIGdsb2JhbCBleGNlcHRpb24gaGFuZGxlci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXJyb3IgQW4gZXJyb3IgaW5zdGFuY2VcclxuICAgICAqL1xyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93RXhjZXB0aW9uc1RvVXNlcikge1xyXG5cclxuICAgICAgICAgICAgYWxlcnQodGhpcy5lcnJvckFsZXJ0TWVzc2FnZSArIChlcnJvciBhcyBzdHJpbmcpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNob3dFeGNlcHRpb25zT25Db25zb2xlKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -15,16 +15,6 @@ import * as i1 from "./dialog.service";
|
|
|
15
15
|
* Manages application http communications
|
|
16
16
|
*/
|
|
17
17
|
export class HTTPService extends HTTPManager {
|
|
18
|
-
/**
|
|
19
|
-
* execute() method option that tells the service to avoid blocking the user interface with a modal busy state while the requests that are
|
|
20
|
-
* launched by the execute method are running.
|
|
21
|
-
*/
|
|
22
|
-
static { this.NO_MODAL_BUSY_STATE = 'NO_MODAL_BUSY_STATE'; }
|
|
23
|
-
/**
|
|
24
|
-
* execute() method option that tells the service to skip showing an error dialog when a request fails. We normally use this to handle the
|
|
25
|
-
* errors by ourselves or if we want to hide the error dialog for a specific request.
|
|
26
|
-
*/
|
|
27
|
-
static { this.DISABLE_ERROR_HANDLING = 'DISABLE_ERROR_HANDLING'; }
|
|
28
18
|
constructor(dialogService) {
|
|
29
19
|
super(true);
|
|
30
20
|
this.dialogService = dialogService;
|
|
@@ -32,20 +22,24 @@ export class HTTPService extends HTTPManager {
|
|
|
32
22
|
/**
|
|
33
23
|
* The same method as HTTPManager.execute but with the ability to enable several options which are specific to this service:
|
|
34
24
|
*
|
|
35
|
-
* -
|
|
36
|
-
*
|
|
25
|
+
* - options:
|
|
26
|
+
* busyState: Set it to false to prevent the default behaviour of locking the UI while the request is running
|
|
27
|
+
* handleErrors: Set it to false to prevent the default behaviour of showing a detailed error dialog when a request fails
|
|
37
28
|
*
|
|
38
29
|
* @see HTTPManager.execute()
|
|
39
30
|
*/
|
|
40
|
-
execute(requests, finishedCallback = null, progressCallback = null, options =
|
|
41
|
-
|
|
31
|
+
execute(requests, finishedCallback = null, progressCallback = null, options = {}) {
|
|
32
|
+
// Set the default values for non specified properties
|
|
33
|
+
options.busyState = options.busyState ?? true;
|
|
34
|
+
options.handleErrors = options.handleErrors ?? true;
|
|
35
|
+
if (options.busyState) {
|
|
42
36
|
this.dialogService.addModalBusyState();
|
|
43
37
|
}
|
|
44
38
|
super.execute(requests, (results, anyError) => {
|
|
45
|
-
if (options.
|
|
39
|
+
if (options.busyState) {
|
|
46
40
|
this.dialogService.removeModalBusyState();
|
|
47
41
|
}
|
|
48
|
-
if (
|
|
42
|
+
if (options.handleErrors && anyError) {
|
|
49
43
|
for (let result of results) {
|
|
50
44
|
if (result.isError) {
|
|
51
45
|
let errorMsg = result.errorMsg + '\n\n' + result.response;
|
|
@@ -66,9 +60,12 @@ export class HTTPService extends HTTPManager {
|
|
|
66
60
|
}, progressCallback);
|
|
67
61
|
}
|
|
68
62
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
69
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService }); }
|
|
63
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService, providedIn: 'root' }); }
|
|
70
64
|
}
|
|
71
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService, decorators: [{
|
|
72
|
-
type: Injectable
|
|
66
|
+
type: Injectable,
|
|
67
|
+
args: [{
|
|
68
|
+
providedIn: 'root',
|
|
69
|
+
}]
|
|
73
70
|
}], ctorParameters: () => [{ type: i1.DialogService }] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUEwQixXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7O0FBRzlGOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBR3hDLFlBQW1CLGFBQTRCO1FBRTNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUZHLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBRy9DLENBQUM7SUFHRDs7Ozs7Ozs7T0FRRztJQUNILE9BQU8sQ0FBQyxRQUF5RSxFQUN6RSxtQkFBOEksSUFBSSxFQUNsSixtQkFBbUYsSUFBSSxFQUN2RixVQUF1RCxFQUFFO1FBRTdELHNEQUFzRDtRQUN0RCxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7UUFFcEQsSUFBRyxPQUFPLENBQUMsU0FBUyxFQUFDO1lBRWxCLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN6QztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBRTFDLElBQUcsT0FBTyxDQUFDLFNBQVMsRUFBQztnQkFFakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzdDO1lBRUQsSUFBRyxPQUFPLENBQUMsWUFBWSxJQUFJLFFBQVEsRUFBQztnQkFFaEMsS0FBSSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUM7b0JBRXRCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQzt3QkFFZCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUUxRCxJQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUM7NEJBRTdCLFFBQVEsR0FBRywyREFBMkQsQ0FBQzt5QkFDMUU7d0JBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQzdDOzRCQUNJLEtBQUssRUFBQyxNQUFNOzRCQUNaLEtBQUssRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQzs0QkFDMUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO3lCQUNsQixDQUFDLENBQUM7cUJBQ1Y7aUJBQ0o7YUFDSjtZQUVELElBQUcsZ0JBQWdCLEtBQUssSUFBSSxFQUFDO2dCQUV6QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkM7UUFFSixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQXBFUSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSFRUUE1hbmFnZXIsIEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3QsIFN0cmluZ1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dFcnJvckNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctZXJyb3IvZGlhbG9nLWVycm9yLmNvbXBvbmVudCc7XHJcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgYXBwbGljYXRpb24gaHR0cCBjb21tdW5pY2F0aW9uc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhUVFBTZXJ2aWNlIGV4dGVuZHMgSFRUUE1hbmFnZXIge1xyXG4gICAgXHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XHJcblxyXG4gICAgICAgIHN1cGVyKHRydWUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNhbWUgbWV0aG9kIGFzIEhUVFBNYW5hZ2VyLmV4ZWN1dGUgYnV0IHdpdGggdGhlIGFiaWxpdHkgdG8gZW5hYmxlIHNldmVyYWwgb3B0aW9ucyB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhpcyBzZXJ2aWNlOlxyXG4gICAgICpcclxuICAgICAqIC0gb3B0aW9uczpcclxuICAgICAqICAgICBidXN5U3RhdGU6IFNldCBpdCB0byBmYWxzZSB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiBsb2NraW5nIHRoZSBVSSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBydW5uaW5nXHJcbiAgICAgKiAgICAgaGFuZGxlRXJyb3JzOiBTZXQgaXQgdG8gZmFsc2UgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgb2Ygc2hvd2luZyBhIGRldGFpbGVkIGVycm9yIGRpYWxvZyB3aGVuIGEgcmVxdWVzdCBmYWlsc1xyXG4gICAgICpcclxuICAgICAqIEBzZWUgSFRUUE1hbmFnZXIuZXhlY3V0ZSgpXHJcbiAgICAgKi9cclxuICAgIGV4ZWN1dGUocmVxdWVzdHM6IHN0cmluZ3xzdHJpbmdbXXxIVFRQTWFuYWdlckJhc2VSZXF1ZXN0fEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3RbXSxcclxuICAgICAgICAgICAgZmluaXNoZWRDYWxsYmFjazogKChyZXN1bHRzOiB7dXJsOnN0cmluZywgcmVzcG9uc2U6YW55LCBpc0Vycm9yOmJvb2xlYW4sIGVycm9yTXNnOnN0cmluZywgY29kZTpudW1iZXJ9W10sIGFueUVycm9yOmJvb2xlYW4pID0+IHZvaWQpIHwgbnVsbCA9IG51bGwsXHJcbiAgICAgICAgICAgIHByb2dyZXNzQ2FsbGJhY2s6IG51bGwgfCAoKGNvbXBsZXRlZFVybDogc3RyaW5nLCB0b3RhbFJlcXVlc3RzOiBudW1iZXIpID0+IHZvaWQpID0gbnVsbCxcclxuICAgICAgICAgICAgb3B0aW9uczoge2J1c3lTdGF0ZT86Ym9vbGVhbiwgaGFuZGxlRXJyb3JzPzpib29sZWFufSA9IHt9KXtcclxuICAgIFxyXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIG5vbiBzcGVjaWZpZWQgcHJvcGVydGllc1xyXG4gICAgICAgIG9wdGlvbnMuYnVzeVN0YXRlID0gb3B0aW9ucy5idXN5U3RhdGUgPz8gdHJ1ZTtcclxuICAgICAgICBvcHRpb25zLmhhbmRsZUVycm9ycyA9IG9wdGlvbnMuaGFuZGxlRXJyb3JzID8/IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYob3B0aW9ucy5idXN5U3RhdGUpe1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGRNb2RhbEJ1c3lTdGF0ZSgpOyBcclxuICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICBzdXBlci5leGVjdXRlKHJlcXVlc3RzLCAocmVzdWx0cywgYW55RXJyb3IpID0+IHsgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihvcHRpb25zLmJ1c3lTdGF0ZSl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihvcHRpb25zLmhhbmRsZUVycm9ycyAmJiBhbnlFcnJvcil7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgcmVzdWx0IG9mIHJlc3VsdHMpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdC5pc0Vycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvck1zZyA9IHJlc3VsdC5lcnJvck1zZyArICdcXG5cXG4nICsgcmVzdWx0LnJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoU3RyaW5nVXRpbHMuaXNFbXB0eShlcnJvck1zZykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTXNnID0gJ1Vua25vd24gZXJyb3IuIE1ha2Ugc3VyZSBJbnRlcm5ldCBjb25uZWN0aW9uIGlzIGF2YWlsYWJsZSc7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZERpYWxvZyhEaWFsb2dFcnJvckNvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDonNTB2dycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IFsnRXJyb3I6ICcgKyByZXN1bHQuY29kZSwgZXJyb3JNc2ddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsnT2snXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKGZpbmlzaGVkQ2FsbGJhY2sgIT09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHJlc3VsdHMsIGFueUVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgfSwgcHJvZ3Jlc3NDYWxsYmFjayk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -14,9 +14,12 @@ import * as i0 from "@angular/core";
|
|
|
14
14
|
*/
|
|
15
15
|
export class LocalizationService extends LocalizationManager {
|
|
16
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService }); }
|
|
17
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
|
|
18
18
|
}
|
|
19
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService, decorators: [{
|
|
20
|
-
type: Injectable
|
|
20
|
+
type: Injectable,
|
|
21
|
+
args: [{
|
|
22
|
+
providedIn: 'root',
|
|
23
|
+
}]
|
|
21
24
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3REOztHQUVHO0FBSUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFtQjs4R0FBL0MsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uTWFuYWdlciB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgYXBwbGljYXRpb24gdGV4dCB0cmFuc2xhdGlvbnMgYW5kIGxhbmd1YWdlc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblNlcnZpY2UgZXh0ZW5kcyBMb2NhbGl6YXRpb25NYW5hZ2VyIHtcclxuXHJcbn1cclxuIl19
|
|
@@ -8,14 +8,16 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { Injectable } from '@angular/core';
|
|
10
10
|
import { Subject } from 'rxjs';
|
|
11
|
+
import { SingletoneStrictClass } from '../model/classes/SingletoneStrictClass';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
/**
|
|
13
14
|
* This is the main application event bus.
|
|
14
15
|
* All global events that happen on the application are broadcasted by this service, and
|
|
15
16
|
* can be listened by any application element who previously subscribed
|
|
16
17
|
*/
|
|
17
|
-
export class NotificationService {
|
|
18
|
+
export class NotificationService extends SingletoneStrictClass {
|
|
18
19
|
constructor() {
|
|
20
|
+
super(NotificationService);
|
|
19
21
|
/**
|
|
20
22
|
* The Observable instance that handles subscriptions and notifications
|
|
21
23
|
*/
|
|
@@ -48,9 +50,12 @@ export class NotificationService {
|
|
|
48
50
|
return subscription.unsubscribe();
|
|
49
51
|
}
|
|
50
52
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
51
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService }); }
|
|
53
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
|
|
52
54
|
}
|
|
53
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService, decorators: [{
|
|
54
|
-
type: Injectable
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
type: Injectable,
|
|
57
|
+
args: [{
|
|
58
|
+
providedIn: 'root',
|
|
59
|
+
}]
|
|
60
|
+
}], ctorParameters: () => [] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBRy9FOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEscUJBQXFCO0lBUzdEO1FBRUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFSekI7O1dBRUc7UUFDYyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0lBTXBFLENBQUM7SUFHRTs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsbUJBQTJEO1FBRWpFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxZQUE2QjtRQUU5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxZQUEwQjtRQUVsQyxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzhHQS9DUSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR1VJTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vbW9kZWwvY2xhc3Nlcy9HVUlOb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBTaW5nbGV0b25lU3RyaWN0Q2xhc3MgfSBmcm9tICcuLi9tb2RlbC9jbGFzc2VzL1NpbmdsZXRvbmVTdHJpY3RDbGFzcyc7XG5cclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIHRoZSBtYWluIGFwcGxpY2F0aW9uIGV2ZW50IGJ1cy5cclxuICogQWxsIGdsb2JhbCBldmVudHMgdGhhdCBoYXBwZW4gb24gdGhlIGFwcGxpY2F0aW9uIGFyZSBicm9hZGNhc3RlZCBieSB0aGlzIHNlcnZpY2UsIGFuZFxyXG4gKiBjYW4gYmUgbGlzdGVuZWQgYnkgYW55IGFwcGxpY2F0aW9uIGVsZW1lbnQgd2hvIHByZXZpb3VzbHkgc3Vic2NyaWJlZFxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2UgZXh0ZW5kcyBTaW5nbGV0b25lU3RyaWN0Q2xhc3Mge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBPYnNlcnZhYmxlIGluc3RhbmNlIHRoYXQgaGFuZGxlcyBzdWJzY3JpcHRpb25zIGFuZCBub3RpZmljYXRpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvbnMgPSBuZXcgU3ViamVjdDxHVUlOb3RpZmljYXRpb24+KCk7XHJcblxyXG5cclxuXHRjb25zdHJ1Y3Rvcigpe1xyXG5cdFx0XHJcblx0XHRzdXBlcihOb3RpZmljYXRpb25TZXJ2aWNlKTtcclxuXHR9XHJcblx0XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1c2VkIGJ5IG90aGVyIHNlcnZpY2VzIG9yIGNvbXBvbmVudHMgdG8gc3Vic2NyaWJlIHRvIGFsbCBub3RpZmljYXRpb25zIHRoYXQgYXJlIGdlbmVyYXRlZCBieSB0aGlzIHNlcnZpY2VcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uSGFuZGxlciBBIG1ldGhvZCB0aGF0IHdpbGwgYmUgdXNlZCB0byByZWNlaXZlIGVhY2ggbm90aWZpY2F0aW9uIGFzIGEgR1VJTm90aWZpY2F0aW9uIGluc3RhbmNlXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBzdWJzY3JpcHRpb24gb2JqZWN0LiBNYWtlIHN1cmUgdG8gdW5zdWJzY3JpYmUgd2hlbiBub3QgcmVxdWlyZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBzdWJzY3JpYmUobm90aWZpY2F0aW9uSGFuZGxlcjogKG5vdGlmaWNhdGlvbjogR1VJTm90aWZpY2F0aW9uKSA9PiBhbnkpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbnMuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbkhhbmRsZXIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIExhdW5jaCBhIG5vdGlmaWNhdGlvbiB0byBhbnlvbmUgd2hvIG1heSBiZSBsaXN0ZW5pbmdcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uIEEgbm90aWZpY2F0aW9uIGluc3RhbmNlIHRvIGxhdW5jaFxyXG4gICAgICovXHJcbiAgICBzZW5kKG5vdGlmaWNhdGlvbjogR1VJTm90aWZpY2F0aW9uKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMubmV4dChub3RpZmljYXRpb24pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuZCBhIHByZXZpb3VzbHkgaW5pdGlhdGVkIHN1YnNjcmlwdGlvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzdWJzY3JpcHRpb24gQSBwcmV2aW91c2x5IGNyZWF0ZWQgc3Vic2NyaXB0aW9uIGluc3RhbmNlIGZyb20gd2hpY2ggd2Ugd2FudCB0byB1bnN1YnNjcmliZVxyXG4gICAgICovXHJcbiAgICB1bnN1YnNjcmliZShzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbikge1xyXG5cclxuICAgICAgICByZXR1cm4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|