@onecx/shell-core 4.43.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,13 +17,13 @@ export class GlobalErrorComponent {
17
17
  reload() {
18
18
  window.location.reload();
19
19
  }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GlobalErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: GlobalErrorComponent, selector: "ocx-shell-error", inputs: { errCode: "errCode" }, ngImport: i0, template: "<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n", styles: [".pages-body{height:100vh}.pages-body .topbar{box-shadow:0 2px 5px #00000042;background-color:#1565c0;z-index:100}.pages-body .topbar .topbar-left img{height:2rem}.pages-body .topbar .p-button.p-button-text.p-button-plain{color:#fff}.pages-body .pages-panel{text-align:center;z-index:200}.pages-body .pages-panel.card{border:1.5px solid var(--divider-color);border-radius:6px}.pages-body .pages-panel.card img{width:100%}.pages-body .pages-panel.card>.card{background-color:var(--content-alt-bg-color)}.pages-body .pages-panel .pages-header{margin-top:-3rem;color:var(--primary-color-text);border:1.5px solid var(--divider-color);border-radius:4px;margin-left:auto;margin-right:auto}.pages-body .pages-panel .pages-header h2{margin:0}.pages-body .pages-panel .pages-detail{color:var(--text-secondary-color)}.pages-body.error-page{background-size:cover;background-color:var(--primary-color)}.pages-body.error-page .pages-panel .pages-header{background:#d81b60}.pages-body.notfound-page{background-size:cover}.pages-body.notfound-page .pages-panel .pages-header{background:#455a64}.pages-body.accessdenied-page{background-size:cover}.pages-body.accessdenied-page .pages-panel .pages-header{background:#fb8c00}@media screen and (max-width: 768px){.pages-body.contact-page .pages-panel{padding-bottom:10em}.pages-body.contact-page .pages-panel .p-button{width:100%}.pages-body.contact-page .pages-panel .card .right-panel{text-align:center}}\n"], dependencies: [{ kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.Ripple, selector: "[pRipple]" }] }); }
20
22
  }
