@cqa-lib/cqa-ui 1.1.285 → 1.1.287

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.
@@ -0,0 +1,19 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/platform-browser";
4
+ export class SafeHtmlPipe {
5
+ constructor(sanitizer) {
6
+ this.sanitizer = sanitizer;
7
+ }
8
+ transform(value) {
9
+ const str = value != null ? String(value) : '';
10
+ return this.sanitizer.bypassSecurityTrustHtml(str);
11
+ }
12
+ }
13
+ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
14
+ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SafeHtmlPipe, name: "cqaSafeHtml" });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SafeHtmlPipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{ name: 'cqaSafeHtml' }]
18
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BpcGVzL3NhZmUtaHRtbC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFJcEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFFL0MsU0FBUyxDQUFDLEtBQWdDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDOzt5R0FOVSxZQUFZO3VHQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFEeEIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHsgbmFtZTogJ2NxYVNhZmVIdG1sJyB9KVxuZXhwb3J0IGNsYXNzIFNhZmVIdG1sUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFNhZmVIdG1sIHtcbiAgICBjb25zdCBzdHIgPSB2YWx1ZSAhPSBudWxsID8gU3RyaW5nKHZhbHVlKSA6ICcnO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdHIpO1xuICB9XG59XG4iXX0=
@@ -143,7 +143,7 @@ export class CreateStepGroupComponent {
143
143
  onCancel() {
144
144
  this.cancelled.emit();
145
145
  }
146
- onCreateGroup() {
146
+ onCreateGroup(isReplace = false) {
147
147
  if (this.form.invalid || this.stepsCount === 0) {
148
148
  this.form.markAllAsTouched();
149
149
  return;
@@ -153,14 +153,14 @@ export class CreateStepGroupComponent {
153
153
  this.form.get('groupName')?.setErrors({ required: true });
154
154
  return;
155
155
  }
156
- this.createGroup.emit({ groupName });
156
+ this.createGroup.emit({ groupName, isReplace });
157
157
  }
158
158
  }
159
159
  CreateStepGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateStepGroupComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
160
- CreateStepGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CreateStepGroupComponent, selector: "cqa-create-step-group", inputs: { stepsToGroup: "stepsToGroup", stepLabels: "stepLabels" }, outputs: { createGroup: "createGroup", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span [innerHTML]=\"getStepDisplayLabel(step, i)\" class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n", components: [{ type: i2.CustomInputComponent, selector: "cqa-custom-input", inputs: ["label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
160
+ CreateStepGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CreateStepGroupComponent, selector: "cqa-create-step-group", inputs: { stepsToGroup: "stepsToGroup", stepLabels: "stepLabels" }, outputs: { createGroup: "createGroup", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span [innerHTML]=\"getStepDisplayLabel(step, i)\" class=\"cqa-action-format cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group | Create and replace -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup(false)\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create and replace\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup(true)\">\n </cqa-button>\n </div>\n </div>\n</div>\n", components: [{ type: i2.CustomInputComponent, selector: "cqa-custom-input", inputs: ["label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
161
161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateStepGroupComponent, decorators: [{
162
162
  type: Component,
163
- args: [{ selector: 'cqa-create-step-group', host: { class: 'cqa-ui-root' }, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span [innerHTML]=\"getStepDisplayLabel(step, i)\" class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n" }]
163
+ args: [{ selector: 'cqa-create-step-group', host: { class: 'cqa-ui-root' }, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span [innerHTML]=\"getStepDisplayLabel(step, i)\" class=\"cqa-action-format cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group | Create and replace -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup(false)\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create and replace\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup(true)\">\n </cqa-button>\n </div>\n </div>\n</div>\n" }]
164
164
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { stepsToGroup: [{
165
165
  type: Input
166
166
  }], stepLabels: [{
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
170
170
  }], cancelled: [{
171
171
  type: Output
172
172
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jcmVhdGUtc3RlcC1ncm91cC9jcmVhdGUtc3RlcC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2NyZWF0ZS1zdGVwLWdyb3VwL2NyZWF0ZS1zdGVwLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQU1sQzs7Ozs7R0FLRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFVbkMsWUFBNkIsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFUbkMsaUJBQVksR0FBeUIsRUFBRSxDQUFDO1FBQ2pELDhIQUE4SDtRQUNySCxlQUFVLEdBQWEsRUFBRSxDQUFDO1FBRXpCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFDMUQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLN0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxF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QztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsT0FBTztTQUNSO1FBQ0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzFELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDOztxSEF0SlUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsMk9DeEJyQyxrMkhBcUZBOzJGRDdEYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCLFFBRTNCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtrR0FHckIsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgVGVzdENhc2VTdGVwQ29uZmlnLFxuICBOb3JtYWxTdGVwQ29uZmlnLFxuICBUZXN0Q2FzZUV2ZW50VHlwZSxcbiAgaXNOb3JtYWxTdGVwQ29uZmlnLFxufSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC5tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVN0ZXBHcm91cEZvcm1EYXRhIHtcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlIFN0ZXAgR3JvdXAgcGFuZWwvbW9kYWwgZm9yIFRlc3QgQ2FzZSBEZXRhaWxzLlxuICogRm9sbG93cyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYW5kIHZhbGlkYXRpb24gcGF0dGVybiBhcyBUZXN0IERhdGEgTW9kYWwgYW5kIExvb3AgU3RlcC5cbiAqIERpc3BsYXlzIHNlbGVjdGVkIHN0ZXBzIGFuZCBhbGxvd3MgbmFtaW5nIHRoZSBuZXcgZ3JvdXA7IGVtaXRzIGNyZWF0ZUdyb3VwIHdpdGggZ3JvdXAgbmFtZVxuICogc28gdGhlIGhvc3QgY2FuIGNyZWF0ZSB0aGUgc3RlcCBncm91cCBhbmQgcmVwbGFjZSBzZWxlY3RlZCBzdGVwcyB3aXRoIGl0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY3JlYXRlLXN0ZXAtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZVN0ZXBHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHN0ZXBzVG9Hcm91cDogVGVzdENhc2VTdGVwQ29uZmlnW10gPSBbXTtcbiAgLyoqIFByZS1jb21wdXRlZCBkaXNwbGF5IGxhYmVscyBmcm9tIGhvc3QgKHNhbWUgb3JkZXIgYXMgc3RlcHNUb0dyb3VwKS4gV2hlbiBwcm92aWRlZCwgdXNlZCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBmcm9tIHN0ZXAuICovXG4gIEBJbnB1dCgpIHN0ZXBMYWJlbHM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIGNyZWF0ZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxDcmVhdGVTdGVwR3JvdXBGb3JtRGF0YT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGdyb3VwTmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSldXSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBzdGVwc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHNUb0dyb3VwPy5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIGdldCBzdWJ0aXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBuID0gdGhpcy5zdGVwc0NvdW50O1xuICAgIHJldHVybiBuID09PSAxXG4gICAgICA/ICdHcm91cCAxIHNlbGVjdGVkIHN0ZXAgaW50byBhIGNvbnRhaW5lcidcbiAgICAgIDogYEdyb3VwICR7bn0gc2VsZWN0ZWQgc3RlcHMgaW50byBhIGNvbnRhaW5lcmA7XG4gIH1cblxuICAvKiogRGlzcGxheSBsYWJlbCBmb3IgYSBzdGVwIGluIHRoZSBcIlN0ZXBzIHRvIGdyb3VwXCIgbGlzdCAoc2FtZSBhcyBtYWluIHN0ZXAgbGlzdCAtIHVzZSBzdGVwTGFiZWxzIHdoZW4gcHJvdmlkZWQpLiAqL1xuICBnZXRTdGVwRGlzcGxheUxhYmVsKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc3RlcExhYmVscz8ubGVuZ3RoID4gaW5kZXggJiYgdGhpcy5zdGVwTGFiZWxzW2luZGV4XSAhPSBudWxsICYmIHRoaXMuc3RlcExhYmVsc1tpbmRleF0gIT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGVwTGFiZWxzW2luZGV4XTtcbiAgICB9XG4gICAgLy8gUHJlZmVyIHN0ZXAuYWN0aW9uIC0gaXQgbWF0Y2hlcyB0aGUgZnVsbCBkaXNwbGF5IGluIHRoZSBzdGVwIGxpc3QgKGUuZy4gXCJFbnRlciBAfHBhc3N3b3JkfCBpbiB0aGUgRW1haWxcIilcbiAgICBjb25zdCByYXdBY3Rpb24gPSBzdGVwLmFjdGlvbiAhPSBudWxsICYmIFN0cmluZyhzdGVwLmFjdGlvbikudHJpbSgpICE9PSAnJyA/IFN0cmluZyhzdGVwLmFjdGlvbikgOiAnJztcbiAgICBpZiAocmF3QWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpcEh0bWwocmF3QWN0aW9uKTtcbiAgICB9XG4gICAgaWYgKGlzTm9ybWFsU3RlcENvbmZpZyhzdGVwKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Tm9ybWFsU3RlcExhYmVsKHN0ZXApO1xuICAgIH1cbiAgICBpZiAoJ2dyb3VwTmFtZScgaW4gc3RlcCAmJiBzdGVwLmdyb3VwTmFtZSkge1xuICAgICAgcmV0dXJuIHN0ZXAuZ3JvdXBOYW1lO1xuICAgIH1cbiAgICBpZiAoJ2NvbmRpdGlvbicgaW4gc3RlcCAmJiBzdGVwLmNvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIHN0ZXAuY29uZGl0aW9uO1xuICAgIH1cbiAgICBpZiAoJ2xvb3BUeXBlJyBpbiBzdGVwKSB7XG4gICAgICBjb25zdCBsb29wID0gc3RlcCBhcyB7IGxvb3BUeXBlOiBzdHJpbmc7IHRlc3REYXRhUHJvZmlsZT86IHN0cmluZzsgY29uZGl0aW9uPzogc3RyaW5nIH07XG4gICAgICBpZiAobG9vcC5sb29wVHlwZSA9PT0gJ2ZvcicgJiYgbG9vcC50ZXN0RGF0YVByb2ZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGBGb3IgbG9vcDogJHtsb29wLnRlc3REYXRhUHJvZmlsZX1gO1xuICAgICAgfVxuICAgICAgaWYgKGxvb3AubG9vcFR5cGUgPT09ICd3aGlsZScgJiYgbG9vcC5jb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGBXaGlsZTogJHtsb29wLmNvbmRpdGlvbn1gO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RlcC5kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHN0ZXAuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIHJldHVybiBgU3RlcCAke2luZGV4ICsgMX1gO1xuICB9XG5cbiAgLyoqIFN0cmlwIEhUTUwgdGFncyBmb3IgcGxhaW4tdGV4dCBkaXNwbGF5IChhY3Rpb24gbWF5IGNvbnRhaW4gc3BhbnMgZm9yIGJhZGdlcykuICovXG4gIHByaXZhdGUgc3RyaXBIdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHRtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdG1wLmlubmVySFRNTCA9IGh0bWw7XG4gICAgICByZXR1cm4gKHRtcC50ZXh0Q29udGVudCB8fCB0bXAuaW5uZXJUZXh0IHx8ICcnKS50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBodG1sLnJlcGxhY2UoLzxbXj5dKj4vZywgJycpLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9ybWFsU3RlcExhYmVsKHN0ZXA6IE5vcm1hbFN0ZXBDb25maWcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN0ZXAucGFyYW1ldGVycyA/PyBbXTtcbiAgICBjb25zdCBnZXRQYXJhbSA9IChuYW1lOiBzdHJpbmcpID0+XG4gICAgICBwYXJhbXMuZmluZCgocCkgPT4gcC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIGNvbnN0IHZhbCA9IChwOiB7IHZhbHVlPzogc3RyaW5nOyBkaXNwbGF5VmFsdWU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCkgPT5cbiAgICAgIHA/LmRpc3BsYXlWYWx1ZSA/PyBwPy52YWx1ZSA/PyAnJztcbiAgICAvKiogVXNlIHJhdyB2YWx1ZSAoc3RyaXAgc3Vycm91bmRpbmcgcXVvdGVzIGZyb20gZGlzcGxheVZhbHVlKSBmb3IgYnVpbGRpbmcgZnVsbCBzZW50ZW5jZXMgKi9cbiAgICBjb25zdCByYXdWYWwgPSAocDogeyB2YWx1ZT86IHN0cmluZzsgZGlzcGxheVZhbHVlPzogc3RyaW5nIH0gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGNvbnN0IHYgPSBwPy52YWx1ZSA/PyBwPy5kaXNwbGF5VmFsdWUgPz8gJyc7XG4gICAgICBjb25zdCBzID0gU3RyaW5nKHYpO1xuICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXltcIiddfFtcIiddJC9nLCAnJykudHJpbSgpIHx8IHM7XG4gICAgfTtcblxuICAgIHN3aXRjaCAoc3RlcC5ldmVudFR5cGUgYXMgVGVzdENhc2VFdmVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ25hdmlnYXRlJzoge1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRQYXJhbSgndXJsJykgPz8gcGFyYW1zLmZpbmQoKHApID0+IC91cmx8YmFzZVVybC9pLnRlc3QocC5uYW1lIHx8ICcnKSk7XG4gICAgICAgIHJldHVybiB1cmwgPyBgTmF2aWdhdGUgdG8gJHtyYXdWYWwodXJsKX1gIDogJ05hdmlnYXRlJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VudGVyJzoge1xuICAgICAgICBjb25zdCB2YWx1ZVBhcmFtID0gZ2V0UGFyYW0oJ3ZhbHVlJyk7XG4gICAgICAgIGNvbnN0IGxhYmVsUGFyYW0gPSBnZXRQYXJhbSgnbGFiZWwnKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdWYWwodmFsdWVQYXJhbSk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gcmF3VmFsKGxhYmVsUGFyYW0pO1xuICAgICAgICBpZiAodmFsdWUgJiYgbGFiZWwpIHJldHVybiBgRW50ZXIgJHt2YWx1ZX0gaW4gdGhlICR7bGFiZWx9YDtcbiAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gYEVudGVyICR7dmFsdWV9YDtcbiAgICAgICAgaWYgKGxhYmVsKSByZXR1cm4gYEVudGVyIGluIHRoZSAke2xhYmVsfWA7XG4gICAgICAgIHJldHVybiAnRW50ZXInO1xuICAgICAgfVxuICAgICAgY2FzZSAnYWktYWdlbnQnOiB7XG4gICAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IGdldFBhcmFtKCdpbnN0cnVjdGlvbnMnKSA/PyBnZXRQYXJhbSgnZGVzY3JpcHRpb24nKTtcbiAgICAgICAgcmV0dXJuIHZhbChpbnN0cnVjdGlvbnMpIHx8ICdBSSBBZ2VudCBzdGVwJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3R5cGUnOiB7XG4gICAgICAgIGNvbnN0IHRleHRQYXJhbSA9IGdldFBhcmFtKCd0ZXh0JykgPz8gZ2V0UGFyYW0oJ3ZhbHVlJyk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRQYXJhbSA9IGdldFBhcmFtKCdlbGVtZW50JykgPz8gZ2V0UGFyYW0oJ2xhYmVsJykgPz8gZ2V0UGFyYW0oJ3NlbGVjdG9yJyk7XG4gICAgICAgIGNvbnN0IHRleHQgPSByYXdWYWwodGV4dFBhcmFtKTtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHJhd1ZhbChlbGVtZW50UGFyYW0pO1xuICAgICAgICBpZiAodGV4dCAmJiBlbGVtZW50KSByZXR1cm4gYEVudGVyICR7dGV4dH0gaW4gdGhlICR7ZWxlbWVudH1gO1xuICAgICAgICBpZiAodGV4dCkgcmV0dXJuIGBFbnRlciAke3RleHR9YDtcbiAgICAgICAgcmV0dXJuICdUeXBlJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NsaWNrJzoge1xuICAgICAgICBjb25zdCBzZWxlY3RvciA9IGdldFBhcmFtKCdlbGVtZW50JykgPz8gZ2V0UGFyYW0oJ3NlbGVjdG9yJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RvciA/IGBDbGljayBvbiAke3Jhd1ZhbChzZWxlY3Rvcil9YCA6ICdDbGljayc7XG4gICAgICB9XG4gICAgICBjYXNlICdkb3VibGVDbGljayc6IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRQYXJhbSgnZWxlbWVudCcpID8/IGdldFBhcmFtKCdzZWxlY3RvcicpO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3IgPyBgRG91YmxlIGNsaWNrIG9uICR7cmF3VmFsKHNlbGVjdG9yKX1gIDogJ0RvdWJsZSBjbGljayc7XG4gICAgICB9XG4gICAgICBjYXNlICdwcmVzc0VudGVyJzoge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZ2V0UGFyYW0oJ2VsZW1lbnQnKTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgPyBgUHJlc3MgRW50ZXIgb24gJHtyYXdWYWwoZWxlbWVudCl9YCA6ICdQcmVzcyBFbnRlcic7XG4gICAgICB9XG4gICAgICBjYXNlICd2ZXJpZnknOlxuICAgICAgICByZXR1cm4gdmFsKGdldFBhcmFtKCdkZXNjcmlwdGlvbicpKSB8fCAnVmVyaWZ5JztcbiAgICAgIGNhc2UgJ2N1c3RvbSc6IHtcbiAgICAgICAgY29uc3QgZGVzYyA9IGdldFBhcmFtKCdkZXNjcmlwdGlvbicpID8/IGdldFBhcmFtKCdhY3Rpb24nKTtcbiAgICAgICAgcmV0dXJuIHZhbChkZXNjKSB8fCAnQ3VzdG9tIHN0ZXAnO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHZhbChnZXRQYXJhbSgnZGVzY3JpcHRpb24nKSkgfHwgdmFsKHBhcmFtc1swXSkgfHwgJ1N0ZXAnO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsbGVkLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ3JlYXRlR3JvdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkIHx8IHRoaXMuc3RlcHNDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBOYW1lID0gKHRoaXMuZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy52YWx1ZSA/PyAnJykudHJpbSgpO1xuICAgIGlmICghZ3JvdXBOYW1lKSB7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdncm91cE5hbWUnKT8uc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlR3JvdXAuZW1pdCh7IGdyb3VwTmFtZSB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTJweF0gY3FhLXNoYWRvdy1sZyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXctZnVsbCBjcWEtbWF4LXctWzUwMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS1wLTYgY3FhLWJveC1ib3JkZXIgY3FhLW1pbi1oLTBcIj5cbiAgPCEtLSBIZWFkZXI6IHRpdGxlICsgY2xvc2UgKFgpIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxoMiBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLW0tMFwiPlxuICAgICAgICBDcmVhdGUgc3RlcCBncm91cFxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bIzY0NzQ4Ql0gY3FhLW0tMFwiPlxuICAgICAgICB7eyBzdWJ0aXRsZVRleHQgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLW1pbi1oLTcgY3FhLW1pbi13LTcgY3FhLXJvdW5kZWQgY3FhLXRleHQtWyM2QjcyODBdIGhvdmVyOmNxYS1iZy1bI0YzRjRGNl0gY3FhLXAtMCBjcWEtZmxleC1zaHJpbmstMFwiXG4gICAgICB0aXRsZT1cIkNsb3NlXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTggNkw2IDE4TTYgNmwxMiAxMlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBHcm91cCBuYW1lICogLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjVcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxNjE2MTddXCI+XG4gICAgICBHcm91cCBuYW1lIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8Y3FhLWN1c3RvbS1pbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJlLmcuLCBBdXRoZW50aWNhdGlvbiBmbG93XCJcbiAgICAgIFt2YWx1ZV09XCJmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnZhbHVlXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICBzaXplPVwibWRcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cImZvcm0uZ2V0KCdncm91cE5hbWUnKT8uc2V0VmFsdWUoJGV2ZW50KTsgZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcIj5cbiAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgPHAgKm5nSWY9XCJmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LmludmFsaWQgJiYgZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy50b3VjaGVkXCIgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1yZWQtNTAwIGNxYS1tLTBcIj5cbiAgICAgIEdyb3VwIG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIFN0ZXBzIHRvIGdyb3VwIChOKSAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzEwMCVdIGNxYS10cmFja2luZy1ub3JtYWwgY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1hbGlnbi1taWRkbGVcIj5cbiAgICAgIFN0ZXBzIHRvIGdyb3VwICh7eyBzdGVwc0NvdW50IH19KVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zY3JvbGxiYXItaGlkZSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLXJvdW5kZWQtWzhweF0gY3FhLXAtWzZweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItW3JnYmEoMCwwLDAsMC4xKV1cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNUb0dyb3VwOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcm91bmRlZC1bNHB4XSBjcWEtcHktWzRweF0gY3FhLXB4LVs4cHhdIGNxYS1iZy1bcmdiYSgyMTYsMjE3LDI1MiwwLjMpXVwiPlxuICAgICAgICA8IS0tIE51bWJlcmVkIGJhZGdlIC0tPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNyBjcWEtaC03IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLVsjM0Y0M0VFXSBjcWEtdGV4dC13aGl0ZSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgIHt7IGkgKyAxIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJnZXRTdGVwRGlzcGxheUxhYmVsKHN0ZXAsIGkpXCIgY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdHJhY2tpbmctWzBweF0gY3FhLXRleHQtWyMwQjBCMENdIGNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLXRydW5jYXRlXCI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFjdGlvbnM6IENhbmNlbCB8IENyZWF0ZSBncm91cCAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS13LWZ1bGwgY3FhLWdhcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIHRleHQ9XCJDYW5jZWxcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzQxNDE0Nl0nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25DYW5jZWwoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgYnRuU2l6ZT1cImxnXCJcbiAgICAgICAgdGV4dD1cIkNyZWF0ZSBncm91cFwiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLXRleHQtWzE0cHhdIGNxYS1weS1bOXB4XSBjcWEtYm9yZGVyLVsjM0Y0M0VFXSBjcWEtYmctWyMzRjQzRUVdJ1wiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ3JlYXRlR3JvdXAoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jcmVhdGUtc3RlcC1ncm91cC9jcmVhdGUtc3RlcC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2NyZWF0ZS1zdGVwLWdyb3VwL2NyZWF0ZS1zdGVwLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQVFsQzs7Ozs7R0FLRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFVbkMsWUFBNkIsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFUbkMsaUJBQVksR0FBeUIsRUFBRSxDQUFDO1FBQ2pELDhIQUE4SDtRQUNySCxlQUFVLEdBQWEsRUFBRSxDQUFDO1FBRXpCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFDMUQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLN0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxF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QztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUs7UUFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsT0FBTztTQUNSO1FBQ0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzFELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7cUhBdEpVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDJPQzFCckMsaXZJQStGQTsyRkRyRWEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QixRQUUzQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7a0dBR3JCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlU3RlcENvbmZpZyxcbiAgTm9ybWFsU3RlcENvbmZpZyxcbiAgVGVzdENhc2VFdmVudFR5cGUsXG4gIGlzTm9ybWFsU3RlcENvbmZpZyxcbn0gZnJvbSAnLi4vdGVzdC1jYXNlLXN0ZXAubW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTdGVwR3JvdXBGb3JtRGF0YSB7XG4gIGdyb3VwTmFtZTogc3RyaW5nO1xuICAvKiogV2hlbiB0cnVlLCByZXBsYWNlIHNlbGVjdGVkIHN0ZXBzIHdpdGggdGhlIG5ldyBncm91cCAoc2FtZSBhcyBjYXNlcyBzY3JlZW4gQ3JlYXRlIGFuZCByZXBsYWNlKS4gKi9cbiAgaXNSZXBsYWNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgU3RlcCBHcm91cCBwYW5lbC9tb2RhbCBmb3IgVGVzdCBDYXNlIERldGFpbHMuXG4gKiBGb2xsb3dzIHRoZSBzYW1lIHN0cnVjdHVyZSBhbmQgdmFsaWRhdGlvbiBwYXR0ZXJuIGFzIFRlc3QgRGF0YSBNb2RhbCBhbmQgTG9vcCBTdGVwLlxuICogRGlzcGxheXMgc2VsZWN0ZWQgc3RlcHMgYW5kIGFsbG93cyBuYW1pbmcgdGhlIG5ldyBncm91cDsgZW1pdHMgY3JlYXRlR3JvdXAgd2l0aCBncm91cCBuYW1lXG4gKiBzbyB0aGUgaG9zdCBjYW4gY3JlYXRlIHRoZSBzdGVwIGdyb3VwIGFuZCByZXBsYWNlIHNlbGVjdGVkIHN0ZXBzIHdpdGggaXQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1jcmVhdGUtc3RlcC1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtc3RlcC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlU3RlcEdyb3VwQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RlcHNUb0dyb3VwOiBUZXN0Q2FzZVN0ZXBDb25maWdbXSA9IFtdO1xuICAvKiogUHJlLWNvbXB1dGVkIGRpc3BsYXkgbGFiZWxzIGZyb20gaG9zdCAoc2FtZSBvcmRlciBhcyBzdGVwc1RvR3JvdXApLiBXaGVuIHByb3ZpZGVkLCB1c2VkIGluc3RlYWQgb2YgY29tcHV0aW5nIGZyb20gc3RlcC4gKi9cbiAgQElucHV0KCkgc3RlcExhYmVsczogc3RyaW5nW10gPSBbXTtcblxuICBAT3V0cHV0KCkgY3JlYXRlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPENyZWF0ZVN0ZXBHcm91cEZvcm1EYXRhPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZ3JvdXBOYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKV1dLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHN0ZXBzQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwc1RvR3JvdXA/Lmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgZ2V0IHN1YnRpdGxlVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG4gPSB0aGlzLnN0ZXBzQ291bnQ7XG4gICAgcmV0dXJuIG4gPT09IDFcbiAgICAgID8gJ0dyb3VwIDEgc2VsZWN0ZWQgc3RlcCBpbnRvIGEgY29udGFpbmVyJ1xuICAgICAgOiBgR3JvdXAgJHtufSBzZWxlY3RlZCBzdGVwcyBpbnRvIGEgY29udGFpbmVyYDtcbiAgfVxuXG4gIC8qKiBEaXNwbGF5IGxhYmVsIGZvciBhIHN0ZXAgaW4gdGhlIFwiU3RlcHMgdG8gZ3JvdXBcIiBsaXN0IChzYW1lIGFzIG1haW4gc3RlcCBsaXN0IC0gdXNlIHN0ZXBMYWJlbHMgd2hlbiBwcm92aWRlZCkuICovXG4gIGdldFN0ZXBEaXNwbGF5TGFiZWwoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdGVwTGFiZWxzPy5sZW5ndGggPiBpbmRleCAmJiB0aGlzLnN0ZXBMYWJlbHNbaW5kZXhdICE9IG51bGwgJiYgdGhpcy5zdGVwTGFiZWxzW2luZGV4XSAhPT0gJycpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0ZXBMYWJlbHNbaW5kZXhdO1xuICAgIH1cbiAgICAvLyBQcmVmZXIgc3RlcC5hY3Rpb24gLSBpdCBtYXRjaGVzIHRoZSBmdWxsIGRpc3BsYXkgaW4gdGhlIHN0ZXAgbGlzdCAoZS5nLiBcIkVudGVyIEB8cGFzc3dvcmR8IGluIHRoZSBFbWFpbFwiKVxuICAgIGNvbnN0IHJhd0FjdGlvbiA9IHN0ZXAuYWN0aW9uICE9IG51bGwgJiYgU3RyaW5nKHN0ZXAuYWN0aW9uKS50cmltKCkgIT09ICcnID8gU3RyaW5nKHN0ZXAuYWN0aW9uKSA6ICcnO1xuICAgIGlmIChyYXdBY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnN0cmlwSHRtbChyYXdBY3Rpb24pO1xuICAgIH1cbiAgICBpZiAoaXNOb3JtYWxTdGVwQ29uZmlnKHN0ZXApKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXROb3JtYWxTdGVwTGFiZWwoc3RlcCk7XG4gICAgfVxuICAgIGlmICgnZ3JvdXBOYW1lJyBpbiBzdGVwICYmIHN0ZXAuZ3JvdXBOYW1lKSB7XG4gICAgICByZXR1cm4gc3RlcC5ncm91cE5hbWU7XG4gICAgfVxuICAgIGlmICgnY29uZGl0aW9uJyBpbiBzdGVwICYmIHN0ZXAuY29uZGl0aW9uKSB7XG4gICAgICByZXR1cm4gc3RlcC5jb25kaXRpb247XG4gICAgfVxuICAgIGlmICgnbG9vcFR5cGUnIGluIHN0ZXApIHtcbiAgICAgIGNvbnN0IGxvb3AgPSBzdGVwIGFzIHsgbG9vcFR5cGU6IHN0cmluZzsgdGVzdERhdGFQcm9maWxlPzogc3RyaW5nOyBjb25kaXRpb24/OiBzdHJpbmcgfTtcbiAgICAgIGlmIChsb29wLmxvb3BUeXBlID09PSAnZm9yJyAmJiBsb29wLnRlc3REYXRhUHJvZmlsZSkge1xuICAgICAgICByZXR1cm4gYEZvciBsb29wOiAke2xvb3AudGVzdERhdGFQcm9maWxlfWA7XG4gICAgICB9XG4gICAgICBpZiAobG9vcC5sb29wVHlwZSA9PT0gJ3doaWxlJyAmJiBsb29wLmNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4gYFdoaWxlOiAke2xvb3AuY29uZGl0aW9ufWA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGVwLmRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4gc3RlcC5kZXNjcmlwdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIGBTdGVwICR7aW5kZXggKyAxfWA7XG4gIH1cblxuICAvKiogU3RyaXAgSFRNTCB0YWdzIGZvciBwbGFpbi10ZXh0IGRpc3BsYXkgKGFjdGlvbiBtYXkgY29udGFpbiBzcGFucyBmb3IgYmFkZ2VzKS4gKi9cbiAgcHJpdmF0ZSBzdHJpcEh0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgdG1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0bXAuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgIHJldHVybiAodG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJycpLnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWwucmVwbGFjZSgvPFtePl0qPi9nLCAnJykucmVwbGFjZSgvJm5ic3A7L2csICcgJykudHJpbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROb3JtYWxTdGVwTGFiZWwoc3RlcDogTm9ybWFsU3RlcENvbmZpZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW1zID0gc3RlcC5wYXJhbWV0ZXJzID8/IFtdO1xuICAgIGNvbnN0IGdldFBhcmFtID0gKG5hbWU6IHN0cmluZykgPT5cbiAgICAgIHBhcmFtcy5maW5kKChwKSA9PiBwLm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgY29uc3QgdmFsID0gKHA6IHsgdmFsdWU/OiBzdHJpbmc7IGRpc3BsYXlWYWx1ZT86IHN0cmluZyB9IHwgdW5kZWZpbmVkKSA9PlxuICAgICAgcD8uZGlzcGxheVZhbHVlID8/IHA/LnZhbHVlID8/ICcnO1xuICAgIC8qKiBVc2UgcmF3IHZhbHVlIChzdHJpcCBzdXJyb3VuZGluZyBxdW90ZXMgZnJvbSBkaXNwbGF5VmFsdWUpIGZvciBidWlsZGluZyBmdWxsIHNlbnRlbmNlcyAqL1xuICAgIGNvbnN0IHJhd1ZhbCA9IChwOiB7IHZhbHVlPzogc3RyaW5nOyBkaXNwbGF5VmFsdWU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgY29uc3QgdiA9IHA/LnZhbHVlID8/IHA/LmRpc3BsYXlWYWx1ZSA/PyAnJztcbiAgICAgIGNvbnN0IHMgPSBTdHJpbmcodik7XG4gICAgICByZXR1cm4gcy5yZXBsYWNlKC9eW1wiJ118W1wiJ10kL2csICcnKS50cmltKCkgfHwgcztcbiAgICB9O1xuXG4gICAgc3dpdGNoIChzdGVwLmV2ZW50VHlwZSBhcyBUZXN0Q2FzZUV2ZW50VHlwZSkge1xuICAgICAgY2FzZSAnbmF2aWdhdGUnOiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGdldFBhcmFtKCd1cmwnKSA/PyBwYXJhbXMuZmluZCgocCkgPT4gL3VybHxiYXNlVXJsL2kudGVzdChwLm5hbWUgfHwgJycpKTtcbiAgICAgICAgcmV0dXJuIHVybCA/IGBOYXZpZ2F0ZSB0byAke3Jhd1ZhbCh1cmwpfWAgOiAnTmF2aWdhdGUnO1xuICAgICAgfVxuICAgICAgY2FzZSAnZW50ZXInOiB7XG4gICAgICAgIGNvbnN0IHZhbHVlUGFyYW0gPSBnZXRQYXJhbSgndmFsdWUnKTtcbiAgICAgICAgY29uc3QgbGFiZWxQYXJhbSA9IGdldFBhcmFtKCdsYWJlbCcpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJhd1ZhbCh2YWx1ZVBhcmFtKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSByYXdWYWwobGFiZWxQYXJhbSk7XG4gICAgICAgIGlmICh2YWx1ZSAmJiBsYWJlbCkgcmV0dXJuIGBFbnRlciAke3ZhbHVlfSBpbiB0aGUgJHtsYWJlbH1gO1xuICAgICAgICBpZiAodmFsdWUpIHJldHVybiBgRW50ZXIgJHt2YWx1ZX1gO1xuICAgICAgICBpZiAobGFiZWwpIHJldHVybiBgRW50ZXIgaW4gdGhlICR7bGFiZWx9YDtcbiAgICAgICAgcmV0dXJuICdFbnRlcic7XG4gICAgICB9XG4gICAgICBjYXNlICdhaS1hZ2VudCc6IHtcbiAgICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gZ2V0UGFyYW0oJ2luc3RydWN0aW9ucycpID8/IGdldFBhcmFtKCdkZXNjcmlwdGlvbicpO1xuICAgICAgICByZXR1cm4gdmFsKGluc3RydWN0aW9ucykgfHwgJ0FJIEFnZW50IHN0ZXAnO1xuICAgICAgfVxuICAgICAgY2FzZSAndHlwZSc6IHtcbiAgICAgICAgY29uc3QgdGV4dFBhcmFtID0gZ2V0UGFyYW0oJ3RleHQnKSA/PyBnZXRQYXJhbSgndmFsdWUnKTtcbiAgICAgICAgY29uc3QgZWxlbWVudFBhcmFtID0gZ2V0UGFyYW0oJ2VsZW1lbnQnKSA/PyBnZXRQYXJhbSgnbGFiZWwnKSA/PyBnZXRQYXJhbSgnc2VsZWN0b3InKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IHJhd1ZhbCh0ZXh0UGFyYW0pO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gcmF3VmFsKGVsZW1lbnRQYXJhbSk7XG4gICAgICAgIGlmICh0ZXh0ICYmIGVsZW1lbnQpIHJldHVybiBgRW50ZXIgJHt0ZXh0fSBpbiB0aGUgJHtlbGVtZW50fWA7XG4gICAgICAgIGlmICh0ZXh0KSByZXR1cm4gYEVudGVyICR7dGV4dH1gO1xuICAgICAgICByZXR1cm4gJ1R5cGUnO1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xpY2snOiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0UGFyYW0oJ2VsZW1lbnQnKSA/PyBnZXRQYXJhbSgnc2VsZWN0b3InKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yID8gYENsaWNrIG9uICR7cmF3VmFsKHNlbGVjdG9yKX1gIDogJ0NsaWNrJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2RvdWJsZUNsaWNrJzoge1xuICAgICAgICBjb25zdCBzZWxlY3RvciA9IGdldFBhcmFtKCdlbGVtZW50JykgPz8gZ2V0UGFyYW0oJ3NlbGVjdG9yJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RvciA/IGBEb3VibGUgY2xpY2sgb24gJHtyYXdWYWwoc2VsZWN0b3IpfWAgOiAnRG91YmxlIGNsaWNrJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ByZXNzRW50ZXInOiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRQYXJhbSgnZWxlbWVudCcpO1xuICAgICAgICByZXR1cm4gZWxlbWVudCA/IGBQcmVzcyBFbnRlciBvbiAke3Jhd1ZhbChlbGVtZW50KX1gIDogJ1ByZXNzIEVudGVyJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ZlcmlmeSc6XG4gICAgICAgIHJldHVybiB2YWwoZ2V0UGFyYW0oJ2Rlc2NyaXB0aW9uJykpIHx8ICdWZXJpZnknO1xuICAgICAgY2FzZSAnY3VzdG9tJzoge1xuICAgICAgICBjb25zdCBkZXNjID0gZ2V0UGFyYW0oJ2Rlc2NyaXB0aW9uJykgPz8gZ2V0UGFyYW0oJ2FjdGlvbicpO1xuICAgICAgICByZXR1cm4gdmFsKGRlc2MpIHx8ICdDdXN0b20gc3RlcCc7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsKGdldFBhcmFtKCdkZXNjcmlwdGlvbicpKSB8fCB2YWwocGFyYW1zWzBdKSB8fCAnU3RlcCc7XG4gICAgfVxuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xuICB9XG5cbiAgb25DcmVhdGVHcm91cChpc1JlcGxhY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCB8fCB0aGlzLnN0ZXBzQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdyb3VwTmFtZSA9ICh0aGlzLmZvcm0uZ2V0KCdncm91cE5hbWUnKT8udmFsdWUgPz8gJycpLnRyaW0oKTtcbiAgICBpZiAoIWdyb3VwTmFtZSkge1xuICAgICAgdGhpcy5mb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnNldEVycm9ycyh7IHJlcXVpcmVkOiB0cnVlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZUdyb3VwLmVtaXQoeyBncm91cE5hbWUsIGlzUmVwbGFjZSB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTJweF0gY3FhLXNoYWRvdy1sZyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXctZnVsbCBjcWEtbWF4LXctWzUwMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS1wLTYgY3FhLWJveC1ib3JkZXIgY3FhLW1pbi1oLTBcIj5cbiAgPCEtLSBIZWFkZXI6IHRpdGxlICsgY2xvc2UgKFgpIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxoMiBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLW0tMFwiPlxuICAgICAgICBDcmVhdGUgc3RlcCBncm91cFxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bIzY0NzQ4Ql0gY3FhLW0tMFwiPlxuICAgICAgICB7eyBzdWJ0aXRsZVRleHQgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLW1pbi1oLTcgY3FhLW1pbi13LTcgY3FhLXJvdW5kZWQgY3FhLXRleHQtWyM2QjcyODBdIGhvdmVyOmNxYS1iZy1bI0YzRjRGNl0gY3FhLXAtMCBjcWEtZmxleC1zaHJpbmstMFwiXG4gICAgICB0aXRsZT1cIkNsb3NlXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTggNkw2IDE4TTYgNmwxMiAxMlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBHcm91cCBuYW1lICogLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjVcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxNjE2MTddXCI+XG4gICAgICBHcm91cCBuYW1lIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8Y3FhLWN1c3RvbS1pbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJlLmcuLCBBdXRoZW50aWNhdGlvbiBmbG93XCJcbiAgICAgIFt2YWx1ZV09XCJmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnZhbHVlXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICBzaXplPVwibWRcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cImZvcm0uZ2V0KCdncm91cE5hbWUnKT8uc2V0VmFsdWUoJGV2ZW50KTsgZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcIj5cbiAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgPHAgKm5nSWY9XCJmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LmludmFsaWQgJiYgZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy50b3VjaGVkXCIgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1yZWQtNTAwIGNxYS1tLTBcIj5cbiAgICAgIEdyb3VwIG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIFN0ZXBzIHRvIGdyb3VwIChOKSAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzEwMCVdIGNxYS10cmFja2luZy1ub3JtYWwgY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1hbGlnbi1taWRkbGVcIj5cbiAgICAgIFN0ZXBzIHRvIGdyb3VwICh7eyBzdGVwc0NvdW50IH19KVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zY3JvbGxiYXItaGlkZSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLXJvdW5kZWQtWzhweF0gY3FhLXAtWzZweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItW3JnYmEoMCwwLDAsMC4xKV1cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNUb0dyb3VwOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcm91bmRlZC1bNHB4XSBjcWEtcHktWzRweF0gY3FhLXB4LVs4cHhdIGNxYS1iZy1bcmdiYSgyMTYsMjE3LDI1MiwwLjMpXVwiPlxuICAgICAgICA8IS0tIE51bWJlcmVkIGJhZGdlIC0tPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNyBjcWEtaC03IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLVsjM0Y0M0VFXSBjcWEtdGV4dC13aGl0ZSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgIHt7IGkgKyAxIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJnZXRTdGVwRGlzcGxheUxhYmVsKHN0ZXAsIGkpXCIgY2xhc3M9XCJjcWEtYWN0aW9uLWZvcm1hdCBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdHJhY2tpbmctWzBweF0gY3FhLXRleHQtWyMwQjBCMENdIGNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLXRydW5jYXRlXCI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFjdGlvbnM6IENhbmNlbCB8IENyZWF0ZSBncm91cCB8IENyZWF0ZSBhbmQgcmVwbGFjZSAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS13LWZ1bGwgY3FhLWdhcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIHRleHQ9XCJDYW5jZWxcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzQxNDE0Nl0nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25DYW5jZWwoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgYnRuU2l6ZT1cImxnXCJcbiAgICAgICAgdGV4dD1cIkNyZWF0ZSBncm91cFwiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLXRleHQtWzE0cHhdIGNxYS1weS1bOXB4XSBjcWEtYm9yZGVyLVsjM0Y0M0VFXSBjcWEtYmctWyMzRjQzRUVdJ1wiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ3JlYXRlR3JvdXAoZmFsc2UpXCI+XG4gICAgICA8L2NxYS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICB0ZXh0PVwiQ3JlYXRlIGFuZCByZXBsYWNlXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtdGV4dC1bMTRweF0gY3FhLXB5LVs5cHhdIGNxYS1ib3JkZXItWyMzRjQzRUVdIGNxYS1iZy1bIzNGNDNFRV0nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25DcmVhdGVHcm91cCh0cnVlKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -11,8 +11,12 @@ export class ElementListComponent {
11
11
  this.selectorKey = 'selector';
12
12
  /** Key to access the labels array from each item (default: 'labels') */
13
13
  this.labelsKey = 'labels';
14
+ /** Key on each item for the screen name object (e.g. 'screenNameObj'); its 'name' property is shown below the selector */
15
+ this.screenNameObjectKey = 'screenNameObj';
14
16
  /** Maximum height for the scrollable container (default: '200px') */
15
17
  this.maxHeight = '200px';
18
+ /** Currently selected item to highlight in the list (same reference or matching id/title+selector) */
19
+ this.selectedItem = null;
16
20
  /** Whether more items can be loaded */
17
21
  this.hasMore = false;
18
22
  /** Emitted when an item is clicked */
@@ -28,12 +32,42 @@ export class ElementListComponent {
28
32
  getItemValue(item, key) {
29
33
  return item?.[key];
30
34
  }
35
+ /**
36
+ * Get screen name from item (screenNameObj.name or screenName string) for display below selector
37
+ */
38
+ getScreenName(item) {
39
+ if (!item)
40
+ return null;
41
+ const obj = item[this.screenNameObjectKey];
42
+ if (obj && obj.name != null && String(obj.name).trim() !== '') {
43
+ return String(obj.name).trim();
44
+ }
45
+ const flat = item['screenName'];
46
+ if (flat != null && String(flat).trim() !== '') {
47
+ return String(flat).trim();
48
+ }
49
+ return null;
50
+ }
31
51
  /**
32
52
  * Handle item click
33
53
  */
34
54
  onItemClick(item) {
35
55
  this.itemClick.emit(item);
36
56
  }
57
+ /**
58
+ * Whether the given item is the selected one (for highlighting).
59
+ */
60
+ isSelected(item) {
61
+ if (this.selectedItem == null)
62
+ return false;
63
+ if (item === this.selectedItem)
64
+ return true;
65
+ if (this.selectedItem.id != null && item?.id != null && Number(item.id) === Number(this.selectedItem.id))
66
+ return true;
67
+ const sameTitle = (this.getItemValue(item, this.titleKey) ?? '') === (this.getItemValue(this.selectedItem, this.titleKey) ?? '');
68
+ const sameSelector = (this.getItemValue(item, this.selectorKey) ?? '') === (this.getItemValue(this.selectedItem, this.selectorKey) ?? '');
69
+ return sameTitle && sameSelector;
70
+ }
37
71
  ngAfterViewInit() {
38
72
  if (this.hasMore) {
39
73
  setTimeout(() => this.setupScrollObserver(), 0);
@@ -85,10 +119,10 @@ export class ElementListComponent {
85
119
  }
86
120
  }
87
121
  ElementListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ElementListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
88
- ElementListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ElementListComponent, selector: "cqa-element-list", inputs: { items: "items", titleKey: "titleKey", selectorKey: "selectorKey", labelsKey: "labelsKey", maxHeight: "maxHeight", hasMore: "hasMore" }, outputs: { itemClick: "itemClick", loadMore: "loadMore" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div \n #scrollContainer\n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-items-center cqa-justify-center cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\" class=\"cqa-w-full\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-items-center cqa-justify-between cqa-border cqa-border-[#FDE68A]\n cqa-rounded-lg cqa-p-3 cqa-cursor-pointer cqa-gap-1\">\n <div class=\"cqa-min-w-0 cqa-flex-1 cqa-break-words\">\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1 cqa-min-w-[80px] cqa-justify-end\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n </div>\n <!-- No elements found message -->\n <div *ngIf=\"items.length === 0 && !hasMore\" class=\"cqa-flex cqa-justify-center cqa-items-center cqa-py-4 cqa-text-[12px] cqa-text-[#6B7280]\">\n No elements found\n </div>\n <!-- Sentinel element for infinite scroll -->\n <div *ngIf=\"hasMore\" class=\"load-more-sentinel cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-gap-3 cqa-py-2\">\n <svg class=\"cqa-animate-spin cqa-h-6 cqa-w-6 cqa-text-[#3F43EE]\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n <span class=\"cqa-text-[12px] cqa-text-[#6B7280]\">{{ items.length === 0 ? 'Loading...' : 'Loading more...' }}</span>\n </div>\n</div>\n\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
122
+ ElementListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ElementListComponent, selector: "cqa-element-list", inputs: { items: "items", titleKey: "titleKey", selectorKey: "selectorKey", labelsKey: "labelsKey", screenNameObjectKey: "screenNameObjectKey", maxHeight: "maxHeight", selectedItem: "selectedItem", hasMore: "hasMore" }, outputs: { itemClick: "itemClick", loadMore: "loadMore" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div \n #scrollContainer\n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-items-center cqa-justify-center cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\" class=\"cqa-w-full\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-flex-col cqa-border cqa-border-solid cqa-rounded-lg cqa-p-3 cqa-cursor-pointer cqa-gap-1\"\n [class.cqa-bg-[#EFF6FF]]=\"isSelected(item)\"\n [class.cqa-border-2]=\"isSelected(item)\"\n [class.cqa-border-[#3F43EE]]=\"isSelected(item)\"\n [class.cqa-border-[#FDE68A]]=\"!isSelected(item)\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-1\">\n <div class=\"cqa-min-w-0 cqa-flex-1 cqa-break-words\">\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1 cqa-min-w-[80px] cqa-justify-end\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n <div *ngIf=\"getScreenName(item)\" class=\"cqa-mt-2 cqa-flex cqa-justify-start cqa-items-center\">\n <span class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-text-[11px] cqa-font-medium cqa-text-[#3F43EE] cqa-bg-[#EFF6FF] cqa-border cqa-border-solid cqa-border-[#C8E0FF] cqa-rounded-md cqa-px-2 cqa-py-0.5 cqa-w-fit\">\n <span class=\"cqa-text-[#6B7280] cqa-font-normal\">Screen:</span> {{ getScreenName(item) }}\n </span>\n </div>\n </div>\n </div>\n <!-- No elements found message -->\n <div *ngIf=\"items.length === 0 && !hasMore\" class=\"cqa-flex cqa-justify-center cqa-items-center cqa-py-4 cqa-text-[12px] cqa-text-[#6B7280]\">\n No elements found\n </div>\n <!-- Sentinel element for infinite scroll -->\n <div *ngIf=\"hasMore\" class=\"load-more-sentinel cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-gap-3 cqa-py-2\">\n <svg class=\"cqa-animate-spin cqa-h-6 cqa-w-6 cqa-text-[#3F43EE]\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n <span class=\"cqa-text-[12px] cqa-text-[#6B7280]\">{{ items.length === 0 ? 'Loading...' : 'Loading more...' }}</span>\n </div>\n</div>\n\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ElementListComponent, decorators: [{
90
124
  type: Component,
91
- args: [{ selector: 'cqa-element-list', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div \n #scrollContainer\n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-items-center cqa-justify-center cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\" class=\"cqa-w-full\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-items-center cqa-justify-between cqa-border cqa-border-[#FDE68A]\n cqa-rounded-lg cqa-p-3 cqa-cursor-pointer cqa-gap-1\">\n <div class=\"cqa-min-w-0 cqa-flex-1 cqa-break-words\">\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1 cqa-min-w-[80px] cqa-justify-end\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n </div>\n <!-- No elements found message -->\n <div *ngIf=\"items.length === 0 && !hasMore\" class=\"cqa-flex cqa-justify-center cqa-items-center cqa-py-4 cqa-text-[12px] cqa-text-[#6B7280]\">\n No elements found\n </div>\n <!-- Sentinel element for infinite scroll -->\n <div *ngIf=\"hasMore\" class=\"load-more-sentinel cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-gap-3 cqa-py-2\">\n <svg class=\"cqa-animate-spin cqa-h-6 cqa-w-6 cqa-text-[#3F43EE]\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n <span class=\"cqa-text-[12px] cqa-text-[#6B7280]\">{{ items.length === 0 ? 'Loading...' : 'Loading more...' }}</span>\n </div>\n</div>\n\n" }]
125
+ args: [{ selector: 'cqa-element-list', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div \n #scrollContainer\n class=\"cqa-max-h-[200px] cqa-overflow-y-auto cqa-scrollbar-thin cqa-scrollbar-track-transparent cqa-scrollbar-thumb-[#E5E7EB] cqa-scrollbar-thumb-rounded-full cqa-scrollbar-thumb-hover:cqa-bg-[#D1D5DB] cqa-flex cqa-items-center cqa-justify-center cqa-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\" class=\"cqa-w-full\">\n <div class=\"hover:cqa-bg-[#F5F5F5] cqa-flex cqa-flex-col cqa-border cqa-border-solid cqa-rounded-lg cqa-p-3 cqa-cursor-pointer cqa-gap-1\"\n [class.cqa-bg-[#EFF6FF]]=\"isSelected(item)\"\n [class.cqa-border-2]=\"isSelected(item)\"\n [class.cqa-border-[#3F43EE]]=\"isSelected(item)\"\n [class.cqa-border-[#FDE68A]]=\"!isSelected(item)\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-1\">\n <div class=\"cqa-min-w-0 cqa-flex-1 cqa-break-words\">\n <h6 class=\"cqa-text-[12px] cqa-leading-[100%] cqa-font-[400] cqa-text-[#171717]\">\n {{ getItemValue(item, titleKey) }}\n </h6>\n <span class=\"cqa-text-[10px] cqa-leading-[100%] cqa-text-[#6B7280]\">\n {{ getItemValue(item, selectorKey) }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-gap-1 cqa-min-w-[80px] cqa-justify-end\">\n <span \n *ngFor=\"let tag of getItemValue(item, labelsKey)\" \n class=\"cqa-text-[11px] cqa-text-[#4b74ec] cqa-rounded-full cqa-px-2 cqa-bg-[#eff6ff] cqa-border cqa-border-solid cqa-border-[#c8e0ff]\">\n {{ tag }}\n </span>\n </div>\n </div>\n <div *ngIf=\"getScreenName(item)\" class=\"cqa-mt-2 cqa-flex cqa-justify-start cqa-items-center\">\n <span class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-text-[11px] cqa-font-medium cqa-text-[#3F43EE] cqa-bg-[#EFF6FF] cqa-border cqa-border-solid cqa-border-[#C8E0FF] cqa-rounded-md cqa-px-2 cqa-py-0.5 cqa-w-fit\">\n <span class=\"cqa-text-[#6B7280] cqa-font-normal\">Screen:</span> {{ getScreenName(item) }}\n </span>\n </div>\n </div>\n </div>\n <!-- No elements found message -->\n <div *ngIf=\"items.length === 0 && !hasMore\" class=\"cqa-flex cqa-justify-center cqa-items-center cqa-py-4 cqa-text-[12px] cqa-text-[#6B7280]\">\n No elements found\n </div>\n <!-- Sentinel element for infinite scroll -->\n <div *ngIf=\"hasMore\" class=\"load-more-sentinel cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-gap-3 cqa-py-2\">\n <svg class=\"cqa-animate-spin cqa-h-6 cqa-w-6 cqa-text-[#3F43EE]\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n <span class=\"cqa-text-[12px] cqa-text-[#6B7280]\">{{ items.length === 0 ? 'Loading...' : 'Loading more...' }}</span>\n </div>\n</div>\n\n" }]
92
126
  }], propDecorators: { scrollContainer: [{
93
127
  type: ViewChild,
94
128
  args: ['scrollContainer', { static: false }]
@@ -100,8 +134,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
100
134
  type: Input
101
135
  }], labelsKey: [{
102
136
  type: Input
137
+ }], screenNameObjectKey: [{
138
+ type: Input
103
139
  }], maxHeight: [{
104
140
  type: Input
141
+ }], selectedItem: [{
142
+ type: Input
105
143
  }], hasMore: [{
106
144
  type: Input
107
145
  }], itemClick: [{
@@ -109,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
109
147
  }], loadMore: [{
110
148
  type: Output
111
149
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtbGlzdC9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBNEIsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQzs7O0FBUTNLLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFTRSxnQ0FBZ0M7UUFDdkIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQix5RUFBeUU7UUFDaEUsYUFBUSxHQUFXLE9BQU8sQ0FBQztRQUVwQywrRUFBK0U7UUFDdEUsZ0JBQVcsR0FBVyxVQUFVLENBQUM7UUFFMUMsd0VBQXdFO1FBQy9ELGNBQVMsR0FBVyxRQUFRLENBQUM7UUFFdEMscUVBQXFFO1FBQzVELGNBQVMsR0FBVyxPQUFPLENBQUM7UUFFckMsdUNBQXVDO1FBQzlCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFbEMsc0NBQXNDO1FBQzVCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTlDLGdGQUFnRjtRQUN0RSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc5QywrSEFBK0g7UUFDdkgseUJBQW9CLEdBQUcsS0FBSyxDQUFDO0tBNEV0QztJQTFFQzs7T0FFRztJQUNILFlBQVksQ0FBQyxJQUFTLEVBQUUsR0FBVztRQUNqQyxPQUFPLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFTO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzlELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMxQyxPQUFPO1NBQ1I7UUFFRCxnREFBZ0Q7UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUF1QixDQUFDO1FBQy9HLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFFRCxzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbEM7UUFFRCx1RkFBdUY7UUFDdkYsNEZBQTRGO1FBQzVGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFakMsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxvQkFBb0IsQ0FDNUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNWLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUMzQixJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDeEMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7d0JBQ2xDLE9BQU87cUJBQ1I7b0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDdEI7YUFDRjtRQUNILENBQUMsRUFDRDtZQUNFLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWE7WUFDeEMsVUFBVSxFQUFFLE1BQU07WUFDbEIsU0FBUyxFQUFFLEdBQUc7U0FDZixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDOztpSEF4R1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsdWJDUmpDLGcxRUFzQ0E7MkZEOUJhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsUUFFdEIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07OEJBR0UsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUdHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWVsZW1lbnQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNjcm9sbENvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBcbiAgLyoqIEFycmF5IG9mIGl0ZW1zIHRvIGRpc3BsYXkgKi9cbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XG4gIFxuICAvKiogS2V5IHRvIGFjY2VzcyB0aGUgdGl0bGUgcHJvcGVydHkgZnJvbSBlYWNoIGl0ZW0gKGRlZmF1bHQ6ICd0aXRsZScpICovXG4gIEBJbnB1dCgpIHRpdGxlS2V5OiBzdHJpbmcgPSAndGl0bGUnO1xuICBcbiAgLyoqIEtleSB0byBhY2Nlc3MgdGhlIHNlbGVjdG9yIHByb3BlcnR5IGZyb20gZWFjaCBpdGVtIChkZWZhdWx0OiAnc2VsZWN0b3InKSAqL1xuICBASW5wdXQoKSBzZWxlY3RvcktleTogc3RyaW5nID0gJ3NlbGVjdG9yJztcbiAgXG4gIC8qKiBLZXkgdG8gYWNjZXNzIHRoZSBsYWJlbHMgYXJyYXkgZnJvbSBlYWNoIGl0ZW0gKGRlZmF1bHQ6ICdsYWJlbHMnKSAqL1xuICBASW5wdXQoKSBsYWJlbHNLZXk6IHN0cmluZyA9ICdsYWJlbHMnO1xuICBcbiAgLyoqIE1heGltdW0gaGVpZ2h0IGZvciB0aGUgc2Nyb2xsYWJsZSBjb250YWluZXIgKGRlZmF1bHQ6ICcyMDBweCcpICovXG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcblxuICAvKiogV2hldGhlciBtb3JlIGl0ZW1zIGNhbiBiZSBsb2FkZWQgKi9cbiAgQElucHV0KCkgaGFzTW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgc2Nyb2xscyBuZWFyIHRoZSBib3R0b20gYW5kIG1vcmUgaXRlbXMgc2hvdWxkIGJlIGxvYWRlZCAqL1xuICBAT3V0cHV0KCkgbG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBzY3JvbGxPYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICAvKiogU2tpcCB0aGUgZmlyc3QgaW50ZXJzZWN0aW9uIGNhbGxiYWNrIChmaXJlcyBpbW1lZGlhdGVseSB3aGVuIG9ic2VydmUoKSBpcyBjYWxsZWQpIHRvIHByZXZlbnQgZHVwbGljYXRlIEFQSSBjYWxscyBvbiBsb2FkICovXG4gIHByaXZhdGUgc2tpcE5leHRJbnRlcnNlY3Rpb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmcm9tIGFuIGl0ZW0gdXNpbmcgdGhlIHNwZWNpZmllZCBrZXlcbiAgICovXG4gIGdldEl0ZW1WYWx1ZShpdGVtOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gaXRlbT8uW2tleV07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGl0ZW0gY2xpY2tcbiAgICovXG4gIG9uSXRlbUNsaWNrKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoaXRlbSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzTW9yZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldHVwU2Nyb2xsT2JzZXJ2ZXIoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydoYXNNb3JlJ10gJiYgdGhpcy5oYXNNb3JlICYmIHRoaXMuc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0dXBTY3JvbGxPYnNlcnZlcigpLCAwKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY3JvbGxPYnNlcnZlcikge1xuICAgICAgdGhpcy5zY3JvbGxPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNjcm9sbE9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNNb3JlIHx8ICF0aGlzLnNjcm9sbENvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHNlbnRpbmVsIGVsZW1lbnQgKGxvYWRpbmcgaW5kaWNhdG9yKVxuICAgIGNvbnN0IHNlbnRpbmVsID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubG9hZC1tb3JlLXNlbnRpbmVsJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICghc2VudGluZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEaXNjb25uZWN0IGV4aXN0aW5nIG9ic2VydmVyIGlmIGFueVxuICAgIGlmICh0aGlzLnNjcm9sbE9ic2VydmVyKSB7XG4gICAgICB0aGlzLnNjcm9sbE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICAvLyBTa2lwIHRoZSBmaXJzdCBpbnRlcnNlY3Rpb24gY2FsbGJhY2sgLSBpdCBmaXJlcyBpbW1lZGlhdGVseSB3aGVuIG9ic2VydmUoKSBpcyBjYWxsZWRcbiAgICAvLyBpZiB0aGUgc2VudGluZWwgaXMgYWxyZWFkeSBpbiB2aWV3LCBjYXVzaW5nIGR1cGxpY2F0ZSBBUEkgY2FsbHMgKHBhZ2UgMCArIHBhZ2UgMSkgb24gbG9hZFxuICAgIHRoaXMuc2tpcE5leHRJbnRlcnNlY3Rpb24gPSB0cnVlO1xuXG4gICAgLy8gQ3JlYXRlIEludGVyc2VjdGlvbk9ic2VydmVyIHRvIGRldGVjdCB3aGVuIHNlbnRpbmVsIGNvbWVzIGludG8gdmlld1xuICAgIHRoaXMuc2Nyb2xsT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgdGhpcy5oYXNNb3JlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5za2lwTmV4dEludGVyc2VjdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0SW50ZXJzZWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcm9vdDogdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgcm9vdE1hcmdpbjogJzUwcHgnLFxuICAgICAgICB0aHJlc2hvbGQ6IDAuMVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnNjcm9sbE9ic2VydmVyLm9ic2VydmUoc2VudGluZWwpO1xuICB9XG59XG5cbiIsIjxkaXYgXG4gICNzY3JvbGxDb250YWluZXJcbiAgY2xhc3M9XCJjcWEtbWF4LWgtWzIwMHB4XSBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1zY3JvbGxiYXItdGhpbiBjcWEtc2Nyb2xsYmFyLXRyYWNrLXRyYW5zcGFyZW50IGNxYS1zY3JvbGxiYXItdGh1bWItWyNFNUU3RUJdIGNxYS1zY3JvbGxiYXItdGh1bWItcm91bmRlZC1mdWxsIGNxYS1zY3JvbGxiYXItdGh1bWItaG92ZXI6Y3FhLWJnLVsjRDFENURCXSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCJcbiAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIiBjbGFzcz1cImNxYS13LWZ1bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaG92ZXI6Y3FhLWJnLVsjRjVGNUY1XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRkRFNjhBXVxuICAgICAgICAgICAgIGNxYS1yb3VuZGVkLWxnIGNxYS1wLTMgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1nYXAtMVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1taW4tdy0wIGNxYS1mbGV4LTEgY3FhLWJyZWFrLXdvcmRzXCI+XG4gICAgICAgIDxoNiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLWZvbnQtWzQwMF0gY3FhLXRleHQtWyMxNzE3MTddXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHRpdGxlS2V5KSB9fVxuICAgICAgICA8L2g2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHNlbGVjdG9yS2V5KSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLTEgY3FhLW1pbi13LVs4MHB4XSBjcWEtanVzdGlmeS1lbmRcIj5cbiAgICAgICAgPHNwYW4gXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBnZXRJdGVtVmFsdWUoaXRlbSwgbGFiZWxzS2V5KVwiIFxuICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS10ZXh0LVsjNGI3NGVjXSBjcWEtcm91bmRlZC1mdWxsIGNxYS1weC0yIGNxYS1iZy1bI2VmZjZmZl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNjOGUwZmZdXCI+XG4gICAgICAgICAge3sgdGFnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBObyBlbGVtZW50cyBmb3VuZCBtZXNzYWdlIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXRlbXMubGVuZ3RoID09PSAwICYmICFoYXNNb3JlXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcHktNCBjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgTm8gZWxlbWVudHMgZm91bmRcbiAgPC9kaXY+XG4gIDwhLS0gU2VudGluZWwgZWxlbWVudCBmb3IgaW5maW5pdGUgc2Nyb2xsIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaGFzTW9yZVwiIGNsYXNzPVwibG9hZC1tb3JlLXNlbnRpbmVsIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtZ2FwLTMgY3FhLXB5LTJcIj5cbiAgICA8c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtaC02IGNxYS13LTYgY3FhLXRleHQtWyMzRjQzRUVdXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgPGNpcmNsZSBjbGFzcz1cImNxYS1vcGFjaXR5LTI1XCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCI0XCI+PC9jaXJjbGU+XG4gICAgICA8cGF0aCBjbGFzcz1cImNxYS1vcGFjaXR5LTc1XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNNCAxMmE4IDggMCAwMTgtOFYwQzUuMzczIDAgMCA1LjM3MyAwIDEyaDR6bTIgNS4yOTFBNy45NjIgNy45NjIgMCAwMTQgMTJIMGMwIDMuMDQyIDEuMTM1IDUuODI0IDMgNy45MzhsMy0yLjY0N3pcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+e3sgaXRlbXMubGVuZ3RoID09PSAwID8gJ0xvYWRpbmcuLi4nIDogJ0xvYWRpbmcgbW9yZS4uLicgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtbGlzdC9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBNEIsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQzs7O0FBUTNLLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFTRSxnQ0FBZ0M7UUFDdkIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQix5RUFBeUU7UUFDaEUsYUFBUSxHQUFXLE9BQU8sQ0FBQztRQUVwQywrRUFBK0U7UUFDdEUsZ0JBQVcsR0FBVyxVQUFVLENBQUM7UUFFMUMsd0VBQXdFO1FBQy9ELGNBQVMsR0FBVyxRQUFRLENBQUM7UUFFdEMsMEhBQTBIO1FBQ2pILHdCQUFtQixHQUFXLGVBQWUsQ0FBQztRQUV2RCxxRUFBcUU7UUFDNUQsY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUVyQyxzR0FBc0c7UUFDN0YsaUJBQVksR0FBUSxJQUFJLENBQUM7UUFFbEMsdUNBQXVDO1FBQzlCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFbEMsc0NBQXNDO1FBQzVCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTlDLGdGQUFnRjtRQUN0RSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc5QywrSEFBK0g7UUFDdkgseUJBQW9CLEdBQUcsS0FBSyxDQUFDO0tBd0d0QztJQXRHQzs7T0FFRztJQUNILFlBQVksQ0FBQyxJQUFTLEVBQUUsR0FBVztRQUNqQyxPQUFPLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzdELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNoQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM1QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLElBQVM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM1QyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzVDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEgsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pJLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxSSxPQUFPLFNBQVMsSUFBSSxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDOUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzFDLE9BQU87U0FDUjtRQUVELGdEQUFnRDtRQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQXVCLENBQUM7UUFDL0csSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUVELHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNsQztRQUVELHVGQUF1RjtRQUN2Riw0RkFBNEY7UUFDNUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUVqQyxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLG9CQUFvQixDQUM1QyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1YsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQzNCLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUN4QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTt3QkFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQzt3QkFDbEMsT0FBTztxQkFDUjtvQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUN0QjthQUNGO1FBQ0gsQ0FBQyxFQUNEO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYTtZQUN4QyxVQUFVLEVBQUUsTUFBTTtZQUNsQixTQUFTLEVBQUUsR0FBRztTQUNmLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O2lIQTFJVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixpZ0JDUmpDLDZsR0FnREE7MkZEeENhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsUUFFdEIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07OEJBR0UsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUdHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWVsZW1lbnQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNjcm9sbENvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBcbiAgLyoqIEFycmF5IG9mIGl0ZW1zIHRvIGRpc3BsYXkgKi9cbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XG4gIFxuICAvKiogS2V5IHRvIGFjY2VzcyB0aGUgdGl0bGUgcHJvcGVydHkgZnJvbSBlYWNoIGl0ZW0gKGRlZmF1bHQ6ICd0aXRsZScpICovXG4gIEBJbnB1dCgpIHRpdGxlS2V5OiBzdHJpbmcgPSAndGl0bGUnO1xuICBcbiAgLyoqIEtleSB0byBhY2Nlc3MgdGhlIHNlbGVjdG9yIHByb3BlcnR5IGZyb20gZWFjaCBpdGVtIChkZWZhdWx0OiAnc2VsZWN0b3InKSAqL1xuICBASW5wdXQoKSBzZWxlY3RvcktleTogc3RyaW5nID0gJ3NlbGVjdG9yJztcbiAgXG4gIC8qKiBLZXkgdG8gYWNjZXNzIHRoZSBsYWJlbHMgYXJyYXkgZnJvbSBlYWNoIGl0ZW0gKGRlZmF1bHQ6ICdsYWJlbHMnKSAqL1xuICBASW5wdXQoKSBsYWJlbHNLZXk6IHN0cmluZyA9ICdsYWJlbHMnO1xuXG4gIC8qKiBLZXkgb24gZWFjaCBpdGVtIGZvciB0aGUgc2NyZWVuIG5hbWUgb2JqZWN0IChlLmcuICdzY3JlZW5OYW1lT2JqJyk7IGl0cyAnbmFtZScgcHJvcGVydHkgaXMgc2hvd24gYmVsb3cgdGhlIHNlbGVjdG9yICovXG4gIEBJbnB1dCgpIHNjcmVlbk5hbWVPYmplY3RLZXk6IHN0cmluZyA9ICdzY3JlZW5OYW1lT2JqJztcbiAgXG4gIC8qKiBNYXhpbXVtIGhlaWdodCBmb3IgdGhlIHNjcm9sbGFibGUgY29udGFpbmVyIChkZWZhdWx0OiAnMjAwcHgnKSAqL1xuICBASW5wdXQoKSBtYXhIZWlnaHQ6IHN0cmluZyA9ICcyMDBweCc7XG5cbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBpdGVtIHRvIGhpZ2hsaWdodCBpbiB0aGUgbGlzdCAoc2FtZSByZWZlcmVuY2Ugb3IgbWF0Y2hpbmcgaWQvdGl0bGUrc2VsZWN0b3IpICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbTogYW55ID0gbnVsbDtcblxuICAvKiogV2hldGhlciBtb3JlIGl0ZW1zIGNhbiBiZSBsb2FkZWQgKi9cbiAgQElucHV0KCkgaGFzTW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgc2Nyb2xscyBuZWFyIHRoZSBib3R0b20gYW5kIG1vcmUgaXRlbXMgc2hvdWxkIGJlIGxvYWRlZCAqL1xuICBAT3V0cHV0KCkgbG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBzY3JvbGxPYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICAvKiogU2tpcCB0aGUgZmlyc3QgaW50ZXJzZWN0aW9uIGNhbGxiYWNrIChmaXJlcyBpbW1lZGlhdGVseSB3aGVuIG9ic2VydmUoKSBpcyBjYWxsZWQpIHRvIHByZXZlbnQgZHVwbGljYXRlIEFQSSBjYWxscyBvbiBsb2FkICovXG4gIHByaXZhdGUgc2tpcE5leHRJbnRlcnNlY3Rpb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmcm9tIGFuIGl0ZW0gdXNpbmcgdGhlIHNwZWNpZmllZCBrZXlcbiAgICovXG4gIGdldEl0ZW1WYWx1ZShpdGVtOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gaXRlbT8uW2tleV07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNjcmVlbiBuYW1lIGZyb20gaXRlbSAoc2NyZWVuTmFtZU9iai5uYW1lIG9yIHNjcmVlbk5hbWUgc3RyaW5nKSBmb3IgZGlzcGxheSBiZWxvdyBzZWxlY3RvclxuICAgKi9cbiAgZ2V0U2NyZWVuTmFtZShpdGVtOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuICAgIGNvbnN0IG9iaiA9IGl0ZW1bdGhpcy5zY3JlZW5OYW1lT2JqZWN0S2V5XTtcbiAgICBpZiAob2JqICYmIG9iai5uYW1lICE9IG51bGwgJiYgU3RyaW5nKG9iai5uYW1lKS50cmltKCkgIT09ICcnKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKG9iai5uYW1lKS50cmltKCk7XG4gICAgfVxuICAgIGNvbnN0IGZsYXQgPSBpdGVtWydzY3JlZW5OYW1lJ107XG4gICAgaWYgKGZsYXQgIT0gbnVsbCAmJiBTdHJpbmcoZmxhdCkudHJpbSgpICE9PSAnJykge1xuICAgICAgcmV0dXJuIFN0cmluZyhmbGF0KS50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBpdGVtIGNsaWNrXG4gICAqL1xuICBvbkl0ZW1DbGljayhpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1DbGljay5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGdpdmVuIGl0ZW0gaXMgdGhlIHNlbGVjdGVkIG9uZSAoZm9yIGhpZ2hsaWdodGluZykuXG4gICAqL1xuICBpc1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGl0ZW0gPT09IHRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0uaWQgIT0gbnVsbCAmJiBpdGVtPy5pZCAhPSBudWxsICYmIE51bWJlcihpdGVtLmlkKSA9PT0gTnVtYmVyKHRoaXMuc2VsZWN0ZWRJdGVtLmlkKSkgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qgc2FtZVRpdGxlID0gKHRoaXMuZ2V0SXRlbVZhbHVlKGl0ZW0sIHRoaXMudGl0bGVLZXkpID8/ICcnKSA9PT0gKHRoaXMuZ2V0SXRlbVZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtLCB0aGlzLnRpdGxlS2V5KSA/PyAnJyk7XG4gICAgY29uc3Qgc2FtZVNlbGVjdG9yID0gKHRoaXMuZ2V0SXRlbVZhbHVlKGl0ZW0sIHRoaXMuc2VsZWN0b3JLZXkpID8/ICcnKSA9PT0gKHRoaXMuZ2V0SXRlbVZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtLCB0aGlzLnNlbGVjdG9yS2V5KSA/PyAnJyk7XG4gICAgcmV0dXJuIHNhbWVUaXRsZSAmJiBzYW1lU2VsZWN0b3I7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzTW9yZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldHVwU2Nyb2xsT2JzZXJ2ZXIoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydoYXNNb3JlJ10gJiYgdGhpcy5oYXNNb3JlICYmIHRoaXMuc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0dXBTY3JvbGxPYnNlcnZlcigpLCAwKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY3JvbGxPYnNlcnZlcikge1xuICAgICAgdGhpcy5zY3JvbGxPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNjcm9sbE9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNNb3JlIHx8ICF0aGlzLnNjcm9sbENvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHNlbnRpbmVsIGVsZW1lbnQgKGxvYWRpbmcgaW5kaWNhdG9yKVxuICAgIGNvbnN0IHNlbnRpbmVsID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubG9hZC1tb3JlLXNlbnRpbmVsJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICghc2VudGluZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEaXNjb25uZWN0IGV4aXN0aW5nIG9ic2VydmVyIGlmIGFueVxuICAgIGlmICh0aGlzLnNjcm9sbE9ic2VydmVyKSB7XG4gICAgICB0aGlzLnNjcm9sbE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICAvLyBTa2lwIHRoZSBmaXJzdCBpbnRlcnNlY3Rpb24gY2FsbGJhY2sgLSBpdCBmaXJlcyBpbW1lZGlhdGVseSB3aGVuIG9ic2VydmUoKSBpcyBjYWxsZWRcbiAgICAvLyBpZiB0aGUgc2VudGluZWwgaXMgYWxyZWFkeSBpbiB2aWV3LCBjYXVzaW5nIGR1cGxpY2F0ZSBBUEkgY2FsbHMgKHBhZ2UgMCArIHBhZ2UgMSkgb24gbG9hZFxuICAgIHRoaXMuc2tpcE5leHRJbnRlcnNlY3Rpb24gPSB0cnVlO1xuXG4gICAgLy8gQ3JlYXRlIEludGVyc2VjdGlvbk9ic2VydmVyIHRvIGRldGVjdCB3aGVuIHNlbnRpbmVsIGNvbWVzIGludG8gdmlld1xuICAgIHRoaXMuc2Nyb2xsT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgdGhpcy5oYXNNb3JlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5za2lwTmV4dEludGVyc2VjdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0SW50ZXJzZWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcm9vdDogdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgcm9vdE1hcmdpbjogJzUwcHgnLFxuICAgICAgICB0aHJlc2hvbGQ6IDAuMVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnNjcm9sbE9ic2VydmVyLm9ic2VydmUoc2VudGluZWwpO1xuICB9XG59XG5cbiIsIjxkaXYgXG4gICNzY3JvbGxDb250YWluZXJcbiAgY2xhc3M9XCJjcWEtbWF4LWgtWzIwMHB4XSBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1zY3JvbGxiYXItdGhpbiBjcWEtc2Nyb2xsYmFyLXRyYWNrLXRyYW5zcGFyZW50IGNxYS1zY3JvbGxiYXItdGh1bWItWyNFNUU3RUJdIGNxYS1zY3JvbGxiYXItdGh1bWItcm91bmRlZC1mdWxsIGNxYS1zY3JvbGxiYXItdGh1bWItaG92ZXI6Y3FhLWJnLVsjRDFENURCXSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCJcbiAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIiBjbGFzcz1cImNxYS13LWZ1bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaG92ZXI6Y3FhLWJnLVsjRjVGNUY1XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1yb3VuZGVkLWxnIGNxYS1wLTMgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1nYXAtMVwiXG4gICAgICAgICBbY2xhc3MuY3FhLWJnLVsjRUZGNkZGXV09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgIFtjbGFzcy5jcWEtYm9yZGVyLTJdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICBbY2xhc3MuY3FhLWJvcmRlci1bIzNGNDNFRV1dPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICBbY2xhc3MuY3FhLWJvcmRlci1bI0ZERTY4QV1dPVwiIWlzU2VsZWN0ZWQoaXRlbSlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0xXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbWluLXctMCBjcWEtZmxleC0xIGNxYS1icmVhay13b3Jkc1wiPlxuICAgICAgICAgIDxoNiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLWZvbnQtWzQwMF0gY3FhLXRleHQtWyMxNzE3MTddXCI+XG4gICAgICAgICAgICB7eyBnZXRJdGVtVmFsdWUoaXRlbSwgdGl0bGVLZXkpIH19XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgICAgICAgICB7eyBnZXRJdGVtVmFsdWUoaXRlbSwgc2VsZWN0b3JLZXkpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1nYXAtMSBjcWEtbWluLXctWzgwcHhdIGNxYS1qdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgIDxzcGFuIFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBnZXRJdGVtVmFsdWUoaXRlbSwgbGFiZWxzS2V5KVwiIFxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLXRleHQtWyM0Yjc0ZWNdIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXB4LTIgY3FhLWJnLVsjZWZmNmZmXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI2M4ZTBmZl1cIj5cbiAgICAgICAgICAgIHt7IHRhZyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJnZXRTY3JlZW5OYW1lKGl0ZW0pXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtZmxleCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS10ZXh0LVsxMXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMzRjQzRUVdIGNxYS1iZy1bI0VGRjZGRl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNDOEUwRkZdIGNxYS1yb3VuZGVkLW1kIGNxYS1weC0yIGNxYS1weS0wLjUgY3FhLXctZml0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLWZvbnQtbm9ybWFsXCI+U2NyZWVuOjwvc3Bhbj4ge3sgZ2V0U2NyZWVuTmFtZShpdGVtKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gTm8gZWxlbWVudHMgZm91bmQgbWVzc2FnZSAtLT5cbiAgPGRpdiAqbmdJZj1cIml0ZW1zLmxlbmd0aCA9PT0gMCAmJiAhaGFzTW9yZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktY2VudGVyIGNxYS1pdGVtcy1jZW50ZXIgY3FhLXB5LTQgY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlxuICAgIE5vIGVsZW1lbnRzIGZvdW5kXG4gIDwvZGl2PlxuICA8IS0tIFNlbnRpbmVsIGVsZW1lbnQgZm9yIGluZmluaXRlIHNjcm9sbCAtLT5cbiAgPGRpdiAqbmdJZj1cImhhc01vcmVcIiBjbGFzcz1cImxvYWQtbW9yZS1zZW50aW5lbCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS0yXCI+XG4gICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLWgtNiBjcWEtdy02IGNxYS10ZXh0LVsjM0Y0M0VFXVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgIDxjaXJjbGUgY2xhc3M9XCJjcWEtb3BhY2l0eS0yNVwiIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiNFwiPjwvY2lyY2xlPlxuICAgICAgPHBhdGggY2xhc3M9XCJjcWEtb3BhY2l0eS03NVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTQgMTJhOCA4IDAgMDE4LThWMEM1LjM3MyAwIDAgNS4zNzMgMCAxMmg0em0yIDUuMjkxQTcuOTYyIDcuOTYyIDAgMDE0IDEySDBjMCAzLjA0MiAxLjEzNSA1LjgyNCAzIDcuOTM4bDMtMi42NDd6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNkI3MjgwXVwiPnt7IGl0ZW1zLmxlbmd0aCA9PT0gMCA/ICdMb2FkaW5nLi4uJyA6ICdMb2FkaW5nIG1vcmUuLi4nIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
@@ -2,4 +2,4 @@ import { InjectionToken } from '@angular/core';
2
2
  /** Sentinel returned from afterClosed() when user clicked "Edit in depth". */
3
3
  export const ELEMENT_POPUP_EDIT_IN_DEPTH = Symbol('ElementPopupEditInDepth');
4
4
  export const ELEMENT_POPUP_DATA = new InjectionToken('ELEMENT_POPUP_DATA');
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1wb3B1cC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBbUIvQyw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRQb3B1cERhdGEge1xuICBlbGVtZW50PzogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzO1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICBlbGVtZW50czogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGhlbHBVcmw/OiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50UG9wdXBEYXRhRWxlbWVudHMge1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICB0aXRsZTogc3RyaW5nO1xuICBzZWxlY3Rvcj86IHN0cmluZztcbiAgaWQ/OiBudW1iZXI7XG4gIHNjcmVlbk5hbWU/OiBzdHJpbmc7XG4gIHNjcmVlbk5hbWVJZD86IG51bWJlcjtcbn1cbi8qKiBTZW50aW5lbCByZXR1cm5lZCBmcm9tIGFmdGVyQ2xvc2VkKCkgd2hlbiB1c2VyIGNsaWNrZWQgXCJFZGl0IGluIGRlcHRoXCIuICovXG5leHBvcnQgY29uc3QgRUxFTUVOVF9QT1BVUF9FRElUX0lOX0RFUFRIID0gU3ltYm9sKCdFbGVtZW50UG9wdXBFZGl0SW5EZXB0aCcpO1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9QT1BVUF9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPEVsZW1lbnRQb3B1cERhdGE+KFxuICAnRUxFTUVOVF9QT1BVUF9EQVRBJ1xuKTtcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1wb3B1cC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBOEIvQyw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRQb3B1cERhdGEge1xuICBlbGVtZW50PzogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzO1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICBlbGVtZW50czogRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGhlbHBVcmw/OiBzdHJpbmc7XG59XG5cblxuLyoqIFNjcmVlbiBuYW1lIG9iamVjdCBmcm9tIEFQSSAoZS5nLiBsaXN0IGVsZW1lbnRzIHJlc3BvbnNlKSAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50UG9wdXBTY3JlZW5OYW1lT2JqIHtcbiAgaWQ/OiBudW1iZXI7XG4gIHdvcmtzcGFjZVZlcnNpb25JZD86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIGVsZW1lbnRDb3VudD86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudFBvcHVwRGF0YUVsZW1lbnRzIHtcbiAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgdGl0bGU6IHN0cmluZztcbiAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gIGlkPzogbnVtYmVyO1xuICBzY3JlZW5OYW1lPzogc3RyaW5nO1xuICBzY3JlZW5OYW1lSWQ/OiBudW1iZXI7XG4gIC8qKiBTY3JlZW4gbmFtZSBvYmplY3QgZnJvbSBBUEk7IGRpc3BsYXkgbmFtZSB2aWEgc2NyZWVuTmFtZU9iai5uYW1lICovXG4gIHNjcmVlbk5hbWVPYmo/OiBFbGVtZW50UG9wdXBTY3JlZW5OYW1lT2JqO1xufVxuLyoqIFNlbnRpbmVsIHJldHVybmVkIGZyb20gYWZ0ZXJDbG9zZWQoKSB3aGVuIHVzZXIgY2xpY2tlZCBcIkVkaXQgaW4gZGVwdGhcIi4gKi9cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1BPUFVQX0VESVRfSU5fREVQVEggPSBTeW1ib2woJ0VsZW1lbnRQb3B1cEVkaXRJbkRlcHRoJyk7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1BPUFVQX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48RWxlbWVudFBvcHVwRGF0YT4oXG4gICdFTEVNRU5UX1BPUFVQX0RBVEEnXG4pO1xuIl19