ionic-logging-viewer 15.0.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/{esm2020 → esm2022}/lib/logging-viewer/logging-viewer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/logging-viewer-filter.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/logging-viewer-levels/logging-viewer-levels.component.mjs +4 -4
- package/esm2022/lib/logging-viewer-modal/logging-viewer-modal.component.mjs +141 -0
- package/{esm2020 → esm2022}/lib/logging-viewer-search/logging-viewer-search.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/logging-viewer.module.mjs +17 -17
- package/{fesm2020 → fesm2022}/ionic-logging-viewer.mjs +33 -33
- package/{fesm2020 → fesm2022}/ionic-logging-viewer.mjs.map +1 -1
- package/lib/logging-viewer/logging-viewer.component.d.ts +1 -1
- package/lib/logging-viewer-levels/logging-viewer-levels.component.d.ts +1 -1
- package/lib/logging-viewer-modal/logging-viewer-modal.component.d.ts +1 -1
- package/lib/logging-viewer-search/logging-viewer-search.component.d.ts +1 -1
- package/package.json +9 -15
- package/esm2020/lib/logging-viewer-modal/logging-viewer-modal.component.mjs +0 -141
- package/fesm2015/ionic-logging-viewer.mjs +0 -498
- package/fesm2015/ionic-logging-viewer.mjs.map +0 -1
- /package/{esm2020 → esm2022}/ionic-logging-viewer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/logging-viewer-modal/logging-viewer-modal-properties.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/logging-viewer-translation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from "@angular/core";
|
|
2
|
-
import { ModalController, Platform, AlertController } from "@ionic/angular";
|
|
3
|
-
import { LoggingService } from "ionic-logging-service";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@ionic/angular";
|
|
6
|
-
import * as i2 from "ionic-logging-service";
|
|
7
|
-
import * as i3 from "@angular/common";
|
|
8
|
-
import * as i4 from "../logging-viewer/logging-viewer.component";
|
|
9
|
-
import * as i5 from "../logging-viewer-search/logging-viewer-search.component";
|
|
10
|
-
import * as i6 from "../logging-viewer-levels/logging-viewer-levels.component";
|
|
11
|
-
/**
|
|
12
|
-
* Ionic modal containing [LoggingViewerComponent](LoggingViewerComponent.html),
|
|
13
|
-
* [LoggingViewerLevelsComponent](LoggingViewerLevelsComponent.html) and
|
|
14
|
-
* [LoggingViewerSearchComponent](LoggingViewerSearchComponent.html).
|
|
15
|
-
*/
|
|
16
|
-
export class LoggingViewerModalComponent {
|
|
17
|
-
/**
|
|
18
|
-
* Creates a new instance of the component.
|
|
19
|
-
*/
|
|
20
|
-
constructor(platform, alertController, modalController, loggingService) {
|
|
21
|
-
this.alertController = alertController;
|
|
22
|
-
this.modalController = modalController;
|
|
23
|
-
this.loggingService = loggingService;
|
|
24
|
-
this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Modal.Component");
|
|
25
|
-
const methodName = "ctor";
|
|
26
|
-
this.logger.entry(methodName);
|
|
27
|
-
this.isAndroid = platform.is("android");
|
|
28
|
-
this.logger.exit(methodName);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Initializes the LoggingViewerModalComponent.
|
|
32
|
-
* It configures the supported translations.
|
|
33
|
-
*/
|
|
34
|
-
ngOnInit() {
|
|
35
|
-
// prepare translations
|
|
36
|
-
this.translations = {};
|
|
37
|
-
this.translations[LoggingViewerModalComponent.languageEn] = {
|
|
38
|
-
cancel: "Cancel",
|
|
39
|
-
confirmDelete: "Delete all log messages?",
|
|
40
|
-
ok: "Ok",
|
|
41
|
-
searchPlaceholder: "Search",
|
|
42
|
-
title: "Logging",
|
|
43
|
-
};
|
|
44
|
-
this.translations[LoggingViewerModalComponent.languageDe] = {
|
|
45
|
-
cancel: "Abbrechen",
|
|
46
|
-
confirmDelete: "Alle Logs löschen?",
|
|
47
|
-
ok: "Ok",
|
|
48
|
-
searchPlaceholder: "Suchen",
|
|
49
|
-
title: "Logging",
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Eventhandler called by Ionic when the modal is opened.
|
|
54
|
-
*/
|
|
55
|
-
ionViewDidEnter() {
|
|
56
|
-
const methodName = "ionViewDidEnter";
|
|
57
|
-
this.logger.entry(methodName);
|
|
58
|
-
this.logger.exit(methodName);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Eventhandler called when the cancel button is clicked.
|
|
62
|
-
*/
|
|
63
|
-
async onClose() {
|
|
64
|
-
const methodName = "onClose";
|
|
65
|
-
this.logger.entry(methodName);
|
|
66
|
-
await this.modalController.dismiss();
|
|
67
|
-
this.logger.exit(methodName);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Eventhandler called when the clear button is clicked.
|
|
71
|
-
*/
|
|
72
|
-
async onClearLogs() {
|
|
73
|
-
const methodName = "onClearLogs";
|
|
74
|
-
this.logger.entry(methodName);
|
|
75
|
-
const alert = await this.alertController.create({
|
|
76
|
-
header: this.getTranslation().confirmDelete,
|
|
77
|
-
buttons: [
|
|
78
|
-
{
|
|
79
|
-
text: this.getTranslation().cancel,
|
|
80
|
-
role: "cancel",
|
|
81
|
-
cssClass: "secondary"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
text: this.getTranslation().ok,
|
|
85
|
-
handler: () => {
|
|
86
|
-
this.clearLogs();
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
]
|
|
90
|
-
});
|
|
91
|
-
await alert.present();
|
|
92
|
-
this.logger.exit(methodName);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Clear logs.
|
|
96
|
-
*/
|
|
97
|
-
clearLogs() {
|
|
98
|
-
if (this.localStorageKeys) {
|
|
99
|
-
for (const localStorageKey of this.localStorageKeys.split(",")) {
|
|
100
|
-
this.loggingService.removeLogMessagesFromLocalStorage(localStorageKey);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this.loggingService.removeLogMessages();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Helper method returning the current translation:
|
|
109
|
-
* - the property translation if defined
|
|
110
|
-
* - the translation according property language if valid
|
|
111
|
-
* - English translation, otherwise
|
|
112
|
-
*/
|
|
113
|
-
getTranslation() {
|
|
114
|
-
if (typeof this.translation !== "undefined") {
|
|
115
|
-
return this.translation;
|
|
116
|
-
}
|
|
117
|
-
else if (typeof this.language !== "undefined" && typeof this.translations[this.language] === "object") {
|
|
118
|
-
return this.translations[this.language];
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
return this.translations[LoggingViewerModalComponent.languageEn];
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
LoggingViewerModalComponent.languageEn = "en";
|
|
126
|
-
LoggingViewerModalComponent.languageDe = "de";
|
|
127
|
-
LoggingViewerModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerModalComponent, deps: [{ token: i1.Platform }, { token: i1.AlertController }, { token: i1.ModalController }, { token: i2.LoggingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
-
LoggingViewerModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: LoggingViewerModalComponent, selector: "ionic-logging-viewer-modal", inputs: { language: "language", translation: "translation", localStorageKeys: "localStorageKeys", allowClearLogs: "allowClearLogs" }, ngImport: i0, template: "<ion-header>\n\t<ion-toolbar color=primary>\n\t\t<ion-title>{{ getTranslation().title }}</ion-title>\n\t\t<ion-buttons slot=\"start\">\n\t\t\t<ion-button *ngIf=\"!isAndroid\" (click)=\"onClose()\">\n\t\t\t\t{{ getTranslation().cancel }}\n\t\t\t</ion-button>\n\t\t\t<ion-button *ngIf=\"isAndroid\" icon-only (click)=\"onClose()\">\n\t\t\t\t<ion-icon name=\"md-close\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-search [placeholder]=\"getTranslation().searchPlaceholder\"></ionic-logging-viewer-search>\n\t\t<ion-buttons slot=\"end\" *ngIf=\"allowClearLogs !== false\" class=\"clearLogs\">\n\t\t\t<ion-button (click)=\"onClearLogs()\">\n\t\t\t\t<ion-icon name=\"trash-outline\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-levels></ionic-logging-viewer-levels>\n\t</ion-toolbar>\n</ion-header>\n<ion-content>\n\t<ionic-logging-viewer [localStorageKeys]=\"localStorageKeys\"></ionic-logging-viewer>\n</ion-content>", styles: ["ionic-logging-viewer-levels{width:100%;padding-left:12px;padding-right:12px}.clearLogs{padding-top:3px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.LoggingViewerComponent, selector: "ionic-logging-viewer", inputs: ["localStorageKeys"] }, { kind: "component", type: i5.LoggingViewerSearchComponent, selector: "ionic-logging-viewer-search", inputs: ["placeholder"] }, { kind: "component", type: i6.LoggingViewerLevelsComponent, selector: "ionic-logging-viewer-levels" }] });
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerModalComponent, decorators: [{
|
|
130
|
-
type: Component,
|
|
131
|
-
args: [{ selector: "ionic-logging-viewer-modal", template: "<ion-header>\n\t<ion-toolbar color=primary>\n\t\t<ion-title>{{ getTranslation().title }}</ion-title>\n\t\t<ion-buttons slot=\"start\">\n\t\t\t<ion-button *ngIf=\"!isAndroid\" (click)=\"onClose()\">\n\t\t\t\t{{ getTranslation().cancel }}\n\t\t\t</ion-button>\n\t\t\t<ion-button *ngIf=\"isAndroid\" icon-only (click)=\"onClose()\">\n\t\t\t\t<ion-icon name=\"md-close\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-search [placeholder]=\"getTranslation().searchPlaceholder\"></ionic-logging-viewer-search>\n\t\t<ion-buttons slot=\"end\" *ngIf=\"allowClearLogs !== false\" class=\"clearLogs\">\n\t\t\t<ion-button (click)=\"onClearLogs()\">\n\t\t\t\t<ion-icon name=\"trash-outline\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-levels></ionic-logging-viewer-levels>\n\t</ion-toolbar>\n</ion-header>\n<ion-content>\n\t<ionic-logging-viewer [localStorageKeys]=\"localStorageKeys\"></ionic-logging-viewer>\n</ion-content>", styles: ["ionic-logging-viewer-levels{width:100%;padding-left:12px;padding-right:12px}.clearLogs{padding-top:3px}\n"] }]
|
|
132
|
-
}], ctorParameters: function () { return [{ type: i1.Platform }, { type: i1.AlertController }, { type: i1.ModalController }, { type: i2.LoggingService }]; }, propDecorators: { language: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], translation: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], localStorageKeys: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], allowClearLogs: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}] } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uaWMtbG9nZ2luZy12aWV3ZXIvc3JjL2xpYi9sb2dnaW5nLXZpZXdlci1tb2RhbC9sb2dnaW5nLXZpZXdlci1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb25pYy1sb2dnaW5nLXZpZXdlci9zcmMvbGliL2xvZ2dpbmctdmlld2VyLW1vZGFsL2xvZ2dpbmctdmlld2VyLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBVSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFJL0Q7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTywyQkFBMkI7SUF3Q3ZDOztPQUVHO0lBQ0gsWUFDQyxRQUFrQixFQUNWLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLGNBQThCO1FBRjlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLE1B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QUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLElBQUksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDeEcsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0YsQ0FBQzs7QUE1SmMsc0NBQVUsR0FBRyxJQUFLLENBQUE7QUFDbEIsc0NBQVUsR0FBRyxJQUFLLENBQUE7d0hBSHJCLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHdNQ2xCeEMsK2hDQTBCYzsyRkRSRCwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0MsNEJBQTRCO3dMQWMvQixRQUFRO3NCQURkLEtBQUs7Z0JBUUMsV0FBVztzQkFEakIsS0FBSztnQkFPQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgUGxhdGZvcm0sIEFsZXJ0Q29udHJvbGxlciB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xuXG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmdTZXJ2aWNlIH0gZnJvbSBcImlvbmljLWxvZ2dpbmctc2VydmljZVwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nVmlld2VyVHJhbnNsYXRpb24gfSBmcm9tIFwiLi4vbG9nZ2luZy12aWV3ZXItdHJhbnNsYXRpb24ubW9kZWxcIjtcblxuLyoqXG4gKiBJb25pYyBtb2RhbCBjb250YWluaW5nIFtMb2dnaW5nVmlld2VyQ29tcG9uZW50XShMb2dnaW5nVmlld2VyQ29tcG9uZW50Lmh0bWwpLFxuICogW0xvZ2dpbmdWaWV3ZXJMZXZlbHNDb21wb25lbnRdKExvZ2dpbmdWaWV3ZXJMZXZlbHNDb21wb25lbnQuaHRtbCkgYW5kXG4gKiBbTG9nZ2luZ1ZpZXdlclNlYXJjaENvbXBvbmVudF0oTG9nZ2luZ1ZpZXdlclNlYXJjaENvbXBvbmVudC5odG1sKS5cbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImlvbmljLWxvZ2dpbmctdmlld2VyLW1vZGFsXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vbG9nZ2luZy12aWV3ZXItbW9kYWwuY29tcG9uZW50Lmh0bWxcIixcblx0c3R5bGVVcmxzOiBbXCIuL2xvZ2dpbmctdmlld2VyLW1vZGFsLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdWaWV3ZXJNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblx0cHJpdmF0ZSBzdGF0aWMgbGFuZ3VhZ2VFbiA9IFwiZW5cIjtcblx0cHJpdmF0ZSBzdGF0aWMgbGFuZ3VhZ2VEZSA9IFwiZGVcIjtcblxuXHQvKipcblx0ICogTGFuZ3VhZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIG1vZGFsLlxuXHQgKiBDdXJyZW50bHkgc3VwcG9ydGVkOiBlbiwgZGVcblx0ICovXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBsYW5ndWFnZTogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUcmFuc2xhdGlvbiB0byBiZSB1c2VkIGZvciB0aGUgbW9kYWwuXG5cdCAqIElmIHNwZWNpZmllZCwgdGhlIGxhbmd1YWdlIGlzIGlnbm9yZWQuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRwdWJsaWMgdHJhbnNsYXRpb246IExvZ2dpbmdWaWV3ZXJUcmFuc2xhdGlvbjtcblxuXHQvKipcblx0ICogQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbG9jYWxTdG9yYWdlS2V5cy4gSWYgc2V0LCB0aGUgbG9ncyBnZXQgbG9hZGVkIGZyb20gbG9jYWxTdG9yYWdlIGluc3RlYWQgb2YgbWVtb3J5LlxuXHQgKi9cblx0QElucHV0KClcblx0cHVibGljIGxvY2FsU3RvcmFnZUtleXM6IHN0cmluZztcblxuXHQvKipcblx0ICogRmxhZyBzaG93aW5nIGEgZGVsZXRlIGJ1dHRvbiwgd2hpY2ggcmVtb3ZlcyBhbGwgZXhpc3RpbmcgbG9nIG1lc3NhZ2VzLlxuXHQgKi9cblx0QElucHV0KClcblx0cHVibGljIGFsbG93Q2xlYXJMb2dzOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBGbGFnIGNvbnRyb2xsaW5nIHdoaWNoIGNsb3NlIGJ1dHRvbiB3aWxsIGJlIHNob3duLlxuXHQgKi9cblx0cHVibGljIGlzQW5kcm9pZDogYm9vbGVhbjtcblxuXHRwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuXG5cdHByaXZhdGUgdHJhbnNsYXRpb25zOiB7IFtsYW5ndWFnZTogc3RyaW5nXTogTG9nZ2luZ1ZpZXdlclRyYW5zbGF0aW9uIH07XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHBsYXRmb3JtOiBQbGF0Zm9ybSxcblx0XHRwcml2YXRlIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuXHRcdHByaXZhdGUgbW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIsXG5cdFx0cHJpdmF0ZSBsb2dnaW5nU2VydmljZTogTG9nZ2luZ1NlcnZpY2UpIHtcblxuXHRcdHRoaXMubG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2UuZ2V0TG9nZ2VyKFwiSW9uaWMuTG9nZ2luZy5WaWV3ZXIuTW9kYWwuQ29tcG9uZW50XCIpO1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcImN0b3JcIjtcblx0XHR0aGlzLmxvZ2dlci5lbnRyeShtZXRob2ROYW1lKTtcblxuXHRcdHRoaXMuaXNBbmRyb2lkID0gcGxhdGZvcm0uaXMoXCJhbmRyb2lkXCIpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgTG9nZ2luZ1ZpZXdlck1vZGFsQ29tcG9uZW50LlxuXHQgKiBJdCBjb25maWd1cmVzIHRoZSBzdXBwb3J0ZWQgdHJhbnNsYXRpb25zLlxuXHQgKi9cblx0cHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIHByZXBhcmUgdHJhbnNsYXRpb25zXG5cdFx0dGhpcy50cmFuc2xhdGlvbnMgPSB7fTtcblx0XHR0aGlzLnRyYW5zbGF0aW9uc1tMb2dnaW5nVmlld2VyTW9kYWxDb21wb25lbnQubGFuZ3VhZ2VFbl0gPSB7XG5cdFx0XHRjYW5jZWw6IFwiQ2FuY2VsXCIsXG5cdFx0XHRjb25maXJtRGVsZXRlOiBcIkRlbGV0ZSBhbGwgbG9nIG1lc3NhZ2VzP1wiLFxuXHRcdFx0b2s6IFwiT2tcIixcblx0XHRcdHNlYXJjaFBsYWNlaG9sZGVyOiBcIlNlYXJjaFwiLFxuXHRcdFx0dGl0bGU6IFwiTG9nZ2luZ1wiLFxuXHRcdH07XG5cdFx0dGhpcy50cmFuc2xhdGlvbnNbTG9nZ2luZ1ZpZXdlck1vZGFsQ29tcG9uZW50Lmxhbmd1YWdlRGVdID0ge1xuXHRcdFx0Y2FuY2VsOiBcIkFiYnJlY2hlblwiLFxuXHRcdFx0Y29uZmlybURlbGV0ZTogXCJBbGxlIExvZ3MgbMO2c2NoZW4/XCIsXG5cdFx0XHRvazogXCJPa1wiLFxuXHRcdFx0c2VhcmNoUGxhY2Vob2xkZXI6IFwiU3VjaGVuXCIsXG5cdFx0XHR0aXRsZTogXCJMb2dnaW5nXCIsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudGhhbmRsZXIgY2FsbGVkIGJ5IElvbmljIHdoZW4gdGhlIG1vZGFsIGlzIG9wZW5lZC5cblx0ICovXG5cdHB1YmxpYyBpb25WaWV3RGlkRW50ZXIoKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwiaW9uVmlld0RpZEVudGVyXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmxvZ2dlci5leGl0KG1ldGhvZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50aGFuZGxlciBjYWxsZWQgd2hlbiB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIG9uQ2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwib25DbG9zZVwiO1xuXHRcdHRoaXMubG9nZ2VyLmVudHJ5KG1ldGhvZE5hbWUpO1xuXG5cdFx0YXdhaXQgdGhpcy5tb2RhbENvbnRyb2xsZXIuZGlzbWlzcygpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIG9uQ2xlYXJMb2dzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcIm9uQ2xlYXJMb2dzXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHRjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDb250cm9sbGVyLmNyZWF0ZSh7XG5cdFx0XHRoZWFkZXI6IHRoaXMuZ2V0VHJhbnNsYXRpb24oKS5jb25maXJtRGVsZXRlLFxuXHRcdFx0YnV0dG9uczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGV4dDogdGhpcy5nZXRUcmFuc2xhdGlvbigpLmNhbmNlbCxcblx0XHRcdFx0XHRyb2xlOiBcImNhbmNlbFwiLFxuXHRcdFx0XHRcdGNzc0NsYXNzOiBcInNlY29uZGFyeVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0ZXh0OiB0aGlzLmdldFRyYW5zbGF0aW9uKCkub2ssXG5cdFx0XHRcdFx0aGFuZGxlcjogKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5jbGVhckxvZ3MoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRdXG5cdFx0fSk7XG5cdFx0YXdhaXQgYWxlcnQucHJlc2VudCgpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhciBsb2dzLlxuXHQgKi9cblx0cHVibGljIGNsZWFyTG9ncygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2NhbFN0b3JhZ2VLZXlzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGxvY2FsU3RvcmFnZUtleSBvZiB0aGlzLmxvY2FsU3RvcmFnZUtleXMuc3BsaXQoXCIsXCIpKSB7XG5cdFx0XHRcdHRoaXMubG9nZ2luZ1NlcnZpY2UucmVtb3ZlTG9nTWVzc2FnZXNGcm9tTG9jYWxTdG9yYWdlKGxvY2FsU3RvcmFnZUtleSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubG9nZ2luZ1NlcnZpY2UucmVtb3ZlTG9nTWVzc2FnZXMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGVscGVyIG1ldGhvZCByZXR1cm5pbmcgdGhlIGN1cnJlbnQgdHJhbnNsYXRpb246XG5cdCAqIC0gdGhlIHByb3BlcnR5IHRyYW5zbGF0aW9uIGlmIGRlZmluZWRcblx0ICogLSB0aGUgdHJhbnNsYXRpb24gYWNjb3JkaW5nIHByb3BlcnR5IGxhbmd1YWdlIGlmIHZhbGlkXG5cdCAqIC0gRW5nbGlzaCB0cmFuc2xhdGlvbiwgb3RoZXJ3aXNlXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VHJhbnNsYXRpb24oKTogTG9nZ2luZ1ZpZXdlclRyYW5zbGF0aW9uIHtcblx0XHRpZiAodHlwZW9mIHRoaXMudHJhbnNsYXRpb24gIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbGF0aW9uO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubGFuZ3VhZ2UgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIHRoaXMudHJhbnNsYXRpb25zW3RoaXMubGFuZ3VhZ2VdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5sYW5ndWFnZV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbGF0aW9uc1tMb2dnaW5nVmlld2VyTW9kYWxDb21wb25lbnQubGFuZ3VhZ2VFbl07XG5cdFx0fVxuXHR9XG59XG4iLCI8aW9uLWhlYWRlcj5cblx0PGlvbi10b29sYmFyIGNvbG9yPXByaW1hcnk+XG5cdFx0PGlvbi10aXRsZT57eyBnZXRUcmFuc2xhdGlvbigpLnRpdGxlIH19PC9pb24tdGl0bGU+XG5cdFx0PGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuXHRcdFx0PGlvbi1idXR0b24gKm5nSWY9XCIhaXNBbmRyb2lkXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuXHRcdFx0XHR7eyBnZXRUcmFuc2xhdGlvbigpLmNhbmNlbCB9fVxuXHRcdFx0PC9pb24tYnV0dG9uPlxuXHRcdFx0PGlvbi1idXR0b24gKm5nSWY9XCJpc0FuZHJvaWRcIiBpY29uLW9ubHkgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuXHRcdFx0XHQ8aW9uLWljb24gbmFtZT1cIm1kLWNsb3NlXCI+PC9pb24taWNvbj5cblx0XHRcdDwvaW9uLWJ1dHRvbj5cblx0XHQ8L2lvbi1idXR0b25zPlxuXHQ8L2lvbi10b29sYmFyPlxuXHQ8aW9uLXRvb2xiYXI+XG5cdFx0PGlvbmljLWxvZ2dpbmctdmlld2VyLXNlYXJjaCBbcGxhY2Vob2xkZXJdPVwiZ2V0VHJhbnNsYXRpb24oKS5zZWFyY2hQbGFjZWhvbGRlclwiPjwvaW9uaWMtbG9nZ2luZy12aWV3ZXItc2VhcmNoPlxuXHRcdDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCIgKm5nSWY9XCJhbGxvd0NsZWFyTG9ncyAhPT0gZmFsc2VcIiBjbGFzcz1cImNsZWFyTG9nc1wiPlxuXHRcdFx0PGlvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xlYXJMb2dzKClcIj5cblx0XHRcdFx0PGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cblx0XHRcdDwvaW9uLWJ1dHRvbj5cblx0XHQ8L2lvbi1idXR0b25zPlxuXHQ8L2lvbi10b29sYmFyPlxuXHQ8aW9uLXRvb2xiYXI+XG5cdFx0PGlvbmljLWxvZ2dpbmctdmlld2VyLWxldmVscz48L2lvbmljLWxvZ2dpbmctdmlld2VyLWxldmVscz5cblx0PC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cbjxpb24tY29udGVudD5cblx0PGlvbmljLWxvZ2dpbmctdmlld2VyIFtsb2NhbFN0b3JhZ2VLZXlzXT1cImxvY2FsU3RvcmFnZUtleXNcIj48L2lvbmljLWxvZ2dpbmctdmlld2VyPlxuPC9pb24tY29udGVudD4iXX0=
|