21
- GlobalErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GlobalErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
22
- GlobalErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GlobalErrorComponent, selector: "ocx-shell-error", inputs: { errCode: "errCode" }, ngImport: i0, template: "<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n", styles: [".pages-body{height:100vh}.pages-body .topbar{box-shadow:0 2px 5px #00000042;background-color:#1565c0;z-index:100}.pages-body .topbar .topbar-left img{height:2rem}.pages-body .topbar .p-button.p-button-text.p-button-plain{color:#fff}.pages-body .pages-panel{text-align:center;z-index:200}.pages-body .pages-panel.card{border:1.5px solid var(--divider-color);border-radius:6px}.pages-body .pages-panel.card img{width:100%}.pages-body .pages-panel.card>.card{background-color:var(--content-alt-bg-color)}.pages-body .pages-panel .pages-header{margin-top:-3rem;color:var(--primary-color-text);border:1.5px solid var(--divider-color);border-radius:4px;margin-left:auto;margin-right:auto}.pages-body .pages-panel .pages-header h2{margin:0}.pages-body .pages-panel .pages-detail{color:var(--text-secondary-color)}.pages-body.error-page{background-size:cover;background-color:var(--primary-color)}.pages-body.error-page .pages-panel .pages-header{background:#d81b60}.pages-body.notfound-page{background-size:cover}.pages-body.notfound-page .pages-panel .pages-header{background:#455a64}.pages-body.accessdenied-page{background-size:cover}.pages-body.accessdenied-page .pages-panel .pages-header{background:#fb8c00}@media screen and (max-width: 768px){.pages-body.contact-page .pages-panel{padding-bottom:10em}.pages-body.contact-page .pages-panel .p-button{width:100%}.pages-body.contact-page .pages-panel .card .right-panel{text-align:center}}\n"], dependencies: [{ kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i3.Ripple, selector: "[pRipple]" }] });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GlobalErrorComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GlobalErrorComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'ocx-shell-error', template: "<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n", styles: [".pages-body{height:100vh}.pages-body .topbar{box-shadow:0 2px 5px #00000042;background-color:#1565c0;z-index:100}.pages-body .topbar .topbar-left img{height:2rem}.pages-body .topbar .p-button.p-button-text.p-button-plain{color:#fff}.pages-body .pages-panel{text-align:center;z-index:200}.pages-body .pages-panel.card{border:1.5px solid var(--divider-color);border-radius:6px}.pages-body .pages-panel.card img{width:100%}.pages-body .pages-panel.card>.card{background-color:var(--content-alt-bg-color)}.pages-body .pages-panel .pages-header{margin-top:-3rem;color:var(--primary-color-text);border:1.5px solid var(--divider-color);border-radius:4px;margin-left:auto;margin-right:auto}.pages-body .pages-panel .pages-header h2{margin:0}.pages-body .pages-panel .pages-detail{color:var(--text-secondary-color)}.pages-body.error-page{background-size:cover;background-color:var(--primary-color)}.pages-body.error-page .pages-panel .pages-header{background:#d81b60}.pages-body.notfound-page{background-size:cover}.pages-body.notfound-page .pages-panel .pages-header{background:#455a64}.pages-body.accessdenied-page{background-size:cover}.pages-body.accessdenied-page .pages-panel .pages-header{background:#fb8c00}@media screen and (max-width: 768px){.pages-body.contact-page .pages-panel{padding-bottom:10em}.pages-body.contact-page .pages-panel .p-button{width:100%}.pages-body.contact-page .pages-panel .card .right-panel{text-align:center}}\n"] }]
26
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }]; }, propDecorators: { errCode: [{
26
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }], propDecorators: { errCode: [{
27
27
  type: Input
28
28
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hlbGwtY29yZS9zcmMvbGliL2NvbXBvbmVudHMvZXJyb3ItY29tcG9uZW50L2dsb2JhbC1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWNvbXBvbmVudC9nbG9iYWwtZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7QUFPeEQsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixNQUFjLEVBQVUsS0FBcUI7UUFBN0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxvQkFBb0IsQ0FBQTtRQUNuRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFBO0lBQ3ZFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDOztrSEFoQlUsb0JBQW9CO3NHQUFwQixvQkFBb0IsdUZDUmpDLDBqQkFjQTs0RkROYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzBIQU0zQixPQUFPO3NCQUROLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1zaGVsbC1lcnJvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9nbG9iYWwtZXJyb3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nbG9iYWwtZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2xvYmFsRXJyb3JDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBlcnJDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgYmFja1VybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB0aGlzLmVyckNvZGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdlcnInKSB8fCAnRTEwMDFfRkFJTEVEX1NUQVJUJ1xuICAgIHRoaXMuYmFja1VybCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3JldHVybicpIHx8ICcvJ1xuICB9XG5cbiAgb25Hb0JhY2soKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmJhY2tVcmwpXG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYWdlcy1ib2R5IGVycm9yLXBhZ2UgZmxleCBmbGV4LWNvbHVtblwiPlxuICA8ZGl2IGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXIgbXQtYXV0byBtYi1hdXRvXCI+XG4gICAgPGRpdiBjbGFzcz1cInBhZ2VzLXBhbmVsIGNhcmQgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2VzLWhlYWRlciBweC0zIHB5LTFcIj5cbiAgICAgICAgPGgyPkVSUk9SPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtMyBweC02XCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9lcnJvci5wbmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFnZXMtZGV0YWlsIHBiLTZcIj57e2VyckNvZGV9fTwvZGl2PlxuICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGxhYmVsPVwiVHJ5IEFnYWluXCIgKGNsaWNrKT1cInJlbG9hZCgpXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hlbGwtY29yZS9zcmMvbGliL2NvbXBvbmVudHMvZXJyb3ItY29tcG9uZW50L2dsb2JhbC1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWNvbXBvbmVudC9nbG9iYWwtZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7QUFPeEQsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixNQUFjLEVBQVUsS0FBcUI7UUFBN0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxvQkFBb0IsQ0FBQTtRQUNuRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFBO0lBQ3ZFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDOzhHQWhCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1RkNSakMsMGpCQWNBOzsyRkROYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCO3dHQU0zQixPQUFPO3NCQUROLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1zaGVsbC1lcnJvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9nbG9iYWwtZXJyb3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nbG9iYWwtZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2xvYmFsRXJyb3JDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBlcnJDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgYmFja1VybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB0aGlzLmVyckNvZGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdlcnInKSB8fCAnRTEwMDFfRkFJTEVEX1NUQVJUJ1xuICAgIHRoaXMuYmFja1VybCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3JldHVybicpIHx8ICcvJ1xuICB9XG5cbiAgb25Hb0JhY2soKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmJhY2tVcmwpXG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYWdlcy1ib2R5IGVycm9yLXBhZ2UgZmxleCBmbGV4LWNvbHVtblwiPlxuICA8ZGl2IGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXIgbXQtYXV0byBtYi1hdXRvXCI+XG4gICAgPGRpdiBjbGFzcz1cInBhZ2VzLXBhbmVsIGNhcmQgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2VzLWhlYWRlciBweC0zIHB5LTFcIj5cbiAgICAgICAgPGgyPkVSUk9SPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtMyBweC02XCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9lcnJvci5wbmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFnZXMtZGV0YWlsIHBiLTZcIj57e2VyckNvZGV9fTwvZGl2PlxuICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGxhYmVsPVwiVHJ5IEFnYWluXCIgKGNsaWNrKT1cInJlbG9hZCgpXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { Component } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { AppStateService, ConfigurationService, CONFIG_KEY, ThemeService } from '@onecx/angular-integration-interface';
4
+ import { ImageLogoUrlUtils } from '@onecx/portal-integration-angular';
5
+ import { combineLatest, concat, map, of, withLatestFrom } from 'rxjs';
6
+ import { SHELL_BFF_PREFIX } from '../../model/constants';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@onecx/angular-integration-interface";
9
+ import * as i2 from "@angular/router";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@onecx/angular-remote-components";
12
+ import * as i5 from "@onecx/angular-accelerator";
13
+ export class PortalFooterComponent {
14
+ constructor(configurationService, router, appState, themeService) {
15
+ this.configurationService = configurationService;
16
+ this.router = router;
17
+ this.appState = appState;
18
+ this.themeService = themeService;
19
+ this.versionInfo$ = this.appState.currentMfe$.pipe(withLatestFrom(this.appState.currentPortal$.asObservable()), map(([mfe, portal]) => {
20
+ const mfeInfoVersion = mfe?.version || '';
21
+ const mfeName = mfe?.displayName;
22
+ const hostVersion = this.configurationService.getProperty(CONFIG_KEY.APP_VERSION) || 'DEV-LOCAL';
23
+ const mfInfoText = mfeName ? `MF ${mfeName} v${mfeInfoVersion}` : '';
24
+ return `Portal: ${portal.portalName} v${hostVersion} ${mfInfoText}`;
25
+ }));
26
+ this.logoUrl$ = combineLatest([
27
+ this.themeService.currentTheme$.asObservable(),
28
+ this.appState.currentWorkspace$.asObservable(),
29
+ ]).pipe(map(([theme, portalData]) => ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portalData.logoUrl)));
30
+ }
31
+ ngOnInit() {
32
+ this.copyrightMsg$ = concat(of('Capgemini. All rights reserved.'), this.appState.currentWorkspace$.pipe(map((portalData) => {
33
+ if (!(portalData.footerLabel === '' ||
34
+ portalData.footerLabel === 'string' ||
35
+ portalData.footerLabel === undefined)) {
36
+ return portalData.companyName || portalData.footerLabel || 'All rights reserved.';
37
+ }
38
+ return '';
39
+ })));
40
+ }
41
+ onErrorHandleSrc() {
42
+ this.logoUrl$ = of(undefined);
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PortalFooterComponent, deps: [{ token: i1.ConfigurationService }, { token: i2.Router }, { token: i1.AppStateService }, { token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
45
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: PortalFooterComponent, selector: "ocx-shell-footer", ngImport: i0, template: "<div class=\"ml-3 py-2 lg:ml-5 flex flex-wrap align-items-center justify-content-between row-gap-1\">\n <div class=\"flex flex-wrap align-items-center justify-content-start gap-3 row-gap-1\">\n <img\n *ngIf=\"logoUrl$ | async\"\n alt=\"logo\"\n class=\"max-h-1rem\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n (error)=\"onErrorHandleSrc()\"\n />\n <div class=\"flex-none text-sm\">&copy; {{copyrightMsg$ | async}}</div>\n <ocx-slot name=\"onecx-shell-footer\"></ocx-slot>\n </div>\n <div class=\"mr-5 text-sm\">{{versionInfo$ | async}}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "directive", type: i5.SrcDirective, selector: "[ocxSrc]", inputs: ["ocxSrc"], outputs: ["error"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PortalFooterComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'ocx-shell-footer', template: "<div class=\"ml-3 py-2 lg:ml-5 flex flex-wrap align-items-center justify-content-between row-gap-1\">\n <div class=\"flex flex-wrap align-items-center justify-content-start gap-3 row-gap-1\">\n <img\n *ngIf=\"logoUrl$ | async\"\n alt=\"logo\"\n class=\"max-h-1rem\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n (error)=\"onErrorHandleSrc()\"\n />\n <div class=\"flex-none text-sm\">&copy; {{copyrightMsg$ | async}}</div>\n <ocx-slot name=\"onecx-shell-footer\"></ocx-slot>\n </div>\n <div class=\"mr-5 text-sm\">{{versionInfo$ | async}}</div>\n</div>\n" }]
50
+ }], ctorParameters: () => [{ type: i1.ConfigurationService }, { type: i2.Router }, { type: i1.AppStateService }, { type: i1.ThemeService }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3BvcnRhbC1mb290ZXIvcG9ydGFsLWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3BvcnRhbC1mb290ZXIvcG9ydGFsLWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN0SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNqRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTs7Ozs7OztBQU94RCxNQUFNLE9BQU8scUJBQXFCO0lBS2hDLFlBQ1Usb0JBQTBDLEVBQzNDLE1BQWMsRUFDYixRQUF5QixFQUN6QixZQUEwQjtRQUgxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUVsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDaEQsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQzNELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUE7WUFDekMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLFdBQVcsQ0FBQTtZQUNoQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLENBQUE7WUFDaEcsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sS0FBSyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1lBQ3BFLE9BQU8sV0FBVyxNQUFNLENBQUMsVUFBVSxLQUFLLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQUNyRSxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO1NBQy9DLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNySCxDQUFBO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FDekIsRUFBRSxDQUFDLGlDQUFpQyxDQUFDLEVBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQixJQUNFLENBQUMsQ0FDQyxVQUFVLENBQUMsV0FBVyxLQUFLLEVBQUU7Z0JBQzdCLFVBQVUsQ0FBQyxXQUFXLEtBQUssUUFBUTtnQkFDbkMsVUFBVSxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQ3JDLEVBQ0QsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLElBQUksVUFBVSxDQUFDLFdBQVcsSUFBSSxzQkFBc0IsQ0FBQTtZQUNuRixDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7OEdBbkRVLHFCQUFxQjtrR0FBckIscUJBQXFCLHdEQ1psQywra0JBY0E7OzJGREZhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIENvbmZpZ3VyYXRpb25TZXJ2aWNlLCBDT05GSUdfS0VZLCBUaGVtZVNlcnZpY2UgfSBmcm9tICdAb25lY3gvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBJbWFnZUxvZ29VcmxVdGlscyB9IGZyb20gJ0BvbmVjeC9wb3J0YWwtaW50ZWdyYXRpb24tYW5ndWxhcidcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGNvbmNhdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgU0hFTExfQkZGX1BSRUZJWCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbnN0YW50cydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LXNoZWxsLWZvb3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3J0YWwtZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcG9ydGFsLWZvb3Rlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQb3J0YWxGb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBsb2dvVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+XG4gIGNvcHlyaWdodE1zZyQ6IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZFxuICB2ZXJzaW9uSW5mbyQ6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLnZlcnNpb25JbmZvJCA9IHRoaXMuYXBwU3RhdGUuY3VycmVudE1mZSQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuYXBwU3RhdGUuY3VycmVudFBvcnRhbCQuYXNPYnNlcnZhYmxlKCkpLFxuICAgICAgbWFwKChbbWZlLCBwb3J0YWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1mZUluZm9WZXJzaW9uID0gbWZlPy52ZXJzaW9uIHx8ICcnXG4gICAgICAgIGNvbnN0IG1mZU5hbWUgPSBtZmU/LmRpc3BsYXlOYW1lXG4gICAgICAgIGNvbnN0IGhvc3RWZXJzaW9uID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRQcm9wZXJ0eShDT05GSUdfS0VZLkFQUF9WRVJTSU9OKSB8fCAnREVWLUxPQ0FMJ1xuICAgICAgICBjb25zdCBtZkluZm9UZXh0ID0gbWZlTmFtZSA/IGBNRiAke21mZU5hbWV9IHYke21mZUluZm9WZXJzaW9ufWAgOiAnJ1xuICAgICAgICByZXR1cm4gYFBvcnRhbDogJHtwb3J0YWwucG9ydGFsTmFtZX0gdiR7aG9zdFZlcnNpb259ICR7bWZJbmZvVGV4dH1gXG4gICAgICB9KVxuICAgIClcbiAgICB0aGlzLmxvZ29VcmwkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnRoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgdGhpcy5hcHBTdGF0ZS5jdXJyZW50V29ya3NwYWNlJC5hc09ic2VydmFibGUoKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbdGhlbWUsIHBvcnRhbERhdGFdKSA9PiBJbWFnZUxvZ29VcmxVdGlscy5jcmVhdGVMb2dvVXJsKFNIRUxMX0JGRl9QUkVGSVgsIHRoZW1lLmxvZ29VcmwgfHwgcG9ydGFsRGF0YS5sb2dvVXJsKSlcbiAgICApXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvcHlyaWdodE1zZyQgPSBjb25jYXQoXG4gICAgICBvZignQ2FwZ2VtaW5pLiBBbGwgcmlnaHRzIHJlc2VydmVkLicpLFxuICAgICAgdGhpcy5hcHBTdGF0ZS5jdXJyZW50V29ya3NwYWNlJC5waXBlKFxuICAgICAgICBtYXAoKHBvcnRhbERhdGEpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICBwb3J0YWxEYXRhLmZvb3RlckxhYmVsID09PSAnJyB8fFxuICAgICAgICAgICAgICBwb3J0YWxEYXRhLmZvb3RlckxhYmVsID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICBwb3J0YWxEYXRhLmZvb3RlckxhYmVsID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBwb3J0YWxEYXRhLmNvbXBhbnlOYW1lIHx8IHBvcnRhbERhdGEuZm9vdGVyTGFiZWwgfHwgJ0FsbCByaWdodHMgcmVzZXJ2ZWQuJ1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gJydcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgb25FcnJvckhhbmRsZVNyYygpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ29VcmwkID0gb2YodW5kZWZpbmVkKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWwtMyBweS0yIGxnOm1sLTUgZmxleCBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHJvdy1nYXAtMVwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydCBnYXAtMyByb3ctZ2FwLTFcIj5cbiAgICA8aW1nXG4gICAgICAqbmdJZj1cImxvZ29VcmwkIHwgYXN5bmNcIlxuICAgICAgYWx0PVwibG9nb1wiXG4gICAgICBjbGFzcz1cIm1heC1oLTFyZW1cIlxuICAgICAgW29jeFNyY109XCIobG9nb1VybCQgfCBhc3luYykgPz8gJydcIlxuICAgICAgKGVycm9yKT1cIm9uRXJyb3JIYW5kbGVTcmMoKVwiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1ub25lIHRleHQtc21cIj4mY29weTsge3tjb3B5cmlnaHRNc2ckIHwgYXN5bmN9fTwvZGl2PlxuICAgIDxvY3gtc2xvdCBuYW1lPVwib25lY3gtc2hlbGwtZm9vdGVyXCI+PC9vY3gtc2xvdD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtci01IHRleHQtc21cIj57e3ZlcnNpb25JbmZvJCB8IGFzeW5jfX08L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,74 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { animate, style, transition, trigger } from '@angular/animations';
3
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
4
+ import { UntilDestroy } from '@ngneat/until-destroy';
5
+ import { AppStateService, ThemeService } from '@onecx/angular-integration-interface';
6
+ import { ImageLogoUrlUtils } from '@onecx/portal-integration-angular';
7
+ import { combineLatest, map } from 'rxjs';
8
+ import { SHELL_BFF_PREFIX } from '../../model/constants';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@onecx/angular-integration-interface";
11
+ import * as i2 from "@angular/common";
12
+ import * as i3 from "@onecx/angular-remote-components";
13
+ import * as i4 from "@onecx/angular-accelerator";
14
+ import * as i5 from "primeng/skeleton";
15
+ import * as i6 from "primeng/ripple";
16
+ let HeaderComponent = class HeaderComponent {
17
+ constructor(themeService, appStateService) {
18
+ this.themeService = themeService;
19
+ this.appStateService = appStateService;
20
+ this.menuExpanded = false;
21
+ this.fallbackImg = false;
22
+ this.fullPortalLayout = true;
23
+ this.homeNavUrl = '/';
24
+ this.homeNavTitle = 'Home';
25
+ this.menuButtonClick = new EventEmitter();
26
+ this.logoUrl$ = combineLatest([
27
+ this.themeService.currentTheme$.asObservable(),
28
+ this.appStateService.currentWorkspace$.asObservable(),
29
+ ]).pipe(map(([theme, portal]) => {
30
+ return ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portal.logoUrl);
31
+ }));
32
+ }
33
+ onMenuButtonClick(e) {
34
+ this.menuButtonClick.emit(e);
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HeaderComponent, deps: [{ token: i1.ThemeService }, { token: i1.AppStateService }], target: i0.ɵɵFactoryTarget.Component }); }
37
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: HeaderComponent, selector: "ocx-shell-header", inputs: { menuButtonTitle: "menuButtonTitle", fullPortalLayout: "fullPortalLayout", homeNavUrl: "homeNavUrl", homeNavTitle: "homeNavTitle" }, outputs: { menuButtonClick: "menuButtonClick" }, ngImport: i0, template: "<div class=\"layout-topbar shadow-4\" id=\"header\" role=\"banner\">\n <div class=\"layout-topbar-left\">\n <a class=\"layout-topbar-logo\">\n <img\n id=\"app-logo\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n alt=\"Logo\"\n style=\"max-height: 100%; max-width: 100%\"\n *ngIf=\"(logoUrl$ | async) && !fallbackImg\"\n (error)=\"fallbackImg=true\"\n />\n <svg *ngIf=\"((logoUrl$ | async) === null) || fallbackImg\" width=\"160\" viewBox=\"0 0 283 72\" class=\"default-logo\">\n <defs id=\"SvgjsDefs4962\"></defs>\n <g\n id=\"SvgjsG4963\"\n featurekey=\"symbolFeature-0\"\n transform=\"matrix(0.7555406501686023,0,0,0.7555406501686023,-4.883814572467361,-0.26595028490140254)\"\n >\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M88.54,46.256L9.464,0.616c-0.616-0.352-1.384-0.352-2,0c-0.62,0.36-1,1.02-1,1.736v91.296c0,0.716,0.38,1.375,1,1.731 c0.308,0.185,0.656,0.269,1,0.269c0.344,0,0.692-0.084,1-0.269L88.54,49.729c0.616-0.36,1-1.021,1-1.736 C89.54,47.276,89.152,46.616,88.54,46.256z M60.08,49.771L21.388,69.805c-0.288,0.147-0.604,0.223-0.92,0.223 c-0.36,0-0.72-0.092-1.04-0.287c-0.596-0.364-0.96-1.008-0.96-1.713v-40.06c0-0.696,0.364-1.344,0.96-1.712 c0.596-0.36,1.336-0.392,1.96-0.068l38.696,20.028c0.664,0.344,1.084,1.032,1.084,1.772C61.164,48.74,60.744,49.428,60.08,49.771z\"\n ></path>\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.464,64.744l32.345-16.748l-32.345-16.74V64.744z\"></path>\n </g>\n <g\n id=\"SvgjsG4964\"\n featurekey=\"nameFeature-0\"\n transform=\"matrix(1.0207331753701396,0,0,1.0207331753701396,81.5644404108694,15.72408377414908)\"\n >\n <path\n d=\"M17.344 32.6562 c-0.78125 -0.15625 -1.5105 -0.3907 -2.1876 -0.7032 c-1.4584 -0.67711 -2.7344 -1.6146 -3.8281 -2.8125 c-1.0416 -1.0938 -1.875 -2.4479 -2.5 -4.0625 c-0.57289 -1.6146 -0.85938 -3.2552 -0.85938 -4.9219 l0 -0.15625 l0 -0.23438 c0 -1.7188 0.28648 -3.3854 0.85938 -5 c0.67711 -1.6666 1.5105 -2.9948 2.5001 -3.9844 c1.0416 -1.1979 2.2916 -2.1094 3.75 -2.7344 c0.88539 -0.41664 1.6406 -0.67703 2.2656 -0.78117 l0 -5.8594 c-1.8229 0.26039 -3.4375 0.70313 -4.8438 1.3281 c-2.2916 0.98961 -4.2448 2.3177 -5.8594 3.9844 s-2.8906 3.6458 -3.8281 5.9374 s-1.4063 4.6875 -1.4063 7.1875 l0 0.15625 l0 0.23438 c0 2.5521 0.46875 4.948 1.4063 7.1876 c0.83336 2.2396 2.0834 4.1927 3.75 5.8594 c1.6666 1.7188 3.6198 3.0469 5.8594 3.9844 c1.4063 0.625 3.0469 1.0677 4.9219 1.3281 l0 -5.9375 z M38.594 20 l0.000076294 -0.23438 c0 -2.5521 -0.46875 -4.948 -1.4063 -7.1876 c-0.9375 -2.2916 -2.2135 -4.2708 -3.8281 -5.9374 c-1.5625 -1.6666 -3.4896 -2.9688 -5.7813 -3.9063 c-1.3021 -0.625 -2.8906 -1.0677 -4.7656 -1.3281 l0 5.9375 l0.9375 0.3125 c0.46875 0.15625 0.83336 0.28648 1.0938 0.39063 c1.4584 0.67711 2.7344 1.6146 3.8281 2.8125 c1.0416 1.0938 1.875 2.4479 2.5 4.0625 c0.57289 1.6146 0.85938 3.2552 0.85938 4.9219 l0 0.15625 l0 0.23438 c0 1.7188 -0.28648 3.3854 -0.85938 5 c-0.67711 1.6666 -1.5105 2.9948 -2.5001 3.9844 c-1.0416 1.1979 -2.2916 2.1094 -3.75 2.7344 c-0.67711 0.3125 -1.3802 0.54688 -2.1094 0.70313 l0 5.9375 c1.5625 -0.20836 3.125 -0.65109 4.6875 -1.3282 c2.1354 -0.88539 4.0885 -2.2135 5.8594 -3.9844 c1.7188 -1.8229 2.9948 -3.802 3.8281 -5.9374 c0.9375 -2.2916 1.4063 -4.6875 1.4063 -7.1875 l0 -0.15625 z M43.8281 38.5937 l6.4844 0 l0 -19.922 l-6.4844 -9.1406 l0 29.063 z M69.76599999999999 1.4059999999999988 l0 25.703 l-18.359 -25.703 l-7.0313 0 l26.406 37.188 l5.3906 0 l0 -37.188 l-6.4063 0 z M86.0938 1.4059999999999988 l27.813 0 l0 5.9375 l-27.813 0 l0 -5.9375 z M86.0938 32.6562 l27.734 0 l0 5.9375 l-27.734 0 l0 -5.9375 z M86.0938 16.875 l25.078 0 l0 5.8594 l-25.078 0 l0 -5.8594 z M127.2656 12.5 c0.9375 -2.2916 2.2916 -4.2447 4.0624 -5.8593 c1.6146 -1.6146 3.698 -2.9167 6.2501 -3.9063 s5.2344 -1.4844 8.0469 -1.4844 l8.6719 0 l0 5.9375 l-8.5938 0 c-2.0313 0 -3.8281 0.33852 -5.3906 1.0156 c-1.6666 0.67711 -3.0208 1.5625 -4.0624 2.6563 c-1.0938 1.0416 -1.9791 2.3958 -2.6563 4.0624 c-0.625 1.5104 -0.9375 3.2031 -0.9375 5.0781 s0.3125 3.5677 0.9375 5.0781 c0.625 1.5625 1.5104 2.9166 2.6563 4.0625 c1.0416 1.0416 2.3958 1.901 4.0624 2.5781 c1.6666 0.625 3.4635 0.9375 5.3906 0.9375 l8.5938 0 l0 5.9375 l-8.6719 0 c-2.9166 0 -5.5729 -0.46875 -7.9688 -1.4063 c-2.5 -1.0416 -4.6094 -2.3698 -6.3281 -3.9844 c-1.7709 -1.6666 -3.125 -3.6458 -4.0625 -5.9374 c-0.98961 -2.3959 -1.4844 -4.8438 -1.4844 -7.3438 c0 -2.6563 0.49477 -5.1302 1.4844 -7.4219 z M176.484 29.375 l3.5156 -4.6875 l-0.078125 -0.15625 z M196.875 1.4059999999999988 l-7.5 0 l-9.2969 13.359 l-9.2188 -13.359 l-7.7344 0 l13.047 18.281 l-13.516 18.906 l8.3594 0 z M197.344 38.5937 l-10.313 -14.609 l-3.9063 5.2344 l6.5625 9.375 l7.6563 0 z\"\n ></path>\n </g>\n </svg>\n </a>\n\n <a\n class=\"layout-menu-button shadow-6\"\n (click)=\"onMenuButtonClick($event)\"\n pRipple\n [title]=\"menuButtonTitle ?? ('OCX_HEADER.MENU_TOGGLE')\"\n >\n <i class=\"pi pi-chevron-right\"></i>\n </a>\n </div>\n\n <div class=\"layout-topbar-right\">\n <div class=\"layout-topbar-actions-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"layout-topbar-actions-right\">\n <ocx-slot name=\"onecx-shell-header-right\" class=\"layout-topbar-items\">\n <ng-template #skeleton>\n <div class=\"flex align-items-center h-full justify-content-center\" style=\"width: 56px\">\n <p-skeleton shape=\"circle\" size=\"2.5rem\" class=\"h-full flex align-items-center\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </div>\n </div>\n</div>\n", styles: [".http-progress-loader{margin-left:8px;padding-top:5px}@media screen and (max-width: 1024px){.http-progress-loader{margin-left:0;margin-right:8px}}.default-logo{color:var(--logo-color, #12abdb);fill:currentColor}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "directive", type: i4.SrcDirective, selector: "[ocxSrc]", inputs: ["ocxSrc"], outputs: ["error"] }, { kind: "component", type: i5.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
38
+ trigger('topbarActionPanelAnimation', [
39
+ transition(':enter', [
40
+ style({ opacity: 0, transform: 'scaleY(0.8)' }),
41
+ animate('.12s cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 1, transform: '*' })),
42
+ ]),
43
+ transition(':leave', [animate('.1s linear', style({ opacity: 0 }))]),
44
+ ]),
45
+ ] }); }
46
+ };
47
+ HeaderComponent = __decorate([
48
+ UntilDestroy(),
49
+ __metadata("design:paramtypes", [ThemeService, AppStateService])
50
+ ], HeaderComponent);
51
+ export { HeaderComponent };
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HeaderComponent, decorators: [{
53
+ type: Component,
54
+ args: [{ selector: 'ocx-shell-header', animations: [
55
+ trigger('topbarActionPanelAnimation', [
56
+ transition(':enter', [
57
+ style({ opacity: 0, transform: 'scaleY(0.8)' }),
58
+ animate('.12s cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 1, transform: '*' })),
59
+ ]),
60
+ transition(':leave', [animate('.1s linear', style({ opacity: 0 }))]),
61
+ ]),
62
+ ], template: "<div class=\"layout-topbar shadow-4\" id=\"header\" role=\"banner\">\n <div class=\"layout-topbar-left\">\n <a class=\"layout-topbar-logo\">\n <img\n id=\"app-logo\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n alt=\"Logo\"\n style=\"max-height: 100%; max-width: 100%\"\n *ngIf=\"(logoUrl$ | async) && !fallbackImg\"\n (error)=\"fallbackImg=true\"\n />\n <svg *ngIf=\"((logoUrl$ | async) === null) || fallbackImg\" width=\"160\" viewBox=\"0 0 283 72\" class=\"default-logo\">\n <defs id=\"SvgjsDefs4962\"></defs>\n <g\n id=\"SvgjsG4963\"\n featurekey=\"symbolFeature-0\"\n transform=\"matrix(0.7555406501686023,0,0,0.7555406501686023,-4.883814572467361,-0.26595028490140254)\"\n >\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M88.54,46.256L9.464,0.616c-0.616-0.352-1.384-0.352-2,0c-0.62,0.36-1,1.02-1,1.736v91.296c0,0.716,0.38,1.375,1,1.731 c0.308,0.185,0.656,0.269,1,0.269c0.344,0,0.692-0.084,1-0.269L88.54,49.729c0.616-0.36,1-1.021,1-1.736 C89.54,47.276,89.152,46.616,88.54,46.256z M60.08,49.771L21.388,69.805c-0.288,0.147-0.604,0.223-0.92,0.223 c-0.36,0-0.72-0.092-1.04-0.287c-0.596-0.364-0.96-1.008-0.96-1.713v-40.06c0-0.696,0.364-1.344,0.96-1.712 c0.596-0.36,1.336-0.392,1.96-0.068l38.696,20.028c0.664,0.344,1.084,1.032,1.084,1.772C61.164,48.74,60.744,49.428,60.08,49.771z\"\n ></path>\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.464,64.744l32.345-16.748l-32.345-16.74V64.744z\"></path>\n </g>\n <g\n id=\"SvgjsG4964\"\n featurekey=\"nameFeature-0\"\n transform=\"matrix(1.0207331753701396,0,0,1.0207331753701396,81.5644404108694,15.72408377414908)\"\n >\n <path\n d=\"M17.344 32.6562 c-0.78125 -0.15625 -1.5105 -0.3907 -2.1876 -0.7032 c-1.4584 -0.67711 -2.7344 -1.6146 -3.8281 -2.8125 c-1.0416 -1.0938 -1.875 -2.4479 -2.5 -4.0625 c-0.57289 -1.6146 -0.85938 -3.2552 -0.85938 -4.9219 l0 -0.15625 l0 -0.23438 c0 -1.7188 0.28648 -3.3854 0.85938 -5 c0.67711 -1.6666 1.5105 -2.9948 2.5001 -3.9844 c1.0416 -1.1979 2.2916 -2.1094 3.75 -2.7344 c0.88539 -0.41664 1.6406 -0.67703 2.2656 -0.78117 l0 -5.8594 c-1.8229 0.26039 -3.4375 0.70313 -4.8438 1.3281 c-2.2916 0.98961 -4.2448 2.3177 -5.8594 3.9844 s-2.8906 3.6458 -3.8281 5.9374 s-1.4063 4.6875 -1.4063 7.1875 l0 0.15625 l0 0.23438 c0 2.5521 0.46875 4.948 1.4063 7.1876 c0.83336 2.2396 2.0834 4.1927 3.75 5.8594 c1.6666 1.7188 3.6198 3.0469 5.8594 3.9844 c1.4063 0.625 3.0469 1.0677 4.9219 1.3281 l0 -5.9375 z M38.594 20 l0.000076294 -0.23438 c0 -2.5521 -0.46875 -4.948 -1.4063 -7.1876 c-0.9375 -2.2916 -2.2135 -4.2708 -3.8281 -5.9374 c-1.5625 -1.6666 -3.4896 -2.9688 -5.7813 -3.9063 c-1.3021 -0.625 -2.8906 -1.0677 -4.7656 -1.3281 l0 5.9375 l0.9375 0.3125 c0.46875 0.15625 0.83336 0.28648 1.0938 0.39063 c1.4584 0.67711 2.7344 1.6146 3.8281 2.8125 c1.0416 1.0938 1.875 2.4479 2.5 4.0625 c0.57289 1.6146 0.85938 3.2552 0.85938 4.9219 l0 0.15625 l0 0.23438 c0 1.7188 -0.28648 3.3854 -0.85938 5 c-0.67711 1.6666 -1.5105 2.9948 -2.5001 3.9844 c-1.0416 1.1979 -2.2916 2.1094 -3.75 2.7344 c-0.67711 0.3125 -1.3802 0.54688 -2.1094 0.70313 l0 5.9375 c1.5625 -0.20836 3.125 -0.65109 4.6875 -1.3282 c2.1354 -0.88539 4.0885 -2.2135 5.8594 -3.9844 c1.7188 -1.8229 2.9948 -3.802 3.8281 -5.9374 c0.9375 -2.2916 1.4063 -4.6875 1.4063 -7.1875 l0 -0.15625 z M43.8281 38.5937 l6.4844 0 l0 -19.922 l-6.4844 -9.1406 l0 29.063 z M69.76599999999999 1.4059999999999988 l0 25.703 l-18.359 -25.703 l-7.0313 0 l26.406 37.188 l5.3906 0 l0 -37.188 l-6.4063 0 z M86.0938 1.4059999999999988 l27.813 0 l0 5.9375 l-27.813 0 l0 -5.9375 z M86.0938 32.6562 l27.734 0 l0 5.9375 l-27.734 0 l0 -5.9375 z M86.0938 16.875 l25.078 0 l0 5.8594 l-25.078 0 l0 -5.8594 z M127.2656 12.5 c0.9375 -2.2916 2.2916 -4.2447 4.0624 -5.8593 c1.6146 -1.6146 3.698 -2.9167 6.2501 -3.9063 s5.2344 -1.4844 8.0469 -1.4844 l8.6719 0 l0 5.9375 l-8.5938 0 c-2.0313 0 -3.8281 0.33852 -5.3906 1.0156 c-1.6666 0.67711 -3.0208 1.5625 -4.0624 2.6563 c-1.0938 1.0416 -1.9791 2.3958 -2.6563 4.0624 c-0.625 1.5104 -0.9375 3.2031 -0.9375 5.0781 s0.3125 3.5677 0.9375 5.0781 c0.625 1.5625 1.5104 2.9166 2.6563 4.0625 c1.0416 1.0416 2.3958 1.901 4.0624 2.5781 c1.6666 0.625 3.4635 0.9375 5.3906 0.9375 l8.5938 0 l0 5.9375 l-8.6719 0 c-2.9166 0 -5.5729 -0.46875 -7.9688 -1.4063 c-2.5 -1.0416 -4.6094 -2.3698 -6.3281 -3.9844 c-1.7709 -1.6666 -3.125 -3.6458 -4.0625 -5.9374 c-0.98961 -2.3959 -1.4844 -4.8438 -1.4844 -7.3438 c0 -2.6563 0.49477 -5.1302 1.4844 -7.4219 z M176.484 29.375 l3.5156 -4.6875 l-0.078125 -0.15625 z M196.875 1.4059999999999988 l-7.5 0 l-9.2969 13.359 l-9.2188 -13.359 l-7.7344 0 l13.047 18.281 l-13.516 18.906 l8.3594 0 z M197.344 38.5937 l-10.313 -14.609 l-3.9063 5.2344 l6.5625 9.375 l7.6563 0 z\"\n ></path>\n </g>\n </svg>\n </a>\n\n <a\n class=\"layout-menu-button shadow-6\"\n (click)=\"onMenuButtonClick($event)\"\n pRipple\n [title]=\"menuButtonTitle ?? ('OCX_HEADER.MENU_TOGGLE')\"\n >\n <i class=\"pi pi-chevron-right\"></i>\n </a>\n </div>\n\n <div class=\"layout-topbar-right\">\n <div class=\"layout-topbar-actions-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"layout-topbar-actions-right\">\n <ocx-slot name=\"onecx-shell-header-right\" class=\"layout-topbar-items\">\n <ng-template #skeleton>\n <div class=\"flex align-items-center h-full justify-content-center\" style=\"width: 56px\">\n <p-skeleton shape=\"circle\" size=\"2.5rem\" class=\"h-full flex align-items-center\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </div>\n </div>\n</div>\n", styles: [".http-progress-loader{margin-left:8px;padding-top:5px}@media screen and (max-width: 1024px){.http-progress-loader{margin-left:0;margin-right:8px}}.default-logo{color:var(--logo-color, #12abdb);fill:currentColor}\n"] }]
63
+ }], ctorParameters: () => [{ type: i1.ThemeService }, { type: i1.AppStateService }], propDecorators: { menuButtonTitle: [{
64
+ type: Input
65
+ }], fullPortalLayout: [{
66
+ type: Input
67
+ }], homeNavUrl: [{
68
+ type: Input
69
+ }], homeNavTitle: [{
70
+ type: Input
71
+ }], menuButtonClick: [{
72
+ type: Output
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hlbGwtY29yZS9zcmMvbGliL2NvbXBvbmVudHMvcG9ydGFsLWhlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaGVsbC1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9wb3J0YWwtaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDcEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7Ozs7Ozs7O0FBaUJqRCxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFlO0lBa0IxQixZQUFvQixZQUEwQixFQUFVLGVBQWdDO1FBQXBFLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBakJ4RixpQkFBWSxHQUFHLEtBQUssQ0FBQTtRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUtuQixxQkFBZ0IsR0FBRyxJQUFJLENBQUE7UUFFdkIsZUFBVSxHQUFHLEdBQUcsQ0FBQTtRQUVoQixpQkFBWSxHQUFHLE1BQU0sQ0FBQTtRQUdyQixvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFBO1FBS3JELElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRTtZQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtTQUN0RCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDM0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxDQUFRO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlCLENBQUM7OEdBL0JVLGVBQWU7a0dBQWYsZUFBZSx1UEN2QjVCLCtuTEE2REEsczBCRGpEYztZQUNWLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRTtnQkFDcEMsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2lCQUNsRixDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyRSxDQUFDO1NBQ0g7O0FBR1UsZUFBZTtJQUQzQixZQUFZLEVBQUU7cUNBbUJxQixZQUFZLEVBQTJCLGVBQWU7R0FsQjdFLGVBQWUsQ0FnQzNCOzsyRkFoQ1ksZUFBZTtrQkFmM0IsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEI7d0JBQ1YsT0FBTyxDQUFDLDRCQUE0QixFQUFFOzRCQUNwQyxVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQztnQ0FDL0MsT0FBTyxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7NkJBQ2xGLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUNyRSxDQUFDO3FCQUNIOytHQVFELGVBQWU7c0JBRGQsS0FBSztnQkFHTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucydcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFVudGlsRGVzdHJveSB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSdcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgSW1hZ2VMb2dvVXJsVXRpbHMgfSBmcm9tICdAb25lY3gvcG9ydGFsLWludGVncmF0aW9uLWFuZ3VsYXInXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgU0hFTExfQkZGX1BSRUZJWCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbnN0YW50cydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LXNoZWxsLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3RvcGJhckFjdGlvblBhbmVsQW5pbWF0aW9uJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnKicgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgnLjFzIGxpbmVhcicsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSldKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5AVW50aWxEZXN0cm95KClcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQge1xuICBtZW51RXhwYW5kZWQgPSBmYWxzZVxuICBmYWxsYmFja0ltZyA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgbWVudUJ1dHRvblRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KClcbiAgZnVsbFBvcnRhbExheW91dCA9IHRydWVcbiAgQElucHV0KClcbiAgaG9tZU5hdlVybCA9ICcvJ1xuICBASW5wdXQoKVxuICBob21lTmF2VGl0bGUgPSAnSG9tZSdcblxuICBAT3V0cHV0KClcbiAgbWVudUJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIGxvZ29VcmwkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLCBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5sb2dvVXJsJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy50aGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5hc09ic2VydmFibGUoKSxcbiAgICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRXb3Jrc3BhY2UkLmFzT2JzZXJ2YWJsZSgpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt0aGVtZSwgcG9ydGFsXSkgPT4ge1xuICAgICAgICByZXR1cm4gSW1hZ2VMb2dvVXJsVXRpbHMuY3JlYXRlTG9nb1VybChTSEVMTF9CRkZfUFJFRklYLCB0aGVtZS5sb2dvVXJsIHx8IHBvcnRhbC5sb2dvVXJsKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBvbk1lbnVCdXR0b25DbGljayhlOiBFdmVudCkge1xuICAgIHRoaXMubWVudUJ1dHRvbkNsaWNrLmVtaXQoZSlcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXIgc2hhZG93LTRcIiBpZD1cImhlYWRlclwiIHJvbGU9XCJiYW5uZXJcIj5cbiAgPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXItbGVmdFwiPlxuICAgIDxhIGNsYXNzPVwibGF5b3V0LXRvcGJhci1sb2dvXCI+XG4gICAgICA8aW1nXG4gICAgICAgIGlkPVwiYXBwLWxvZ29cIlxuICAgICAgICBbb2N4U3JjXT1cIihsb2dvVXJsJCB8IGFzeW5jKSA/PyAnJ1wiXG4gICAgICAgIGFsdD1cIkxvZ29cIlxuICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDEwMCU7IG1heC13aWR0aDogMTAwJVwiXG4gICAgICAgICpuZ0lmPVwiKGxvZ29VcmwkIHwgYXN5bmMpICYmICFmYWxsYmFja0ltZ1wiXG4gICAgICAgIChlcnJvcik9XCJmYWxsYmFja0ltZz10cnVlXCJcbiAgICAgIC8+XG4gICAgICA8c3ZnICpuZ0lmPVwiKChsb2dvVXJsJCB8IGFzeW5jKSA9PT0gbnVsbCkgfHwgZmFsbGJhY2tJbWdcIiB3aWR0aD1cIjE2MFwiIHZpZXdCb3g9XCIwIDAgMjgzIDcyXCIgY2xhc3M9XCJkZWZhdWx0LWxvZ29cIj5cbiAgICAgICAgPGRlZnMgaWQ9XCJTdmdqc0RlZnM0OTYyXCI+PC9kZWZzPlxuICAgICAgICA8Z1xuICAgICAgICAgIGlkPVwiU3ZnanNHNDk2M1wiXG4gICAgICAgICAgZmVhdHVyZWtleT1cInN5bWJvbEZlYXR1cmUtMFwiXG4gICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KDAuNzU1NTQwNjUwMTY4NjAyMywwLDAsMC43NTU1NDA2NTAxNjg2MDIzLC00Ljg4MzgxNDU3MjQ2NzM2MSwtMC4yNjU5NTAyODQ5MDE0MDI1NClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgZD1cIk04OC41NCw0Ni4yNTZMOS40NjQsMC42MTZjLTAuNjE2LTAuMzUyLTEuMzg0LTAuMzUyLTIsMGMtMC42MiwwLjM2LTEsMS4wMi0xLDEuNzM2djkxLjI5NmMwLDAuNzE2LDAuMzgsMS4zNzUsMSwxLjczMSAgYzAuMzA4LDAuMTg1LDAuNjU2LDAuMjY5LDEsMC4yNjljMC4zNDQsMCwwLjY5Mi0wLjA4NCwxLTAuMjY5TDg4LjU0LDQ5LjcyOWMwLjYxNi0wLjM2LDEtMS4wMjEsMS0xLjczNiAgQzg5LjU0LDQ3LjI3Niw4OS4xNTIsNDYuNjE2LDg4LjU0LDQ2LjI1NnogTTYwLjA4LDQ5Ljc3MUwyMS4zODgsNjkuODA1Yy0wLjI4OCwwLjE0Ny0wLjYwNCwwLjIyMy0wLjkyLDAuMjIzICBjLTAuMzYsMC0wLjcyLTAuMDkyLTEuMDQtMC4yODdjLTAuNTk2LTAuMzY0LTAuOTYtMS4wMDgtMC45Ni0xLjcxM3YtNDAuMDZjMC0wLjY5NiwwLjM2NC0xLjM0NCwwLjk2LTEuNzEyICBjMC41OTYtMC4zNiwxLjMzNi0wLjM5MiwxLjk2LTAuMDY4bDM4LjY5NiwyMC4wMjhjMC42NjQsMC4zNDQsMS4wODQsMS4wMzIsMS4wODQsMS43NzJDNjEuMTY0LDQ4Ljc0LDYwLjc0NCw0OS40MjgsNjAuMDgsNDkuNzcxelwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICA8cGF0aCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZD1cIk0yMi40NjQsNjQuNzQ0bDMyLjM0NS0xNi43NDhsLTMyLjM0NS0xNi43NFY2NC43NDR6XCI+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnXG4gICAgICAgICAgaWQ9XCJTdmdqc0c0OTY0XCJcbiAgICAgICAgICBmZWF0dXJla2V5PVwibmFtZUZlYXR1cmUtMFwiXG4gICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KDEuMDIwNzMzMTc1MzcwMTM5NiwwLDAsMS4wMjA3MzMxNzUzNzAxMzk2LDgxLjU2NDQ0MDQxMDg2OTQsMTUuNzI0MDgzNzc0MTQ5MDgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTE3LjM0NCAzMi42NTYyIGMtMC43ODEyNSAtMC4xNTYyNSAtMS41MTA1IC0wLjM5MDcgLTIuMTg3NiAtMC43MDMyIGMtMS40NTg0IC0wLjY3NzExIC0yLjczNDQgLTEuNjE0NiAtMy44MjgxIC0yLjgxMjUgYy0xLjA0MTYgLTEuMDkzOCAtMS44NzUgLTIuNDQ3OSAtMi41IC00LjA2MjUgYy0wLjU3Mjg5IC0xLjYxNDYgLTAuODU5MzggLTMuMjU1MiAtMC44NTkzOCAtNC45MjE5IGwwIC0wLjE1NjI1IGwwIC0wLjIzNDM4IGMwIC0xLjcxODggMC4yODY0OCAtMy4zODU0IDAuODU5MzggLTUgYzAuNjc3MTEgLTEuNjY2NiAxLjUxMDUgLTIuOTk0OCAyLjUwMDEgLTMuOTg0NCBjMS4wNDE2IC0xLjE5NzkgMi4yOTE2IC0yLjEwOTQgMy43NSAtMi43MzQ0IGMwLjg4NTM5IC0wLjQxNjY0IDEuNjQwNiAtMC42NzcwMyAyLjI2NTYgLTAuNzgxMTcgbDAgLTUuODU5NCBjLTEuODIyOSAwLjI2MDM5IC0zLjQzNzUgMC43MDMxMyAtNC44NDM4IDEuMzI4MSBjLTIuMjkxNiAwLjk4OTYxIC00LjI0NDggMi4zMTc3IC01Ljg1OTQgMy45ODQ0IHMtMi44OTA2IDMuNjQ1OCAtMy44MjgxIDUuOTM3NCBzLTEuNDA2MyA0LjY4NzUgLTEuNDA2MyA3LjE4NzUgbDAgMC4xNTYyNSBsMCAwLjIzNDM4IGMwIDIuNTUyMSAwLjQ2ODc1IDQuOTQ4IDEuNDA2MyA3LjE4NzYgYzAuODMzMzYgMi4yMzk2IDIuMDgzNCA0LjE5MjcgMy43NSA1Ljg1OTQgYzEuNjY2NiAxLjcxODggMy42MTk4IDMuMDQ2OSA1Ljg1OTQgMy45ODQ0IGMxLjQwNjMgMC42MjUgMy4wNDY5IDEuMDY3NyA0LjkyMTkgMS4zMjgxIGwwIC01LjkzNzUgeiBNMzguNTk0IDIwIGwwLjAwMDA3NjI5NCAtMC4yMzQzOCBjMCAtMi41NTIxIC0wLjQ2ODc1IC00Ljk0OCAtMS40MDYzIC03LjE4NzYgYy0wLjkzNzUgLTIuMjkxNiAtMi4yMTM1IC00LjI3MDggLTMuODI4MSAtNS45Mzc0IGMtMS41NjI1IC0xLjY2NjYgLTMuNDg5NiAtMi45Njg4IC01Ljc4MTMgLTMuOTA2MyBjLTEuMzAyMSAtMC42MjUgLTIuODkwNiAtMS4wNjc3IC00Ljc2NTYgLTEuMzI4MSBsMCA1LjkzNzUgbDAuOTM3NSAwLjMxMjUgYzAuNDY4NzUgMC4xNTYyNSAwLjgzMzM2IDAuMjg2NDggMS4wOTM4IDAuMzkwNjMgYzEuNDU4NCAwLjY3NzExIDIuNzM0NCAxLjYxNDYgMy44MjgxIDIuODEyNSBjMS4wNDE2IDEuMDkzOCAxLjg3NSAyLjQ0NzkgMi41IDQuMDYyNSBjMC41NzI4OSAxLjYxNDYgMC44NTkzOCAzLjI1NTIgMC44NTkzOCA0LjkyMTkgbDAgMC4xNTYyNSBsMCAwLjIzNDM4IGMwIDEuNzE4OCAtMC4yODY0OCAzLjM4NTQgLTAuODU5MzggNSBjLTAuNjc3MTEgMS42NjY2IC0xLjUxMDUgMi45OTQ4IC0yLjUwMDEgMy45ODQ0IGMtMS4wNDE2IDEuMTk3OSAtMi4yOTE2IDIuMTA5NCAtMy43NSAyLjczNDQgYy0wLjY3NzExIDAuMzEyNSAtMS4zODAyIDAuNTQ2ODggLTIuMTA5NCAwLjcwMzEzIGwwIDUuOTM3NSBjMS41NjI1IC0wLjIwODM2IDMuMTI1IC0wLjY1MTA5IDQuNjg3NSAtMS4zMjgyIGMyLjEzNTQgLTAuODg1MzkgNC4wODg1IC0yLjIxMzUgNS44NTk0IC0zLjk4NDQgYzEuNzE4OCAtMS44MjI5IDIuOTk0OCAtMy44MDIgMy44MjgxIC01LjkzNzQgYzAuOTM3NSAtMi4yOTE2IDEuNDA2MyAtNC42ODc1IDEuNDA2MyAtNy4xODc1IGwwIC0wLjE1NjI1IHogTTQzLjgyODEgMzguNTkzNyBsNi40ODQ0IDAgbDAgLTE5LjkyMiBsLTYuNDg0NCAtOS4xNDA2IGwwIDI5LjA2MyB6IE02OS43NjU5OTk5OTk5OTk5OSAxLjQwNTk5OTk5OTk5OTk5ODggbDAgMjUuNzAzIGwtMTguMzU5IC0yNS43MDMgbC03LjAzMTMgMCBsMjYuNDA2IDM3LjE4OCBsNS4zOTA2IDAgbDAgLTM3LjE4OCBsLTYuNDA2MyAwIHogTTg2LjA5MzggMS40MDU5OTk5OTk5OTk5OTg4IGwyNy44MTMgMCBsMCA1LjkzNzUgbC0yNy44MTMgMCBsMCAtNS45Mzc1IHogTTg2LjA5MzggMzIuNjU2MiBsMjcuNzM0IDAgbDAgNS45Mzc1IGwtMjcuNzM0IDAgbDAgLTUuOTM3NSB6IE04Ni4wOTM4IDE2Ljg3NSBsMjUuMDc4IDAgbDAgNS44NTk0IGwtMjUuMDc4IDAgbDAgLTUuODU5NCB6IE0xMjcuMjY1NiAxMi41IGMwLjkzNzUgLTIuMjkxNiAyLjI5MTYgLTQuMjQ0NyA0LjA2MjQgLTUuODU5MyBjMS42MTQ2IC0xLjYxNDYgMy42OTggLTIuOTE2NyA2LjI1MDEgLTMuOTA2MyBzNS4yMzQ0IC0xLjQ4NDQgOC4wNDY5IC0xLjQ4NDQgbDguNjcxOSAwIGwwIDUuOTM3NSBsLTguNTkzOCAwIGMtMi4wMzEzIDAgLTMuODI4MSAwLjMzODUyIC01LjM5MDYgMS4wMTU2IGMtMS42NjY2IDAuNjc3MTEgLTMuMDIwOCAxLjU2MjUgLTQuMDYyNCAyLjY1NjMgYy0xLjA5MzggMS4wNDE2IC0xLjk3OTEgMi4zOTU4IC0yLjY1NjMgNC4wNjI0IGMtMC42MjUgMS41MTA0IC0wLjkzNzUgMy4yMDMxIC0wLjkzNzUgNS4wNzgxIHMwLjMxMjUgMy41Njc3IDAuOTM3NSA1LjA3ODEgYzAuNjI1IDEuNTYyNSAxLjUxMDQgMi45MTY2IDIuNjU2MyA0LjA2MjUgYzEuMDQxNiAxLjA0MTYgMi4zOTU4IDEuOTAxIDQuMDYyNCAyLjU3ODEgYzEuNjY2NiAwLjYyNSAzLjQ2MzUgMC45Mzc1IDUuMzkwNiAwLjkzNzUgbDguNTkzOCAwIGwwIDUuOTM3NSBsLTguNjcxOSAwIGMtMi45MTY2IDAgLTUuNTcyOSAtMC40Njg3NSAtNy45Njg4IC0xLjQwNjMgYy0yLjUgLTEuMDQxNiAtNC42MDk0IC0yLjM2OTggLTYuMzI4MSAtMy45ODQ0IGMtMS43NzA5IC0xLjY2NjYgLTMuMTI1IC0zLjY0NTggLTQuMDYyNSAtNS45Mzc0IGMtMC45ODk2MSAtMi4zOTU5IC0xLjQ4NDQgLTQuODQzOCAtMS40ODQ0IC03LjM0MzggYzAgLTIuNjU2MyAwLjQ5NDc3IC01LjEzMDIgMS40ODQ0IC03LjQyMTkgeiBNMTc2LjQ4NCAyOS4zNzUgbDMuNTE1NiAtNC42ODc1IGwtMC4wNzgxMjUgLTAuMTU2MjUgeiBNMTk2Ljg3NSAxLjQwNTk5OTk5OTk5OTk5ODggbC03LjUgMCBsLTkuMjk2OSAxMy4zNTkgbC05LjIxODggLTEzLjM1OSBsLTcuNzM0NCAwIGwxMy4wNDcgMTguMjgxIGwtMTMuNTE2IDE4LjkwNiBsOC4zNTk0IDAgeiBNMTk3LjM0NCAzOC41OTM3IGwtMTAuMzEzIC0xNC42MDkgbC0zLjkwNjMgNS4yMzQ0IGw2LjU2MjUgOS4zNzUgbDcuNjU2MyAwIHpcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYT5cblxuICAgIDxhXG4gICAgICBjbGFzcz1cImxheW91dC1tZW51LWJ1dHRvbiBzaGFkb3ctNlwiXG4gICAgICAoY2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICBwUmlwcGxlXG4gICAgICBbdGl0bGVdPVwibWVudUJ1dHRvblRpdGxlID8/ICgnT0NYX0hFQURFUi5NRU5VX1RPR0dMRScpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgPC9hPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhci1yaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLWFjdGlvbnMtbGVmdFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLWFjdGlvbnMtcmlnaHRcIj5cbiAgICAgIDxvY3gtc2xvdCBuYW1lPVwib25lY3gtc2hlbGwtaGVhZGVyLXJpZ2h0XCIgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLWl0ZW1zXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGgtZnVsbCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogNTZweFwiPlxuICAgICAgICAgICAgPHAtc2tlbGV0b24gc2hhcGU9XCJjaXJjbGVcIiBzaXplPVwiMi41cmVtXCIgY2xhc3M9XCJoLWZ1bGwgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48L3Atc2tlbGV0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L29jeC1zbG90PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,137 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Component, HostListener, Inject, InjectionToken, Optional, Renderer2 } from '@angular/core';
4
+ import { Router } from '@angular/router';
5
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
6
+ import { AppStateService, PortalMessageService, ThemeService, UserService, } from '@onecx/angular-integration-interface';
7
+ import { MessageService, PrimeNGConfig } from 'primeng/api';
8
+ import { filter, first, from, mergeMap, of } from 'rxjs';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "primeng/api";
11
+ import * as i2 from "@onecx/angular-integration-interface";
12
+ import * as i3 from "@angular/common/http";
13
+ import * as i4 from "@angular/router";
14
+ import * as i5 from "@angular/common";
15
+ import * as i6 from "@onecx/angular-remote-components";
16
+ import * as i7 from "primeng/toast";
17
+ import * as i8 from "primeng/skeleton";
18
+ import * as i9 from "@onecx/portal-integration-angular";
19
+ import * as i10 from "../portal-header/header.component";
20
+ import * as i11 from "../portal-footer/portal-footer.component";
21
+ import * as i12 from "../error-component/global-error.component";
22
+ export const SHOW_CONTENT_PROVIDER = new InjectionToken('SHOW_CONTENT_PROVIDER');
23
+ let PortalViewportComponent = class PortalViewportComponent {
24
+ constructor(renderer, primengConfig, messageService, appStateService, portalMessageService, userService, themeService, httpClient, router, showContentProvider) {
25
+ this.renderer = renderer;
26
+ this.primengConfig = primengConfig;
27
+ this.messageService = messageService;
28
+ this.appStateService = appStateService;
29
+ this.portalMessageService = portalMessageService;
30
+ this.userService = userService;
31
+ this.themeService = themeService;
32
+ this.httpClient = httpClient;
33
+ this.router = router;
34
+ this.showContentProvider = showContentProvider;
35
+ this.menuButtonTitle = '';
36
+ this.menuActive = true;
37
+ this.topbarTheme = 'var';
38
+ this.colorScheme = 'light';
39
+ this.layoutMode = 'light';
40
+ this.menuMode = 'static';
41
+ this.inputStyle = 'outline';
42
+ this.ripple = true;
43
+ this.isMobile = false;
44
+ this.portalMessageService.message$.subscribe((message) => this.messageService.add(message));
45
+ this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {
46
+ this.menuMode =
47
+ profile?.accountSettings?.layoutAndThemeSettings?.menuMode?.toLowerCase() || this.menuMode;
48
+ this.colorScheme =
49
+ profile?.accountSettings?.layoutAndThemeSettings?.colorScheme?.toLowerCase() || this.colorScheme;
50
+ });
51
+ this.themeService.currentTheme$
52
+ .pipe(first(), mergeMap((theme) => {
53
+ return theme.faviconUrl
54
+ ? this.httpClient.get(theme.faviconUrl, { responseType: 'blob' }).pipe(mergeMap((blob) => {
55
+ return from(new Promise((resolve) => {
56
+ const reader = new FileReader();
57
+ reader.onload = (e) => resolve(e.target?.result);
58
+ reader.readAsDataURL(blob);
59
+ }));
60
+ }))
61
+ : of('');
62
+ }))
63
+ .subscribe((url) => {
64
+ let link = document.querySelector("link[rel~='icon']");
65
+ if (!link) {
66
+ link = document.createElement('link');
67
+ link.rel = 'icon';
68
+ document.head.appendChild(link);
69
+ }
70
+ link.href = url;
71
+ });
72
+ }
73
+ ngOnInit() {
74
+ this.primengConfig.ripple = true;
75
+ this.appStateService.globalError$
76
+ .pipe(untilDestroyed(this))
77
+ .pipe(filter((i) => i !== undefined))
78
+ .subscribe((err) => {
79
+ this.globalErrMsg = err;
80
+ });
81
+ this.onResize();
82
+ }
83
+ ngOnDestroy() {
84
+ this.removeDocumentClickListener?.();
85
+ }
86
+ onMenuButtonClick(event) {
87
+ this.activeTopbarItem = undefined;
88
+ this.menuActive = !this.menuActive;
89
+ event.preventDefault();
90
+ event.stopPropagation();
91
+ }
92
+ onResize() {
93
+ const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point');
94
+ const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches;
95
+ // auto show sidebar when changing to desktop, hide when changing to mobile
96
+ if (isMobile !== this.isMobile)
97
+ this.menuActive = !isMobile;
98
+ this.isMobile = isMobile;
99
+ }
100
+ isHorizontalMenuMode() {
101
+ return this.menuMode === 'horizontal' && !this.isMobile;
102
+ }
103
+ isStaticalMenuVisible() {
104
+ return this.menuActive && !this.isHorizontalMenuMode();
105
+ }
106
+ isHorizontalMenuVisible() {
107
+ return this.isHorizontalMenuMode();
108
+ }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PortalViewportComponent, deps: [{ token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.MessageService }, { token: i2.AppStateService }, { token: i2.PortalMessageService }, { token: i2.UserService }, { token: i2.ThemeService }, { token: i3.HttpClient }, { token: i4.Router }, { token: SHOW_CONTENT_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: PortalViewportComponent, selector: "ocx-shell-portal-viewport", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <div *ngIf=\"isHorizontalMenuVisible()\">\n <ocx-slot name=\"onecx-shell-horizontal-menu\">\n <ng-template #skeleton>\n <div class=\"ml-4 flex flex-row gap-4\">\n <p-skeleton class=\"w-full h-full inline-block\" height=\"35px\" width=\"120px\"></p-skeleton>\n <p-skeleton class=\"w-full h-full inline-block\" height=\"35px\" width=\"120px\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </div>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container overflow-auto\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"onecx-shell-vertical-menu\">\n <ng-template #skeleton>\n <p-skeleton class=\"w-full h-full inline-block p-2\" height=\"35px\"></p-skeleton>\n </ng-template>\n </ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"onecx-shell-sub-header\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async); else appLoading\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n\n<ng-template #appLoading>\n <div [ocxLoadingIndicator]=\"true\" class=\"w-full h-full absolute top-0 left-0\"></div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i8.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "directive", type: i9.LoadingIndicatorDirective, selector: "[ocxLoadingIndicator]", inputs: ["ocxLoadingIndicator", "overlayFullPage", "isLoaderSmall"] }, { kind: "component", type: i10.HeaderComponent, selector: "ocx-shell-header", inputs: ["menuButtonTitle", "fullPortalLayout", "homeNavUrl", "homeNavTitle"], outputs: ["menuButtonClick"] }, { kind: "component", type: i11.PortalFooterComponent, selector: "ocx-shell-footer" }, { kind: "component", type: i12.GlobalErrorComponent, selector: "ocx-shell-error", inputs: ["errCode"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
111
+ };
112
+ PortalViewportComponent = __decorate([
113
+ UntilDestroy(),
114
+ __metadata("design:paramtypes", [Renderer2,
115
+ PrimeNGConfig,
116
+ MessageService,
117
+ AppStateService,
118
+ PortalMessageService,
119
+ UserService,
120
+ ThemeService,
121
+ HttpClient,
122
+ Router, Object])
123
+ ], PortalViewportComponent);
124
+ export { PortalViewportComponent };
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PortalViewportComponent, decorators: [{
126
+ type: Component,
127
+ args: [{ selector: 'ocx-shell-portal-viewport', template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <div *ngIf=\"isHorizontalMenuVisible()\">\n <ocx-slot name=\"onecx-shell-horizontal-menu\">\n <ng-template #skeleton>\n <div class=\"ml-4 flex flex-row gap-4\">\n <p-skeleton class=\"w-full h-full inline-block\" height=\"35px\" width=\"120px\"></p-skeleton>\n <p-skeleton class=\"w-full h-full inline-block\" height=\"35px\" width=\"120px\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </div>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container overflow-auto\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"onecx-shell-vertical-menu\">\n <ng-template #skeleton>\n <p-skeleton class=\"w-full h-full inline-block p-2\" height=\"35px\"></p-skeleton>\n </ng-template>\n </ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"onecx-shell-sub-header\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async); else appLoading\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n\n<ng-template #appLoading>\n <div [ocxLoadingIndicator]=\"true\" class=\"w-full h-full absolute top-0 left-0\"></div>\n</ng-template>\n" }]
128
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.MessageService }, { type: i2.AppStateService }, { type: i2.PortalMessageService }, { type: i2.UserService }, { type: i2.ThemeService }, { type: i3.HttpClient }, { type: i4.Router }, { type: undefined, decorators: [{
129
+ type: Optional
130
+ }, {
131
+ type: Inject,
132
+ args: [SHOW_CONTENT_PROVIDER]
133
+ }] }], propDecorators: { onResize: [{
134
+ type: HostListener,
135
+ args: ['window:resize']
136
+ }] } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLXZpZXdwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hlbGwtY29yZS9zcmMvbGliL2NvbXBvbmVudHMvcG9ydGFsLXZpZXdwb3J0L3BvcnRhbC12aWV3cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3BvcnRhbC12aWV3cG9ydC9wb3J0YWwtdmlld3BvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFxQixRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3ZILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3BFLE9BQU8sRUFDTCxlQUFlLEVBRWYsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixXQUFXLEdBQ1osTUFBTSxzQ0FBc0MsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzRCxPQUFPLEVBQW1CLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7Ozs7Ozs7Ozs7Ozs7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFBO0FBWTlGLElBQU0sdUJBQXVCLEdBQTdCLE1BQU0sdUJBQXVCO0lBaUJsQyxZQUNVLFFBQW1CLEVBQ25CLGFBQTRCLEVBQzVCLGNBQThCLEVBQy9CLGVBQWdDLEVBQy9CLG9CQUEwQyxFQUMxQyxXQUF3QixFQUN4QixZQUEwQixFQUMxQixVQUFzQixFQUN0QixNQUFjLEVBQzRCLG1CQUFvRDtRQVQ5RixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDNEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFpQztRQTFCeEcsb0JBQWUsR0FBRyxFQUFFLENBQUE7UUFDcEIsZUFBVSxHQUFHLElBQUksQ0FBQTtRQUtqQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixnQkFBVyxHQUE4QixPQUFPLENBQUE7UUFDaEQsZUFBVSxHQUE4QixPQUFPLENBQUE7UUFDL0MsYUFBUSxHQUE4RCxRQUFRLENBQUE7UUFDOUUsZUFBVSxHQUFHLFNBQVMsQ0FBQTtRQUN0QixXQUFNLEdBQUcsSUFBSSxDQUFBO1FBQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQWdCZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDcEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3pFLElBQUksQ0FBQyxRQUFRO2dCQUNWLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFFMUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFBO1lBRWpDLElBQUksQ0FBQyxXQUFXO2dCQUNiLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFFN0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFBO1FBQ3RDLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO2FBQzVCLElBQUksQ0FDSCxLQUFLLEVBQUUsRUFDUCxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQyxVQUFVO2dCQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDbEUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sSUFBSSxDQUNULElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7d0JBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUE7d0JBQy9CLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO3dCQUNoRCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFBO2dCQUNILENBQUMsQ0FBQyxDQUNIO2dCQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDWixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQVEsQ0FBQTtZQUM3RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ3JDLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFBO2dCQUNqQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtRQUVoQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVk7YUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLENBQUMsR0FBdUIsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFBO1FBQ3pCLENBQUMsQ0FBQyxDQUFBO1FBRUosSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBaUI7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQTtRQUNsQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDdEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFHRCxRQUFRO1FBQ04sTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUMvRyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLGVBQWUsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUNqRiwyRUFBMkU7UUFDM0UsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxDQUFBO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDekQsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtJQUN4RCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7SUFDcEMsQ0FBQzs4R0FuSFUsdUJBQXVCLGdSQTJCWixxQkFBcUI7a0dBM0JoQyx1QkFBdUIseUhDMUJwQyxzbUVBMERBOztBRGhDYSx1QkFBdUI7SUFEbkMsWUFBWSxFQUFFO3FDQW1CTyxTQUFTO1FBQ0osYUFBYTtRQUNaLGNBQWM7UUFDZCxlQUFlO1FBQ1Qsb0JBQW9CO1FBQzdCLFdBQVc7UUFDVixZQUFZO1FBQ2QsVUFBVTtRQUNkLE1BQU07R0ExQmIsdUJBQXVCLENBb0huQzs7MkZBcEhZLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSwyQkFBMkI7OzBCQWdDbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7eUNBc0UzQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIEluamVjdGlvblRva2VuLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95J1xuaW1wb3J0IHtcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBNZXNzYWdlLFxuICBQb3J0YWxNZXNzYWdlU2VydmljZSxcbiAgVGhlbWVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbn0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBmaXJzdCwgZnJvbSwgbWVyZ2VNYXAsIG9mIH0gZnJvbSAncnhqcydcblxuZXhwb3J0IGNvbnN0IFNIT1dfQ09OVEVOVF9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTaG93Q29udGVudFByb3ZpZGVyPignU0hPV19DT05URU5UX1BST1ZJREVSJylcblxuZXhwb3J0IGludGVyZmFjZSBTaG93Q29udGVudFByb3ZpZGVyIHtcbiAgc2hvd0NvbnRlbnQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj5cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LXNoZWxsLXBvcnRhbC12aWV3cG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3J0YWwtdmlld3BvcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3J0YWwtdmlld3BvcnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5AVW50aWxEZXN0cm95KClcbmV4cG9ydCBjbGFzcyBQb3J0YWxWaWV3cG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbWVudUJ1dHRvblRpdGxlID0gJydcbiAgbWVudUFjdGl2ZSA9IHRydWVcbiAgYWN0aXZlVG9wYmFySXRlbTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgcmVtb3ZlRG9jdW1lbnRDbGlja0xpc3RlbmVyOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWRcblxuICB0b3BiYXJUaGVtZSA9ICd2YXInXG4gIGNvbG9yU2NoZW1lOiAnYXV0bycgfCAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0J1xuICBsYXlvdXRNb2RlOiAnYXV0bycgfCAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0J1xuICBtZW51TW9kZTogJ2hvcml6b250YWwnIHwgJ3N0YXRpYycgfCAnb3ZlcmxheScgfCAnc2xpbScgfCAnc2xpbXBsdXMnID0gJ3N0YXRpYydcbiAgaW5wdXRTdHlsZSA9ICdvdXRsaW5lJ1xuICByaXBwbGUgPSB0cnVlXG4gIGlzTW9iaWxlID0gZmFsc2VcblxuICBnbG9iYWxFcnJNc2c6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHByaW1lbmdDb25maWc6IFByaW1lTkdDb25maWcsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9ydGFsTWVzc2FnZVNlcnZpY2U6IFBvcnRhbE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChTSE9XX0NPTlRFTlRfUFJPVklERVIpIHB1YmxpYyBzaG93Q29udGVudFByb3ZpZGVyOiBTaG93Q29udGVudFByb3ZpZGVyIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMucG9ydGFsTWVzc2FnZVNlcnZpY2UubWVzc2FnZSQuc3Vic2NyaWJlKChtZXNzYWdlOiBNZXNzYWdlKSA9PiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZChtZXNzYWdlKSlcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnByb2ZpbGUkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgocHJvZmlsZSkgPT4ge1xuICAgICAgdGhpcy5tZW51TW9kZSA9XG4gICAgICAgIChwcm9maWxlPy5hY2NvdW50U2V0dGluZ3M/LmxheW91dEFuZFRoZW1lU2V0dGluZ3M/Lm1lbnVNb2RlPy50b0xvd2VyQ2FzZSgpIGFzXG4gICAgICAgICAgfCB0eXBlb2YgdGhpcy5tZW51TW9kZVxuICAgICAgICAgIHwgdW5kZWZpbmVkKSB8fCB0aGlzLm1lbnVNb2RlXG5cbiAgICAgIHRoaXMuY29sb3JTY2hlbWUgPVxuICAgICAgICAocHJvZmlsZT8uYWNjb3VudFNldHRpbmdzPy5sYXlvdXRBbmRUaGVtZVNldHRpbmdzPy5jb2xvclNjaGVtZT8udG9Mb3dlckNhc2UoKSBhc1xuICAgICAgICAgIHwgdHlwZW9mIHRoaXMuY29sb3JTY2hlbWVcbiAgICAgICAgICB8IHVuZGVmaW5lZCkgfHwgdGhpcy5jb2xvclNjaGVtZVxuICAgIH0pXG5cbiAgICB0aGlzLnRoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWVyZ2VNYXAoKHRoZW1lKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoZW1lLmZhdmljb25VcmxcbiAgICAgICAgICAgID8gdGhpcy5odHRwQ2xpZW50LmdldCh0aGVtZS5mYXZpY29uVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKGJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgICAgICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGUpID0+IHJlc29sdmUoZS50YXJnZXQ/LnJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogb2YoJycpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibGlua1tyZWx+PSdpY29uJ11cIikgYXMgYW55XG4gICAgICAgIGlmICghbGluaykge1xuICAgICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJylcbiAgICAgICAgICBsaW5rLnJlbCA9ICdpY29uJ1xuICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgICAgfVxuICAgICAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICAgIH0pXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByaW1lbmdDb25maWcucmlwcGxlID0gdHJ1ZVxuXG4gICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuZ2xvYmFsRXJyb3IkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5waXBlKGZpbHRlcigoaSkgPT4gaSAhPT0gdW5kZWZpbmVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGVycjogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHRoaXMuZ2xvYmFsRXJyTXNnID0gZXJyXG4gICAgICB9KVxuXG4gICAgdGhpcy5vblJlc2l6ZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZURvY3VtZW50Q2xpY2tMaXN0ZW5lcj8uKClcbiAgfVxuXG4gIG9uTWVudUJ1dHRvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5hY3RpdmVUb3BiYXJJdGVtID0gdW5kZWZpbmVkXG4gICAgdGhpcy5tZW51QWN0aXZlID0gIXRoaXMubWVudUFjdGl2ZVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIG9uUmVzaXplKCkge1xuICAgIGNvbnN0IG1vYmlsZUJyZWFrcG9pbnRWYXIgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1tb2JpbGUtYnJlYWstcG9pbnQnKVxuICAgIGNvbnN0IGlzTW9iaWxlID0gd2luZG93Lm1hdGNoTWVkaWEoYChtYXgtd2lkdGg6ICR7bW9iaWxlQnJlYWtwb2ludFZhcn0pYCkubWF0Y2hlc1xuICAgIC8vIGF1dG8gc2hvdyBzaWRlYmFyIHdoZW4gY2hhbmdpbmcgdG8gZGVza3RvcCwgaGlkZSB3aGVuIGNoYW5naW5nIHRvIG1vYmlsZVxuICAgIGlmIChpc01vYmlsZSAhPT0gdGhpcy5pc01vYmlsZSkgdGhpcy5tZW51QWN0aXZlID0gIWlzTW9iaWxlXG4gICAgdGhpcy5pc01vYmlsZSA9IGlzTW9iaWxlXG4gIH1cblxuICBpc0hvcml6b250YWxNZW51TW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51TW9kZSA9PT0gJ2hvcml6b250YWwnICYmICF0aGlzLmlzTW9iaWxlXG4gIH1cblxuICBpc1N0YXRpY2FsTWVudVZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudUFjdGl2ZSAmJiAhdGhpcy5pc0hvcml6b250YWxNZW51TW9kZSgpXG4gIH1cblxuICBpc0hvcml6b250YWxNZW51VmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0hvcml6b250YWxNZW51TW9kZSgpXG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCIhZ2xvYmFsRXJyTXNnOyBlbHNlIGdsb2JhbEVycm9yXCJcbiAgY2xhc3M9XCJsYXlvdXQtd3JhcHBlclwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAncC1pbnB1dC1maWxsZWQnOiBpbnB1dFN0eWxlID09PSAnZmlsbGVkJywgXG4gICAgJ3AtcmlwcGxlLWRpc2FibGVkJzogIXJpcHBsZSxcbiAgICAnbGF5b3V0LW1lbnUtYWN0aXZlJzogaXNTdGF0aWNhbE1lbnVWaXNpYmxlKCksXG4gICAgJ2xheW91dC1tZW51LWJ1dHRvbi1oaWRkZW4nOiBpc0hvcml6b250YWxNZW51TW9kZSgpXG4gIH1cIlxuICBbY2xhc3NdPVwiJ2xheW91dC1tZW51LScgKyBjb2xvclNjaGVtZSArICcgbGF5b3V0LXRvcGJhci0nICsgdG9wYmFyVGhlbWVcIlxuPlxuICA8b2N4LXNoZWxsLWhlYWRlciBbbWVudUJ1dHRvblRpdGxlXT1cIm1lbnVCdXR0b25UaXRsZVwiIChtZW51QnV0dG9uQ2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgIDxkaXYgKm5nSWY9XCJpc0hvcml6b250YWxNZW51VmlzaWJsZSgpXCI+XG4gICAgICA8b2N4LXNsb3QgbmFtZT1cIm9uZWN4LXNoZWxsLWhvcml6b250YWwtbWVudVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00IGZsZXggZmxleC1yb3cgZ2FwLTRcIj5cbiAgICAgICAgICAgIDxwLXNrZWxldG9uIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmUtYmxvY2tcIiBoZWlnaHQ9XCIzNXB4XCIgd2lkdGg9XCIxMjBweFwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgICAgIDxwLXNrZWxldG9uIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmUtYmxvY2tcIiBoZWlnaHQ9XCIzNXB4XCIgd2lkdGg9XCIxMjBweFwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvb2N4LXNsb3Q+XG4gICAgPC9kaXY+XG4gIDwvb2N4LXNoZWxsLWhlYWRlcj5cblxuICA8cC10b2FzdD48L3AtdG9hc3Q+XG5cbiAgPGRpdiBjbGFzcz1cIm1lbnUtd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtbWVudS1jb250YWluZXIgb3ZlcmZsb3ctYXV0b1wiICpuZ0lmPVwiaXNTdGF0aWNhbE1lbnVWaXNpYmxlKClcIj5cbiAgICAgIDxvY3gtc2xvdCBuYW1lPVwib25lY3gtc2hlbGwtdmVydGljYWwtbWVudVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uPlxuICAgICAgICAgIDxwLXNrZWxldG9uIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmUtYmxvY2sgcC0yXCIgaGVpZ2h0PVwiMzVweFwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvb2N4LXNsb3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtbWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGVudCByZWxhdGl2ZVwiPlxuICAgICAgPG9jeC1zbG90IG5hbWU9XCJvbmVjeC1zaGVsbC1zdWItaGVhZGVyXCI+PC9vY3gtc2xvdD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0NvbnRlbnRQcm92aWRlciB8fCAoc2hvd0NvbnRlbnRQcm92aWRlci5zaG93Q29udGVudCQgfCBhc3luYyk7IGVsc2UgYXBwTG9hZGluZ1wiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG9jeC1zaGVsbC1mb290ZXI+PC9vY3gtc2hlbGwtZm9vdGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwibWVudUFjdGl2ZSB8fCAhIWFjdGl2ZVRvcGJhckl0ZW1cIiBjbGFzcz1cImxheW91dC1tYXNrIG1vZGFsLWluXCI+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNnbG9iYWxFcnJvcj5cbiAgPG9jeC1zaGVsbC1lcnJvciBbZXJyQ29kZV09XCJnbG9iYWxFcnJNc2dcIj48L29jeC1zaGVsbC1lcnJvcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXBwTG9hZGluZz5cbiAgPGRpdiBbb2N4TG9hZGluZ0luZGljYXRvcl09XCJ0cnVlXCIgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGFic29sdXRlIHRvcC0wIGxlZnQtMFwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { shareReplay } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class PermissionsCacheService {
5
+ constructor() {
6
+ this.permissions = {};
7
+ }
8
+ getPermissions(appId, productName, cacheMissFkt) {
9
+ const key = appId + '|' + productName;
10
+ if (!this.permissions[key]) {
11
+ this.permissions[key] = cacheMissFkt(appId, productName).pipe(shareReplay());
12
+ }
13
+ return this.permissions[key];
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PermissionsCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
16
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PermissionsCacheService, providedIn: 'root' }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PermissionsCacheService, decorators: [{
19
+ type: Injectable,
20
+ args: [{ providedIn: 'root' }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hlbGwtY29yZS9zcmMvbGliL3NlcnZpY2VzL3Blcm1pc3Npb25zLWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFBOztBQUc5QyxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRUUsZ0JBQVcsR0FBeUMsRUFBRSxDQUFBO0tBYXZEO0lBWEMsY0FBYyxDQUNaLEtBQWEsRUFDYixXQUFtQixFQUNuQixZQUEwRTtRQUUxRSxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQTtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUM5RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzlCLENBQUM7OEdBYlUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FEVixNQUFNOzsyRkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJ1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zQ2FjaGVTZXJ2aWNlIHtcbiAgcGVybWlzc2lvbnM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8c3RyaW5nW10+PiA9IHt9XG5cbiAgZ2V0UGVybWlzc2lvbnMoXG4gICAgYXBwSWQ6IHN0cmluZyxcbiAgICBwcm9kdWN0TmFtZTogc3RyaW5nLFxuICAgIGNhY2hlTWlzc0ZrdDogKGFwcElkOiBzdHJpbmcsIHByb2R1Y3ROYW1lOiBzdHJpbmcpID0+IE9ic2VydmFibGU8c3RyaW5nW10+XG4gICk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICBjb25zdCBrZXkgPSBhcHBJZCArICd8JyArIHByb2R1Y3ROYW1lXG4gICAgaWYgKCF0aGlzLnBlcm1pc3Npb25zW2tleV0pIHtcbiAgICAgIHRoaXMucGVybWlzc2lvbnNba2V5XSA9IGNhY2hlTWlzc0ZrdChhcHBJZCwgcHJvZHVjdE5hbWUpLnBpcGUoc2hhcmVSZXBsYXkoKSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnNba2V5XVxuICB9XG59XG4iXX0=
@@ -12,11 +12,11 @@ import { SkeletonModule } from 'primeng/skeleton';
12
12
  import { PortalCoreModule } from '@onecx/portal-integration-angular';
13
13
  import * as i0 from "@angular/core";
14
14
  export class ShellCoreModule {
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ShellCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: ShellCoreModule, declarations: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, GlobalErrorComponent], imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule, SkeletonModule, PortalCoreModule], exports: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, ToastModule, GlobalErrorComponent] }); }
17
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ShellCoreModule, imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule, SkeletonModule, PortalCoreModule, ToastModule] }); }
15
18
  }
