@posiwise/admin-module 0.0.152 → 0.0.154
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-module.routing.mjs +20 -10
- package/esm2022/lib/admin.module.mjs +4 -1
- package/esm2022/lib/components/config/global-config-details/global-config-details.component.mjs +7 -4
- package/esm2022/lib/components/config/global-config-list/global-config-list.component.mjs +1 -1
- 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 +1 -1
- package/esm2022/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +3 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +354 -26
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +1 -2
- package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +1 -1
- package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +1 -1
- package/esm2022/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +3 -3
- package/esm2022/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +3 -3
- package/esm2022/lib/components/mailer/mailer-list/mailer-list.component.mjs +1 -1
- package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +1 -1
- package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +1 -1
- package/esm2022/lib/components/permissions/permissions-list/permissions-list.component.mjs +1 -1
- package/esm2022/lib/components/permissions/roles-list/roles-list.component.mjs +1 -1
- package/esm2022/lib/components/products/product-details/product-details.component.mjs +1 -1
- package/esm2022/lib/components/products/products-list/products-list.component.mjs +1 -1
- package/esm2022/lib/components/resources/resources-admin-details/resources-admin-details.component.mjs +68 -6
- package/esm2022/lib/components/resources/resources-admin-tabs/resources-index/resources-index.component.mjs +51 -20
- package/esm2022/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +28 -6
- package/esm2022/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +1 -1
- package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +1 -1
- package/esm2022/lib/components/tags/tags-details/tags-details.component.mjs +135 -0
- package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +18 -45
- package/esm2022/lib/components/tips/tips-list/tips-list.component.mjs +1 -1
- package/esm2022/lib/components/tracking/versions/versions.component.mjs +1 -1
- package/esm2022/lib/components/users/users-list/users-list.component.mjs +3 -3
- package/esm2022/lib/shared/interface/domain-config.interface.mjs +1 -1
- package/esm2022/lib/shared/routers/routers.mjs +3 -1
- package/fesm2022/posiwise-admin-module.mjs +718 -174
- package/fesm2022/posiwise-admin-module.mjs.map +1 -1
- package/lib/admin.module.d.ts +72 -71
- package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +2 -0
- 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 -0
- package/lib/components/credentials/credentials/credentials.component.d.ts +2 -0
- package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +46 -2
- package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +4 -2
- package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +2 -0
- package/lib/components/faqs/add-faq/add-faq.component.d.ts +2 -0
- package/lib/components/faqs/edit-faq/edit-faq.component.d.ts +2 -0
- package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +2 -0
- package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +2 -0
- package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +2 -0
- package/lib/components/incidents/add-edit-incident/add-edit-incident.component.d.ts +2 -0
- package/lib/components/incidents/incidents-list/incidents-list.component.d.ts +2 -0
- package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +2 -0
- package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +2 -0
- package/lib/components/mailer/mailer-details/mailer-details.component.d.ts +2 -0
- package/lib/components/mailer/mailer-list/mailer-list.component.d.ts +2 -0
- package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +2 -0
- package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +2 -0
- package/lib/components/newsletters/newsletters-items/newsletters-items-view-details/newsletters-items-view-details.component.d.ts +2 -0
- package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +2 -0
- package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +2 -0
- package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +2 -0
- package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +2 -0
- package/lib/components/permissions/roles-list/roles-list.component.d.ts +2 -0
- package/lib/components/products/products-list/products-list.component.d.ts +2 -0
- package/lib/components/resources/resources-admin-details/resources-admin-details.component.d.ts +8 -0
- package/lib/components/resources/resources-admin-tabs/resources-index/resources-index.component.d.ts +9 -1
- package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +5 -3
- package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +2 -0
- package/lib/components/subscriptions/subscription-products/subscription-products.component.d.ts +2 -0
- package/lib/components/subscriptions/subscription-users/subscription-users.component.d.ts +2 -0
- package/lib/components/subscriptions/subscriptions-list/invite-users/invite-users.component.d.ts +2 -0
- package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +2 -0
- package/lib/components/tags/tags-details/tags-details.component.d.ts +32 -0
- package/lib/components/tags/tags-list/tags-list.component.d.ts +39 -1
- package/lib/components/tips/tips-list/tips-list.component.d.ts +2 -0
- package/lib/components/users/users-list/users-list.component.d.ts +2 -0
- package/lib/shared/interface/domain-config.interface.d.ts +21 -0
- package/lib/shared/routers/routers.d.ts +2 -0
- package/package.json +1 -1
|
@@ -29,7 +29,6 @@ export class DomainConfigCoreComponent extends AppBaseComponent {
|
|
|
29
29
|
}
|
|
30
30
|
ngOnInit() {
|
|
31
31
|
this.route.queryParams.subscribe(params => {
|
|
32
|
-
console.log('Sop', params);
|
|
33
32
|
this.duplicateConfigId = Number(params['duplicate_domain_config_id']);
|
|
34
33
|
});
|
|
35
34
|
this.subscriptionId = PermissionService.selectedSubscription?.id;
|
|
@@ -121,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
121
120
|
type: Component,
|
|
122
121
|
args: [{ selector: 'pw-domain-config-core', template: "<h3>Core Configuration</h3>\n<div>\n <p class=\"mb-5\">The following details are required to correctly set up your domain.<br/>\n Make sure each field is completed accurately to ensure smooth operation and full feature access.\n </p>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\" *ngIf=\"!isLoading\">\n <div class=\"row\">\n\n\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [label]=\"'Admin.DomainConfig.CompanyName' | transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.CompanyName' | transloco\" name=\"company_name\">\n <input type=\"text\" class=\"form-control\" formControlName=\"company_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['company_name'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [label]=\"'Admin.DomainConfig.CompanyEmail' | transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.CompanyEmail' | transloco\" name=\"company_email\">\n <input type=\"text\" class=\"form-control\" formControlName=\"company_email\"\n [ngClass]=\"{ 'is-invalid': submitted && f['company_email'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [label]=\"'Admin.DomainConfig.CompanyUrl' | transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.CompanyUrl' | transloco\" name=\"company_url\">\n <input type=\"text\" class=\"form-control\" formControlName=\"company_url\"\n [ngClass]=\"{ 'is-invalid': submitted && f['company_url'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\" *rbacAllow=\"'Pages.SuperAdmin'\">\n <pw-input-container\n [label]=\"'Layout'\"\n [errorMsg]=\"'Layout is required'\"\n name=\"layout\">\n <p-dropdown\n formControlName=\"layout\"\n [options]=\"layoutOptions\"\n optionLabel=\"label\"\n optionValue=\"value\"\n placeholder=\"Select Layout\"\n [ngClass]=\"{ 'is-invalid': submitted && f['layout'].errors }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\"\n [label]=\"'Admin.DomainConfig.HostName' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.HostName' | transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.HostName' | transloco\"\n name=\"host_name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"host_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['host_name'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\"\n [label]=\"'Admin.DomainConfig.InternalPath' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.InternalPath' | transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.InternalPath' | transloco\"\n name=\"internal_path\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"internal_path\"\n [ngClass]=\"{ 'is-invalid': submitted && f['internal_path'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\" [label]=\"'Admin.DomainConfig.Description' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.Description'| transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.Description' | transloco\" name=\"description\">\n <input type=\"text\" class=\"form-control\" formControlName=\"description\"\n [ngClass]=\"{ 'is-invalid': submitted && f['description'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\" [label]=\"'Admin.DomainConfig.FrontendRepoName' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.FrontendRepoName'| transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.FrontendRepoName' | transloco\" name=\"frontend_repo_name\">\n <input type=\"text\" class=\"form-control\" formControlName=\"frontend_repo_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['frontend_repo_name'].errors }\" />\n </pw-input-container>\n </div>\n\n <ng-container>\n\n <h3 class=\"mt-4\">Database and Webhook Configuration</h3>\n <p class=\"mb-5\">These settings control database and webhook integrations.<br/>\n Do not modify them unless you\u2019re confident in what you\u2019re doing \u2014 incorrect changes may disrupt system functionality.</p>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\"\n [label]=\"'Admin.DomainConfig.ShardName' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.ShardName' | transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.ShardName' | transloco\"\n name=\"shard_name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"shard_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['shard_name'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\"\n [label]=\"'Admin.DomainConfig.ShardUrl' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.ShardUrl' | transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.ShardUrl' | transloco\"\n name=\"shard_url\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"shard_url\"\n [ngClass]=\"{ 'is-invalid': submitted && f['shard_url'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\"\n [label]=\"'Admin.DomainConfig.IntraServicesToken' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.IntraServicesToken'| transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.IntraServicesToken' | transloco\"\n name=\"intraservices_token\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"intraservices_token\"\n [ngClass]=\"{ 'is-invalid': submitted && f['intraservices_token'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container [showTooltip]=\"true\"\n [label]=\"'Admin.DomainConfig.WebhookToken' | transloco\"\n [tooltipText]=\"'Admin.DomainConfig.Tooltip.WebhookToken'| transloco\"\n [errorMsg]=\"'Admin.DomainConfig.Validation.WebhookToken' | transloco\"\n name=\"webhook_token\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"webhook_token\"\n [ngClass]=\"{ 'is-invalid': submitted && f['webhook_token'].errors }\" />\n </pw-input-container>\n </div>\n\n\n </ng-container>\n\n </div>\n\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\" [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">{{ 'Button.Submit' | transloco }}</button>\n </div>\n</form>\n" }]
|
|
123
122
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.AdminService }], propDecorators: { onSave: [] } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLWNvbmZpZy1jb3JlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9kb21haW4tY29uZmlnL2RvbWFpbi1jb25maWctZGV0YWlscy9kb21haW4tY29uZmlnLWNvcmUvZG9tYWluLWNvbmZpZy1jb3JlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9kb21haW4tY29uZmlnL2RvbWFpbi1jb25maWctZGV0YWlscy9kb21haW4tY29uZmlnLWNvcmUvZG9tYWluLWNvbmZpZy1jb3JlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUc1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7QUFNN0QsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGdCQUFnQjtJQXFCM0QsWUFDSSxRQUFrQixFQUNELFlBQTBCO1FBRTNDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBcEIvQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFRbkIsWUFBTyxHQUFHLE9BQU8sQ0FB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QUNJLFdBQVcsRUFBRTt3QkFDVCxLQUFLLEVBQUUsY0FBYzt3QkFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUI7NEJBQ3RCLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0QkFDeEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDWjtpQkFDSixDQUNKLENBQUM7WUFDTixDQUFDO1NBQ0osQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBdkhRLHlCQUF5QjttR0FBekIseUJBQXlCLG9GQ2Z0QywyaVBBa0tBOztBRDdESTtJQURDLFlBQVksQ0FBQyxNQUFNLENBQUM7Ozs7dURBa0NwQjs0RkF2SFEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNJLHVCQUF1Qjt3R0F5RmpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSwgQXBwQWRtaW4gfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBWYWxpZGF0ZUZvcm0gfSBmcm9tICdAcG9zaXdpc2UvdXRpbHMnO1xuXG5pbXBvcnQgeyBEb21haW5Db25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL2RvbWFpbi1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1kb21haW4tY29uZmlnLWNvcmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kb21haW4tY29uZmlnLWNvcmUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERvbWFpbkNvbmZpZ0NvcmVDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gICAgc3VibWl0dGVkID0gZmFsc2U7XG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuXG4gICAgaWQ6IG51bWJlcjtcbiAgICBkdXBsaWNhdGVDb25maWdJZDtcbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgZGF0YTogRG9tYWluQ29uZmlnO1xuXG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG5cbiAgICBpc0xvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBsYXlvdXRPcHRpb25zID0gW1xuICAgICAgICB7IGxhYmVsOiAnTGF5b3V0IDEnLCB2YWx1ZTogJ0xheW91dC0xJyB9LFxuICAgICAgICB7IGxhYmVsOiAnTGF5b3V0IDInLCB2YWx1ZTogJ0xheW91dC0yJyB9XG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmZvcm0gPSBBcHBBZG1pbi5kb21haW5Db25maWdDb3JlRm9ybSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1NvcCcsIHBhcmFtcyk7XG4gICAgICAgICAgICB0aGlzLmR1cGxpY2F0ZUNvbmZpZ0lkID0gTnVtYmVyKHBhcmFtc1snZHVwbGljYXRlX2RvbWFpbl9jb25maWdfaWQnXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCduJywgcGFyYW1zKTtcbiAgICAgICAgICAgIHRoaXMuaWQgPSBOdW1iZXIocGFyYW1zWydpZCddKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXREb21haW5Db25maWdEZXRhaWxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXRoaXMuaWQgJiYgdGhpcy5kdXBsaWNhdGVDb25maWdJZCkge1xuICAgICAgICAgICAgdGhpcy5nZXREdXBsaWNhdGVEb21haW5Db25maWdEZXRhaWxzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBQ1RVQUwgcXVlcnlQYXJhbXMnLCB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgLy8gYWxzbyB0cnk6XG4gICAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTGl2ZSBxdWVyeVBhcmFtcycsIHBhcmFtcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHVwbGljYXRlRG9tYWluQ29uZmlnRGV0YWlscygpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLmdldERvbWFpbkNvbmZpZ0J5SWQodGhpcy5kdXBsaWNhdGVDb25maWdJZCwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBEb21haW5Db25maWcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERvbWFpbkNvbmZpZ0RldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXREb21haW5Db25maWdCeUlkKHRoaXMuaWQsIHRoaXMuc3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogRG9tYWluQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5kYXRhKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQFZhbGlkYXRlRm9ybSgnZm9ybScpXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICAgICAgICBkYXRhLm1hc3Rlcl9zdWJzY3JpcHRpb25faWQgPSB0aGlzLmFwcENvbmZpZz8ubWFzdGVyX3N1YnNjcmlwdGlvbj8uc3Vic2NyaXB0aW9uX2lkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3ViJCA9IHRoaXMuaWRcbiAgICAgICAgICAgID8gdGhpcy5hZG1pblNlcnZpY2UudXBkYXRlRG9tYWluQ29uZmlnKHRoaXMuaWQsIGRhdGEpXG4gICAgICAgICAgICA6IHRoaXMuYWRtaW5TZXJ2aWNlLmNyZWF0ZURvbWFpbkNvbmZpZyhkYXRhKTtcbiAgICAgICAgc3ViJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkRvbWFpbkNvbmZpZy5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcbiAgICAgICAgICAgICAgICAgICAgW2Ake3RoaXMucm91dGVycy5kb21haW5Db25maWdEZXRhaWxzfSR7dGhpcy5pZCA/IHRoaXMuaWQgOiByZXMuaWR9YF0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSWQ6ICdPcmdhbml6YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLmR1cGxpY2F0ZUNvbmZpZ0lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBkdXBsaWNhdGVfZG9tYWluX2NvbmZpZ19pZDogdGhpcy5kdXBsaWNhdGVDb25maWdJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8aDM+Q29yZSBDb25maWd1cmF0aW9uPC9oMz5cbjxkaXY+XG4gIDxwIGNsYXNzPVwibWItNVwiPlRoZSBmb2xsb3dpbmcgZGV0YWlscyBhcmUgcmVxdWlyZWQgdG8gY29ycmVjdGx5IHNldCB1cCB5b3VyIGRvbWFpbi48YnIvPlxuICAgIE1ha2Ugc3VyZSBlYWNoIGZpZWxkIGlzIGNvbXBsZXRlZCBhY2N1cmF0ZWx5IHRvIGVuc3VyZSBzbW9vdGggb3BlcmF0aW9uIGFuZCBmdWxsIGZlYXR1cmUgYWNjZXNzLlxuICA8L3A+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG48Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAobmdTdWJtaXQpPVwib25TYXZlKClcIiAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuXG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLkNvbXBhbnlOYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uQ29tcGFueU5hbWUnIHwgdHJhbnNsb2NvXCIgbmFtZT1cImNvbXBhbnlfbmFtZVwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNvbXBhbnlfbmFtZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydjb21wYW55X25hbWUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLkNvbXBhbnlFbWFpbCcgfCB0cmFuc2xvY29cIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5WYWxpZGF0aW9uLkNvbXBhbnlFbWFpbCcgfCB0cmFuc2xvY29cIiBuYW1lPVwiY29tcGFueV9lbWFpbFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNvbXBhbnlfZW1haWxcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnY29tcGFueV9lbWFpbCddLmVycm9ycyB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidBZG1pbi5Eb21haW5Db25maWcuQ29tcGFueVVybCcgfCB0cmFuc2xvY29cIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5WYWxpZGF0aW9uLkNvbXBhbnlVcmwnIHwgdHJhbnNsb2NvXCIgbmFtZT1cImNvbXBhbnlfdXJsXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiY29tcGFueV91cmxcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnY29tcGFueV91cmwnXS5lcnJvcnMgfVwiIC8+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCIgKnJiYWNBbGxvdz1cIidQYWdlcy5TdXBlckFkbWluJ1wiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICBbbGFiZWxdPVwiJ0xheW91dCdcIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0xheW91dCBpcyByZXF1aXJlZCdcIlxuICAgICAgICBuYW1lPVwibGF5b3V0XCI+XG4gICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGF5b3V0XCJcbiAgICAgICAgICBbb3B0aW9uc109XCJsYXlvdXRPcHRpb25zXCJcbiAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBMYXlvdXRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnbGF5b3V0J10uZXJyb3JzIH1cIj5cbiAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLkhvc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlRvb2x0aXAuSG9zdE5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5Ib3N0TmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICBuYW1lPVwiaG9zdF9uYW1lXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImhvc3RfbmFtZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydob3N0X25hbWUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Eb21haW5Db25maWcuSW50ZXJuYWxQYXRoJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlRvb2x0aXAuSW50ZXJuYWxQYXRoJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uSW50ZXJuYWxQYXRoJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIG5hbWU9XCJpbnRlcm5hbF9wYXRoXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludGVybmFsX3BhdGhcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnaW50ZXJuYWxfcGF0aCddLmVycm9ycyB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIiBbbGFiZWxdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5EZXNjcmlwdGlvbicgfCB0cmFuc2xvY29cIlxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5Ub29sdGlwLkRlc2NyaXB0aW9uJ3wgdHJhbnNsb2NvXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5EZXNjcmlwdGlvbicgfCB0cmFuc2xvY29cIiBuYW1lPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydkZXNjcmlwdGlvbiddLmVycm9ycyB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIiBbbGFiZWxdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5Gcm9udGVuZFJlcG9OYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlRvb2x0aXAuRnJvbnRlbmRSZXBvTmFtZSd8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uRnJvbnRlbmRSZXBvTmFtZScgfCB0cmFuc2xvY29cIiBuYW1lPVwiZnJvbnRlbmRfcmVwb19uYW1lXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZnJvbnRlbmRfcmVwb19uYW1lXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2Zyb250ZW5kX3JlcG9fbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lcj5cblxuICAgICAgPGgzIGNsYXNzPVwibXQtNFwiPkRhdGFiYXNlIGFuZCBXZWJob29rIENvbmZpZ3VyYXRpb248L2gzPlxuICAgICAgPHAgY2xhc3M9XCJtYi01XCI+VGhlc2Ugc2V0dGluZ3MgY29udHJvbCBkYXRhYmFzZSBhbmQgd2ViaG9vayBpbnRlZ3JhdGlvbnMuPGJyLz5cbiAgICAgICAgRG8gbm90IG1vZGlmeSB0aGVtIHVubGVzcyB5b3XigJlyZSBjb25maWRlbnQgaW4gd2hhdCB5b3XigJlyZSBkb2luZyDigJQgaW5jb3JyZWN0IGNoYW5nZXMgbWF5IGRpc3J1cHQgc3lzdGVtIGZ1bmN0aW9uYWxpdHkuPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5TaGFyZE5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5Ub29sdGlwLlNoYXJkTmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uU2hhcmROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cInNoYXJkX25hbWVcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hhcmRfbmFtZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3NoYXJkX25hbWUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlNoYXJkVXJsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Eb21haW5Db25maWcuVG9vbHRpcC5TaGFyZFVybCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uU2hhcmRVcmwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBuYW1lPVwic2hhcmRfdXJsXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNoYXJkX3VybFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3NoYXJkX3VybCddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5JbnRyYVNlcnZpY2VzVG9rZW4nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5Ub29sdGlwLkludHJhU2VydmljZXNUb2tlbid8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5JbnRyYVNlcnZpY2VzVG9rZW4nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBuYW1lPVwiaW50cmFzZXJ2aWNlc190b2tlblwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnRyYXNlcnZpY2VzX3Rva2VuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnaW50cmFzZXJ2aWNlc190b2tlbiddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Eb21haW5Db25maWcuV2ViaG9va1Rva2VuJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Eb21haW5Db25maWcuVG9vbHRpcC5XZWJob29rVG9rZW4nfCB0cmFuc2xvY29cIlxuICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uV2ViaG9va1Rva2VuJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cIndlYmhvb2tfdG9rZW5cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwid2ViaG9va190b2tlblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3dlYmhvb2tfdG9rZW4nXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cblxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmQgbXQtM1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIlxuICAgICAgKGNsaWNrKT1cImJhY2soKVwiPlxuICAgICAge3sgJ0J1dHRvbi5DYW5jZWwnIHwgdHJhbnNsb2NvIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2J1dHRvbkJ1c3ldPVwiYnV0dG9uQnVzeVwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPnt7ICdCdXR0b24uU3VibWl0JyB8IHRyYW5zbG9jbyB9fTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLWNvbmZpZy1jb3JlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9kb21haW4tY29uZmlnL2RvbWFpbi1jb25maWctZGV0YWlscy9kb21haW4tY29uZmlnLWNvcmUvZG9tYWluLWNvbmZpZy1jb3JlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9kb21haW4tY29uZmlnL2RvbWFpbi1jb25maWctZGV0YWlscy9kb21haW4tY29uZmlnLWNvcmUvZG9tYWluLWNvbmZpZy1jb3JlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7O0FBTTdELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxnQkFBZ0I7SUFxQjNELFlBQ0ksUUFBa0IsRUFDRCxZQUEwQjtRQUUzQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFGQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBCL0MsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBUW5CLFlBQU8sR0FBRyxPQUFPLENB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QyxJQUFJLENBQUMsaUJBQWlCOzRCQUN0QixDQUFDLENBQUMsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7NEJBQ3hELENBQUMsQ0FBQyxFQUFFLENBQUM7cUJBQ1o7aUJBQ0osQ0FDSixDQUFDO1lBQ04sQ0FBQztTQUNKLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXRIUSx5QkFBeUI7bUdBQXpCLHlCQUF5QixvRkNmdEMsMmlQQWtLQTs7QUQ5REk7SUFEQyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O3VEQWtDcEI7NEZBdEhRLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDSSx1QkFBdUI7d0dBd0ZqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UsIEFwcEFkbWluIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgVmFsaWRhdGVGb3JtIH0gZnJvbSAnQHBvc2l3aXNlL3V0aWxzJztcblxuaW1wb3J0IHsgRG9tYWluQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9kb21haW4tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctZG9tYWluLWNvbmZpZy1jb3JlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG9tYWluLWNvbmZpZy1jb3JlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEb21haW5Db25maWdDb3JlQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAgIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIGJ1dHRvbkJ1c3kgPSBmYWxzZTtcblxuICAgIGlkOiBudW1iZXI7XG4gICAgZHVwbGljYXRlQ29uZmlnSWQ7XG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGRhdGE6IERvbWFpbkNvbmZpZztcblxuICAgIHJvdXRlcnMgPSBST1VURVJTO1xuXG4gICAgaXNMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgbGF5b3V0T3B0aW9ucyA9IFtcbiAgICAgICAgeyBsYWJlbDogJ0xheW91dCAxJywgdmFsdWU6ICdMYXlvdXQtMScgfSxcbiAgICAgICAgeyBsYWJlbDogJ0xheW91dCAyJywgdmFsdWU6ICdMYXlvdXQtMicgfVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgdGhpcy5mb3JtID0gQXBwQWRtaW4uZG9tYWluQ29uZmlnQ29yZUZvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHVwbGljYXRlQ29uZmlnSWQgPSBOdW1iZXIocGFyYW1zWydkdXBsaWNhdGVfZG9tYWluX2NvbmZpZ19pZCddKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ24nLCBwYXJhbXMpO1xuICAgICAgICAgICAgdGhpcy5pZCA9IE51bWJlcihwYXJhbXNbJ2lkJ10pO1xuICAgICAgICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldERvbWFpbkNvbmZpZ0RldGFpbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5pZCAmJiB0aGlzLmR1cGxpY2F0ZUNvbmZpZ0lkKSB7XG4gICAgICAgICAgICB0aGlzLmdldER1cGxpY2F0ZURvbWFpbkNvbmZpZ0RldGFpbHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0FDVFVBTCBxdWVyeVBhcmFtcycsIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpO1xuICAgICAgICAvLyBhbHNvIHRyeTpcbiAgICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdMaXZlIHF1ZXJ5UGFyYW1zJywgcGFyYW1zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREdXBsaWNhdGVEb21haW5Db25maWdEZXRhaWxzKCkge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0RG9tYWluQ29uZmlnQnlJZCh0aGlzLmR1cGxpY2F0ZUNvbmZpZ0lkLCB0aGlzLnN1YnNjcmlwdGlvbklkKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IERvbWFpbkNvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuZGF0YSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RG9tYWluQ29uZmlnRGV0YWlscygpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLmdldERvbWFpbkNvbmZpZ0J5SWQodGhpcy5pZCwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBEb21haW5Db25maWcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBAVmFsaWRhdGVGb3JtKCdmb3JtJylcbiAgICBvblNhdmUoKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoIXRoaXMuaWQpIHtcbiAgICAgICAgICAgIGRhdGEubWFzdGVyX3N1YnNjcmlwdGlvbl9pZCA9IHRoaXMuYXBwQ29uZmlnPy5tYXN0ZXJfc3Vic2NyaXB0aW9uPy5zdWJzY3JpcHRpb25faWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWIkID0gdGhpcy5pZFxuICAgICAgICAgICAgPyB0aGlzLmFkbWluU2VydmljZS51cGRhdGVEb21haW5Db25maWcodGhpcy5pZCwgZGF0YSlcbiAgICAgICAgICAgIDogdGhpcy5hZG1pblNlcnZpY2UuY3JlYXRlRG9tYWluQ29uZmlnKGRhdGEpO1xuICAgICAgICBzdWIkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uRG9tYWluQ29uZmlnLlVwZGF0ZWRNZXNzYWdlJykpO1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxuICAgICAgICAgICAgICAgICAgICBbYCR7dGhpcy5yb3V0ZXJzLmRvbWFpbkNvbmZpZ0RldGFpbHN9JHt0aGlzLmlkID8gdGhpcy5pZCA6IHJlcy5pZH1gXSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJZDogJ09yZ2FuaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuZHVwbGljYXRlQ29uZmlnSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGR1cGxpY2F0ZV9kb21haW5fY29uZmlnX2lkOiB0aGlzLmR1cGxpY2F0ZUNvbmZpZ0lkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxoMz5Db3JlIENvbmZpZ3VyYXRpb248L2gzPlxuPGRpdj5cbiAgPHAgY2xhc3M9XCJtYi01XCI+VGhlIGZvbGxvd2luZyBkZXRhaWxzIGFyZSByZXF1aXJlZCB0byBjb3JyZWN0bHkgc2V0IHVwIHlvdXIgZG9tYWluLjxici8+XG4gICAgTWFrZSBzdXJlIGVhY2ggZmllbGQgaXMgY29tcGxldGVkIGFjY3VyYXRlbHkgdG8gZW5zdXJlIHNtb290aCBvcGVyYXRpb24gYW5kIGZ1bGwgZmVhdHVyZSBhY2Nlc3MuXG4gIDwvcD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIG10LTNcIlxuICAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG48L2Rpdj5cbjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIChuZ1N1Ym1pdCk9XCJvblNhdmUoKVwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG5cblxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidBZG1pbi5Eb21haW5Db25maWcuQ29tcGFueU5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5Db21wYW55TmFtZScgfCB0cmFuc2xvY29cIiBuYW1lPVwiY29tcGFueV9uYW1lXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiY29tcGFueV9uYW1lXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2NvbXBhbnlfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidBZG1pbi5Eb21haW5Db25maWcuQ29tcGFueUVtYWlsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uQ29tcGFueUVtYWlsJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJjb21wYW55X2VtYWlsXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiY29tcGFueV9lbWFpbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydjb21wYW55X2VtYWlsJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5Db21wYW55VXJsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRG9tYWluQ29uZmlnLlZhbGlkYXRpb24uQ29tcGFueVVybCcgfCB0cmFuc2xvY29cIiBuYW1lPVwiY29tcGFueV91cmxcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJjb21wYW55X3VybFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydjb21wYW55X3VybCddLmVycm9ycyB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIiAqcmJhY0FsbG93PVwiJ1BhZ2VzLlN1cGVyQWRtaW4nXCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgIFtsYWJlbF09XCInTGF5b3V0J1wiXG4gICAgICAgIFtlcnJvck1zZ109XCInTGF5b3V0IGlzIHJlcXVpcmVkJ1wiXG4gICAgICAgIG5hbWU9XCJsYXlvdXRcIj5cbiAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgIFtvcHRpb25zXT1cImxheW91dE9wdGlvbnNcIlxuICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IExheW91dFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydsYXlvdXQnXS5lcnJvcnMgfVwiPlxuICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Eb21haW5Db25maWcuSG9zdE5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Eb21haW5Db25maWcuVG9vbHRpcC5Ib3N0TmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5WYWxpZGF0aW9uLkhvc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIG5hbWU9XCJob3N0X25hbWVcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaG9zdF9uYW1lXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2hvc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5JbnRlcm5hbFBhdGgnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Eb21haW5Db25maWcuVG9vbHRpcC5JbnRlcm5hbFBhdGgnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5JbnRlcm5hbFBhdGgnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgbmFtZT1cImludGVybmFsX3BhdGhcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW50ZXJuYWxfcGF0aFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydpbnRlcm5hbF9wYXRoJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLkRlc2NyaXB0aW9uJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlRvb2x0aXAuRGVzY3JpcHRpb24nfCB0cmFuc2xvY29cIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5WYWxpZGF0aW9uLkRlc2NyaXB0aW9uJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2Rlc2NyaXB0aW9uJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLkZyb250ZW5kUmVwb05hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Eb21haW5Db25maWcuVG9vbHRpcC5Gcm9udGVuZFJlcG9OYW1lJ3wgdHJhbnNsb2NvXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5Gcm9udGVuZFJlcG9OYW1lJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJmcm9udGVuZF9yZXBvX25hbWVcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJmcm9udGVuZF9yZXBvX25hbWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnZnJvbnRlbmRfcmVwb19uYW1lJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyPlxuXG4gICAgICA8aDMgY2xhc3M9XCJtdC00XCI+RGF0YWJhc2UgYW5kIFdlYmhvb2sgQ29uZmlndXJhdGlvbjwvaDM+XG4gICAgICA8cCBjbGFzcz1cIm1iLTVcIj5UaGVzZSBzZXR0aW5ncyBjb250cm9sIGRhdGFiYXNlIGFuZCB3ZWJob29rIGludGVncmF0aW9ucy48YnIvPlxuICAgICAgICBEbyBub3QgbW9kaWZ5IHRoZW0gdW5sZXNzIHlvdeKAmXJlIGNvbmZpZGVudCBpbiB3aGF0IHlvdeKAmXJlIGRvaW5nIOKAlCBpbmNvcnJlY3QgY2hhbmdlcyBtYXkgZGlzcnVwdCBzeXN0ZW0gZnVuY3Rpb25hbGl0eS48L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlNoYXJkTmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlRvb2x0aXAuU2hhcmROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5TaGFyZE5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBuYW1lPVwic2hhcmRfbmFtZVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaGFyZF9uYW1lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnc2hhcmRfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Eb21haW5Db25maWcuU2hhcmRVcmwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5Ub29sdGlwLlNoYXJkVXJsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5TaGFyZFVybCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJzaGFyZF91cmxcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hhcmRfdXJsXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnc2hhcmRfdXJsJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRG9tYWluQ29uZmlnLkludHJhU2VydmljZXNUb2tlbicgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRG9tYWluQ29uZmlnLlRvb2x0aXAuSW50cmFTZXJ2aWNlc1Rva2VuJ3wgdHJhbnNsb2NvXCJcbiAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5WYWxpZGF0aW9uLkludHJhU2VydmljZXNUb2tlbicgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJpbnRyYXNlcnZpY2VzX3Rva2VuXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludHJhc2VydmljZXNfdG9rZW5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydpbnRyYXNlcnZpY2VzX3Rva2VuJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5XZWJob29rVG9rZW4nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkRvbWFpbkNvbmZpZy5Ub29sdGlwLldlYmhvb2tUb2tlbid8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5Eb21haW5Db25maWcuVmFsaWRhdGlvbi5XZWJob29rVG9rZW4nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBuYW1lPVwid2ViaG9va190b2tlblwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ3ZWJob29rX3Rva2VuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnd2ViaG9va190b2tlbiddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZCBtdC0zXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRlZmF1bHQgbWUtMlwiXG4gICAgICAoY2xpY2spPVwiYmFjaygpXCI+XG4gICAgICB7eyAnQnV0dG9uLkNhbmNlbCcgfCB0cmFuc2xvY28gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBbYnV0dG9uQnVzeV09XCJidXR0b25CdXN5XCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+e3sgJ0J1dHRvbi5TdWJtaXQnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs
CHANGED
|
@@ -89,7 +89,7 @@ export class DomainConfigListComponent extends AppBaseComponent {
|
|
|
89
89
|
super.ngOnDestroy();
|
|
90
90
|
}
|
|
91
91
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DomainConfigListComponent, deps: [{ token: i0.Injector }, { token: i1.AdminService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DomainConfigListComponent, selector: "pw-domain-config-list", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end\">\n <h2 class=\"card-title p-0 float-start\">Domains</h2>\n <button class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup a New Domain\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Domains</strong> module lets you quickly launch and customize <strong>polished onboarding pages</strong> tied to specific domain names, <br/>\n which is perfect for managing <strong>branded user experiences</strong> across different products or campaigns.</p>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.domains\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n pInputText\n size=\"50\"\n placeholder=\"Search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"host_name\">\n {{ 'Admin.DomainConfig.HostName' | transloco }}\n <p-sortIcon field=\"host_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"internal_path\">\n {{ 'Admin.DomainConfig.InternalPath' | transloco }}\n <p-sortIcon field=\"internal_path\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"shard_name\">\n {{ 'Admin.DomainConfig.ShardName' | transloco }}\n <p-sortIcon field=\"shard_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"shard_url\">\n {{ 'Admin.DomainConfig.ShardUrl' | transloco }}\n <p-sortIcon field=\"shard_url\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"company_name\">\n {{ 'Admin.DomainConfig.CompanyName' | transloco }}\n <p-sortIcon field=\"company_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"frontend_repo_name\">\n {{ 'Admin.DomainConfig.Frontend' | transloco }}\n <p-sortIcon field=\"frontend_repo_name\"></p-sortIcon>\n </th>\n <th scope=\"true\" pSortableColumn=\"active\">\n {{ 'Admin.DomainConfig.Active' | transloco }}\n <p-sortIcon field=\"active\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"social_login_enabled\">\n {{ 'Admin.DomainConfig.SocialLoginEnabled' | transloco }}\n <p-sortIcon field=\"social_login_enabled\"></p-sortIcon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"host_name\">\n <div class=\"d-flex align-items-center\">\n <a [href]=\"'http://' + item?.host_name\" target=\"_blank\" class=\"text-nowrap\">\n {{ item?.host_name }}\n </a>\n <i class=\"fas fa-info-circle info-icon ms-2\" *ngIf=\"item?.description\"\n [ngbTooltip]=\"item?.description\"></i>\n </div>\n </td>\n\n\n\n <td data-head=\"internal_path\">{{ item?.internal_path }}</td>\n <td data-head=\"shard_name\">\n <span [appDynamicBadge]=\"{\n itemsArray: shardNames,\n item: item?.shard_name\n }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item?.shard_name }}</span>\n </td>\n <td data-head=\"shard_url\">{{ item?.shard_url }}</td>\n <td data-head=\"company_name\">{{ item?.company_name }}</td>\n <td data-head=\"frontend_repo_name\">\n <span [appDynamicBadge]=\"{\n itemsArray: frontendRepoNames,\n item: item?.frontend_repo_name\n }\"\n color=\"cyan\"\n class=\"badge\">{{ item?.frontend_repo_name }}</span>\n </td>\n <td data-head=\"active\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.active\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"social_login_enabled\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.social_login_enabled\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.social_login_enabled ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n [routerLink]=\"[routers.domainConfigDetails + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Duplicate The Domain Config\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\"\n [queryParams]=\"{ duplicate_domain_config_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 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=\"data.object_count !== 0\">Total: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.DomainConfig.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n", dependencies: [{ kind: "component", type: i2.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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i10.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i11.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: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DomainConfigListComponent, selector: "pw-domain-config-list", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end\">\n <h2 class=\"card-title p-0 float-start\">Domains</h2>\n <button class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup a New Domain\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Domains</strong> module lets you quickly launch and customize <strong>polished onboarding pages</strong> tied to specific domain names, <br/>\n which is perfect for managing <strong>branded user experiences</strong> across different products or campaigns.</p>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.domains\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n pInputText\n size=\"50\"\n placeholder=\"Search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"host_name\">\n {{ 'Admin.DomainConfig.HostName' | transloco }}\n <p-sortIcon field=\"host_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"internal_path\">\n {{ 'Admin.DomainConfig.InternalPath' | transloco }}\n <p-sortIcon field=\"internal_path\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"shard_name\">\n {{ 'Admin.DomainConfig.ShardName' | transloco }}\n <p-sortIcon field=\"shard_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"shard_url\">\n {{ 'Admin.DomainConfig.ShardUrl' | transloco }}\n <p-sortIcon field=\"shard_url\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"company_name\">\n {{ 'Admin.DomainConfig.CompanyName' | transloco }}\n <p-sortIcon field=\"company_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"frontend_repo_name\">\n {{ 'Admin.DomainConfig.Frontend' | transloco }}\n <p-sortIcon field=\"frontend_repo_name\"></p-sortIcon>\n </th>\n <th scope=\"true\" pSortableColumn=\"active\">\n {{ 'Admin.DomainConfig.Active' | transloco }}\n <p-sortIcon field=\"active\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"social_login_enabled\">\n {{ 'Admin.DomainConfig.SocialLoginEnabled' | transloco }}\n <p-sortIcon field=\"social_login_enabled\"></p-sortIcon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"host_name\">\n <div class=\"d-flex align-items-center\">\n <a [href]=\"'http://' + item?.host_name\" target=\"_blank\" class=\"text-nowrap\">\n {{ item?.host_name }}\n </a>\n <i class=\"fas fa-info-circle info-icon ms-2\" *ngIf=\"item?.description\"\n [ngbTooltip]=\"item?.description\"></i>\n </div>\n </td>\n\n\n\n <td data-head=\"internal_path\">{{ item?.internal_path }}</td>\n <td data-head=\"shard_name\">\n <span [appDynamicBadge]=\"{\n itemsArray: shardNames,\n item: item?.shard_name\n }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item?.shard_name }}</span>\n </td>\n <td data-head=\"shard_url\">{{ item?.shard_url }}</td>\n <td data-head=\"company_name\">{{ item?.company_name }}</td>\n <td data-head=\"frontend_repo_name\">\n <span [appDynamicBadge]=\"{\n itemsArray: frontendRepoNames,\n item: item?.frontend_repo_name\n }\"\n color=\"cyan\"\n class=\"badge\">{{ item?.frontend_repo_name }}</span>\n </td>\n <td data-head=\"active\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.active\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"social_login_enabled\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.social_login_enabled\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.social_login_enabled ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n [routerLink]=\"[routers.domainConfigDetails + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Duplicate The Domain Config\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\"\n [queryParams]=\"{ duplicate_domain_config_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 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=\"data.object_count !== 0\">Total: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.DomainConfig.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n", dependencies: [{ kind: "component", type: i2.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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i10.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color", "colorByName", "dataName"] }, { kind: "directive", type: i11.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: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
93
93
|
}
|
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DomainConfigListComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
@@ -265,7 +265,7 @@ export class FaqListComponent extends AppBaseComponent {
|
|
|
265
265
|
super.ngOnDestroy();
|
|
266
266
|
}
|
|
267
267
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FaqListComponent, deps: [{ token: i1.CommonService }, { token: i2.AdminService }, { token: i1.ProductService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FaqListComponent, selector: "pw-admin-faq-list", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\" [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\"\n *ngIf=\"showList\">\n <h2 class=\"card-title p-0 float-start\">Frequently Asked Questions</h2>\n <a aria-label=\"Navigate to Target\" [routerLink]=\"[routers.faqDetails + 'add']\"\n class=\"btn btn-sm btn-outline-primary float-end\" aria-expanded=\"false\"\n (keydown.enter)=\"$event.preventDefault()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Label.AddNew' | transloco }} FAQ </a>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>FAQ</strong> module enables you to provide clear, self-serve answers to common users questions - reducing support load.<br>\n It's ideal for covering things like <strong>pricing</strong>, <strong>troubleshooting</strong>, and <strong>onboarding steps</strong>.</p>\n </div>\n</div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0 || !showList\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"faqs\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\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 [showToggleAll]=\"true\" [options]=\"featureKeysList\" (onChange)=\"onProductChange($event)\"\n placeholder=\"Search by Feature keys\" [showHeader]=\"true\" maxSelectedLabels=\"2\" 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\" [(ngModel)]=\"searchText\" pInputText size=\"50\" placeholder=\"Search FAQ...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" class=\"mw-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Admin.Faq.Question' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Answer' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Position' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Category' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Visible' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Public' | transloco }}</th>\n <th scope=\"true\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-faq>\n <tr>\n <td data-head=\"Question\">{{ faq.question }} </td>\n <td data-head=\"Answer\">{{(faq.answer|removeHtml: 'quill')|textTruncate: 200}} </td>\n <td data-head=\"Position\">{{faq.position}}</td>\n <td data-head=\"Category\">\n <span [appDynamicBadge]=\"{ itemsArray: categoryForBadges, item: faq?.category }\" color=\"cyan\"\n class=\"badge ms-1\">\n <span [pTooltip]=\"faq?.feature_keys?.join(',')\" tooltipPosition=\"top\">{{ faqHashMap[faq?.category]?.name\n }}</span>\n </span>\n <span class=\"ms-1 badge bg-warning\" *ngIf=\"faq.is_shared_faq || faq.is_admin_faq || faq.is_build_faq\">Super\n FAQ</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.visible }\" color=\"success-danger\"\n class=\"badge\">{{ faq?.visible }}</span>\n </td>\n <td data-head=\"Public\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.public }\" color=\"success-danger\"\n class=\"badge\">{{ faq?.public }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-edit edit-icon\" (keydown.enter)=\"navigateToEdit(faq)\" (keydown.space)=\"navigateToEdit(faq)\" (click)=\"navigateToEdit(faq)\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(faq)\" (keydown.space)=\"onDelete(faq)\" (click)=\"onDelete(faq)\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"View faq\" *ngIf=\"faq?.visible\">\n <a [routerLink]=\"['/',slug,'faq',faq.id]\" target=\"_blank\" aria-label=\"View FAQ\">\n <i class=\"fa fa-eye fa-lg\" aria-hidden=\"true\"></i>\n </a>\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 *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<pw-no-data [withImage]=\"true\" [message]=\"'Admin.Faq.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\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)}.faq-item{background-color:#fff;border:1px dashed rgba(0,0,0,.1);border-radius:3px;margin-top:10px;transition:all .2s ease-in-out}.faq-item h5{padding:0 15px 0 0;position:relative}.faq-item h5 a:before{position:absolute;right:-24px;top:3px}input.warning{border-color:red}@media only screen and (max-width: 1024px){.faq-item h5 a{font-size:16px}.faq-item button.btn{font-size:14px}.panel-collapse .card-block{font-size:14px;margin-bottom:20px;padding:0 8px}}.actions{min-width:80px}@media only screen and (max-width: 768px){.faq-item h5 a{font-size:14px}.faq-item button.btn,.panel-collapse .card-block{font-size:12px}}.tooltip-wrap{vertical-align:top}.custom-dropdown,.custom-multiselect{position:absolute!important;width:inherit!important;z-index:9999!important}.p-dropdown-items-wrapper{max-height:142px}.fa-eye{font-size:15px}quill-editor,[_nghost-ng-c3617506782]{display:block!important}.quill-editor label{display:block}\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: 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.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: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i11.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i12.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i13.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { 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.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i16.TextTruncatePipe, name: "textTruncate" }] }); }
|
|
268
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FaqListComponent, selector: "pw-admin-faq-list", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\" [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\"\n *ngIf=\"showList\">\n <h2 class=\"card-title p-0 float-start\">Frequently Asked Questions</h2>\n <a aria-label=\"Navigate to Target\" [routerLink]=\"[routers.faqDetails + 'add']\"\n class=\"btn btn-sm btn-outline-primary float-end\" aria-expanded=\"false\"\n (keydown.enter)=\"$event.preventDefault()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Label.AddNew' | transloco }} FAQ </a>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>FAQ</strong> module enables you to provide clear, self-serve answers to common users questions - reducing support load.<br>\n It's ideal for covering things like <strong>pricing</strong>, <strong>troubleshooting</strong>, and <strong>onboarding steps</strong>.</p>\n </div>\n</div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0 || !showList\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"faqs\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\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 [showToggleAll]=\"true\" [options]=\"featureKeysList\" (onChange)=\"onProductChange($event)\"\n placeholder=\"Search by Feature keys\" [showHeader]=\"true\" maxSelectedLabels=\"2\" 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\" [(ngModel)]=\"searchText\" pInputText size=\"50\" placeholder=\"Search FAQ...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" class=\"mw-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Admin.Faq.Question' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Answer' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Position' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Category' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Visible' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Public' | transloco }}</th>\n <th scope=\"true\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-faq>\n <tr>\n <td data-head=\"Question\">{{ faq.question }} </td>\n <td data-head=\"Answer\">{{(faq.answer|removeHtml: 'quill')|textTruncate: 200}} </td>\n <td data-head=\"Position\">{{faq.position}}</td>\n <td data-head=\"Category\">\n <span [appDynamicBadge]=\"{ itemsArray: categoryForBadges, item: faq?.category }\" color=\"cyan\"\n class=\"badge ms-1\">\n <span [pTooltip]=\"faq?.feature_keys?.join(',')\" tooltipPosition=\"top\">{{ faqHashMap[faq?.category]?.name\n }}</span>\n </span>\n <span class=\"ms-1 badge bg-warning\" *ngIf=\"faq.is_shared_faq || faq.is_admin_faq || faq.is_build_faq\">Super\n FAQ</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.visible }\" color=\"success-danger\"\n class=\"badge\">{{ faq?.visible }}</span>\n </td>\n <td data-head=\"Public\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.public }\" color=\"success-danger\"\n class=\"badge\">{{ faq?.public }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-edit edit-icon\" (keydown.enter)=\"navigateToEdit(faq)\" (keydown.space)=\"navigateToEdit(faq)\" (click)=\"navigateToEdit(faq)\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(faq)\" (keydown.space)=\"onDelete(faq)\" (click)=\"onDelete(faq)\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"View faq\" *ngIf=\"faq?.visible\">\n <a [routerLink]=\"['/',slug,'faq',faq.id]\" target=\"_blank\" aria-label=\"View FAQ\">\n <i class=\"fa fa-eye fa-lg\" aria-hidden=\"true\"></i>\n </a>\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 *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<pw-no-data [withImage]=\"true\" [message]=\"'Admin.Faq.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\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)}.faq-item{background-color:#fff;border:1px dashed rgba(0,0,0,.1);border-radius:3px;margin-top:10px;transition:all .2s ease-in-out}.faq-item h5{padding:0 15px 0 0;position:relative}.faq-item h5 a:before{position:absolute;right:-24px;top:3px}input.warning{border-color:red}@media only screen and (max-width: 1024px){.faq-item h5 a{font-size:16px}.faq-item button.btn{font-size:14px}.panel-collapse .card-block{font-size:14px;margin-bottom:20px;padding:0 8px}}.actions{min-width:80px}@media only screen and (max-width: 768px){.faq-item h5 a{font-size:14px}.faq-item button.btn,.panel-collapse .card-block{font-size:12px}}.tooltip-wrap{vertical-align:top}.custom-dropdown,.custom-multiselect{position:absolute!important;width:inherit!important;z-index:9999!important}.p-dropdown-items-wrapper{max-height:142px}.fa-eye{font-size:15px}quill-editor,[_nghost-ng-c3617506782]{display:block!important}.quill-editor label{display:block}\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: 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.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: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i11.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i12.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i13.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color", "colorByName", "dataName"] }, { 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.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i16.TextTruncatePipe, name: "textTruncate" }] }); }
|
|
269
269
|
}
|
|
270
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FaqListComponent, decorators: [{
|
|
271
271
|
type: Component,
|
|
@@ -96,7 +96,7 @@ export class LoginNotificationDetailsComponent extends AppBaseComponent {
|
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
98
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LoginNotificationDetailsComponent, deps: [{ token: i0.Injector }, { token: i1.AdminService }, { token: i2.ProductService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LoginNotificationDetailsComponent, selector: "pw-login-notification-details", usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n [routerLink]=\"[routers.loginNotifications]\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ id ? 'Edit' : 'Add New' }}: Dashboard Notification</span>\n </h3>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n *ngIf=\"!isLoading\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4 col-md-3\"\n *ngIf=\"loginNotificationTypes$ | async as types\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.NotificationType' | transloco\"\n [label]=\"'Admin.LoginNotification.NotificationType' | transloco\"\n name=\"notification_type\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.NotificationType'\n | transloco\n \">\n\n <p-dropdown\n [options]=\"types['available_types']\"\n formControlName=\"notification_type\"\n [ngClass]=\"{'is-invalid': submitted && f['notification_type'].errors}\"\n [placeholder]=\"'Select Type'\"\n [showClear]=\"false\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Feature keys -->\n <div class=\"mb-3 col-12 col-sm-4 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Features' | transloco\"\n [label]=\"'Admin.LoginNotification.Features' | transloco\"\n name=\"feature_keys\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.Features' | transloco\n \">\n <p-multiSelect [options]=\"featureKeys\"\n placeholder=\"Select feature keys\"\n [showHeader]=\"true\"\n [showToggleAll]=\"true\"\n formControlName=\"feature_keys\"\n appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <!-- visible_from -->\n <div class=\"col-12 col-sm-4 col-md-2 mb-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.VisibleFrom' | transloco\"\n [label]=\"'Admin.LoginNotification.VisibleFrom' | transloco\"\n name=\"visible_from\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.VisibleFrom' | transloco\n \">\n <p-calendar formControlName=\"visible_from\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Visible Date'\"\n [ngClass]=\"{\n 'is-invalid': submitted && f['visible_from'].errors\n }\">\n </p-calendar>\n </pw-input-container>\n </div>\n <!-- visible_until -->\n <div class=\"col-12 col-sm-4 col-md-2 mb-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.VisibleUntil' | transloco\"\n [label]=\"'Admin.LoginNotification.VisibleUntil' | transloco\"\n name=\"visible_until\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.VisibleUntil'\n | transloco\n \">\n <div>\n <p-calendar formControlName=\"visible_until\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Visible Until Date'\"\n [ngClass]=\"{\n 'is-invalid': submitted && f['visible_until'].errors\n }\">\n </p-calendar>\n </div>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Permanent'|transloco\"\n [label]=\"'Admin.LoginNotification.IsPermanent' | transloco\"\n name=\"is_permanent\">\n <ui-switch formControlName=\"is_permanent\"\n name=\"is_permanent\">\n </ui-switch>\n </pw-input-container>\n </div>\n <!-- body -->\n <div class=\"col-12 col-sm-12\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Body' | transloco\"\n [isLeftTooltip]=\"true\"\n [label]=\"'Admin.LoginNotification.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Admin.LoginNotification.Validation.Body' | transloco\">\n <textarea rows=\"3\"\n type=\"text\"\n class=\"form-control\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\"></textarea>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n", styles: [".form-select{border-radius:5px!important;border:1px solid #ced4da;height:36px!important}\n"], dependencies: [{ kind: "component", type: i3.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4.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: "component", type: i5.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i8.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "directive", type: i9.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i11.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "directive", type: i12.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LoginNotificationDetailsComponent, selector: "pw-login-notification-details", usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n [routerLink]=\"[routers.loginNotifications]\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ id ? 'Edit' : 'Add New' }}: Dashboard Notification</span>\n </h3>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n *ngIf=\"!isLoading\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4 col-md-3\"\n *ngIf=\"loginNotificationTypes$ | async as types\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.NotificationType' | transloco\"\n [label]=\"'Admin.LoginNotification.NotificationType' | transloco\"\n name=\"notification_type\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.NotificationType'\n | transloco\n \">\n\n <p-dropdown\n [options]=\"types['available_types']\"\n formControlName=\"notification_type\"\n [ngClass]=\"{'is-invalid': submitted && f['notification_type'].errors}\"\n [placeholder]=\"'Select Type'\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Feature keys -->\n <div class=\"mb-3 col-12 col-sm-4 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Features' | transloco\"\n [label]=\"'Admin.LoginNotification.Features' | transloco\"\n name=\"feature_keys\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.Features' | transloco\n \">\n <p-multiSelect [options]=\"featureKeys\"\n placeholder=\"Select feature keys\"\n [showHeader]=\"true\"\n [showToggleAll]=\"true\"\n formControlName=\"feature_keys\"\n appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <!-- visible_from -->\n <div class=\"col-12 col-sm-4 col-md-2 mb-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.VisibleFrom' | transloco\"\n [label]=\"'Admin.LoginNotification.VisibleFrom' | transloco\"\n name=\"visible_from\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.VisibleFrom' | transloco\n \">\n <p-calendar formControlName=\"visible_from\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Visible Date'\"\n [ngClass]=\"{\n 'is-invalid': submitted && f['visible_from'].errors\n }\">\n </p-calendar>\n </pw-input-container>\n </div>\n <!-- visible_until -->\n <div class=\"col-12 col-sm-4 col-md-2 mb-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.VisibleUntil' | transloco\"\n [label]=\"'Admin.LoginNotification.VisibleUntil' | transloco\"\n name=\"visible_until\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.VisibleUntil'\n | transloco\n \">\n <div>\n <p-calendar formControlName=\"visible_until\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Visible Until Date'\"\n [ngClass]=\"{\n 'is-invalid': submitted && f['visible_until'].errors\n }\">\n </p-calendar>\n </div>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Permanent'|transloco\"\n [label]=\"'Admin.LoginNotification.IsPermanent' | transloco\"\n name=\"is_permanent\">\n <ui-switch formControlName=\"is_permanent\"\n name=\"is_permanent\">\n </ui-switch>\n </pw-input-container>\n </div>\n <!-- body -->\n <div class=\"col-12 col-sm-12\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Body' | transloco\"\n [isLeftTooltip]=\"true\"\n [label]=\"'Admin.LoginNotification.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Admin.LoginNotification.Validation.Body' | transloco\">\n <textarea rows=\"3\"\n type=\"text\"\n class=\"form-control\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\"></textarea>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n", styles: [".form-select{border-radius:5px!important;border:1px solid #ced4da;height:36px!important}\n"], dependencies: [{ kind: "component", type: i3.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4.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: "component", type: i5.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i8.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "directive", type: i9.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i11.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "directive", type: i12.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
|
|
100
100
|
}
|
|
101
101
|
__decorate([
|
|
102
102
|
ValidateForm('form'),
|
|
@@ -106,6 +106,6 @@ __decorate([
|
|
|
106
106
|
], LoginNotificationDetailsComponent.prototype, "onSave", null);
|
|
107
107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LoginNotificationDetailsComponent, decorators: [{
|
|
108
108
|
type: Component,
|
|
109
|
-
args: [{ selector: 'pw-login-notification-details', template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n [routerLink]=\"[routers.loginNotifications]\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ id ? 'Edit' : 'Add New' }}: Dashboard Notification</span>\n </h3>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n *ngIf=\"!isLoading\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4 col-md-3\"\n *ngIf=\"loginNotificationTypes$ | async as types\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.NotificationType' | transloco\"\n [label]=\"'Admin.LoginNotification.NotificationType' | transloco\"\n name=\"notification_type\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.NotificationType'\n | transloco\n \">\n\n <p-dropdown\n [options]=\"types['available_types']\"\n formControlName=\"notification_type\"\n [ngClass]=\"{'is-invalid': submitted && f['notification_type'].errors}\"\n [placeholder]=\"'Select Type'\"
|
|
109
|
+
args: [{ selector: 'pw-login-notification-details', template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n [routerLink]=\"[routers.loginNotifications]\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ id ? 'Edit' : 'Add New' }}: Dashboard Notification</span>\n </h3>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n *ngIf=\"!isLoading\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4 col-md-3\"\n *ngIf=\"loginNotificationTypes$ | async as types\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.NotificationType' | transloco\"\n [label]=\"'Admin.LoginNotification.NotificationType' | transloco\"\n name=\"notification_type\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.NotificationType'\n | transloco\n \">\n\n <p-dropdown\n [options]=\"types['available_types']\"\n formControlName=\"notification_type\"\n [ngClass]=\"{'is-invalid': submitted && f['notification_type'].errors}\"\n [placeholder]=\"'Select Type'\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Feature keys -->\n <div class=\"mb-3 col-12 col-sm-4 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Features' | transloco\"\n [label]=\"'Admin.LoginNotification.Features' | transloco\"\n name=\"feature_keys\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.Features' | transloco\n \">\n <p-multiSelect [options]=\"featureKeys\"\n placeholder=\"Select feature keys\"\n [showHeader]=\"true\"\n [showToggleAll]=\"true\"\n formControlName=\"feature_keys\"\n appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <!-- visible_from -->\n <div class=\"col-12 col-sm-4 col-md-2 mb-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.VisibleFrom' | transloco\"\n [label]=\"'Admin.LoginNotification.VisibleFrom' | transloco\"\n name=\"visible_from\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.VisibleFrom' | transloco\n \">\n <p-calendar formControlName=\"visible_from\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Visible Date'\"\n [ngClass]=\"{\n 'is-invalid': submitted && f['visible_from'].errors\n }\">\n </p-calendar>\n </pw-input-container>\n </div>\n <!-- visible_until -->\n <div class=\"col-12 col-sm-4 col-md-2 mb-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.VisibleUntil' | transloco\"\n [label]=\"'Admin.LoginNotification.VisibleUntil' | transloco\"\n name=\"visible_until\"\n [errorMsg]=\"\n 'Admin.LoginNotification.Validation.VisibleUntil'\n | transloco\n \">\n <div>\n <p-calendar formControlName=\"visible_until\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Visible Until Date'\"\n [ngClass]=\"{\n 'is-invalid': submitted && f['visible_until'].errors\n }\">\n </p-calendar>\n </div>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Permanent'|transloco\"\n [label]=\"'Admin.LoginNotification.IsPermanent' | transloco\"\n name=\"is_permanent\">\n <ui-switch formControlName=\"is_permanent\"\n name=\"is_permanent\">\n </ui-switch>\n </pw-input-container>\n </div>\n <!-- body -->\n <div class=\"col-12 col-sm-12\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.LoginNotification.Tooltip.Body' | transloco\"\n [isLeftTooltip]=\"true\"\n [label]=\"'Admin.LoginNotification.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Admin.LoginNotification.Validation.Body' | transloco\">\n <textarea rows=\"3\"\n type=\"text\"\n class=\"form-control\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\"></textarea>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n", styles: [".form-select{border-radius:5px!important;border:1px solid #ced4da;height:36px!important}\n"] }]
|
|
110
110
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.AdminService }, { type: i2.ProductService }], propDecorators: { onSave: [] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luLW5vdGlmaWNhdGlvbnMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luLW5vdGlmaWNhdGlvbnMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8saUNBQWtDLFNBQVEsZ0JBQWdCO0lBa0JuRSxZQUNJLFFBQWtCLEVBQ0QsWUFBMEIsRUFDMUIsY0FBOEI7UUFFL0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBbEJuRCxjQUFTLEdBQUcsS0FB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SSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxHQUFHO1lBQ1QsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDbEIsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3ZDLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtZQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztZQUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ1gsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDZCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUN2RSxDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixDQUFDO1NBQ0osQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBcEdRLGlDQUFpQzttR0FBakMsaUNBQWlDLDRGQ2pCOUMsOHVOQWtKQTs7QURsREk7SUFEQyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7OytEQXNCcEI7NEZBcEdRLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDSSwrQkFBK0I7cUlBbUZ6QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UsIEFwcEFkbWluIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSwgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFZhbGlkYXRlRm9ybSB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUk9VVEVSUyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yb3V0ZXJzL3JvdXRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWxvZ2luLW5vdGlmaWNhdGlvbi1kZXRhaWxzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2xvZ2luLW5vdGlmaWNhdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Ob3RpZmljYXRpb25EZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAgIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIGJ1dHRvbkJ1c3kgPSBmYWxzZTtcblxuICAgIGlkOiBudW1iZXI7XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBsb2dpbk5vdGlmaWNhdGlvblR5cGVzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgIGZlYXR1cmVLZXlzID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTZXJ2aWNlOiBQcm9kdWN0U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZm9ybSA9IEFwcEFkbWluLmxvZ2luTm90aWZpY2F0aW9uRm9ybSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLmxvZ2luTm90aWZpY2F0aW9uVHlwZXMkID0gdGhpcy5hZG1pblNlcnZpY2UuZ2V0QXZhaWxhYmxlTG9naW5Ob3RpZmljYXRpb25UeXBlcyhcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5nZXRGZWF0dXJlS2V5cygpO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSBOdW1iZXIocGFyYW1zWydpZCddKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRMb2dpbk5vdGlmaWNhdGlvbkRldGFpbHMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMb2dpbk5vdGlmaWNhdGlvbkRldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0TG9naW5Ob3RpZmljYXRpb25CeUlkKHRoaXMuaWQsIHRoaXMuc3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVfdW50aWw6IGRhdGE/LnZpc2libGVfdW50aWwgPyBuZXcgRGF0ZShkYXRhPy52aXNpYmxlX3VudGlsKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlX2Zyb206IGRhdGE/LnZpc2libGVfZnJvbSA/IG5ldyBEYXRlKGRhdGE/LnZpc2libGVfZnJvbSkgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9rZXlzOiBkYXRhPy5mZWF0dXJlX2tleXMgfHwgW10sXG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbl90eXBlOiBkYXRhPy5ub3RpZmljYXRpb25fdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfcGVybWFuZW50OiBkYXRhPy5pc19wZXJtYW5lbnQsXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGRhdGE/LmJvZHlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmVhdHVyZUtleXMoKSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0UHJvZHVjdExpc3Qoe30sIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmZWF0dXJlS2V5cyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IFNldChyZXNwb25zZS5wcm9kdWN0cy5tYXAoaXRlbSA9PiBpdGVtLmZlYXR1cmVfa2V5KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVLZXlzID0gZmVhdHVyZUtleXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQFZhbGlkYXRlRm9ybSgnZm9ybScpXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc3ViJCA9IHRoaXMuaWRcbiAgICAgICAgICAgID8gdGhpcy5hZG1pblNlcnZpY2UudXBkYXRlTG9naW5Ob3RpZmljYXRpb24odGhpcy5pZCwgZGF0YSlcbiAgICAgICAgICAgIDogdGhpcy5hZG1pblNlcnZpY2UuY3JlYXRlTG9naW5Ob3RpZmljYXRpb24oZGF0YSk7XG4gICAgICAgIHN1YiQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5VcGRhdGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuYWRkKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZS1hdXRvIGNvbC14cy02IG10LTRcIj5cbiAgICAgICAgPGEgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIHRvIFRhcmdldFwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMubG9naW5Ob3RpZmljYXRpb25zXVwiXG4gICAgICAgICAgY2xhc3M9XCJwcmV2aW91c1wiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxoMyBjbGFzcz1cIm0tc3ViaGVhZGVyX190aXRsZSBtLXN1YmhlYWRlcl9fdGl0bGUtLXNlcGFyYXRvclwiPlxuICAgICAgICAgIDxzcGFuPnt7IGlkID8gJ0VkaXQnIDogJ0FkZCBOZXcnIH19OiBEYXNoYm9hcmQgTm90aWZpY2F0aW9uPC9zcGFuPlxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICAgICAgICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtMiBtdC0zXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nXCJcbiAgICAgICAgICAobmdTdWJtaXQpPVwib25TYXZlKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1tZC0zXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJsb2dpbk5vdGlmaWNhdGlvblR5cGVzJCB8IGFzeW5jIGFzIHR5cGVzXCI+XG4gICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVG9vbHRpcC5Ob3RpZmljYXRpb25UeXBlJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Ob3RpZmljYXRpb25UeXBlJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgbmFtZT1cIm5vdGlmaWNhdGlvbl90eXBlXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVmFsaWRhdGlvbi5Ob3RpZmljYXRpb25UeXBlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuXG4gICAgICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInR5cGVzWydhdmFpbGFibGVfdHlwZXMnXVwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJub3RpZmljYXRpb25fdHlwZVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnbm90aWZpY2F0aW9uX3R5cGUnXS5lcnJvcnN9XCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IFR5cGUnXCJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIEZlYXR1cmUga2V5cyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC0xMiBjb2wtc20tNCBjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLlRvb2x0aXAuRmVhdHVyZXMnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgbmFtZT1cImZlYXR1cmVfa2V5c1wiXG4gICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLlZhbGlkYXRpb24uRmVhdHVyZXMnIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cImZlYXR1cmVLZXlzXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGZlYXR1cmUga2V5c1wiXG4gICAgICAgICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmVhdHVyZV9rZXlzXCJcbiAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gdmlzaWJsZV9mcm9tIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNCBjb2wtbWQtMiBtYi0zXCI+XG4gICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLlRvb2x0aXAuVmlzaWJsZUZyb20nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVmlzaWJsZUZyb20nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ2aXNpYmxlX2Zyb21cIlxuICAgICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5WYWxpZGF0aW9uLlZpc2libGVGcm9tJyB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIGZvcm1Db250cm9sTmFtZT1cInZpc2libGVfZnJvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PVwiZGQtTS15eVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidWaXNpYmxlIERhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWyd2aXNpYmxlX2Zyb20nXS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gdmlzaWJsZV91bnRpbCAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTQgY29sLW1kLTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Ub29sdGlwLlZpc2libGVVbnRpbCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5WaXNpYmxlVW50aWwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ2aXNpYmxlX3VudGlsXCJcbiAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVmFsaWRhdGlvbi5WaXNpYmxlVW50aWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIGZvcm1Db250cm9sTmFtZT1cInZpc2libGVfdW50aWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkLU0teXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVmlzaWJsZSBVbnRpbCBEYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsndmlzaWJsZV91bnRpbCddLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTQgY29sLW1kLTJcIj5cbiAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Ub29sdGlwLlBlcm1hbmVudCd8dHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLklzUGVybWFuZW50JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgbmFtZT1cImlzX3Blcm1hbmVudFwiPlxuICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiaXNfcGVybWFuZW50XCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJpc19wZXJtYW5lbnRcIj5cbiAgICAgICAgICAgICAgICA8L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gYm9keSAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTEyXCI+XG4gICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVG9vbHRpcC5Cb2R5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgW2lzTGVmdFRvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Cb2R5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgbmFtZT1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVmFsaWRhdGlvbi5Cb2R5JyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSByb3dzPVwiM1wiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnYm9keSddLmVycm9ycyB9XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kIG10LTNcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRlZmF1bHQgbWUtMlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIj5cbiAgICAgICAgICAgICAge3sgJ0J1dHRvbi5DYW5jZWwnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxuICAgICAgICAgICAgICB7eyAnQnV0dG9uLlN1Ym1pdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luLW5vdGlmaWNhdGlvbnMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luLW5vdGlmaWNhdGlvbnMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMvbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8saUNBQWtDLFNBQVEsZ0JBQWdCO0lBa0JuRSxZQUNJLFFBQWtCLEVBQ0QsWUFBMEIsRUFDMUIsY0FBOEI7UUFFL0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBbEJuRCxjQUFTLEdBQUcsS0FB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SSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxHQUFHO1lBQ1QsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDbEIsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3ZDLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtZQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztZQUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ1gsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDZCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUN2RSxDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixDQUFDO1NBQ0osQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBcEdRLGlDQUFpQzttR0FBakMsaUNBQWlDLDRGQ2pCOUMscXNOQWlKQTs7QURqREk7SUFEQyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7OytEQXNCcEI7NEZBcEdRLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDSSwrQkFBK0I7cUlBbUZ6QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UsIEFwcEFkbWluIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSwgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFZhbGlkYXRlRm9ybSB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUk9VVEVSUyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yb3V0ZXJzL3JvdXRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWxvZ2luLW5vdGlmaWNhdGlvbi1kZXRhaWxzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tbm90aWZpY2F0aW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2xvZ2luLW5vdGlmaWNhdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Ob3RpZmljYXRpb25EZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAgIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIGJ1dHRvbkJ1c3kgPSBmYWxzZTtcblxuICAgIGlkOiBudW1iZXI7XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBsb2dpbk5vdGlmaWNhdGlvblR5cGVzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgIGZlYXR1cmVLZXlzID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTZXJ2aWNlOiBQcm9kdWN0U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZm9ybSA9IEFwcEFkbWluLmxvZ2luTm90aWZpY2F0aW9uRm9ybSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLmxvZ2luTm90aWZpY2F0aW9uVHlwZXMkID0gdGhpcy5hZG1pblNlcnZpY2UuZ2V0QXZhaWxhYmxlTG9naW5Ob3RpZmljYXRpb25UeXBlcyhcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5nZXRGZWF0dXJlS2V5cygpO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSBOdW1iZXIocGFyYW1zWydpZCddKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRMb2dpbk5vdGlmaWNhdGlvbkRldGFpbHMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMb2dpbk5vdGlmaWNhdGlvbkRldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0TG9naW5Ob3RpZmljYXRpb25CeUlkKHRoaXMuaWQsIHRoaXMuc3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVfdW50aWw6IGRhdGE/LnZpc2libGVfdW50aWwgPyBuZXcgRGF0ZShkYXRhPy52aXNpYmxlX3VudGlsKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlX2Zyb206IGRhdGE/LnZpc2libGVfZnJvbSA/IG5ldyBEYXRlKGRhdGE/LnZpc2libGVfZnJvbSkgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9rZXlzOiBkYXRhPy5mZWF0dXJlX2tleXMgfHwgW10sXG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbl90eXBlOiBkYXRhPy5ub3RpZmljYXRpb25fdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfcGVybWFuZW50OiBkYXRhPy5pc19wZXJtYW5lbnQsXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGRhdGE/LmJvZHlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmVhdHVyZUtleXMoKSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0UHJvZHVjdExpc3Qoe30sIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmZWF0dXJlS2V5cyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IFNldChyZXNwb25zZS5wcm9kdWN0cy5tYXAoaXRlbSA9PiBpdGVtLmZlYXR1cmVfa2V5KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVLZXlzID0gZmVhdHVyZUtleXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQFZhbGlkYXRlRm9ybSgnZm9ybScpXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc3ViJCA9IHRoaXMuaWRcbiAgICAgICAgICAgID8gdGhpcy5hZG1pblNlcnZpY2UudXBkYXRlTG9naW5Ob3RpZmljYXRpb24odGhpcy5pZCwgZGF0YSlcbiAgICAgICAgICAgIDogdGhpcy5hZG1pblNlcnZpY2UuY3JlYXRlTG9naW5Ob3RpZmljYXRpb24oZGF0YSk7XG4gICAgICAgIHN1YiQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5VcGRhdGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuYWRkKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZS1hdXRvIGNvbC14cy02IG10LTRcIj5cbiAgICAgICAgPGEgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIHRvIFRhcmdldFwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMubG9naW5Ob3RpZmljYXRpb25zXVwiXG4gICAgICAgICAgY2xhc3M9XCJwcmV2aW91c1wiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxoMyBjbGFzcz1cIm0tc3ViaGVhZGVyX190aXRsZSBtLXN1YmhlYWRlcl9fdGl0bGUtLXNlcGFyYXRvclwiPlxuICAgICAgICAgIDxzcGFuPnt7IGlkID8gJ0VkaXQnIDogJ0FkZCBOZXcnIH19OiBEYXNoYm9hcmQgTm90aWZpY2F0aW9uPC9zcGFuPlxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICAgICAgICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtMiBtdC0zXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nXCJcbiAgICAgICAgICAobmdTdWJtaXQpPVwib25TYXZlKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1tZC0zXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJsb2dpbk5vdGlmaWNhdGlvblR5cGVzJCB8IGFzeW5jIGFzIHR5cGVzXCI+XG4gICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVG9vbHRpcC5Ob3RpZmljYXRpb25UeXBlJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Ob3RpZmljYXRpb25UeXBlJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgbmFtZT1cIm5vdGlmaWNhdGlvbl90eXBlXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVmFsaWRhdGlvbi5Ob3RpZmljYXRpb25UeXBlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuXG4gICAgICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInR5cGVzWydhdmFpbGFibGVfdHlwZXMnXVwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJub3RpZmljYXRpb25fdHlwZVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnbm90aWZpY2F0aW9uX3R5cGUnXS5lcnJvcnN9XCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IFR5cGUnXCI+XG4gICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBGZWF0dXJlIGtleXMgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtMTIgY29sLXNtLTQgY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Ub29sdGlwLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5GZWF0dXJlcycgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJmZWF0dXJlX2tleXNcIlxuICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5WYWxpZGF0aW9uLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJmZWF0dXJlS2V5c1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBmZWF0dXJlIGtleXNcIlxuICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbc2hvd1RvZ2dsZUFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZlYXR1cmVfa2V5c1wiXG4gICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIHZpc2libGVfZnJvbSAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTQgY29sLW1kLTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Ub29sdGlwLlZpc2libGVGcm9tJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLlZpc2libGVGcm9tJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidmlzaWJsZV9mcm9tXCJcbiAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVmFsaWRhdGlvbi5WaXNpYmxlRnJvbScgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciBmb3JtQ29udHJvbE5hbWU9XCJ2aXNpYmxlX2Zyb21cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkLU0teXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVmlzaWJsZSBEYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsndmlzaWJsZV9mcm9tJ10uZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIHZpc2libGVfdW50aWwgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1tZC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVG9vbHRpcC5WaXNpYmxlVW50aWwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVmlzaWJsZVVudGlsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidmlzaWJsZV91bnRpbFwiXG4gICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLlZhbGlkYXRpb24uVmlzaWJsZVVudGlsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciBmb3JtQ29udHJvbE5hbWU9XCJ2aXNpYmxlX3VudGlsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJkZC1NLXl5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1Zpc2libGUgVW50aWwgRGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3Zpc2libGVfdW50aWwnXS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1tZC0yXCI+XG4gICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uVG9vbHRpcC5QZXJtYW5lbnQnfHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5Mb2dpbk5vdGlmaWNhdGlvbi5Jc1Blcm1hbmVudCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJpc19wZXJtYW5lbnRcIj5cbiAgICAgICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImlzX3Blcm1hbmVudFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiaXNfcGVybWFuZW50XCI+XG4gICAgICAgICAgICAgICAgPC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIGJvZHkgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0xMlwiPlxuICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLlRvb2x0aXAuQm9keScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgIFtpc0xlZnRUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uTG9naW5Ob3RpZmljYXRpb24uQm9keScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJib2R5XCJcbiAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkxvZ2luTm90aWZpY2F0aW9uLlZhbGlkYXRpb24uQm9keScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjNcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2JvZHknXS5lcnJvcnMgfVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZCBtdC0zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCI+XG4gICAgICAgICAgICAgIHt7ICdCdXR0b24uQ2FuY2VsJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBbYnV0dG9uQnVzeV09XCJidXR0b25CdXN5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5cbiAgICAgICAgICAgICAge3sgJ0J1dHRvbi5TdWJtaXQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|