@esfaenza/core 15.2.193-beta3 → 15.2.195
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/navbar/navbar.component.d.ts +2 -2
- package/esm2020/components/navbar/navbar.component.loc.mjs +3 -3
- package/esm2020/components/navbar/navbar.component.mjs +17 -9
- package/esm2020/lib/app.component.mjs +2 -2
- package/fesm2015/esfaenza-core-components.mjs +16 -10
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +2 -2
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +16 -10
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +2 -2
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -44,8 +44,8 @@ export declare class Navbar extends ReactiveComponent {
|
|
|
44
44
|
logout(): void;
|
|
45
45
|
changeModule(): void;
|
|
46
46
|
changeTenant(): void;
|
|
47
|
-
clearUserPreferences(): void;
|
|
48
|
-
clearCacheClient(): void;
|
|
47
|
+
clearUserPreferences(warn?: boolean): void;
|
|
48
|
+
clearCacheClient(warn?: boolean): void;
|
|
49
49
|
clearCacheServer(): void;
|
|
50
50
|
clearAll(): void;
|
|
51
51
|
forceClearConnectedClientAssets(muo: 'cache' | 'preferences'): void;
|
|
@@ -29,8 +29,8 @@ export class NavBarLoc extends LocalizationService {
|
|
|
29
29
|
super.set("it->en", "Al momento non c'è nulla in esecuzione", ["Nothing being executed at the moment"]);
|
|
30
30
|
super.set("it->en", "Job Completato", ["Job Completed"]);
|
|
31
31
|
super.set("it->en", "Scrivere almeno 3 caratteri per utilizzare la ricerca globale", ["You must write at least 3 characters in order to use the Global Research"]);
|
|
32
|
-
super.set("it->en", "Ripulisci la Cache di tutti
|
|
33
|
-
super.set("it->en", "Ripulisci le Preferenze
|
|
32
|
+
super.set("it->en", "Ripulisci la Cache di tutti", ["Clear Caches of everyone"]);
|
|
33
|
+
super.set("it->en", "Ripulisci le Preferenze di tutti", ["Clear Preferences of everyone"]);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
NavBarLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NavBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -38,4 +38,4 @@ NavBarLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
|
38
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NavBarLoc, decorators: [{
|
|
39
39
|
type: Injectable
|
|
40
40
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5sb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50LmxvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUc5RCxNQUFNLE9BQU8sU0FBVSxTQUFRLG1CQUFtQjtJQUM5QyxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM1RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSwrS0FBK0ssRUFBRSxDQUFDLHdJQUF3SSxDQUFDLENBQUMsQ0FBQztRQUNqVixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlIQUFpSCxFQUFFLENBQUMsa0dBQWtHLENBQUMsQ0FBQyxDQUFBO1FBQzVPLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLDhNQUE4TSxFQUFFLENBQUMsNkxBQTZMLENBQUMsQ0FBQyxDQUFDO1FBQ3JhLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUMzRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztRQUM3RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztRQUM3RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztRQUNsRixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQztRQUN6RixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN4RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw2RkFBNkYsRUFBRSxDQUFDLHlFQUF5RSxDQUFDLENBQUMsQ0FBQztRQUNoTSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdDQUF3QyxFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN6RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSwrREFBK0QsRUFBRSxDQUFDLDBFQUEwRSxDQUFDLENBQUMsQ0FBQztRQUNuSyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztRQUNqRixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDOztzR0E5QlEsU0FBUzswR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5hdkJhckxvYyBleHRlbmRzIExvY2FsaXphdGlvblNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlNlc3Npb25lIFNjYWR1dGFcIiwgW1wiRXhwaXJlZCBzZXNzaW9uXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJCYWNrZW5kIE9mZmxpbmVcIiwgW1wiQmFja2VuZCBPZmZsaW5lXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJTZW1icmEgY2hlIGlsIEJhY2tlbmQgc2lhIG1vbWVudGFuZWFtZW50ZSBvZmZsaW5lLiBRdWVzdGEgcGFnaW5hIHNpIGFnZ2lvcm5lcmEnIGF1dG9tYXRpY2FtZW50ZSBub24gYXBwZW5hIGxhIHNpdHVhemlvbmUgdG9ybmVyYScgYWxsYSBub3JtYWxpdGEnLiBDaSBzY3VzaWFtbyBwZXIgaWwgZGlzYWdpb1wiLCBbXCJCYWNrZW5kIHNlZW1zIHRvIGJlIGN1cnJlbnRseSBvZmZsaW5lLiBUaGlzIHBhZ2Ugd2lsbCByZXNldCBpdHNlbGYgd2hlbiB0aGUgc2l0dWF0aW9uIGdvZXMgYmFjayB0byBub3JtYWwuIFNvcnJ5IGZvciB0aGUgaW5jb252ZW5pZW5jZVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiUmlwdWxpc2NpIGxhIENhY2hlXCIsIFtcIkNsZWFyIENhY2hlc1wiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQ2FjaGUgUmlwdWxpdGFcIiwgW1wiQ2FjaGUgQ2xlYXJlZFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQW1iaWVudGUgZGkgUHJvZHV6aW9uZVwiLCBbXCJQcm9kdWN0aW9uIEVudmlyb25tZW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCLDiCBkaXNwb25pYmlsZSB1bmEgbnVvdmEgdmVyc2lvbmUgcGVyIGwnYXBwbGljYXppb25lIGNvcnJlbnRlLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIsIFtcIkEgbmV3IHZlcnNpb24gaXMgYXZhaWxhYmxlIGZvciB0aGlzIGFwcGxpY2F0aW9uLiBJdCBpcyBzdWdnZXN0ZWQgdG8gcmVsb2FkIHRoaXMgcGFnZSAoQ1RSTCArIEY1KVwiXSlcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJMZSBpbmZvcm1hemlvbmkgZGkgU2Vzc2lvbmUgKFRlbmFudC9BY2NvdW50KSBzb25vIGNhbWJpYXRlIGEgc2VndWl0byBkaSB1biBsb2dpbiBzdSBtb2R1bG8gZGl2ZXJzbyB1dGlsaXp6YW5kbyBkaXZlcnNvIFRlbmFudC9VdGVudGUgc3VsbG8gc3Rlc3NvIGJyb3dzZXIuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIiwgW1wiU2Vzc2lvbiBpbmZvcm1hdGlvbnMgKFRlbmFudC9BY2NvdW50KSBoYXMgY2hhbmdlZCBhZnRlciBhIGxvZ2luIHRvIGEgZGlmZmVyZW50IG1vZHVsZSB3aXRoIHRoZSBzYW1lIFRlbmFudC9Vc2VybmFtZSB1c2luZyB0aGUgc2FtZSBicm93c2VyLiBJdCBpcyBzdWdnZXN0ZWQgdG8gcmVsb2FkIHRoaXMgcGFnZSAoQ1RSTCArIEY1KVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQ2FtYmlhIE1vZHVsb1wiLCBbXCJDaGFuZ2UgbW9kdWxlXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJDYW1iaWEgVGVuYW50XCIsIFtcIkNoYW5nZSB0ZW5hbnRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlVzYSBub3RpZmljaGUgc2VtcGxpY2lcIiwgW1wiVXNlIHNpbXBsZSBhbGVydHNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkNvbnNlbnRpIG5vdGlmaWNoZSBlbGVnYW50aVwiLCBbXCJBbGxvdyBmYW5jeSBhbGVydHNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkFtYmllbnRlIGRpIFN2aWx1cHBvXCIsIFtcIkRldmVsb3BtZW50IEVudmlyb25tZW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJBbWJpZW50ZSBkaSBTdmlsdXBwbyBBXCIsIFtcIkRldmVsb3BtZW50IEVudmlyb25tZW50IEFcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkFtYmllbnRlIGRpIFN2aWx1cHBvIEJcIiwgW1wiRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgQlwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiUmlwdWxpc2NpIGxlIFByZWZlcmVuemUgVXRlbnRlXCIsIFtcIkNsZWFyIFVzZXIgUHJlZmVyZW5jZXNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlByZWZlcmVuemUgdXRlbnRlIHJpcHVsaXRlXCIsIFtcIlVzZXIgcHJlZmVyZW5jZXMgaGFzIGJlZW4gY2xlYXJlZFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQW1iaWVudGUgZGkgU3RhZ2luZ1wiLCBbXCJTdGFnaW5nIEVudmlyb25tZW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJBbWJpZW50ZSBkaSBTdGFnaW5nIEFcIiwgW1wiU3RhZ2luZyBBIEVudmlyb25tZW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJMJ2F0dHVhbGUgc2Vzc2lvbmUgZGkgbGF2b3JvIG5vbiDDqCBwacO5IHZhbGlkYS48YnI+U2kgcHJlZ2EgZGkgZXNlZ3VpcmUgbnVvdmFtZW50ZSBpbCBsb2dpbi5cIiwgW1wiQ3VycmVudCBzZXNzaW9uIGhhcyBleHBpcmVkLjxicj5QbGVhc2UgbG9naW4gYmFjayBpbnRvIHRoZSBhcHBsaWNhdGlvbi5cIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIk5vdGlmaWNoZVwiLCBbXCJOb3RpZmljYXRpb25zXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJKb2IgQXBwbGljYXRpdmlcIiwgW1wiQXBwbGljYXRpb24gSm9ic1wiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQWwgbW9tZW50byBub24gYyfDqCBudWxsYSBpbiBlc2VjdXppb25lXCIsIFtcIk5vdGhpbmcgYmVpbmcgZXhlY3V0ZWQgYXQgdGhlIG1vbWVudFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiSm9iIENvbXBsZXRhdG9cIiwgW1wiSm9iIENvbXBsZXRlZFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiU2NyaXZlcmUgYWxtZW5vIDMgY2FyYXR0ZXJpIHBlciB1dGlsaXp6YXJlIGxhIHJpY2VyY2EgZ2xvYmFsZVwiLCBbXCJZb3UgbXVzdCB3cml0ZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMgaW4gb3JkZXIgdG8gdXNlIHRoZSBHbG9iYWwgUmVzZWFyY2hcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlJpcHVsaXNjaSBsYSBDYWNoZSBkaSB0dXR0aVwiLCBbXCJDbGVhciBDYWNoZXMgb2YgZXZlcnlvbmVcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlJpcHVsaXNjaSBsZSBQcmVmZXJlbnplIGRpIHR1dHRpXCIsIFtcIkNsZWFyIFByZWZlcmVuY2VzIG9mIGV2ZXJ5b25lXCJdKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -6,6 +6,7 @@ import { NgIf, NgFor, NgTemplateOutlet } from "@angular/common";
|
|
|
6
6
|
import { FormsModule } from "@angular/forms";
|
|
7
7
|
import { LocalizationService, LocalizationModule } from "@esfaenza/localizations";
|
|
8
8
|
// EsFaenza
|
|
9
|
+
import { AccessControlModule } from "@esfaenza/access-control";
|
|
9
10
|
import { EsTableModule } from "@esfaenza/es-table";
|
|
10
11
|
import { ComponentHostDirective } from "@esfaenza/core/directives";
|
|
11
12
|
import { NAVBAR_EXTENSIONS, LOGIN_URL_LEGACY } from "@esfaenza/core/domain";
|
|
@@ -29,6 +30,7 @@ import * as i8 from "@angular/forms";
|
|
|
29
30
|
import * as i9 from "ngx-bootstrap/dropdown";
|
|
30
31
|
import * as i10 from "@angular/material/slide-toggle";
|
|
31
32
|
import * as i11 from "ngx-bootstrap/progressbar";
|
|
33
|
+
import * as i12 from "@esfaenza/access-control";
|
|
32
34
|
// Chiamate ai Repository
|
|
33
35
|
const GET_Jace_GetActiveJaceModules = "/api/Jace/GetActiveJaceModules";
|
|
34
36
|
const GET_Cache_ClearAllCaches = "/api/Cache/ClearAllCaches";
|
|
@@ -84,10 +86,10 @@ export class Navbar extends ReactiveComponent {
|
|
|
84
86
|
}
|
|
85
87
|
});
|
|
86
88
|
this.notifications.observe(this.MessageDef.IN_ClearCache).pipe(takeUntil(this.destroyed$)).subscribe((message) => {
|
|
87
|
-
this.clearCacheClient();
|
|
89
|
+
this.clearCacheClient(false);
|
|
88
90
|
});
|
|
89
91
|
this.notifications.observe(this.MessageDef.IN_ClearPreferecnes).pipe(takeUntil(this.destroyed$)).subscribe((message) => {
|
|
90
|
-
this.clearUserPreferences();
|
|
92
|
+
this.clearUserPreferences(false);
|
|
91
93
|
});
|
|
92
94
|
}
|
|
93
95
|
checkIdentity() {
|
|
@@ -143,15 +145,21 @@ export class Navbar extends ReactiveComponent {
|
|
|
143
145
|
else
|
|
144
146
|
window.location.href = `${myconfig.AuthUrl}/#/login;client=${myconfig.Client}`;
|
|
145
147
|
}
|
|
146
|
-
clearUserPreferences() {
|
|
148
|
+
clearUserPreferences(warn = true) {
|
|
147
149
|
this.prefsService.clear().subscribe();
|
|
148
|
-
|
|
150
|
+
if (warn)
|
|
151
|
+
this.msgExts.simpleSuccess(this.lc.loc("Preferenze utente ripulite"));
|
|
152
|
+
else
|
|
153
|
+
console.info("@esfaenza/core: Forceful preferecnes clear request received");
|
|
149
154
|
}
|
|
150
|
-
clearCacheClient() {
|
|
155
|
+
clearCacheClient(warn = true) {
|
|
151
156
|
this.cacheService.clear().subscribe();
|
|
152
157
|
this.http.resetHttpUntimedCacheStorage();
|
|
153
158
|
this.http.resetHttpTimedCacheStorage();
|
|
154
|
-
|
|
159
|
+
if (warn)
|
|
160
|
+
this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
|
|
161
|
+
else
|
|
162
|
+
console.info("@esfaenza/core: Forceful cache clear request received");
|
|
155
163
|
}
|
|
156
164
|
clearCacheServer() {
|
|
157
165
|
this.http.get(GET_Cache_ClearAllCaches).subscribe(_ => {
|
|
@@ -186,10 +194,10 @@ export class Navbar extends ReactiveComponent {
|
|
|
186
194
|
}
|
|
187
195
|
}
|
|
188
196
|
Navbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, deps: [{ token: i1.PreferencesService }, { token: i1.CacheService }, { token: i2.BaseMessageService }, { token: i2.NotificationsService }, { token: i3.MessageService }, { token: i4.LocalizationService }, { token: i5.HTTPService }, { token: i0.ChangeDetectorRef }, { token: i6.AppState }, { token: i6.TokenService }, { token: i7.Router }, { token: i6.CompletedJobRedirectionService }, { token: NAVBAR_EXTENSIONS }, { token: LOGIN_URL_LEGACY }], target: i0.ɵɵFactoryTarget.Component });
|
|
189
|
-
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, isStandalone: true, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 9px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></a>\r\n </div>\r\n\r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}} 2\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti i Client Connessi' | localize : lc}}\r\n </li>\r\n <li *ac=\"'!R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti i Client Connessi' | localize : lc}} NOT\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente di tutti i Client Connessi' | localize : lc}}\r\n </li>\r\n <li *ac=\"'!R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente di tutti i Client Connessi' | localize : lc}} NOT\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-icon-notification{top:7px;left:-7px;position:absolute;background-color:#0056b3;border-radius:50%;height:8px;width:8px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #3e4d64}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px;display:flex}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#024a88}.user-menu .dropdown-menu a:hover{color:#fff8a9;background-color:red}.user-menu .dropdown-menu a i{margin-right:8px}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 11px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:8px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.dropdown-title-bg{background-color:#344154;border:1px solid #3e4d64;border-bottom:0px}.dropdown-title{color:#fff;margin:auto;padding:8px 0;font-size:18px}.dropdown-menu{background-color:#fff;border:none}.dropdown-divider{border-top:1px solid #eeeeee}.dropdown-item{background-color:#fff;color:#0056b3}.dropdown-item:hover{color:#004a9a!important;background-color:#eee}.dropdown-top{background-color:#fff;height:0;margin-bottom:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.dropdown-bot{background-color:#fff;height:0;margin-top:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.enuma-navbar{height:60px;align-items:center;background-color:#2a3544;box-shadow:0 8px 6px -6px #1313130a,0 12px 16px -16px #1313130d;margin-bottom:-1px;border-bottom:1px solid #191E29}.nav-environment{color:#fff;background-color:#3e4d64;text-align:center;padding:5px 10px;margin:2px 10px 0 0}.nav-icon{color:#fff!important;font-size:20px;cursor:pointer}.nav-right-section{position:absolute;right:10px;top:10px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i9.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i9.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i9.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ProgressbarModule }, { kind: "component", type: i11.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "directive", type: ComponentHostDirective, selector: "[componentHost]", inputs: ["componentHost", "Inputs"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i4.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
197
|
+
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, isStandalone: true, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 9px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></a>\r\n </div>\r\n\r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze di tutti' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-icon-notification{top:7px;left:-7px;position:absolute;background-color:#0056b3;border-radius:50%;height:8px;width:8px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #3e4d64}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px;display:flex}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#024a88}.user-menu .dropdown-menu a:hover{color:#fff8a9;background-color:red}.user-menu .dropdown-menu a i{margin-right:8px}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 11px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:8px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.dropdown-title-bg{background-color:#344154;border:1px solid #3e4d64;border-bottom:0px}.dropdown-title{color:#fff;margin:auto;padding:8px 0;font-size:18px}.dropdown-menu{background-color:#fff;border:none}.dropdown-divider{border-top:1px solid #eeeeee}.dropdown-item{background-color:#fff;color:#0056b3}.dropdown-item:hover{color:#004a9a!important;background-color:#eee}.dropdown-top{background-color:#fff;height:0;margin-bottom:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.dropdown-bot{background-color:#fff;height:0;margin-top:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.enuma-navbar{height:60px;align-items:center;background-color:#2a3544;box-shadow:0 8px 6px -6px #1313130a,0 12px 16px -16px #1313130d;margin-bottom:-1px;border-bottom:1px solid #191E29}.nav-environment{color:#fff;background-color:#3e4d64;text-align:center;padding:5px 10px;margin:2px 10px 0 0}.nav-icon{color:#fff!important;font-size:20px;cursor:pointer}.nav-right-section{position:absolute;right:10px;top:10px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i9.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i9.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i9.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ProgressbarModule }, { kind: "component", type: i11.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "directive", type: ComponentHostDirective, selector: "[componentHost]", inputs: ["componentHost", "Inputs"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i4.LocalizePipe, name: "localize" }, { kind: "ngmodule", type: AccessControlModule }, { kind: "directive", type: i12.AccessControlDirective, selector: "[ac]", inputs: ["ac", "acAbsolute"] }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
190
198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, decorators: [{
|
|
191
199
|
type: Component,
|
|
192
|
-
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, NgTemplateOutlet, EsTableModule, LocalizationModule], template: "<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 9px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></a>\r\n </div>\r\n\r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}} 2\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti i Client Connessi' | localize : lc}}\r\n </li>\r\n <li *ac=\"'!R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti i Client Connessi' | localize : lc}} NOT\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente di tutti i Client Connessi' | localize : lc}}\r\n </li>\r\n <li *ac=\"'!R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente di tutti i Client Connessi' | localize : lc}} NOT\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-icon-notification{top:7px;left:-7px;position:absolute;background-color:#0056b3;border-radius:50%;height:8px;width:8px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #3e4d64}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px;display:flex}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#024a88}.user-menu .dropdown-menu a:hover{color:#fff8a9;background-color:red}.user-menu .dropdown-menu a i{margin-right:8px}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 11px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:8px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.dropdown-title-bg{background-color:#344154;border:1px solid #3e4d64;border-bottom:0px}.dropdown-title{color:#fff;margin:auto;padding:8px 0;font-size:18px}.dropdown-menu{background-color:#fff;border:none}.dropdown-divider{border-top:1px solid #eeeeee}.dropdown-item{background-color:#fff;color:#0056b3}.dropdown-item:hover{color:#004a9a!important;background-color:#eee}.dropdown-top{background-color:#fff;height:0;margin-bottom:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.dropdown-bot{background-color:#fff;height:0;margin-top:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.enuma-navbar{height:60px;align-items:center;background-color:#2a3544;box-shadow:0 8px 6px -6px #1313130a,0 12px 16px -16px #1313130d;margin-bottom:-1px;border-bottom:1px solid #191E29}.nav-environment{color:#fff;background-color:#3e4d64;text-align:center;padding:5px 10px;margin:2px 10px 0 0}.nav-icon{color:#fff!important;font-size:20px;cursor:pointer}.nav-right-section{position:absolute;right:10px;top:10px}\n"] }]
|
|
200
|
+
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, NgTemplateOutlet, EsTableModule, LocalizationModule, AccessControlModule], template: "<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 9px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></a>\r\n </div>\r\n\r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze di tutti' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-icon-notification{top:7px;left:-7px;position:absolute;background-color:#0056b3;border-radius:50%;height:8px;width:8px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #3e4d64}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px;display:flex}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#024a88}.user-menu .dropdown-menu a:hover{color:#fff8a9;background-color:red}.user-menu .dropdown-menu a i{margin-right:8px}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 11px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:8px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.dropdown-title-bg{background-color:#344154;border:1px solid #3e4d64;border-bottom:0px}.dropdown-title{color:#fff;margin:auto;padding:8px 0;font-size:18px}.dropdown-menu{background-color:#fff;border:none}.dropdown-divider{border-top:1px solid #eeeeee}.dropdown-item{background-color:#fff;color:#0056b3}.dropdown-item:hover{color:#004a9a!important;background-color:#eee}.dropdown-top{background-color:#fff;height:0;margin-bottom:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.dropdown-bot{background-color:#fff;height:0;margin-top:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.enuma-navbar{height:60px;align-items:center;background-color:#2a3544;box-shadow:0 8px 6px -6px #1313130a,0 12px 16px -16px #1313130d;margin-bottom:-1px;border-bottom:1px solid #191E29}.nav-environment{color:#fff;background-color:#3e4d64;text-align:center;padding:5px 10px;margin:2px 10px 0 0}.nav-icon{color:#fff!important;font-size:20px;cursor:pointer}.nav-right-section{position:absolute;right:10px;top:10px}\n"] }]
|
|
193
201
|
}], ctorParameters: function () { return [{ type: i1.PreferencesService }, { type: i1.CacheService }, { type: i2.BaseMessageService }, { type: i2.NotificationsService }, { type: i3.MessageService }, { type: i4.LocalizationService }, { type: i5.HTTPService }, { type: i0.ChangeDetectorRef }, { type: i6.AppState }, { type: i6.TokenService }, { type: i7.Router }, { type: i6.CompletedJobRedirectionService }, { type: undefined, decorators: [{
|
|
194
202
|
type: Inject,
|
|
195
203
|
args: [NAVBAR_EXTENSIONS]
|
|
@@ -200,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
200
208
|
type: ViewChild,
|
|
201
209
|
args: ["navbar", { static: false }]
|
|
202
210
|
}] } });
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBUSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxGLFdBQVc7QUFDWCxPQUFPLEVBQTRCLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBbUcsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3SyxXQUFXO0FBQ1gsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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QUduQyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixDQUFDOzswQkFvQnBELE1BQU07MkJBQUMsaUJBQWlCOzswQkFDdEosTUFBTTsyQkFBQyxnQkFBZ0I7NENBUlksTUFBTTtzQkFBN0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcclxuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UsIExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIEVzRmFlbnphXHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiwgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50SG9zdERpcmVjdGl2ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kaXJlY3RpdmVzXCI7XHJcbmltcG9ydCB7IEphY2VJZGVudGl0eSwgQWN0aXZlTW9kdWxlVmlldywgRW52T3B0aW9ucywgQXBwbGljYXRpb25Kb2IsIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGFpbmVyLCBOQVZCQVJfRVhURU5TSU9OUywgTE9HSU5fVVJMX0xFR0FDWSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgQXBwU3RhdGUsIENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgR2xvYmFsU2VhcmNoU2VydmljZSwgVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcblxyXG4vLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBpbnRlcnZhbCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRha2VXaGlsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFByb2dyZXNzYmFyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXJcIjtcclxuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgTmF2QmFyTG9jIH0gZnJvbSBcIi4vbmF2YmFyLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgUmVhY3RpdmVDb21wb25lbnQgfSBmcm9tIFwiLi4vYmFzZS9yZWFjdGl2ZS5jb21wb25lbnRcIjtcclxuXHJcbi8vIENoaWFtYXRlIGFpIFJlcG9zaXRvcnlcclxuY29uc3QgR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXM6IHN0cmluZyA9IFwiL2FwaS9KYWNlL0dldEFjdGl2ZUphY2VNb2R1bGVzXCI7XHJcbmNvbnN0IEdFVF9DYWNoZV9DbGVhckFsbENhY2hlczogc3RyaW5nID0gXCIvYXBpL0NhY2hlL0NsZWFyQWxsQ2FjaGVzXCI7XHJcbmNvbnN0IEdFVF9DYWNoZV9DbGVhckFsbENsaWVudHNDYWNoZXM6IHN0cmluZz0gXCIvYXBpL0NhY2hlL0NsZWFyQWxsQ2xpZW50c0NhY2hlc1wiO1xyXG5jb25zdCBHRVRfQ2FjaGVfQ2xlYXJBbGxDbGllbnRzUHJlZmVyZW5jZXM6IHN0cmluZz0gXCIvYXBpL0NhY2hlL0NsZWFyQWxsQ2xpZW50c1ByZWZlcmVuY2VzXCI7XHJcblxyXG5kZWNsYXJlIHZhciBteWNvbmZpZzogRW52T3B0aW9ucztcclxuZGVjbGFyZSB2YXIgZGF5anM7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcIm5hdmJhclwiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5hdkJhckxvYyB9XSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0eWxlVXJsczogW1wiLi9uYXZiYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL25hdmJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtSb3V0ZXJMaW5rLCBGb3Jtc01vZHVsZSwgQnNEcm9wZG93bk1vZHVsZSwgTWF0U2xpZGVUb2dnbGVNb2R1bGUsIE5nSWYsIE5nRm9yLCBQcm9ncmVzc2Jhck1vZHVsZSwgQ29tcG9uZW50SG9zdERpcmVjdGl2ZSwgTmdUZW1wbGF0ZU91dGxldCwgRXNUYWJsZU1vZHVsZSwgTG9jYWxpemF0aW9uTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2YmFyIGV4dGVuZHMgUmVhY3RpdmVDb21wb25lbnQge1xyXG5cclxuICAgIHB1YmxpYyBhcHBsaWNhdGlvblZlcnNpb24gPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudFZlcnNpb247XHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50RW52aXJvbm1lbnQ7XHJcblxyXG4gICAgcHVibGljIGlzTWVudUNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGFub21hbGllc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgQ3VycmVudElkZW50aXR5OiBKYWNlSWRlbnRpdHk7XHJcblxyXG4gICAgcHJpdmF0ZSBuZXdWZXJzaW9uV2FybmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBAVmlld0NoaWxkKFwibmF2YmFyXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBuYXZiYXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgcHVibGljIE1vZHVsZXM6IEFjdGl2ZU1vZHVsZVZpZXdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHByZWZzU2VydmljZTogUHJlZmVyZW5jZXNTZXJ2aWNlLCBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLCBwcml2YXRlIE1lc3NhZ2VEZWY6IEJhc2VNZXNzYWdlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwcml2YXRlIG1zZ0V4dHM6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIHByaXZhdGUgaHR0cDogSFRUUFNlcnZpY2UsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwdWJsaWMgc3I6IFRva2VuU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjanJTZXJ2aWNlOiBDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UsIEBJbmplY3QoTkFWQkFSX0VYVEVOU0lPTlMpIHB1YmxpYyBleHRlbnNpb25Db21wb25lbnRzOiBUeXBlPGFueT5bXSxcclxuICAgICAgICBASW5qZWN0KExPR0lOX1VSTF9MRUdBQ1kpIHB1YmxpYyBsb2dpblVybExlZ2FjeTogYm9vbGVhbikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcIm1lbnUuaXNDb2xsYXBzZWRcIiwgKGlzQ29sbGFwc2VkKSA9PiB7IHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7IH0pO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcImFwcC5jb21wbGV0ZWRKb2JcIiwgKGpvYkRlc2NyaXB0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiSm9iIENvbXBsZXRhdG9cIikgKyAoam9iRGVzY3JpcHRpb24gPyAoXCI6IFwiICsgam9iRGVzY3JpcHRpb24pIDogJycpLCBcInRvYXN0clwiKTtcclxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcImFwcC5zdGFydGVkSm9iXCIsIChfKSA9PiB7IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpOyB9KTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJhcHAucHJvZ3Jlc3NKb2JcIiwgKF8pID0+IHsgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7IH0pO1xyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZUJhc2VOb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5nZXRBY3RpdmVKYWNlTW9kdWxlcygpO1xyXG5cclxuICAgICAgICAvLyBBcHBlbmEgbGEgcGFnaW5hIHBhcnRlLCBwb2kgb2duaSBzZWNvbmRvLCBjb250cm9sbG8gbCdpZGVudGl0eSBwZXIgdmVyaWZpY2FyZSBzZSByaW1hbmUgbGEgc3Rlc3NhXHJcbiAgICAgICAgaW50ZXJ2YWwoMTAwMCkucGlwZShcclxuICAgICAgICAgICAgc3RhcnRXaXRoKDApLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcclxuICAgICAgICAgICAgdGFrZVdoaWxlKF8gPT4gIW15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcylcclxuICAgICAgICApLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0lkZW50aXR5KCk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIC8vUXVhbmRvIHZpZW5lIGRpc3RydXR0YSBsYSBuYXZiYXIgZGV2byBkaXN0cnVnZ2VyZSBhbmNoZSBpbCBjbGllbnQgZGkgc2lnbmFsciBwZXJjaMOoIHZ1b2wgZGlyZSBjaGUgaG8gY2hpdXNvIGxhIHBhZ2luYVxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVCYXNlTm90aWZpY2F0aW9ucygpIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc2VuZCh0aGlzLk1lc3NhZ2VEZWYuT1VUX1F1ZXJ5Sm9iU3RhdHVzLCBudWxsKTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMub2JzZXJ2ZSh0aGlzLk1lc3NhZ2VEZWYuSU5fU2VuZFZlcnNpb24pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobWVzc2FnZSAhPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudFZlcnNpb24gJiYgIXRoaXMubmV3VmVyc2lvbldhcm5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCLDiCBkaXNwb25pYmlsZSB1bmEgbnVvdmEgdmVyc2lvbmUgcGVyIGwnYXBwbGljYXppb25lIGNvcnJlbnRlLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3VmVyc2lvbldhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLm9ic2VydmUodGhpcy5NZXNzYWdlRGVmLklOX0NsZWFyQ2FjaGUpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQ2FjaGVDbGllbnQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLm9ic2VydmUodGhpcy5NZXNzYWdlRGVmLklOX0NsZWFyUHJlZmVyZWNuZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyVXNlclByZWZlcmVuY2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0lkZW50aXR5KCkge1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgbGV0IGlkTGFzdCA9IHRoaXMuQ3VycmVudElkZW50aXR5O1xyXG5cclxuICAgICAgICBpZiAoIWlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tTZXNzaW9uVGltZW91dChpZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRJZGVudGl0eSAmJiAoaWQuSWRBY2NvdW50ICE9IGlkTGFzdD8uSWRBY2NvdW50IHx8IGlkLklkVXNlciAhPSBpZExhc3Q/LklkVXNlciB8fCBpZC5JZHRlbmFudCAhPSBpZExhc3Q/LklkdGVuYW50KSkge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZyh0aGlzLmxjLmxvYyhcIkxlIGluZm9ybWF6aW9uaSBkaSBTZXNzaW9uZSAoVGVuYW50L0FjY291bnQpIHNvbm8gY2FtYmlhdGUgYSBzZWd1aXRvIGRpIHVuIGxvZ2luIHN1IG1vZHVsbyBkaXZlcnNvIHV0aWxpenphbmRvIGRpdmVyc28gVGVuYW50L1V0ZW50ZSBzdWxsbyBzdGVzc28gYnJvd3Nlci4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DdXJyZW50SWRlbnRpdHkgPSBpZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3RpdmVKYWNlTW9kdWxlcygpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0PEFjdGl2ZU1vZHVsZVZpZXdbXT4oR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXMpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLk1vZHVsZXMgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlLk1vZHVsZXMgPSB0aGlzLk1vZHVsZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb25UaW1lb3V0KGlkZW50aXR5OiBKYWNlSWRlbnRpdHkpIHtcclxuICAgICAgICBpZiAoZGF5anMoKSA+PSBkYXlqcyhpZGVudGl0eS5FeHBpcmF0aW9uVGltZSkuc3VidHJhY3QoMTAsICdtaW51dGVzJykgJiYgIW15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLmV4cGlyZWRTZXNzaW9uTWVzc2FnZShcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKCdFeHBpcmVkIHNlc3Npb24nKSxcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKFwiTCdhdHR1YWxlIHNlc3Npb25lIGRpIGxhdm9ybyBub24gw6ggcGnDuSB2YWxpZGEuPGJyPlNpIHByZWdhIGRpIGVzZWd1aXJlIG51b3ZhbWVudGUgaWwgbG9naW4uXCIpLFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tTZXNzaW9uVGltZW91dCAtIHJlZGlyZWN0aW5nIHRvIGxvZ2luXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0SGVhZGVySGVpZ2h0KHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ29Ub0Rhc2hib2FyZCgpe1xyXG4gICAgICAgIHdpbmRvdy5vcGVuKG15Y29uZmlnLkphY2VEYXNoYm9hcmRVcmwsICdfYmxhbmsnKS5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b2dnbGVNZW51KCkge1xyXG4gICAgICAgIHRoaXMuaXNNZW51Q29sbGFwc2VkID0gIXRoaXMuaXNNZW51Q29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLm5vdGlmeURhdGFDaGFuZ2VkKFwibWVudS5pc0NvbGxhcHNlZFwiLCB0aGlzLmlzTWVudUNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ291dCgpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2dpblVybExlZ2FjeSlcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dvdXQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9LyMvbG9nb3V0O2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VNb2R1bGUoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBteWNvbmZpZy5KYWNlRGFzaGJvYXJkVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VUZW5hbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9naW5VcmxMZWdhY3kpXHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vbG9naW4vdGVuYW50P2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS8jL2xvZ2luO2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyVXNlclByZWZlcmVuY2VzKCkge1xyXG4gICAgICAgIHRoaXMucHJlZnNTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJQcmVmZXJlbnplIHV0ZW50ZSByaXB1bGl0ZVwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJDYWNoZUNsaWVudCgpIHtcclxuICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBVbnRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJDYWNoZVNlcnZlcigpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9DYWNoZV9DbGVhckFsbENhY2hlcykuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckFsbCgpIHtcclxuICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBVbnRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQ2FjaGVfQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY2VDbGVhckNvbm5lY3RlZENsaWVudEFzc2V0cyhtdW86ICdjYWNoZScgfCAncHJlZmVyZW5jZXMnKSB7XHJcbiAgICAgICAgaWYgKG11byA9PSBcImNhY2hlXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQ2FjaGVfQ2xlYXJBbGxDbGllbnRzQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG11byA9PSBcInByZWZlcmVuY2VzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQ2FjaGVfQ2xlYXJBbGxDbGllbnRzUHJlZmVyZW5jZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIikpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuY2xlYXJNZXNzYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBsZXRlZEpvYkNsaWNrZWQoam9iOiBBcHBsaWNhdGlvbkpvYikge1xyXG4gICAgICAgIHRoaXMuY2pyU2VydmljZS5yZWRpcmVjdChqb2IpO1xyXG4gICAgfVxyXG59IiwiPG5hdiAjbmF2YmFyIGNsYXNzPVwibmF2IGVudW1hLW5hdmJhclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgPCEtLSBDb2xsYXBzZSBtZW7DuSBhIHNpbmlzdHJhIC0tPlxyXG4gICAgICAgIDxkaXY+PGEgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIGNsYXNzPVwiZmFyIGZhLWJhcnMgbmF2LWljb24gYXBwLXBhZGRpbmctbGVmdC0xNVwiIHN0eWxlPVwicGFkZGluZy10b3A6IDlweDtcIj48L2E+PC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQnJlYWRjcnVtYiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBhZGRpbmctbGVmdC0xNVwiIHN0eWxlPVwicGFkZGluZy10b3A6IDhweDtcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bzsgZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgPCEtLU5vdGlmaWNhdGlvbnMgKEpvYnMpLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTE1XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9zdGF0ZS5qb2JzSW5Qcm9ncmVzcyA+IDBcIiBjbGFzcz1cImZhLWJlYXQtZmFkZSBuYXYtam9icy1pY29uLW5vdGlmaWNhdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGEgW2NsYXNzLmZhLXNoYWtlXT1cIl9zdGF0ZS5qb2JzSW5Qcm9ncmVzcyA+IDBcIiBjbGFzcz1cImZhciBmYS1iZWxsIG1vZHVsZS1uYXYtbWVudS1saW5rIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIHN0eWxlPVwiLS1mYS1hbmltYXRpb24tZHVyYXRpb246IDNzOyAtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XCIgZHJvcGRvd25Ub2dnbGU+PC9hPlxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJuYXYtam9icy1tZW51XCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IGF1dG87XCI+e3snSm9iIEFwcGxpY2F0aXZpJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbWFyZ2luLXJpZ2h0LTVcIj57eydOb3RpZmljaGUnIHwgbG9jYWxpemUgOiBsY319Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXQtbWluLTJcIj48bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cIl9zdGF0ZS5ub3RpZnlPbkNvbXBsZXRlZEpvYnNcIiAoY2xpY2spPVwiY2xlYXJNZXNzYWdlcygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfc3RhdGUuYWxsSm9icy5sZW5ndGggPT0gMFwiIGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0LWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7XCJBbCBtb21lbnRvIG5vbiBjJ8OoIG51bGxhIGluIGVzZWN1emlvbmVcIiB8IGxvY2FsaXplIDogbGN9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgam9iIG9mIF9zdGF0ZS5hbGxKb2JzOyBsZXQgbGFzdCA9IGxhc3RcIiBbY2xhc3MuYXBwLW1hcmdpbi1ib3R0b20tNV09XCIhbGFzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiIHRpdGxlPVwie3tqb2IuZGVzY3JpcHRpb259fVwiIGNsYXNzPVwiYXBwLWxpbmsgYXBwLW5vLXNlbGVjdGlvbiBhcHAtaW5saW5lIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNvbXBsZXRlZEpvYkNsaWNrZWQoam9iKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPnt7am9iLnNtYWxsZGVzY3JpcHRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIj57e2pvYi5wZXJjZW50YWdlfX0lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInB1bGwtcmlnaHRcIiAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIj57eydDb21wbGV0ZWQnIHwgbG9jYWxpemUgOiBsY319PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cImpvYi5wZXJjZW50YWdlXCIgW3N0cmlwZWRdPVwidHJ1ZVwiIFthbmltYXRlXT1cInRydWVcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9ncmVzc2JhciAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIiB0eXBlPVwic3VjY2Vzc1wiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cIjEwMFwiIFtzdHJpcGVkXT1cImZhbHNlXCIgW2FuaW1hdGVdPVwiZmFsc2VcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDwhLS1PdGhlciBNb2R1bGVzLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTE1XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmYXIgZmEtY3ViZXMgbW9kdWxlLW5hdi1tZW51LWxpbmsgZHJvcGRvd24tdG9nZ2xlIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImdvVG9EYXNoYm9hcmQoKVwiPjwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tUXVpY2sgQWN0aW9ucy0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xNVwiIGRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20gcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZmFyIGZhLWZvbGRlci1nZWFyIG1vZHVsZS1uYXYtbWVudS1saW5rIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0LXVzZXIgYXBwLW5vLXBhZGRpbmdcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImQtZmxleCBkcm9wZG93bi10aXRsZS1iZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdGl0bGVcIj5HZXN0aXNjaSBDYWNoZSBVdGVudGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRyb3Bkb3duLXRvcFwiPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhclVzZXJQcmVmZXJlbmNlcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXVzZXItdGltZXMgYXBwLW1hcmdpbi1yaWdodC0xMFwiPjwvaT57eydSaXB1bGlzY2kgbGUgUHJlZmVyZW56ZSBVdGVudGUnIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtYnJvb20td2lkZSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCI+PC9pPnt7J1JpcHVsaXNjaSBsYSBDYWNoZScgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1icm9vbS13aWRlIGFwcC1tYXJnaW4tcmlnaHQtMTBcIj48L2k+e3snUmlwdWxpc2NpIGxhIENhY2hlJyB8IGxvY2FsaXplIDogbGN9fSAyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKmFjPVwiJ1I6SmFjZSBBZG1pbidcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiZm9yY2VDbGVhckNvbm5lY3RlZENsaWVudEFzc2V0cygnY2FjaGUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1icm9vbS13aWRlIGFwcC1tYXJnaW4tcmlnaHQtMTBcIj48L2k+e3snUmlwdWxpc2NpIGxhIENhY2hlIGRpIHR1dHRpIGkgQ2xpZW50IENvbm5lc3NpJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICphYz1cIichUjpKYWNlIEFkbWluJ1wiIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJmb3JjZUNsZWFyQ29ubmVjdGVkQ2xpZW50QXNzZXRzKCdjYWNoZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWJyb29tLXdpZGUgYXBwLW1hcmdpbi1yaWdodC0xMFwiPjwvaT57eydSaXB1bGlzY2kgbGEgQ2FjaGUgZGkgdHV0dGkgaSBDbGllbnQgQ29ubmVzc2knIHwgbG9jYWxpemUgOiBsY319IE5PVFxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICphYz1cIidSOkphY2UgQWRtaW4nXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImZvcmNlQ2xlYXJDb25uZWN0ZWRDbGllbnRBc3NldHMoJ3ByZWZlcmVuY2VzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtYnJvb20td2lkZSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCI+PC9pPnt7J1JpcHVsaXNjaSBsZSBQcmVmZXJlbnplIFV0ZW50ZSBkaSB0dXR0aSBpIENsaWVudCBDb25uZXNzaScgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqYWM9XCInIVI6SmFjZSBBZG1pbidcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiZm9yY2VDbGVhckNvbm5lY3RlZENsaWVudEFzc2V0cygncHJlZmVyZW5jZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1icm9vbS13aWRlIGFwcC1tYXJnaW4tcmlnaHQtMTBcIj48L2k+e3snUmlwdWxpc2NpIGxlIFByZWZlcmVuemUgVXRlbnRlIGRpIHR1dHRpIGkgQ2xpZW50IENvbm5lc3NpJyB8IGxvY2FsaXplIDogbGN9fSBOT1RcclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRyb3Bkb3duLWJvdFwiPjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgPCEtLVB1bnRpIGRpIGVzdGVuc2lvbmUgcGVyIENhbGVuZGFyLCBDaGF0cm9vbSBlIGNoaSBwacO5IG5lIGhhIHBpw7kgbmUgbWV0dGEuLi4tLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTVcIiAqbmdGb3I9XCJsZXQgY29tcCBvZiBleHRlbnNpb25Db21wb25lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudEhvc3RdPVwiY29tcFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tQW1iaWVudGUtLT5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWVudmlyb25tZW50IGFwcC1uby1zZWxlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ0RldicsIDJdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8nIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydEZXZBJywgM10uaW5jbHVkZXMoYXBwbGljYXRpb25FbnZpcm9ubWVudClcIj57eydBbWJpZW50ZSBkaSBTdmlsdXBwbyBBJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlsnRGV2QicsIDRdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8gQicgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ1N0YWdlJywgNV0uaW5jbHVkZXMoYXBwbGljYXRpb25FbnZpcm9ubWVudClcIj57eydBbWJpZW50ZSBkaSBTdGFnaW5nJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlsnU3RhZ2VBJywgNl0uaW5jbHVkZXMoYXBwbGljYXRpb25FbnZpcm9ubWVudClcIj57eydBbWJpZW50ZSBkaSBTdGFnaW5nIEEnIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydQcm9kJywgMV0uaW5jbHVkZXMoYXBwbGljYXRpb25FbnZpcm9ubWVudClcIj57eydBbWJpZW50ZSBkaSBQcm9kdXppb25lJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLURlYnVnZ2luZyBydW9saSBlIHBlcm1lc3NpLS0+XHJcbiAgICAgICAgPGRpdiBbaGlkZGVuXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdj5QZXJtaXNzaW9uczo8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBDdXJyZW50SWRlbnRpdHkuUGVybWlzc2lvbnNcIj57e3B9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlJvbGVzOjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByIG9mIEN1cnJlbnRJZGVudGl0eS5Sb2xlc1wiPnt7cn19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uYXY+XHJcblxyXG48IS0tIFRlbXBsYXRlIHBlciBsJ2ljb25hIGRlbGwndXRlbnRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3VzZXJJY29uIGxldC1jb250ZXh0PlxyXG4gICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvdXNlcnMvdXNlci5qcGcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nXCI+XHJcbiAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy9ldmVudHMvY2hyaXN0bWFzLnBuZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWcgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbnRleHQ/LnJpZ2h0IHx8IHVuZGVmaW5lZFwiICpuZ0lmPVwiX3N0YXRlLmNocmlzdG1hc1RpbWVcIj5cclxuICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9oYWxsb3dlZW4ucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiBbc3R5bGUucmlnaHQucHhdPVwiY29udGV4dD8ucmlnaHQgfHwgdW5kZWZpbmVkXCIgKm5nSWY9XCJfc3RhdGUuaGFsbG93ZWVuVGltZVwiPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUZW1wbGF0ZSBwZXIgbGUgaW5mb3JtYWl6b25pIGRpIGRlYnVnOiBBbWJpZW50ZSwgcnVvbGksIHBlcm1lc3NpIGVjYyAtLT5cclxuPG5nLXRlbXBsYXRlICNkZWJ1Z0luZm9zPlxyXG4gICAgPGRpdj57e0N1cnJlbnRJZGVudGl0eT8uRnVsbE5hbWV9fSAtICh7e0N1cnJlbnRJZGVudGl0eT8uVGVuYW50TmFtZX19KTwvZGl2PlxyXG4gICAgPGRpdiBoaWRkZW4+e3thcHBsaWNhdGlvbkVudmlyb25tZW50fX08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtLWNlbnRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ0RldicsIDJdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8nIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlsnRGV2QScsIDNdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8gQScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydEZXZCJywgNF0uaW5jbHVkZXMoYXBwbGljYXRpb25FbnZpcm9ubWVudClcIj57eydBbWJpZW50ZSBkaSBTdmlsdXBwbyBCJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ1N0YWdlJywgNV0uaW5jbHVkZXMoYXBwbGljYXRpb25FbnZpcm9ubWVudClcIj57eydBbWJpZW50ZSBkaSBTdGFnaW5nJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ1N0YWdlQScsIDZdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ1Byb2QnLCAxXS5pbmNsdWRlcyhhcHBsaWNhdGlvbkVudmlyb25tZW50KVwiPnt7J0FtYmllbnRlIGRpIFByb2R1emlvbmUnIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdj5QZXJtaXNzaW9uczo8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwIG9mIEN1cnJlbnRJZGVudGl0eS5QZXJtaXNzaW9uc1wiPnt7cH19PC9kaXY+XHJcbiAgICAgICAgPGRpdj5Sb2xlczo8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByIG9mIEN1cnJlbnRJZGVudGl0eS5Sb2xlc1wiPnt7cn19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBUSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxGLFdBQVc7QUFDWCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUE4RCxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3hJLFdBQVc7QUFDWCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxN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QUFrQix5RkFBRSxtQkFBbUIsNkhBTjVMLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDOzJGQVE3RCxNQUFNO2tCQVZsQixTQUFTOytCQUNJLFFBQVEsaUJBQ0gsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQ3ZELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FHbkMsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQzs7MEJBb0J6RSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3RKLE1BQU07MkJBQUMsZ0JBQWdCOzRDQVJZLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgVHlwZSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XHJcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQmFzZU1lc3NhZ2VTZXJ2aWNlLCBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvc2lnbmFsci1ub3RpZmljYXRpb25zXCI7XHJcbmltcG9ydCB7IENhY2hlU2VydmljZSwgUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9wcmVmZXJlbmNlc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlLCBMb2NhbGl6YXRpb25Nb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcblxyXG4vLyBFc0ZhZW56YVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9hY2Nlc3MtY29udHJvbFwiO1xyXG5pbXBvcnQgeyBFc1RhYmxlTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy10YWJsZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIb3N0RGlyZWN0aXZlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RpcmVjdGl2ZXNcIjtcclxuaW1wb3J0IHsgSmFjZUlkZW50aXR5LCBBY3RpdmVNb2R1bGVWaWV3LCBFbnZPcHRpb25zLCBBcHBsaWNhdGlvbkpvYiwgTkFWQkFSX0VYVEVOU0lPTlMsIExPR0lOX1VSTF9MRUdBQ1kgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcbmltcG9ydCB7IEFwcFN0YXRlLCBDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UsIFRva2VuU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5cclxuLy8gTGlicmVyaWVcclxuaW1wb3J0IHsgaW50ZXJ2YWwsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YWtlV2hpbGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBQcm9ncmVzc2Jhck1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3Byb2dyZXNzYmFyXCI7XHJcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9kcm9wZG93blwiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IE5hdkJhckxvYyB9IGZyb20gXCIuL25hdmJhci5jb21wb25lbnQubG9jXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IFJlYWN0aXZlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2Jhc2UvcmVhY3RpdmUuY29tcG9uZW50XCI7XHJcblxyXG4vLyBDaGlhbWF0ZSBhaSBSZXBvc2l0b3J5XHJcbmNvbnN0IEdFVF9KYWNlX0dldEFjdGl2ZUphY2VNb2R1bGVzOiBzdHJpbmcgPSBcIi9hcGkvSmFjZS9HZXRBY3RpdmVKYWNlTW9kdWxlc1wiO1xyXG5jb25zdCBHRVRfQ2FjaGVfQ2xlYXJBbGxDYWNoZXM6IHN0cmluZyA9IFwiL2FwaS9DYWNoZS9DbGVhckFsbENhY2hlc1wiO1xyXG5jb25zdCBHRVRfQ2FjaGVfQ2xlYXJBbGxDbGllbnRzQ2FjaGVzOiBzdHJpbmc9IFwiL2FwaS9DYWNoZS9DbGVhckFsbENsaWVudHNDYWNoZXNcIjtcclxuY29uc3QgR0VUX0NhY2hlX0NsZWFyQWxsQ2xpZW50c1ByZWZlcmVuY2VzOiBzdHJpbmc9IFwiL2FwaS9DYWNoZS9DbGVhckFsbENsaWVudHNQcmVmZXJlbmNlc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGRheWpzO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJuYXZiYXJcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZCYXJMb2MgfV0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vbmF2YmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9uYXZiYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbUm91dGVyTGluaywgRm9ybXNNb2R1bGUsIEJzRHJvcGRvd25Nb2R1bGUsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLCBOZ0lmLCBOZ0ZvciwgUHJvZ3Jlc3NiYXJNb2R1bGUsIENvbXBvbmVudEhvc3REaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXQsIEVzVGFibGVNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZSwgQWNjZXNzQ29udHJvbE1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhciBleHRlbmRzIFJlYWN0aXZlQ29tcG9uZW50IHtcclxuXHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50O1xyXG5cclxuICAgIHB1YmxpYyBpc01lbnVDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBhbm9tYWxpZXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIEN1cnJlbnRJZGVudGl0eTogSmFjZUlkZW50aXR5O1xyXG5cclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZChcIm5hdmJhclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbmF2YmFyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHB1YmxpYyBNb2R1bGVzOiBBY3RpdmVNb2R1bGVWaWV3W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcmVmc1NlcnZpY2U6IFByZWZlcmVuY2VzU2VydmljZSwgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSwgcHJpdmF0ZSBNZXNzYWdlRGVmOiBCYXNlTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSwgcHJpdmF0ZSBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBwcml2YXRlIGh0dHA6IEhUVFBTZXJ2aWNlLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwdWJsaWMgX3N0YXRlOiBBcHBTdGF0ZSwgcHVibGljIHNyOiBUb2tlblNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgY2pyU2VydmljZTogQ29tcGxldGVkSm9iUmVkaXJlY3Rpb25TZXJ2aWNlLCBASW5qZWN0KE5BVkJBUl9FWFRFTlNJT05TKSBwdWJsaWMgZXh0ZW5zaW9uQ29tcG9uZW50czogVHlwZTxhbnk+W10sXHJcbiAgICAgICAgQEluamVjdChMT0dJTl9VUkxfTEVHQUNZKSBwdWJsaWMgbG9naW5VcmxMZWdhY3k6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJtZW51LmlzQ29sbGFwc2VkXCIsIChpc0NvbGxhcHNlZCkgPT4geyB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkOyB9KTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJhcHAuY29tcGxldGVkSm9iXCIsIChqb2JEZXNjcmlwdGlvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkpvYiBDb21wbGV0YXRvXCIpICsgKGpvYkRlc2NyaXB0aW9uID8gKFwiOiBcIiArIGpvYkRlc2NyaXB0aW9uKSA6ICcnKSwgXCJ0b2FzdHJcIik7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJhcHAuc3RhcnRlZEpvYlwiLCAoXykgPT4geyB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgfSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLnByb2dyZXNzSm9iXCIsIChfKSA9PiB7IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpOyB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVCYXNlTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZlSmFjZU1vZHVsZXMoKTtcclxuXHJcbiAgICAgICAgLy8gQXBwZW5hIGxhIHBhZ2luYSBwYXJ0ZSwgcG9pIG9nbmkgc2Vjb25kbywgY29udHJvbGxvIGwnaWRlbnRpdHkgcGVyIHZlcmlmaWNhcmUgc2UgcmltYW5lIGxhIHN0ZXNzYVxyXG4gICAgICAgIGludGVydmFsKDEwMDApLnBpcGUoXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aCgwKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXHJcbiAgICAgICAgICAgIHRha2VXaGlsZShfID0+ICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tJZGVudGl0eSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICAvL1F1YW5kbyB2aWVuZSBkaXN0cnV0dGEgbGEgbmF2YmFyIGRldm8gZGlzdHJ1Z2dlcmUgYW5jaGUgaWwgY2xpZW50IGRpIHNpZ25hbHIgcGVyY2jDqCB2dW9sIGRpcmUgY2hlIGhvIGNoaXVzbyBsYSBwYWdpbmFcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQmFzZU5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNlbmQodGhpcy5NZXNzYWdlRGVmLk9VVF9RdWVyeUpvYlN0YXR1cywgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLm9ic2VydmUodGhpcy5NZXNzYWdlRGVmLklOX1NlbmRWZXJzaW9uKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uICYmICF0aGlzLm5ld1ZlcnNpb25XYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMubGMubG9jKFwiw4ggZGlzcG9uaWJpbGUgdW5hIG51b3ZhIHZlcnNpb25lIHBlciBsJ2FwcGxpY2F6aW9uZSBjb3JyZW50ZS4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld1ZlcnNpb25XYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5vYnNlcnZlKHRoaXMuTWVzc2FnZURlZi5JTl9DbGVhckNhY2hlKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckNhY2hlQ2xpZW50KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLm9ic2VydmUodGhpcy5NZXNzYWdlRGVmLklOX0NsZWFyUHJlZmVyZWNuZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyVXNlclByZWZlcmVuY2VzKGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrSWRlbnRpdHkoKSB7XHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5zci5nZXRKYWNlSWRlbnRpdHkoKTtcclxuICAgICAgICBsZXQgaWRMYXN0ID0gdGhpcy5DdXJyZW50SWRlbnRpdHk7XHJcblxyXG4gICAgICAgIGlmICghaWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5jaGVja1Nlc3Npb25UaW1lb3V0KGlkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuQ3VycmVudElkZW50aXR5ICYmIChpZC5JZEFjY291bnQgIT0gaWRMYXN0Py5JZEFjY291bnQgfHwgaWQuSWRVc2VyICE9IGlkTGFzdD8uSWRVc2VyIHx8IGlkLklkdGVuYW50ICE9IGlkTGFzdD8uSWR0ZW5hbnQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMubGMubG9jKFwiTGUgaW5mb3JtYXppb25pIGRpIFNlc3Npb25lIChUZW5hbnQvQWNjb3VudCkgc29ubyBjYW1iaWF0ZSBhIHNlZ3VpdG8gZGkgdW4gbG9naW4gc3UgbW9kdWxvIGRpdmVyc28gdXRpbGl6emFuZG8gZGl2ZXJzbyBUZW5hbnQvVXRlbnRlIHN1bGxvIHN0ZXNzbyBicm93c2VyLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIpKTtcclxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkN1cnJlbnRJZGVudGl0eSA9IGlkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2ZUphY2VNb2R1bGVzKCkge1xyXG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8QWN0aXZlTW9kdWxlVmlld1tdPihHRVRfSmFjZV9HZXRBY3RpdmVKYWNlTW9kdWxlcykuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuTW9kdWxlcyA9IHJlcztcclxuICAgICAgICAgICAgdGhpcy5fc3RhdGUuTW9kdWxlcyA9IHRoaXMuTW9kdWxlcztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrU2Vzc2lvblRpbWVvdXQoaWRlbnRpdHk6IEphY2VJZGVudGl0eSkge1xyXG4gICAgICAgIGlmIChkYXlqcygpID49IGRheWpzKGlkZW50aXR5LkV4cGlyYXRpb25UaW1lKS5zdWJ0cmFjdCgxMCwgJ21pbnV0ZXMnKSAmJiAhbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgIG15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuZXhwaXJlZFNlc3Npb25NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoJ0V4cGlyZWQgc2Vzc2lvbicpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoXCJMJ2F0dHVhbGUgc2Vzc2lvbmUgZGkgbGF2b3JvIG5vbiDDqCBwacO5IHZhbGlkYS48YnI+U2kgcHJlZ2EgZGkgZXNlZ3VpcmUgbnVvdmFtZW50ZSBpbCBsb2dpbi5cIiksXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjaGVja1Nlc3Npb25UaW1lb3V0IC0gcmVkaXJlY3RpbmcgdG8gbG9naW5cIilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJsb2dpblwiXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRIZWFkZXJIZWlnaHQodGhpcy5uYXZiYXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnb1RvRGFzaGJvYXJkKCl7XHJcbiAgICAgICAgd2luZG93Lm9wZW4obXljb25maWcuSmFjZURhc2hib2FyZFVybCwgJ19ibGFuaycpLmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvZ2dsZU1lbnUoKSB7XHJcbiAgICAgICAgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSAhdGhpcy5pc01lbnVDb2xsYXBzZWQ7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUubm90aWZ5RGF0YUNoYW5nZWQoXCJtZW51LmlzQ29sbGFwc2VkXCIsIHRoaXMuaXNNZW51Q29sbGFwc2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9nb3V0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ2luVXJsTGVnYWN5KVxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ291dD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vIy9sb2dvdXQ7Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZU1vZHVsZSgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG15Y29uZmlnLkphY2VEYXNoYm9hcmRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVRlbmFudCgpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2dpblVybExlZ2FjeSlcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dpbi90ZW5hbnQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9LyMvbG9naW47Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJVc2VyUHJlZmVyZW5jZXMod2FybjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICB0aGlzLnByZWZzU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIGlmICh3YXJuKVxyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIlByZWZlcmVuemUgdXRlbnRlIHJpcHVsaXRlXCIpKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIkBlc2ZhZW56YS9jb3JlOiBGb3JjZWZ1bCBwcmVmZXJlY25lcyBjbGVhciByZXF1ZXN0IHJlY2VpdmVkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVDbGllbnQod2FybjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBVbnRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgaWYgKHdhcm4pXHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiQGVzZmFlbnphL2NvcmU6IEZvcmNlZnVsIGNhY2hlIGNsZWFyIHJlcXVlc3QgcmVjZWl2ZWRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJDYWNoZVNlcnZlcigpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9DYWNoZV9DbGVhckFsbENhY2hlcykuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckFsbCgpIHtcclxuICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBVbnRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQ2FjaGVfQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY2VDbGVhckNvbm5lY3RlZENsaWVudEFzc2V0cyhtdW86ICdjYWNoZScgfCAncHJlZmVyZW5jZXMnKSB7XHJcbiAgICAgICAgaWYgKG11byA9PSBcImNhY2hlXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQ2FjaGVfQ2xlYXJBbGxDbGllbnRzQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG11byA9PSBcInByZWZlcmVuY2VzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQ2FjaGVfQ2xlYXJBbGxDbGllbnRzUHJlZmVyZW5jZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIikpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuY2xlYXJNZXNzYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBsZXRlZEpvYkNsaWNrZWQoam9iOiBBcHBsaWNhdGlvbkpvYikge1xyXG4gICAgICAgIHRoaXMuY2pyU2VydmljZS5yZWRpcmVjdChqb2IpO1xyXG4gICAgfVxyXG59IiwiPG5hdiAjbmF2YmFyIGNsYXNzPVwibmF2IGVudW1hLW5hdmJhclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgPCEtLSBDb2xsYXBzZSBtZW7DuSBhIHNpbmlzdHJhIC0tPlxyXG4gICAgICAgIDxkaXY+PGEgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIGNsYXNzPVwiZmFyIGZhLWJhcnMgbmF2LWljb24gYXBwLXBhZGRpbmctbGVmdC0xNVwiIHN0eWxlPVwicGFkZGluZy10b3A6IDlweDtcIj48L2E+PC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQnJlYWRjcnVtYiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBhZGRpbmctbGVmdC0xNVwiIHN0eWxlPVwicGFkZGluZy10b3A6IDhweDtcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bzsgZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgPCEtLU5vdGlmaWNhdGlvbnMgKEpvYnMpLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTE1XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9zdGF0ZS5qb2JzSW5Qcm9ncmVzcyA+IDBcIiBjbGFzcz1cImZhLWJlYXQtZmFkZSBuYXYtam9icy1pY29uLW5vdGlmaWNhdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGEgW2NsYXNzLmZhLXNoYWtlXT1cIl9zdGF0ZS5qb2JzSW5Qcm9ncmVzcyA+IDBcIiBjbGFzcz1cImZhciBmYS1iZWxsIG1vZHVsZS1uYXYtbWVudS1saW5rIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIHN0eWxlPVwiLS1mYS1hbmltYXRpb24tZHVyYXRpb246IDNzOyAtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XCIgZHJvcGRvd25Ub2dnbGU+PC9hPlxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJuYXYtam9icy1tZW51XCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IGF1dG87XCI+e3snSm9iIEFwcGxpY2F0aXZpJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbWFyZ2luLXJpZ2h0LTVcIj57eydOb3RpZmljaGUnIHwgbG9jYWxpemUgOiBsY319Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXQtbWluLTJcIj48bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cIl9zdGF0ZS5ub3RpZnlPbkNvbXBsZXRlZEpvYnNcIiAoY2xpY2spPVwiY2xlYXJNZXNzYWdlcygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfc3RhdGUuYWxsSm9icy5sZW5ndGggPT0gMFwiIGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0LWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7XCJBbCBtb21lbnRvIG5vbiBjJ8OoIG51bGxhIGluIGVzZWN1emlvbmVcIiB8IGxvY2FsaXplIDogbGN9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgam9iIG9mIF9zdGF0ZS5hbGxKb2JzOyBsZXQgbGFzdCA9IGxhc3RcIiBbY2xhc3MuYXBwLW1hcmdpbi1ib3R0b20tNV09XCIhbGFzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiIHRpdGxlPVwie3tqb2IuZGVzY3JpcHRpb259fVwiIGNsYXNzPVwiYXBwLWxpbmsgYXBwLW5vLXNlbGVjdGlvbiBhcHAtaW5saW5lIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNvbXBsZXRlZEpvYkNsaWNrZWQoam9iKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPnt7am9iLnNtYWxsZGVzY3JpcHRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIj57e2pvYi5wZXJjZW50YWdlfX0lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInB1bGwtcmlnaHRcIiAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIj57eydDb21wbGV0ZWQnIHwgbG9jYWxpemUgOiBsY319PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cImpvYi5wZXJjZW50YWdlXCIgW3N0cmlwZWRdPVwidHJ1ZVwiIFthbmltYXRlXT1cInRydWVcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9ncmVzc2JhciAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIiB0eXBlPVwic3VjY2Vzc1wiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cIjEwMFwiIFtzdHJpcGVkXT1cImZhbHNlXCIgW2FuaW1hdGVdPVwiZmFsc2VcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDwhLS1PdGhlciBNb2R1bGVzLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTE1XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmYXIgZmEtY3ViZXMgbW9kdWxlLW5hdi1tZW51LWxpbmsgZHJvcGRvd24tdG9nZ2xlIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImdvVG9EYXNoYm9hcmQoKVwiPjwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tUXVpY2sgQWN0aW9ucy0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xNVwiIGRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20gcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZmFyIGZhLWZvbGRlci1nZWFyIG1vZHVsZS1uYXYtbWVudS1saW5rIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0LXVzZXIgYXBwLW5vLXBhZGRpbmdcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImQtZmxleCBkcm9wZG93bi10aXRsZS1iZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdGl0bGVcIj5HZXN0aXNjaSBDYWNoZSBVdGVudGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRyb3Bkb3duLXRvcFwiPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhclVzZXJQcmVmZXJlbmNlcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXVzZXItdGltZXMgYXBwLW1hcmdpbi1yaWdodC0xMFwiPjwvaT57eydSaXB1bGlzY2kgbGUgUHJlZmVyZW56ZSBVdGVudGUnIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtYnJvb20td2lkZSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCI+PC9pPnt7J1JpcHVsaXNjaSBsYSBDYWNoZScgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqYWM9XCInUjpKYWNlIEFkbWluJ1wiIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJmb3JjZUNsZWFyQ29ubmVjdGVkQ2xpZW50QXNzZXRzKCdjYWNoZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWJyb29tLXdpZGUgYXBwLW1hcmdpbi1yaWdodC0xMFwiPjwvaT57eydSaXB1bGlzY2kgbGEgQ2FjaGUgZGkgdHV0dGknIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKmFjPVwiJ1I6SmFjZSBBZG1pbidcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiZm9yY2VDbGVhckNvbm5lY3RlZENsaWVudEFzc2V0cygncHJlZmVyZW5jZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1icm9vbS13aWRlIGFwcC1tYXJnaW4tcmlnaHQtMTBcIj48L2k+e3snUmlwdWxpc2NpIGxlIFByZWZlcmVuemUgZGkgdHV0dGknIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkcm9wZG93bi1ib3RcIj48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDwhLS1QdW50aSBkaSBlc3RlbnNpb25lIHBlciBDYWxlbmRhciwgQ2hhdHJvb20gZSBjaGkgcGnDuSBuZSBoYSBwacO5IG5lIG1ldHRhLi4uLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTE1XCIgKm5nRm9yPVwibGV0IGNvbXAgb2YgZXh0ZW5zaW9uQ29tcG9uZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRIb3N0XT1cImNvbXBcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLUFtYmllbnRlLS0+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1lbnZpcm9ubWVudCBhcHAtbm8tc2VsZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydEZXYnLCAyXS5pbmNsdWRlcyhhcHBsaWNhdGlvbkVudmlyb25tZW50KVwiPnt7J0FtYmllbnRlIGRpIFN2aWx1cHBvJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlsnRGV2QScsIDNdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8gQScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ0RldkInLCA0XS5pbmNsdWRlcyhhcHBsaWNhdGlvbkVudmlyb25tZW50KVwiPnt7J0FtYmllbnRlIGRpIFN2aWx1cHBvIEInIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydTdGFnZScsIDVdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ1N0YWdlQScsIDZdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlsnUHJvZCcsIDFdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgUHJvZHV6aW9uZScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS1EZWJ1Z2dpbmcgcnVvbGkgZSBwZXJtZXNzaS0tPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXY+UGVybWlzc2lvbnM6PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2YgQ3VycmVudElkZW50aXR5LlBlcm1pc3Npb25zXCI+e3twfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5Sb2xlczo8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBDdXJyZW50SWRlbnRpdHkuUm9sZXNcIj57e3J9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmF2PlxyXG5cclxuPCEtLSBUZW1wbGF0ZSBwZXIgbCdpY29uYSBkZWxsJ3V0ZW50ZSAtLT5cclxuPG5nLXRlbXBsYXRlICN1c2VySWNvbiBsZXQtY29udGV4dD5cclxuICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL3VzZXJzL3VzZXIuanBnJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZ1wiPlxyXG4gICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2NocmlzdG1hcy5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiIFtzdHlsZS5yaWdodC5weF09XCJjb250ZXh0Py5yaWdodCB8fCB1bmRlZmluZWRcIiAqbmdJZj1cIl9zdGF0ZS5jaHJpc3RtYXNUaW1lXCI+XHJcbiAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy9ldmVudHMvaGFsbG93ZWVuLnBuZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWcgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbnRleHQ/LnJpZ2h0IHx8IHVuZGVmaW5lZFwiICpuZ0lmPVwiX3N0YXRlLmhhbGxvd2VlblRpbWVcIj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVGVtcGxhdGUgcGVyIGxlIGluZm9ybWFpem9uaSBkaSBkZWJ1ZzogQW1iaWVudGUsIHJ1b2xpLCBwZXJtZXNzaSBlY2MgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGVidWdJbmZvcz5cclxuICAgIDxkaXY+e3tDdXJyZW50SWRlbnRpdHk/LkZ1bGxOYW1lfX0gLSAoe3tDdXJyZW50SWRlbnRpdHk/LlRlbmFudE5hbWV9fSk8L2Rpdj5cclxuICAgIDxkaXYgaGlkZGVuPnt7YXBwbGljYXRpb25FbnZpcm9ubWVudH19PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbS1jZW50ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydEZXYnLCAyXS5pbmNsdWRlcyhhcHBsaWNhdGlvbkVudmlyb25tZW50KVwiPnt7J0FtYmllbnRlIGRpIFN2aWx1cHBvJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ0RldkEnLCAzXS5pbmNsdWRlcyhhcHBsaWNhdGlvbkVudmlyb25tZW50KVwiPnt7J0FtYmllbnRlIGRpIFN2aWx1cHBvIEEnIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlsnRGV2QicsIDRdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8gQicgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydTdGFnZScsIDVdLmluY2x1ZGVzKGFwcGxpY2F0aW9uRW52aXJvbm1lbnQpXCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydTdGFnZUEnLCA2XS5pbmNsdWRlcyhhcHBsaWNhdGlvbkVudmlyb25tZW50KVwiPnt7J0FtYmllbnRlIGRpIFN0YWdpbmcgQScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydQcm9kJywgMV0uaW5jbHVkZXMoYXBwbGljYXRpb25FbnZpcm9ubWVudClcIj57eydBbWJpZW50ZSBkaSBQcm9kdXppb25lJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXY+UGVybWlzc2lvbnM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBDdXJyZW50SWRlbnRpdHkuUGVybWlzc2lvbnNcIj57e3B9fTwvZGl2PlxyXG4gICAgICAgIDxkaXY+Um9sZXM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBDdXJyZW50SWRlbnRpdHkuUm9sZXNcIj57e3J9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|