16
- ShellCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ShellCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- ShellCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: ShellCoreModule, declarations: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, GlobalErrorComponent], imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule, SkeletonModule, PortalCoreModule], exports: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, ToastModule, GlobalErrorComponent] });
18
- ShellCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ShellCoreModule, imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule, SkeletonModule, PortalCoreModule, ToastModule] });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ShellCoreModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ShellCoreModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule, SkeletonModule, PortalCoreModule],
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
24
24
  exports: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, ToastModule, GlobalErrorComponent],
25
25
  }]
26
26
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9zaGVsbC1jb3JlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDckUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUE7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUE7QUFDaEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOztBQU9wRSxNQUFNLE9BQU8sZUFBZTs7NkdBQWYsZUFBZTs4R0FBZixlQUFlLGlCQUhYLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsYUFEMUYsWUFBWSxFQUFFLFlBQVksRUFBRSw2QkFBNkIsRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixhQUVsSSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLG9CQUFvQjs4R0FFakcsZUFBZSxZQUpoQixZQUFZLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBRWpFLFdBQVc7NEZBRTNFLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSw2QkFBNkIsRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDO29CQUM3SSxZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JHLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUM7aUJBQzlHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgQW5ndWxhckFjY2VsZXJhdG9yTW9kdWxlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItYWNjZWxlcmF0b3InXG5pbXBvcnQgeyBBbmd1bGFyUmVtb3RlQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLXJlbW90ZS1jb21wb25lbnRzJ1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0J1xuaW1wb3J0IHsgR2xvYmFsRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZXJyb3ItY29tcG9uZW50L2dsb2JhbC1lcnJvci5jb21wb25lbnQnXG5pbXBvcnQgeyBQb3J0YWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcG9ydGFsLWZvb3Rlci9wb3J0YWwtZm9vdGVyLmNvbXBvbmVudCdcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3J0YWwtaGVhZGVyL2hlYWRlci5jb21wb25lbnQnXG5pbXBvcnQgeyBQb3J0YWxWaWV3cG9ydENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3J0YWwtdmlld3BvcnQvcG9ydGFsLXZpZXdwb3J0LmNvbXBvbmVudCdcbmltcG9ydCB7IFNrZWxldG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9za2VsZXRvbidcbmltcG9ydCB7IFBvcnRhbENvcmVNb2R1bGUgfSBmcm9tICdAb25lY3gvcG9ydGFsLWludGVncmF0aW9uLWFuZ3VsYXInXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgQW5ndWxhclJlbW90ZUNvbXBvbmVudHNNb2R1bGUsIEFuZ3VsYXJBY2NlbGVyYXRvck1vZHVsZSwgVG9hc3RNb2R1bGUsIFNrZWxldG9uTW9kdWxlLCBQb3J0YWxDb3JlTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbUG9ydGFsVmlld3BvcnRDb21wb25lbnQsIEhlYWRlckNvbXBvbmVudCwgUG9ydGFsRm9vdGVyQ29tcG9uZW50LCBHbG9iYWxFcnJvckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtQb3J0YWxWaWV3cG9ydENvbXBvbmVudCwgSGVhZGVyQ29tcG9uZW50LCBQb3J0YWxGb290ZXJDb21wb25lbnQsIFRvYXN0TW9kdWxlLCBHbG9iYWxFcnJvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsQ29yZU1vZHVsZSB7fVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9zaGVsbC1jb3JlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDckUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUE7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUE7QUFDaEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOztBQU9wRSxNQUFNLE9BQU8sZUFBZTs4R0FBZixlQUFlOytHQUFmLGVBQWUsaUJBSFgsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixhQUQxRixZQUFZLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLGFBRWxJLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9COytHQUVqRyxlQUFlLFlBSmhCLFlBQVksRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFFakUsV0FBVzs7MkZBRTNFLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSw2QkFBNkIsRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDO29CQUM3SSxZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JHLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUM7aUJBQzlHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgQW5ndWxhckFjY2VsZXJhdG9yTW9kdWxlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItYWNjZWxlcmF0b3InXG5pbXBvcnQgeyBBbmd1bGFyUmVtb3RlQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLXJlbW90ZS1jb21wb25lbnRzJ1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0J1xuaW1wb3J0IHsgR2xvYmFsRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZXJyb3ItY29tcG9uZW50L2dsb2JhbC1lcnJvci5jb21wb25lbnQnXG5pbXBvcnQgeyBQb3J0YWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcG9ydGFsLWZvb3Rlci9wb3J0YWwtZm9vdGVyLmNvbXBvbmVudCdcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3J0YWwtaGVhZGVyL2hlYWRlci5jb21wb25lbnQnXG5pbXBvcnQgeyBQb3J0YWxWaWV3cG9ydENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3J0YWwtdmlld3BvcnQvcG9ydGFsLXZpZXdwb3J0LmNvbXBvbmVudCdcbmltcG9ydCB7IFNrZWxldG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9za2VsZXRvbidcbmltcG9ydCB7IFBvcnRhbENvcmVNb2R1bGUgfSBmcm9tICdAb25lY3gvcG9ydGFsLWludGVncmF0aW9uLWFuZ3VsYXInXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgQW5ndWxhclJlbW90ZUNvbXBvbmVudHNNb2R1bGUsIEFuZ3VsYXJBY2NlbGVyYXRvck1vZHVsZSwgVG9hc3RNb2R1bGUsIFNrZWxldG9uTW9kdWxlLCBQb3J0YWxDb3JlTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbUG9ydGFsVmlld3BvcnRDb21wb25lbnQsIEhlYWRlckNvbXBvbmVudCwgUG9ydGFsRm9vdGVyQ29tcG9uZW50LCBHbG9iYWxFcnJvckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtQb3J0YWxWaWV3cG9ydENvbXBvbmVudCwgSGVhZGVyQ29tcG9uZW50LCBQb3J0YWxGb290ZXJDb21wb25lbnQsIFRvYXN0TW9kdWxlLCBHbG9iYWxFcnJvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsQ29yZU1vZHVsZSB7fVxuIl19