@posiwise/admin-module 0.0.138 → 0.0.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/admin-guard.service.mjs +1 -2
- package/esm2022/lib/admin.module.mjs +11 -3
- package/esm2022/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +3 -3
- package/esm2022/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +4 -5
- package/esm2022/lib/components/config/global-config-details/global-config-details.component.mjs +4 -5
- package/esm2022/lib/components/config/global-config-list/global-config-list.component.mjs +3 -3
- package/esm2022/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +3 -3
- package/esm2022/lib/components/credentials/credentials/credentials.component.mjs +3 -3
- package/esm2022/lib/components/credentials/credentials-details/credentials-details.component.mjs +4 -5
- package/esm2022/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +3 -3
- package/esm2022/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +4 -5
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +7 -9
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +2 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +3 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +2 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +4 -5
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +2 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +2 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +2 -3
- package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +3 -3
- package/esm2022/lib/components/faqs/add-faq/add-faq.component.mjs +5 -5
- package/esm2022/lib/components/faqs/edit-faq/edit-faq.component.mjs +5 -5
- package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +6 -7
- package/esm2022/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +4 -5
- package/esm2022/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +3 -3
- package/esm2022/lib/components/generic/generic-misc/generic-misc.component.mjs +1 -1
- package/esm2022/lib/components/incidents/add-edit-incident/add-edit-incident.component.mjs +15 -18
- package/esm2022/lib/components/incidents/incidents-list/incidents-list.component.mjs +3 -4
- package/esm2022/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +4 -5
- package/esm2022/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +3 -3
- package/esm2022/lib/components/mailer/mailer-details/mailer-details.component.mjs +4 -5
- package/esm2022/lib/components/mailer/mailer-list/mailer-list.component.mjs +3 -3
- package/esm2022/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +4 -5
- package/esm2022/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +8 -10
- package/esm2022/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +3 -3
- package/esm2022/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +3 -3
- package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items-view-details/newsletters-items-view-details.component.mjs +4 -4
- package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +3 -4
- package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +3 -3
- package/esm2022/lib/components/permissions/permissions-details/permissions-details.component.mjs +4 -5
- package/esm2022/lib/components/permissions/permissions-list/permissions-list.component.mjs +3 -3
- package/esm2022/lib/components/permissions/role-details/role-details.component.mjs +4 -5
- package/esm2022/lib/components/permissions/roles-list/roles-list.component.mjs +4 -4
- package/esm2022/lib/components/products/product-details/product-details.component.mjs +16 -11
- package/esm2022/lib/components/products/products-insight/products-insight.component.mjs +4 -5
- package/esm2022/lib/components/products/products-list/products-list.component.mjs +5 -8
- package/esm2022/lib/components/products/products-tabs/products-tabs.component.mjs +2 -2
- package/esm2022/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +5 -6
- package/esm2022/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +4 -5
- package/esm2022/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +4 -5
- package/esm2022/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +8 -12
- package/esm2022/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +7 -11
- package/esm2022/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +1 -1
- package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +4 -5
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-price/subscription-insight-average-price.component.mjs +64 -0
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-user/subscription-insight-average-user.component.mjs +64 -0
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-product-session/subscription-insight-product-session.component.mjs +64 -0
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +7 -4
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-list/invite-users/invite-users.component.mjs +15 -18
- package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +17 -21
- package/esm2022/lib/components/tags/tags-category/tags-category.component.mjs +16 -14
- package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +7 -3
- package/esm2022/lib/components/tips/tip-detail/tip-detail.component.mjs +3 -3
- package/esm2022/lib/components/tips/tips-list/tips-list.component.mjs +1 -1
- package/esm2022/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +11 -12
- package/esm2022/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +11 -12
- package/esm2022/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +15 -16
- package/esm2022/lib/components/tracking/events/events.component.mjs +11 -12
- package/esm2022/lib/components/tracking/versions/versions.component.mjs +15 -16
- package/esm2022/lib/components/users/user-details/user-details.component.mjs +4 -6
- package/esm2022/lib/components/users/users-insight/users-insight.component.mjs +3 -3
- package/esm2022/lib/components/users/users-list/users-list.component.mjs +38 -23
- package/esm2022/lib/components/users/users-tabs/users-tabs.component.mjs +1 -1
- package/esm2022/lib/shared/interface/newsletter.interface.mjs +1 -1
- package/esm2022/lib/shared/interface/tracking.interface.mjs +1 -1
- package/fesm2022/posiwise-admin-module.mjs +462 -290
- package/fesm2022/posiwise-admin-module.mjs.map +1 -1
- package/lib/admin-guard.service.d.ts +3 -3
- package/lib/admin.module.d.ts +73 -70
- package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +2 -2
- package/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.d.ts +1 -1
- package/lib/components/config/global-config-details/global-config-details.component.d.ts +1 -1
- package/lib/components/config/global-config-list/global-config-list.component.d.ts +2 -2
- package/lib/components/contact-us/contact-us-list/contact-us-list.component.d.ts +2 -2
- package/lib/components/credentials/credentials/credentials.component.d.ts +2 -2
- package/lib/components/credentials/credentials-details/credentials-details.component.d.ts +1 -1
- package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +2 -2
- package/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +3 -3
- package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +2 -2
- package/lib/components/faqs/add-faq/add-faq.component.d.ts +3 -3
- package/lib/components/faqs/edit-faq/edit-faq.component.d.ts +4 -4
- package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +4 -4
- package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +2 -2
- package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +4 -4
- package/lib/components/generic/generic-misc/generic-misc.component.d.ts +1 -1
- package/lib/components/incidents/add-edit-incident/add-edit-incident.component.d.ts +4 -5
- package/lib/components/incidents/incidents-list/incidents-list.component.d.ts +1 -1
- package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +2 -2
- package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +2 -2
- package/lib/components/mailer/mailer-details/mailer-details.component.d.ts +1 -1
- package/lib/components/mailer/mailer-list/mailer-list.component.d.ts +2 -2
- package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +6 -7
- package/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.d.ts +2 -2
- package/lib/components/newsletters/newsletters-insight/newsletters-insight.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-items/newsletters-items-view-details/newsletters-items-view-details.component.d.ts +3 -3
- package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +3 -3
- package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +2 -2
- package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +1 -1
- package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +3 -3
- package/lib/components/permissions/role-details/role-details.component.d.ts +1 -1
- package/lib/components/permissions/roles-list/roles-list.component.d.ts +2 -2
- package/lib/components/products/product-details/product-details.component.d.ts +4 -3
- package/lib/components/products/products-insight/products-insight.component.d.ts +1 -1
- package/lib/components/products/products-list/products-list.component.d.ts +3 -3
- package/lib/components/products/users-list-for-product/users-list-for-product.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-agents/subscription-agents.component.d.ts +3 -3
- package/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.d.ts +2 -2
- package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +6 -8
- package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +6 -7
- package/lib/components/subscriptions/subscription-products/subscription-products.component.d.ts +2 -2
- package/lib/components/subscriptions/subscription-users/subscription-users.component.d.ts +8 -9
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-price/subscription-insight-average-price.component.d.ts +33 -0
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-user/subscription-insight-average-user.component.d.ts +33 -0
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.d.ts +5 -6
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-product-session/subscription-insight-product-session.component.d.ts +33 -0
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.d.ts +2 -2
- package/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.d.ts +2 -2
- package/lib/components/subscriptions/subscriptions-list/invite-users/invite-users.component.d.ts +7 -8
- package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +8 -9
- package/lib/components/tags/tags-category/tags-category.component.d.ts +6 -5
- package/lib/components/tags/tags-list/tags-list.component.d.ts +4 -3
- package/lib/components/tips/tip-detail/tip-detail.component.d.ts +1 -1
- package/lib/components/tips/tips-list/tips-list.component.d.ts +1 -1
- package/lib/components/tracking/ahoy-events/ahoy-events.component.d.ts +5 -5
- package/lib/components/tracking/ahoy-messages/ahoy-messages.component.d.ts +3 -3
- package/lib/components/tracking/ahoy-visits/ahoy-visits.component.d.ts +4 -4
- package/lib/components/tracking/events/events.component.d.ts +4 -4
- package/lib/components/tracking/versions/versions.component.d.ts +6 -6
- package/lib/components/users/user-details/user-details.component.d.ts +1 -1
- package/lib/components/users/users-insight/users-insight.component.d.ts +1 -1
- package/lib/components/users/users-list/users-list.component.d.ts +12 -7
- package/lib/components/users/users-tabs/users-tabs.component.d.ts +1 -1
- package/lib/shared/interface/newsletter.interface.d.ts +1 -0
- package/lib/shared/interface/tracking.interface.d.ts +1 -2
- package/package.json +1 -1
|
@@ -31,10 +31,10 @@ export class UserInsightComponent extends AppBaseComponent {
|
|
|
31
31
|
super.ngOnDestroy();
|
|
32
32
|
}
|
|
33
33
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserInsightComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: UserInsightComponent, selector: "pw-admin-user-insight", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-sm-12\">\n <h2 class=\"card-title\">User Statistics</h2>\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n </ng-template>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n", dependencies: [{ kind: "component", type: i2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: UserInsightComponent, selector: "pw-admin-user-insight", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-sm-12\">\n <h2 class=\"card-title\">User Statistics</h2>\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n </ng-template>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n", dependencies: [{ kind: "component", type: i2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
|
|
35
35
|
}
|
|
36
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserInsightComponent, decorators: [{
|
|
37
37
|
type: Component,
|
|
38
|
-
args: [{ selector: 'pw-admin-user-insight', template: "<div class=\"row\">\n <div class=\"col-sm-12\">\n <h2 class=\"card-title\">User Statistics</h2>\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n </ng-template>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n" }]
|
|
38
|
+
args: [{ selector: 'pw-admin-user-insight', template: "<div class=\"row\">\n <div class=\"col-sm-12\">\n <h2 class=\"card-title\">User Statistics</h2>\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n </ng-template>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n" }]
|
|
39
39
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtaW5zaWdodC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMtaW5zaWdodC91c2Vycy1pbnNpZ2h0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy91c2Vycy91c2Vycy1pbnNpZ2h0L3VzZXJzLWluc2lnaHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBTTlELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFPdEQsWUFDcUIsWUFBMEIsRUFDM0MsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFJL0MsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVk7YUFDWixlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUNwQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDMUIsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBakNRLG9CQUFvQjttR0FBcEIsb0JBQW9CLG9GQ1hqQyxnYkFhQTs7NEZERmEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNJLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9hZG1pbi1tb2R1bGUtdXRpbHMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxvdGx5IH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1hZG1pbi11c2VyLWluc2lnaHQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91c2Vycy1pbnNpZ2h0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBVc2VySW5zaWdodENvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgZ3JhcGg6IFBsb3RseS5GaWd1cmU7XG5cbiAgICBpc0xvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbi5pZDtcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoYXJ0RGF0YSgpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLmdldFVzZXJzSW5zaWdodCh0aGlzLnN1YnNjcmlwdGlvbklkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cbiAgICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlXCI+VXNlciBTdGF0aXN0aWNzPC9oMj5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiZ3JhcGhcIj5cbiAgICAgIDxwbG90bHktcGxvdCBbZGF0YV09XCJncmFwaD8uZGF0YVwiXG4gICAgICAgIFtsYXlvdXRdPVwiZ3JhcGg/LmxheW91dFwiIFt1c2VSZXNpemVIYW5kbGVyXT1cInRydWVcIj48L3Bsb3RseS1wbG90PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -78,29 +78,44 @@ export class UserListComponent extends AppBaseComponent {
|
|
|
78
78
|
this.localStorage.getItem$('user-list-state').subscribe(result => {
|
|
79
79
|
if (result) {
|
|
80
80
|
const res = JSON.parse(result);
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (res?.searchDataSource?.length) {
|
|
87
|
-
this.searchDataSource = res?.searchDataSource || [];
|
|
88
|
-
}
|
|
89
|
-
if (res?.selectedOption?.value === 'feature_key') {
|
|
90
|
-
this.criteria = res?.filterByFeatureKeys || [];
|
|
91
|
-
}
|
|
92
|
-
if (res?.selectedOption?.value === 'product') {
|
|
93
|
-
this.criteria = res?.filterByProducts || [];
|
|
94
|
-
}
|
|
95
|
-
if (res?.selectedOption?.value === 'role') {
|
|
96
|
-
this.criteria = res?.filterByRoles || [];
|
|
97
|
-
}
|
|
98
|
-
this.filterByFeatureKeys = res?.filterByFeatureKeys || [];
|
|
99
|
-
this.filterByProducts = res?.filterByProducts || [];
|
|
100
|
-
this.filterByRoles = res?.filterByRoles || [];
|
|
81
|
+
this.initializeSearchText(res);
|
|
82
|
+
this.initializeSelectedOption(res);
|
|
83
|
+
this.initializeSearchDataSource(res);
|
|
84
|
+
this.initializeCriteria(res);
|
|
85
|
+
this.initializeFilters(res);
|
|
101
86
|
}
|
|
102
87
|
});
|
|
103
88
|
}
|
|
89
|
+
initializeSearchText(res) {
|
|
90
|
+
this.searchText = res?.searchText || '';
|
|
91
|
+
}
|
|
92
|
+
initializeSelectedOption(res) {
|
|
93
|
+
if (res?.selectedOption?.value) {
|
|
94
|
+
this.selectedOption = res?.selectedOption;
|
|
95
|
+
this.filterSource = [this.selectedOption?.value];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
initializeSearchDataSource(res) {
|
|
99
|
+
if (res?.searchDataSource?.length) {
|
|
100
|
+
this.searchDataSource = res?.searchDataSource || [];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
initializeCriteria(res) {
|
|
104
|
+
if (res?.selectedOption?.value === 'feature_key') {
|
|
105
|
+
this.criteria = res?.filterByFeatureKeys || [];
|
|
106
|
+
}
|
|
107
|
+
if (res?.selectedOption?.value === 'product') {
|
|
108
|
+
this.criteria = res?.filterByProducts || [];
|
|
109
|
+
}
|
|
110
|
+
if (res?.selectedOption?.value === 'role') {
|
|
111
|
+
this.criteria = res?.filterByRoles || [];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
initializeFilters(res) {
|
|
115
|
+
this.filterByFeatureKeys = res?.filterByFeatureKeys || [];
|
|
116
|
+
this.filterByProducts = res?.filterByProducts || [];
|
|
117
|
+
this.filterByRoles = res?.filterByRoles || [];
|
|
118
|
+
}
|
|
104
119
|
ngAfterViewChecked() {
|
|
105
120
|
this.cdr.detectChanges();
|
|
106
121
|
}
|
|
@@ -305,11 +320,11 @@ export class UserListComponent extends AppBaseComponent {
|
|
|
305
320
|
this.adminService.remove2fa(this.remove2faUserId, this.subscriptionId).subscribe();
|
|
306
321
|
}
|
|
307
322
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserListComponent, deps: [{ token: i1.AdminService }, { token: i2.CustomToastService }, { token: i2.ProductService }, { token: i0.Injector }, { token: i2.AuthService }, { token: i0.ChangeDetectorRef }, { token: i2.WindowService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
308
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: UserListComponent, selector: "pw-admin-user-list", viewQueries: [{ propertyName: "passwordValidationModalForUserDelete", first: true, predicate: ["passwordValidationModalForUserDelete"], descendants: true }, { propertyName: "passwordValidationModalForImpersonate", first: true, predicate: ["passwordValidationModalForImpersonate"], descendants: true }, { propertyName: "passwordValidationModalForRemove2fa", first: true, predicate: ["passwordValidationModalForRemove2fa"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create User\n </a>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\">\n <ng-template [ngIf]=\"!isLoaded\">\n <p-progressSpinner> </p-progressSpinner>\n </ng-template>\n</div>\n<div class=\"primeng-datatable-container mt-0\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"col-4\"\n *ngIf=\"selectedOption\">\n <p-multiSelect [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event)\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Select {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search User...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sortIcon field=\"id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sortIcon field=\"first_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sortIcon field=\"last_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sortIcon field=\"email\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sortIcon field=\"slug\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sortIcon field=\"encrypted_password\"></p-sortIcon>\n </th>\n\n <th scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sortIcon field=\"sessions_last_month\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sortIcon field=\"signed_up_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n <span *ngIf=\"user?.alpha\"\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"user?.beta\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n <span class=\"ms-2\" *ngIf=\"user?.blocked\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n <span *ngIf=\"user?.current_sign_in_at;else lastSignin\">\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n <ng-template #lastSignin>\n {{ user.last_sign_in_at | dateFormat }}\n </ng-template>\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Impersonate this user\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows\"\n (click)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n <li ngbTooltip=\"Disable 2fa\"\n (click)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <ng-template [ngIf]=\"currentUser && user.id !== currentUser.id\">\n <li ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <li ngbTooltip=\"Edit\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<div *ngIf=\"!loading && totalRecordsUnFiltered === 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.search-input input{width:100%}.w-150{width:150px}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}\n"], dependencies: [{ kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.PasswordValidationComponent, selector: "pw-password-validation", outputs: ["successEvent"] }, { kind: "directive", type: i11.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i10.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i13.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i13.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i14.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i15.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i16.DateFormatPipe, name: "dateFormat" }] }); }
|
|
323
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: UserListComponent, selector: "pw-admin-user-list", viewQueries: [{ propertyName: "passwordValidationModalForUserDelete", first: true, predicate: ["passwordValidationModalForUserDelete"], descendants: true }, { propertyName: "passwordValidationModalForImpersonate", first: true, predicate: ["passwordValidationModalForImpersonate"], descendants: true }, { propertyName: "passwordValidationModalForRemove2fa", first: true, predicate: ["passwordValidationModalForRemove2fa"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create User\n </a>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\">\n <ng-template [ngIf]=\"!isLoaded\">\n <p-progressSpinner> </p-progressSpinner>\n </ng-template>\n</div>\n<div class=\"primeng-datatable-container mt-0\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"col-4\"\n *ngIf=\"selectedOption\">\n <p-multiSelect [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event)\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Select {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search User...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sortIcon field=\"id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sortIcon field=\"first_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sortIcon field=\"last_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sortIcon field=\"email\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sortIcon field=\"slug\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sortIcon field=\"encrypted_password\"></p-sortIcon>\n </th>\n\n <th scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sortIcon field=\"sessions_last_month\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sortIcon field=\"signed_up_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n <span *ngIf=\"user?.alpha\"\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"user?.beta\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n <span class=\"ms-2\" *ngIf=\"user?.blocked\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n <span *ngIf=\"user?.current_sign_in_at;else lastSignin\">\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n <ng-template #lastSignin>\n {{ user.last_sign_in_at | dateFormat }}\n </ng-template>\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Impersonate this user\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows\"\n (click)=\"onImpersonate(user)\"\n (keydown.enter)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n <li ngbTooltip=\"Disable 2fa\"\n (click)=\"disable2fa(user?.id)\"\n (keydown.enter)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <ng-template [ngIf]=\"currentUser && user.id !== currentUser.id\">\n <li ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <li ngbTooltip=\"Edit\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(user)\"\n (keydown.space)=\"onDelete(user)\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<div *ngIf=\"!loading && totalRecordsUnFiltered === 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.search-input input{width:100%}.w-150{width:150px}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}\n"], dependencies: [{ kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.PasswordValidationComponent, selector: "pw-password-validation", outputs: ["successEvent"] }, { kind: "directive", type: i11.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i10.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i13.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i13.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i14.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i15.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i16.DateFormatPipe, name: "dateFormat" }] }); }
|
|
309
324
|
}
|
|
310
325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserListComponent, decorators: [{
|
|
311
326
|
type: Component,
|
|
312
|
-
args: [{ selector: 'pw-admin-user-list', template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create User\n </a>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\">\n <ng-template [ngIf]=\"!isLoaded\">\n <p-progressSpinner> </p-progressSpinner>\n </ng-template>\n</div>\n<div class=\"primeng-datatable-container mt-0\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"col-4\"\n *ngIf=\"selectedOption\">\n <p-multiSelect [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event)\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Select {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search User...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sortIcon field=\"id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sortIcon field=\"first_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sortIcon field=\"last_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sortIcon field=\"email\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sortIcon field=\"slug\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sortIcon field=\"encrypted_password\"></p-sortIcon>\n </th>\n\n <th scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sortIcon field=\"sessions_last_month\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sortIcon field=\"signed_up_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n <span *ngIf=\"user?.alpha\"\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"user?.beta\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n <span class=\"ms-2\" *ngIf=\"user?.blocked\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n <span *ngIf=\"user?.current_sign_in_at;else lastSignin\">\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n <ng-template #lastSignin>\n {{ user.last_sign_in_at | dateFormat }}\n </ng-template>\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Impersonate this user\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows\"\n (click)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n <li ngbTooltip=\"Disable 2fa\"\n (click)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <ng-template [ngIf]=\"currentUser && user.id !== currentUser.id\">\n <li ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <li ngbTooltip=\"Edit\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<div *ngIf=\"!loading && totalRecordsUnFiltered === 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.search-input input{width:100%}.w-150{width:150px}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}\n"] }]
|
|
327
|
+
args: [{ selector: 'pw-admin-user-list', template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create User\n </a>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\">\n <ng-template [ngIf]=\"!isLoaded\">\n <p-progressSpinner> </p-progressSpinner>\n </ng-template>\n</div>\n<div class=\"primeng-datatable-container mt-0\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"col-4\"\n *ngIf=\"selectedOption\">\n <p-multiSelect [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event)\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Select {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search User...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sortIcon field=\"id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sortIcon field=\"first_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sortIcon field=\"last_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sortIcon field=\"email\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sortIcon field=\"slug\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sortIcon field=\"encrypted_password\"></p-sortIcon>\n </th>\n\n <th scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sortIcon field=\"sessions_last_month\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sortIcon field=\"signed_up_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n <span *ngIf=\"user?.alpha\"\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"user?.beta\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n <span class=\"ms-2\" *ngIf=\"user?.blocked\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n <span *ngIf=\"user?.current_sign_in_at;else lastSignin\">\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n <ng-template #lastSignin>\n {{ user.last_sign_in_at | dateFormat }}\n </ng-template>\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Impersonate this user\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows\"\n (click)=\"onImpersonate(user)\"\n (keydown.enter)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n <li ngbTooltip=\"Disable 2fa\"\n (click)=\"disable2fa(user?.id)\"\n (keydown.enter)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <ng-template [ngIf]=\"currentUser && user.id !== currentUser.id\">\n <li ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <li ngbTooltip=\"Edit\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(user)\"\n (keydown.space)=\"onDelete(user)\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<div *ngIf=\"!loading && totalRecordsUnFiltered === 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.search-input input{width:100%}.w-150{width:150px}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}\n"] }]
|
|
313
328
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i2.CustomToastService }, { type: i2.ProductService }, { type: i0.Injector }, { type: i2.AuthService }, { type: i0.ChangeDetectorRef }, { type: i2.WindowService }], propDecorators: { passwordValidationModalForUserDelete: [{
|
|
314
329
|
type: ViewChild,
|
|
315
330
|
args: ['passwordValidationModalForUserDelete', { static: false }]
|
|
@@ -320,4 +335,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
320
335
|
type: ViewChild,
|
|
321
336
|
args: ['passwordValidationModalForRemove2fa', { static: false }]
|
|
322
337
|
}] } });
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMtbGlzdC91c2Vycy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy91c2Vycy91c2Vycy1saXN0L3VzZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUNILGNBQWMsRUFDZCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxrQkFBa0IsRUFDckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU8xQyxNQUFNLE9BQU8saUJBQ1QsU0FBUSxnQkFBZ0I7SUFtRHhCLFlBQ1ksWUFBMEIsRUFDMUIs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dUJBQUMscUNBQXFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhenlMb2FkRXZlbnQsIFNlbGVjdEl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9hZG1pbi1tb2R1bGUtdXRpbHMnO1xuaW1wb3J0IHsgUk9VVEVSUyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yb3V0ZXJzL3JvdXRlcnMnO1xuaW1wb3J0IHsgUEFHRV9TSVpFIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL3NoYXJlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IFBhZ2luZyB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgUHJvZHVjdFNlcnZpY2UsXG4gICAgV2luZG93U2VydmljZSxcbiAgICBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBBdXRoU2VydmljZSxcbiAgICBDdXN0b21Ub2FzdFNlcnZpY2Vcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWFkbWluLXVzZXItbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VzZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3VzZXJzLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdENvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBAVmlld0NoaWxkKCdwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclVzZXJEZWxldGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclVzZXJEZWxldGU6IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvckltcGVyc29uYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JJbXBlcnNvbmF0ZTogUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUmVtb3ZlMmZhJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JSZW1vdmUyZmE6IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudDtcbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcbiAgICB1c2VyczogVXNlcltdID0gW107XG4gICAgYWxsUm9sZXM6IFNlbGVjdEl0ZW1bXTtcbiAgICBzZWFyY2hUZXh0ID0gJyc7XG4gICAgYWxsVXNlcnM6IFVzZXJbXSA9IFtdO1xuICAgIHByb2R1Y3RMaXN0OiBTZWxlY3RJdGVtW107XG4gICAgbG9hZGluZyA9IHRydWU7XG4gICAgaXNMb2FkZWQgPSBmYWxzZTtcbiAgICBzZWFyY2hPcHRpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1JvbGUnLFxuICAgICAgICAgICAgdmFsdWU6ICdyb2xlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1Byb2R1Y3QnLFxuICAgICAgICAgICAgdmFsdWU6ICdwcm9kdWN0J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0ZlYXR1cmUgS2V5JyxcbiAgICAgICAgICAgIHZhbHVlOiAnZmVhdHVyZV9rZXknXG4gICAgICAgIH1cbiAgICBdO1xuICAgIHNlYXJjaERhdGFTb3VyY2UgPSBbXTtcbiAgICBzZWxlY3RlZE9wdGlvbjogU2VsZWN0SXRlbTtcbiAgICBjdXJyZW50VXNlcjogVXNlcjtcbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuICAgIHJvdXRlcnMgPSBST1VURVJTO1xuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG4gICAgbWFzdGVyUHJvZHVjdElkID0gdGhpcy5hcHBDb25maWcubWFzdGVyX3N1YnNjcmlwdGlvbi5wcm9kdWN0X2lkO1xuICAgIGZlYXR1cmVLZXlzTGlzdCA9IFtdO1xuICAgIHByaXZhdGUgZmlsdGVyQnlQcm9kdWN0cyA9IFtdO1xuXG4gICAgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IDA7XG5cbiAgICBwcml2YXRlIGZpbHRlckJ5Um9sZXMgPSBbXTtcbiAgICBmaWx0ZXJCeUZlYXR1cmVLZXlzID0gW107XG4gICAgcHJpdmF0ZSB1c2VyVG9EZWxldGU6IFVzZXI7XG4gICAgY2hhdFBlcm1pc3Npb246IHN0cmluZztcbiAgICB1c2VyVG9JbXBlcnNvbmF0ZTogVXNlcjtcbiAgICByZW1vdmUyZmFVc2VySWQ6IG51bWJlcjtcbiAgICBmaWx0ZXJTb3VyY2U6IHN0cmluZ1tdO1xuICAgIGNyaXRlcmlhID0gW107XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdG9hc3RlcjogQ3VzdG9tVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHByb2R1Y3RTZXJ2aWNlOiBQcm9kdWN0U2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHdpbmRvd1NlcnZpY2U6IFdpbmRvd1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgIHRoaXMuY2hhdFBlcm1pc3Npb24gPSBgJHtQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3QucGVybWlzc2lvbn0uJHtQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3QuZmVhdHVyZV9rZXl9YDtcbiAgICAgICAgdGhpcy5nZXRSb2xlcygpO1xuICAgICAgICB0aGlzLmdldFByb2R1Y3RzKCk7XG4gICAgICAgIHRoaXMudXNlclN0b3JlKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXIgPSByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldFRhYmxlU3RhdGUoKSB7XG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCd1c2VyLWxpc3Qtc3RhdGUnKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gcmVzPy5zZWFyY2hUZXh0IHx8ICcnO1xuICAgICAgICAgICAgICAgIGlmIChyZXM/LnNlbGVjdGVkT3B0aW9uPy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gcmVzPy5zZWxlY3RlZE9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTb3VyY2UgPSBbdGhpcy5zZWxlY3RlZE9wdGlvbj8udmFsdWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzPy5zZWFyY2hEYXRhU291cmNlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhU291cmNlID0gcmVzPy5zZWFyY2hEYXRhU291cmNlIHx8IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzPy5zZWxlY3RlZE9wdGlvbj8udmFsdWUgPT09ICdmZWF0dXJlX2tleScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcml0ZXJpYSA9IHJlcz8uZmlsdGVyQnlGZWF0dXJlS2V5cyB8fCBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcz8uc2VsZWN0ZWRPcHRpb24/LnZhbHVlID09PSAncHJvZHVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcml0ZXJpYSA9IHJlcz8uZmlsdGVyQnlQcm9kdWN0cyB8fCBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcz8uc2VsZWN0ZWRPcHRpb24/LnZhbHVlID09PSAncm9sZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcml0ZXJpYSA9IHJlcz8uZmlsdGVyQnlSb2xlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gcmVzPy5maWx0ZXJCeUZlYXR1cmVLZXlzIHx8IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyQnlQcm9kdWN0cyA9IHJlcz8uZmlsdGVyQnlQcm9kdWN0cyB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckJ5Um9sZXMgPSByZXM/LmZpbHRlckJ5Um9sZXMgfHwgW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgIG9yZGVyX2J5OiBwYWdlRGV0YWlscy5zb3J0RmllbGQsXG4gICAgICAgICAgICBvcmRlcl9kaXJlY3Rpb246IHBhZ2VEZXRhaWxzLnNvcnRPcmRlcixcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGdldFJvbGVzKCkge1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5nZXRSb2xlcyh7fSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsUm9sZXMgPSByZXNwb25zZS5yb2xlcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0uaWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGdldFByb2R1Y3RzKCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHJvZHVjdHMoe1xuICAgICAgICAgICAgICAgIG1hc3Rlcl9wcm9kdWN0X2lkOiB0aGlzLm1hc3RlclByb2R1Y3RJZCxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwLnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXNwLnByb2R1Y3RzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsZW1lbnQubmFtZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gcmVzcC5wcm9kdWN0cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LmZlYXR1cmVfa2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50LmZlYXR1cmVfa2V5IHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RMaXN0LnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdOb25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGdldFVzZXJzKHBhZ2luZzogUGFnaW5nKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgcHJvZHVjdF9pZHM6IHRoaXMuZmlsdGVyQnlQcm9kdWN0cy5qb2luKCkgfHwgJycsXG4gICAgICAgICAgICByb2xlX2lkczogdGhpcy5maWx0ZXJCeVJvbGVzLmpvaW4oKSB8fCAnJyxcbiAgICAgICAgICAgIGZlYXR1cmVfa2V5czogdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzLmpvaW4oKSB8fCAnJyxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5nZXRVc2VycyhwYWdpbmcsIHBhcmFtcykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlcnMgPSByZXNwb25zZS51c2VycztcbiAgICAgICAgICAgIHRoaXMuYWxsVXNlcnMgPSBbLi4udGhpcy51c2Vyc107XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IHJlc3BvbnNlPy51bmZpbHRlcmVkX2NvdW50O1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uU2VhcmNoT3B0aW9uQ2hhbmdlKCRldmVudCkge1xuICAgICAgICB0aGlzLmNyaXRlcmlhID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnNlYXJjaE9wdGlvbnMuZmluZCh4ID0+IHgudmFsdWUgPT09ICRldmVudC52YWx1ZVswXSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdyb2xlJykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhU291cmNlID0gdGhpcy5hbGxSb2xlcztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdwcm9kdWN0Jykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhU291cmNlID0gdGhpcy5wcm9kdWN0TGlzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdmZWF0dXJlX2tleScpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YVNvdXJjZSA9IHRoaXMuZmVhdHVyZUtleXNMaXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhU291cmNlID0gW107XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgICAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQnlQcm9kdWN0cyA9IFtdO1xuICAgICAgICB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMgPSBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gW107XG4gICAgfVxuICAgIG9uU2VhcmNoQ3JpdGVyaWEoZXZ0KSB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSAncm9sZScpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb2xlQ2hhbmdlKGV2dCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbi52YWx1ZSA9PT0gJ3Byb2R1Y3QnKSB7XG4gICAgICAgICAgICB0aGlzLm9uUHJvZHVjdENoYW5nZShldnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdmZWF0dXJlX2tleScpIHtcbiAgICAgICAgICAgIHRoaXMub25GZWF0dXJlS2V5Q2hhbmdlKGV2dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFTb3VyY2UgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblJvbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0VXNlcnMoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uUHJvZHVjdENoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgICAgICB0aGlzLmZpbHRlckJ5UHJvZHVjdHMgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBvbkZlYXR1cmVLZXlDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0VXNlcnMoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uRGVsZXRlKHVzZXI6IFVzZXIpIHtcbiAgICAgICAgdGhpcy51c2VyVG9EZWxldGUgPSB1c2VyO1xuICAgICAgICB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZS5vcGVuKCk7XG4gICAgfVxuICAgIGRlbGV0ZVVzZXIoX2V2ZW50KSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlVXNlcih0aGlzLnVzZXJUb0RlbGV0ZS5pZCwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJzLmZpbHRlcih4ID0+IHguaWQgIT09IHRoaXMudXNlclRvRGVsZXRlLmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uVXNlcnMuRGVsZXRlZE1lc3NhZ2UnKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmdldFVzZXJzKHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJUb0RlbGV0ZSA9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgb25JbXBlcnNvbmF0ZSh1c2VyOiBVc2VyKSB7XG4gICAgICAgIHRoaXMudXNlclRvSW1wZXJzb25hdGUgPSB1c2VyO1xuICAgICAgICB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9ySW1wZXJzb25hdGUub3BlbigpO1xuICAgIH1cbiAgICBvblVzZXJJbXBlcnNvbmF0aW9uKF9ldmVudCkge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnBsYXRmb3JtJC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gcmVzO1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgICAgICAgIC5pbXBlcnNvbmF0ZVVzZXIoe1xuICAgICAgICAgICAgICAgICAgICBlbWFpbDogdGhpcy51c2VyVG9JbXBlcnNvbmF0ZS5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmVnYXA6IHBsYXRmb3JtICE9PSAnYnJvd3NlcidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhgWW91J3JlIG5vdyBiZWluZyBsb2dnZWQgaW4gYXMgYW5vdGhlciB1c2VyLi4uYCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yIDIgc2VjIGJlZm9yZSByZWRpcmVjdGluZyB1c2VyIHRvIGhvbWUgcGFnZVxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2luZG93U2VydmljZS5yZXBsYWNlVXJsKCcvaG9tZScpO1xuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCB2YWwgPSB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQsXG4gICAgICAgICAgICBmaWx0ZXJCeUZlYXR1cmVLZXlzOiB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMsXG4gICAgICAgICAgICBmaWx0ZXJCeVJvbGVzOiB0aGlzLmZpbHRlckJ5Um9sZXMsXG4gICAgICAgICAgICBmaWx0ZXJCeVByb2R1Y3RzOiB0aGlzLmZpbHRlckJ5UHJvZHVjdHMsXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbjogdGhpcy5zZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICAgIHNlYXJjaERhdGFTb3VyY2U6IHRoaXMuc2VhcmNoRGF0YVNvdXJjZVxuICAgICAgICB9O1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlci1saXN0LXN0YXRlJywgSlNPTi5zdHJpbmdpZnkodmFsKSk7XG4gICAgICAgIGNvbnN0IG5vdGlmaWVyID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKG5vdGlmaWVyKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLmluY2x1ZGVzKCcvdXNlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0kKCd1c2VyLWxpc3Qtc3RhdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubmV4dCgnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG4gICAgZGlzYWJsZTJmYShpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlMmZhVXNlcklkID0gaWQ7XG4gICAgICAgIHRoaXMucGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JSZW1vdmUyZmEub3BlbigpO1xuICAgIH1cbiAgICByZW1vdmUyZmEoX2V2ZW50KSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLnJlbW92ZTJmYSh0aGlzLnJlbW92ZTJmYVVzZXJJZCwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBmbG9hdC1zdGFydFwiPlVzZXJzPC9oMj5cbiAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBmbG9hdC1lbmRcIlxuICAgICAgaWQ9XCJidG4tY3JlYXRlXCJcbiAgICAgICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIlxuICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMudXNlcnNEZXRhaWxzICsgJ2FkZCddXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBDcmVhdGUgVXNlclxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhaXNMb2FkZWRcIj5cbiAgICA8cC1wcm9ncmVzc1NwaW5uZXI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJwcmltZW5nLWRhdGF0YWJsZS1jb250YWluZXIgbXQtMFwiIFtjbGFzcy5oaWRlVGFibGVdPVwidG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9PT0gMFwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1tYW5hZ2VtZW50LXRhYmxlIHRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICA8cC10YWJsZSAjZHRcbiAgICAgIFt2YWx1ZV09XCJ1c2Vyc1wiXG4gICAgICBbcGFnaW5hdG9yXT1cInRvdGFsUmVjb3JkcyAhPT0gMFwiXG4gICAgICBbbGF6eV09XCJ0cnVlXCJcbiAgICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgIFtmaWx0ZXJEZWxheV09XCIxMDAwXCJcbiAgICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiXG4gICAgICBbY3VzdG9tU29ydF09XCJ0cnVlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZpbHRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwic2VhcmNoT3B0aW9uc1wiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblNlYXJjaE9wdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgdXNlcnMgYnkgcm9sZSwgcHJvZHVjdCwgb3IgZmVhdHVyZVwiXG4gICAgICAgICAgICAgIFtzZWxlY3Rpb25MaW1pdF09XCIxXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJTb3VyY2VcIlxuICAgICAgICAgICAgICBbc2hvd1RvZ2dsZUFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3B0aW9uXCI+XG4gICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJzZWFyY2hEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uU2VhcmNoQ3JpdGVyaWEoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cInRydWVcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyaXRlcmlhXCJcbiAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHt7IHNlbGVjdGVkT3B0aW9uLnZhbHVlIH19c1wiXG4gICAgICAgICAgICAgIG1heFNlbGVjdGVkTGFiZWxzPVwiMlwiXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggbXQtMiBtZS0yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBVc2VyLi4uXCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInVzZXItc2VhcmNoXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cImR0LmZpbHRlckdsb2JhbCgkZXZlbnQudGFyZ2V0LnZhbHVlLCAnY29udGFpbnMnKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwid2QtOTBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImlkXCI+XG4gICAgICAgICAgICB7eyAnQWRtaW4uVXNlcnMuSWQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImlkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJmaXJzdF9uYW1lXCI+XG4gICAgICAgICAgICB7eyAnTGFiZWwuRmlyc3ROYW1lJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJmaXJzdF9uYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJsYXN0X25hbWVcIj5cbiAgICAgICAgICAgIHt7ICdMYWJlbC5MYXN0TmFtZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwibGFzdF9uYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJlbWFpbFwiPlxuICAgICAgICAgICAge3sgJ0xhYmVsLkVtYWlsJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJlbWFpbFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwic2x1Z1wiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLlNsdWcnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNsdWdcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImVuY3J5cHRlZF9wYXNzd29yZFwiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLkVtYWlsQ29uZmlybScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiZW5jcnlwdGVkX3Bhc3N3b3JkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInNlc3Npb25zX2xhc3RfbW9udGhcIj5cbiAgICAgICAgICAgIHt7ICdBZG1pbi5TdWJzY3JpcHRpb25zLlNlc3Npb25zVG90YWxMYXN0TW9udGgnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNlc3Npb25zX2xhc3RfbW9udGhcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImxhc3Rfc2lnbl9pbl9hdFwiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLkxhc3RMb2dpbicgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwibGFzdF9zaWduX2luX2F0XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJzaWduZWRfdXBfYXRcIj5cbiAgICAgICAgICAgIHt7ICdBZG1pbi5Vc2Vycy5SZWdpc3RlcmVkT24nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNpZ25lZF91cF9hdFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWxpc3QtZm91clwiPlxuICAgICAgICAgICAge3sgJ0xhYmVsLkFjdGlvbnMnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICAgIGxldC11c2VyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cImlkXCI+IHt7IHVzZXIuaWQgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJGaXJzdCBOYW1lXCI+PGEgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHVzZXIuc2x1Z11cIj57eyB1c2VyLmZpcnN0X25hbWUgfX08L2E+PC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTGFzdCBOYW1lXCI+e3sgdXNlci5sYXN0X25hbWUgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcj8uYWxwaGFcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLlVzZXJzLlRvb2x0aXAuQWxwaGFJY29uJ3x0cmFuc2xvY29cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXNxdWFyZS1hIGFscGhhLWJldGEgdGV4dC13YXJuaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyPy5iZXRhXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZG1pbi5Vc2Vycy5Ub29sdGlwLkJldGFJY29uJ3x0cmFuc2xvY29cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXNxdWFyZS1iIGFscGhhLWJldGEgdGV4dC1wcmltYXJ5XCIgPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJFbWFpbFwiPnt7IHVzZXIuZW1haWwgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJTbHVnXCI+e3sgdXNlci5zbHVnIH19PC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRW1haWwgQ29uZmlybVwiPlxuICAgICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHVzZXI/Lmhhc19wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3MtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IHVzZXI/Lmhhc19wYXNzd29yZCA/ICdZZXMnIDogJ05vJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCIgKm5nSWY9XCJ1c2VyPy5ibG9ja2VkXCIgW3BUb29sdGlwXT1cIidUaGlzIHVzZXIgaGFzIGJlZW4gYmxvY2tlZCdcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWhleGFnb24tZXhjbGFtYXRpb24gdGV4dC1kYW5nZXIgaGV4YS13YXJuaW5nXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUy9tICNcIj5cbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWRhbmdlciBmdy1ib2xkJzogdXNlcj8uc2Vzc2lvbnNfbGFzdF9tb250aCA8IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPnt7IHVzZXI/LnNlc3Npb25zX2xhc3RfbW9udGggfX08L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTGFzdCBMb2dpblwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2VyPy5jdXJyZW50X3NpZ25faW5fYXQ7ZWxzZSBsYXN0U2lnbmluXCI+XG4gICAgICAgICAgICAgIHt7IHVzZXIuY3VycmVudF9zaWduX2luX2F0ICB8IGRhdGVGb3JtYXQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFzdFNpZ25pbj5cbiAgICAgICAgICAgICAge3sgdXNlci5sYXN0X3NpZ25faW5fYXQgfCBkYXRlRm9ybWF0IH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlJlZ2lzdGVyZWQgT25cIj57eyB1c2VyLnNpZ25lZF91cF9hdCB8IGRhdGVGb3JtYXQgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY3Rpb25cIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbGlzdC1pbmxpbmUgbGlzdC1hY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJJbXBlcnNvbmF0ZSB0aGlzIHVzZXJcIlxuICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWxwaGEnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtcGVvcGxlLWFycm93c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW1wZXJzb25hdGUodXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlcj8uZW5hYmxlX3R3b19mYWN0b3JfYXV0aGVudGljYXRvclwiPlxuICAgICAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRGlzYWJsZSAyZmFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpc2FibGUyZmEodXNlcj8uaWQpXCJcbiAgICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWxwaGEnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWxvY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImN1cnJlbnRVc2VyICYmIHVzZXIuaWQgIT09IGN1cnJlbnRVc2VyLmlkXCI+XG4gICAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCJjaGF0UGVybWlzc2lvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tZXNzYWdlJ11cIlxuICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cInVzZXIuc2x1Z1wiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb21tZW50cyBjdGExLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJFZGl0XCJcbiAgICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlVzZXJzLkVkaXQnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMudXNlcnNEZXRhaWxzICsgdXNlci5pZF1cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXQgZWRpdC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Vc2Vycy5EZWxldGUnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZSh1c2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG4gICAgPGRpdiAqbmdJZj1cInRvdGFsUmVjb3JkcyA9PT0gMCAmJiB0b3RhbFJlY29yZHNVbkZpbHRlcmVkICE9PSAwXCI+XG4gICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInU2VhcmNoLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCIgW2Rlc2NyaXB0aW9uXT1cIidTZWFyY2guTm9EYXRhRGVzY3JpcHRpb24nIHwgdHJhbnNsb2NvXCI+XG4gICAgICA8L3B3LW5vLWRhdGE+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1yZWNvcmRzLWNvdW50XCIgKm5nSWY9XCJ0b3RhbFJlY29yZHMgIT09IDBcIj57eyAnTGFiZWwuVG90YWwnIHwgdHJhbnNsb2NvIH19OiB7eyB0b3RhbFJlY29yZHMgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9PT0gMFwiPlxuICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInQWRtaW4uVXNlcnMuTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIj4gPC9wdy1uby1kYXRhPlxuPC9kaXY+XG48IS0tIHBhc3N3b3JkIHZhbGlkYXRpb24gbW9kYWwgZm9yIGRlbGV0ZSB1c2VyIC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZVxuICAoc3VjY2Vzc0V2ZW50KT1cImRlbGV0ZVVzZXIoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPHA+e3sgJ1VzZXIuQWNjb3VudC5NZXNzYWdlLkFjdGlvbkNhbk5vdFVuZG9uZScgfCB0cmFuc2xvY28gfX08L3A+XG4gICAgICA8cD57eyAnVXNlci5BY2NvdW50Lk1lc3NhZ2UuQ29uZmlybVBhc3N3b3JkJyB8IHRyYW5zbG9jbyB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3B3LXBhc3N3b3JkLXZhbGlkYXRpb24+XG48IS0tIHBhc3N3b3JkIHZhbGlkYXRpb24gbW9kYWwgZm9yIGltcGVyc29uYXRlIC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9ySW1wZXJzb25hdGVcbiAgKHN1Y2Nlc3NFdmVudCk9XCJvblVzZXJJbXBlcnNvbmF0aW9uKCRldmVudClcIj5cbjwvcHctcGFzc3dvcmQtdmFsaWRhdGlvbj5cbjwhLS0gcGFzc3dvcmQgdmFsaWRhdGlvbiBtb2RhbCBmb3IgcmVtb3ZlMmZhIC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUmVtb3ZlMmZhXG4gIChzdWNjZXNzRXZlbnQpPVwicmVtb3ZlMmZhKCRldmVudClcIj5cbjwvcHctcGFzc3dvcmQtdmFsaWRhdGlvbj5cbiJdfQ==
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMtbGlzdC91c2Vycy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy91c2Vycy91c2Vycy1saXN0L3VzZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFDSCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLGlCQUNULFNBQVEsZ0JBQWdCO0lBbUR4QixZQUNxQixZQUEwQixFQUMx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UyxDQUFDLE1BQU07UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RixDQUFDOytHQWhVUSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw2Z0JDaEM5QixpOFVBcVBBOzs0RkRyTmEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNJLG9CQUFvQjs0UEFTOUIsb0NBQW9DO3NCQURuQyxTQUFTO3VCQUFDLHNDQUFzQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHcEUscUNBQXFDO3NCQURwQyxTQUFTO3VCQUFDLHVDQUF1QyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHckUsbUNBQW1DO3NCQURsQyxTQUFTO3VCQUFDLHFDQUFxQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50LCBTZWxlY3RJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IFBBR0VfU0laRSwgUGFnaW5nLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL3NoYXJlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBQcm9kdWN0U2VydmljZSxcbiAgICBXaW5kb3dTZXJ2aWNlLFxuICAgIFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIEF1dGhTZXJ2aWNlLFxuICAgIEN1c3RvbVRvYXN0U2VydmljZVxufSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctYWRtaW4tdXNlci1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJMaXN0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICAgIEBWaWV3Q2hpbGQoJ3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZTogUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9ySW1wZXJzb25hdGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvckltcGVyc29uYXRlOiBQYXNzd29yZFZhbGlkYXRpb25Db21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JSZW1vdmUyZmEnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclJlbW92ZTJmYTogUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50O1xuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuICAgIHVzZXJzOiBVc2VyW10gPSBbXTtcbiAgICBhbGxSb2xlczogU2VsZWN0SXRlbVtdO1xuICAgIHNlYXJjaFRleHQgPSAnJztcbiAgICBhbGxVc2VyczogVXNlcltdID0gW107XG4gICAgcHJvZHVjdExpc3Q6IFNlbGVjdEl0ZW1bXTtcbiAgICBsb2FkaW5nID0gdHJ1ZTtcbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuICAgIHNlYXJjaE9wdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUm9sZScsXG4gICAgICAgICAgICB2YWx1ZTogJ3JvbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUHJvZHVjdCcsXG4gICAgICAgICAgICB2YWx1ZTogJ3Byb2R1Y3QnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRmVhdHVyZSBLZXknLFxuICAgICAgICAgICAgdmFsdWU6ICdmZWF0dXJlX2tleSdcbiAgICAgICAgfVxuICAgIF07XG4gICAgc2VhcmNoRGF0YVNvdXJjZSA9IFtdO1xuICAgIHNlbGVjdGVkT3B0aW9uOiBTZWxlY3RJdGVtO1xuICAgIGN1cnJlbnRVc2VyOiBVc2VyO1xuICAgIHByaXZhdGUgcGFnZSA9IDE7XG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICBtYXN0ZXJQcm9kdWN0SWQgPSB0aGlzLmFwcENvbmZpZy5tYXN0ZXJfc3Vic2NyaXB0aW9uLnByb2R1Y3RfaWQ7XG4gICAgZmVhdHVyZUtleXNMaXN0ID0gW107XG4gICAgcHJpdmF0ZSBmaWx0ZXJCeVByb2R1Y3RzID0gW107XG5cbiAgICB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gMDtcblxuICAgIHByaXZhdGUgZmlsdGVyQnlSb2xlcyA9IFtdO1xuICAgIGZpbHRlckJ5RmVhdHVyZUtleXMgPSBbXTtcbiAgICBwcml2YXRlIHVzZXJUb0RlbGV0ZTogVXNlcjtcbiAgICBjaGF0UGVybWlzc2lvbjogc3RyaW5nO1xuICAgIHVzZXJUb0ltcGVyc29uYXRlOiBVc2VyO1xuICAgIHJlbW92ZTJmYVVzZXJJZDogbnVtYmVyO1xuICAgIGZpbHRlclNvdXJjZTogc3RyaW5nW107XG4gICAgY3JpdGVyaWEgPSBbXTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyOiBDdXN0b21Ub2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RTZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93U2VydmljZTogV2luZG93U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5jaGF0UGVybWlzc2lvbiA9IGAke1Blcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdC5wZXJtaXNzaW9ufS4ke1Blcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdC5mZWF0dXJlX2tleX1gO1xuICAgICAgICB0aGlzLmdldFJvbGVzKCk7XG4gICAgICAgIHRoaXMuZ2V0UHJvZHVjdHMoKTtcbiAgICAgICAgdGhpcy51c2VyU3RvcmUoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlciA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRUYWJsZVN0YXRlKCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgndXNlci1saXN0LXN0YXRlJykuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gSlNPTi5wYXJzZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlYXJjaFRleHQocmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTZWxlY3RlZE9wdGlvbihyZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlYXJjaERhdGFTb3VyY2UocmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDcml0ZXJpYShyZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlcnMocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplU2VhcmNoVGV4dChyZXMpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gcmVzPy5zZWFyY2hUZXh0IHx8ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVNlbGVjdGVkT3B0aW9uKHJlcykge1xuICAgICAgICBpZiAocmVzPy5zZWxlY3RlZE9wdGlvbj8udmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSByZXM/LnNlbGVjdGVkT3B0aW9uO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJTb3VyY2UgPSBbdGhpcy5zZWxlY3RlZE9wdGlvbj8udmFsdWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplU2VhcmNoRGF0YVNvdXJjZShyZXMpIHtcbiAgICAgICAgaWYgKHJlcz8uc2VhcmNoRGF0YVNvdXJjZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFTb3VyY2UgPSByZXM/LnNlYXJjaERhdGFTb3VyY2UgfHwgW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVDcml0ZXJpYShyZXMpIHtcbiAgICAgICAgaWYgKHJlcz8uc2VsZWN0ZWRPcHRpb24/LnZhbHVlID09PSAnZmVhdHVyZV9rZXknKSB7XG4gICAgICAgICAgICB0aGlzLmNyaXRlcmlhID0gcmVzPy5maWx0ZXJCeUZlYXR1cmVLZXlzIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/LnNlbGVjdGVkT3B0aW9uPy52YWx1ZSA9PT0gJ3Byb2R1Y3QnKSB7XG4gICAgICAgICAgICB0aGlzLmNyaXRlcmlhID0gcmVzPy5maWx0ZXJCeVByb2R1Y3RzIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/LnNlbGVjdGVkT3B0aW9uPy52YWx1ZSA9PT0gJ3JvbGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNyaXRlcmlhID0gcmVzPy5maWx0ZXJCeVJvbGVzIHx8IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRmlsdGVycyhyZXMpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gcmVzPy5maWx0ZXJCeUZlYXR1cmVLZXlzIHx8IFtdO1xuICAgICAgICB0aGlzLmZpbHRlckJ5UHJvZHVjdHMgPSByZXM/LmZpbHRlckJ5UHJvZHVjdHMgfHwgW107XG4gICAgICAgIHRoaXMuZmlsdGVyQnlSb2xlcyA9IHJlcz8uZmlsdGVyQnlSb2xlcyB8fCBbXTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgIG9yZGVyX2J5OiBwYWdlRGV0YWlscy5zb3J0RmllbGQsXG4gICAgICAgICAgICBvcmRlcl9kaXJlY3Rpb246IHBhZ2VEZXRhaWxzLnNvcnRPcmRlcixcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGdldFJvbGVzKCkge1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5nZXRSb2xlcyh7fSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsUm9sZXMgPSByZXNwb25zZS5yb2xlcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0uaWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGdldFByb2R1Y3RzKCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHJvZHVjdHMoe1xuICAgICAgICAgICAgICAgIG1hc3Rlcl9wcm9kdWN0X2lkOiB0aGlzLm1hc3RlclByb2R1Y3RJZCxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwLnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXNwLnByb2R1Y3RzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsZW1lbnQubmFtZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gcmVzcC5wcm9kdWN0cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LmZlYXR1cmVfa2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50LmZlYXR1cmVfa2V5IHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RMaXN0LnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdOb25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGdldFVzZXJzKHBhZ2luZzogUGFnaW5nKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgcHJvZHVjdF9pZHM6IHRoaXMuZmlsdGVyQnlQcm9kdWN0cy5qb2luKCkgfHwgJycsXG4gICAgICAgICAgICByb2xlX2lkczogdGhpcy5maWx0ZXJCeVJvbGVzLmpvaW4oKSB8fCAnJyxcbiAgICAgICAgICAgIGZlYXR1cmVfa2V5czogdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzLmpvaW4oKSB8fCAnJyxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5nZXRVc2VycyhwYWdpbmcsIHBhcmFtcykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlcnMgPSByZXNwb25zZS51c2VycztcbiAgICAgICAgICAgIHRoaXMuYWxsVXNlcnMgPSBbLi4udGhpcy51c2Vyc107XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IHJlc3BvbnNlPy51bmZpbHRlcmVkX2NvdW50O1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uU2VhcmNoT3B0aW9uQ2hhbmdlKCRldmVudCkge1xuICAgICAgICB0aGlzLmNyaXRlcmlhID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnNlYXJjaE9wdGlvbnMuZmluZCh4ID0+IHgudmFsdWUgPT09ICRldmVudC52YWx1ZVswXSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdyb2xlJykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhU291cmNlID0gdGhpcy5hbGxSb2xlcztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdwcm9kdWN0Jykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhU291cmNlID0gdGhpcy5wcm9kdWN0TGlzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdmZWF0dXJlX2tleScpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YVNvdXJjZSA9IHRoaXMuZmVhdHVyZUtleXNMaXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhU291cmNlID0gW107XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgICAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQnlQcm9kdWN0cyA9IFtdO1xuICAgICAgICB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMgPSBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gW107XG4gICAgfVxuICAgIG9uU2VhcmNoQ3JpdGVyaWEoZXZ0KSB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSAncm9sZScpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb2xlQ2hhbmdlKGV2dCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbi52YWx1ZSA9PT0gJ3Byb2R1Y3QnKSB7XG4gICAgICAgICAgICB0aGlzLm9uUHJvZHVjdENoYW5nZShldnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdmZWF0dXJlX2tleScpIHtcbiAgICAgICAgICAgIHRoaXMub25GZWF0dXJlS2V5Q2hhbmdlKGV2dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFTb3VyY2UgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblJvbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0VXNlcnMoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uUHJvZHVjdENoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgICAgICB0aGlzLmZpbHRlckJ5UHJvZHVjdHMgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBvbkZlYXR1cmVLZXlDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0VXNlcnMoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uRGVsZXRlKHVzZXI6IFVzZXIpIHtcbiAgICAgICAgdGhpcy51c2VyVG9EZWxldGUgPSB1c2VyO1xuICAgICAgICB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZS5vcGVuKCk7XG4gICAgfVxuICAgIGRlbGV0ZVVzZXIoX2V2ZW50KSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlVXNlcih0aGlzLnVzZXJUb0RlbGV0ZS5pZCwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJzLmZpbHRlcih4ID0+IHguaWQgIT09IHRoaXMudXNlclRvRGVsZXRlLmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uVXNlcnMuRGVsZXRlZE1lc3NhZ2UnKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmdldFVzZXJzKHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJUb0RlbGV0ZSA9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgb25JbXBlcnNvbmF0ZSh1c2VyOiBVc2VyKSB7XG4gICAgICAgIHRoaXMudXNlclRvSW1wZXJzb25hdGUgPSB1c2VyO1xuICAgICAgICB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9ySW1wZXJzb25hdGUub3BlbigpO1xuICAgIH1cbiAgICBvblVzZXJJbXBlcnNvbmF0aW9uKF9ldmVudCkge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnBsYXRmb3JtJC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gcmVzO1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgICAgICAgIC5pbXBlcnNvbmF0ZVVzZXIoe1xuICAgICAgICAgICAgICAgICAgICBlbWFpbDogdGhpcy51c2VyVG9JbXBlcnNvbmF0ZS5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmVnYXA6IHBsYXRmb3JtICE9PSAnYnJvd3NlcidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhgWW91J3JlIG5vdyBiZWluZyBsb2dnZWQgaW4gYXMgYW5vdGhlciB1c2VyLi4uYCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yIDIgc2VjIGJlZm9yZSByZWRpcmVjdGluZyB1c2VyIHRvIGhvbWUgcGFnZVxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2luZG93U2VydmljZS5yZXBsYWNlVXJsKCcvaG9tZScpO1xuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCB2YWwgPSB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQsXG4gICAgICAgICAgICBmaWx0ZXJCeUZlYXR1cmVLZXlzOiB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMsXG4gICAgICAgICAgICBmaWx0ZXJCeVJvbGVzOiB0aGlzLmZpbHRlckJ5Um9sZXMsXG4gICAgICAgICAgICBmaWx0ZXJCeVByb2R1Y3RzOiB0aGlzLmZpbHRlckJ5UHJvZHVjdHMsXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbjogdGhpcy5zZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICAgIHNlYXJjaERhdGFTb3VyY2U6IHRoaXMuc2VhcmNoRGF0YVNvdXJjZVxuICAgICAgICB9O1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlci1saXN0LXN0YXRlJywgSlNPTi5zdHJpbmdpZnkodmFsKSk7XG4gICAgICAgIGNvbnN0IG5vdGlmaWVyID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKG5vdGlmaWVyKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLmluY2x1ZGVzKCcvdXNlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0kKCd1c2VyLWxpc3Qtc3RhdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubmV4dCgnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG4gICAgZGlzYWJsZTJmYShpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlMmZhVXNlcklkID0gaWQ7XG4gICAgICAgIHRoaXMucGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JSZW1vdmUyZmEub3BlbigpO1xuICAgIH1cbiAgICByZW1vdmUyZmEoX2V2ZW50KSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLnJlbW92ZTJmYSh0aGlzLnJlbW92ZTJmYVVzZXJJZCwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBmbG9hdC1zdGFydFwiPlVzZXJzPC9oMj5cbiAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBmbG9hdC1lbmRcIlxuICAgICAgaWQ9XCJidG4tY3JlYXRlXCJcbiAgICAgICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIlxuICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMudXNlcnNEZXRhaWxzICsgJ2FkZCddXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBDcmVhdGUgVXNlclxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhaXNMb2FkZWRcIj5cbiAgICA8cC1wcm9ncmVzc1NwaW5uZXI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJwcmltZW5nLWRhdGF0YWJsZS1jb250YWluZXIgbXQtMFwiIFtjbGFzcy5oaWRlVGFibGVdPVwidG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9PT0gMFwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1tYW5hZ2VtZW50LXRhYmxlIHRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICA8cC10YWJsZSAjZHRcbiAgICAgIFt2YWx1ZV09XCJ1c2Vyc1wiXG4gICAgICBbcGFnaW5hdG9yXT1cInRvdGFsUmVjb3JkcyAhPT0gMFwiXG4gICAgICBbbGF6eV09XCJ0cnVlXCJcbiAgICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgIFtmaWx0ZXJEZWxheV09XCIxMDAwXCJcbiAgICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiXG4gICAgICBbY3VzdG9tU29ydF09XCJ0cnVlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZpbHRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwic2VhcmNoT3B0aW9uc1wiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblNlYXJjaE9wdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgdXNlcnMgYnkgcm9sZSwgcHJvZHVjdCwgb3IgZmVhdHVyZVwiXG4gICAgICAgICAgICAgIFtzZWxlY3Rpb25MaW1pdF09XCIxXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJTb3VyY2VcIlxuICAgICAgICAgICAgICBbc2hvd1RvZ2dsZUFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3B0aW9uXCI+XG4gICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJzZWFyY2hEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uU2VhcmNoQ3JpdGVyaWEoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cInRydWVcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyaXRlcmlhXCJcbiAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHt7IHNlbGVjdGVkT3B0aW9uLnZhbHVlIH19c1wiXG4gICAgICAgICAgICAgIG1heFNlbGVjdGVkTGFiZWxzPVwiMlwiXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggbXQtMiBtZS0yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBVc2VyLi4uXCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInVzZXItc2VhcmNoXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cImR0LmZpbHRlckdsb2JhbCgkZXZlbnQudGFyZ2V0LnZhbHVlLCAnY29udGFpbnMnKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwid2QtOTBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImlkXCI+XG4gICAgICAgICAgICB7eyAnQWRtaW4uVXNlcnMuSWQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImlkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJmaXJzdF9uYW1lXCI+XG4gICAgICAgICAgICB7eyAnTGFiZWwuRmlyc3ROYW1lJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJmaXJzdF9uYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJsYXN0X25hbWVcIj5cbiAgICAgICAgICAgIHt7ICdMYWJlbC5MYXN0TmFtZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwibGFzdF9uYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJlbWFpbFwiPlxuICAgICAgICAgICAge3sgJ0xhYmVsLkVtYWlsJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJlbWFpbFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwic2x1Z1wiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLlNsdWcnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNsdWdcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImVuY3J5cHRlZF9wYXNzd29yZFwiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLkVtYWlsQ29uZmlybScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiZW5jcnlwdGVkX3Bhc3N3b3JkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInNlc3Npb25zX2xhc3RfbW9udGhcIj5cbiAgICAgICAgICAgIHt7ICdBZG1pbi5TdWJzY3JpcHRpb25zLlNlc3Npb25zVG90YWxMYXN0TW9udGgnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNlc3Npb25zX2xhc3RfbW9udGhcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImxhc3Rfc2lnbl9pbl9hdFwiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLkxhc3RMb2dpbicgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwibGFzdF9zaWduX2luX2F0XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJzaWduZWRfdXBfYXRcIj5cbiAgICAgICAgICAgIHt7ICdBZG1pbi5Vc2Vycy5SZWdpc3RlcmVkT24nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNpZ25lZF91cF9hdFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWxpc3QtZm91clwiPlxuICAgICAgICAgICAge3sgJ0xhYmVsLkFjdGlvbnMnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICAgIGxldC11c2VyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cImlkXCI+IHt7IHVzZXIuaWQgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJGaXJzdCBOYW1lXCI+PGEgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHVzZXIuc2x1Z11cIj57eyB1c2VyLmZpcnN0X25hbWUgfX08L2E+PC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTGFzdCBOYW1lXCI+e3sgdXNlci5sYXN0X25hbWUgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcj8uYWxwaGFcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLlVzZXJzLlRvb2x0aXAuQWxwaGFJY29uJ3x0cmFuc2xvY29cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXNxdWFyZS1hIGFscGhhLWJldGEgdGV4dC13YXJuaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyPy5iZXRhXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZG1pbi5Vc2Vycy5Ub29sdGlwLkJldGFJY29uJ3x0cmFuc2xvY29cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXNxdWFyZS1iIGFscGhhLWJldGEgdGV4dC1wcmltYXJ5XCIgPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJFbWFpbFwiPnt7IHVzZXIuZW1haWwgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJTbHVnXCI+e3sgdXNlci5zbHVnIH19PC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRW1haWwgQ29uZmlybVwiPlxuICAgICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHVzZXI/Lmhhc19wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3MtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IHVzZXI/Lmhhc19wYXNzd29yZCA/ICdZZXMnIDogJ05vJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCIgKm5nSWY9XCJ1c2VyPy5ibG9ja2VkXCIgW3BUb29sdGlwXT1cIidUaGlzIHVzZXIgaGFzIGJlZW4gYmxvY2tlZCdcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWhleGFnb24tZXhjbGFtYXRpb24gdGV4dC1kYW5nZXIgaGV4YS13YXJuaW5nXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUy9tICNcIj5cbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWRhbmdlciBmdy1ib2xkJzogdXNlcj8uc2Vzc2lvbnNfbGFzdF9tb250aCA8IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPnt7IHVzZXI/LnNlc3Npb25zX2xhc3RfbW9udGggfX08L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTGFzdCBMb2dpblwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2VyPy5jdXJyZW50X3NpZ25faW5fYXQ7ZWxzZSBsYXN0U2lnbmluXCI+XG4gICAgICAgICAgICAgIHt7IHVzZXIuY3VycmVudF9zaWduX2luX2F0ICB8IGRhdGVGb3JtYXQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFzdFNpZ25pbj5cbiAgICAgICAgICAgICAge3sgdXNlci5sYXN0X3NpZ25faW5fYXQgfCBkYXRlRm9ybWF0IH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlJlZ2lzdGVyZWQgT25cIj57eyB1c2VyLnNpZ25lZF91cF9hdCB8IGRhdGVGb3JtYXQgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY3Rpb25cIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbGlzdC1pbmxpbmUgbGlzdC1hY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJJbXBlcnNvbmF0ZSB0aGlzIHVzZXJcIlxuICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWxwaGEnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtcGVvcGxlLWFycm93c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW1wZXJzb25hdGUodXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uSW1wZXJzb25hdGUodXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlcj8uZW5hYmxlX3R3b19mYWN0b3JfYXV0aGVudGljYXRvclwiPlxuICAgICAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRGlzYWJsZSAyZmFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpc2FibGUyZmEodXNlcj8uaWQpXCJcbiAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImRpc2FibGUyZmEodXNlcj8uaWQpXCJcbiAgICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWxwaGEnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWxvY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImN1cnJlbnRVc2VyICYmIHVzZXIuaWQgIT09IGN1cnJlbnRVc2VyLmlkXCI+XG4gICAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCJjaGF0UGVybWlzc2lvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tZXNzYWdlJ11cIlxuICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cInVzZXIuc2x1Z1wiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb21tZW50cyBjdGExLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJFZGl0XCJcbiAgICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlVzZXJzLkVkaXQnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMudXNlcnNEZXRhaWxzICsgdXNlci5pZF1cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXQgZWRpdC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Vc2Vycy5EZWxldGUnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRGVsZXRlKHVzZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uRGVsZXRlKHVzZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZSh1c2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG4gICAgPGRpdiAqbmdJZj1cInRvdGFsUmVjb3JkcyA9PT0gMCAmJiB0b3RhbFJlY29yZHNVbkZpbHRlcmVkICE9PSAwXCI+XG4gICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInU2VhcmNoLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCIgW2Rlc2NyaXB0aW9uXT1cIidTZWFyY2guTm9EYXRhRGVzY3JpcHRpb24nIHwgdHJhbnNsb2NvXCI+XG4gICAgICA8L3B3LW5vLWRhdGE+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1yZWNvcmRzLWNvdW50XCIgKm5nSWY9XCJ0b3RhbFJlY29yZHMgIT09IDBcIj57eyAnTGFiZWwuVG90YWwnIHwgdHJhbnNsb2NvIH19OiB7eyB0b3RhbFJlY29yZHMgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9PT0gMFwiPlxuICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInQWRtaW4uVXNlcnMuTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIj4gPC9wdy1uby1kYXRhPlxuPC9kaXY+XG48IS0tIHBhc3N3b3JkIHZhbGlkYXRpb24gbW9kYWwgZm9yIGRlbGV0ZSB1c2VyIC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZVxuICAoc3VjY2Vzc0V2ZW50KT1cImRlbGV0ZVVzZXIoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPHA+e3sgJ1VzZXIuQWNjb3VudC5NZXNzYWdlLkFjdGlvbkNhbk5vdFVuZG9uZScgfCB0cmFuc2xvY28gfX08L3A+XG4gICAgICA8cD57eyAnVXNlci5BY2NvdW50Lk1lc3NhZ2UuQ29uZmlybVBhc3N3b3JkJyB8IHRyYW5zbG9jbyB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3B3LXBhc3N3b3JkLXZhbGlkYXRpb24+XG48IS0tIHBhc3N3b3JkIHZhbGlkYXRpb24gbW9kYWwgZm9yIGltcGVyc29uYXRlIC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9ySW1wZXJzb25hdGVcbiAgKHN1Y2Nlc3NFdmVudCk9XCJvblVzZXJJbXBlcnNvbmF0aW9uKCRldmVudClcIj5cbjwvcHctcGFzc3dvcmQtdmFsaWRhdGlvbj5cbjwhLS0gcGFzc3dvcmQgdmFsaWRhdGlvbiBtb2RhbCBmb3IgcmVtb3ZlMmZhIC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUmVtb3ZlMmZhXG4gIChzdWNjZXNzRXZlbnQpPVwicmVtb3ZlMmZhKCRldmVudClcIj5cbjwvcHctcGFzc3dvcmQtdmFsaWRhdGlvbj5cbiJdfQ==
|
|
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
29
29
|
type: Component,
|
|
30
30
|
args: [{ selector: 'pw-users-management', template: `<pw-tabs [items]="items"></pw-tabs>`, styles: [".search-input input{width:100%}\n"] }]
|
|
31
31
|
}], ctorParameters: () => [{ type: i1.PermissionService }] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMtdGFicy91c2Vycy10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsWUFBNkIsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFFMUQsVUFBSyxHQUFlO1lBQ2hCO2dCQUNJLEVBQUUsRUFBRSxPQUFPO2dCQUNYLEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDeEMsb0RBQW9ELENBQ3ZEO2FBQ0o7WUFDRDtnQkFDSSxFQUFFLEVBQUUsU0FBUztnQkFDYixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsVUFBVSxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDdkM7U0FDSixDQUFDO0lBbEIyRCxDQUFDOytHQURyRCxnQkFBZ0I7bUdBQWhCLGdCQUFnQiwyREFIZixxQ0FBcUM7OzRGQUd0QyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0kscUJBQXFCLFlBQ3JCLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctdXNlcnMtbWFuYWdlbWVudCcsXG4gICAgdGVtcGxhdGU6IGA8cHctdGFicyBbaXRlbXNdPVwiaXRlbXNcIj48L3B3LXRhYnM+YCxcbiAgICBzdHlsZVVybHM6IFsnLi91c2Vycy10YWJzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlclRhYkNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uU2VydmljZSkge31cblxuICAgIGl0ZW1zOiBNZW51SXRlbVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3VzZXJzJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVXNlcnMnLFxuICAgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZ3IGZhLXVzZXItY29nJyxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IFsnL2FkbWluL3VzZXJzL2xpc3QnXSxcbiAgICAgICAgICAgIHZpc2libGU6IHRoaXMucGVybWlzc2lvbi5ldmFsdWF0ZVBlcm1pc3Npb25zKFxuICAgICAgICAgICAgICAgICdQYWdlcy5BZG1pbi5Vc2Vycy5FZGl0IHx8IFBhZ2VzLkFkbWluLlVzZXJzLkNyZWF0ZSdcbiAgICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdpbnNpZ2h0JyxcbiAgICAgICAgICAgIGxhYmVsOiAnSW5zaWdodCcsXG4gICAgICAgICAgICBpY29uOiAnZmEgZmEtZncgZmEtc2lnbmF0dXJlJyxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IFsnL2FkbWluL3VzZXJzL2luc2lnaHQnXVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIHZpZXc6IHN0cmluZ1tdO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3c2xldHRlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvbmV3c2xldHRlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTmV3c0xldHRlclVzZXIge1xuICAgIGlkOiBudW1iZXI7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3Vic2NyaWJlZF9hdDogc3RyaW5nO1xuICAgIC8vIEFkZCBvdGhlciBwcm9wZXJ0aWVzIGFzIG5lZWRlZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld3NMZXR0ZXJVc2VyUmVzcG9uc2Uge1xuICAgIG5ld3NsZXR0ZXJfdXNlcnM6IE5ld3NMZXR0ZXJVc2VyW107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVLZXkge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8vIEFkZCBvdGhlciBwcm9wZXJ0aWVzIGFzIG5lZWRlZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4gICAgY2F0ZWdvcnlfbmFtZT86IHN0cmluZztcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0YWdfY2F0ZWdvcnlfaWQ6IG51bWJlcjtcbiAgICB0YWdfdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld3NMZXR0ZXJJdGVtIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5ld3NsZXR0ZXJfaWQ6IG51bWJlcjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGJvZHk6IHN0cmluZztcbiAgICBtYWluX3RhZ19pZDogbnVtYmVyO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgbGF0aXR1ZGU6IHN0cmluZztcbiAgICBsb25naXR1ZGU6IHN0cmluZztcbiAgICBpc19zZW50OiBib29sZWFuO1xuICAgIGlzX3B1c2hlZDogYm9vbGVhbjtcbiAgICBzZW5kX3VudGlsOiBzdHJpbmc7XG4gICAgcHJldmlvdXNfbmV3c2xldHRlcl9pdGVtX2lkOiBudW1iZXI7XG4gICAgZGF5c190b193YWl0X2Zyb21fcHJldmlvdXNfbmV3c2xldHRlcjogbnVtYmVyO1xuICAgIHNlbmRfYXQ6IHN0cmluZztcbiAgICBwcm9kdWN0X2lkczogbnVtYmVyW107XG4gICAgZmVhdHVyZV9rZXlzOiBGZWF0dXJlS2V5W107XG4gICAgb25seV9uZXdfdXNlcnM6IGJvb2xlYW47XG4gICAgdGFnczogVGFnW107XG4gICAgbmV3c2xldHRlcl9uYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3c0xldHRlclJlc3BvbnNlIHtcbiAgICBuZXdzbGV0dGVyczogTmV3c0xldHRlcltdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXdzTGV0dGVyIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICBjb2RlOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlL3RyYWNraW5nLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5nLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFob3lFdmVudCB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB1c2VyX2lkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByb3BlcnRpZXM6IFBhZ2luZztcbiAgICB0aW1lOiBzdHJpbmc7XG4gICAgdmlzaXRfaWQ6IG51bWJlcjtcbiAgICB1c2VyOiBVc2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFob3lFdmVudFJlc3BvbnNlIHtcbiAgICBldmVudHM6IEFob3lFdmVudFtdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEFob3lNZXNzYWdlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgdG86IHN0cmluZztcbiAgICB1c2VyX2lkOiBudW1iZXI7XG4gICAgdXNlcl90eXBlOiBzdHJpbmc7XG4gICAgbWFpbGVyOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIHV0bV9zb3VyY2U6IHN0cmluZztcbiAgICB1dG1fbWVkaXVtOiBzdHJpbmc7XG4gICAgdXRtX3Rlcm06IHN0cmluZztcbiAgICB1dG1fY29udGVudDogc3RyaW5nO1xuICAgIHV0bV9jYW1wYWlnbjogc3RyaW5nO1xuICAgIHNlbnRfYXQ6IHN0cmluZztcbiAgICBvcGVuZWRfYXQ6IHN0cmluZztcbiAgICBjbGlja2VkX2F0OiBzdHJpbmc7XG4gICAgb3Blbl9jb3VudDogbnVtYmVyO1xuICAgIGNsaWNrX2NvdW50OiBudW1iZXI7XG4gICAgdXNlcjogVXNlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBaG95TWVzc2FnZVJlc3BvbnNlIHtcbiAgICBtZXNzYWdlczogQWhveU1lc3NhZ2VbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBBaG95VmlzaXQge1xuICAgIGlkOiBudW1iZXI7XG4gICAgdmlzaXRfdG9rZW46IHN0cmluZztcbiAgICB2aXNpdG9yX3Rva2VuOiBzdHJpbmc7XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIGlwOiBzdHJpbmc7XG4gICAgdXNlcl9hZ2VudDogc3RyaW5nO1xuICAgIHJlZmVycmVyOiBzdHJpbmc7XG4gICAgcmVmZXJyaW5nX2RvbWFpbjogc3RyaW5nO1xuICAgIGxhbmRpbmdfcGFnZTogc3RyaW5nO1xuICAgIGJyb3dzZXI6IHN0cmluZztcbiAgICBvczogc3RyaW5nO1xuICAgIGRldmljZV90eXBlOiBzdHJpbmc7XG4gICAgY291bnRyeTogc3RyaW5nO1xuICAgIHJlZ2lvbjogc3RyaW5nO1xuICAgIGNpdHk6IHN0cmluZztcbiAgICBwb3N0YWxfY29kZTogc3RyaW5nO1xuICAgIGxhdGl0dWRlOiBzdHJpbmc7XG4gICAgbG9uZ2l0dWRlOiBzdHJpbmc7XG4gICAgdXRtX3NvdXJjZTogc3RyaW5nO1xuICAgIHV0bV9tZWRpdW06IHN0cmluZztcbiAgICB1dG1fdGVybTogc3RyaW5nO1xuICAgIHV0bV9jb250ZW50OiBzdHJpbmc7XG4gICAgdXRtX2NhbXBhaWduOiBzdHJpbmc7XG4gICAgc3RhcnRlZF9hdDogc3RyaW5nO1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgdXNlcjogVXNlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBaG95VmlzaXRSZXNwb25zZSB7XG4gICAgdmlzaXRzOiBBaG95VmlzaXRbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUcmFja0V2ZW50IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICByZWxhdGVkX2VudGl0eV9pZDogbnVtYmVyO1xuICAgIHJlbGF0ZWRfZW50aXR5X3R5cGU6IHN0cmluZztcbiAgICBldmVudF90eXBlOiBzdHJpbmc7XG4gICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgIHVwZGF0ZWRfYXQ6IHN0cmluZztcbiAgICB1c2VyOiBVc2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRSZXNwb25zZSB7XG4gICAgZXZlbnRzOiBUcmFja0V2ZW50W107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQXV0aG9yIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgT2JqZWN0RGV0YWlscyB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgY3VycmVudF9zaWduX2luX2F0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBaG95VmVyc2lvbiB7XG4gICAgaXRlbV9pZDogbnVtYmVyO1xuICAgIGl0ZW1fdHlwZTogc3RyaW5nO1xuICAgIGV2ZW50OiBzdHJpbmc7XG4gICAgb2JqZWN0OiBPYmplY3REZXRhaWxzO1xuICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgd2hvRG9uZUl0OiBudW1iZXI7XG4gICAgYXV0aG9yOiBBdXRob3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWhveVZlcnNpb25SZXNwb25zZSB7XG4gICAgdmVyc2lvbnM6IEFob3lWZXJzaW9uW107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuIl19
|